From 52d0d7420dd001909108fbade5823c150d7ef9b8 Mon Sep 17 00:00:00 2001 From: Martin Leitner-Ankerl Date: Wed, 24 Aug 2022 08:14:16 +0200 Subject: [PATCH 1/5] Updated cmake Makes the library more easy to use and installable. --- CMakeLists.txt | 63 ++++++++++++++++++++++------ cmake/unordered_denseConfig.cmake.in | 4 ++ example/CMakeLists.txt | 6 +++ example/README.md | 16 +++++++ example/main.cpp | 13 ++++++ 5 files changed, 90 insertions(+), 12 deletions(-) create mode 100644 cmake/unordered_denseConfig.cmake.in create mode 100644 example/CMakeLists.txt create mode 100644 example/README.md create mode 100644 example/main.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 585f6c0b..323202fa 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,19 +4,58 @@ project("unordered_dense" DESCRIPTION "A fast & densely stored hashmap and hashset based on robin-hood backward shift deletion" HOMEPAGE_URL "https://github.com/martinus/unordered_dense") +include(GNUInstallDirs) + # determine whether this is a standalone project or included by other projects -set(_unordered_dense_is_included ON) -if(CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR) - set(_unordered_dense_is_included OFF) +if(CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME) + set(_unordered_dense_is_toplevel_project TRUE) +else() + set(_unordered_dense_is_toplevel_project FALSE) endif() -if(_unordered_dense_is_included) - add_library(unordered_dense INTERFACE) - add_library(unordered_dense::unordered_dense ALIAS unordered_dense) - target_compile_features(unordered_dense INTERFACE cxx_std_17) - target_include_directories( - unordered_dense - INTERFACE - $ - $) +add_library(unordered_dense INTERFACE) +add_library(unordered_dense::unordered_dense ALIAS unordered_dense) + +target_include_directories( + unordered_dense + INTERFACE + $ + $) + +target_compile_features(unordered_dense INTERFACE cxx_std_17) + +if(_unordered_dense_is_toplevel_project) + # locations are provided by GNUInstallDirs + install( + TARGETS unordered_dense + EXPORT unordered_dense_Targets + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) + + include(CMakePackageConfigHelpers) + write_basic_package_version_file( + "unordered_denseConfigVersion.cmake" + VERSION ${PROJECT_VERSION} + COMPATIBILITY SameMajorVersion) + + configure_package_config_file( + "${PROJECT_SOURCE_DIR}/cmake/unordered_denseConfig.cmake.in" + "${PROJECT_BINARY_DIR}/unordered_denseConfig.cmake" + INSTALL_DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/unordered_dense/cmake) + + install( + EXPORT unordered_dense_Targets + FILE unordered_denseTargets.cmake + NAMESPACE unordered_dense:: + DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/unordered_dense/cmake) + + install( + FILES "${PROJECT_BINARY_DIR}/unordered_denseConfig.cmake" + "${PROJECT_BINARY_DIR}/unordered_denseConfigVersion.cmake" + DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/unordered_dense/cmake) + + install( + DIRECTORY ${PROJECT_SOURCE_DIR}/include/ankerl + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) endif() diff --git a/cmake/unordered_denseConfig.cmake.in b/cmake/unordered_denseConfig.cmake.in new file mode 100644 index 00000000..ff0fa672 --- /dev/null +++ b/cmake/unordered_denseConfig.cmake.in @@ -0,0 +1,4 @@ +@PACKAGE_INIT@ + +include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@Targets.cmake") +check_required_components("@PROJECT_NAME@") \ No newline at end of file diff --git a/example/CMakeLists.txt b/example/CMakeLists.txt new file mode 100644 index 00000000..19e21948 --- /dev/null +++ b/example/CMakeLists.txt @@ -0,0 +1,6 @@ +cmake_minimum_required(VERSION 3.12) +project("UnorderedDenseExample") + +add_executable(UnorderedDenseExample main.cpp) +find_package(unordered_dense CONFIG REQUIRED) +target_link_libraries(UnorderedDenseExample unordered_dense::unordered_dense) diff --git a/example/README.md b/example/README.md new file mode 100644 index 00000000..14fef9b4 --- /dev/null +++ b/example/README.md @@ -0,0 +1,16 @@ +A simple example that demonstrats how to make use of `unordered_dense` with cmake. + +Use globally installed `unordered_dense`: +```sh +mkdir build && cd build +cmake -DCMAKE_INSTALL_PREFIX:PATH=${HOME}/unordered_dense_install .. +make +``` + +Use locall installed `unordered_dense`, as in the main README.md: + +```sh +mkdir build && cd build +cmake -DCMAKE_INSTALL_PREFIX:PATH=${HOME}/unordered_dense_install .. +make +``` diff --git a/example/main.cpp b/example/main.cpp new file mode 100644 index 00000000..8e9c65e4 --- /dev/null +++ b/example/main.cpp @@ -0,0 +1,13 @@ +#include + +#include + +auto main() -> int { + auto map = ankerl::unordered_dense::map(); + map[123] = "hello"; + map[987] = "world!"; + + for (auto const& [key, val] : map) { + std::cout << key << " => " << val << std::endl; + } +} From 78338d4979d437e97f4ca3514b87067537d937b8 Mon Sep 17 00:00:00 2001 From: Martin Leitner-Ankerl Date: Wed, 24 Aug 2022 08:11:45 +0200 Subject: [PATCH 2/5] Implement replace() with fuzzer and add fuzz targets This adds replace() to replace the whole internally used container. It only needs to create the indexing container, so this is relatively performant. Duplicate entries are discarded. --- .../01dd32f42c6c3ff56d10b7fc3dd82e690749be6b | Bin 0 -> 82 bytes .../0374122e3ce280568c8ed41f46a22a26cba53338 | Bin 0 -> 34 bytes .../03f405ec803faa59306f074d3824fcd040dbfbbe | Bin 0 -> 26 bytes .../040e5ac904de86328cca053a15596e118fc5da24 | Bin 0 -> 42 bytes .../052ab788f1646b958e0ea2c0ef47d00141fc1004 | Bin 0 -> 138 bytes .../053b0791e062db00594283e16e6673872596a2ed | Bin 0 -> 1604 bytes .../05cda787f4d57c0ecbb214cc48d9768f53a1ea8f | Bin 0 -> 18 bytes .../062e39f3c9fcee3faa396c764271aa970a27f428 | Bin 0 -> 26 bytes .../073540f1f1f48d2f0b9e11547831ea89a54cb889 | Bin 0 -> 514 bytes .../0881e645dbfc1bba29947ce353e8484f0772bc99 | Bin 0 -> 58 bytes .../08dbbf42caba6501b69b1cea7a9b84e358e66ddb | 1 + .../09b9d71af1e142272bd6a0fc2054b64a438b99d9 | Bin 0 -> 34 bytes .../0a80baa1797615faddb0ccfaa6d46382a6b3e0e2 | 1 + .../0ade7c2cf97f75d009975f4d720d1fa6c19f4897 | 1 + .../0b30ec1eef0904f48d3797ee13dd515b06c482f5 | Bin 0 -> 260 bytes .../0d87af67cc37fed4ba608dba87c561a3ff2b1e31 | Bin 0 -> 130 bytes .../0db2a00e53ccf8ef330179835091f6b070c1ef52 | Bin 0 -> 26 bytes .../0de2a6cb79184a423a18c705ec5c796943a43f4b | Bin 0 -> 18 bytes .../0eb34fb70c5cc8bec3bd9746d4c0f51848c07599 | 1 + .../10cf3df2d3d09ae47fb5eb2aa32f045a7e6377e0 | Bin 0 -> 18 bytes .../11362f492ccdf1419ef6ea987d41121620864a66 | Bin 0 -> 25 bytes .../11f6ad8ec52a2984abaafd7c3b516503785c2072 | 1 + .../133f26e45c15971da555fa342a996fa4ecf33a32 | Bin 0 -> 131 bytes .../13fbd79c3d390e5d6585a21e11ff5ec1970cff0c | 1 + .../1599e9fa41ec68c80230491902786bee889f5bcb | 1 + .../165e29e56c97e5f4b1c7452d69724329c992c975 | Bin 0 -> 18 bytes .../16d1d534393d37a68a59c1231bbbab8550839046 | Bin 0 -> 257 bytes .../1a6dbaa717f8837c4bd4332121e92bd73bbec049 | 1 + .../1dcc0c704303ccc1729abd618f490073331e8b22 | Bin 0 -> 74 bytes .../1e5c2f367f02e47a8c160cda1cd9d91decbac441 | 1 + .../20716a557dfffcaf1782fc244cf548ce14a36fc5 | 1 + .../21013749b62bbfde87e4424c51724252be99566a | 1 + .../21a923ffde933d250075e181d06df1b363c2ad87 | Bin 0 -> 66 bytes .../23772d668f8c023da1c6a6d00c73e463150691ac | Bin 0 -> 1042 bytes .../23a84f8c38d47199a41d9e3eef4ac794aa10ca11 | Bin 0 -> 263 bytes .../23b0ee55a5999ef842c87782bdb40fe527ee7d5c | Bin 0 -> 35 bytes .../23b54dec02fdd05a55e66e047d0fc93c8d58afd4 | 1 + .../2699e643651c83a9926385fe042df0ee147f59f9 | Bin 0 -> 258 bytes .../27d5482eebd075de44389774fce28c69f45c8a75 | 1 + .../2c69128e7d7b6103540d60d6f5c345f4c643d757 | Bin 0 -> 3 bytes .../2d14ab97cc3dc294c51c0d6814f4ea45f4b4e312 | 1 + .../2f1f169a732a6a2631b27d082f31e151075939db | Bin 0 -> 130 bytes .../2f546abff1744e1ffa4c06ed3d7bb1e7795157d0 | Bin 0 -> 8 bytes .../2fec74062a3d12bab6c473583225dd62435240af | Bin 0 -> 66 bytes .../30140397fe38ee61f01eff44b5cfa48285e47889 | 1 + .../304f1febad9d6064d06da66df224af85fdefa4e2 | Bin 0 -> 306 bytes .../3173532552077d0d796c3628ac35c76343dc3a04 | Bin 0 -> 34 bytes .../32096c2e0eff33d844ee6d675407ace18289357d | 1 + .../33156466b62882aca589674dbc593e356efe0cb3 | Bin 0 -> 18 bytes .../351d86f5fba2ea4f88f3abdf01d0c6f59c28debe | Bin 0 -> 8 bytes .../3639690e233f2274fe9624bdeb20e026e9a5b16f | 1 + .../36955aa4221158b2b4199a31f6db236664d8259e | Bin 0 -> 58 bytes .../36d44fd006f9a5a6df9c82ef818d0274b5d57326 | Bin 0 -> 235 bytes .../387ed9746de74f701d1af5f5d4e36ad7b9fd19ef | Bin 0 -> 91 bytes .../38d4e6275e92eb330bd9a2bfd25812b1443fde85 | Bin 0 -> 42 bytes .../393017d7afb3b4d4c34540baa571864a7eb9bf87 | Bin 0 -> 317 bytes .../3b1b828760b23270984a47c893506f2bc8912d04 | Bin 0 -> 1032 bytes .../3c363836cf4e16666669a25da280a1865c2d2874 | 1 + .../3c89586d99f2567d21410f29b1b2606574892aa7 | 1 + .../3cca182946e9fbc4a21fcfa83c21f163a6b549a1 | 1 + .../3d854b217fa938bf1c66059f9771e6eef967df59 | Bin 0 -> 40 bytes .../3e3a0fe606230588bbcd34206150d39b70753985 | 1 + .../3e63346f640f72156e6fd76c00483293c3bfd94f | Bin 0 -> 50 bytes .../3ef176fc2093618c094e73acd348f31bf1a6e990 | Bin 0 -> 10 bytes .../3fa5bfd93317ad25772680071d5ac3259cd2384f | 1 + .../3ff902b52311c3db8e6b6aef51126873bf993f0b | Bin 0 -> 18 bytes .../408c170de2a4310ae7d9544be9fd24f6c28e7f60 | Bin 0 -> 26 bytes .../40d907e2a65b848d1175cb99be5384bcd01e8027 | Bin 0 -> 274 bytes .../41f12c7896e0da705a03db554ff64ca975fdb8eb | Bin 0 -> 1100 bytes .../4368df0175f01cd0870a72b906d6c5280d3ccc3d | Bin 0 -> 176 bytes .../45a65193e30784b0124f4fed659eb7e46552c2d0 | 1 + .../47138e343ceb97ee9a47fc38ec166429b6785265 | Bin 0 -> 1090 bytes .../475ab5d3c4271be23fe0a2e0322da804d1b4e7e6 | Bin 0 -> 18 bytes .../47dd1db8c37b3f9ce1bca0e302e77ffa25ac58e9 | Bin 0 -> 58 bytes .../48e03317628504909ae82f021e5d84e0294c95c8 | Bin 0 -> 1018 bytes .../4a0a19218e082a343a1b17e5333409af9d98f0f5 | 1 + .../4a1e92004fe2336b478d2a26adf69dab9c8f20f3 | 1 + .../4ac3c912ed618bfef8a511c6b65cccffa96547e5 | Bin 0 -> 1420 bytes .../4b56a916e4fd9f579143bdc1d1721f46edc77d10 | Bin 0 -> 82 bytes .../4b6a19f42d9a725e35a9bd70ab5bc0dae2d0f938 | Bin 0 -> 19 bytes .../523c87e010a287823cc1db4ef40fb431f086303d | Bin 0 -> 34 bytes .../52538a80094f7b62948fd31e68fd17a315d8dc91 | 1 + .../53195a43aebbd757609c1987a3e5fb80a48a1aea | Bin 0 -> 182 bytes .../540cd14096978df7467136d56a3f91ad3bae1257 | Bin 0 -> 50 bytes .../544a5d52682bfcba1eba578772019acc3ed7be9c | Bin 0 -> 10 bytes .../54774c0a9a5e30b1a59c909b565be9171cc63c5a | Bin 0 -> 2 bytes .../54fd1711209fb1c0781092374132c66e79e2241b | 1 + .../55c9aacf45de57b5e52c906e62807f7f636acc13 | Bin 0 -> 147 bytes .../55df2a59ed6a888ee2f0cdfdcc8582696702de7a | 1 + .../57ea2fd4cfdbebdec4b57d1bcf93543db7a94149 | Bin 0 -> 170 bytes .../59efd7ad86d0e129fcd3170f570d3fe20faf5778 | Bin 0 -> 33 bytes .../5abb0ecb12a5a97ee4ad2311241fe9fd2c50788c | Bin 0 -> 10 bytes .../5ac60cdebe9e938c45fe0c0a14bd616999d22aa7 | 1 + .../5b55ec37559bb110228a6591713076b7fa2ce5e8 | 1 + .../5c10b5b2cd673a0616d529aa5234b12ee7153808 | 1 + .../5c28095bf32b9e84fb436f4d5db56337dfd6ced1 | 1 + .../5c8d691ca4df25ca1a28f7095f13c06123d6f908 | Bin 0 -> 81 bytes .../5ca9632fb3da20ae29d185c83ea8a0e89966a4b5 | Bin 0 -> 34 bytes .../5d45a50bfe5e9b6ecad8ee68f17e71a69869d335 | Bin 0 -> 130 bytes .../5ddbcf4566f672923de00124be202355eee8250a | Bin 0 -> 26 bytes .../5e0f27faa111f57a3856462210545f2737b119a8 | Bin 0 -> 35 bytes .../5fb9a0ba37519b7fd51909c778ee3b48502de7c1 | 1 + .../620da84186b56a3ac7084bbb997f7fbaaffd8d26 | Bin 0 -> 58 bytes .../629214148a45ecb1f5f7c855734e7b7d114bde82 | Bin 0 -> 50 bytes .../62a19b87093a83cbde29386085cb3afae512048e | Bin 0 -> 10 bytes .../62bdf4f429db7bb60f0f4e2011548c0768bb6a6e | Bin 0 -> 53 bytes .../68fe510098e9425166948125b7fd8559db564275 | Bin 0 -> 18 bytes .../6aa5340b504631ff785ada9d4ca37ed1cb99d385 | 2 + .../6b05c630ac987132c97c3bb31b4e6dc48c94ef66 | Bin 0 -> 219 bytes .../6b74c7492defa6cce51e53e6490a526931ab814b | Bin 0 -> 250 bytes .../6da6923ff27d3e93f3276f87399c5d2cd460efed | Bin 0 -> 138 bytes .../6de2451516b557ea942df244c8586addd2d445a5 | Bin 0 -> 1424 bytes .../6e69f716ccc373de0d346e23ba5b0a1456e835f4 | Bin 0 -> 253 bytes .../6ee4064118b38c4982e15de75ef780821fbb53d4 | Bin 0 -> 34 bytes .../707daa653480a4afc737aa7925cad4bc7b4e2cf2 | Bin 0 -> 18 bytes .../707efc314ec536abed535cdb1b2414aba4713577 | Bin 0 -> 66 bytes .../716f7b5b75fe0616d104b52a64fb6e3f82a4220c | Bin 0 -> 26 bytes .../73944cf322f0e9ffff319e0769eba53b78e4bb89 | Bin 0 -> 514 bytes .../73b74736664ad85828ce1be2e29fb4a68d24402b | 1 + .../74e6388b381fedc1d7e3e2eb8c3290d46cbc2268 | Bin 0 -> 74 bytes .../77d28696448c009290aa19e27b4f5026cfa34fd5 | Bin 0 -> 130 bytes .../79135152a053f257355122db90b254e844838dce | Bin 0 -> 90 bytes .../793755a45f4b6ad7b34dfd52d98f82096d4a2702 | Bin 0 -> 58 bytes .../7a86be4489672a86c76e3e6dc6ba8b3e37393de3 | Bin 0 -> 66 bytes .../7b4ec4636103d641ec664e761370c016fd7e1f57 | Bin 0 -> 50 bytes .../7d076c7938872bcc62468804a1111eb718aceeba | Bin 0 -> 42 bytes .../7d0ce0aab184a4177d62e7a5f4aa090094543fc7 | Bin 0 -> 34 bytes .../8039cffc073eae8c6869c7621ffd4db44ea9ec0b | Bin 0 -> 163 bytes .../823cd15fc2befcd6eb603ddc8eaf446ea3839306 | Bin 0 -> 58 bytes .../824a8e2187c37ef3108c6a283f4167f6bf39e6ed | Bin 0 -> 50 bytes .../82a164ffab0440fdc7a2c40de70c2b3619e17b92 | Bin 0 -> 65 bytes .../82bb3eab86d4063ea4a3cb97821feb07cecf7b72 | 1 + .../8449e3ee695c8bbca682409532026c4821d8ae09 | Bin 0 -> 10 bytes .../84593d24fb3511c48598d8963e1f261ea4ea1aa8 | Bin 0 -> 306 bytes .../851f99c354086150f158dea8b19fd994dbfb6d15 | Bin 0 -> 266 bytes .../8525d8948f1ec5b27808d9e3befbab65b6f8cb33 | Bin 0 -> 202 bytes .../8585fe89e21563547d44e4cda355d6dd8bf0d01f | Bin 0 -> 27 bytes .../86f09dc02bb4fa501cd13135eb1b555e644aa33f | Bin 0 -> 213 bytes .../875113851cd0008165382504306366149a2238d5 | Bin 0 -> 274 bytes .../89abef683225b5c0f2b58455113205d3d9e28ac4 | Bin 0 -> 33 bytes .../8e1cae8122781833e8a686dd378254c44a59dfcc | Bin 0 -> 26 bytes .../8f1d519f81c5f1b13c457134f7c0d65d61e6236f | Bin 0 -> 50 bytes .../92c96352b085c551a3a0f7f336b1f06373a88c17 | Bin 0 -> 1725 bytes .../948982d481af3333158f9761a369042b7bf4dda1 | Bin 0 -> 66 bytes .../94af45793beb027bd38b2f6fbbb52ef101110747 | Bin 0 -> 10 bytes .../951618ceb9b5bf6c3506382d6f7b2a6c8b9b24fd | Bin 0 -> 592 bytes .../9aef6d55eaa1d795b7d1004c8b53c3c22356eaae | Bin 0 -> 2101 bytes .../9b16668f4e16c0e9932661855b7bcb5bad8b0f72 | 1 + .../9c4a7c5a828b025087f720caa56aac88b86a0d4b | Bin 0 -> 26 bytes .../9cfb7f608003684c175573d379bb773468f953e3 | Bin 0 -> 42 bytes .../9eddb6860ecf7699015ffff67e3b375820a48cad | 1 + .../9fb276ce7989bf9a42a1ca627bfd5e013ce15c16 | Bin 0 -> 258 bytes .../a1f2e15911248097b5865f5e25d980a738cea953 | Bin 0 -> 2086 bytes .../a668a7cb1cab42083c5648e47582ac67f2e8e22c | Bin 0 -> 26 bytes .../a70fb6a9415d3c34a9ea5510ba7e3a055d88aef9 | 1 + .../a8abd012eb59b862bf9bc1ea443d2f35a1a2e222 | 1 + .../a94b24fd1c9072a299db036f97909171b97b2db6 | Bin 0 -> 130 bytes .../a980071b2ea741503dac452e75beabf49e780351 | Bin 0 -> 708 bytes .../a99760d97c4f7d9b29f75f70625addd929b5359d | Bin 0 -> 25 bytes .../aeedb41d39b34ba9edff61bbe4227cd3a18728f7 | Bin 0 -> 10 bytes .../b05bcf1bcaf0cacb35bb787e755d7f9343e18e41 | Bin 0 -> 410 bytes .../b1219b72016074f7016f7f53f16ac65e74743167 | 1 + .../b17ba7635ddae8a54ec968c83b2ae5ea04e92a34 | Bin 0 -> 18 bytes .../b2966192532eaecd9b7b5fc374f5d0f3d7a44a1b | Bin 0 -> 2539 bytes .../b357b23c338634aefb5b57d1c1c16e38a7a312d4 | Bin 0 -> 3274 bytes .../b362679aad99fa34afa4ba27ce9ecb0ffa03ea9e | Bin 0 -> 26 bytes .../b4869749fb834afbe2880320d6df5fa522126d5e | Bin 0 -> 674 bytes .../b51a60734da64be0e618bacbea2865a8a7dcd669 | 1 + .../b5ec4eda6ea1f1a8cbc53d26ef2935d9192f9ae7 | Bin 0 -> 58 bytes .../b6bb5293c03de4327b8dfb9d4b503b217e92b90c | Bin 0 -> 58 bytes .../b72c98167e6b2d7910ddb024c599281cb6b668b4 | Bin 0 -> 10 bytes .../b80749b0ad483c4010e69909ae70a9d5c450120c | 1 + .../b849015605174c4e858690fb696964be52fdc429 | Bin 0 -> 129 bytes .../b858cb282617fb0956d960215c8e84d1ccf909c6 | 1 + .../b88df911ab6298f339cb3a5c9485d6688680a6a7 | Bin 0 -> 358 bytes .../b97c5032e9b451dab4f9229321eb66e1103ed281 | Bin 0 -> 250 bytes .../bb38767e3ae6accc9999bc9df1e8410dec0f1ae0 | 1 + .../bb589d0621e5472f470fa3425a234c74b1e202e8 | 1 + .../bd222aef2f5d2a134b202abedcd94433267a4ecb | Bin 0 -> 2050 bytes .../bd6f533fbcfbf5f9755921f58424a23ea5a8e547 | Bin 0 -> 58 bytes .../bea99bad6644a572ae2b88e85b633be893f40161 | Bin 0 -> 122 bytes .../bf8b4530d8d246dd74ac53a13471bba17941dff7 | 1 + .../bf94a8942d41166d7a918cfd4a2bea3a8e558acc | Bin 0 -> 122 bytes .../c032adc1ff629c9b66f22749ad667e6beadf144b | 1 + .../c314f8c1fa13e1afa11c8716c7bce6dbf02d09aa | 1 + .../c36485e4e83e34ad1c2614969ee8941079a9b96b | Bin 0 -> 82 bytes .../c395a8749d8344707f39fe21b8d8ee305f650a16 | Bin 0 -> 34 bytes .../c3f21e3cce0dda1f9fdc3312d4a9498085348195 | Bin 0 -> 522 bytes .../c425a8fdb02518ae33c3a8443649a2d1c23a6998 | Bin 0 -> 74 bytes .../c4488af0c158e8c2832cb927cfb3ce534104cd1e | 1 + .../c4bbc81c5e4e355bb0518737686319c1f312521c | Bin 0 -> 3812 bytes .../c5a56270c673ae22b41bf94d625daa90388c127e | Bin 0 -> 26 bytes .../c62d980ee57c3707d3eb51912138646787174c5d | Bin 0 -> 114 bytes .../c6c1b4ca3f1094a011684a81a09a7955e91e30e3 | Bin 0 -> 74 bytes .../c78ebd3c85a39a596d9f5cfd2b8d240bc1b9c125 | 1 + .../c8a0dffc0656a0f261ba81ab12800496b5f24dbe | Bin 0 -> 17 bytes .../c8bd35648e19d1d1db94000a86597c85080e66d1 | Bin 0 -> 195 bytes .../c8ceb1af5c8179deb449f2e080afbae592a5cefc | Bin 0 -> 267 bytes .../c93175c7811429253c8dced2d1310a4932943019 | Bin 0 -> 122 bytes .../ca3e49ab8b234f636c1dfaec06a6b07bdef56590 | Bin 0 -> 34 bytes .../ca73ab65568cd125c2d27a22bbd9e863c10b675d | 1 + .../cac40b3f566ca32e09221d5079f3e0194a1b4d98 | 1 + .../ccd5b80dc9bd371bcb6b2d218c725997e4073dea | 1 + .../cf849a762e186d4dfd7090919e20df1280251194 | Bin 0 -> 66 bytes .../cf8f3c323baf839f8ba163fedb77aa3e36b9eeb3 | Bin 0 -> 1045 bytes .../d14fd5e026399bf28fec49eb4468fe0c2d36b760 | 1 + .../d15b9da5296c0e144a7fc1fb1770216630ca8507 | Bin 0 -> 1048 bytes .../d1b5dea1e0e6bf3711c78da56b83bcd8a4f71201 | 1 + .../d24f3db0ff0936e95a1c54e6c45973859837ff2a | Bin 0 -> 75 bytes .../d3a2b4fdfbea3ee43829d069bcb028a5546f3d94 | Bin 0 -> 53 bytes .../d3ea2cafae39849166aa24695c19fee21887b454 | Bin 0 -> 1025 bytes .../d3f10d833b42d485ae9d679a7d4e89b02a6e395d | Bin 0 -> 42 bytes .../d40c092ddab89b9d3f48694d609d20ddeecf6cbb | Bin 0 -> 26 bytes .../d4748037a1c586e996e0160a85182dab672726b5 | Bin 0 -> 258 bytes .../d806edb38517460d2d146df863df1012819c76d8 | Bin 0 -> 66 bytes .../d8072da619f219ccc993b090a17ea67cbc8f2ca4 | 1 + .../d8765e1e8a907e51451570c9bab8ec6d9b502d38 | Bin 0 -> 34 bytes .../dcd935ea068d2decb49f4105e323c43f0a45aea6 | Bin 0 -> 250 bytes .../df58248c414f342c81e056b40bee12d17a08bf61 | 1 + .../e0184adedf913b076626646d3f52c3b49c39ad6d | 1 + .../e230784e55fca09f77620d4159243836b4712d46 | Bin 0 -> 1636 bytes .../e447bf6ef2b3387e23d16e891293132919de80b4 | Bin 0 -> 42 bytes .../e4ac13757b69a1c383e8a280e3de90b0578f145a | Bin 0 -> 82 bytes .../e662b9902fb4f30ec68b2d2a511666743227c495 | Bin 0 -> 74 bytes .../e7064f0b80f61dbc65915311032d27baa569ae2a | 1 + .../e848cdc157c62cd7d4d58214e7780fe7c73714c4 | Bin 0 -> 1677 bytes .../e951a82ef46ee767c41bb859f2a393660e5249ca | Bin 0 -> 10 bytes .../e9ee43e2da47ac1083771e9578e36bc19068123b | Bin 0 -> 75 bytes .../eb1390ac146171dee0fad4d6393721f2a512bfe3 | Bin 0 -> 26 bytes .../eb9919b13ba4195d22f8d0746389bc6fb0672143 | Bin 0 -> 26 bytes .../ee9131310edc2eb14928946611fb22f143ef3735 | Bin 0 -> 617 bytes .../eebd8e0976a59117a707e3a062825e2efd5d57f4 | Bin 0 -> 42 bytes .../ef54ee157fa3074d78000bf9fe4421e37ceaa2be | Bin 0 -> 1634 bytes .../efa42c6ae0259c758097eb060a4b112abc9621ee | Bin 0 -> 146 bytes .../efdd02477ba5da245453eb10fbf017c58578aac3 | 1 + .../efe43def97eb295fe99c3753f2d740d7b36df689 | 1 + .../f03cf81f2735705fa986bff3966da3bb3ab50086 | 1 + .../f05ce45a8cad76bdc70bfa22822ee25b5512a1a1 | Bin 0 -> 73 bytes .../f4a61a9b343b5887db9c7f6abe125c53b6d04f30 | Bin 0 -> 9 bytes .../f56424c18e2ba1049912e2d1e70526a68284b4de | Bin 0 -> 146 bytes .../f5cd31de8548ae136839ccafb8a9904977065152 | Bin 0 -> 18 bytes .../f622a45e51b6a2699ad5b291cf4cd755eba41baf | Bin 0 -> 3 bytes .../f75b1bbb2b08943c29d686f3d65c4f70dfd6fee2 | Bin 0 -> 86 bytes .../f7c0f473e0b9f3961e7a6a3fe959a820d29fca2f | Bin 0 -> 98 bytes .../f85be444915cf688937828dcdd2a962376220890 | Bin 0 -> 10 bytes .../fbb5b1b132d7fa74f8a46ee0472d79eb4e08c15f | Bin 0 -> 1026 bytes .../fbd27dbd2d03d4a96066f0bade47b73b5350e035 | Bin 0 -> 42 bytes .../fd45e8d6614e80a12a7a83095fa651b5951517ef | Bin 0 -> 25 bytes .../fe0fbcee48108789770892b76def3db7402e8f2c | Bin 0 -> 26 bytes .../feb99e5638964a3cbf021401c8aeb40c1a950c75 | Bin 0 -> 682 bytes .../fff0fbe7e0c2939a42e1e1d448ac57101c7c9b2d | Bin 0 -> 59 bytes include/ankerl/unordered_dense.h | 55 ++++++++++++- scripts/fuzz_run.sh | 6 +- test/fuzz/replace.cpp | 73 ++++++++++++++++++ test/fuzz/replace.h | 10 +++ test/meson.build | 10 +++ test/unit/fuzz_corpus.cpp | 11 ++- test/unit/replace.cpp | 35 +++++++++ 258 files changed, 259 insertions(+), 5 deletions(-) create mode 100644 data/fuzz/replace/01dd32f42c6c3ff56d10b7fc3dd82e690749be6b create mode 100644 data/fuzz/replace/0374122e3ce280568c8ed41f46a22a26cba53338 create mode 100644 data/fuzz/replace/03f405ec803faa59306f074d3824fcd040dbfbbe create mode 100644 data/fuzz/replace/040e5ac904de86328cca053a15596e118fc5da24 create mode 100644 data/fuzz/replace/052ab788f1646b958e0ea2c0ef47d00141fc1004 create mode 100644 data/fuzz/replace/053b0791e062db00594283e16e6673872596a2ed create mode 100644 data/fuzz/replace/05cda787f4d57c0ecbb214cc48d9768f53a1ea8f create mode 100644 data/fuzz/replace/062e39f3c9fcee3faa396c764271aa970a27f428 create mode 100644 data/fuzz/replace/073540f1f1f48d2f0b9e11547831ea89a54cb889 create mode 100644 data/fuzz/replace/0881e645dbfc1bba29947ce353e8484f0772bc99 create mode 100644 data/fuzz/replace/08dbbf42caba6501b69b1cea7a9b84e358e66ddb create mode 100644 data/fuzz/replace/09b9d71af1e142272bd6a0fc2054b64a438b99d9 create mode 100644 data/fuzz/replace/0a80baa1797615faddb0ccfaa6d46382a6b3e0e2 create mode 100644 data/fuzz/replace/0ade7c2cf97f75d009975f4d720d1fa6c19f4897 create mode 100644 data/fuzz/replace/0b30ec1eef0904f48d3797ee13dd515b06c482f5 create mode 100644 data/fuzz/replace/0d87af67cc37fed4ba608dba87c561a3ff2b1e31 create mode 100644 data/fuzz/replace/0db2a00e53ccf8ef330179835091f6b070c1ef52 create mode 100644 data/fuzz/replace/0de2a6cb79184a423a18c705ec5c796943a43f4b create mode 100644 data/fuzz/replace/0eb34fb70c5cc8bec3bd9746d4c0f51848c07599 create mode 100644 data/fuzz/replace/10cf3df2d3d09ae47fb5eb2aa32f045a7e6377e0 create mode 100644 data/fuzz/replace/11362f492ccdf1419ef6ea987d41121620864a66 create mode 100644 data/fuzz/replace/11f6ad8ec52a2984abaafd7c3b516503785c2072 create mode 100644 data/fuzz/replace/133f26e45c15971da555fa342a996fa4ecf33a32 create mode 100644 data/fuzz/replace/13fbd79c3d390e5d6585a21e11ff5ec1970cff0c create mode 100644 data/fuzz/replace/1599e9fa41ec68c80230491902786bee889f5bcb create mode 100644 data/fuzz/replace/165e29e56c97e5f4b1c7452d69724329c992c975 create mode 100644 data/fuzz/replace/16d1d534393d37a68a59c1231bbbab8550839046 create mode 100644 data/fuzz/replace/1a6dbaa717f8837c4bd4332121e92bd73bbec049 create mode 100644 data/fuzz/replace/1dcc0c704303ccc1729abd618f490073331e8b22 create mode 100644 data/fuzz/replace/1e5c2f367f02e47a8c160cda1cd9d91decbac441 create mode 100644 data/fuzz/replace/20716a557dfffcaf1782fc244cf548ce14a36fc5 create mode 100644 data/fuzz/replace/21013749b62bbfde87e4424c51724252be99566a create mode 100644 data/fuzz/replace/21a923ffde933d250075e181d06df1b363c2ad87 create mode 100644 data/fuzz/replace/23772d668f8c023da1c6a6d00c73e463150691ac create mode 100644 data/fuzz/replace/23a84f8c38d47199a41d9e3eef4ac794aa10ca11 create mode 100644 data/fuzz/replace/23b0ee55a5999ef842c87782bdb40fe527ee7d5c create mode 100644 data/fuzz/replace/23b54dec02fdd05a55e66e047d0fc93c8d58afd4 create mode 100644 data/fuzz/replace/2699e643651c83a9926385fe042df0ee147f59f9 create mode 100644 data/fuzz/replace/27d5482eebd075de44389774fce28c69f45c8a75 create mode 100644 data/fuzz/replace/2c69128e7d7b6103540d60d6f5c345f4c643d757 create mode 100644 data/fuzz/replace/2d14ab97cc3dc294c51c0d6814f4ea45f4b4e312 create mode 100644 data/fuzz/replace/2f1f169a732a6a2631b27d082f31e151075939db create mode 100644 data/fuzz/replace/2f546abff1744e1ffa4c06ed3d7bb1e7795157d0 create mode 100644 data/fuzz/replace/2fec74062a3d12bab6c473583225dd62435240af create mode 100644 data/fuzz/replace/30140397fe38ee61f01eff44b5cfa48285e47889 create mode 100644 data/fuzz/replace/304f1febad9d6064d06da66df224af85fdefa4e2 create mode 100644 data/fuzz/replace/3173532552077d0d796c3628ac35c76343dc3a04 create mode 100644 data/fuzz/replace/32096c2e0eff33d844ee6d675407ace18289357d create mode 100644 data/fuzz/replace/33156466b62882aca589674dbc593e356efe0cb3 create mode 100644 data/fuzz/replace/351d86f5fba2ea4f88f3abdf01d0c6f59c28debe create mode 100644 data/fuzz/replace/3639690e233f2274fe9624bdeb20e026e9a5b16f create mode 100644 data/fuzz/replace/36955aa4221158b2b4199a31f6db236664d8259e create mode 100644 data/fuzz/replace/36d44fd006f9a5a6df9c82ef818d0274b5d57326 create mode 100644 data/fuzz/replace/387ed9746de74f701d1af5f5d4e36ad7b9fd19ef create mode 100644 data/fuzz/replace/38d4e6275e92eb330bd9a2bfd25812b1443fde85 create mode 100644 data/fuzz/replace/393017d7afb3b4d4c34540baa571864a7eb9bf87 create mode 100644 data/fuzz/replace/3b1b828760b23270984a47c893506f2bc8912d04 create mode 100644 data/fuzz/replace/3c363836cf4e16666669a25da280a1865c2d2874 create mode 100644 data/fuzz/replace/3c89586d99f2567d21410f29b1b2606574892aa7 create mode 100644 data/fuzz/replace/3cca182946e9fbc4a21fcfa83c21f163a6b549a1 create mode 100644 data/fuzz/replace/3d854b217fa938bf1c66059f9771e6eef967df59 create mode 100644 data/fuzz/replace/3e3a0fe606230588bbcd34206150d39b70753985 create mode 100644 data/fuzz/replace/3e63346f640f72156e6fd76c00483293c3bfd94f create mode 100644 data/fuzz/replace/3ef176fc2093618c094e73acd348f31bf1a6e990 create mode 100644 data/fuzz/replace/3fa5bfd93317ad25772680071d5ac3259cd2384f create mode 100644 data/fuzz/replace/3ff902b52311c3db8e6b6aef51126873bf993f0b create mode 100644 data/fuzz/replace/408c170de2a4310ae7d9544be9fd24f6c28e7f60 create mode 100644 data/fuzz/replace/40d907e2a65b848d1175cb99be5384bcd01e8027 create mode 100644 data/fuzz/replace/41f12c7896e0da705a03db554ff64ca975fdb8eb create mode 100644 data/fuzz/replace/4368df0175f01cd0870a72b906d6c5280d3ccc3d create mode 100644 data/fuzz/replace/45a65193e30784b0124f4fed659eb7e46552c2d0 create mode 100644 data/fuzz/replace/47138e343ceb97ee9a47fc38ec166429b6785265 create mode 100644 data/fuzz/replace/475ab5d3c4271be23fe0a2e0322da804d1b4e7e6 create mode 100644 data/fuzz/replace/47dd1db8c37b3f9ce1bca0e302e77ffa25ac58e9 create mode 100644 data/fuzz/replace/48e03317628504909ae82f021e5d84e0294c95c8 create mode 100644 data/fuzz/replace/4a0a19218e082a343a1b17e5333409af9d98f0f5 create mode 100644 data/fuzz/replace/4a1e92004fe2336b478d2a26adf69dab9c8f20f3 create mode 100644 data/fuzz/replace/4ac3c912ed618bfef8a511c6b65cccffa96547e5 create mode 100644 data/fuzz/replace/4b56a916e4fd9f579143bdc1d1721f46edc77d10 create mode 100644 data/fuzz/replace/4b6a19f42d9a725e35a9bd70ab5bc0dae2d0f938 create mode 100644 data/fuzz/replace/523c87e010a287823cc1db4ef40fb431f086303d create mode 100644 data/fuzz/replace/52538a80094f7b62948fd31e68fd17a315d8dc91 create mode 100644 data/fuzz/replace/53195a43aebbd757609c1987a3e5fb80a48a1aea create mode 100644 data/fuzz/replace/540cd14096978df7467136d56a3f91ad3bae1257 create mode 100644 data/fuzz/replace/544a5d52682bfcba1eba578772019acc3ed7be9c create mode 100644 data/fuzz/replace/54774c0a9a5e30b1a59c909b565be9171cc63c5a create mode 100644 data/fuzz/replace/54fd1711209fb1c0781092374132c66e79e2241b create mode 100644 data/fuzz/replace/55c9aacf45de57b5e52c906e62807f7f636acc13 create mode 100644 data/fuzz/replace/55df2a59ed6a888ee2f0cdfdcc8582696702de7a create mode 100644 data/fuzz/replace/57ea2fd4cfdbebdec4b57d1bcf93543db7a94149 create mode 100644 data/fuzz/replace/59efd7ad86d0e129fcd3170f570d3fe20faf5778 create mode 100644 data/fuzz/replace/5abb0ecb12a5a97ee4ad2311241fe9fd2c50788c create mode 100644 data/fuzz/replace/5ac60cdebe9e938c45fe0c0a14bd616999d22aa7 create mode 100644 data/fuzz/replace/5b55ec37559bb110228a6591713076b7fa2ce5e8 create mode 100644 data/fuzz/replace/5c10b5b2cd673a0616d529aa5234b12ee7153808 create mode 100644 data/fuzz/replace/5c28095bf32b9e84fb436f4d5db56337dfd6ced1 create mode 100644 data/fuzz/replace/5c8d691ca4df25ca1a28f7095f13c06123d6f908 create mode 100644 data/fuzz/replace/5ca9632fb3da20ae29d185c83ea8a0e89966a4b5 create mode 100644 data/fuzz/replace/5d45a50bfe5e9b6ecad8ee68f17e71a69869d335 create mode 100644 data/fuzz/replace/5ddbcf4566f672923de00124be202355eee8250a create mode 100644 data/fuzz/replace/5e0f27faa111f57a3856462210545f2737b119a8 create mode 100644 data/fuzz/replace/5fb9a0ba37519b7fd51909c778ee3b48502de7c1 create mode 100644 data/fuzz/replace/620da84186b56a3ac7084bbb997f7fbaaffd8d26 create mode 100644 data/fuzz/replace/629214148a45ecb1f5f7c855734e7b7d114bde82 create mode 100644 data/fuzz/replace/62a19b87093a83cbde29386085cb3afae512048e create mode 100644 data/fuzz/replace/62bdf4f429db7bb60f0f4e2011548c0768bb6a6e create mode 100644 data/fuzz/replace/68fe510098e9425166948125b7fd8559db564275 create mode 100644 data/fuzz/replace/6aa5340b504631ff785ada9d4ca37ed1cb99d385 create mode 100644 data/fuzz/replace/6b05c630ac987132c97c3bb31b4e6dc48c94ef66 create mode 100644 data/fuzz/replace/6b74c7492defa6cce51e53e6490a526931ab814b create mode 100644 data/fuzz/replace/6da6923ff27d3e93f3276f87399c5d2cd460efed create mode 100644 data/fuzz/replace/6de2451516b557ea942df244c8586addd2d445a5 create mode 100644 data/fuzz/replace/6e69f716ccc373de0d346e23ba5b0a1456e835f4 create mode 100644 data/fuzz/replace/6ee4064118b38c4982e15de75ef780821fbb53d4 create mode 100644 data/fuzz/replace/707daa653480a4afc737aa7925cad4bc7b4e2cf2 create mode 100644 data/fuzz/replace/707efc314ec536abed535cdb1b2414aba4713577 create mode 100644 data/fuzz/replace/716f7b5b75fe0616d104b52a64fb6e3f82a4220c create mode 100644 data/fuzz/replace/73944cf322f0e9ffff319e0769eba53b78e4bb89 create mode 100644 data/fuzz/replace/73b74736664ad85828ce1be2e29fb4a68d24402b create mode 100644 data/fuzz/replace/74e6388b381fedc1d7e3e2eb8c3290d46cbc2268 create mode 100644 data/fuzz/replace/77d28696448c009290aa19e27b4f5026cfa34fd5 create mode 100644 data/fuzz/replace/79135152a053f257355122db90b254e844838dce create mode 100644 data/fuzz/replace/793755a45f4b6ad7b34dfd52d98f82096d4a2702 create mode 100644 data/fuzz/replace/7a86be4489672a86c76e3e6dc6ba8b3e37393de3 create mode 100644 data/fuzz/replace/7b4ec4636103d641ec664e761370c016fd7e1f57 create mode 100644 data/fuzz/replace/7d076c7938872bcc62468804a1111eb718aceeba create mode 100644 data/fuzz/replace/7d0ce0aab184a4177d62e7a5f4aa090094543fc7 create mode 100644 data/fuzz/replace/8039cffc073eae8c6869c7621ffd4db44ea9ec0b create mode 100644 data/fuzz/replace/823cd15fc2befcd6eb603ddc8eaf446ea3839306 create mode 100644 data/fuzz/replace/824a8e2187c37ef3108c6a283f4167f6bf39e6ed create mode 100644 data/fuzz/replace/82a164ffab0440fdc7a2c40de70c2b3619e17b92 create mode 100644 data/fuzz/replace/82bb3eab86d4063ea4a3cb97821feb07cecf7b72 create mode 100644 data/fuzz/replace/8449e3ee695c8bbca682409532026c4821d8ae09 create mode 100644 data/fuzz/replace/84593d24fb3511c48598d8963e1f261ea4ea1aa8 create mode 100644 data/fuzz/replace/851f99c354086150f158dea8b19fd994dbfb6d15 create mode 100644 data/fuzz/replace/8525d8948f1ec5b27808d9e3befbab65b6f8cb33 create mode 100644 data/fuzz/replace/8585fe89e21563547d44e4cda355d6dd8bf0d01f create mode 100644 data/fuzz/replace/86f09dc02bb4fa501cd13135eb1b555e644aa33f create mode 100644 data/fuzz/replace/875113851cd0008165382504306366149a2238d5 create mode 100644 data/fuzz/replace/89abef683225b5c0f2b58455113205d3d9e28ac4 create mode 100644 data/fuzz/replace/8e1cae8122781833e8a686dd378254c44a59dfcc create mode 100644 data/fuzz/replace/8f1d519f81c5f1b13c457134f7c0d65d61e6236f create mode 100644 data/fuzz/replace/92c96352b085c551a3a0f7f336b1f06373a88c17 create mode 100644 data/fuzz/replace/948982d481af3333158f9761a369042b7bf4dda1 create mode 100644 data/fuzz/replace/94af45793beb027bd38b2f6fbbb52ef101110747 create mode 100644 data/fuzz/replace/951618ceb9b5bf6c3506382d6f7b2a6c8b9b24fd create mode 100644 data/fuzz/replace/9aef6d55eaa1d795b7d1004c8b53c3c22356eaae create mode 100644 data/fuzz/replace/9b16668f4e16c0e9932661855b7bcb5bad8b0f72 create mode 100644 data/fuzz/replace/9c4a7c5a828b025087f720caa56aac88b86a0d4b create mode 100644 data/fuzz/replace/9cfb7f608003684c175573d379bb773468f953e3 create mode 100644 data/fuzz/replace/9eddb6860ecf7699015ffff67e3b375820a48cad create mode 100644 data/fuzz/replace/9fb276ce7989bf9a42a1ca627bfd5e013ce15c16 create mode 100644 data/fuzz/replace/a1f2e15911248097b5865f5e25d980a738cea953 create mode 100644 data/fuzz/replace/a668a7cb1cab42083c5648e47582ac67f2e8e22c create mode 100644 data/fuzz/replace/a70fb6a9415d3c34a9ea5510ba7e3a055d88aef9 create mode 100644 data/fuzz/replace/a8abd012eb59b862bf9bc1ea443d2f35a1a2e222 create mode 100644 data/fuzz/replace/a94b24fd1c9072a299db036f97909171b97b2db6 create mode 100644 data/fuzz/replace/a980071b2ea741503dac452e75beabf49e780351 create mode 100644 data/fuzz/replace/a99760d97c4f7d9b29f75f70625addd929b5359d create mode 100644 data/fuzz/replace/aeedb41d39b34ba9edff61bbe4227cd3a18728f7 create mode 100644 data/fuzz/replace/b05bcf1bcaf0cacb35bb787e755d7f9343e18e41 create mode 100644 data/fuzz/replace/b1219b72016074f7016f7f53f16ac65e74743167 create mode 100644 data/fuzz/replace/b17ba7635ddae8a54ec968c83b2ae5ea04e92a34 create mode 100644 data/fuzz/replace/b2966192532eaecd9b7b5fc374f5d0f3d7a44a1b create mode 100644 data/fuzz/replace/b357b23c338634aefb5b57d1c1c16e38a7a312d4 create mode 100644 data/fuzz/replace/b362679aad99fa34afa4ba27ce9ecb0ffa03ea9e create mode 100644 data/fuzz/replace/b4869749fb834afbe2880320d6df5fa522126d5e create mode 100644 data/fuzz/replace/b51a60734da64be0e618bacbea2865a8a7dcd669 create mode 100644 data/fuzz/replace/b5ec4eda6ea1f1a8cbc53d26ef2935d9192f9ae7 create mode 100644 data/fuzz/replace/b6bb5293c03de4327b8dfb9d4b503b217e92b90c create mode 100644 data/fuzz/replace/b72c98167e6b2d7910ddb024c599281cb6b668b4 create mode 100644 data/fuzz/replace/b80749b0ad483c4010e69909ae70a9d5c450120c create mode 100644 data/fuzz/replace/b849015605174c4e858690fb696964be52fdc429 create mode 100644 data/fuzz/replace/b858cb282617fb0956d960215c8e84d1ccf909c6 create mode 100644 data/fuzz/replace/b88df911ab6298f339cb3a5c9485d6688680a6a7 create mode 100644 data/fuzz/replace/b97c5032e9b451dab4f9229321eb66e1103ed281 create mode 100644 data/fuzz/replace/bb38767e3ae6accc9999bc9df1e8410dec0f1ae0 create mode 100644 data/fuzz/replace/bb589d0621e5472f470fa3425a234c74b1e202e8 create mode 100644 data/fuzz/replace/bd222aef2f5d2a134b202abedcd94433267a4ecb create mode 100644 data/fuzz/replace/bd6f533fbcfbf5f9755921f58424a23ea5a8e547 create mode 100644 data/fuzz/replace/bea99bad6644a572ae2b88e85b633be893f40161 create mode 100644 data/fuzz/replace/bf8b4530d8d246dd74ac53a13471bba17941dff7 create mode 100644 data/fuzz/replace/bf94a8942d41166d7a918cfd4a2bea3a8e558acc create mode 100644 data/fuzz/replace/c032adc1ff629c9b66f22749ad667e6beadf144b create mode 100644 data/fuzz/replace/c314f8c1fa13e1afa11c8716c7bce6dbf02d09aa create mode 100644 data/fuzz/replace/c36485e4e83e34ad1c2614969ee8941079a9b96b create mode 100644 data/fuzz/replace/c395a8749d8344707f39fe21b8d8ee305f650a16 create mode 100644 data/fuzz/replace/c3f21e3cce0dda1f9fdc3312d4a9498085348195 create mode 100644 data/fuzz/replace/c425a8fdb02518ae33c3a8443649a2d1c23a6998 create mode 100644 data/fuzz/replace/c4488af0c158e8c2832cb927cfb3ce534104cd1e create mode 100644 data/fuzz/replace/c4bbc81c5e4e355bb0518737686319c1f312521c create mode 100644 data/fuzz/replace/c5a56270c673ae22b41bf94d625daa90388c127e create mode 100644 data/fuzz/replace/c62d980ee57c3707d3eb51912138646787174c5d create mode 100644 data/fuzz/replace/c6c1b4ca3f1094a011684a81a09a7955e91e30e3 create mode 100644 data/fuzz/replace/c78ebd3c85a39a596d9f5cfd2b8d240bc1b9c125 create mode 100644 data/fuzz/replace/c8a0dffc0656a0f261ba81ab12800496b5f24dbe create mode 100644 data/fuzz/replace/c8bd35648e19d1d1db94000a86597c85080e66d1 create mode 100644 data/fuzz/replace/c8ceb1af5c8179deb449f2e080afbae592a5cefc create mode 100644 data/fuzz/replace/c93175c7811429253c8dced2d1310a4932943019 create mode 100644 data/fuzz/replace/ca3e49ab8b234f636c1dfaec06a6b07bdef56590 create mode 100644 data/fuzz/replace/ca73ab65568cd125c2d27a22bbd9e863c10b675d create mode 100644 data/fuzz/replace/cac40b3f566ca32e09221d5079f3e0194a1b4d98 create mode 100644 data/fuzz/replace/ccd5b80dc9bd371bcb6b2d218c725997e4073dea create mode 100644 data/fuzz/replace/cf849a762e186d4dfd7090919e20df1280251194 create mode 100644 data/fuzz/replace/cf8f3c323baf839f8ba163fedb77aa3e36b9eeb3 create mode 100644 data/fuzz/replace/d14fd5e026399bf28fec49eb4468fe0c2d36b760 create mode 100644 data/fuzz/replace/d15b9da5296c0e144a7fc1fb1770216630ca8507 create mode 100644 data/fuzz/replace/d1b5dea1e0e6bf3711c78da56b83bcd8a4f71201 create mode 100644 data/fuzz/replace/d24f3db0ff0936e95a1c54e6c45973859837ff2a create mode 100644 data/fuzz/replace/d3a2b4fdfbea3ee43829d069bcb028a5546f3d94 create mode 100644 data/fuzz/replace/d3ea2cafae39849166aa24695c19fee21887b454 create mode 100644 data/fuzz/replace/d3f10d833b42d485ae9d679a7d4e89b02a6e395d create mode 100644 data/fuzz/replace/d40c092ddab89b9d3f48694d609d20ddeecf6cbb create mode 100644 data/fuzz/replace/d4748037a1c586e996e0160a85182dab672726b5 create mode 100644 data/fuzz/replace/d806edb38517460d2d146df863df1012819c76d8 create mode 100644 data/fuzz/replace/d8072da619f219ccc993b090a17ea67cbc8f2ca4 create mode 100644 data/fuzz/replace/d8765e1e8a907e51451570c9bab8ec6d9b502d38 create mode 100644 data/fuzz/replace/dcd935ea068d2decb49f4105e323c43f0a45aea6 create mode 100644 data/fuzz/replace/df58248c414f342c81e056b40bee12d17a08bf61 create mode 100644 data/fuzz/replace/e0184adedf913b076626646d3f52c3b49c39ad6d create mode 100644 data/fuzz/replace/e230784e55fca09f77620d4159243836b4712d46 create mode 100644 data/fuzz/replace/e447bf6ef2b3387e23d16e891293132919de80b4 create mode 100644 data/fuzz/replace/e4ac13757b69a1c383e8a280e3de90b0578f145a create mode 100644 data/fuzz/replace/e662b9902fb4f30ec68b2d2a511666743227c495 create mode 100644 data/fuzz/replace/e7064f0b80f61dbc65915311032d27baa569ae2a create mode 100644 data/fuzz/replace/e848cdc157c62cd7d4d58214e7780fe7c73714c4 create mode 100644 data/fuzz/replace/e951a82ef46ee767c41bb859f2a393660e5249ca create mode 100644 data/fuzz/replace/e9ee43e2da47ac1083771e9578e36bc19068123b create mode 100644 data/fuzz/replace/eb1390ac146171dee0fad4d6393721f2a512bfe3 create mode 100644 data/fuzz/replace/eb9919b13ba4195d22f8d0746389bc6fb0672143 create mode 100644 data/fuzz/replace/ee9131310edc2eb14928946611fb22f143ef3735 create mode 100644 data/fuzz/replace/eebd8e0976a59117a707e3a062825e2efd5d57f4 create mode 100644 data/fuzz/replace/ef54ee157fa3074d78000bf9fe4421e37ceaa2be create mode 100644 data/fuzz/replace/efa42c6ae0259c758097eb060a4b112abc9621ee create mode 100644 data/fuzz/replace/efdd02477ba5da245453eb10fbf017c58578aac3 create mode 100644 data/fuzz/replace/efe43def97eb295fe99c3753f2d740d7b36df689 create mode 100644 data/fuzz/replace/f03cf81f2735705fa986bff3966da3bb3ab50086 create mode 100644 data/fuzz/replace/f05ce45a8cad76bdc70bfa22822ee25b5512a1a1 create mode 100644 data/fuzz/replace/f4a61a9b343b5887db9c7f6abe125c53b6d04f30 create mode 100644 data/fuzz/replace/f56424c18e2ba1049912e2d1e70526a68284b4de create mode 100644 data/fuzz/replace/f5cd31de8548ae136839ccafb8a9904977065152 create mode 100644 data/fuzz/replace/f622a45e51b6a2699ad5b291cf4cd755eba41baf create mode 100644 data/fuzz/replace/f75b1bbb2b08943c29d686f3d65c4f70dfd6fee2 create mode 100644 data/fuzz/replace/f7c0f473e0b9f3961e7a6a3fe959a820d29fca2f create mode 100644 data/fuzz/replace/f85be444915cf688937828dcdd2a962376220890 create mode 100644 data/fuzz/replace/fbb5b1b132d7fa74f8a46ee0472d79eb4e08c15f create mode 100644 data/fuzz/replace/fbd27dbd2d03d4a96066f0bade47b73b5350e035 create mode 100644 data/fuzz/replace/fd45e8d6614e80a12a7a83095fa651b5951517ef create mode 100644 data/fuzz/replace/fe0fbcee48108789770892b76def3db7402e8f2c create mode 100644 data/fuzz/replace/feb99e5638964a3cbf021401c8aeb40c1a950c75 create mode 100644 data/fuzz/replace/fff0fbe7e0c2939a42e1e1d448ac57101c7c9b2d create mode 100644 test/fuzz/replace.cpp create mode 100644 test/fuzz/replace.h create mode 100644 test/unit/replace.cpp diff --git a/data/fuzz/replace/01dd32f42c6c3ff56d10b7fc3dd82e690749be6b b/data/fuzz/replace/01dd32f42c6c3ff56d10b7fc3dd82e690749be6b new file mode 100644 index 0000000000000000000000000000000000000000..3f5b1a96a918a9108c9a9954b23ecd8544138d28 GIT binary patch literal 82 zcmebA@v-*s*!}_xXH3ZfMl8)jvJQn4h{BNRISieNo5BnpdGGk|X0rVG zM!?Pr37Lbl^cr%eTZp3m3=aAg=2yAY=p@HQ6h)i(B5`vOv!2a5C=$H!sB&2F(K=hS zi-7>2u$KoSy9Q=w`0Y)aWj860eg|iUSvHZw%hDYF%EMivr@uh54C#E9kyRTxRO}Cs zeb|B;PRW#QdSv2%>+USKgRckz%U@7kgYd1F*TSU@t3P9g#HQhH5 zY)wT_Qj#Ph+m<3SI|iar%5V9;ujUHn5f}$@^Q!4L{G9PBMj;bqOxK3WsB&dS&(3zr z0qdS2dI9wctZ)pC(b8?_(mOaA?69eW&qE!0iRU$vgl%%fx@b5dZ(! uOQe^Iy)A(+>uER~Ds|(xkTXHgPUB$Dyk6OZ+l3kmdb7o}9hb6#%it5J5l)W) literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/05cda787f4d57c0ecbb214cc48d9768f53a1ea8f b/data/fuzz/replace/05cda787f4d57c0ecbb214cc48d9768f53a1ea8f new file mode 100644 index 0000000000000000000000000000000000000000..17c236be5e9f56f839d42043752b720254a19572 GIT binary patch literal 18 LcmZQzKm)%30So~9 literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/062e39f3c9fcee3faa396c764271aa970a27f428 b/data/fuzz/replace/062e39f3c9fcee3faa396c764271aa970a27f428 new file mode 100644 index 0000000000000000000000000000000000000000..d54d6ad46dd001de8eb6ef581847f08648fb5adf GIT binary patch literal 26 ScmZQzkYa#>^I!nuF#rHRF9h`f literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/073540f1f1f48d2f0b9e11547831ea89a54cb889 b/data/fuzz/replace/073540f1f1f48d2f0b9e11547831ea89a54cb889 new file mode 100644 index 0000000000000000000000000000000000000000..47760e2b591415463d3756947bf1779169227c86 GIT binary patch literal 514 zcma)2u?@mN47^C7NYoSzzyb`w2JAqPQvU)J)KqDxVS!8mJt;#SdMKbbcmE#|1td7V zE&Km$-`k~dt|Ha}ClHHY5XopNtg2U?O90!w} z3wfOB8}|i$sfwRaRoqP2&HwwLyzPge{$wD}&FWgRGUsku%h^LwF7RdIrE^)@vl%rJ G{K^ZCZ=jg~ literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/0881e645dbfc1bba29947ce353e8484f0772bc99 b/data/fuzz/replace/0881e645dbfc1bba29947ce353e8484f0772bc99 new file mode 100644 index 0000000000000000000000000000000000000000..c6186af8769b404f51b9d99e5b0fd13082f7b98c GIT binary patch literal 58 dcmb1QfP*zK&<_`aG5XmI4Am zjsy@#f&ti={(g`OusVoh5Vya7%^HSBKw(=T6K>CZpv)8)zn=lD5u}=d1&G)DXAl9g kaXSOaa*!d+Ak`><3*rpb+iF~3Yi9seffNA!%)pQU0MCL(LjV8( literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/0d87af67cc37fed4ba608dba87c561a3ff2b1e31 b/data/fuzz/replace/0d87af67cc37fed4ba608dba87c561a3ff2b1e31 new file mode 100644 index 0000000000000000000000000000000000000000..901f0efce7ad8ab0a1eccdd53c74b25cd873d513 GIT binary patch literal 130 zcmebA@v-*s*!}|_O7n3 y|F0Ps?EnAIV@UY_p8-hdLiG1TseT}U8u=e+(E0eoVBUEUxERk+!@zJD1Q-BcVltWl literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/0db2a00e53ccf8ef330179835091f6b070c1ef52 b/data/fuzz/replace/0db2a00e53ccf8ef330179835091f6b070c1ef52 new file mode 100644 index 0000000000000000000000000000000000000000..bbd42442f8365efb4b03506312af854fb0bc3370 GIT binary patch literal 26 KcmZQzzy$yR8UO(R literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/0de2a6cb79184a423a18c705ec5c796943a43f4b b/data/fuzz/replace/0de2a6cb79184a423a18c705ec5c796943a43f4b new file mode 100644 index 0000000000000000000000000000000000000000..049a1a5ab2540885a88b5fb6df0c2e3eef4ac77e GIT binary patch literal 18 ScmZSh|Np-|5Lc@+Kmh<|tP>#{dEb3;%0C_11eEz_{m;O#A%Q{O5yIyd2kHm% s890D^pl*<^|Np<#|6~yV-{0Ra0@c;u&ye?S|NsC0&jG>3b3n#_0262{>Hq)$ literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/13fbd79c3d390e5d6585a21e11ff5ec1970cff0c b/data/fuzz/replace/13fbd79c3d390e5d6585a21e11ff5ec1970cff0c new file mode 100644 index 00000000..23fa7d31 --- /dev/null +++ b/data/fuzz/replace/13fbd79c3d390e5d6585a21e11ff5ec1970cff0c @@ -0,0 +1 @@ +k \ No newline at end of file diff --git a/data/fuzz/replace/1599e9fa41ec68c80230491902786bee889f5bcb b/data/fuzz/replace/1599e9fa41ec68c80230491902786bee889f5bcb new file mode 100644 index 00000000..92a39f39 --- /dev/null +++ b/data/fuzz/replace/1599e9fa41ec68c80230491902786bee889f5bcb @@ -0,0 +1 @@ +é \ No newline at end of file diff --git a/data/fuzz/replace/165e29e56c97e5f4b1c7452d69724329c992c975 b/data/fuzz/replace/165e29e56c97e5f4b1c7452d69724329c992c975 new file mode 100644 index 0000000000000000000000000000000000000000..92d468e4b371b925fa74bd89bea136c468c59daa GIT binary patch literal 18 VcmeyfM`q6+1_q{|3?Q%$hyg*`1oi*` literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/16d1d534393d37a68a59c1231bbbab8550839046 b/data/fuzz/replace/16d1d534393d37a68a59c1231bbbab8550839046 new file mode 100644 index 0000000000000000000000000000000000000000..795efff0be12305ce36d0d61bef05f5eb8fa6e34 GIT binary patch literal 257 zcmaFCCGlUvNP>$22vT6+KMb&ggbzV610#sX0FwjKPr(8xLP)aYF&~4BV_*PN^WOje z|E0bk27tDq2(JT5Oa|N1->-B1I><2zd3o literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/1e5c2f367f02e47a8c160cda1cd9d91decbac441 b/data/fuzz/replace/1e5c2f367f02e47a8c160cda1cd9d91decbac441 new file mode 100644 index 00000000..8e2f0bef --- /dev/null +++ b/data/fuzz/replace/1e5c2f367f02e47a8c160cda1cd9d91decbac441 @@ -0,0 +1 @@ +[ \ No newline at end of file diff --git a/data/fuzz/replace/20716a557dfffcaf1782fc244cf548ce14a36fc5 b/data/fuzz/replace/20716a557dfffcaf1782fc244cf548ce14a36fc5 new file mode 100644 index 00000000..fe68d3ad --- /dev/null +++ b/data/fuzz/replace/20716a557dfffcaf1782fc244cf548ce14a36fc5 @@ -0,0 +1 @@ +~> \ No newline at end of file diff --git a/data/fuzz/replace/21013749b62bbfde87e4424c51724252be99566a b/data/fuzz/replace/21013749b62bbfde87e4424c51724252be99566a new file mode 100644 index 00000000..ba916ace --- /dev/null +++ b/data/fuzz/replace/21013749b62bbfde87e4424c51724252be99566a @@ -0,0 +1 @@ +ÿ g \ No newline at end of file diff --git a/data/fuzz/replace/21a923ffde933d250075e181d06df1b363c2ad87 b/data/fuzz/replace/21a923ffde933d250075e181d06df1b363c2ad87 new file mode 100644 index 0000000000000000000000000000000000000000..29b47a4b945613a6a2fa1eddf870934d82052337 GIT binary patch literal 66 kcmZSRM+OWK4g(1E_apOw0$dD?AaT{(YFtp6ejqmi03nSOng9R* literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/23772d668f8c023da1c6a6d00c73e463150691ac b/data/fuzz/replace/23772d668f8c023da1c6a6d00c73e463150691ac new file mode 100644 index 0000000000000000000000000000000000000000..6e7c4da69c0d4509ad177d9f010fae2f8cb60433 GIT binary patch literal 1042 zcmZQzAPfWuE1{o?|6o8D`?N4^VMZ6?LKnc`*JFr`3Q!mV_5BnYFsdCX1p46sB$xmI D2s#bL literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/23a84f8c38d47199a41d9e3eef4ac794aa10ca11 b/data/fuzz/replace/23a84f8c38d47199a41d9e3eef4ac794aa10ca11 new file mode 100644 index 0000000000000000000000000000000000000000..fa013c42ec54d25694fe2353b8fcee8c50700d2d GIT binary patch literal 263 zcmdPw>G_Wi7-$Fn{riVx8^izq-~ayylK+20t*oxrb^t5*%i!wj%J7eYQImnent@?E z7-VFW!oUG01_n)wQl|g^Uo!|Zf_3+U0Rsag!+$WJ3&>({U;y&||IcGc09phjbb(Sp S3&0B485n$ge1P`2x&i=8T2Y?> literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/23b0ee55a5999ef842c87782bdb40fe527ee7d5c b/data/fuzz/replace/23b0ee55a5999ef842c87782bdb40fe527ee7d5c new file mode 100644 index 0000000000000000000000000000000000000000..65fc79c08718a3a1afb391ca2e6d5e2069027006 GIT binary patch literal 35 icmZR0#2}&0z_6Wxf$={SX#8hp05KUE7#LU>7$g802@e$j literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/23b54dec02fdd05a55e66e047d0fc93c8d58afd4 b/data/fuzz/replace/23b54dec02fdd05a55e66e047d0fc93c8d58afd4 new file mode 100644 index 00000000..0052c535 --- /dev/null +++ b/data/fuzz/replace/23b54dec02fdd05a55e66e047d0fc93c8d58afd4 @@ -0,0 +1 @@ +j* \ No newline at end of file diff --git a/data/fuzz/replace/2699e643651c83a9926385fe042df0ee147f59f9 b/data/fuzz/replace/2699e643651c83a9926385fe042df0ee147f59f9 new file mode 100644 index 0000000000000000000000000000000000000000..53579d07c8cfad4a6669f4c054a77b21e772a590 GIT binary patch literal 258 zcmZvXEe^s!5JqQlk$A+1LE|y_N-o1SVEWAt2?^n4f0E7a z%i9bLeZPmA$yJvc%q38LW}HD59cegufBbN8W^2AQOR9e~9X0i?4uBK30fieQLvr`c xR^i~u+eg*PNVPZE-EZImvsW|$Wj`j7(jlo8RgMxGX+LHDsfRDc1yotSEfdElaJ>Kk literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/27d5482eebd075de44389774fce28c69f45c8a75 b/data/fuzz/replace/27d5482eebd075de44389774fce28c69f45c8a75 new file mode 100644 index 00000000..be54354a --- /dev/null +++ b/data/fuzz/replace/27d5482eebd075de44389774fce28c69f45c8a75 @@ -0,0 +1 @@ +h \ No newline at end of file diff --git a/data/fuzz/replace/2c69128e7d7b6103540d60d6f5c345f4c643d757 b/data/fuzz/replace/2c69128e7d7b6103540d60d6f5c345f4c643d757 new file mode 100644 index 0000000000000000000000000000000000000000..619abdb56c9fb768f8f313fcfd10837e2dd463c3 GIT binary patch literal 3 KcmXS6hz9@xz5vt! literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/2d14ab97cc3dc294c51c0d6814f4ea45f4b4e312 b/data/fuzz/replace/2d14ab97cc3dc294c51c0d6814f4ea45f4b4e312 new file mode 100644 index 00000000..1c8a0e79 --- /dev/null +++ b/data/fuzz/replace/2d14ab97cc3dc294c51c0d6814f4ea45f4b4e312 @@ -0,0 +1 @@ +; \ No newline at end of file diff --git a/data/fuzz/replace/2f1f169a732a6a2631b27d082f31e151075939db b/data/fuzz/replace/2f1f169a732a6a2631b27d082f31e151075939db new file mode 100644 index 0000000000000000000000000000000000000000..c772c97550d6b14ec4d0422f1275b07471f87f9e GIT binary patch literal 130 ocmZQzKn5}xz!pOUQ-Bd literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/2fec74062a3d12bab6c473583225dd62435240af b/data/fuzz/replace/2fec74062a3d12bab6c473583225dd62435240af new file mode 100644 index 0000000000000000000000000000000000000000..cc6634fb206891f5c366bfe720f0723ac6efadc8 GIT binary patch literal 66 ScmZQzAP4k=0Z?Z@LjnLICIm_V literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/30140397fe38ee61f01eff44b5cfa48285e47889 b/data/fuzz/replace/30140397fe38ee61f01eff44b5cfa48285e47889 new file mode 100644 index 00000000..f327b9ac --- /dev/null +++ b/data/fuzz/replace/30140397fe38ee61f01eff44b5cfa48285e47889 @@ -0,0 +1 @@ +ƒ \ No newline at end of file diff --git a/data/fuzz/replace/304f1febad9d6064d06da66df224af85fdefa4e2 b/data/fuzz/replace/304f1febad9d6064d06da66df224af85fdefa4e2 new file mode 100644 index 0000000000000000000000000000000000000000..7a7235fe7cbfe0c2b39acb4cea1ec518d7755fa0 GIT binary patch literal 306 zcmaFCCGlUvNP>%jfzdw&2LAtNU|^8=|9{^5|NjpGnIO!-2qG9BGcd4&84L+|dH*3w zzSQ@F07Mu}8iGiiIvGIb0}cBBf5m%{E-({h7t|ot$v}hu|L^Y)zkVInIG~{rXMi*{ zARO`zr2ZTjfLLIE0Ch@$-PPak2xR|fcntOr(2hQkFitz*o`rZ0WF81e+*jdJe8G^& F4FDC!cZC1| literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/3173532552077d0d796c3628ac35c76343dc3a04 b/data/fuzz/replace/3173532552077d0d796c3628ac35c76343dc3a04 new file mode 100644 index 0000000000000000000000000000000000000000..5642265e8fb13f907e745102e62281ff49fc3dd0 GIT binary patch literal 34 KcmZQzAOrvaA^-sZ literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/32096c2e0eff33d844ee6d675407ace18289357d b/data/fuzz/replace/32096c2e0eff33d844ee6d675407ace18289357d new file mode 100644 index 00000000..96d80cd6 --- /dev/null +++ b/data/fuzz/replace/32096c2e0eff33d844ee6d675407ace18289357d @@ -0,0 +1 @@ +C \ No newline at end of file diff --git a/data/fuzz/replace/33156466b62882aca589674dbc593e356efe0cb3 b/data/fuzz/replace/33156466b62882aca589674dbc593e356efe0cb3 new file mode 100644 index 0000000000000000000000000000000000000000..69f7fbb634db6872ef53fade4bb3b5c33de12d1a GIT binary patch literal 18 VcmezUpFxe`KNABV0|@*FVgNRD1TO#p literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/351d86f5fba2ea4f88f3abdf01d0c6f59c28debe b/data/fuzz/replace/351d86f5fba2ea4f88f3abdf01d0c6f59c28debe new file mode 100644 index 0000000000000000000000000000000000000000..97ea9a06bf16f52f5489e674a7e6c1f824f4169e GIT binary patch literal 8 PcmZQzVEC@PXU`r03HJk8 literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/3639690e233f2274fe9624bdeb20e026e9a5b16f b/data/fuzz/replace/3639690e233f2274fe9624bdeb20e026e9a5b16f new file mode 100644 index 00000000..e6f36f4e --- /dev/null +++ b/data/fuzz/replace/3639690e233f2274fe9624bdeb20e026e9a5b16f @@ -0,0 +1 @@ +)ñ \ No newline at end of file diff --git a/data/fuzz/replace/36955aa4221158b2b4199a31f6db236664d8259e b/data/fuzz/replace/36955aa4221158b2b4199a31f6db236664d8259e new file mode 100644 index 0000000000000000000000000000000000000000..8cb8c73556d67903688b1bace2bcb41dd6f816ed GIT binary patch literal 58 pcmd;J0D%flFvY;||NsBLj6i~s5h?(tob9)RfD1$nB=w)c0|0(~4J7~o literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/36d44fd006f9a5a6df9c82ef818d0274b5d57326 b/data/fuzz/replace/36d44fd006f9a5a6df9c82ef818d0274b5d57326 new file mode 100644 index 0000000000000000000000000000000000000000..99074cbc55022f3474f7dfc55c4e27b25fd41098 GIT binary patch literal 235 zcmY+8u?<2&3`6}95)vDL^jk!U1kEuG6Z}=O0ds)FHVi;RLHCI74t?Pw7dwf4Q^Zy? zBEn?Qf*C11r4c4wx;h^J0nMZBJ&fBR?XE9)*PEQDd4=1?x@1a*8teXM)Dk}YE<9Vg alu}N2vcjHo&viuor8lI5phj;Rx4piv8duQ( literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/387ed9746de74f701d1af5f5d4e36ad7b9fd19ef b/data/fuzz/replace/387ed9746de74f701d1af5f5d4e36ad7b9fd19ef new file mode 100644 index 0000000000000000000000000000000000000000..de65eba4492fb23bf2fb8217fe6ab225cdbee815 GIT binary patch literal 91 jcmZQzAPA!2AP~xujs|Jk1_S#upa3Y?-w!b_fk6uZO*si_@% literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/393017d7afb3b4d4c34540baa571864a7eb9bf87 b/data/fuzz/replace/393017d7afb3b4d4c34540baa571864a7eb9bf87 new file mode 100644 index 0000000000000000000000000000000000000000..4148d9568cf43d0d688f86667d25b90e66c13ec4 GIT binary patch literal 317 zcmaFy;suw45km?L{D*-&2_p$E1|WdQsHCL8Wd7$Ngj4>%hX^xH{QmtGEa>p^~sii!ftfSm!fK>}jhmwE{Z_^-mH_<|vk F8vx`slBoay literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/3b1b828760b23270984a47c893506f2bc8912d04 b/data/fuzz/replace/3b1b828760b23270984a47c893506f2bc8912d04 new file mode 100644 index 0000000000000000000000000000000000000000..802da7de4570f9c47984eba63657164f966c024b GIT binary patch literal 1032 zcmb_bEl&eM5Pe4=gc1n21`yO05(MEyNg;uRI{pEs0&(ixsr?aW(C`Q9>%d{L)hJRz zFbKj&m-l9`r2#HL;N@<2c4l^V=gn+7jWk_^CxB;7M4so;;12y7Hh?QYDq%ok^| zn6p&TXpkWHJYO=A!zBMsr-N(y?FJjeDIgEk&Pv#?h*AoXiStj6Xu5&-13y!z(af)C zwOY0(lAR9DY172M>%An&ahIUN)ln?EG~S}dm>$cF(U%9oE7?^!PL9D(m?b7iyzmbyhM(HhVMf-*@mLnE6Ix2)L3p}`l$94jiD<#U2yiA!=H zYm-?q0>nG*1w@rSTeRai-typzLd-J#q;b~OSEY?p!a&jf1r6+%fG>#%bY$5d2pK&N R6`L3qzv#h#d>tR#=?w!XeS81_ literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/3c363836cf4e16666669a25da280a1865c2d2874 b/data/fuzz/replace/3c363836cf4e16666669a25da280a1865c2d2874 new file mode 100644 index 00000000..c59d9b63 --- /dev/null +++ b/data/fuzz/replace/3c363836cf4e16666669a25da280a1865c2d2874 @@ -0,0 +1 @@ +d \ No newline at end of file diff --git a/data/fuzz/replace/3c89586d99f2567d21410f29b1b2606574892aa7 b/data/fuzz/replace/3c89586d99f2567d21410f29b1b2606574892aa7 new file mode 100644 index 00000000..40a2dbb3 --- /dev/null +++ b/data/fuzz/replace/3c89586d99f2567d21410f29b1b2606574892aa7 @@ -0,0 +1 @@ +ê \ No newline at end of file diff --git a/data/fuzz/replace/3cca182946e9fbc4a21fcfa83c21f163a6b549a1 b/data/fuzz/replace/3cca182946e9fbc4a21fcfa83c21f163a6b549a1 new file mode 100644 index 00000000..b84825ba --- /dev/null +++ b/data/fuzz/replace/3cca182946e9fbc4a21fcfa83c21f163a6b549a1 @@ -0,0 +1 @@ +ÿ|7`7> \ No newline at end of file diff --git a/data/fuzz/replace/3d854b217fa938bf1c66059f9771e6eef967df59 b/data/fuzz/replace/3d854b217fa938bf1c66059f9771e6eef967df59 new file mode 100644 index 0000000000000000000000000000000000000000..77b53e93b70c1c23b2c4b2fba88958b38fbe2811 GIT binary patch literal 40 scmey#z`*tYfdG(nVAznr00j5`|7T#B|Nj4fpoo!)iOGg}^Q;*d02)ON^Z)<= literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/3e3a0fe606230588bbcd34206150d39b70753985 b/data/fuzz/replace/3e3a0fe606230588bbcd34206150d39b70753985 new file mode 100644 index 00000000..f91dd268 --- /dev/null +++ b/data/fuzz/replace/3e3a0fe606230588bbcd34206150d39b70753985 @@ -0,0 +1 @@ +Y§XX§\1 \ No newline at end of file diff --git a/data/fuzz/replace/3e63346f640f72156e6fd76c00483293c3bfd94f b/data/fuzz/replace/3e63346f640f72156e6fd76c00483293c3bfd94f new file mode 100644 index 0000000000000000000000000000000000000000..1464d7502022cd4dbe93406c3a363ff2582d1ea4 GIT binary patch literal 50 bcmZQzh=zkeC`&q;0R&jUB*Qjj02BfMWy25^ literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/3ef176fc2093618c094e73acd348f31bf1a6e990 b/data/fuzz/replace/3ef176fc2093618c094e73acd348f31bf1a6e990 new file mode 100644 index 0000000000000000000000000000000000000000..73307a73eebf17fe79b384c10253ad923e79a421 GIT binary patch literal 10 PcmcEh4+M-13=EzCAe;n* literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/3fa5bfd93317ad25772680071d5ac3259cd2384f b/data/fuzz/replace/3fa5bfd93317ad25772680071d5ac3259cd2384f new file mode 100644 index 00000000..7136b4c8 --- /dev/null +++ b/data/fuzz/replace/3fa5bfd93317ad25772680071d5ac3259cd2384f @@ -0,0 +1 @@ +ß \ No newline at end of file diff --git a/data/fuzz/replace/3ff902b52311c3db8e6b6aef51126873bf993f0b b/data/fuzz/replace/3ff902b52311c3db8e6b6aef51126873bf993f0b new file mode 100644 index 0000000000000000000000000000000000000000..2acfacf13df7838f6ef32f33c72e5d57106cac71 GIT binary patch literal 18 XcmZ3>pvu6&$iTo*%b>0cq!<_g6&(Sk literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/408c170de2a4310ae7d9544be9fd24f6c28e7f60 b/data/fuzz/replace/408c170de2a4310ae7d9544be9fd24f6c28e7f60 new file mode 100644 index 0000000000000000000000000000000000000000..1c1f22f80146019e793de1be6e672c73470571e1 GIT binary patch literal 26 YcmZQz*t&&bD+3%bF);l9FAw4Z06n<`J^%m! literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/40d907e2a65b848d1175cb99be5384bcd01e8027 b/data/fuzz/replace/40d907e2a65b848d1175cb99be5384bcd01e8027 new file mode 100644 index 0000000000000000000000000000000000000000..c960b88dd0f49780f855f15170ce8c6605b8f5a2 GIT binary patch literal 274 PcmZShKMMXEBZ2<_NWcbf literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/41f12c7896e0da705a03db554ff64ca975fdb8eb b/data/fuzz/replace/41f12c7896e0da705a03db554ff64ca975fdb8eb new file mode 100644 index 0000000000000000000000000000000000000000..4ed19086608a5d530eb887251b69fc1be4ca9cbd GIT binary patch literal 1100 zcmc&!u}%U(6r3XvBQX?~(pZXihC*@@A@MppOBxG{)fg(M&elZDB{bIf1DDuwB|qQ? zSkqeBSQzCwZ}+$ZlvXF%U3PZg?0d7f)S{>*aM%!$p4Sk8h{qnN$f?L$x;y}UL{Z3H zQV7F#LKxFuz(Kzt@~ZLUlN=Yum`ygLp+Ax8FAg0CCHc!k;jq(Ax!Euu5E4F{sx!GA z7;~-(lE^1YDAGW$rWGMc-jrM}rT$wf$ym2$0u)k9T0FEfb55pmxnoZt`-LC~;Mt&K zcdR!TM7!&`-A!8FM7biYix{ZQt-$1dIO(}`taH#X_M(q|r zph*GcbmaX>7iUt!3m1x9iQ^a(9@T^mVMp?j?Lp^P+CeE+pi-$&bRV(&DiI`~=gNh(j3(H(liS==d(<7p wUwQA+SaIRNXfz6f>uSR#g{~VX{=R)&vzOK;O#<)wX8`Pm1zX&bDzz-W0Z_2dha$iPqt#Q*>O=hR>Tf&V^GkkOivA(R0IJwU*~SPcT!K>QyFn5wI9{K?2j z*}jwU8^iYP+kt}B8Vn!-Bmg#$VS6bMWP=D0uqb8v|Nk|^|No3LK^B2*f%5l5Eb{`9Q$K78g*`!epwsZGfjJ#FJ)~1U8#HHuyhmj0005XcN~!<= literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/475ab5d3c4271be23fe0a2e0322da804d1b4e7e6 b/data/fuzz/replace/475ab5d3c4271be23fe0a2e0322da804d1b4e7e6 new file mode 100644 index 0000000000000000000000000000000000000000..69bec4e7adf35340a003f71327933768b905b1fe GIT binary patch literal 18 VcmdNAGh|@=4+h0dK|zdS3;;}>2b}-_ literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/47dd1db8c37b3f9ce1bca0e302e77ffa25ac58e9 b/data/fuzz/replace/47dd1db8c37b3f9ce1bca0e302e77ffa25ac58e9 new file mode 100644 index 0000000000000000000000000000000000000000..61fbfabdd07a3b942bd37196cfd53e5be251f31d GIT binary patch literal 58 xcmZ4S9|%?e!QcP?8U8Z@Isg7MfIvn@M$iA(Kn75pfx#0b1O$5+82&<73;@L#7w7;0 literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/48e03317628504909ae82f021e5d84e0294c95c8 b/data/fuzz/replace/48e03317628504909ae82f021e5d84e0294c95c8 new file mode 100644 index 0000000000000000000000000000000000000000..44a137dac1ec3502361f762644d6e4dee5ed2e49 GIT binary patch literal 1018 zcmZQzFl1za0$UgZ7cGEYf(N@WA<=sL3ic8N`1MmwmVi5{VGj!dL-5LTV$}?dt2V5X nBn#3Z3>f}{0m)9Iu7=6fHIAyL-Nk8I3Qid$iGDZ$2_^slO?WAe literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/4a0a19218e082a343a1b17e5333409af9d98f0f5 b/data/fuzz/replace/4a0a19218e082a343a1b17e5333409af9d98f0f5 new file mode 100644 index 00000000..4d1ae35b --- /dev/null +++ b/data/fuzz/replace/4a0a19218e082a343a1b17e5333409af9d98f0f5 @@ -0,0 +1 @@ +f \ No newline at end of file diff --git a/data/fuzz/replace/4a1e92004fe2336b478d2a26adf69dab9c8f20f3 b/data/fuzz/replace/4a1e92004fe2336b478d2a26adf69dab9c8f20f3 new file mode 100644 index 00000000..eba52ffe --- /dev/null +++ b/data/fuzz/replace/4a1e92004fe2336b478d2a26adf69dab9c8f20f3 @@ -0,0 +1 @@ +33333333333333333333333333333333333333333333333333331333333333333333333333333333333333333333333333333333333333333333333333333333ÿÿÿÿÿÿÿÿÿ \ No newline at end of file diff --git a/data/fuzz/replace/4ac3c912ed618bfef8a511c6b65cccffa96547e5 b/data/fuzz/replace/4ac3c912ed618bfef8a511c6b65cccffa96547e5 new file mode 100644 index 0000000000000000000000000000000000000000..034d7fb118626e84329fb9b4cd21b8c1a1e13cd4 GIT binary patch literal 1420 zcmb_cJx?1!5S_C?2p1Hothhyr4H89^0_$W!P`0B>iG)(PSR@QWcNWE^NSR`ho0Q1> z0XhmxG%ooI)Nbh`xxkY*v%CI)I3R^5?d;v`&YO>&-MVwT4CG0J`7867S8F7I?vac! zl;9^RR#Zt;6q~w#Zm|GT4A_*4qDI!X`gGC<1|s^wR+v)q4iD5Jyd=y}ud(MCFOI-( zP$yF_AcxoBQhj+5J=Vn|d7ZVLIc#@I%nuU6V1J4uYwbG>zV=>qu{;kgR!{Dq!Mv2~(gaxEY$JzoW}v zbVd6wb`9DzWGd86DzEVvEyJ`*gtk?O-fB+HHu79FlU-fG`^m2m^?E(|kBzT8x}q_r z+W1Qj*T6899xrRm`1r=lkTI&rlq(e$1W_63IoM7(V11%Q_n=;a1>DdOb#0Qj=}J&n z7{BEISOkemYL6)p{cr7a#Nmto)>-{4YF|7(i3W0^A0h<9^y7ixvr5d+;gfzNYha_8 zv3y=+Im7Q&Wz_8=US#yo8agvP3z$Zu(GA~0MmSt#T{d9UtFYJUlyDpTGZQYhOo0S% K%i$@E6n_9Es{nSQX|g#WBSF%|{}0K*9lhyVZp literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/4b6a19f42d9a725e35a9bd70ab5bc0dae2d0f938 b/data/fuzz/replace/4b6a19f42d9a725e35a9bd70ab5bc0dae2d0f938 new file mode 100644 index 0000000000000000000000000000000000000000..8e06a14b927176f0d9ac600103ee08d0e1d9aa0e GIT binary patch literal 19 acmaFF$iTqDz`&r$!0_wKe+D)q1_l5pwgfH! literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/523c87e010a287823cc1db4ef40fb431f086303d b/data/fuzz/replace/523c87e010a287823cc1db4ef40fb431f086303d new file mode 100644 index 0000000000000000000000000000000000000000..b326de5d47b3decfe40910a2bf09337fffa239cf GIT binary patch literal 34 icmey#z`)3mAi%)D<-h;}V5T#Jfe8@&XW;t(p8)_=#Rho* literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/52538a80094f7b62948fd31e68fd17a315d8dc91 b/data/fuzz/replace/52538a80094f7b62948fd31e68fd17a315d8dc91 new file mode 100644 index 00000000..5cd813e5 --- /dev/null +++ b/data/fuzz/replace/52538a80094f7b62948fd31e68fd17a315d8dc91 @@ -0,0 +1 @@ +ª \ No newline at end of file diff --git a/data/fuzz/replace/53195a43aebbd757609c1987a3e5fb80a48a1aea b/data/fuzz/replace/53195a43aebbd757609c1987a3e5fb80a48a1aea new file mode 100644 index 0000000000000000000000000000000000000000..164a883fdc7f30702310c3641ad1f37b44abdc04 GIT binary patch literal 182 zcmaFCCGlUvNP>$22vT6+KMdr7grUF?L?41;21c;xV+ICxFoS{N|9=JsAou_OdGG)K z|5D!%13+mE;mKh0`}@PMUkB+<$jf^N5;+G3AQspmKp6>$aUdZOkod2{rTBs&ksAP) CA65zg literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/540cd14096978df7467136d56a3f91ad3bae1257 b/data/fuzz/replace/540cd14096978df7467136d56a3f91ad3bae1257 new file mode 100644 index 0000000000000000000000000000000000000000..186f9c2d4931814f8f885de75ab8ca0df4c9c30e GIT binary patch literal 50 fcmZQzU|{(5A4oXk1cHw&|Npm)0Rl@)OTk9~Q_2rH literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/544a5d52682bfcba1eba578772019acc3ed7be9c b/data/fuzz/replace/544a5d52682bfcba1eba578772019acc3ed7be9c new file mode 100644 index 0000000000000000000000000000000000000000..f135f6e53b95abf7d0472548bd480bc72d9dd8c8 GIT binary patch literal 10 RcmZ=@VBlt8)R1Lj000Bm0F(d# literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/54774c0a9a5e30b1a59c909b565be9171cc63c5a b/data/fuzz/replace/54774c0a9a5e30b1a59c909b565be9171cc63c5a new file mode 100644 index 0000000000000000000000000000000000000000..8db396b9061126ce360f12315b8679b2e0f685a0 GIT binary patch literal 2 JcmaFF0005T0OJ4v literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/54fd1711209fb1c0781092374132c66e79e2241b b/data/fuzz/replace/54fd1711209fb1c0781092374132c66e79e2241b new file mode 100644 index 00000000..7937c68f --- /dev/null +++ b/data/fuzz/replace/54fd1711209fb1c0781092374132c66e79e2241b @@ -0,0 +1 @@ +g \ No newline at end of file diff --git a/data/fuzz/replace/55c9aacf45de57b5e52c906e62807f7f636acc13 b/data/fuzz/replace/55c9aacf45de57b5e52c906e62807f7f636acc13 new file mode 100644 index 0000000000000000000000000000000000000000..bc419b1108bfe36cf7131ad4d6f268675c81b866 GIT binary patch literal 147 zcmd1Hb9HrPU}UhaW|U+1rT7xzyK0hzC9zO6ahG) zvacEb|7YBvkpbrZ|NlRafnh$7J*6K67?|e#XJB9k^0`Pwjk{KL994G*afq)|r|NsBLo{_<*4h;VP=lW$FAI-200zj%I8GtH) JKoH381ONz*9vJ`t literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/5ca9632fb3da20ae29d185c83ea8a0e89966a4b5 b/data/fuzz/replace/5ca9632fb3da20ae29d185c83ea8a0e89966a4b5 new file mode 100644 index 0000000000000000000000000000000000000000..ee9fa782c91f51a9e64fc269b2b548244388ca38 GIT binary patch literal 34 ZcmZQzVA#5KD+2^DGBD0yc!dHO7y!gB4~75$ literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/5d45a50bfe5e9b6ecad8ee68f17e71a69869d335 b/data/fuzz/replace/5d45a50bfe5e9b6ecad8ee68f17e71a69869d335 new file mode 100644 index 0000000000000000000000000000000000000000..0737812b4250fc94220d6069487eed0da3921bb3 GIT binary patch literal 130 LcmZQz7-#?h0D=Gk literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/5ddbcf4566f672923de00124be202355eee8250a b/data/fuzz/replace/5ddbcf4566f672923de00124be202355eee8250a new file mode 100644 index 0000000000000000000000000000000000000000..c099364434be43d881209bffecc8ecfc64ec3ddd GIT binary patch literal 26 ccmd0kW|(o?g^@vlfq{zwN-;3}|If$(06&=omH+?% literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/5e0f27faa111f57a3856462210545f2737b119a8 b/data/fuzz/replace/5e0f27faa111f57a3856462210545f2737b119a8 new file mode 100644 index 0000000000000000000000000000000000000000..18085eec09711a16501c9b19ec06639a0a4148b9 GIT binary patch literal 35 kcmZQLdXz!xC~+{dslfdL2<7*rS--ho&Q0O-^S;Q#;t literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/5fb9a0ba37519b7fd51909c778ee3b48502de7c1 b/data/fuzz/replace/5fb9a0ba37519b7fd51909c778ee3b48502de7c1 new file mode 100644 index 00000000..4238428a --- /dev/null +++ b/data/fuzz/replace/5fb9a0ba37519b7fd51909c778ee3b48502de7c1 @@ -0,0 +1 @@ +Ü \ No newline at end of file diff --git a/data/fuzz/replace/620da84186b56a3ac7084bbb997f7fbaaffd8d26 b/data/fuzz/replace/620da84186b56a3ac7084bbb997f7fbaaffd8d26 new file mode 100644 index 0000000000000000000000000000000000000000..b9dea171c0bced5ac84b2ad640790ba423737faa GIT binary patch literal 58 lcmZRqV#v(Q{9pOwKf`}80P+|FSQ$XzC=vh*KnW=@4FD`|6~+Jn literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/629214148a45ecb1f5f7c855734e7b7d114bde82 b/data/fuzz/replace/629214148a45ecb1f5f7c855734e7b7d114bde82 new file mode 100644 index 0000000000000000000000000000000000000000..13736e0437c7a9d98319698d7fca71d67a920f50 GIT binary patch literal 50 ecmZQzh=zke5R0K70vNVI0i5CE`9Fc-KLY>_85f8E literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/62a19b87093a83cbde29386085cb3afae512048e b/data/fuzz/replace/62a19b87093a83cbde29386085cb3afae512048e new file mode 100644 index 0000000000000000000000000000000000000000..00ea98ed323aaf75b9c6f9829c5422061bb8dfc1 GIT binary patch literal 10 Rcmeyx@JNfnkm2Kh1^^ez1SkLi literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/62bdf4f429db7bb60f0f4e2011548c0768bb6a6e b/data/fuzz/replace/62bdf4f429db7bb60f0f4e2011548c0768bb6a6e new file mode 100644 index 0000000000000000000000000000000000000000..8e6157784265d0152c3843fe9b115743b9cb8d95 GIT binary patch literal 53 dcmXqJU|=w0_)iEhY+z;ts!U+maE&>^7yu&WBy<1( literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/68fe510098e9425166948125b7fd8559db564275 b/data/fuzz/replace/68fe510098e9425166948125b7fd8559db564275 new file mode 100644 index 0000000000000000000000000000000000000000..c96d70184af99da5969d85688d531d88059105ff GIT binary patch literal 18 Vcmea?x&;h47~%{W7!=|v5&%)s2POaj literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/6aa5340b504631ff785ada9d4ca37ed1cb99d385 b/data/fuzz/replace/6aa5340b504631ff785ada9d4ca37ed1cb99d385 new file mode 100644 index 00000000..3e489aae --- /dev/null +++ b/data/fuzz/replace/6aa5340b504631ff785ada9d4ca37ed1cb99d385 @@ -0,0 +1,2 @@ + +5 \ No newline at end of file diff --git a/data/fuzz/replace/6b05c630ac987132c97c3bb31b4e6dc48c94ef66 b/data/fuzz/replace/6b05c630ac987132c97c3bb31b4e6dc48c94ef66 new file mode 100644 index 0000000000000000000000000000000000000000..c2f02df1c60048ca54ba9b850bd15736b7b2e856 GIT binary patch literal 219 zcmZ9G%L#-)5JXE@S@5)8g~?&Pcs3MGphGZ)$w@FCBapUgdhp3>g`ePOtqY%&JW zt|%M@hNIHGJ~YaZ+<|F5{S$?#s*}a=L^&%Y^lZq*Y*#%NZ)1YT0kd8jgsP!P*;~~g QGgbZSYPrh4HAxb110dc-BLDyZ literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/6b74c7492defa6cce51e53e6490a526931ab814b b/data/fuzz/replace/6b74c7492defa6cce51e53e6490a526931ab814b new file mode 100644 index 0000000000000000000000000000000000000000..472d6e2b648798296e1ade39d8f278a620cef7f5 GIT binary patch literal 250 zcmZXPF%H5o3`Om3T^P6mOFA>5E)3)t-55M|f+-uyn3HgUj4a%SGf?w?D^;p^itQ+I zo|W$G;HD>caaZI46-8v{lVi03du1fjBXHlO6vXUWWvnX~bg>c9ODTWqty4JYD=|jC v&@^T6&Y61p56ghnUS~NvJL+XQH@k0Xj_x0R@2X6nZ5S)dy(`IL>Qu9Fx3~eXr!3 zlhg~y;nlkoUu?7y%yT;<;H;Zecb#>Uqu2T}fkyuB^@esRwcv2&e8s_-Yok=Bb769; zoT??QP2JqE&b1a$#bZo24nbTLe3i8JG(1ZI=U2xIe{h4P)7&tGbYkK>M&6+Ql=RHZp3h9_VYa&wmAra!fd82YRvOkJU3CLm95{oaHFyW8|gAGT^~ zaREEvhDJoe4mn9Z7WIJVj>l(gh<~9Ja`rsaza^i38`Ujqao522sF>Mu**OEj-i zSCuAGkzy2X9y9jE;*BYM(z`S+tw*k0b84Ss{P>a4-DBuzcbl*skH^pU1vZAk8JB4V bJ#uId+{t=F_XI}ffrqR!cPE0A?9Vr| ztSt~wv@u)5DPU4@e-A~4?yHFggIq1d?d43@u3^mBF%H5o3`L!8EDW50u@x%=C<{wBt^gB*7dATi0v&uGHaHMx0Q22IORFNmQ{+Zb z>hJ$ksBR3L!rF|?0xHqe9)>l^u?L|bibUrI=Bmf4%FJ&5>vh|~VCIEc6KJNjibQ#n z6Z0W8ZR$&Gj_+5s3}Ys-)Ev5Yr?M<5_@HRLX#E^<Y0`b593{X%C1WfxgWT4!Pp8v0b%>N*HPpH@)28O>- FCIFkFB*6dx literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/793755a45f4b6ad7b34dfd52d98f82096d4a2702 b/data/fuzz/replace/793755a45f4b6ad7b34dfd52d98f82096d4a2702 new file mode 100644 index 0000000000000000000000000000000000000000..e831210b8926d31c568af5464735c900c1f342d9 GIT binary patch literal 58 pcmZQzVBr5B4FitRl|bf_B}*896axq>nZ5+bj07nF^FaiJ1pon;4s`$k literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/7a86be4489672a86c76e3e6dc6ba8b3e37393de3 b/data/fuzz/replace/7a86be4489672a86c76e3e6dc6ba8b3e37393de3 new file mode 100644 index 0000000000000000000000000000000000000000..c63e78fcf41d31fed8058a80e1bc696a0dc8d43c GIT binary patch literal 66 XcmZQzzyTPM#QWg@Bnap9gLnx5#7zs1 literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/7b4ec4636103d641ec664e761370c016fd7e1f57 b/data/fuzz/replace/7b4ec4636103d641ec664e761370c016fd7e1f57 new file mode 100644 index 0000000000000000000000000000000000000000..56c6b347f8e96236f9c5f666ededbb1d9a242e82 GIT binary patch literal 50 jcmZROh-Cl+2?lj_bs&rJKNM&HXgh6Dx%0K47_Y5)KL literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/8039cffc073eae8c6869c7621ffd4db44ea9ec0b b/data/fuzz/replace/8039cffc073eae8c6869c7621ffd4db44ea9ec0b new file mode 100644 index 0000000000000000000000000000000000000000..41ddb5965ae206a037f4b8085435c8a2c7504410 GIT binary patch literal 163 zcmYj~F%Ezr3`IX93+KSa3%IcKCJs%UnY=>dbvT{Y7DDueys7`Oh!h2o^ig{e7Z6To x>vm-@@6ADXW3FqRF!y1$2%xHT+*AnRD_LUf+PE;!?|k)-RW>Z*B$1ej=miGwOhy0z literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/823cd15fc2befcd6eb603ddc8eaf446ea3839306 b/data/fuzz/replace/823cd15fc2befcd6eb603ddc8eaf446ea3839306 new file mode 100644 index 0000000000000000000000000000000000000000..df04770686e69183fea9d977e8ebbef47cc1516d GIT binary patch literal 58 ycmd;J0D%fY5c&Tv;@72K;X~7@R)(&|NnXK|Ns6{&j17|5bz%eI6-^{22&7m2#Oir z|NsA`9;6ir7(p@&46ObAKoVvSSQ?}qZh!$$_6N`ape1m<>-+ovf%GzL-MSS>GBYsF z08$Wb|MM6am_Qs5)(0tq+YYf2Xcek;Aje$4ejTJVAusRU|H;?@(C~9$@IML!fLyRw XfqEps0RVKH1O)t7;Zl6TkjM=HAzFo? literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/851f99c354086150f158dea8b19fd994dbfb6d15 b/data/fuzz/replace/851f99c354086150f158dea8b19fd994dbfb6d15 new file mode 100644 index 0000000000000000000000000000000000000000..c30e31d2e4b2e7cf3047602f5b457f442246b15b GIT binary patch literal 266 OcmZQz7zN-ENB{r*=m!D@kRS*oLIoKZOc@v&fSmvT=NU0D zaQ^=fmhc2A?#H5(;RYi_6ifou9s;Rn0&98v4$uhzTO~wy literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/8585fe89e21563547d44e4cda355d6dd8bf0d01f b/data/fuzz/replace/8585fe89e21563547d44e4cda355d6dd8bf0d01f new file mode 100644 index 0000000000000000000000000000000000000000..303cef0a75a7e520f1956580cfd70d304a8a7c90 GIT binary patch literal 27 ZcmaE`Yd7nE2-pP#dmdS-sBB>X0{{;j4-fzV literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/86f09dc02bb4fa501cd13135eb1b555e644aa33f b/data/fuzz/replace/86f09dc02bb4fa501cd13135eb1b555e644aa33f new file mode 100644 index 0000000000000000000000000000000000000000..78ea9d72467bda8fd848dbc6f35109909f221a33 GIT binary patch literal 213 zcmZQzU^ov1!VC~_{(L+mm<19%fBx{{Y8Y7R0|eF{9=rel|Nk4Ry1H810m%LT|1X29 zt1H7l21ZQ=25Sa}?O>3RQEF8R0{2S~FflNc_5%R}10%@%1_lOshW}twxELT7G60Rq vV@UW96ioojurmPFmzF}UVqgFo(b41TYVB%)1PTiaHG6u%j;PjVg}DU)8*)pb literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/875113851cd0008165382504306366149a2238d5 b/data/fuzz/replace/875113851cd0008165382504306366149a2238d5 new file mode 100644 index 0000000000000000000000000000000000000000..d172a4bd604331309de8742fa01c1283b9a404e1 GIT binary patch literal 274 zcmY+9Ee^s!5QX0oNU0&gBGBaqBo(MS4uL?dT30m*7eMp|JwZK^YoM`c5<;NEo82{h z$^Oinw>vYTKnP1HiJP4X)qo^*9ng_g&a9`r48wr?JUd)`wRj7uWmFxttfHI$ebF=x z97AV$8bqw#MCA7I{&*o2q(Tl%FmgG!0cs#=-nV~j+llIfeY)#DQd%Lx0s#k|o$+En X`qUBFB^`a=o29Ug*laca>1^10Xd9-sF)Zl&q2s_w->S5;I4P?4MZT(ybK z8ICk*igUwE4ve)QlO;%q5Dyr%mgGEHmf_%N4m(FR)t{7o(lhLnj$D>GS28+Ceedo& zkM$vxZ@t{|NYgiI6dfMEN*B1mL^zkW(zhvaX9(QIlcq6jF_?~;caO#r{0hrIiK0jX zywIPJ{xt1g^#)lC6{cr7Q=+uUUk|X1iQE1iRC~SaSbobU6n*9~u78Zj+(l8N+h{bR z!aA%x{sc@zTC#5TU^CD)(A-#|Kq4kFeGqqMyrEbUT_=+|lePr!!9ASM+^l+la}zk{ zfMsflAaaw*gbE6K3RAA&+1j!EfrKT`OcaV~`vUP=@f2YV5!V6OHa1bP8V8S=(&d1) z!6LEAN_7bnxX-VPAOuTB%NJ&x!6XtvB0Td_p0@Lg0SjONUZ2#MUcDO@58LWc**_8RbJNG zkAsKWhWEv6LaU-v&sER0-Z4+AHhjHwG(Es*D(6)8#O%m!`B(%kY7~D~9ZVb_-Ng}R zjWKfeDYIU&H6Jvv&G%x}HuhiXBX(Z5r(agVT&@n=OR8R27Zv0xij?_Y@HKJu8fI|H zLO?SGs7k;W0utf}4f|j&2{i=1w#{Eik0Ry^0N-2mP$A{tfV&-8h`Ma}c_btJBs6sH EKdM$omH+?% literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/948982d481af3333158f9761a369042b7bf4dda1 b/data/fuzz/replace/948982d481af3333158f9761a369042b7bf4dda1 new file mode 100644 index 0000000000000000000000000000000000000000..a5e430fba1aaf4d6a134b34ab3dccf0941412968 GIT binary patch literal 66 VcmcDtw6qK%3Rp5SFkn&01puN$6Wss+ literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/94af45793beb027bd38b2f6fbbb52ef101110747 b/data/fuzz/replace/94af45793beb027bd38b2f6fbbb52ef101110747 new file mode 100644 index 0000000000000000000000000000000000000000..df702b56cc12fb23edaa127f42653ab0c7257475 GIT binary patch literal 10 Rcmey#z`(#QJ|TgL0RRo%0uBHG literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/951618ceb9b5bf6c3506382d6f7b2a6c8b9b24fd b/data/fuzz/replace/951618ceb9b5bf6c3506382d6f7b2a6c8b9b24fd new file mode 100644 index 0000000000000000000000000000000000000000..90a765c6350997c75fefd35a7483f66ae4b3566b GIT binary patch literal 592 zcmZuvF;2rk5Zp5r6lrNGC_+yGasi5TQi}UQBr1xlsB)D>>J-;UQ69h#a%GAF#8tQHCNXRO0KTpT)&Kwi literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/9aef6d55eaa1d795b7d1004c8b53c3c22356eaae b/data/fuzz/replace/9aef6d55eaa1d795b7d1004c8b53c3c22356eaae new file mode 100644 index 0000000000000000000000000000000000000000..48536626090022717063c3c3a2a9463e1739029d GIT binary patch literal 2101 zcmd5-y-ve05I!Riq5}gX9V=BWEC^VlPyrHE9|9pUp$w=4DhuHO7$S9HU@9-rg{dR2 z!Q7P@1|)iXcTSq532n-c;Db8$`Rwz3XWuak9H-T20S?y>RFG^4!1$e-%_bQPjPLs{ z{(PT3``RAarLwI{L7>(U5av3f4oVi_egBQ~PJrQK{OUlo0CmdSYNXw4x@vGJyY14gq~&=!&aWwJXZ_ z$tV=bkd$N>xJ#lZg1%tcWK!w*8KA zv@+KjLPDs!lUlBr8_ zp~0KyU8b?H!~84;N|d;K*+4<^OE>b5Tt;$z^nf*KJTC~sbbBI?PxwUEW&FokH%hSP z4o}QT36LUy62QFRPfgx?Mz)cCBgi8Kkl$xOw4f5%#uBxvc2RnMw9quDG)JjPm$o>w lk8_VC?d((QM2}TGn=Bl0CJYIJ>+@W@bInGD65;o*-3QW+{~G`R literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/9b16668f4e16c0e9932661855b7bcb5bad8b0f72 b/data/fuzz/replace/9b16668f4e16c0e9932661855b7bcb5bad8b0f72 new file mode 100644 index 00000000..f7a8cade --- /dev/null +++ b/data/fuzz/replace/9b16668f4e16c0e9932661855b7bcb5bad8b0f72 @@ -0,0 +1 @@ +ö \ No newline at end of file diff --git a/data/fuzz/replace/9c4a7c5a828b025087f720caa56aac88b86a0d4b b/data/fuzz/replace/9c4a7c5a828b025087f720caa56aac88b86a0d4b new file mode 100644 index 0000000000000000000000000000000000000000..6c139fd32a2dc125cdab0c2553c0abd1578c7f92 GIT binary patch literal 26 RcmY%YKMxZK2nal4007Tn4f6m1 literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/9cfb7f608003684c175573d379bb773468f953e3 b/data/fuzz/replace/9cfb7f608003684c175573d379bb773468f953e3 new file mode 100644 index 0000000000000000000000000000000000000000..732fbf617c39e7b98fc1e3cd00be2055d1361b5f GIT binary patch literal 42 ScmZQzzy+cqfMFX1FaQ8KWe0cw literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/9eddb6860ecf7699015ffff67e3b375820a48cad b/data/fuzz/replace/9eddb6860ecf7699015ffff67e3b375820a48cad new file mode 100644 index 00000000..427c0113 --- /dev/null +++ b/data/fuzz/replace/9eddb6860ecf7699015ffff67e3b375820a48cad @@ -0,0 +1 @@ +¡a \ No newline at end of file diff --git a/data/fuzz/replace/9fb276ce7989bf9a42a1ca627bfd5e013ce15c16 b/data/fuzz/replace/9fb276ce7989bf9a42a1ca627bfd5e013ce15c16 new file mode 100644 index 0000000000000000000000000000000000000000..cb1cccb20e39d94758a7ca3a41f65fe6de0aa2d8 GIT binary patch literal 258 LcmZQz80i220RjL4 literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/a1f2e15911248097b5865f5e25d980a738cea953 b/data/fuzz/replace/a1f2e15911248097b5865f5e25d980a738cea953 new file mode 100644 index 0000000000000000000000000000000000000000..12592aeb7fa1677ff3a1121912ba2ffc160504bf GIT binary patch literal 2086 zcmb_dJ#X7E5IqI`Kr&>=QlMTsI!&ggKr0AF8z4r0gixTPhQMeGdx`P`G6?X}A(Qh5 zx@+vz|4_7>*UZTfAYtD-Ql_L*b`s=lk<#&ay!UuK8bgWW!@(gWHrpRnQEx<|JkJyS zirnPMX|XA784ia%$guRHCV5}7Y^U6+>_dTWdr6QLE^G`F`1 zWWBGJc(XG^{!}m8-w2i$`azs%r<9k@0G%XoNv1*oW z>SYvSzV5f1e$S_)lbb4nL}kp)J=rCJly+u$Co4B);0R%2S!c`IQBThP9z^oWW}SB2 z0vGGDsebG+vf%x~ou-io++YnmrFLz8f=ch>Khl1|Ydw=4X*`bdqKf2kVbSY6d80YI zuWg#{L&p?Ot}LwAz!%6gSVh~cdQx6z*`zLwWDcLwI<^NM*souXlp3Bf99TkGNEfCD zLz+z1_Kdk;68_8}TWqqdD5$~ye_}x*Unutm|MkA>G$ahMz9+bW@VbWjj?2R35N3Bs zS?XkW{m8wpoq=q0UOWqy_@eht^TI<3aTmjiA~>!J3>~$z-zT~Q3Y2%tg=bp4xw(tt M-FA-k?!W2(0LpB2%K!iX literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/a668a7cb1cab42083c5648e47582ac67f2e8e22c b/data/fuzz/replace/a668a7cb1cab42083c5648e47582ac67f2e8e22c new file mode 100644 index 0000000000000000000000000000000000000000..eea793a2af320e8e31e890874fa21fe1ed25b877 GIT binary patch literal 26 YcmZQzh=u_MAlUx@|9^&PhCe_i0BGt6KL7v# literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/a70fb6a9415d3c34a9ea5510ba7e3a055d88aef9 b/data/fuzz/replace/a70fb6a9415d3c34a9ea5510ba7e3a055d88aef9 new file mode 100644 index 00000000..b8635bcf --- /dev/null +++ b/data/fuzz/replace/a70fb6a9415d3c34a9ea5510ba7e3a055d88aef9 @@ -0,0 +1 @@ +ë \ No newline at end of file diff --git a/data/fuzz/replace/a8abd012eb59b862bf9bc1ea443d2f35a1a2e222 b/data/fuzz/replace/a8abd012eb59b862bf9bc1ea443d2f35a1a2e222 new file mode 100644 index 00000000..3f1695f1 --- /dev/null +++ b/data/fuzz/replace/a8abd012eb59b862bf9bc1ea443d2f35a1a2e222 @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/fuzz/replace/a94b24fd1c9072a299db036f97909171b97b2db6 b/data/fuzz/replace/a94b24fd1c9072a299db036f97909171b97b2db6 new file mode 100644 index 0000000000000000000000000000000000000000..f0b00f5ee0610f45939978c95e3ba8de5bffdcfb GIT binary patch literal 130 UcmZQzpbO}S1CVtv4v3uq0I3BEZvX%Q literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/a980071b2ea741503dac452e75beabf49e780351 b/data/fuzz/replace/a980071b2ea741503dac452e75beabf49e780351 new file mode 100644 index 0000000000000000000000000000000000000000..cb78910bcb6ff786405e1c406c84e9500542a6eb GIT binary patch literal 708 zcmbVKF-`+95S){OfCwRK@__>iBxs0E5kz8tKt~f%r9fAuGY>$>(os;u2d=(+h58;r zN6hT{&IFMHG18sAWAAu(>?7~50wVT82#ahS`WU#4&}GiDF6@UcjYCxd0htlQgE)d} zC1zm@?<59r&ISMIC1q8L!xVBmUI`_(jZLXQUDs%VY{H`=xZ{oAi$?eQ18ZOrR>d&Z zBHllVj0jnN!?azF`TS&w()dgJU)zeM7EoWzkMn>DhWlZ)Vz`^z9<6l~J|Q9$C>&d6 z!^Iz)R;}2xdTHH|5jh?Iu6;l+>b6jmW1AW7o^i92tKlk?lom;8jqK&qbw#Ua-Oua# uujeMD7r9Z1GxYI literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/b05bcf1bcaf0cacb35bb787e755d7f9343e18e41 b/data/fuzz/replace/b05bcf1bcaf0cacb35bb787e755d7f9343e18e41 new file mode 100644 index 0000000000000000000000000000000000000000..9ee2a18ddcab3084cc1a5603dbf77556d0ebcfbf GIT binary patch literal 410 zcmb7=JqiLb5QX1}Ac9!f+RHAM+DHm5%rWd!S!uNw5X=F*$(A0-+D6dvWwQ8JEci$! zAtdj8nR2DnP8Ob@Z`B~#? zcJ$MJVg4!OFJ*)m0|6}E^5Y?rY)tw3Ez7S8gfOkKwezLbbtdB{ewlLzK3UshC!$w& hOpk*W0D_h&2Nrz`VgIepO!bnQbPm)g73W+C@d+N}%ryW2 literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/b1219b72016074f7016f7f53f16ac65e74743167 b/data/fuzz/replace/b1219b72016074f7016f7f53f16ac65e74743167 new file mode 100644 index 00000000..c59021fe --- /dev/null +++ b/data/fuzz/replace/b1219b72016074f7016f7f53f16ac65e74743167 @@ -0,0 +1 @@ +)Ï \ No newline at end of file diff --git a/data/fuzz/replace/b17ba7635ddae8a54ec968c83b2ae5ea04e92a34 b/data/fuzz/replace/b17ba7635ddae8a54ec968c83b2ae5ea04e92a34 new file mode 100644 index 0000000000000000000000000000000000000000..289a83bab4785c7d59dd31fcadd1d0afbc289a56 GIT binary patch literal 18 WcmdO5VE+#SK|u@*6$}9k3=9BHTLzf` literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/b2966192532eaecd9b7b5fc374f5d0f3d7a44a1b b/data/fuzz/replace/b2966192532eaecd9b7b5fc374f5d0f3d7a44a1b new file mode 100644 index 0000000000000000000000000000000000000000..96b65456c235886e0b077693c05e333e26d6ab90 GIT binary patch literal 2539 zcmd5;zl#$=6n+~{#1scwMN=wxQ8?jLxDbw0aXVY9fC{D={;P6(42gaCFcmV4GckDA;bB{|X)eNMv)K)Ej%y}#2QMZ?5^wA9O`oH*N~pFUT-8hmw6G=hRX0V+S{&e7vzj$*^Vyw3}04Y0)EL@Bxolw42KZD#`BU!AF>gOV5i_c z{a%oSy=EJWGK@PLUE;d7=rM#>`Rb#;5cy0jtMSbOjYo&@(&xY7l04;ojHO6qtQ^;*)OUn6q=fpu zl~W&?AgNYT-`NuC)8fcCDf6w&d6Q1!@gJT^KMRc5NW^(=Tucgo#EfJe;C8KoxVDxe zuH|waSLb>G>nerP=j`wB4rwHZ`e4#u01jt48&?EHr9_cUMat<@iR1{;rgx*{27_)g xnY?$O&;lYjH?tvprvo}_abeNH5MJm3yD=E>65_8)$pwa8q5}7$JG|v6ege3_qc8vf literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/b357b23c338634aefb5b57d1c1c16e38a7a312d4 b/data/fuzz/replace/b357b23c338634aefb5b57d1c1c16e38a7a312d4 new file mode 100644 index 0000000000000000000000000000000000000000..9e8451a6d76b71cf1239aebf399c19ca9c5b037d GIT binary patch literal 3274 zcmd^By=xRf6o0cQ;t46Ng4b9Cyfa{-79MNxgKQ&qmO-$%Vgy}~yR&e`I>qWWLM-I+ z4_tqRMg9#7t4nEbA>59?_hx2yv$v~JVq)+I^SQI{`@I>Wc(G6PB@SYWx8rwlH%;#v zV5oY=kTD89(TaIwOlHn^FemJq1w~Or3JaB-lTD%|S(jhUf(bDAI{+FLl>SbD5Dh1S zBRhTItYX_pfa6KX^wc3CA4|c5QORj6jF+PSwuU>SDtP+L7+&tEW52Z-I%Ti zn*>dy3I@H>kB@GH6{Y4n%AA zw{qVoO@2sRdMRImw7$y;~93$B_7F8MN^rPbK?E~tGZK6`|^Gi103P?S~Wb@O}3Bnvwz@# Rf2PFqqi`2Z-ih_s>ksi9qxAp) literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/b362679aad99fa34afa4ba27ce9ecb0ffa03ea9e b/data/fuzz/replace/b362679aad99fa34afa4ba27ce9ecb0ffa03ea9e new file mode 100644 index 0000000000000000000000000000000000000000..3eda74c2c77b37e363b801e813a9bae8ebfeba31 GIT binary patch literal 26 fcmex)j)8%Zfx)JCvI)b61O^imZgC(N$YKBhV7~?g literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/b4869749fb834afbe2880320d6df5fa522126d5e b/data/fuzz/replace/b4869749fb834afbe2880320d6df5fa522126d5e new file mode 100644 index 0000000000000000000000000000000000000000..a5d6acc417dc23fe412cafc33538633f9dbec191 GIT binary patch literal 674 zcma)4yGjF55Iq|e(IOv^#lkLXCnAJJjNROZ0W4D&cMb7%Lw?+S4jbwr#)1RxqI5`Ho$Ff53vih?m*F;0~r z6!xtUB9RC%Y9mbt%$&DcaZ`SjS!8YAeGqAxtu$$xE#Ww8hm86X21isVFN(*01KHA00000 literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/b6bb5293c03de4327b8dfb9d4b503b217e92b90c b/data/fuzz/replace/b6bb5293c03de4327b8dfb9d4b503b217e92b90c new file mode 100644 index 0000000000000000000000000000000000000000..b947284c02be9e8446bfc085f14dd388cda8454c GIT binary patch literal 58 zcmX@gAaxW3Bp4WexG?TJX35CFz_6Wxf${(U|6qxuN1y+U693P@upt2`0|W`hObl|@ GxflWTY!?{- literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/b72c98167e6b2d7910ddb024c599281cb6b668b4 b/data/fuzz/replace/b72c98167e6b2d7910ddb024c599281cb6b668b4 new file mode 100644 index 0000000000000000000000000000000000000000..30e8b80f7bc66e022c13da927c5ed2e862898b65 GIT binary patch literal 10 McmeBv#K-^v01a{hZvX%Q literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/b80749b0ad483c4010e69909ae70a9d5c450120c b/data/fuzz/replace/b80749b0ad483c4010e69909ae70a9d5c450120c new file mode 100644 index 00000000..c8e3eb97 --- /dev/null +++ b/data/fuzz/replace/b80749b0ad483c4010e69909ae70a9d5c450120c @@ -0,0 +1 @@ +- \ No newline at end of file diff --git a/data/fuzz/replace/b849015605174c4e858690fb696964be52fdc429 b/data/fuzz/replace/b849015605174c4e858690fb696964be52fdc429 new file mode 100644 index 0000000000000000000000000000000000000000..ede52e5b266b302bce5a524a6264a18ca63f3c40 GIT binary patch literal 129 hcmZQzzy$1=LS%^4b}%w9)Pezu?tUm>=m$cE1OUK)3Gx5{ literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/b858cb282617fb0956d960215c8e84d1ccf909c6 b/data/fuzz/replace/b858cb282617fb0956d960215c8e84d1ccf909c6 new file mode 100644 index 00000000..0519ecba --- /dev/null +++ b/data/fuzz/replace/b858cb282617fb0956d960215c8e84d1ccf909c6 @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/fuzz/replace/b88df911ab6298f339cb3a5c9485d6688680a6a7 b/data/fuzz/replace/b88df911ab6298f339cb3a5c9485d6688680a6a7 new file mode 100644 index 0000000000000000000000000000000000000000..28c3a1392864b04784c692e967c1029aa60441a0 GIT binary patch literal 358 zcmaFy;suw4(G)HQAV`6M|1gjzVI+Yh1r*l(|343;mI11S6U^~pFaXhqAowvzmVpgS z&3pg<|CjoH7+_!!25SJR_)-sIg6w2W`7a9;fT{h~-wOo)85lMsFvvSX)N_k7g82;p zfd*oA1Bw$E7=X%w0IyRZvLIV=tBrPy27;X+0s_EF)j@2qOms8@gCh`2K%EZ{F|ax= LMFxf!42j$T7Xpn@ literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/b97c5032e9b451dab4f9229321eb66e1103ed281 b/data/fuzz/replace/b97c5032e9b451dab4f9229321eb66e1103ed281 new file mode 100644 index 0000000000000000000000000000000000000000..4895dc1f5e8796fd253ddf46a96732b5db9bd065 GIT binary patch literal 250 zcmZQzh>iv#IACCqVqjpD0tzAkP!d@QTy1o8up0Y5K`PPE^+zGDblYwaun6xp^~- zHNk2gDT*Recu@Ma7>TrAkgeWJ4GD2!PoVWI#qnN7M;YXbRp$1xr;u#yEid-lwy{3) z<_zoy5~PX(=ZNY;N-V32h;tl~tSyccPd+4pF*jWP)kY=zaU9R!f}~aeNctlkrJFF_I$c4-!#IpbVjrOrWb- z!JIC8bDHNXis!VRv?~Px{~@m6`fzh6B`$c5kq6epU<+{;+*oHHr59`L%eKClYd_aj zYN2RUT{~6mo+r97oANv9-n;SH;r*@$(@o;ynGS`ERjDC9Y6jO$NRmZgZ3E_6;k7s0H;L}xLV9-8%*y{iP HqxFXY9`6mi literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/bea99bad6644a572ae2b88e85b633be893f40161 b/data/fuzz/replace/bea99bad6644a572ae2b88e85b633be893f40161 new file mode 100644 index 0000000000000000000000000000000000000000..9f461d971823153811168ed20da6eb631cbf4eb7 GIT binary patch literal 122 zcmeD0XJFuBU}S)Sekfq*2TB0JR3MH9127jv=t5W!Q4kpjXTsG08LGF{wr$(S1vCf@ Q7=RoI@bUc5kno=Y07B;>N&o-= literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/bf8b4530d8d246dd74ac53a13471bba17941dff7 b/data/fuzz/replace/bf8b4530d8d246dd74ac53a13471bba17941dff7 new file mode 100644 index 00000000..6b2aaa76 --- /dev/null +++ b/data/fuzz/replace/bf8b4530d8d246dd74ac53a13471bba17941dff7 @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/fuzz/replace/bf94a8942d41166d7a918cfd4a2bea3a8e558acc b/data/fuzz/replace/bf94a8942d41166d7a918cfd4a2bea3a8e558acc new file mode 100644 index 0000000000000000000000000000000000000000..26743e28aab3c31c4a9c45457524f088408acd00 GIT binary patch literal 122 gcmZQzpb}UNG$%S5OhkhK!!|g8*w7CLAbx@t0H7HW6951J literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/c032adc1ff629c9b66f22749ad667e6beadf144b b/data/fuzz/replace/c032adc1ff629c9b66f22749ad667e6beadf144b new file mode 100644 index 00000000..500c0709 --- /dev/null +++ b/data/fuzz/replace/c032adc1ff629c9b66f22749ad667e6beadf144b @@ -0,0 +1 @@ +X \ No newline at end of file diff --git a/data/fuzz/replace/c314f8c1fa13e1afa11c8716c7bce6dbf02d09aa b/data/fuzz/replace/c314f8c1fa13e1afa11c8716c7bce6dbf02d09aa new file mode 100644 index 00000000..2b8e128b --- /dev/null +++ b/data/fuzz/replace/c314f8c1fa13e1afa11c8716c7bce6dbf02d09aa @@ -0,0 +1 @@ +Ñ \ No newline at end of file diff --git a/data/fuzz/replace/c36485e4e83e34ad1c2614969ee8941079a9b96b b/data/fuzz/replace/c36485e4e83e34ad1c2614969ee8941079a9b96b new file mode 100644 index 0000000000000000000000000000000000000000..bce857e3450fabbdd4e221bed292b93ebad809af GIT binary patch literal 82 zcmZ3n0s{X2&yZnYU|6wn#ozz`|1$#dzyCl!7?c75(|)i#h@a8(|22^M50du;2>`(! K28O>776SkX@EooH literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/c395a8749d8344707f39fe21b8d8ee305f650a16 b/data/fuzz/replace/c395a8749d8344707f39fe21b8d8ee305f650a16 new file mode 100644 index 0000000000000000000000000000000000000000..2534f8ce8540ecc2a2810e92b92defb6470165f3 GIT binary patch literal 34 dcmeD0@9&plfPw%2|1->+HxI=9|DP2i3IMTd2{8Zw literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/c3f21e3cce0dda1f9fdc3312d4a9498085348195 b/data/fuzz/replace/c3f21e3cce0dda1f9fdc3312d4a9498085348195 new file mode 100644 index 0000000000000000000000000000000000000000..7a2dbc86903aff2f0efc82074c98f93268eb6db0 GIT binary patch literal 522 QcmZQz7zLvt01SZy00L?NVE_OC literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/c425a8fdb02518ae33c3a8443649a2d1c23a6998 b/data/fuzz/replace/c425a8fdb02518ae33c3a8443649a2d1c23a6998 new file mode 100644 index 0000000000000000000000000000000000000000..def0a884997bcc53f52136af5dc25d82c83e7245 GIT binary patch literal 74 zcmZQzVCet<{yzlF08$JLTn-Ey5*UEs9*8#|CZ&j?IPvENP zJYrnwF?nbjWHk*dB|S_j7mMx3c-|6XiyQS~-xhnlMb@@B#dQp2=*K#4BxO0%bb=)( z{_Hq?AiMlm{2ER;jBT}x1zkk9^Ww`wvP3A$FqiLFc^SE$wi5TxG&dvYKn2=xW%~86fI`Zr4QHzjzY7s z^cFu?S=9FCNojtlN7IEXZZI5NO~7yAXyZSk&QojhIAs zXPg`EjcCoiE>=ei8{$-|tU`w8`|Ns*)1csX0CBs!?WeQLXW7T`i83IPj%xpFk=b+p zFvf4FJ;tR?Zz*?krcO(9RcvnLS2fc|;J?2l8H6=`@G@9@waGjSSI1_(nY^A!R!Dh0 XGtD4Z&7kt+f*@5rgXfzo8j$u6P9!kQ literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/c5a56270c673ae22b41bf94d625daa90388c127e b/data/fuzz/replace/c5a56270c673ae22b41bf94d625daa90388c127e new file mode 100644 index 0000000000000000000000000000000000000000..6915d3705f10767405d68ec3c28b9057c4d8250b GIT binary patch literal 26 XcmZQzU|`s~bt{mB14ahM89)vIFA)N| literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/c62d980ee57c3707d3eb51912138646787174c5d b/data/fuzz/replace/c62d980ee57c3707d3eb51912138646787174c5d new file mode 100644 index 0000000000000000000000000000000000000000..91fb9d47343b2f4e8c3299a6444140ebc67725d1 GIT binary patch literal 114 ecmZQzpcaUR0ETT405w*Zp&t$ywlOdyXaN8;!w!1@ literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/c6c1b4ca3f1094a011684a81a09a7955e91e30e3 b/data/fuzz/replace/c6c1b4ca3f1094a011684a81a09a7955e91e30e3 new file mode 100644 index 0000000000000000000000000000000000000000..69b433a1bed1d078af00287b22f91846502486f9 GIT binary patch literal 74 ncmeD0hX4jJU}1#NKoTkrq@YZ=3>%0_2zCN7P?^SmtN#!w38)GvWdO7nYpQ^?+8-D#SqKzUxX3jR2dh~pMim)iP4hb|NsC0{&Q*oc?=--Uj_z7hE+g9gCQd$qlsZVD#$2B047VI hA^-m~?$5}W(F;@z0*nj>3=AqgU;s4~Y_cl^005PmFN^>H literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/ca3e49ab8b234f636c1dfaec06a6b07bdef56590 b/data/fuzz/replace/ca3e49ab8b234f636c1dfaec06a6b07bdef56590 new file mode 100644 index 0000000000000000000000000000000000000000..1485ec46ff61049e0b0c92161166ad9aea61100e GIT binary patch literal 34 acmZQzh=zke5Q||O1S|tmYqxFN!Tz>% literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/d14fd5e026399bf28fec49eb4468fe0c2d36b760 b/data/fuzz/replace/d14fd5e026399bf28fec49eb4468fe0c2d36b760 new file mode 100644 index 00000000..39672d7f --- /dev/null +++ b/data/fuzz/replace/d14fd5e026399bf28fec49eb4468fe0c2d36b760 @@ -0,0 +1 @@ +ä¸ \ No newline at end of file diff --git a/data/fuzz/replace/d15b9da5296c0e144a7fc1fb1770216630ca8507 b/data/fuzz/replace/d15b9da5296c0e144a7fc1fb1770216630ca8507 new file mode 100644 index 0000000000000000000000000000000000000000..28fab894fdd22db045635e21a40e1d668eaa996a GIT binary patch literal 1048 bcmZRqVqnP3%=|wJMnhmU1V(HK7^4FKQw;%D literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/d1b5dea1e0e6bf3711c78da56b83bcd8a4f71201 b/data/fuzz/replace/d1b5dea1e0e6bf3711c78da56b83bcd8a4f71201 new file mode 100644 index 00000000..b29df2c8 --- /dev/null +++ b/data/fuzz/replace/d1b5dea1e0e6bf3711c78da56b83bcd8a4f71201 @@ -0,0 +1 @@ +øg \ No newline at end of file diff --git a/data/fuzz/replace/d24f3db0ff0936e95a1c54e6c45973859837ff2a b/data/fuzz/replace/d24f3db0ff0936e95a1c54e6c45973859837ff2a new file mode 100644 index 0000000000000000000000000000000000000000..0f5ad497cddad64d80d50c0e6b05267f4ca3bdde GIT binary patch literal 75 qcma!!W{8FW1`vZmm;p$`gg_ENK3IaG4h;VP2MK_|HY5NP=mY=>8 S&7L8{y-S%(`{4j&P67Z9e-AJK literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/d3f10d833b42d485ae9d679a7d4e89b02a6e395d b/data/fuzz/replace/d3f10d833b42d485ae9d679a7d4e89b02a6e395d new file mode 100644 index 0000000000000000000000000000000000000000..f6fedba5902b8592873ad57a50dc98497e76df10 GIT binary patch literal 42 ccmZQzh=u@02G&Lf5ZHzc82A}j!J-Td024k8R{#J2 literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/d40c092ddab89b9d3f48694d609d20ddeecf6cbb b/data/fuzz/replace/d40c092ddab89b9d3f48694d609d20ddeecf6cbb new file mode 100644 index 0000000000000000000000000000000000000000..c5ae8c3b2491e8a84510a75eebe8be0610ba7317 GIT binary patch literal 26 VcmZQzU|`s~bt{lWfdBF!HUKj^13mx% literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/d4748037a1c586e996e0160a85182dab672726b5 b/data/fuzz/replace/d4748037a1c586e996e0160a85182dab672726b5 new file mode 100644 index 0000000000000000000000000000000000000000..16dc0b1d3cde67ad118cb1b738cac5f6c61fb180 GIT binary patch literal 258 zcmdON_zwgnjF$iZGyMP02qYO8`2PR<4@8_Azd$^o^j`*7S62o`AcwIU1gwGh|Nm+Y zhK!7q?Fayr2LX^eYlfa4sL7@nCWBQ$2%sfk22M-F5Fa2?PK!!)`C21X!1gh5T132kS*i~;0jus2nq3{U>OTr%0?;ZkkV{JLE!?qKz6lx0EA9)llt-k zh|(!j@(R>$=_z93;oH60wSDIw$r4|&yEi+3`_0TX)3nQ!;}J6tRg0OJ6;`4;e_)<- zwc!r4L|%I5fqibi`(S$$WQ> zi!0~%vs-8!$xpwfm`BvHR7mpEcXUGoU*UItJ;^C`)pJAJMRf4_a*59kMVsY@i*-%W zN?an<$I$|jD9bYUT_j~+&UdFBqld$qw9CD=GwpL%1R%`N=~)h$;Q!q!PcT$7@L6gV zmsGh`2s5%WuUktonM}04NLs?!Am69$7yc(0euh1WA)r6-4Lr5^{1*xgUmpJeW0?Ty literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/e447bf6ef2b3387e23d16e891293132919de80b4 b/data/fuzz/replace/e447bf6ef2b3387e23d16e891293132919de80b4 new file mode 100644 index 0000000000000000000000000000000000000000..1088a367f5efc6cdc126ab5471dff3f8b94978b6 GIT binary patch literal 42 ncmZQzU^rU9c=QM(0|SF2gA|Zt0FnttU<$%vVBmVB%f$!)ghB-% literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/e4ac13757b69a1c383e8a280e3de90b0578f145a b/data/fuzz/replace/e4ac13757b69a1c383e8a280e3de90b0578f145a new file mode 100644 index 0000000000000000000000000000000000000000..6e75cd364f5b29222d8300cdbd73bd72bfa8dbe6 GIT binary patch literal 82 scmZQzzySSVfFcYM>HGhmfq@Gw%mgNXGyeZSZ{EE9|9^nE|Dk{Z07JPKu>b%7 literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/e662b9902fb4f30ec68b2d2a511666743227c495 b/data/fuzz/replace/e662b9902fb4f30ec68b2d2a511666743227c495 new file mode 100644 index 0000000000000000000000000000000000000000..2bfcd8b2b7c2753c0e06a7711d1e68c32fb2725d GIT binary patch literal 74 zcmZRM{Lje1!0`Wnb@l%q5R0L||Nr~{U;ySaFo=LefdYRSTwPrm7=WUT)w;Dusu>im O{{K&5_z#w5U;qF^e;VQd literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/e7064f0b80f61dbc65915311032d27baa569ae2a b/data/fuzz/replace/e7064f0b80f61dbc65915311032d27baa569ae2a new file mode 100644 index 00000000..e8a0f876 --- /dev/null +++ b/data/fuzz/replace/e7064f0b80f61dbc65915311032d27baa569ae2a @@ -0,0 +1 @@ +) \ No newline at end of file diff --git a/data/fuzz/replace/e848cdc157c62cd7d4d58214e7780fe7c73714c4 b/data/fuzz/replace/e848cdc157c62cd7d4d58214e7780fe7c73714c4 new file mode 100644 index 0000000000000000000000000000000000000000..909f185e67dc127eb4ca5d39f0139c6e515b6f8d GIT binary patch literal 1677 zcmb_cu}%U(5S=v|1BHd9Xb;*LHPH(aHSxk1SQ!(`D-4B!#^VDlF49<7;SX4QrN3cK zYpsQejBjRl;W$wsGThBFd$Y4MZ+9NEND$O(bx6RKW1YwDF9sJ0IHk0~NQdB^=>W;gB-07FCbd&R^emY_uH0YaijSogkA)CUtN%ep~f z6F_X2w!P~HmZ=C9Hfs+gf_QO0c2hCJ@ZDIn&OBQGK8aZ{8#&F1nANiPVjl1vI6&;s ztL~hOoT$c#Y5b)R91CO literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/e9ee43e2da47ac1083771e9578e36bc19068123b b/data/fuzz/replace/e9ee43e2da47ac1083771e9578e36bc19068123b new file mode 100644 index 0000000000000000000000000000000000000000..195f54a53377b5f8c1f62cf354297a02e318b3d8 GIT binary patch literal 75 zcmZ3nV#Nxb6)XP#X8^HkBC$$wJpuEQX}UFn&L!g4Gtm)xfo-wp2!~F z`|}9drD~HxcxfqSrZKt~HB_2Uxd~7M=7kW8?qVhK3GTVN1e#{nsKO$It5B3p93wBY z&8_pNA-BPtsn?7?i$w{a#aKzopIo-1epb zG8UsgoYo$%T60~x@_!{d_`nvAI{JS=c_^D*A5bQ#dO;e_81GMjlI9--=RXeWT_@G- YBhl_E9HH2iDD&6p8_lnqVI;l(0z3{C)Bpeg literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/eebd8e0976a59117a707e3a062825e2efd5d57f4 b/data/fuzz/replace/eebd8e0976a59117a707e3a062825e2efd5d57f4 new file mode 100644 index 0000000000000000000000000000000000000000..df57bda3293044aa3ef5b74199f03901693e347c GIT binary patch literal 42 scmey#AYR7s|9^r20|S=>!-fO~Ah`GcKLf-3_y7L`MU1$`85zLh06BLJW&i*H literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/ef54ee157fa3074d78000bf9fe4421e37ceaa2be b/data/fuzz/replace/ef54ee157fa3074d78000bf9fe4421e37ceaa2be new file mode 100644 index 0000000000000000000000000000000000000000..96b9b43a8ced3737462263717c0eb52ba365a6da GIT binary patch literal 1634 zcmdT^y-veG4E9x^iVh5n^aWbjfF%kQR3hp_L`WS^LaG?b!tnqMk+Lu_l^0;|$ZIfn zWoJO5=Cdzpl2R%P2*j7hseQil&)H@c1VOLU0|IUztDsB>0RKu+6p;aAoO2-_=Qz1e zAZ-HCxPa^+*CK0o$23s+kFK#4YaI)$-~mTKak-!VrkzF;jC zY|oTr+h{ZrzMctHBNYbj1`GVX2PUC}=T%ct#w%PV5|-6@qDJya`j-rLsysIVI0SocmaR5Z2Zi1 z!p8*|nn0z0RVwAUwK5_2Zo1FTwQj5FmbyjZYQ@g#7NIW-{Hhsb{`t=&+|$H&mBw)w zV!4NB-=I4btP AegFUf literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/efa42c6ae0259c758097eb060a4b112abc9621ee b/data/fuzz/replace/efa42c6ae0259c758097eb060a4b112abc9621ee new file mode 100644 index 0000000000000000000000000000000000000000..242f7fee2fa5bad6a73417ec4bb377662cb40a1b GIT binary patch literal 146 tcmZQz0E1`{86C|4p&??#lhFv^2xbC}0s)8#AQng%#DlRxGz_5G0{|$w6Po}4 literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/efdd02477ba5da245453eb10fbf017c58578aac3 b/data/fuzz/replace/efdd02477ba5da245453eb10fbf017c58578aac3 new file mode 100644 index 00000000..3aa30940 --- /dev/null +++ b/data/fuzz/replace/efdd02477ba5da245453eb10fbf017c58578aac3 @@ -0,0 +1 @@ +Åïìï- \ No newline at end of file diff --git a/data/fuzz/replace/efe43def97eb295fe99c3753f2d740d7b36df689 b/data/fuzz/replace/efe43def97eb295fe99c3753f2d740d7b36df689 new file mode 100644 index 00000000..04f7b5be --- /dev/null +++ b/data/fuzz/replace/efe43def97eb295fe99c3753f2d740d7b36df689 @@ -0,0 +1 @@ +ð \ No newline at end of file diff --git a/data/fuzz/replace/f03cf81f2735705fa986bff3966da3bb3ab50086 b/data/fuzz/replace/f03cf81f2735705fa986bff3966da3bb3ab50086 new file mode 100644 index 00000000..8c230c92 --- /dev/null +++ b/data/fuzz/replace/f03cf81f2735705fa986bff3966da3bb3ab50086 @@ -0,0 +1 @@ +~––––––––––––––––ž–––O––y^ \ No newline at end of file diff --git a/data/fuzz/replace/f05ce45a8cad76bdc70bfa22822ee25b5512a1a1 b/data/fuzz/replace/f05ce45a8cad76bdc70bfa22822ee25b5512a1a1 new file mode 100644 index 0000000000000000000000000000000000000000..f8b4331e41813f7086825c3e9e17e26f42a7bb11 GIT binary patch literal 73 zcmd;J0D%fYFvY;||NsBLj6i~s5hU=R1qk#(#G^(YhV9Pw+d;quq86m$KUC3w1`hzE C#uBRl literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/f4a61a9b343b5887db9c7f6abe125c53b6d04f30 b/data/fuzz/replace/f4a61a9b343b5887db9c7f6abe125c53b6d04f30 new file mode 100644 index 0000000000000000000000000000000000000000..d51d6f4fbab8bbc41e291491ab7601d00d305860 GIT binary patch literal 9 QcmdSH literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/f75b1bbb2b08943c29d686f3d65c4f70dfd6fee2 b/data/fuzz/replace/f75b1bbb2b08943c29d686f3d65c4f70dfd6fee2 new file mode 100644 index 0000000000000000000000000000000000000000..6d0e1fef95c0f6f96b25eccf7bb46939aeb36700 GIT binary patch literal 86 zcmZRGj%EOXXdn$lH{(GJ5Dx?#f%yM_A+Q24u?+%1!Z2yA|MiRv26bTYA0!P_coG0# CBb5S=9$g%Ao0L%hZkLo75qH8=Zq_U$`nf$z5(Ex_mfQxkAI0gCh7S(ONu>Xk|BN<>rskI9I)0Z?E_T{=pbrV|moPUb^Zsh;~ literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/fbd27dbd2d03d4a96066f0bade47b73b5350e035 b/data/fuzz/replace/fbd27dbd2d03d4a96066f0bade47b73b5350e035 new file mode 100644 index 0000000000000000000000000000000000000000..ae321153f178a143b22f8cd599c6e7ba45aaca2c GIT binary patch literal 42 icmexq0tEm6GXMc2LxKPU1D6Ac4Pi1eFwXc71q=Y+#0`%C literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/fd45e8d6614e80a12a7a83095fa651b5951517ef b/data/fuzz/replace/fd45e8d6614e80a12a7a83095fa651b5951517ef new file mode 100644 index 0000000000000000000000000000000000000000..54bbe9a32c026e13f18ba13cc8966d247c7d88ab GIT binary patch literal 25 Xcmb>9Qc<&KfC4phduAZh9tbo6BU1v_ literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/fe0fbcee48108789770892b76def3db7402e8f2c b/data/fuzz/replace/fe0fbcee48108789770892b76def3db7402e8f2c new file mode 100644 index 0000000000000000000000000000000000000000..55151ecbd75485c1c5a2a1b0d25a87cddadd3eed GIT binary patch literal 26 fcmaF#|NH;%*8h+GVPIhR{r@)z{|7SvGcW@H_hApU literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/feb99e5638964a3cbf021401c8aeb40c1a950c75 b/data/fuzz/replace/feb99e5638964a3cbf021401c8aeb40c1a950c75 new file mode 100644 index 0000000000000000000000000000000000000000..985947cb5abf867f9358770ea3d327113bef1fc3 GIT binary patch literal 682 zcmb`Fze>bF5XQe89)~GJ#mdS`?jAu7;SkdK5D_f4+Ah_Cop41Ujdgs1^eKIft8Fc8 zto(E1H?tcA@6^U0WRjhk{k}~megf|gAY_3zy^+QMvtEN`Kr#&pYdIcPJACN64v%a) zN8H~uOy2Xl6KS7CUQ8*8vjtk0sG1Mj?C~gNT#A(YK)#SMR`mVdU@-hiQ;n2N=!d=6 zK;~gBvXHsp|__|I`{pS+dw6#xJL literal 0 HcmV?d00001 diff --git a/data/fuzz/replace/fff0fbe7e0c2939a42e1e1d448ac57101c7c9b2d b/data/fuzz/replace/fff0fbe7e0c2939a42e1e1d448ac57101c7c9b2d new file mode 100644 index 0000000000000000000000000000000000000000..23d12b21408d10254e4190b14147f8599e2f72a0 GIT binary patch literal 59 tcmZ=}V31 max_size()) { + throw std::out_of_range("ankerl::unordered_dense::map::replace(): too many elements"); + } + + auto shifts = calc_shifts_for_size(container.size()); + if (0 == m_num_buckets || shifts < m_shifts) { + m_shifts = shifts; + deallocate_buckets(); + allocate_buckets_from_shift(); + } + clear_buckets(); + + m_values = std::move(container); + + // can't use clear_and_fill_buckets_from_values() because container elements might not be unique + auto value_idx = value_idx_type{}; + + // loop until we reach the end of the container. duplicated entries will be replaced with back(). + while (value_idx != static_cast(m_values.size())) { + auto const& key = get_key(m_values[value_idx]); + + auto hash = mixed_hash(key); + auto dist_and_fingerprint = dist_and_fingerprint_from_hash(hash); + auto bucket_idx = bucket_idx_from_hash(hash); + + bool key_found = false; + while (true) { + auto const& bucket = at(m_buckets, bucket_idx); + if (dist_and_fingerprint > bucket.dist_and_fingerprint) { + break; + } + if (dist_and_fingerprint == bucket.dist_and_fingerprint && m_equal(key, m_values[bucket.value_idx].first)) { + key_found = true; + break; + } + dist_and_fingerprint = dist_inc(dist_and_fingerprint); + bucket_idx = next(bucket_idx); + } + + if (key_found) { + if (value_idx != static_cast(m_values.size() - 1)) { + m_values[value_idx] = std::move(m_values.back()); + } + m_values.pop_back(); + } else { + place_and_shift_up({dist_and_fingerprint, value_idx}, bucket_idx); + ++value_idx; + } + } + } + template , bool> = true> auto insert_or_assign(Key const& key, M&& mapped) -> std::pair { return do_insert_or_assign(key, std::forward(mapped)); @@ -1191,7 +1244,7 @@ class table { capa = std::min(capa, max_size()); m_values.reserve(capa); auto shifts = calc_shifts_for_size(std::max(capa, size())); - if (shifts < m_shifts) { + if (0 == m_num_buckets || shifts < m_shifts) { m_shifts = shifts; deallocate_buckets(); allocate_buckets_from_shift(); diff --git a/scripts/fuzz_run.sh b/scripts/fuzz_run.sh index ae754b99..223c8525 100755 --- a/scripts/fuzz_run.sh +++ b/scripts/fuzz_run.sh @@ -2,7 +2,11 @@ set -ev # Start from a build directory, usually clang_cpp17_release -# usage: fuzz_run.sh +# ../../scripts/fuzz_run.sh +# +# Found a crash? Minimize it like so: +# ./test/fuzz_replace -minimize_crash=1 ./crash-123abcdef + FUZZ_TARGET=$1 SCRIPT_DIR=`dirname "$0"` CORPUS_SMALL=${SCRIPT_DIR}/../data/fuzz/${FUZZ_TARGET} diff --git a/test/fuzz/replace.cpp b/test/fuzz/replace.cpp new file mode 100644 index 00000000..a0d90768 --- /dev/null +++ b/test/fuzz/replace.cpp @@ -0,0 +1,73 @@ +#include +#include +#include + +#if defined(FUZZ) +# define REQUIRE(x) ::fuzz::Provider::require(x) +#else +# include +#endif + +#include + +namespace fuzz { + +void replace(uint8_t const* data, size_t size) { + auto p = fuzz::Provider{data, size}; + + auto counts = Counter{}; + + using Map = ankerl::unordered_dense::map; + + auto initial_size = p.bounded(100); + auto map = ankerl::unordered_dense::map{}; + for (size_t i = 0; i < initial_size; ++i) { + map.try_emplace(Counter::Obj{i, counts}, Counter::Obj{i, counts}); + } + + // create a container with data in it provided by fuzzer + auto container = Map::value_container_type{}; + auto comparison_container = std::vector>(); + auto v = size_t{}; + while (p.has_remaining_bytes()) { + auto key = p.integral(); + container.emplace_back(Counter::Obj{key, counts}, Counter::Obj{v, counts}); + comparison_container.emplace_back(key, v); + ++v; + } + + // create comparison map with the same move-back-forward algorithm + auto comparison_map = std::unordered_map{}; + size_t idx = 0; + while (idx != comparison_container.size()) { + auto [key, val] = comparison_container[idx]; + if (comparison_map.try_emplace(key, val).second) { + ++idx; + } else { + comparison_container[idx] = comparison_container.back(); + comparison_container.pop_back(); + } + } + + map.replace(std::move(container)); + + // now check if the data in the map is exactly what we expect + REQUIRE(map.size() == comparison_map.size()); + for (auto [key, val] : comparison_map) { + auto key_obj = Counter::Obj{key, counts}; + auto val_obj = Counter::Obj{val, counts}; + auto it = map.find(key_obj); + REQUIRE(it != map.end()); + REQUIRE(it->first == key_obj); + REQUIRE(it->second == val_obj); + } +} + +} // namespace fuzz + +#if defined(FUZZ) +extern "C" auto LLVMFuzzerTestOneInput(uint8_t const* data, size_t size) -> int { + fuzz::replace(data, size); + return 0; +} +#endif \ No newline at end of file diff --git a/test/fuzz/replace.h b/test/fuzz/replace.h new file mode 100644 index 00000000..be3a13b4 --- /dev/null +++ b/test/fuzz/replace.h @@ -0,0 +1,10 @@ +#pragma once + +#include +#include + +namespace fuzz { + +void replace(uint8_t const* data, size_t size); + +} // namespace fuzz diff --git a/test/meson.build b/test/meson.build index 6e4edd7e..43a7d9c8 100644 --- a/test/meson.build +++ b/test/meson.build @@ -14,6 +14,7 @@ test_sources = [ 'fuzz/api.cpp', 'fuzz/insert_erase.cpp', + 'fuzz/replace.cpp', 'fuzz/string.cpp', 'unit/assign_to_move.cpp', @@ -57,6 +58,7 @@ test_sources = [ 'unit/not_moveable.cpp', 'unit/pmr.cpp', 'unit/rehash.cpp', + 'unit/replace.cpp', 'unit/reserve_and_assign.cpp', 'unit/reserve.cpp', 'unit/set.cpp', @@ -186,6 +188,14 @@ if compiler.get_id() == 'clang' link_args: fuzz_link_args, dependencies: fuzz_deps, ) + executable( + 'fuzz_replace', + fuzz_sources + ['fuzz/replace.cpp'], + include_directories: incdir, + cpp_args : fuzz_cpp_args, + link_args: fuzz_link_args, + dependencies: fuzz_deps, + ) executable( 'fuzz_insert_erase', fuzz_sources + ['fuzz/insert_erase.cpp'], diff --git a/test/unit/fuzz_corpus.cpp b/test/unit/fuzz_corpus.cpp index 5124b285..ecf85565 100644 --- a/test/unit/fuzz_corpus.cpp +++ b/test/unit/fuzz_corpus.cpp @@ -3,6 +3,7 @@ #include // for api #include // for insert_erase +#include // for replace #include // for string #include // for TestCase, MessageBuilder, skip, INFO @@ -59,7 +60,7 @@ void run_corpus(std::string_view name, Op op) { for (auto const& dir_entry : std::filesystem::directory_iterator(path)) { ++num_files; if (periodic) { - fmt::print("\r|{}| {:7}/{} ", progressbar(num_files), num_files, total_files); + fmt::print("\r|{}| {:7}/{:<7} ", progressbar(num_files), num_files, total_files); } auto const& test_file = dir_entry.path(); @@ -71,7 +72,7 @@ void run_corpus(std::string_view name, Op op) { op(reinterpret_cast(content.data()), content.size()); } REQUIRE(0U != num_files); - fmt::print("\r|{}| {:7}/{} {}\n", progressbar(num_files), num_files, total_files, path.string()); + fmt::print("\r|{}| {:7}/{:<7} {}\n", progressbar(num_files), num_files, total_files, path.string()); } } // namespace @@ -80,10 +81,14 @@ TEST_CASE("fuzz_api" * doctest::test_suite("fuzz") * doctest::skip(true)) { run_corpus("api", fuzz::api); } +TEST_CASE("fuzz_replace" * doctest::test_suite("fuzz") * doctest::skip(true)) { + run_corpus("replace", fuzz::replace); +} + TEST_CASE("fuzz_insert_erase" * doctest::test_suite("fuzz") * doctest::skip(true)) { run_corpus("insert_erase", fuzz::insert_erase); } TEST_CASE("fuzz_string" * doctest::test_suite("fuzz") * doctest::skip(true)) { run_corpus("string", fuzz::string); -} \ No newline at end of file +} diff --git a/test/unit/replace.cpp b/test/unit/replace.cpp new file mode 100644 index 00000000..7b8259a1 --- /dev/null +++ b/test/unit/replace.cpp @@ -0,0 +1,35 @@ +#include + +#include + +#include + +TEST_CASE("replace") { + auto counts = Counter{}; + INFO(counts); + + using Map = ankerl::unordered_dense::map; + auto container = Map::value_container_type{}; + + for (size_t i = 0; i < 100; ++i) { + container.emplace_back(Counter::Obj{i, counts}, Counter::Obj{i, counts}); + container.emplace_back(Counter::Obj{i, counts}, Counter::Obj{i, counts}); + } + + for (size_t i = 0; i < 10; ++i) { + container.emplace_back(Counter::Obj{i, counts}, Counter::Obj{i, counts}); + } + + // add some elements + auto map = Map(); + for (size_t i = 0; i < 10; ++i) { + map.try_emplace(Counter::Obj{i, counts}, Counter::Obj{i, counts}); + } + + map.replace(std::move(container)); + + REQUIRE(map.size() == 100U); + for (size_t i = 0; i < 100; ++i) { + REQUIRE(map.contains(Counter::Obj{i, counts})); + } +} From 151bc57011608111a78009d1c785f6797f85bc14 Mon Sep 17 00:00:00 2001 From: Martin Leitner-Ankerl Date: Wed, 24 Aug 2022 07:49:06 +0200 Subject: [PATCH 3/5] Add clear() when a container is given in the ctor Bug fix: when the map/set is constructed with a container, make sure to clear() it. We just want the type, but not any data in it. --- include/ankerl/unordered_dense.h | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/include/ankerl/unordered_dense.h b/include/ankerl/unordered_dense.h index 5ac14970..b1a97332 100644 --- a/include/ankerl/unordered_dense.h +++ b/include/ankerl/unordered_dense.h @@ -719,7 +719,10 @@ class table { AllocatorOrContainer const& alloc_or_container = AllocatorOrContainer()) : m_values(alloc_or_container) , m_hash(hash) - , m_equal(equal) {} + , m_equal(equal) { + // If alloc_or_container is a container with elements, we don't want the data that was in it + m_values.clear(); + } table(size_t bucket_count, AllocatorOrContainer const& alloc_or_container) : table(bucket_count, Hash(), KeyEqual(), alloc_or_container) {} @@ -942,7 +945,7 @@ class table { } auto shifts = calc_shifts_for_size(container.size()); - if (0 == m_num_buckets || shifts < m_shifts) { + if (0 == m_num_buckets || shifts < m_shifts || container.get_allocator() != m_values.get_allocator()) { m_shifts = shifts; deallocate_buckets(); allocate_buckets_from_shift(); From c00233c8f120892b5701c201d0968c61929df1e8 Mon Sep 17 00:00:00 2001 From: Martin Leitner-Ankerl Date: Tue, 16 Aug 2022 07:57:11 +0200 Subject: [PATCH 4/5] Updated README.md Now with description for * cmake usage * the new container API * Custom container types * bucket API --- README.md | 109 +++++++++++++++++++++++++++---- include/ankerl/unordered_dense.h | 3 +- 2 files changed, 100 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 3ad457c9..6fdfec55 100644 --- a/README.md +++ b/README.md @@ -6,33 +6,120 @@ [![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/6220/badge)](https://bestpractices.coreinfrastructure.org/projects/6220) [![Sponsors](https://img.shields.io/github/sponsors/martinus?style=social)](https://github.com/sponsors/martinus) -# 🚀 ankerl::unordered_dense::{map, set} +# 🚀 ankerl::unordered_dense::{map, set} A fast & densely stored hashmap and hashset based on robin-hood backward shift deletion. -The classes `ankerl::unordered_dense::map` and `ankerl::unordered_dense::set` are (almost) drop-in replacements of `std::unordered_map` and `std::unordered_set`. -While they don't have as strong iterator / reference stability guaranties, they are typically *much* faster. Here is a short summary of the properties: +The classes `ankerl::unordered_dense::map` and `ankerl::unordered_dense::set` are (almost) drop-in replacements of `std::unordered_map` and `std::unordered_set`. While they don't have as strong iterator / reference stability guaranties, they are typically *much* faster. + +- [1. Overview](#1-overview) +- [2. Installation](#2-installation) + - [2.1. Installing using cmake](#21-installing-using-cmake) +- [3. Extensions](#3-extensions) + - [3.1. Container API](#31-container-api) + - [3.1.1. `auto extract() && -> value_container_type`](#311-auto-extract----value_container_type) + - [3.1.2. `[[nodiscard]] auto values() const noexcept -> value_container_type const&`](#312-nodiscard-auto-values-const-noexcept---value_container_type-const) + - [3.1.3. `auto replace(value_container_type&& container)`](#313-auto-replacevalue_container_type-container) + - [3.2. Custom Container Types](#32-custom-container-types) + - [3.3. Custom Bucket Tyeps](#33-custom-bucket-tyeps) + - [3.3.1. `ankerl::unordered_dense::bucket_type::standard`](#331-ankerlunordered_densebucket_typestandard) + - [3.3.2. `ankerl::unordered_dense::bucket_type::big`](#332-ankerlunordered_densebucket_typebig) +- [4. Design](#4-design) + - [4.1. Inserts](#41-inserts) + - [4.2. Lookups](#42-lookups) + - [4.3. Removals](#43-removals) + +## 1. Overview + +The chosen design has a few advantages over `std::unordered_map`: - -## Advantages * Perfect iteration speed - Data is stored in a `std::vector`, all data is contiguous! * Very fast insertion & lookup speed, in the same ballpark as [`absl::flat_hash_map`](https://abseil.io/docs/cpp/guides/container`) * Low memory usage * Full support for `std::allocators`, and [polymorphic allocators](https://en.cppreference.com/w/cpp/memory/polymorphic_allocator). There are `ankerl::unordered_dense::pmr` typedefs available -* Simple: single header with just a bit over 1000 lines of code, this is less than half of [robin-hood-hashing](https://github.com/martinus/robin-hood-hashing) +* Customizeable storage type: with a template parameter you can e.g. switch from `std::vector` to `boost::interprocess::vector` or any other compatible random-access container. + +There's no free lunch, so there are a few disadvantages: -## Disadvantages * Deletion speed is relatively slow. This needs two lookups: one for the element to delete, and one for the element that is moved onto the newly empty spot. * no `const Key` in `std::pair` * Iterators are not stable on insert/erase -## Design + +## 2. Installation + + +The default installation location is `/usr/local`. + +### 2.1. Installing using cmake + +Clone the repository and run these commands in the cloned folder: + +```sh +mkdir build && cd build +cmake .. +cmake --build . --target install +``` + +Consider setting an install prefix if you do not want to install `unordered_dense` system wide, like so: + +```sh +mkdir build && cd build +cmake -DCMAKE_INSTALL_PREFIX:PATH=${HOME}/unordered_dense_install .. +cmake --build . --target install +``` + +To make use of the installed library, add this to your project: + +```cmake +find_package(unordered_dense CONFIG REQUIRED) +target_link_libraries(your_project_name unordered_dense::unordered_dense) +``` + +## 3. Extensions + +### 3.1. Container API + +In addition to the standard `std::unordered_map` API (see https://en.cppreference.com/w/cpp/container/unordered_map) we have additional API leveraging the fact that we're using a random access container internally: + +#### 3.1.1. `auto extract() && -> value_container_type` + +Extracts the internally used container. `*this` is emptied. + +#### 3.1.2. `[[nodiscard]] auto values() const noexcept -> value_container_type const&` + +Exposes the underlying values container. + +#### 3.1.3. `auto replace(value_container_type&& container)` + +Discards the internally held container and replaces it with the one passed. Non-unique elements are +removed, and the container will be partly reordered when non-unique elements are found. + +### 3.2. Custom Container Types + +`unordered_dense` accepts a custom allocator, but you can also specify a custom container for that template argument. That way it is possible to replace the internally used `std::vector` with e.g. `std::deque` or any other container like `boost::interprocess::vector`. This supports fancy pointers (e.g. [offset_ptr](https://www.boost.org/doc/libs/1_80_0/doc/html/interprocess/offset_ptr.html)), so the container can be used with e.g. shared memory provided by `boost::interprocess`. + +### 3.3. Custom Bucket Tyeps + +The map/set supports two different bucket types. The default should be good for pretty much everyone. + +#### 3.3.1. `ankerl::unordered_dense::bucket_type::standard` + +* Up to 2^32 = 4.29 billion elements. +* 8 bytes overhead per bucket. + +#### 3.3.2. `ankerl::unordered_dense::bucket_type::big` + +* up to 2^63 = 9223372036854775808 elements. +* 12 bytes overhead per bucket. + +## 4. Design The map/set has two data structures: * `std::vector` which holds all data. map/set iterators are just `std::vector::iterator`! * An indexing structure (bucket array), which is a flat array with 8-byte buckets. -### Inserts +### 4.1. Inserts Whenever an element is added it is `emplace_back` to the vector. The key is hashed, and an entry (bucket) is added at the corresponding location in the bucket array. The bucket has this structure: @@ -52,12 +139,12 @@ Each bucket stores 3 things: This structure is especially designed for the collision resolution strategy robin-hood hashing with backward shift deletion. -### Lookups +### 4.2. Lookups The key is hashed and the bucket array is searched if it has an entry at that location with that fingerprint. When found, the key in the data vector is compared, and when equal the value is returned. -## Removals +### 4.3. Removals Since all data is stored in a vector, removals are a bit more complicated: diff --git a/include/ankerl/unordered_dense.h b/include/ankerl/unordered_dense.h index b1a97332..772d05a1 100644 --- a/include/ankerl/unordered_dense.h +++ b/include/ankerl/unordered_dense.h @@ -938,7 +938,8 @@ class table { return std::move(m_values); } - // Discards the internally held container and replaces the one passed. Erases non-unique elements. + // nonstandard API: + // Discards the internally held container and replaces it with the one passed. Erases non-unique elements. auto replace(value_container_type&& container) { if (container.size() > max_size()) { throw std::out_of_range("ankerl::unordered_dense::map::replace(): too many elements"); From 5a560be1fcfb67ba0157e76ada26ebda80f0ab57 Mon Sep 17 00:00:00 2001 From: Martin Leitner-Ankerl Date: Wed, 24 Aug 2022 08:21:21 +0200 Subject: [PATCH 5/5] bump version to 1.3.0 --- CMakeLists.txt | 2 +- include/ankerl/unordered_dense.h | 4 ++-- meson.build | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 323202fa..633719bd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 3.12) project("unordered_dense" - VERSION 1.2.0 + VERSION 1.3.0 DESCRIPTION "A fast & densely stored hashmap and hashset based on robin-hood backward shift deletion" HOMEPAGE_URL "https://github.com/martinus/unordered_dense") diff --git a/include/ankerl/unordered_dense.h b/include/ankerl/unordered_dense.h index 772d05a1..aa84ed40 100644 --- a/include/ankerl/unordered_dense.h +++ b/include/ankerl/unordered_dense.h @@ -1,7 +1,7 @@ ///////////////////////// ankerl::unordered_dense::{map, set} ///////////////////////// // A fast & densely stored hashmap and hashset based on robin-hood backward shift deletion. -// Version 1.2.0 +// Version 1.3.0 // https://github.com/martinus/unordered_dense // // Licensed under the MIT License . @@ -31,7 +31,7 @@ // see https://semver.org/spec/v2.0.0.html #define ANKERL_UNORDERED_DENSE_VERSION_MAJOR 1 // incompatible API changes -#define ANKERL_UNORDERED_DENSE_VERSION_MINOR 2 // add functionality in a backwards compatible manner +#define ANKERL_UNORDERED_DENSE_VERSION_MINOR 3 // add functionality in a backwards compatible manner #define ANKERL_UNORDERED_DENSE_VERSION_PATCH 0 // backwards compatible bug fixes #if defined(_MSVC_LANG) diff --git a/meson.build b/meson.build index e178edc2..2f9c1ce0 100644 --- a/meson.build +++ b/meson.build @@ -18,7 +18,7 @@ # project('unordered_dense', 'cpp', - version: '1.2.0', + version: '1.3.0', license: 'MIT', default_options : ['cpp_std=c++17', 'warning_level=3', 'werror=true'])