re2 1.20.0 → 1.20.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1492) hide show
  1. package/.github/actions/linux-alpine-node-16/entrypoint.sh +2 -0
  2. package/.github/actions/linux-alpine-node-18/entrypoint.sh +3 -1
  3. package/.github/actions/linux-alpine-node-20/entrypoint.sh +3 -1
  4. package/.github/actions/linux-node-12/entrypoint.sh +2 -0
  5. package/.github/actions/linux-node-18/entrypoint.sh +3 -1
  6. package/.github/actions/linux-node-20/entrypoint.sh +3 -1
  7. package/README.md +2 -0
  8. package/binding.gyp +1 -0
  9. package/package.json +2 -2
  10. package/vendor/abseil-cpp/.clang-format +4 -0
  11. package/vendor/abseil-cpp/.github/ISSUE_TEMPLATE/00-bug_report.yml +53 -0
  12. package/vendor/abseil-cpp/.github/ISSUE_TEMPLATE/config.yml +5 -0
  13. package/vendor/abseil-cpp/ABSEIL_ISSUE_TEMPLATE.md +22 -0
  14. package/vendor/abseil-cpp/AUTHORS +6 -0
  15. package/vendor/abseil-cpp/BUILD.bazel +25 -0
  16. package/vendor/abseil-cpp/CMake/AbseilDll.cmake +809 -0
  17. package/vendor/abseil-cpp/CMake/AbseilHelpers.cmake +466 -0
  18. package/vendor/abseil-cpp/CMake/Googletest/CMakeLists.txt.in +14 -0
  19. package/vendor/abseil-cpp/CMake/Googletest/DownloadGTest.cmake +41 -0
  20. package/vendor/abseil-cpp/CMake/README.md +188 -0
  21. package/vendor/abseil-cpp/CMake/abslConfig.cmake.in +8 -0
  22. package/vendor/abseil-cpp/CMake/install_test_project/CMakeLists.txt +25 -0
  23. package/vendor/abseil-cpp/CMake/install_test_project/simple.cc +32 -0
  24. package/vendor/abseil-cpp/CMake/install_test_project/test.sh +112 -0
  25. package/vendor/abseil-cpp/CMakeLists.txt +239 -0
  26. package/vendor/abseil-cpp/CONTRIBUTING.md +141 -0
  27. package/vendor/abseil-cpp/FAQ.md +167 -0
  28. package/vendor/abseil-cpp/LICENSE +203 -0
  29. package/vendor/abseil-cpp/README.md +163 -0
  30. package/vendor/abseil-cpp/UPGRADES.md +17 -0
  31. package/vendor/abseil-cpp/WORKSPACE +62 -0
  32. package/vendor/abseil-cpp/absl/BUILD.bazel +125 -0
  33. package/vendor/abseil-cpp/absl/CMakeLists.txt +44 -0
  34. package/vendor/abseil-cpp/absl/abseil.podspec.gen.py +229 -0
  35. package/vendor/abseil-cpp/absl/algorithm/BUILD.bazel +92 -0
  36. package/vendor/abseil-cpp/absl/algorithm/CMakeLists.txt +70 -0
  37. package/vendor/abseil-cpp/absl/algorithm/algorithm.h +159 -0
  38. package/vendor/abseil-cpp/absl/algorithm/algorithm_test.cc +191 -0
  39. package/vendor/abseil-cpp/absl/algorithm/container.h +1773 -0
  40. package/vendor/abseil-cpp/absl/algorithm/container_test.cc +1127 -0
  41. package/vendor/abseil-cpp/absl/algorithm/equal_benchmark.cc +126 -0
  42. package/vendor/abseil-cpp/absl/base/BUILD.bazel +783 -0
  43. package/vendor/abseil-cpp/absl/base/CMakeLists.txt +685 -0
  44. package/vendor/abseil-cpp/absl/base/attributes.h +782 -0
  45. package/vendor/abseil-cpp/absl/base/bit_cast_test.cc +109 -0
  46. package/vendor/abseil-cpp/absl/base/call_once.h +219 -0
  47. package/vendor/abseil-cpp/absl/base/call_once_test.cc +107 -0
  48. package/vendor/abseil-cpp/absl/base/casts.h +180 -0
  49. package/vendor/abseil-cpp/absl/base/config.h +954 -0
  50. package/vendor/abseil-cpp/absl/base/config_test.cc +60 -0
  51. package/vendor/abseil-cpp/absl/base/const_init.h +76 -0
  52. package/vendor/abseil-cpp/absl/base/dynamic_annotations.h +471 -0
  53. package/vendor/abseil-cpp/absl/base/exception_safety_testing_test.cc +959 -0
  54. package/vendor/abseil-cpp/absl/base/inline_variable_test.cc +64 -0
  55. package/vendor/abseil-cpp/absl/base/inline_variable_test_a.cc +27 -0
  56. package/vendor/abseil-cpp/absl/base/inline_variable_test_b.cc +27 -0
  57. package/vendor/abseil-cpp/absl/base/internal/atomic_hook.h +200 -0
  58. package/vendor/abseil-cpp/absl/base/internal/atomic_hook_test.cc +97 -0
  59. package/vendor/abseil-cpp/absl/base/internal/atomic_hook_test_helper.cc +32 -0
  60. package/vendor/abseil-cpp/absl/base/internal/atomic_hook_test_helper.h +34 -0
  61. package/vendor/abseil-cpp/absl/base/internal/cmake_thread_test.cc +22 -0
  62. package/vendor/abseil-cpp/absl/base/internal/cycleclock.cc +77 -0
  63. package/vendor/abseil-cpp/absl/base/internal/cycleclock.h +144 -0
  64. package/vendor/abseil-cpp/absl/base/internal/cycleclock_config.h +55 -0
  65. package/vendor/abseil-cpp/absl/base/internal/direct_mmap.h +170 -0
  66. package/vendor/abseil-cpp/absl/base/internal/dynamic_annotations.h +398 -0
  67. package/vendor/abseil-cpp/absl/base/internal/endian.h +282 -0
  68. package/vendor/abseil-cpp/absl/base/internal/endian_test.cc +263 -0
  69. package/vendor/abseil-cpp/absl/base/internal/errno_saver.h +43 -0
  70. package/vendor/abseil-cpp/absl/base/internal/errno_saver_test.cc +45 -0
  71. package/vendor/abseil-cpp/absl/base/internal/exception_safety_testing.cc +79 -0
  72. package/vendor/abseil-cpp/absl/base/internal/exception_safety_testing.h +1109 -0
  73. package/vendor/abseil-cpp/absl/base/internal/exception_testing.h +42 -0
  74. package/vendor/abseil-cpp/absl/base/internal/fast_type_id.h +50 -0
  75. package/vendor/abseil-cpp/absl/base/internal/fast_type_id_test.cc +123 -0
  76. package/vendor/abseil-cpp/absl/base/internal/hide_ptr.h +51 -0
  77. package/vendor/abseil-cpp/absl/base/internal/identity.h +37 -0
  78. package/vendor/abseil-cpp/absl/base/internal/inline_variable.h +107 -0
  79. package/vendor/abseil-cpp/absl/base/internal/inline_variable_testing.h +46 -0
  80. package/vendor/abseil-cpp/absl/base/internal/invoke.h +241 -0
  81. package/vendor/abseil-cpp/absl/base/internal/low_level_alloc.cc +620 -0
  82. package/vendor/abseil-cpp/absl/base/internal/low_level_alloc.h +126 -0
  83. package/vendor/abseil-cpp/absl/base/internal/low_level_alloc_test.cc +180 -0
  84. package/vendor/abseil-cpp/absl/base/internal/low_level_scheduling.h +134 -0
  85. package/vendor/abseil-cpp/absl/base/internal/per_thread_tls.h +52 -0
  86. package/vendor/abseil-cpp/absl/base/internal/prefetch.h +138 -0
  87. package/vendor/abseil-cpp/absl/base/internal/prefetch_test.cc +43 -0
  88. package/vendor/abseil-cpp/absl/base/internal/pretty_function.h +33 -0
  89. package/vendor/abseil-cpp/absl/base/internal/raw_logging.cc +253 -0
  90. package/vendor/abseil-cpp/absl/base/internal/raw_logging.h +195 -0
  91. package/vendor/abseil-cpp/absl/base/internal/scheduling_mode.h +58 -0
  92. package/vendor/abseil-cpp/absl/base/internal/scoped_set_env.cc +81 -0
  93. package/vendor/abseil-cpp/absl/base/internal/scoped_set_env.h +45 -0
  94. package/vendor/abseil-cpp/absl/base/internal/scoped_set_env_test.cc +99 -0
  95. package/vendor/abseil-cpp/absl/base/internal/spinlock.cc +232 -0
  96. package/vendor/abseil-cpp/absl/base/internal/spinlock.h +252 -0
  97. package/vendor/abseil-cpp/absl/base/internal/spinlock_akaros.inc +35 -0
  98. package/vendor/abseil-cpp/absl/base/internal/spinlock_benchmark.cc +52 -0
  99. package/vendor/abseil-cpp/absl/base/internal/spinlock_linux.inc +71 -0
  100. package/vendor/abseil-cpp/absl/base/internal/spinlock_posix.inc +46 -0
  101. package/vendor/abseil-cpp/absl/base/internal/spinlock_wait.cc +81 -0
  102. package/vendor/abseil-cpp/absl/base/internal/spinlock_wait.h +95 -0
  103. package/vendor/abseil-cpp/absl/base/internal/spinlock_win32.inc +40 -0
  104. package/vendor/abseil-cpp/absl/base/internal/strerror.cc +88 -0
  105. package/vendor/abseil-cpp/absl/base/internal/strerror.h +39 -0
  106. package/vendor/abseil-cpp/absl/base/internal/strerror_benchmark.cc +29 -0
  107. package/vendor/abseil-cpp/absl/base/internal/strerror_test.cc +88 -0
  108. package/vendor/abseil-cpp/absl/base/internal/sysinfo.cc +511 -0
  109. package/vendor/abseil-cpp/absl/base/internal/sysinfo.h +74 -0
  110. package/vendor/abseil-cpp/absl/base/internal/sysinfo_test.cc +88 -0
  111. package/vendor/abseil-cpp/absl/base/internal/thread_annotations.h +280 -0
  112. package/vendor/abseil-cpp/absl/base/internal/thread_identity.cc +156 -0
  113. package/vendor/abseil-cpp/absl/base/internal/thread_identity.h +269 -0
  114. package/vendor/abseil-cpp/absl/base/internal/thread_identity_benchmark.cc +38 -0
  115. package/vendor/abseil-cpp/absl/base/internal/thread_identity_test.cc +129 -0
  116. package/vendor/abseil-cpp/absl/base/internal/throw_delegate.cc +212 -0
  117. package/vendor/abseil-cpp/absl/base/internal/throw_delegate.h +75 -0
  118. package/vendor/abseil-cpp/absl/base/internal/tsan_mutex_interface.h +68 -0
  119. package/vendor/abseil-cpp/absl/base/internal/unaligned_access.h +82 -0
  120. package/vendor/abseil-cpp/absl/base/internal/unique_small_name_test.cc +77 -0
  121. package/vendor/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +153 -0
  122. package/vendor/abseil-cpp/absl/base/internal/unscaledcycleclock.h +96 -0
  123. package/vendor/abseil-cpp/absl/base/internal/unscaledcycleclock_config.h +62 -0
  124. package/vendor/abseil-cpp/absl/base/invoke_test.cc +331 -0
  125. package/vendor/abseil-cpp/absl/base/log_severity.cc +55 -0
  126. package/vendor/abseil-cpp/absl/base/log_severity.h +172 -0
  127. package/vendor/abseil-cpp/absl/base/log_severity_test.cc +245 -0
  128. package/vendor/abseil-cpp/absl/base/macros.h +141 -0
  129. package/vendor/abseil-cpp/absl/base/optimization.h +304 -0
  130. package/vendor/abseil-cpp/absl/base/optimization_test.cc +129 -0
  131. package/vendor/abseil-cpp/absl/base/options.h +232 -0
  132. package/vendor/abseil-cpp/absl/base/policy_checks.h +113 -0
  133. package/vendor/abseil-cpp/absl/base/port.h +25 -0
  134. package/vendor/abseil-cpp/absl/base/raw_logging_test.cc +79 -0
  135. package/vendor/abseil-cpp/absl/base/spinlock_test_common.cc +272 -0
  136. package/vendor/abseil-cpp/absl/base/thread_annotations.h +335 -0
  137. package/vendor/abseil-cpp/absl/base/throw_delegate_test.cc +175 -0
  138. package/vendor/abseil-cpp/absl/cleanup/BUILD.bazel +65 -0
  139. package/vendor/abseil-cpp/absl/cleanup/CMakeLists.txt +56 -0
  140. package/vendor/abseil-cpp/absl/cleanup/cleanup.h +140 -0
  141. package/vendor/abseil-cpp/absl/cleanup/cleanup_test.cc +311 -0
  142. package/vendor/abseil-cpp/absl/cleanup/internal/cleanup.h +100 -0
  143. package/vendor/abseil-cpp/absl/container/BUILD.bazel +1031 -0
  144. package/vendor/abseil-cpp/absl/container/CMakeLists.txt +967 -0
  145. package/vendor/abseil-cpp/absl/container/btree_benchmark.cc +764 -0
  146. package/vendor/abseil-cpp/absl/container/btree_map.h +885 -0
  147. package/vendor/abseil-cpp/absl/container/btree_set.h +821 -0
  148. package/vendor/abseil-cpp/absl/container/btree_test.cc +3470 -0
  149. package/vendor/abseil-cpp/absl/container/btree_test.h +166 -0
  150. package/vendor/abseil-cpp/absl/container/fixed_array.h +531 -0
  151. package/vendor/abseil-cpp/absl/container/fixed_array_benchmark.cc +67 -0
  152. package/vendor/abseil-cpp/absl/container/fixed_array_exception_safety_test.cc +201 -0
  153. package/vendor/abseil-cpp/absl/container/fixed_array_test.cc +837 -0
  154. package/vendor/abseil-cpp/absl/container/flat_hash_map.h +613 -0
  155. package/vendor/abseil-cpp/absl/container/flat_hash_map_test.cc +325 -0
  156. package/vendor/abseil-cpp/absl/container/flat_hash_set.h +503 -0
  157. package/vendor/abseil-cpp/absl/container/flat_hash_set_test.cc +178 -0
  158. package/vendor/abseil-cpp/absl/container/inlined_vector.h +914 -0
  159. package/vendor/abseil-cpp/absl/container/inlined_vector_benchmark.cc +829 -0
  160. package/vendor/abseil-cpp/absl/container/inlined_vector_exception_safety_test.cc +508 -0
  161. package/vendor/abseil-cpp/absl/container/inlined_vector_test.cc +2060 -0
  162. package/vendor/abseil-cpp/absl/container/internal/btree.h +2982 -0
  163. package/vendor/abseil-cpp/absl/container/internal/btree_container.h +713 -0
  164. package/vendor/abseil-cpp/absl/container/internal/common.h +207 -0
  165. package/vendor/abseil-cpp/absl/container/internal/common_policy_traits.h +132 -0
  166. package/vendor/abseil-cpp/absl/container/internal/common_policy_traits_test.cc +120 -0
  167. package/vendor/abseil-cpp/absl/container/internal/compressed_tuple.h +290 -0
  168. package/vendor/abseil-cpp/absl/container/internal/compressed_tuple_test.cc +419 -0
  169. package/vendor/abseil-cpp/absl/container/internal/container_memory.h +454 -0
  170. package/vendor/abseil-cpp/absl/container/internal/container_memory_test.cc +257 -0
  171. package/vendor/abseil-cpp/absl/container/internal/counting_allocator.h +122 -0
  172. package/vendor/abseil-cpp/absl/container/internal/hash_function_defaults.h +163 -0
  173. package/vendor/abseil-cpp/absl/container/internal/hash_function_defaults_test.cc +383 -0
  174. package/vendor/abseil-cpp/absl/container/internal/hash_generator_testing.cc +76 -0
  175. package/vendor/abseil-cpp/absl/container/internal/hash_generator_testing.h +182 -0
  176. package/vendor/abseil-cpp/absl/container/internal/hash_policy_testing.h +184 -0
  177. package/vendor/abseil-cpp/absl/container/internal/hash_policy_testing_test.cc +45 -0
  178. package/vendor/abseil-cpp/absl/container/internal/hash_policy_traits.h +157 -0
  179. package/vendor/abseil-cpp/absl/container/internal/hash_policy_traits_test.cc +80 -0
  180. package/vendor/abseil-cpp/absl/container/internal/hashtable_debug.h +110 -0
  181. package/vendor/abseil-cpp/absl/container/internal/hashtable_debug_hooks.h +85 -0
  182. package/vendor/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +283 -0
  183. package/vendor/abseil-cpp/absl/container/internal/hashtablez_sampler.h +267 -0
  184. package/vendor/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc +31 -0
  185. package/vendor/abseil-cpp/absl/container/internal/hashtablez_sampler_test.cc +428 -0
  186. package/vendor/abseil-cpp/absl/container/internal/inlined_vector.h +1031 -0
  187. package/vendor/abseil-cpp/absl/container/internal/layout.h +743 -0
  188. package/vendor/abseil-cpp/absl/container/internal/layout_benchmark.cc +122 -0
  189. package/vendor/abseil-cpp/absl/container/internal/layout_test.cc +1641 -0
  190. package/vendor/abseil-cpp/absl/container/internal/node_slot_policy.h +92 -0
  191. package/vendor/abseil-cpp/absl/container/internal/node_slot_policy_test.cc +69 -0
  192. package/vendor/abseil-cpp/absl/container/internal/raw_hash_map.h +198 -0
  193. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set.cc +222 -0
  194. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set.h +2685 -0
  195. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_allocator_test.cc +505 -0
  196. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_benchmark.cc +544 -0
  197. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_probe_benchmark.cc +590 -0
  198. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_test.cc +2324 -0
  199. package/vendor/abseil-cpp/absl/container/internal/test_instance_tracker.cc +29 -0
  200. package/vendor/abseil-cpp/absl/container/internal/test_instance_tracker.h +274 -0
  201. package/vendor/abseil-cpp/absl/container/internal/test_instance_tracker_test.cc +184 -0
  202. package/vendor/abseil-cpp/absl/container/internal/tracked.h +83 -0
  203. package/vendor/abseil-cpp/absl/container/internal/unordered_map_constructor_test.h +494 -0
  204. package/vendor/abseil-cpp/absl/container/internal/unordered_map_lookup_test.h +117 -0
  205. package/vendor/abseil-cpp/absl/container/internal/unordered_map_members_test.h +87 -0
  206. package/vendor/abseil-cpp/absl/container/internal/unordered_map_modifiers_test.h +352 -0
  207. package/vendor/abseil-cpp/absl/container/internal/unordered_map_test.cc +50 -0
  208. package/vendor/abseil-cpp/absl/container/internal/unordered_set_constructor_test.h +496 -0
  209. package/vendor/abseil-cpp/absl/container/internal/unordered_set_lookup_test.h +91 -0
  210. package/vendor/abseil-cpp/absl/container/internal/unordered_set_members_test.h +86 -0
  211. package/vendor/abseil-cpp/absl/container/internal/unordered_set_modifiers_test.h +221 -0
  212. package/vendor/abseil-cpp/absl/container/internal/unordered_set_test.cc +41 -0
  213. package/vendor/abseil-cpp/absl/container/node_hash_map.h +604 -0
  214. package/vendor/abseil-cpp/absl/container/node_hash_map_test.cc +286 -0
  215. package/vendor/abseil-cpp/absl/container/node_hash_set.h +500 -0
  216. package/vendor/abseil-cpp/absl/container/node_hash_set_test.cc +143 -0
  217. package/vendor/abseil-cpp/absl/container/sample_element_size_test.cc +114 -0
  218. package/vendor/abseil-cpp/absl/copts/AbseilConfigureCopts.cmake +96 -0
  219. package/vendor/abseil-cpp/absl/copts/GENERATED_AbseilCopts.cmake +229 -0
  220. package/vendor/abseil-cpp/absl/copts/GENERATED_copts.bzl +230 -0
  221. package/vendor/abseil-cpp/absl/copts/configure_copts.bzl +82 -0
  222. package/vendor/abseil-cpp/absl/copts/copts.py +191 -0
  223. package/vendor/abseil-cpp/absl/copts/generate_copts.py +109 -0
  224. package/vendor/abseil-cpp/absl/crc/BUILD.bazel +210 -0
  225. package/vendor/abseil-cpp/absl/crc/CMakeLists.txt +176 -0
  226. package/vendor/abseil-cpp/absl/crc/crc32c.cc +99 -0
  227. package/vendor/abseil-cpp/absl/crc/crc32c.h +183 -0
  228. package/vendor/abseil-cpp/absl/crc/crc32c_benchmark.cc +183 -0
  229. package/vendor/abseil-cpp/absl/crc/crc32c_test.cc +194 -0
  230. package/vendor/abseil-cpp/absl/crc/internal/cpu_detect.cc +256 -0
  231. package/vendor/abseil-cpp/absl/crc/internal/cpu_detect.h +57 -0
  232. package/vendor/abseil-cpp/absl/crc/internal/crc.cc +468 -0
  233. package/vendor/abseil-cpp/absl/crc/internal/crc.h +91 -0
  234. package/vendor/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +269 -0
  235. package/vendor/abseil-cpp/absl/crc/internal/crc32c.h +39 -0
  236. package/vendor/abseil-cpp/absl/crc/internal/crc32c_inline.h +72 -0
  237. package/vendor/abseil-cpp/absl/crc/internal/crc_cord_state.cc +130 -0
  238. package/vendor/abseil-cpp/absl/crc/internal/crc_cord_state.h +159 -0
  239. package/vendor/abseil-cpp/absl/crc/internal/crc_cord_state_test.cc +124 -0
  240. package/vendor/abseil-cpp/absl/crc/internal/crc_internal.h +179 -0
  241. package/vendor/abseil-cpp/absl/crc/internal/crc_memcpy.h +119 -0
  242. package/vendor/abseil-cpp/absl/crc/internal/crc_memcpy_fallback.cc +75 -0
  243. package/vendor/abseil-cpp/absl/crc/internal/crc_memcpy_test.cc +169 -0
  244. package/vendor/abseil-cpp/absl/crc/internal/crc_memcpy_x86_64.cc +434 -0
  245. package/vendor/abseil-cpp/absl/crc/internal/crc_non_temporal_memcpy.cc +93 -0
  246. package/vendor/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +725 -0
  247. package/vendor/abseil-cpp/absl/crc/internal/non_temporal_arm_intrinsics.h +79 -0
  248. package/vendor/abseil-cpp/absl/crc/internal/non_temporal_memcpy.h +180 -0
  249. package/vendor/abseil-cpp/absl/crc/internal/non_temporal_memcpy_test.cc +88 -0
  250. package/vendor/abseil-cpp/absl/debugging/BUILD.bazel +322 -0
  251. package/vendor/abseil-cpp/absl/debugging/CMakeLists.txt +294 -0
  252. package/vendor/abseil-cpp/absl/debugging/failure_signal_handler.cc +389 -0
  253. package/vendor/abseil-cpp/absl/debugging/failure_signal_handler.h +121 -0
  254. package/vendor/abseil-cpp/absl/debugging/failure_signal_handler_test.cc +165 -0
  255. package/vendor/abseil-cpp/absl/debugging/internal/address_is_readable.cc +96 -0
  256. package/vendor/abseil-cpp/absl/debugging/internal/address_is_readable.h +32 -0
  257. package/vendor/abseil-cpp/absl/debugging/internal/demangle.cc +1988 -0
  258. package/vendor/abseil-cpp/absl/debugging/internal/demangle.h +71 -0
  259. package/vendor/abseil-cpp/absl/debugging/internal/demangle_test.cc +243 -0
  260. package/vendor/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +386 -0
  261. package/vendor/abseil-cpp/absl/debugging/internal/elf_mem_image.h +139 -0
  262. package/vendor/abseil-cpp/absl/debugging/internal/examine_stack.cc +317 -0
  263. package/vendor/abseil-cpp/absl/debugging/internal/examine_stack.h +64 -0
  264. package/vendor/abseil-cpp/absl/debugging/internal/stack_consumption.cc +185 -0
  265. package/vendor/abseil-cpp/absl/debugging/internal/stack_consumption.h +50 -0
  266. package/vendor/abseil-cpp/absl/debugging/internal/stack_consumption_test.cc +50 -0
  267. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +206 -0
  268. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +139 -0
  269. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_config.h +88 -0
  270. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +110 -0
  271. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +108 -0
  272. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +258 -0
  273. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +191 -0
  274. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_unimplemented-inl.inc +24 -0
  275. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +94 -0
  276. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +394 -0
  277. package/vendor/abseil-cpp/absl/debugging/internal/symbolize.h +153 -0
  278. package/vendor/abseil-cpp/absl/debugging/internal/vdso_support.cc +205 -0
  279. package/vendor/abseil-cpp/absl/debugging/internal/vdso_support.h +158 -0
  280. package/vendor/abseil-cpp/absl/debugging/leak_check.cc +73 -0
  281. package/vendor/abseil-cpp/absl/debugging/leak_check.h +150 -0
  282. package/vendor/abseil-cpp/absl/debugging/leak_check_fail_test.cc +41 -0
  283. package/vendor/abseil-cpp/absl/debugging/leak_check_test.cc +41 -0
  284. package/vendor/abseil-cpp/absl/debugging/stacktrace.cc +142 -0
  285. package/vendor/abseil-cpp/absl/debugging/stacktrace.h +231 -0
  286. package/vendor/abseil-cpp/absl/debugging/stacktrace_benchmark.cc +55 -0
  287. package/vendor/abseil-cpp/absl/debugging/stacktrace_test.cc +47 -0
  288. package/vendor/abseil-cpp/absl/debugging/symbolize.cc +43 -0
  289. package/vendor/abseil-cpp/absl/debugging/symbolize.h +99 -0
  290. package/vendor/abseil-cpp/absl/debugging/symbolize_darwin.inc +102 -0
  291. package/vendor/abseil-cpp/absl/debugging/symbolize_elf.inc +1637 -0
  292. package/vendor/abseil-cpp/absl/debugging/symbolize_emscripten.inc +72 -0
  293. package/vendor/abseil-cpp/absl/debugging/symbolize_test.cc +612 -0
  294. package/vendor/abseil-cpp/absl/debugging/symbolize_unimplemented.inc +40 -0
  295. package/vendor/abseil-cpp/absl/debugging/symbolize_win32.inc +82 -0
  296. package/vendor/abseil-cpp/absl/flags/BUILD.bazel +583 -0
  297. package/vendor/abseil-cpp/absl/flags/CMakeLists.txt +471 -0
  298. package/vendor/abseil-cpp/absl/flags/commandlineflag.cc +34 -0
  299. package/vendor/abseil-cpp/absl/flags/commandlineflag.h +200 -0
  300. package/vendor/abseil-cpp/absl/flags/commandlineflag_test.cc +231 -0
  301. package/vendor/abseil-cpp/absl/flags/config.h +68 -0
  302. package/vendor/abseil-cpp/absl/flags/config_test.cc +61 -0
  303. package/vendor/abseil-cpp/absl/flags/declare.h +73 -0
  304. package/vendor/abseil-cpp/absl/flags/flag.cc +38 -0
  305. package/vendor/abseil-cpp/absl/flags/flag.h +310 -0
  306. package/vendor/abseil-cpp/absl/flags/flag_benchmark.cc +251 -0
  307. package/vendor/abseil-cpp/absl/flags/flag_benchmark.lds +13 -0
  308. package/vendor/abseil-cpp/absl/flags/flag_test.cc +1166 -0
  309. package/vendor/abseil-cpp/absl/flags/flag_test_defs.cc +24 -0
  310. package/vendor/abseil-cpp/absl/flags/internal/commandlineflag.cc +26 -0
  311. package/vendor/abseil-cpp/absl/flags/internal/commandlineflag.h +68 -0
  312. package/vendor/abseil-cpp/absl/flags/internal/flag.cc +615 -0
  313. package/vendor/abseil-cpp/absl/flags/internal/flag.h +800 -0
  314. package/vendor/abseil-cpp/absl/flags/internal/flag_msvc.inc +116 -0
  315. package/vendor/abseil-cpp/absl/flags/internal/parse.h +63 -0
  316. package/vendor/abseil-cpp/absl/flags/internal/path_util.h +62 -0
  317. package/vendor/abseil-cpp/absl/flags/internal/path_util_test.cc +46 -0
  318. package/vendor/abseil-cpp/absl/flags/internal/private_handle_accessor.cc +65 -0
  319. package/vendor/abseil-cpp/absl/flags/internal/private_handle_accessor.h +61 -0
  320. package/vendor/abseil-cpp/absl/flags/internal/program_name.cc +60 -0
  321. package/vendor/abseil-cpp/absl/flags/internal/program_name.h +50 -0
  322. package/vendor/abseil-cpp/absl/flags/internal/program_name_test.cc +61 -0
  323. package/vendor/abseil-cpp/absl/flags/internal/registry.h +97 -0
  324. package/vendor/abseil-cpp/absl/flags/internal/sequence_lock.h +187 -0
  325. package/vendor/abseil-cpp/absl/flags/internal/sequence_lock_test.cc +169 -0
  326. package/vendor/abseil-cpp/absl/flags/internal/usage.cc +526 -0
  327. package/vendor/abseil-cpp/absl/flags/internal/usage.h +104 -0
  328. package/vendor/abseil-cpp/absl/flags/internal/usage_test.cc +504 -0
  329. package/vendor/abseil-cpp/absl/flags/marshalling.cc +241 -0
  330. package/vendor/abseil-cpp/absl/flags/marshalling.h +356 -0
  331. package/vendor/abseil-cpp/absl/flags/marshalling_test.cc +1070 -0
  332. package/vendor/abseil-cpp/absl/flags/parse.cc +890 -0
  333. package/vendor/abseil-cpp/absl/flags/parse.h +60 -0
  334. package/vendor/abseil-cpp/absl/flags/parse_test.cc +1004 -0
  335. package/vendor/abseil-cpp/absl/flags/reflection.cc +354 -0
  336. package/vendor/abseil-cpp/absl/flags/reflection.h +90 -0
  337. package/vendor/abseil-cpp/absl/flags/reflection_test.cc +265 -0
  338. package/vendor/abseil-cpp/absl/flags/usage.cc +65 -0
  339. package/vendor/abseil-cpp/absl/flags/usage.h +43 -0
  340. package/vendor/abseil-cpp/absl/flags/usage_config.cc +165 -0
  341. package/vendor/abseil-cpp/absl/flags/usage_config.h +135 -0
  342. package/vendor/abseil-cpp/absl/flags/usage_config_test.cc +205 -0
  343. package/vendor/abseil-cpp/absl/functional/BUILD.bazel +128 -0
  344. package/vendor/abseil-cpp/absl/functional/CMakeLists.txt +109 -0
  345. package/vendor/abseil-cpp/absl/functional/any_invocable.h +316 -0
  346. package/vendor/abseil-cpp/absl/functional/any_invocable_test.cc +1719 -0
  347. package/vendor/abseil-cpp/absl/functional/bind_front.h +193 -0
  348. package/vendor/abseil-cpp/absl/functional/bind_front_test.cc +231 -0
  349. package/vendor/abseil-cpp/absl/functional/function_ref.h +143 -0
  350. package/vendor/abseil-cpp/absl/functional/function_ref_test.cc +258 -0
  351. package/vendor/abseil-cpp/absl/functional/function_type_benchmark.cc +176 -0
  352. package/vendor/abseil-cpp/absl/functional/internal/any_invocable.h +878 -0
  353. package/vendor/abseil-cpp/absl/functional/internal/front_binder.h +95 -0
  354. package/vendor/abseil-cpp/absl/functional/internal/function_ref.h +106 -0
  355. package/vendor/abseil-cpp/absl/hash/BUILD.bazel +176 -0
  356. package/vendor/abseil-cpp/absl/hash/CMakeLists.txt +160 -0
  357. package/vendor/abseil-cpp/absl/hash/hash.h +421 -0
  358. package/vendor/abseil-cpp/absl/hash/hash_benchmark.cc +323 -0
  359. package/vendor/abseil-cpp/absl/hash/hash_test.cc +1277 -0
  360. package/vendor/abseil-cpp/absl/hash/hash_testing.h +378 -0
  361. package/vendor/abseil-cpp/absl/hash/internal/city.cc +349 -0
  362. package/vendor/abseil-cpp/absl/hash/internal/city.h +78 -0
  363. package/vendor/abseil-cpp/absl/hash/internal/city_test.cc +597 -0
  364. package/vendor/abseil-cpp/absl/hash/internal/hash.cc +69 -0
  365. package/vendor/abseil-cpp/absl/hash/internal/hash.h +1305 -0
  366. package/vendor/abseil-cpp/absl/hash/internal/low_level_hash.cc +112 -0
  367. package/vendor/abseil-cpp/absl/hash/internal/low_level_hash.h +50 -0
  368. package/vendor/abseil-cpp/absl/hash/internal/low_level_hash_test.cc +532 -0
  369. package/vendor/abseil-cpp/absl/hash/internal/print_hash_of.cc +23 -0
  370. package/vendor/abseil-cpp/absl/hash/internal/spy_hash_state.h +266 -0
  371. package/vendor/abseil-cpp/absl/log/BUILD.bazel +596 -0
  372. package/vendor/abseil-cpp/absl/log/CMakeLists.txt +1042 -0
  373. package/vendor/abseil-cpp/absl/log/absl_check.h +105 -0
  374. package/vendor/abseil-cpp/absl/log/absl_check_test.cc +58 -0
  375. package/vendor/abseil-cpp/absl/log/absl_log.h +94 -0
  376. package/vendor/abseil-cpp/absl/log/absl_log_basic_test.cc +21 -0
  377. package/vendor/abseil-cpp/absl/log/check.h +183 -0
  378. package/vendor/abseil-cpp/absl/log/check_test.cc +58 -0
  379. package/vendor/abseil-cpp/absl/log/check_test_impl.h +528 -0
  380. package/vendor/abseil-cpp/absl/log/die_if_null.cc +32 -0
  381. package/vendor/abseil-cpp/absl/log/die_if_null.h +76 -0
  382. package/vendor/abseil-cpp/absl/log/die_if_null_test.cc +107 -0
  383. package/vendor/abseil-cpp/absl/log/flags.cc +112 -0
  384. package/vendor/abseil-cpp/absl/log/flags.h +43 -0
  385. package/vendor/abseil-cpp/absl/log/flags_test.cc +184 -0
  386. package/vendor/abseil-cpp/absl/log/globals.cc +148 -0
  387. package/vendor/abseil-cpp/absl/log/globals.h +165 -0
  388. package/vendor/abseil-cpp/absl/log/globals_test.cc +91 -0
  389. package/vendor/abseil-cpp/absl/log/initialize.cc +34 -0
  390. package/vendor/abseil-cpp/absl/log/initialize.h +45 -0
  391. package/vendor/abseil-cpp/absl/log/internal/BUILD.bazel +383 -0
  392. package/vendor/abseil-cpp/absl/log/internal/append_truncated.h +47 -0
  393. package/vendor/abseil-cpp/absl/log/internal/check_impl.h +150 -0
  394. package/vendor/abseil-cpp/absl/log/internal/check_op.cc +118 -0
  395. package/vendor/abseil-cpp/absl/log/internal/check_op.h +392 -0
  396. package/vendor/abseil-cpp/absl/log/internal/conditions.cc +83 -0
  397. package/vendor/abseil-cpp/absl/log/internal/conditions.h +222 -0
  398. package/vendor/abseil-cpp/absl/log/internal/config.h +45 -0
  399. package/vendor/abseil-cpp/absl/log/internal/flags.h +53 -0
  400. package/vendor/abseil-cpp/absl/log/internal/globals.cc +125 -0
  401. package/vendor/abseil-cpp/absl/log/internal/globals.h +101 -0
  402. package/vendor/abseil-cpp/absl/log/internal/log_format.cc +203 -0
  403. package/vendor/abseil-cpp/absl/log/internal/log_format.h +78 -0
  404. package/vendor/abseil-cpp/absl/log/internal/log_impl.h +212 -0
  405. package/vendor/abseil-cpp/absl/log/internal/log_message.cc +618 -0
  406. package/vendor/abseil-cpp/absl/log/internal/log_message.h +355 -0
  407. package/vendor/abseil-cpp/absl/log/internal/log_sink_set.cc +296 -0
  408. package/vendor/abseil-cpp/absl/log/internal/log_sink_set.h +54 -0
  409. package/vendor/abseil-cpp/absl/log/internal/nullguard.cc +35 -0
  410. package/vendor/abseil-cpp/absl/log/internal/nullguard.h +88 -0
  411. package/vendor/abseil-cpp/absl/log/internal/nullstream.h +134 -0
  412. package/vendor/abseil-cpp/absl/log/internal/proto.cc +220 -0
  413. package/vendor/abseil-cpp/absl/log/internal/proto.h +288 -0
  414. package/vendor/abseil-cpp/absl/log/internal/stderr_log_sink_test.cc +105 -0
  415. package/vendor/abseil-cpp/absl/log/internal/strip.h +71 -0
  416. package/vendor/abseil-cpp/absl/log/internal/structured.h +58 -0
  417. package/vendor/abseil-cpp/absl/log/internal/test_actions.cc +75 -0
  418. package/vendor/abseil-cpp/absl/log/internal/test_actions.h +90 -0
  419. package/vendor/abseil-cpp/absl/log/internal/test_helpers.cc +82 -0
  420. package/vendor/abseil-cpp/absl/log/internal/test_helpers.h +71 -0
  421. package/vendor/abseil-cpp/absl/log/internal/test_matchers.cc +217 -0
  422. package/vendor/abseil-cpp/absl/log/internal/test_matchers.h +94 -0
  423. package/vendor/abseil-cpp/absl/log/internal/voidify.h +44 -0
  424. package/vendor/abseil-cpp/absl/log/log.h +308 -0
  425. package/vendor/abseil-cpp/absl/log/log_basic_test.cc +21 -0
  426. package/vendor/abseil-cpp/absl/log/log_basic_test_impl.h +455 -0
  427. package/vendor/abseil-cpp/absl/log/log_benchmark.cc +97 -0
  428. package/vendor/abseil-cpp/absl/log/log_entry.cc +29 -0
  429. package/vendor/abseil-cpp/absl/log/log_entry.h +220 -0
  430. package/vendor/abseil-cpp/absl/log/log_entry_test.cc +468 -0
  431. package/vendor/abseil-cpp/absl/log/log_format_test.cc +1872 -0
  432. package/vendor/abseil-cpp/absl/log/log_macro_hygiene_test.cc +187 -0
  433. package/vendor/abseil-cpp/absl/log/log_modifier_methods_test.cc +233 -0
  434. package/vendor/abseil-cpp/absl/log/log_sink.cc +23 -0
  435. package/vendor/abseil-cpp/absl/log/log_sink.h +64 -0
  436. package/vendor/abseil-cpp/absl/log/log_sink_registry.h +61 -0
  437. package/vendor/abseil-cpp/absl/log/log_sink_test.cc +419 -0
  438. package/vendor/abseil-cpp/absl/log/log_streamer.h +171 -0
  439. package/vendor/abseil-cpp/absl/log/log_streamer_test.cc +365 -0
  440. package/vendor/abseil-cpp/absl/log/scoped_mock_log.cc +86 -0
  441. package/vendor/abseil-cpp/absl/log/scoped_mock_log.h +194 -0
  442. package/vendor/abseil-cpp/absl/log/scoped_mock_log_test.cc +290 -0
  443. package/vendor/abseil-cpp/absl/log/stripping_test.cc +340 -0
  444. package/vendor/abseil-cpp/absl/log/structured.h +70 -0
  445. package/vendor/abseil-cpp/absl/log/structured_test.cc +63 -0
  446. package/vendor/abseil-cpp/absl/memory/BUILD.bazel +52 -0
  447. package/vendor/abseil-cpp/absl/memory/CMakeLists.txt +41 -0
  448. package/vendor/abseil-cpp/absl/memory/memory.h +278 -0
  449. package/vendor/abseil-cpp/absl/memory/memory_test.cc +222 -0
  450. package/vendor/abseil-cpp/absl/meta/BUILD.bazel +50 -0
  451. package/vendor/abseil-cpp/absl/meta/CMakeLists.txt +53 -0
  452. package/vendor/abseil-cpp/absl/meta/type_traits.h +889 -0
  453. package/vendor/abseil-cpp/absl/meta/type_traits_test.cc +1448 -0
  454. package/vendor/abseil-cpp/absl/numeric/BUILD.bazel +127 -0
  455. package/vendor/abseil-cpp/absl/numeric/CMakeLists.txt +99 -0
  456. package/vendor/abseil-cpp/absl/numeric/bits.h +177 -0
  457. package/vendor/abseil-cpp/absl/numeric/bits_benchmark.cc +73 -0
  458. package/vendor/abseil-cpp/absl/numeric/bits_test.cc +573 -0
  459. package/vendor/abseil-cpp/absl/numeric/int128.cc +387 -0
  460. package/vendor/abseil-cpp/absl/numeric/int128.h +1165 -0
  461. package/vendor/abseil-cpp/absl/numeric/int128_benchmark.cc +282 -0
  462. package/vendor/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +296 -0
  463. package/vendor/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +311 -0
  464. package/vendor/abseil-cpp/absl/numeric/int128_stream_test.cc +1393 -0
  465. package/vendor/abseil-cpp/absl/numeric/int128_test.cc +1261 -0
  466. package/vendor/abseil-cpp/absl/numeric/internal/bits.h +358 -0
  467. package/vendor/abseil-cpp/absl/numeric/internal/representation.h +55 -0
  468. package/vendor/abseil-cpp/absl/profiling/BUILD.bazel +129 -0
  469. package/vendor/abseil-cpp/absl/profiling/CMakeLists.txt +93 -0
  470. package/vendor/abseil-cpp/absl/profiling/internal/exponential_biased.cc +93 -0
  471. package/vendor/abseil-cpp/absl/profiling/internal/exponential_biased.h +130 -0
  472. package/vendor/abseil-cpp/absl/profiling/internal/exponential_biased_test.cc +203 -0
  473. package/vendor/abseil-cpp/absl/profiling/internal/periodic_sampler.cc +53 -0
  474. package/vendor/abseil-cpp/absl/profiling/internal/periodic_sampler.h +211 -0
  475. package/vendor/abseil-cpp/absl/profiling/internal/periodic_sampler_benchmark.cc +79 -0
  476. package/vendor/abseil-cpp/absl/profiling/internal/periodic_sampler_test.cc +177 -0
  477. package/vendor/abseil-cpp/absl/profiling/internal/sample_recorder.h +253 -0
  478. package/vendor/abseil-cpp/absl/profiling/internal/sample_recorder_test.cc +184 -0
  479. package/vendor/abseil-cpp/absl/random/BUILD.bazel +517 -0
  480. package/vendor/abseil-cpp/absl/random/CMakeLists.txt +1216 -0
  481. package/vendor/abseil-cpp/absl/random/benchmarks.cc +383 -0
  482. package/vendor/abseil-cpp/absl/random/bernoulli_distribution.h +200 -0
  483. package/vendor/abseil-cpp/absl/random/bernoulli_distribution_test.cc +217 -0
  484. package/vendor/abseil-cpp/absl/random/beta_distribution.h +427 -0
  485. package/vendor/abseil-cpp/absl/random/beta_distribution_test.cc +620 -0
  486. package/vendor/abseil-cpp/absl/random/bit_gen_ref.h +185 -0
  487. package/vendor/abseil-cpp/absl/random/bit_gen_ref_test.cc +102 -0
  488. package/vendor/abseil-cpp/absl/random/discrete_distribution.cc +98 -0
  489. package/vendor/abseil-cpp/absl/random/discrete_distribution.h +247 -0
  490. package/vendor/abseil-cpp/absl/random/discrete_distribution_test.cc +251 -0
  491. package/vendor/abseil-cpp/absl/random/distributions.h +452 -0
  492. package/vendor/abseil-cpp/absl/random/distributions_test.cc +466 -0
  493. package/vendor/abseil-cpp/absl/random/examples_test.cc +99 -0
  494. package/vendor/abseil-cpp/absl/random/exponential_distribution.h +165 -0
  495. package/vendor/abseil-cpp/absl/random/exponential_distribution_test.cc +428 -0
  496. package/vendor/abseil-cpp/absl/random/gaussian_distribution.cc +104 -0
  497. package/vendor/abseil-cpp/absl/random/gaussian_distribution.h +275 -0
  498. package/vendor/abseil-cpp/absl/random/gaussian_distribution_test.cc +563 -0
  499. package/vendor/abseil-cpp/absl/random/generators_test.cc +185 -0
  500. package/vendor/abseil-cpp/absl/random/internal/BUILD.bazel +753 -0
  501. package/vendor/abseil-cpp/absl/random/internal/chi_square.cc +233 -0
  502. package/vendor/abseil-cpp/absl/random/internal/chi_square.h +89 -0
  503. package/vendor/abseil-cpp/absl/random/internal/chi_square_test.cc +365 -0
  504. package/vendor/abseil-cpp/absl/random/internal/distribution_caller.h +95 -0
  505. package/vendor/abseil-cpp/absl/random/internal/distribution_test_util.cc +418 -0
  506. package/vendor/abseil-cpp/absl/random/internal/distribution_test_util.h +113 -0
  507. package/vendor/abseil-cpp/absl/random/internal/distribution_test_util_test.cc +193 -0
  508. package/vendor/abseil-cpp/absl/random/internal/explicit_seed_seq.h +92 -0
  509. package/vendor/abseil-cpp/absl/random/internal/explicit_seed_seq_test.cc +237 -0
  510. package/vendor/abseil-cpp/absl/random/internal/fast_uniform_bits.h +270 -0
  511. package/vendor/abseil-cpp/absl/random/internal/fast_uniform_bits_test.cc +336 -0
  512. package/vendor/abseil-cpp/absl/random/internal/fastmath.h +57 -0
  513. package/vendor/abseil-cpp/absl/random/internal/fastmath_test.cc +97 -0
  514. package/vendor/abseil-cpp/absl/random/internal/gaussian_distribution_gentables.cc +143 -0
  515. package/vendor/abseil-cpp/absl/random/internal/generate_real.h +144 -0
  516. package/vendor/abseil-cpp/absl/random/internal/generate_real_test.cc +496 -0
  517. package/vendor/abseil-cpp/absl/random/internal/iostream_state_saver.h +245 -0
  518. package/vendor/abseil-cpp/absl/random/internal/iostream_state_saver_test.cc +372 -0
  519. package/vendor/abseil-cpp/absl/random/internal/mock_helpers.h +135 -0
  520. package/vendor/abseil-cpp/absl/random/internal/mock_overload_set.h +100 -0
  521. package/vendor/abseil-cpp/absl/random/internal/nanobenchmark.cc +804 -0
  522. package/vendor/abseil-cpp/absl/random/internal/nanobenchmark.h +172 -0
  523. package/vendor/abseil-cpp/absl/random/internal/nanobenchmark_test.cc +77 -0
  524. package/vendor/abseil-cpp/absl/random/internal/nonsecure_base.h +161 -0
  525. package/vendor/abseil-cpp/absl/random/internal/nonsecure_base_test.cc +227 -0
  526. package/vendor/abseil-cpp/absl/random/internal/pcg_engine.h +287 -0
  527. package/vendor/abseil-cpp/absl/random/internal/pcg_engine_test.cc +638 -0
  528. package/vendor/abseil-cpp/absl/random/internal/platform.h +171 -0
  529. package/vendor/abseil-cpp/absl/random/internal/pool_urbg.cc +253 -0
  530. package/vendor/abseil-cpp/absl/random/internal/pool_urbg.h +131 -0
  531. package/vendor/abseil-cpp/absl/random/internal/pool_urbg_test.cc +182 -0
  532. package/vendor/abseil-cpp/absl/random/internal/randen.cc +91 -0
  533. package/vendor/abseil-cpp/absl/random/internal/randen.h +96 -0
  534. package/vendor/abseil-cpp/absl/random/internal/randen_benchmarks.cc +174 -0
  535. package/vendor/abseil-cpp/absl/random/internal/randen_detect.cc +225 -0
  536. package/vendor/abseil-cpp/absl/random/internal/randen_detect.h +33 -0
  537. package/vendor/abseil-cpp/absl/random/internal/randen_engine.h +264 -0
  538. package/vendor/abseil-cpp/absl/random/internal/randen_engine_test.cc +656 -0
  539. package/vendor/abseil-cpp/absl/random/internal/randen_hwaes.cc +526 -0
  540. package/vendor/abseil-cpp/absl/random/internal/randen_hwaes.h +50 -0
  541. package/vendor/abseil-cpp/absl/random/internal/randen_hwaes_test.cc +99 -0
  542. package/vendor/abseil-cpp/absl/random/internal/randen_round_keys.cc +462 -0
  543. package/vendor/abseil-cpp/absl/random/internal/randen_slow.cc +471 -0
  544. package/vendor/abseil-cpp/absl/random/internal/randen_slow.h +40 -0
  545. package/vendor/abseil-cpp/absl/random/internal/randen_slow_test.cc +61 -0
  546. package/vendor/abseil-cpp/absl/random/internal/randen_test.cc +75 -0
  547. package/vendor/abseil-cpp/absl/random/internal/randen_traits.h +88 -0
  548. package/vendor/abseil-cpp/absl/random/internal/salted_seed_seq.h +165 -0
  549. package/vendor/abseil-cpp/absl/random/internal/salted_seed_seq_test.cc +168 -0
  550. package/vendor/abseil-cpp/absl/random/internal/seed_material.cc +267 -0
  551. package/vendor/abseil-cpp/absl/random/internal/seed_material.h +104 -0
  552. package/vendor/abseil-cpp/absl/random/internal/seed_material_test.cc +202 -0
  553. package/vendor/abseil-cpp/absl/random/internal/sequence_urbg.h +60 -0
  554. package/vendor/abseil-cpp/absl/random/internal/traits.h +149 -0
  555. package/vendor/abseil-cpp/absl/random/internal/traits_test.cc +126 -0
  556. package/vendor/abseil-cpp/absl/random/internal/uniform_helper.h +244 -0
  557. package/vendor/abseil-cpp/absl/random/internal/uniform_helper_test.cc +279 -0
  558. package/vendor/abseil-cpp/absl/random/internal/wide_multiply.h +96 -0
  559. package/vendor/abseil-cpp/absl/random/internal/wide_multiply_test.cc +119 -0
  560. package/vendor/abseil-cpp/absl/random/log_uniform_int_distribution.h +256 -0
  561. package/vendor/abseil-cpp/absl/random/log_uniform_int_distribution_test.cc +280 -0
  562. package/vendor/abseil-cpp/absl/random/mock_distributions.h +266 -0
  563. package/vendor/abseil-cpp/absl/random/mock_distributions_test.cc +72 -0
  564. package/vendor/abseil-cpp/absl/random/mocking_bit_gen.h +240 -0
  565. package/vendor/abseil-cpp/absl/random/mocking_bit_gen_test.cc +394 -0
  566. package/vendor/abseil-cpp/absl/random/poisson_distribution.h +261 -0
  567. package/vendor/abseil-cpp/absl/random/poisson_distribution_test.cc +573 -0
  568. package/vendor/abseil-cpp/absl/random/random.h +189 -0
  569. package/vendor/abseil-cpp/absl/random/seed_gen_exception.cc +46 -0
  570. package/vendor/abseil-cpp/absl/random/seed_gen_exception.h +55 -0
  571. package/vendor/abseil-cpp/absl/random/seed_sequences.cc +29 -0
  572. package/vendor/abseil-cpp/absl/random/seed_sequences.h +111 -0
  573. package/vendor/abseil-cpp/absl/random/seed_sequences_test.cc +126 -0
  574. package/vendor/abseil-cpp/absl/random/uniform_int_distribution.h +275 -0
  575. package/vendor/abseil-cpp/absl/random/uniform_int_distribution_test.cc +260 -0
  576. package/vendor/abseil-cpp/absl/random/uniform_real_distribution.h +202 -0
  577. package/vendor/abseil-cpp/absl/random/uniform_real_distribution_test.cc +395 -0
  578. package/vendor/abseil-cpp/absl/random/zipf_distribution.h +272 -0
  579. package/vendor/abseil-cpp/absl/random/zipf_distribution_test.cc +427 -0
  580. package/vendor/abseil-cpp/absl/status/BUILD.bazel +109 -0
  581. package/vendor/abseil-cpp/absl/status/CMakeLists.txt +91 -0
  582. package/vendor/abseil-cpp/absl/status/internal/status_internal.h +87 -0
  583. package/vendor/abseil-cpp/absl/status/internal/statusor_internal.h +396 -0
  584. package/vendor/abseil-cpp/absl/status/status.cc +623 -0
  585. package/vendor/abseil-cpp/absl/status/status.h +892 -0
  586. package/vendor/abseil-cpp/absl/status/status_payload_printer.cc +38 -0
  587. package/vendor/abseil-cpp/absl/status/status_payload_printer.h +51 -0
  588. package/vendor/abseil-cpp/absl/status/status_test.cc +509 -0
  589. package/vendor/abseil-cpp/absl/status/statusor.cc +103 -0
  590. package/vendor/abseil-cpp/absl/status/statusor.h +776 -0
  591. package/vendor/abseil-cpp/absl/status/statusor_test.cc +1847 -0
  592. package/vendor/abseil-cpp/absl/strings/BUILD.bazel +1319 -0
  593. package/vendor/abseil-cpp/absl/strings/CMakeLists.txt +1119 -0
  594. package/vendor/abseil-cpp/absl/strings/ascii.cc +200 -0
  595. package/vendor/abseil-cpp/absl/strings/ascii.h +242 -0
  596. package/vendor/abseil-cpp/absl/strings/ascii_benchmark.cc +120 -0
  597. package/vendor/abseil-cpp/absl/strings/ascii_test.cc +357 -0
  598. package/vendor/abseil-cpp/absl/strings/atod_manual_test.cc +193 -0
  599. package/vendor/abseil-cpp/absl/strings/charconv.cc +1422 -0
  600. package/vendor/abseil-cpp/absl/strings/charconv.h +120 -0
  601. package/vendor/abseil-cpp/absl/strings/charconv_benchmark.cc +204 -0
  602. package/vendor/abseil-cpp/absl/strings/charconv_test.cc +782 -0
  603. package/vendor/abseil-cpp/absl/strings/cord.cc +1380 -0
  604. package/vendor/abseil-cpp/absl/strings/cord.h +1633 -0
  605. package/vendor/abseil-cpp/absl/strings/cord_analysis.cc +188 -0
  606. package/vendor/abseil-cpp/absl/strings/cord_analysis.h +44 -0
  607. package/vendor/abseil-cpp/absl/strings/cord_buffer.cc +30 -0
  608. package/vendor/abseil-cpp/absl/strings/cord_buffer.h +575 -0
  609. package/vendor/abseil-cpp/absl/strings/cord_buffer_test.cc +320 -0
  610. package/vendor/abseil-cpp/absl/strings/cord_ring_reader_test.cc +180 -0
  611. package/vendor/abseil-cpp/absl/strings/cord_ring_test.cc +1454 -0
  612. package/vendor/abseil-cpp/absl/strings/cord_test.cc +3125 -0
  613. package/vendor/abseil-cpp/absl/strings/cord_test_helpers.h +122 -0
  614. package/vendor/abseil-cpp/absl/strings/cordz_test.cc +466 -0
  615. package/vendor/abseil-cpp/absl/strings/cordz_test_helpers.h +151 -0
  616. package/vendor/abseil-cpp/absl/strings/escaping.cc +960 -0
  617. package/vendor/abseil-cpp/absl/strings/escaping.h +169 -0
  618. package/vendor/abseil-cpp/absl/strings/escaping_benchmark.cc +94 -0
  619. package/vendor/abseil-cpp/absl/strings/escaping_test.cc +706 -0
  620. package/vendor/abseil-cpp/absl/strings/internal/char_map.h +158 -0
  621. package/vendor/abseil-cpp/absl/strings/internal/char_map_benchmark.cc +61 -0
  622. package/vendor/abseil-cpp/absl/strings/internal/char_map_test.cc +172 -0
  623. package/vendor/abseil-cpp/absl/strings/internal/charconv_bigint.cc +359 -0
  624. package/vendor/abseil-cpp/absl/strings/internal/charconv_bigint.h +423 -0
  625. package/vendor/abseil-cpp/absl/strings/internal/charconv_bigint_test.cc +260 -0
  626. package/vendor/abseil-cpp/absl/strings/internal/charconv_parse.cc +504 -0
  627. package/vendor/abseil-cpp/absl/strings/internal/charconv_parse.h +99 -0
  628. package/vendor/abseil-cpp/absl/strings/internal/charconv_parse_test.cc +357 -0
  629. package/vendor/abseil-cpp/absl/strings/internal/cord_data_edge.h +63 -0
  630. package/vendor/abseil-cpp/absl/strings/internal/cord_data_edge_test.cc +130 -0
  631. package/vendor/abseil-cpp/absl/strings/internal/cord_internal.cc +77 -0
  632. package/vendor/abseil-cpp/absl/strings/internal/cord_internal.h +915 -0
  633. package/vendor/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +1232 -0
  634. package/vendor/abseil-cpp/absl/strings/internal/cord_rep_btree.h +936 -0
  635. package/vendor/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc +187 -0
  636. package/vendor/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.h +267 -0
  637. package/vendor/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator_test.cc +346 -0
  638. package/vendor/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.cc +69 -0
  639. package/vendor/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.h +212 -0
  640. package/vendor/abseil-cpp/absl/strings/internal/cord_rep_btree_reader_test.cc +293 -0
  641. package/vendor/abseil-cpp/absl/strings/internal/cord_rep_btree_test.cc +1568 -0
  642. package/vendor/abseil-cpp/absl/strings/internal/cord_rep_consume.cc +62 -0
  643. package/vendor/abseil-cpp/absl/strings/internal/cord_rep_consume.h +50 -0
  644. package/vendor/abseil-cpp/absl/strings/internal/cord_rep_crc.cc +56 -0
  645. package/vendor/abseil-cpp/absl/strings/internal/cord_rep_crc.h +103 -0
  646. package/vendor/abseil-cpp/absl/strings/internal/cord_rep_crc_test.cc +130 -0
  647. package/vendor/abseil-cpp/absl/strings/internal/cord_rep_flat.h +187 -0
  648. package/vendor/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +773 -0
  649. package/vendor/abseil-cpp/absl/strings/internal/cord_rep_ring.h +607 -0
  650. package/vendor/abseil-cpp/absl/strings/internal/cord_rep_ring_reader.h +118 -0
  651. package/vendor/abseil-cpp/absl/strings/internal/cord_rep_test_util.h +205 -0
  652. package/vendor/abseil-cpp/absl/strings/internal/cordz_functions.cc +96 -0
  653. package/vendor/abseil-cpp/absl/strings/internal/cordz_functions.h +77 -0
  654. package/vendor/abseil-cpp/absl/strings/internal/cordz_functions_test.cc +149 -0
  655. package/vendor/abseil-cpp/absl/strings/internal/cordz_handle.cc +139 -0
  656. package/vendor/abseil-cpp/absl/strings/internal/cordz_handle.h +131 -0
  657. package/vendor/abseil-cpp/absl/strings/internal/cordz_handle_test.cc +265 -0
  658. package/vendor/abseil-cpp/absl/strings/internal/cordz_info.cc +421 -0
  659. package/vendor/abseil-cpp/absl/strings/internal/cordz_info.h +298 -0
  660. package/vendor/abseil-cpp/absl/strings/internal/cordz_info_statistics_test.cc +557 -0
  661. package/vendor/abseil-cpp/absl/strings/internal/cordz_info_test.cc +342 -0
  662. package/vendor/abseil-cpp/absl/strings/internal/cordz_sample_token.cc +64 -0
  663. package/vendor/abseil-cpp/absl/strings/internal/cordz_sample_token.h +97 -0
  664. package/vendor/abseil-cpp/absl/strings/internal/cordz_sample_token_test.cc +208 -0
  665. package/vendor/abseil-cpp/absl/strings/internal/cordz_statistics.h +88 -0
  666. package/vendor/abseil-cpp/absl/strings/internal/cordz_update_scope.h +71 -0
  667. package/vendor/abseil-cpp/absl/strings/internal/cordz_update_scope_test.cc +49 -0
  668. package/vendor/abseil-cpp/absl/strings/internal/cordz_update_tracker.h +123 -0
  669. package/vendor/abseil-cpp/absl/strings/internal/cordz_update_tracker_test.cc +147 -0
  670. package/vendor/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.cc +93 -0
  671. package/vendor/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.h +34 -0
  672. package/vendor/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance_test.cc +99 -0
  673. package/vendor/abseil-cpp/absl/strings/internal/escaping.cc +183 -0
  674. package/vendor/abseil-cpp/absl/strings/internal/escaping.h +56 -0
  675. package/vendor/abseil-cpp/absl/strings/internal/escaping_test_common.h +133 -0
  676. package/vendor/abseil-cpp/absl/strings/internal/has_absl_stringify.h +55 -0
  677. package/vendor/abseil-cpp/absl/strings/internal/memutil.cc +115 -0
  678. package/vendor/abseil-cpp/absl/strings/internal/memutil.h +148 -0
  679. package/vendor/abseil-cpp/absl/strings/internal/memutil_benchmark.cc +323 -0
  680. package/vendor/abseil-cpp/absl/strings/internal/memutil_test.cc +179 -0
  681. package/vendor/abseil-cpp/absl/strings/internal/numbers_test_common.h +184 -0
  682. package/vendor/abseil-cpp/absl/strings/internal/ostringstream.cc +43 -0
  683. package/vendor/abseil-cpp/absl/strings/internal/ostringstream.h +114 -0
  684. package/vendor/abseil-cpp/absl/strings/internal/ostringstream_benchmark.cc +106 -0
  685. package/vendor/abseil-cpp/absl/strings/internal/ostringstream_test.cc +131 -0
  686. package/vendor/abseil-cpp/absl/strings/internal/pow10_helper.cc +122 -0
  687. package/vendor/abseil-cpp/absl/strings/internal/pow10_helper.h +40 -0
  688. package/vendor/abseil-cpp/absl/strings/internal/pow10_helper_test.cc +122 -0
  689. package/vendor/abseil-cpp/absl/strings/internal/resize_uninitialized.h +119 -0
  690. package/vendor/abseil-cpp/absl/strings/internal/resize_uninitialized_test.cc +133 -0
  691. package/vendor/abseil-cpp/absl/strings/internal/stl_type_traits.h +248 -0
  692. package/vendor/abseil-cpp/absl/strings/internal/str_format/arg.cc +555 -0
  693. package/vendor/abseil-cpp/absl/strings/internal/str_format/arg.h +623 -0
  694. package/vendor/abseil-cpp/absl/strings/internal/str_format/arg_test.cc +130 -0
  695. package/vendor/abseil-cpp/absl/strings/internal/str_format/bind.cc +259 -0
  696. package/vendor/abseil-cpp/absl/strings/internal/str_format/bind.h +249 -0
  697. package/vendor/abseil-cpp/absl/strings/internal/str_format/bind_test.cc +157 -0
  698. package/vendor/abseil-cpp/absl/strings/internal/str_format/checker.h +100 -0
  699. package/vendor/abseil-cpp/absl/strings/internal/str_format/checker_test.cc +176 -0
  700. package/vendor/abseil-cpp/absl/strings/internal/str_format/constexpr_parser.h +351 -0
  701. package/vendor/abseil-cpp/absl/strings/internal/str_format/convert_test.cc +1257 -0
  702. package/vendor/abseil-cpp/absl/strings/internal/str_format/extension.cc +75 -0
  703. package/vendor/abseil-cpp/absl/strings/internal/str_format/extension.h +450 -0
  704. package/vendor/abseil-cpp/absl/strings/internal/str_format/extension_test.cc +109 -0
  705. package/vendor/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +1457 -0
  706. package/vendor/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +37 -0
  707. package/vendor/abseil-cpp/absl/strings/internal/str_format/output.cc +72 -0
  708. package/vendor/abseil-cpp/absl/strings/internal/str_format/output.h +97 -0
  709. package/vendor/abseil-cpp/absl/strings/internal/str_format/output_test.cc +79 -0
  710. package/vendor/abseil-cpp/absl/strings/internal/str_format/parser.cc +140 -0
  711. package/vendor/abseil-cpp/absl/strings/internal/str_format/parser.h +268 -0
  712. package/vendor/abseil-cpp/absl/strings/internal/str_format/parser_test.cc +438 -0
  713. package/vendor/abseil-cpp/absl/strings/internal/str_join_internal.h +317 -0
  714. package/vendor/abseil-cpp/absl/strings/internal/str_split_internal.h +431 -0
  715. package/vendor/abseil-cpp/absl/strings/internal/string_constant.h +72 -0
  716. package/vendor/abseil-cpp/absl/strings/internal/string_constant_test.cc +60 -0
  717. package/vendor/abseil-cpp/absl/strings/internal/stringify_sink.cc +28 -0
  718. package/vendor/abseil-cpp/absl/strings/internal/stringify_sink.h +57 -0
  719. package/vendor/abseil-cpp/absl/strings/internal/utf8.cc +53 -0
  720. package/vendor/abseil-cpp/absl/strings/internal/utf8.h +50 -0
  721. package/vendor/abseil-cpp/absl/strings/internal/utf8_test.cc +66 -0
  722. package/vendor/abseil-cpp/absl/strings/match.cc +43 -0
  723. package/vendor/abseil-cpp/absl/strings/match.h +100 -0
  724. package/vendor/abseil-cpp/absl/strings/match_test.cc +127 -0
  725. package/vendor/abseil-cpp/absl/strings/numbers.cc +1096 -0
  726. package/vendor/abseil-cpp/absl/strings/numbers.h +303 -0
  727. package/vendor/abseil-cpp/absl/strings/numbers_benchmark.cc +286 -0
  728. package/vendor/abseil-cpp/absl/strings/numbers_test.cc +1722 -0
  729. package/vendor/abseil-cpp/absl/strings/str_cat.cc +249 -0
  730. package/vendor/abseil-cpp/absl/strings/str_cat.h +462 -0
  731. package/vendor/abseil-cpp/absl/strings/str_cat_benchmark.cc +187 -0
  732. package/vendor/abseil-cpp/absl/strings/str_cat_test.cc +665 -0
  733. package/vendor/abseil-cpp/absl/strings/str_format.h +874 -0
  734. package/vendor/abseil-cpp/absl/strings/str_format_test.cc +1212 -0
  735. package/vendor/abseil-cpp/absl/strings/str_join.h +287 -0
  736. package/vendor/abseil-cpp/absl/strings/str_join_benchmark.cc +97 -0
  737. package/vendor/abseil-cpp/absl/strings/str_join_test.cc +608 -0
  738. package/vendor/abseil-cpp/absl/strings/str_replace.cc +82 -0
  739. package/vendor/abseil-cpp/absl/strings/str_replace.h +219 -0
  740. package/vendor/abseil-cpp/absl/strings/str_replace_benchmark.cc +122 -0
  741. package/vendor/abseil-cpp/absl/strings/str_replace_test.cc +341 -0
  742. package/vendor/abseil-cpp/absl/strings/str_split.cc +139 -0
  743. package/vendor/abseil-cpp/absl/strings/str_split.h +547 -0
  744. package/vendor/abseil-cpp/absl/strings/str_split_benchmark.cc +180 -0
  745. package/vendor/abseil-cpp/absl/strings/str_split_test.cc +981 -0
  746. package/vendor/abseil-cpp/absl/strings/string_view.cc +219 -0
  747. package/vendor/abseil-cpp/absl/strings/string_view.h +704 -0
  748. package/vendor/abseil-cpp/absl/strings/string_view_benchmark.cc +381 -0
  749. package/vendor/abseil-cpp/absl/strings/string_view_test.cc +1308 -0
  750. package/vendor/abseil-cpp/absl/strings/strip.h +93 -0
  751. package/vendor/abseil-cpp/absl/strings/strip_test.cc +198 -0
  752. package/vendor/abseil-cpp/absl/strings/substitute.cc +174 -0
  753. package/vendor/abseil-cpp/absl/strings/substitute.h +755 -0
  754. package/vendor/abseil-cpp/absl/strings/substitute_test.cc +285 -0
  755. package/vendor/abseil-cpp/absl/synchronization/BUILD.bazel +333 -0
  756. package/vendor/abseil-cpp/absl/synchronization/CMakeLists.txt +235 -0
  757. package/vendor/abseil-cpp/absl/synchronization/barrier.cc +52 -0
  758. package/vendor/abseil-cpp/absl/synchronization/barrier.h +79 -0
  759. package/vendor/abseil-cpp/absl/synchronization/barrier_test.cc +75 -0
  760. package/vendor/abseil-cpp/absl/synchronization/blocking_counter.cc +67 -0
  761. package/vendor/abseil-cpp/absl/synchronization/blocking_counter.h +101 -0
  762. package/vendor/abseil-cpp/absl/synchronization/blocking_counter_benchmark.cc +83 -0
  763. package/vendor/abseil-cpp/absl/synchronization/blocking_counter_test.cc +80 -0
  764. package/vendor/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +143 -0
  765. package/vendor/abseil-cpp/absl/synchronization/internal/create_thread_identity.h +56 -0
  766. package/vendor/abseil-cpp/absl/synchronization/internal/futex.h +157 -0
  767. package/vendor/abseil-cpp/absl/synchronization/internal/graphcycles.cc +704 -0
  768. package/vendor/abseil-cpp/absl/synchronization/internal/graphcycles.h +141 -0
  769. package/vendor/abseil-cpp/absl/synchronization/internal/graphcycles_benchmark.cc +44 -0
  770. package/vendor/abseil-cpp/absl/synchronization/internal/graphcycles_test.cc +464 -0
  771. package/vendor/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +170 -0
  772. package/vendor/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +102 -0
  773. package/vendor/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +110 -0
  774. package/vendor/abseil-cpp/absl/synchronization/internal/per_thread_sem_test.cc +190 -0
  775. package/vendor/abseil-cpp/absl/synchronization/internal/thread_pool.h +96 -0
  776. package/vendor/abseil-cpp/absl/synchronization/internal/waiter.cc +403 -0
  777. package/vendor/abseil-cpp/absl/synchronization/internal/waiter.h +161 -0
  778. package/vendor/abseil-cpp/absl/synchronization/lifetime_test.cc +181 -0
  779. package/vendor/abseil-cpp/absl/synchronization/mutex.cc +2835 -0
  780. package/vendor/abseil-cpp/absl/synchronization/mutex.h +1129 -0
  781. package/vendor/abseil-cpp/absl/synchronization/mutex_benchmark.cc +310 -0
  782. package/vendor/abseil-cpp/absl/synchronization/mutex_method_pointer_test.cc +138 -0
  783. package/vendor/abseil-cpp/absl/synchronization/mutex_test.cc +1733 -0
  784. package/vendor/abseil-cpp/absl/synchronization/notification.cc +77 -0
  785. package/vendor/abseil-cpp/absl/synchronization/notification.h +123 -0
  786. package/vendor/abseil-cpp/absl/synchronization/notification_test.cc +133 -0
  787. package/vendor/abseil-cpp/absl/time/BUILD.bazel +148 -0
  788. package/vendor/abseil-cpp/absl/time/CMakeLists.txt +140 -0
  789. package/vendor/abseil-cpp/absl/time/civil_time.cc +199 -0
  790. package/vendor/abseil-cpp/absl/time/civil_time.h +563 -0
  791. package/vendor/abseil-cpp/absl/time/civil_time_benchmark.cc +127 -0
  792. package/vendor/abseil-cpp/absl/time/civil_time_test.cc +1243 -0
  793. package/vendor/abseil-cpp/absl/time/clock.cc +591 -0
  794. package/vendor/abseil-cpp/absl/time/clock.h +74 -0
  795. package/vendor/abseil-cpp/absl/time/clock_benchmark.cc +74 -0
  796. package/vendor/abseil-cpp/absl/time/clock_test.cc +122 -0
  797. package/vendor/abseil-cpp/absl/time/duration.cc +955 -0
  798. package/vendor/abseil-cpp/absl/time/duration_benchmark.cc +444 -0
  799. package/vendor/abseil-cpp/absl/time/duration_test.cc +1856 -0
  800. package/vendor/abseil-cpp/absl/time/flag_test.cc +147 -0
  801. package/vendor/abseil-cpp/absl/time/format.cc +161 -0
  802. package/vendor/abseil-cpp/absl/time/format_benchmark.cc +64 -0
  803. package/vendor/abseil-cpp/absl/time/format_test.cc +441 -0
  804. package/vendor/abseil-cpp/absl/time/internal/cctz/BUILD.bazel +159 -0
  805. package/vendor/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time.h +332 -0
  806. package/vendor/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +632 -0
  807. package/vendor/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +459 -0
  808. package/vendor/abseil-cpp/absl/time/internal/cctz/include/cctz/zone_info_source.h +102 -0
  809. package/vendor/abseil-cpp/absl/time/internal/cctz/src/cctz_benchmark.cc +1033 -0
  810. package/vendor/abseil-cpp/absl/time/internal/cctz/src/civil_time_detail.cc +94 -0
  811. package/vendor/abseil-cpp/absl/time/internal/cctz/src/civil_time_test.cc +1066 -0
  812. package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc +140 -0
  813. package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.h +52 -0
  814. package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +1029 -0
  815. package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_format_test.cc +1688 -0
  816. package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.cc +45 -0
  817. package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.h +77 -0
  818. package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc +113 -0
  819. package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.h +93 -0
  820. package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +1048 -0
  821. package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.h +137 -0
  822. package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +315 -0
  823. package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.h +55 -0
  824. package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +237 -0
  825. package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup_test.cc +1504 -0
  826. package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.cc +159 -0
  827. package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.h +132 -0
  828. package/vendor/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +122 -0
  829. package/vendor/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +116 -0
  830. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/README.zoneinfo +38 -0
  831. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/version +1 -0
  832. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Abidjan +0 -0
  833. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Accra +0 -0
  834. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Addis_Ababa +0 -0
  835. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Algiers +0 -0
  836. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Asmara +0 -0
  837. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Asmera +0 -0
  838. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Bamako +0 -0
  839. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Bangui +0 -0
  840. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Banjul +0 -0
  841. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Bissau +0 -0
  842. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Blantyre +0 -0
  843. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Brazzaville +0 -0
  844. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Bujumbura +0 -0
  845. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Cairo +0 -0
  846. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Casablanca +0 -0
  847. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Ceuta +0 -0
  848. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Conakry +0 -0
  849. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Dakar +0 -0
  850. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Dar_es_Salaam +0 -0
  851. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Djibouti +0 -0
  852. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Douala +0 -0
  853. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/El_Aaiun +0 -0
  854. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Freetown +0 -0
  855. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Gaborone +0 -0
  856. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Harare +0 -0
  857. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Johannesburg +0 -0
  858. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Juba +0 -0
  859. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Kampala +0 -0
  860. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Khartoum +0 -0
  861. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Kigali +0 -0
  862. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Kinshasa +0 -0
  863. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Lagos +0 -0
  864. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Libreville +0 -0
  865. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Lome +0 -0
  866. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Luanda +0 -0
  867. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Lubumbashi +0 -0
  868. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Lusaka +0 -0
  869. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Malabo +0 -0
  870. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Maputo +0 -0
  871. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Maseru +0 -0
  872. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Mbabane +0 -0
  873. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Mogadishu +0 -0
  874. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Monrovia +0 -0
  875. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Nairobi +0 -0
  876. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Ndjamena +0 -0
  877. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Niamey +0 -0
  878. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Nouakchott +0 -0
  879. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Ouagadougou +0 -0
  880. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Porto-Novo +0 -0
  881. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Sao_Tome +0 -0
  882. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Timbuktu +0 -0
  883. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Tripoli +0 -0
  884. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Tunis +0 -0
  885. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Windhoek +0 -0
  886. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Adak +0 -0
  887. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Anchorage +0 -0
  888. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Anguilla +0 -0
  889. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Antigua +0 -0
  890. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Araguaina +0 -0
  891. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Buenos_Aires +0 -0
  892. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Catamarca +0 -0
  893. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/ComodRivadavia +0 -0
  894. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Cordoba +0 -0
  895. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Jujuy +0 -0
  896. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/La_Rioja +0 -0
  897. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Mendoza +0 -0
  898. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Rio_Gallegos +0 -0
  899. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Salta +0 -0
  900. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/San_Juan +0 -0
  901. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/San_Luis +0 -0
  902. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Tucuman +0 -0
  903. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Ushuaia +0 -0
  904. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Aruba +0 -0
  905. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Asuncion +0 -0
  906. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Atikokan +0 -0
  907. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Atka +0 -0
  908. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Bahia +0 -0
  909. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Bahia_Banderas +0 -0
  910. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Barbados +0 -0
  911. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Belem +0 -0
  912. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Belize +0 -0
  913. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Blanc-Sablon +0 -0
  914. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Boa_Vista +0 -0
  915. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Bogota +0 -0
  916. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Boise +0 -0
  917. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Buenos_Aires +0 -0
  918. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Cambridge_Bay +0 -0
  919. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Campo_Grande +0 -0
  920. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Cancun +0 -0
  921. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Caracas +0 -0
  922. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Catamarca +0 -0
  923. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Cayenne +0 -0
  924. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Cayman +0 -0
  925. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Chicago +0 -0
  926. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Chihuahua +0 -0
  927. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Ciudad_Juarez +0 -0
  928. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Coral_Harbour +0 -0
  929. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Cordoba +0 -0
  930. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Costa_Rica +0 -0
  931. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Creston +0 -0
  932. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Cuiaba +0 -0
  933. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Curacao +0 -0
  934. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Danmarkshavn +0 -0
  935. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Dawson +0 -0
  936. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Dawson_Creek +0 -0
  937. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Denver +0 -0
  938. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Detroit +0 -0
  939. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Dominica +0 -0
  940. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Edmonton +0 -0
  941. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Eirunepe +0 -0
  942. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/El_Salvador +0 -0
  943. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Ensenada +0 -0
  944. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Fort_Nelson +0 -0
  945. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Fort_Wayne +0 -0
  946. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Fortaleza +0 -0
  947. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Glace_Bay +0 -0
  948. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Godthab +0 -0
  949. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Goose_Bay +0 -0
  950. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Grand_Turk +0 -0
  951. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Grenada +0 -0
  952. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Guadeloupe +0 -0
  953. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Guatemala +0 -0
  954. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Guayaquil +0 -0
  955. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Guyana +0 -0
  956. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Halifax +0 -0
  957. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Havana +0 -0
  958. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Hermosillo +0 -0
  959. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Indiana/Indianapolis +0 -0
  960. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Indiana/Knox +0 -0
  961. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Indiana/Marengo +0 -0
  962. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Indiana/Petersburg +0 -0
  963. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Indiana/Tell_City +0 -0
  964. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Indiana/Vevay +0 -0
  965. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Indiana/Vincennes +0 -0
  966. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Indiana/Winamac +0 -0
  967. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Indianapolis +0 -0
  968. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Inuvik +0 -0
  969. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Iqaluit +0 -0
  970. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Jamaica +0 -0
  971. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Jujuy +0 -0
  972. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Juneau +0 -0
  973. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Kentucky/Louisville +0 -0
  974. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Kentucky/Monticello +0 -0
  975. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Knox_IN +0 -0
  976. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Kralendijk +0 -0
  977. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/La_Paz +0 -0
  978. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Lima +0 -0
  979. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Los_Angeles +0 -0
  980. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Louisville +0 -0
  981. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Lower_Princes +0 -0
  982. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Maceio +0 -0
  983. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Managua +0 -0
  984. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Manaus +0 -0
  985. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Marigot +0 -0
  986. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Martinique +0 -0
  987. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Matamoros +0 -0
  988. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Mazatlan +0 -0
  989. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Mendoza +0 -0
  990. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Menominee +0 -0
  991. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Merida +0 -0
  992. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Metlakatla +0 -0
  993. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Mexico_City +0 -0
  994. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Miquelon +0 -0
  995. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Moncton +0 -0
  996. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Monterrey +0 -0
  997. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Montevideo +0 -0
  998. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Montreal +0 -0
  999. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Montserrat +0 -0
  1000. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Nassau +0 -0
  1001. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/New_York +0 -0
  1002. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Nipigon +0 -0
  1003. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Nome +0 -0
  1004. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Noronha +0 -0
  1005. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/North_Dakota/Beulah +0 -0
  1006. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/North_Dakota/Center +0 -0
  1007. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/North_Dakota/New_Salem +0 -0
  1008. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Nuuk +0 -0
  1009. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Ojinaga +0 -0
  1010. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Panama +0 -0
  1011. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Pangnirtung +0 -0
  1012. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Paramaribo +0 -0
  1013. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Phoenix +0 -0
  1014. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Port-au-Prince +0 -0
  1015. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Port_of_Spain +0 -0
  1016. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Porto_Acre +0 -0
  1017. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Porto_Velho +0 -0
  1018. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Puerto_Rico +0 -0
  1019. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Punta_Arenas +0 -0
  1020. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Rainy_River +0 -0
  1021. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Rankin_Inlet +0 -0
  1022. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Recife +0 -0
  1023. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Regina +0 -0
  1024. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Resolute +0 -0
  1025. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Rio_Branco +0 -0
  1026. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Rosario +0 -0
  1027. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Santa_Isabel +0 -0
  1028. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Santarem +0 -0
  1029. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Santiago +0 -0
  1030. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Santo_Domingo +0 -0
  1031. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Sao_Paulo +0 -0
  1032. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Scoresbysund +0 -0
  1033. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Shiprock +0 -0
  1034. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Sitka +0 -0
  1035. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/St_Barthelemy +0 -0
  1036. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/St_Johns +0 -0
  1037. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/St_Kitts +0 -0
  1038. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/St_Lucia +0 -0
  1039. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/St_Thomas +0 -0
  1040. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/St_Vincent +0 -0
  1041. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Swift_Current +0 -0
  1042. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Tegucigalpa +0 -0
  1043. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Thule +0 -0
  1044. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Thunder_Bay +0 -0
  1045. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Tijuana +0 -0
  1046. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Toronto +0 -0
  1047. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Tortola +0 -0
  1048. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Vancouver +0 -0
  1049. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Virgin +0 -0
  1050. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Whitehorse +0 -0
  1051. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Winnipeg +0 -0
  1052. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Yakutat +0 -0
  1053. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Yellowknife +0 -0
  1054. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Casey +0 -0
  1055. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Davis +0 -0
  1056. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/DumontDUrville +0 -0
  1057. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Macquarie +0 -0
  1058. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Mawson +0 -0
  1059. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/McMurdo +0 -0
  1060. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Palmer +0 -0
  1061. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Rothera +0 -0
  1062. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/South_Pole +0 -0
  1063. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Syowa +0 -0
  1064. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Troll +0 -0
  1065. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Vostok +0 -0
  1066. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Arctic/Longyearbyen +0 -0
  1067. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Aden +0 -0
  1068. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Almaty +0 -0
  1069. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Amman +0 -0
  1070. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Anadyr +0 -0
  1071. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Aqtau +0 -0
  1072. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Aqtobe +0 -0
  1073. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ashgabat +0 -0
  1074. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ashkhabad +0 -0
  1075. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Atyrau +0 -0
  1076. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Baghdad +0 -0
  1077. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Bahrain +0 -0
  1078. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Baku +0 -0
  1079. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Bangkok +0 -0
  1080. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Barnaul +0 -0
  1081. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Beirut +0 -0
  1082. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Bishkek +0 -0
  1083. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Brunei +0 -0
  1084. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Calcutta +0 -0
  1085. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Chita +0 -0
  1086. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Choibalsan +0 -0
  1087. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Chongqing +0 -0
  1088. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Chungking +0 -0
  1089. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Colombo +0 -0
  1090. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Dacca +0 -0
  1091. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Damascus +0 -0
  1092. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Dhaka +0 -0
  1093. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Dili +0 -0
  1094. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Dubai +0 -0
  1095. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Dushanbe +0 -0
  1096. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Famagusta +0 -0
  1097. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Gaza +0 -0
  1098. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Harbin +0 -0
  1099. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Hebron +0 -0
  1100. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ho_Chi_Minh +0 -0
  1101. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Hong_Kong +0 -0
  1102. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Hovd +0 -0
  1103. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Irkutsk +0 -0
  1104. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Istanbul +0 -0
  1105. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Jakarta +0 -0
  1106. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Jayapura +0 -0
  1107. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Jerusalem +0 -0
  1108. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kabul +0 -0
  1109. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kamchatka +0 -0
  1110. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Karachi +0 -0
  1111. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kashgar +0 -0
  1112. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kathmandu +0 -0
  1113. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Katmandu +0 -0
  1114. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Khandyga +0 -0
  1115. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kolkata +0 -0
  1116. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Krasnoyarsk +0 -0
  1117. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kuala_Lumpur +0 -0
  1118. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kuching +0 -0
  1119. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kuwait +0 -0
  1120. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Macao +0 -0
  1121. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Macau +0 -0
  1122. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Magadan +0 -0
  1123. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Makassar +0 -0
  1124. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Manila +0 -0
  1125. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Muscat +0 -0
  1126. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Nicosia +0 -0
  1127. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Novokuznetsk +0 -0
  1128. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Novosibirsk +0 -0
  1129. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Omsk +0 -0
  1130. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Oral +0 -0
  1131. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Phnom_Penh +0 -0
  1132. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Pontianak +0 -0
  1133. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Pyongyang +0 -0
  1134. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Qatar +0 -0
  1135. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Qostanay +0 -0
  1136. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Qyzylorda +0 -0
  1137. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Rangoon +0 -0
  1138. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Riyadh +0 -0
  1139. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Saigon +0 -0
  1140. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Sakhalin +0 -0
  1141. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Samarkand +0 -0
  1142. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Seoul +0 -0
  1143. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Shanghai +0 -0
  1144. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Singapore +0 -0
  1145. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Srednekolymsk +0 -0
  1146. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Taipei +0 -0
  1147. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tashkent +0 -0
  1148. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tbilisi +0 -0
  1149. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tehran +0 -0
  1150. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tel_Aviv +0 -0
  1151. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Thimbu +0 -0
  1152. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Thimphu +0 -0
  1153. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tokyo +0 -0
  1154. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tomsk +0 -0
  1155. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ujung_Pandang +0 -0
  1156. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ulaanbaatar +0 -0
  1157. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ulan_Bator +0 -0
  1158. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Urumqi +0 -0
  1159. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ust-Nera +0 -0
  1160. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Vientiane +0 -0
  1161. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Vladivostok +0 -0
  1162. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Yakutsk +0 -0
  1163. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Yangon +0 -0
  1164. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Yekaterinburg +0 -0
  1165. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Yerevan +0 -0
  1166. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Azores +0 -0
  1167. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Bermuda +0 -0
  1168. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Canary +0 -0
  1169. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Cape_Verde +0 -0
  1170. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Faeroe +0 -0
  1171. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Faroe +0 -0
  1172. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Jan_Mayen +0 -0
  1173. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Madeira +0 -0
  1174. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Reykjavik +0 -0
  1175. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/South_Georgia +0 -0
  1176. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/St_Helena +0 -0
  1177. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Stanley +0 -0
  1178. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/ACT +0 -0
  1179. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/Adelaide +0 -0
  1180. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/Brisbane +0 -0
  1181. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/Broken_Hill +0 -0
  1182. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/Canberra +0 -0
  1183. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/Currie +0 -0
  1184. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/Darwin +0 -0
  1185. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/Eucla +0 -0
  1186. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/Hobart +0 -0
  1187. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/LHI +0 -0
  1188. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/Lindeman +0 -0
  1189. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/Lord_Howe +0 -0
  1190. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/Melbourne +0 -0
  1191. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/NSW +0 -0
  1192. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/North +0 -0
  1193. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/Perth +0 -0
  1194. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/Queensland +0 -0
  1195. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/South +0 -0
  1196. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/Sydney +0 -0
  1197. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/Tasmania +0 -0
  1198. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/Victoria +0 -0
  1199. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/West +0 -0
  1200. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/Yancowinna +0 -0
  1201. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Brazil/Acre +0 -0
  1202. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Brazil/DeNoronha +0 -0
  1203. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Brazil/East +0 -0
  1204. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Brazil/West +0 -0
  1205. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/CET +0 -0
  1206. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/CST6CDT +0 -0
  1207. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Canada/Atlantic +0 -0
  1208. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Canada/Central +0 -0
  1209. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Canada/Eastern +0 -0
  1210. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Canada/Mountain +0 -0
  1211. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Canada/Newfoundland +0 -0
  1212. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Canada/Pacific +0 -0
  1213. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Canada/Saskatchewan +0 -0
  1214. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Canada/Yukon +0 -0
  1215. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Chile/Continental +0 -0
  1216. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Chile/EasterIsland +0 -0
  1217. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Cuba +0 -0
  1218. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/EET +0 -0
  1219. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/EST +0 -0
  1220. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/EST5EDT +0 -0
  1221. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Egypt +0 -0
  1222. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Eire +0 -0
  1223. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT +0 -0
  1224. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+0 +0 -0
  1225. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+1 +0 -0
  1226. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+10 +0 -0
  1227. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+11 +0 -0
  1228. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+12 +0 -0
  1229. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+2 +0 -0
  1230. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+3 +0 -0
  1231. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+4 +0 -0
  1232. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+5 +0 -0
  1233. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+6 +0 -0
  1234. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+7 +0 -0
  1235. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+8 +0 -0
  1236. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+9 +0 -0
  1237. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-0 +0 -0
  1238. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-1 +0 -0
  1239. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-10 +0 -0
  1240. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-11 +0 -0
  1241. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-12 +0 -0
  1242. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-13 +0 -0
  1243. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-14 +0 -0
  1244. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-2 +0 -0
  1245. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-3 +0 -0
  1246. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-4 +0 -0
  1247. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-5 +0 -0
  1248. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-6 +0 -0
  1249. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-7 +0 -0
  1250. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-8 +0 -0
  1251. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-9 +0 -0
  1252. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT0 +0 -0
  1253. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/Greenwich +0 -0
  1254. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/UCT +0 -0
  1255. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/UTC +0 -0
  1256. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/Universal +0 -0
  1257. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/Zulu +0 -0
  1258. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Amsterdam +0 -0
  1259. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Andorra +0 -0
  1260. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Astrakhan +0 -0
  1261. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Athens +0 -0
  1262. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Belfast +0 -0
  1263. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Belgrade +0 -0
  1264. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Berlin +0 -0
  1265. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Bratislava +0 -0
  1266. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Brussels +0 -0
  1267. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Bucharest +0 -0
  1268. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Budapest +0 -0
  1269. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Busingen +0 -0
  1270. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Chisinau +0 -0
  1271. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Copenhagen +0 -0
  1272. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Dublin +0 -0
  1273. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Gibraltar +0 -0
  1274. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Guernsey +0 -0
  1275. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Helsinki +0 -0
  1276. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Isle_of_Man +0 -0
  1277. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Istanbul +0 -0
  1278. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Jersey +0 -0
  1279. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Kaliningrad +0 -0
  1280. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Kiev +0 -0
  1281. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Kirov +0 -0
  1282. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Kyiv +0 -0
  1283. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Lisbon +0 -0
  1284. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Ljubljana +0 -0
  1285. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/London +0 -0
  1286. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Luxembourg +0 -0
  1287. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Madrid +0 -0
  1288. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Malta +0 -0
  1289. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Mariehamn +0 -0
  1290. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Minsk +0 -0
  1291. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Monaco +0 -0
  1292. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Moscow +0 -0
  1293. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Nicosia +0 -0
  1294. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Oslo +0 -0
  1295. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Paris +0 -0
  1296. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Podgorica +0 -0
  1297. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Prague +0 -0
  1298. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Riga +0 -0
  1299. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Rome +0 -0
  1300. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Samara +0 -0
  1301. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/San_Marino +0 -0
  1302. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Sarajevo +0 -0
  1303. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Saratov +0 -0
  1304. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Simferopol +0 -0
  1305. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Skopje +0 -0
  1306. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Sofia +0 -0
  1307. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Stockholm +0 -0
  1308. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Tallinn +0 -0
  1309. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Tirane +0 -0
  1310. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Tiraspol +0 -0
  1311. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Ulyanovsk +0 -0
  1312. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Uzhgorod +0 -0
  1313. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Vaduz +0 -0
  1314. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Vatican +0 -0
  1315. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Vienna +0 -0
  1316. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Vilnius +0 -0
  1317. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Volgograd +0 -0
  1318. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Warsaw +0 -0
  1319. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Zagreb +0 -0
  1320. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Zaporozhye +0 -0
  1321. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Zurich +0 -0
  1322. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Factory +0 -0
  1323. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/GB +0 -0
  1324. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/GB-Eire +0 -0
  1325. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/GMT +0 -0
  1326. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/GMT+0 +0 -0
  1327. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/GMT-0 +0 -0
  1328. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/GMT0 +0 -0
  1329. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Greenwich +0 -0
  1330. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/HST +0 -0
  1331. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Hongkong +0 -0
  1332. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Iceland +0 -0
  1333. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Indian/Antananarivo +0 -0
  1334. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Indian/Chagos +0 -0
  1335. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Indian/Christmas +0 -0
  1336. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Indian/Cocos +0 -0
  1337. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Indian/Comoro +0 -0
  1338. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Indian/Kerguelen +0 -0
  1339. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Indian/Mahe +0 -0
  1340. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Indian/Maldives +0 -0
  1341. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Indian/Mauritius +0 -0
  1342. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Indian/Mayotte +0 -0
  1343. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Indian/Reunion +0 -0
  1344. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Iran +0 -0
  1345. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Israel +0 -0
  1346. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Jamaica +0 -0
  1347. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Japan +0 -0
  1348. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Kwajalein +0 -0
  1349. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Libya +0 -0
  1350. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/MET +0 -0
  1351. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/MST +0 -0
  1352. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/MST7MDT +0 -0
  1353. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Mexico/BajaNorte +0 -0
  1354. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Mexico/BajaSur +0 -0
  1355. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Mexico/General +0 -0
  1356. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/NZ +0 -0
  1357. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/NZ-CHAT +0 -0
  1358. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Navajo +0 -0
  1359. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/PRC +0 -0
  1360. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/PST8PDT +0 -0
  1361. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Apia +0 -0
  1362. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Auckland +0 -0
  1363. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Bougainville +0 -0
  1364. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Chatham +0 -0
  1365. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Chuuk +0 -0
  1366. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Easter +0 -0
  1367. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Efate +0 -0
  1368. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Enderbury +0 -0
  1369. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Fakaofo +0 -0
  1370. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Fiji +0 -0
  1371. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Funafuti +0 -0
  1372. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Galapagos +0 -0
  1373. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Gambier +0 -0
  1374. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Guadalcanal +0 -0
  1375. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Guam +0 -0
  1376. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Honolulu +0 -0
  1377. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Johnston +0 -0
  1378. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Kanton +0 -0
  1379. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Kiritimati +0 -0
  1380. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Kosrae +0 -0
  1381. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Kwajalein +0 -0
  1382. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Majuro +0 -0
  1383. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Marquesas +0 -0
  1384. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Midway +0 -0
  1385. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Nauru +0 -0
  1386. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Niue +0 -0
  1387. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Norfolk +0 -0
  1388. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Noumea +0 -0
  1389. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Pago_Pago +0 -0
  1390. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Palau +0 -0
  1391. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Pitcairn +0 -0
  1392. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Pohnpei +0 -0
  1393. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Ponape +0 -0
  1394. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Port_Moresby +0 -0
  1395. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Rarotonga +0 -0
  1396. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Saipan +0 -0
  1397. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Samoa +0 -0
  1398. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Tahiti +0 -0
  1399. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Tarawa +0 -0
  1400. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Tongatapu +0 -0
  1401. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Truk +0 -0
  1402. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Wake +0 -0
  1403. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Wallis +0 -0
  1404. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Yap +0 -0
  1405. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Poland +0 -0
  1406. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Portugal +0 -0
  1407. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/ROC +0 -0
  1408. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/ROK +0 -0
  1409. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Singapore +0 -0
  1410. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Turkey +0 -0
  1411. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/UCT +0 -0
  1412. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/US/Alaska +0 -0
  1413. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/US/Aleutian +0 -0
  1414. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/US/Arizona +0 -0
  1415. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/US/Central +0 -0
  1416. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/US/East-Indiana +0 -0
  1417. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/US/Eastern +0 -0
  1418. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/US/Hawaii +0 -0
  1419. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/US/Indiana-Starke +0 -0
  1420. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/US/Michigan +0 -0
  1421. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/US/Mountain +0 -0
  1422. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/US/Pacific +0 -0
  1423. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/US/Samoa +0 -0
  1424. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/UTC +0 -0
  1425. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Universal +0 -0
  1426. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/W-SU +0 -0
  1427. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/WET +0 -0
  1428. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Zulu +0 -0
  1429. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/iso3166.tab +274 -0
  1430. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/zone1970.tab +372 -0
  1431. package/vendor/abseil-cpp/absl/time/internal/get_current_time_chrono.inc +31 -0
  1432. package/vendor/abseil-cpp/absl/time/internal/get_current_time_posix.inc +24 -0
  1433. package/vendor/abseil-cpp/absl/time/internal/test_util.cc +32 -0
  1434. package/vendor/abseil-cpp/absl/time/internal/test_util.h +33 -0
  1435. package/vendor/abseil-cpp/absl/time/time.cc +500 -0
  1436. package/vendor/abseil-cpp/absl/time/time.h +1715 -0
  1437. package/vendor/abseil-cpp/absl/time/time_benchmark.cc +321 -0
  1438. package/vendor/abseil-cpp/absl/time/time_test.cc +1290 -0
  1439. package/vendor/abseil-cpp/absl/time/time_zone_test.cc +97 -0
  1440. package/vendor/abseil-cpp/absl/types/BUILD.bazel +336 -0
  1441. package/vendor/abseil-cpp/absl/types/CMakeLists.txt +371 -0
  1442. package/vendor/abseil-cpp/absl/types/any.h +517 -0
  1443. package/vendor/abseil-cpp/absl/types/any_exception_safety_test.cc +173 -0
  1444. package/vendor/abseil-cpp/absl/types/any_test.cc +778 -0
  1445. package/vendor/abseil-cpp/absl/types/bad_any_cast.cc +46 -0
  1446. package/vendor/abseil-cpp/absl/types/bad_any_cast.h +75 -0
  1447. package/vendor/abseil-cpp/absl/types/bad_optional_access.cc +48 -0
  1448. package/vendor/abseil-cpp/absl/types/bad_optional_access.h +78 -0
  1449. package/vendor/abseil-cpp/absl/types/bad_variant_access.cc +64 -0
  1450. package/vendor/abseil-cpp/absl/types/bad_variant_access.h +82 -0
  1451. package/vendor/abseil-cpp/absl/types/compare.h +599 -0
  1452. package/vendor/abseil-cpp/absl/types/compare_test.cc +389 -0
  1453. package/vendor/abseil-cpp/absl/types/internal/conformance_aliases.h +447 -0
  1454. package/vendor/abseil-cpp/absl/types/internal/conformance_archetype.h +978 -0
  1455. package/vendor/abseil-cpp/absl/types/internal/conformance_profile.h +933 -0
  1456. package/vendor/abseil-cpp/absl/types/internal/conformance_testing.h +1386 -0
  1457. package/vendor/abseil-cpp/absl/types/internal/conformance_testing_helpers.h +391 -0
  1458. package/vendor/abseil-cpp/absl/types/internal/conformance_testing_test.cc +1556 -0
  1459. package/vendor/abseil-cpp/absl/types/internal/optional.h +404 -0
  1460. package/vendor/abseil-cpp/absl/types/internal/parentheses.h +34 -0
  1461. package/vendor/abseil-cpp/absl/types/internal/span.h +139 -0
  1462. package/vendor/abseil-cpp/absl/types/internal/transform_args.h +246 -0
  1463. package/vendor/abseil-cpp/absl/types/internal/variant.h +1634 -0
  1464. package/vendor/abseil-cpp/absl/types/optional.h +779 -0
  1465. package/vendor/abseil-cpp/absl/types/optional_exception_safety_test.cc +292 -0
  1466. package/vendor/abseil-cpp/absl/types/optional_test.cc +1675 -0
  1467. package/vendor/abseil-cpp/absl/types/span.h +749 -0
  1468. package/vendor/abseil-cpp/absl/types/span_test.cc +848 -0
  1469. package/vendor/abseil-cpp/absl/types/variant.h +866 -0
  1470. package/vendor/abseil-cpp/absl/types/variant_benchmark.cc +222 -0
  1471. package/vendor/abseil-cpp/absl/types/variant_exception_safety_test.cc +532 -0
  1472. package/vendor/abseil-cpp/absl/types/variant_test.cc +2718 -0
  1473. package/vendor/abseil-cpp/absl/utility/BUILD.bazel +54 -0
  1474. package/vendor/abseil-cpp/absl/utility/CMakeLists.txt +44 -0
  1475. package/vendor/abseil-cpp/absl/utility/utility.h +350 -0
  1476. package/vendor/abseil-cpp/absl/utility/utility_test.cc +376 -0
  1477. package/vendor/abseil-cpp/ci/absl_alternate_options.h +29 -0
  1478. package/vendor/abseil-cpp/ci/cmake_common.sh +25 -0
  1479. package/vendor/abseil-cpp/ci/cmake_install_test.sh +58 -0
  1480. package/vendor/abseil-cpp/ci/linux_clang-latest_libcxx_asan_bazel.sh +102 -0
  1481. package/vendor/abseil-cpp/ci/linux_clang-latest_libcxx_bazel.sh +100 -0
  1482. package/vendor/abseil-cpp/ci/linux_clang-latest_libcxx_tsan_bazel.sh +97 -0
  1483. package/vendor/abseil-cpp/ci/linux_clang-latest_libstdcxx_bazel.sh +95 -0
  1484. package/vendor/abseil-cpp/ci/linux_docker_containers.sh +21 -0
  1485. package/vendor/abseil-cpp/ci/linux_gcc-floor_libstdcxx_bazel.sh +92 -0
  1486. package/vendor/abseil-cpp/ci/linux_gcc-latest_libstdcxx_bazel.sh +98 -0
  1487. package/vendor/abseil-cpp/ci/linux_gcc-latest_libstdcxx_cmake.sh +66 -0
  1488. package/vendor/abseil-cpp/ci/linux_gcc_alpine_cmake.sh +65 -0
  1489. package/vendor/abseil-cpp/ci/macos_xcode_bazel.sh +65 -0
  1490. package/vendor/abseil-cpp/ci/macos_xcode_cmake.sh +57 -0
  1491. package/vendor/abseil-cpp/conanfile.py +51 -0
  1492. package/vendor/abseil-cpp/create_lts.py +133 -0
@@ -0,0 +1,2324 @@
1
+ // Copyright 2018 The Abseil Authors.
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // https://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+
15
+ #include "absl/container/internal/raw_hash_set.h"
16
+
17
+ #include <algorithm>
18
+ #include <atomic>
19
+ #include <cmath>
20
+ #include <cstdint>
21
+ #include <deque>
22
+ #include <functional>
23
+ #include <iostream>
24
+ #include <iterator>
25
+ #include <list>
26
+ #include <map>
27
+ #include <memory>
28
+ #include <numeric>
29
+ #include <ostream>
30
+ #include <random>
31
+ #include <string>
32
+ #include <type_traits>
33
+ #include <unordered_map>
34
+ #include <unordered_set>
35
+ #include <utility>
36
+ #include <vector>
37
+
38
+ #include "gmock/gmock.h"
39
+ #include "gtest/gtest.h"
40
+ #include "absl/base/attributes.h"
41
+ #include "absl/base/config.h"
42
+ #include "absl/base/internal/cycleclock.h"
43
+ #include "absl/base/internal/prefetch.h"
44
+ #include "absl/base/internal/raw_logging.h"
45
+ #include "absl/container/flat_hash_map.h"
46
+ #include "absl/container/flat_hash_set.h"
47
+ #include "absl/container/internal/container_memory.h"
48
+ #include "absl/container/internal/hash_function_defaults.h"
49
+ #include "absl/container/internal/hash_policy_testing.h"
50
+ #include "absl/container/internal/hashtable_debug.h"
51
+ #include "absl/log/log.h"
52
+ #include "absl/strings/string_view.h"
53
+
54
+ namespace absl {
55
+ ABSL_NAMESPACE_BEGIN
56
+ namespace container_internal {
57
+
58
+ struct RawHashSetTestOnlyAccess {
59
+ template <typename C>
60
+ static auto GetSlots(const C& c) -> decltype(c.slot_array()) {
61
+ return c.slot_array();
62
+ }
63
+ };
64
+
65
+ namespace {
66
+
67
+ using ::testing::ElementsAre;
68
+ using ::testing::Eq;
69
+ using ::testing::Ge;
70
+ using ::testing::Lt;
71
+ using ::testing::Pair;
72
+ using ::testing::UnorderedElementsAre;
73
+
74
+ // Convenience function to static cast to ctrl_t.
75
+ ctrl_t CtrlT(int i) { return static_cast<ctrl_t>(i); }
76
+
77
+ TEST(Util, NormalizeCapacity) {
78
+ EXPECT_EQ(1, NormalizeCapacity(0));
79
+ EXPECT_EQ(1, NormalizeCapacity(1));
80
+ EXPECT_EQ(3, NormalizeCapacity(2));
81
+ EXPECT_EQ(3, NormalizeCapacity(3));
82
+ EXPECT_EQ(7, NormalizeCapacity(4));
83
+ EXPECT_EQ(7, NormalizeCapacity(7));
84
+ EXPECT_EQ(15, NormalizeCapacity(8));
85
+ EXPECT_EQ(15, NormalizeCapacity(15));
86
+ EXPECT_EQ(15 * 2 + 1, NormalizeCapacity(15 + 1));
87
+ EXPECT_EQ(15 * 2 + 1, NormalizeCapacity(15 + 2));
88
+ }
89
+
90
+ TEST(Util, GrowthAndCapacity) {
91
+ // Verify that GrowthToCapacity gives the minimum capacity that has enough
92
+ // growth.
93
+ for (size_t growth = 0; growth < 10000; ++growth) {
94
+ SCOPED_TRACE(growth);
95
+ size_t capacity = NormalizeCapacity(GrowthToLowerboundCapacity(growth));
96
+ // The capacity is large enough for `growth`.
97
+ EXPECT_THAT(CapacityToGrowth(capacity), Ge(growth));
98
+ // For (capacity+1) < kWidth, growth should equal capacity.
99
+ if (capacity + 1 < Group::kWidth) {
100
+ EXPECT_THAT(CapacityToGrowth(capacity), Eq(capacity));
101
+ } else {
102
+ EXPECT_THAT(CapacityToGrowth(capacity), Lt(capacity));
103
+ }
104
+ if (growth != 0 && capacity > 1) {
105
+ // There is no smaller capacity that works.
106
+ EXPECT_THAT(CapacityToGrowth(capacity / 2), Lt(growth));
107
+ }
108
+ }
109
+
110
+ for (size_t capacity = Group::kWidth - 1; capacity < 10000;
111
+ capacity = 2 * capacity + 1) {
112
+ SCOPED_TRACE(capacity);
113
+ size_t growth = CapacityToGrowth(capacity);
114
+ EXPECT_THAT(growth, Lt(capacity));
115
+ EXPECT_LE(GrowthToLowerboundCapacity(growth), capacity);
116
+ EXPECT_EQ(NormalizeCapacity(GrowthToLowerboundCapacity(growth)), capacity);
117
+ }
118
+ }
119
+
120
+ TEST(Util, probe_seq) {
121
+ probe_seq<16> seq(0, 127);
122
+ auto gen = [&]() {
123
+ size_t res = seq.offset();
124
+ seq.next();
125
+ return res;
126
+ };
127
+ std::vector<size_t> offsets(8);
128
+ std::generate_n(offsets.begin(), 8, gen);
129
+ EXPECT_THAT(offsets, ElementsAre(0, 16, 48, 96, 32, 112, 80, 64));
130
+ seq = probe_seq<16>(128, 127);
131
+ std::generate_n(offsets.begin(), 8, gen);
132
+ EXPECT_THAT(offsets, ElementsAre(0, 16, 48, 96, 32, 112, 80, 64));
133
+ }
134
+
135
+ TEST(BitMask, Smoke) {
136
+ EXPECT_FALSE((BitMask<uint8_t, 8>(0)));
137
+ EXPECT_TRUE((BitMask<uint8_t, 8>(5)));
138
+
139
+ EXPECT_THAT((BitMask<uint8_t, 8>(0)), ElementsAre());
140
+ EXPECT_THAT((BitMask<uint8_t, 8>(0x1)), ElementsAre(0));
141
+ EXPECT_THAT((BitMask<uint8_t, 8>(0x2)), ElementsAre(1));
142
+ EXPECT_THAT((BitMask<uint8_t, 8>(0x3)), ElementsAre(0, 1));
143
+ EXPECT_THAT((BitMask<uint8_t, 8>(0x4)), ElementsAre(2));
144
+ EXPECT_THAT((BitMask<uint8_t, 8>(0x5)), ElementsAre(0, 2));
145
+ EXPECT_THAT((BitMask<uint8_t, 8>(0x55)), ElementsAre(0, 2, 4, 6));
146
+ EXPECT_THAT((BitMask<uint8_t, 8>(0xAA)), ElementsAre(1, 3, 5, 7));
147
+ }
148
+
149
+ TEST(BitMask, WithShift) {
150
+ // See the non-SSE version of Group for details on what this math is for.
151
+ uint64_t ctrl = 0x1716151413121110;
152
+ uint64_t hash = 0x12;
153
+ constexpr uint64_t msbs = 0x8080808080808080ULL;
154
+ constexpr uint64_t lsbs = 0x0101010101010101ULL;
155
+ auto x = ctrl ^ (lsbs * hash);
156
+ uint64_t mask = (x - lsbs) & ~x & msbs;
157
+ EXPECT_EQ(0x0000000080800000, mask);
158
+
159
+ BitMask<uint64_t, 8, 3> b(mask);
160
+ EXPECT_EQ(*b, 2);
161
+ }
162
+
163
+ TEST(BitMask, LeadingTrailing) {
164
+ EXPECT_EQ((BitMask<uint32_t, 16>(0x00001a40).LeadingZeros()), 3);
165
+ EXPECT_EQ((BitMask<uint32_t, 16>(0x00001a40).TrailingZeros()), 6);
166
+
167
+ EXPECT_EQ((BitMask<uint32_t, 16>(0x00000001).LeadingZeros()), 15);
168
+ EXPECT_EQ((BitMask<uint32_t, 16>(0x00000001).TrailingZeros()), 0);
169
+
170
+ EXPECT_EQ((BitMask<uint32_t, 16>(0x00008000).LeadingZeros()), 0);
171
+ EXPECT_EQ((BitMask<uint32_t, 16>(0x00008000).TrailingZeros()), 15);
172
+
173
+ EXPECT_EQ((BitMask<uint64_t, 8, 3>(0x0000008080808000).LeadingZeros()), 3);
174
+ EXPECT_EQ((BitMask<uint64_t, 8, 3>(0x0000008080808000).TrailingZeros()), 1);
175
+
176
+ EXPECT_EQ((BitMask<uint64_t, 8, 3>(0x0000000000000080).LeadingZeros()), 7);
177
+ EXPECT_EQ((BitMask<uint64_t, 8, 3>(0x0000000000000080).TrailingZeros()), 0);
178
+
179
+ EXPECT_EQ((BitMask<uint64_t, 8, 3>(0x8000000000000000).LeadingZeros()), 0);
180
+ EXPECT_EQ((BitMask<uint64_t, 8, 3>(0x8000000000000000).TrailingZeros()), 7);
181
+ }
182
+
183
+ TEST(Group, EmptyGroup) {
184
+ for (h2_t h = 0; h != 128; ++h) EXPECT_FALSE(Group{EmptyGroup()}.Match(h));
185
+ }
186
+
187
+ TEST(Group, Match) {
188
+ if (Group::kWidth == 16) {
189
+ ctrl_t group[] = {ctrl_t::kEmpty, CtrlT(1), ctrl_t::kDeleted, CtrlT(3),
190
+ ctrl_t::kEmpty, CtrlT(5), ctrl_t::kSentinel, CtrlT(7),
191
+ CtrlT(7), CtrlT(5), CtrlT(3), CtrlT(1),
192
+ CtrlT(1), CtrlT(1), CtrlT(1), CtrlT(1)};
193
+ EXPECT_THAT(Group{group}.Match(0), ElementsAre());
194
+ EXPECT_THAT(Group{group}.Match(1), ElementsAre(1, 11, 12, 13, 14, 15));
195
+ EXPECT_THAT(Group{group}.Match(3), ElementsAre(3, 10));
196
+ EXPECT_THAT(Group{group}.Match(5), ElementsAre(5, 9));
197
+ EXPECT_THAT(Group{group}.Match(7), ElementsAre(7, 8));
198
+ } else if (Group::kWidth == 8) {
199
+ ctrl_t group[] = {ctrl_t::kEmpty, CtrlT(1), CtrlT(2),
200
+ ctrl_t::kDeleted, CtrlT(2), CtrlT(1),
201
+ ctrl_t::kSentinel, CtrlT(1)};
202
+ EXPECT_THAT(Group{group}.Match(0), ElementsAre());
203
+ EXPECT_THAT(Group{group}.Match(1), ElementsAre(1, 5, 7));
204
+ EXPECT_THAT(Group{group}.Match(2), ElementsAre(2, 4));
205
+ } else {
206
+ FAIL() << "No test coverage for Group::kWidth==" << Group::kWidth;
207
+ }
208
+ }
209
+
210
+ TEST(Group, MaskEmpty) {
211
+ if (Group::kWidth == 16) {
212
+ ctrl_t group[] = {ctrl_t::kEmpty, CtrlT(1), ctrl_t::kDeleted, CtrlT(3),
213
+ ctrl_t::kEmpty, CtrlT(5), ctrl_t::kSentinel, CtrlT(7),
214
+ CtrlT(7), CtrlT(5), CtrlT(3), CtrlT(1),
215
+ CtrlT(1), CtrlT(1), CtrlT(1), CtrlT(1)};
216
+ EXPECT_THAT(Group{group}.MaskEmpty().LowestBitSet(), 0);
217
+ EXPECT_THAT(Group{group}.MaskEmpty().HighestBitSet(), 4);
218
+ } else if (Group::kWidth == 8) {
219
+ ctrl_t group[] = {ctrl_t::kEmpty, CtrlT(1), CtrlT(2),
220
+ ctrl_t::kDeleted, CtrlT(2), CtrlT(1),
221
+ ctrl_t::kSentinel, CtrlT(1)};
222
+ EXPECT_THAT(Group{group}.MaskEmpty().LowestBitSet(), 0);
223
+ EXPECT_THAT(Group{group}.MaskEmpty().HighestBitSet(), 0);
224
+ } else {
225
+ FAIL() << "No test coverage for Group::kWidth==" << Group::kWidth;
226
+ }
227
+ }
228
+
229
+ TEST(Group, MaskEmptyOrDeleted) {
230
+ if (Group::kWidth == 16) {
231
+ ctrl_t group[] = {ctrl_t::kEmpty, CtrlT(1), ctrl_t::kEmpty, CtrlT(3),
232
+ ctrl_t::kDeleted, CtrlT(5), ctrl_t::kSentinel, CtrlT(7),
233
+ CtrlT(7), CtrlT(5), CtrlT(3), CtrlT(1),
234
+ CtrlT(1), CtrlT(1), CtrlT(1), CtrlT(1)};
235
+ EXPECT_THAT(Group{group}.MaskEmptyOrDeleted().LowestBitSet(), 0);
236
+ EXPECT_THAT(Group{group}.MaskEmptyOrDeleted().HighestBitSet(), 4);
237
+ } else if (Group::kWidth == 8) {
238
+ ctrl_t group[] = {ctrl_t::kEmpty, CtrlT(1), CtrlT(2),
239
+ ctrl_t::kDeleted, CtrlT(2), CtrlT(1),
240
+ ctrl_t::kSentinel, CtrlT(1)};
241
+ EXPECT_THAT(Group{group}.MaskEmptyOrDeleted().LowestBitSet(), 0);
242
+ EXPECT_THAT(Group{group}.MaskEmptyOrDeleted().HighestBitSet(), 3);
243
+ } else {
244
+ FAIL() << "No test coverage for Group::kWidth==" << Group::kWidth;
245
+ }
246
+ }
247
+
248
+ TEST(Batch, DropDeletes) {
249
+ constexpr size_t kCapacity = 63;
250
+ constexpr size_t kGroupWidth = container_internal::Group::kWidth;
251
+ std::vector<ctrl_t> ctrl(kCapacity + 1 + kGroupWidth);
252
+ ctrl[kCapacity] = ctrl_t::kSentinel;
253
+ std::vector<ctrl_t> pattern = {
254
+ ctrl_t::kEmpty, CtrlT(2), ctrl_t::kDeleted, CtrlT(2),
255
+ ctrl_t::kEmpty, CtrlT(1), ctrl_t::kDeleted};
256
+ for (size_t i = 0; i != kCapacity; ++i) {
257
+ ctrl[i] = pattern[i % pattern.size()];
258
+ if (i < kGroupWidth - 1)
259
+ ctrl[i + kCapacity + 1] = pattern[i % pattern.size()];
260
+ }
261
+ ConvertDeletedToEmptyAndFullToDeleted(ctrl.data(), kCapacity);
262
+ ASSERT_EQ(ctrl[kCapacity], ctrl_t::kSentinel);
263
+ for (size_t i = 0; i < kCapacity + kGroupWidth; ++i) {
264
+ ctrl_t expected = pattern[i % (kCapacity + 1) % pattern.size()];
265
+ if (i == kCapacity) expected = ctrl_t::kSentinel;
266
+ if (expected == ctrl_t::kDeleted) expected = ctrl_t::kEmpty;
267
+ if (IsFull(expected)) expected = ctrl_t::kDeleted;
268
+ EXPECT_EQ(ctrl[i], expected)
269
+ << i << " " << static_cast<int>(pattern[i % pattern.size()]);
270
+ }
271
+ }
272
+
273
+ TEST(Group, CountLeadingEmptyOrDeleted) {
274
+ const std::vector<ctrl_t> empty_examples = {ctrl_t::kEmpty, ctrl_t::kDeleted};
275
+ const std::vector<ctrl_t> full_examples = {
276
+ CtrlT(0), CtrlT(1), CtrlT(2), CtrlT(3),
277
+ CtrlT(5), CtrlT(9), CtrlT(127), ctrl_t::kSentinel};
278
+
279
+ for (ctrl_t empty : empty_examples) {
280
+ std::vector<ctrl_t> e(Group::kWidth, empty);
281
+ EXPECT_EQ(Group::kWidth, Group{e.data()}.CountLeadingEmptyOrDeleted());
282
+ for (ctrl_t full : full_examples) {
283
+ for (size_t i = 0; i != Group::kWidth; ++i) {
284
+ std::vector<ctrl_t> f(Group::kWidth, empty);
285
+ f[i] = full;
286
+ EXPECT_EQ(i, Group{f.data()}.CountLeadingEmptyOrDeleted());
287
+ }
288
+ std::vector<ctrl_t> f(Group::kWidth, empty);
289
+ f[Group::kWidth * 2 / 3] = full;
290
+ f[Group::kWidth / 2] = full;
291
+ EXPECT_EQ(
292
+ Group::kWidth / 2, Group{f.data()}.CountLeadingEmptyOrDeleted());
293
+ }
294
+ }
295
+ }
296
+
297
+ template <class T>
298
+ struct ValuePolicy {
299
+ using slot_type = T;
300
+ using key_type = T;
301
+ using init_type = T;
302
+
303
+ template <class Allocator, class... Args>
304
+ static void construct(Allocator* alloc, slot_type* slot, Args&&... args) {
305
+ absl::allocator_traits<Allocator>::construct(*alloc, slot,
306
+ std::forward<Args>(args)...);
307
+ }
308
+
309
+ template <class Allocator>
310
+ static void destroy(Allocator* alloc, slot_type* slot) {
311
+ absl::allocator_traits<Allocator>::destroy(*alloc, slot);
312
+ }
313
+
314
+ template <class Allocator>
315
+ static void transfer(Allocator* alloc, slot_type* new_slot,
316
+ slot_type* old_slot) {
317
+ construct(alloc, new_slot, std::move(*old_slot));
318
+ destroy(alloc, old_slot);
319
+ }
320
+
321
+ static T& element(slot_type* slot) { return *slot; }
322
+
323
+ template <class F, class... Args>
324
+ static decltype(absl::container_internal::DecomposeValue(
325
+ std::declval<F>(), std::declval<Args>()...))
326
+ apply(F&& f, Args&&... args) {
327
+ return absl::container_internal::DecomposeValue(
328
+ std::forward<F>(f), std::forward<Args>(args)...);
329
+ }
330
+ };
331
+
332
+ using IntPolicy = ValuePolicy<int64_t>;
333
+ using Uint8Policy = ValuePolicy<uint8_t>;
334
+
335
+ class StringPolicy {
336
+ template <class F, class K, class V,
337
+ class = typename std::enable_if<
338
+ std::is_convertible<const K&, absl::string_view>::value>::type>
339
+ decltype(std::declval<F>()(
340
+ std::declval<const absl::string_view&>(), std::piecewise_construct,
341
+ std::declval<std::tuple<K>>(),
342
+ std::declval<V>())) static apply_impl(F&& f,
343
+ std::pair<std::tuple<K>, V> p) {
344
+ const absl::string_view& key = std::get<0>(p.first);
345
+ return std::forward<F>(f)(key, std::piecewise_construct, std::move(p.first),
346
+ std::move(p.second));
347
+ }
348
+
349
+ public:
350
+ struct slot_type {
351
+ struct ctor {};
352
+
353
+ template <class... Ts>
354
+ explicit slot_type(ctor, Ts&&... ts) : pair(std::forward<Ts>(ts)...) {}
355
+
356
+ std::pair<std::string, std::string> pair;
357
+ };
358
+
359
+ using key_type = std::string;
360
+ using init_type = std::pair<std::string, std::string>;
361
+
362
+ template <class allocator_type, class... Args>
363
+ static void construct(allocator_type* alloc, slot_type* slot, Args... args) {
364
+ std::allocator_traits<allocator_type>::construct(
365
+ *alloc, slot, typename slot_type::ctor(), std::forward<Args>(args)...);
366
+ }
367
+
368
+ template <class allocator_type>
369
+ static void destroy(allocator_type* alloc, slot_type* slot) {
370
+ std::allocator_traits<allocator_type>::destroy(*alloc, slot);
371
+ }
372
+
373
+ template <class allocator_type>
374
+ static void transfer(allocator_type* alloc, slot_type* new_slot,
375
+ slot_type* old_slot) {
376
+ construct(alloc, new_slot, std::move(old_slot->pair));
377
+ destroy(alloc, old_slot);
378
+ }
379
+
380
+ static std::pair<std::string, std::string>& element(slot_type* slot) {
381
+ return slot->pair;
382
+ }
383
+
384
+ template <class F, class... Args>
385
+ static auto apply(F&& f, Args&&... args)
386
+ -> decltype(apply_impl(std::forward<F>(f),
387
+ PairArgs(std::forward<Args>(args)...))) {
388
+ return apply_impl(std::forward<F>(f),
389
+ PairArgs(std::forward<Args>(args)...));
390
+ }
391
+ };
392
+
393
+ struct StringHash : absl::Hash<absl::string_view> {
394
+ using is_transparent = void;
395
+ };
396
+ struct StringEq : std::equal_to<absl::string_view> {
397
+ using is_transparent = void;
398
+ };
399
+
400
+ struct StringTable
401
+ : raw_hash_set<StringPolicy, StringHash, StringEq, std::allocator<int>> {
402
+ using Base = typename StringTable::raw_hash_set;
403
+ StringTable() = default;
404
+ using Base::Base;
405
+ };
406
+
407
+ struct IntTable
408
+ : raw_hash_set<IntPolicy, container_internal::hash_default_hash<int64_t>,
409
+ std::equal_to<int64_t>, std::allocator<int64_t>> {
410
+ using Base = typename IntTable::raw_hash_set;
411
+ using Base::Base;
412
+ };
413
+
414
+ struct Uint8Table
415
+ : raw_hash_set<Uint8Policy, container_internal::hash_default_hash<uint8_t>,
416
+ std::equal_to<uint8_t>, std::allocator<uint8_t>> {
417
+ using Base = typename Uint8Table::raw_hash_set;
418
+ using Base::Base;
419
+ };
420
+
421
+ template <typename T>
422
+ struct CustomAlloc : std::allocator<T> {
423
+ CustomAlloc() = default;
424
+
425
+ template <typename U>
426
+ explicit CustomAlloc(const CustomAlloc<U>& /*other*/) {}
427
+
428
+ template<class U> struct rebind {
429
+ using other = CustomAlloc<U>;
430
+ };
431
+ };
432
+
433
+ struct CustomAllocIntTable
434
+ : raw_hash_set<IntPolicy, container_internal::hash_default_hash<int64_t>,
435
+ std::equal_to<int64_t>, CustomAlloc<int64_t>> {
436
+ using Base = typename CustomAllocIntTable::raw_hash_set;
437
+ using Base::Base;
438
+ };
439
+
440
+ struct BadFastHash {
441
+ template <class T>
442
+ size_t operator()(const T&) const {
443
+ return 0;
444
+ }
445
+ };
446
+
447
+ struct BadTable : raw_hash_set<IntPolicy, BadFastHash, std::equal_to<int>,
448
+ std::allocator<int>> {
449
+ using Base = typename BadTable::raw_hash_set;
450
+ BadTable() = default;
451
+ using Base::Base;
452
+ };
453
+
454
+ TEST(Table, EmptyFunctorOptimization) {
455
+ static_assert(std::is_empty<std::equal_to<absl::string_view>>::value, "");
456
+ static_assert(std::is_empty<std::allocator<int>>::value, "");
457
+
458
+ struct MockTable {
459
+ void* infoz;
460
+ void* ctrl;
461
+ void* slots;
462
+ size_t size;
463
+ size_t capacity;
464
+ size_t growth_left;
465
+ };
466
+ struct MockTableInfozDisabled {
467
+ void* ctrl;
468
+ void* slots;
469
+ size_t size;
470
+ size_t capacity;
471
+ size_t growth_left;
472
+ };
473
+ struct StatelessHash {
474
+ size_t operator()(absl::string_view) const { return 0; }
475
+ };
476
+ struct StatefulHash : StatelessHash {
477
+ size_t dummy;
478
+ };
479
+
480
+ struct GenerationData {
481
+ size_t reserved_growth;
482
+ GenerationType* generation;
483
+ };
484
+
485
+ // Ignore unreachable-code warning. Compiler thinks one branch of each ternary
486
+ // conditional is unreachable.
487
+ #if defined(__clang__)
488
+ #pragma clang diagnostic push
489
+ #pragma clang diagnostic ignored "-Wunreachable-code"
490
+ #endif
491
+ constexpr size_t mock_size = std::is_empty<HashtablezInfoHandle>()
492
+ ? sizeof(MockTableInfozDisabled)
493
+ : sizeof(MockTable);
494
+ constexpr size_t generation_size =
495
+ SwisstableGenerationsEnabled() ? sizeof(GenerationData) : 0;
496
+ #if defined(__clang__)
497
+ #pragma clang diagnostic pop
498
+ #endif
499
+
500
+ EXPECT_EQ(
501
+ mock_size + generation_size,
502
+ sizeof(
503
+ raw_hash_set<StringPolicy, StatelessHash,
504
+ std::equal_to<absl::string_view>, std::allocator<int>>));
505
+
506
+ EXPECT_EQ(
507
+ mock_size + sizeof(StatefulHash) + generation_size,
508
+ sizeof(
509
+ raw_hash_set<StringPolicy, StatefulHash,
510
+ std::equal_to<absl::string_view>, std::allocator<int>>));
511
+ }
512
+
513
+ TEST(Table, Empty) {
514
+ IntTable t;
515
+ EXPECT_EQ(0, t.size());
516
+ EXPECT_TRUE(t.empty());
517
+ }
518
+
519
+ TEST(Table, LookupEmpty) {
520
+ IntTable t;
521
+ auto it = t.find(0);
522
+ EXPECT_TRUE(it == t.end());
523
+ }
524
+
525
+ TEST(Table, Insert1) {
526
+ IntTable t;
527
+ EXPECT_TRUE(t.find(0) == t.end());
528
+ auto res = t.emplace(0);
529
+ EXPECT_TRUE(res.second);
530
+ EXPECT_THAT(*res.first, 0);
531
+ EXPECT_EQ(1, t.size());
532
+ EXPECT_THAT(*t.find(0), 0);
533
+ }
534
+
535
+ TEST(Table, Insert2) {
536
+ IntTable t;
537
+ EXPECT_TRUE(t.find(0) == t.end());
538
+ auto res = t.emplace(0);
539
+ EXPECT_TRUE(res.second);
540
+ EXPECT_THAT(*res.first, 0);
541
+ EXPECT_EQ(1, t.size());
542
+ EXPECT_TRUE(t.find(1) == t.end());
543
+ res = t.emplace(1);
544
+ EXPECT_TRUE(res.second);
545
+ EXPECT_THAT(*res.first, 1);
546
+ EXPECT_EQ(2, t.size());
547
+ EXPECT_THAT(*t.find(0), 0);
548
+ EXPECT_THAT(*t.find(1), 1);
549
+ }
550
+
551
+ TEST(Table, InsertCollision) {
552
+ BadTable t;
553
+ EXPECT_TRUE(t.find(1) == t.end());
554
+ auto res = t.emplace(1);
555
+ EXPECT_TRUE(res.second);
556
+ EXPECT_THAT(*res.first, 1);
557
+ EXPECT_EQ(1, t.size());
558
+
559
+ EXPECT_TRUE(t.find(2) == t.end());
560
+ res = t.emplace(2);
561
+ EXPECT_THAT(*res.first, 2);
562
+ EXPECT_TRUE(res.second);
563
+ EXPECT_EQ(2, t.size());
564
+
565
+ EXPECT_THAT(*t.find(1), 1);
566
+ EXPECT_THAT(*t.find(2), 2);
567
+ }
568
+
569
+ // Test that we do not add existent element in case we need to search through
570
+ // many groups with deleted elements
571
+ TEST(Table, InsertCollisionAndFindAfterDelete) {
572
+ BadTable t; // all elements go to the same group.
573
+ // Have at least 2 groups with Group::kWidth collisions
574
+ // plus some extra collisions in the last group.
575
+ constexpr size_t kNumInserts = Group::kWidth * 2 + 5;
576
+ for (size_t i = 0; i < kNumInserts; ++i) {
577
+ auto res = t.emplace(i);
578
+ EXPECT_TRUE(res.second);
579
+ EXPECT_THAT(*res.first, i);
580
+ EXPECT_EQ(i + 1, t.size());
581
+ }
582
+
583
+ // Remove elements one by one and check
584
+ // that we still can find all other elements.
585
+ for (size_t i = 0; i < kNumInserts; ++i) {
586
+ EXPECT_EQ(1, t.erase(i)) << i;
587
+ for (size_t j = i + 1; j < kNumInserts; ++j) {
588
+ EXPECT_THAT(*t.find(j), j);
589
+ auto res = t.emplace(j);
590
+ EXPECT_FALSE(res.second) << i << " " << j;
591
+ EXPECT_THAT(*res.first, j);
592
+ EXPECT_EQ(kNumInserts - i - 1, t.size());
593
+ }
594
+ }
595
+ EXPECT_TRUE(t.empty());
596
+ }
597
+
598
+ TEST(Table, InsertWithinCapacity) {
599
+ IntTable t;
600
+ t.reserve(10);
601
+ const size_t original_capacity = t.capacity();
602
+ const auto addr = [&](int i) {
603
+ return reinterpret_cast<uintptr_t>(&*t.find(i));
604
+ };
605
+ // Inserting an element does not change capacity.
606
+ t.insert(0);
607
+ EXPECT_THAT(t.capacity(), original_capacity);
608
+ const uintptr_t original_addr_0 = addr(0);
609
+ // Inserting another element does not rehash.
610
+ t.insert(1);
611
+ EXPECT_THAT(t.capacity(), original_capacity);
612
+ EXPECT_THAT(addr(0), original_addr_0);
613
+ // Inserting lots of duplicate elements does not rehash.
614
+ for (int i = 0; i < 100; ++i) {
615
+ t.insert(i % 10);
616
+ }
617
+ EXPECT_THAT(t.capacity(), original_capacity);
618
+ EXPECT_THAT(addr(0), original_addr_0);
619
+ // Inserting a range of duplicate elements does not rehash.
620
+ std::vector<int> dup_range;
621
+ for (int i = 0; i < 100; ++i) {
622
+ dup_range.push_back(i % 10);
623
+ }
624
+ t.insert(dup_range.begin(), dup_range.end());
625
+ EXPECT_THAT(t.capacity(), original_capacity);
626
+ EXPECT_THAT(addr(0), original_addr_0);
627
+ }
628
+
629
+ TEST(Table, LazyEmplace) {
630
+ StringTable t;
631
+ bool called = false;
632
+ auto it = t.lazy_emplace("abc", [&](const StringTable::constructor& f) {
633
+ called = true;
634
+ f("abc", "ABC");
635
+ });
636
+ EXPECT_TRUE(called);
637
+ EXPECT_THAT(*it, Pair("abc", "ABC"));
638
+ called = false;
639
+ it = t.lazy_emplace("abc", [&](const StringTable::constructor& f) {
640
+ called = true;
641
+ f("abc", "DEF");
642
+ });
643
+ EXPECT_FALSE(called);
644
+ EXPECT_THAT(*it, Pair("abc", "ABC"));
645
+ }
646
+
647
+ TEST(Table, ContainsEmpty) {
648
+ IntTable t;
649
+
650
+ EXPECT_FALSE(t.contains(0));
651
+ }
652
+
653
+ TEST(Table, Contains1) {
654
+ IntTable t;
655
+
656
+ EXPECT_TRUE(t.insert(0).second);
657
+ EXPECT_TRUE(t.contains(0));
658
+ EXPECT_FALSE(t.contains(1));
659
+
660
+ EXPECT_EQ(1, t.erase(0));
661
+ EXPECT_FALSE(t.contains(0));
662
+ }
663
+
664
+ TEST(Table, Contains2) {
665
+ IntTable t;
666
+
667
+ EXPECT_TRUE(t.insert(0).second);
668
+ EXPECT_TRUE(t.contains(0));
669
+ EXPECT_FALSE(t.contains(1));
670
+
671
+ t.clear();
672
+ EXPECT_FALSE(t.contains(0));
673
+ }
674
+
675
+ int decompose_constructed;
676
+ int decompose_copy_constructed;
677
+ int decompose_copy_assigned;
678
+ int decompose_move_constructed;
679
+ int decompose_move_assigned;
680
+ struct DecomposeType {
681
+ DecomposeType(int i = 0) : i(i) { // NOLINT
682
+ ++decompose_constructed;
683
+ }
684
+
685
+ explicit DecomposeType(const char* d) : DecomposeType(*d) {}
686
+
687
+ DecomposeType(const DecomposeType& other) : i(other.i) {
688
+ ++decompose_copy_constructed;
689
+ }
690
+ DecomposeType& operator=(const DecomposeType& other) {
691
+ ++decompose_copy_assigned;
692
+ i = other.i;
693
+ return *this;
694
+ }
695
+ DecomposeType(DecomposeType&& other) : i(other.i) {
696
+ ++decompose_move_constructed;
697
+ }
698
+ DecomposeType& operator=(DecomposeType&& other) {
699
+ ++decompose_move_assigned;
700
+ i = other.i;
701
+ return *this;
702
+ }
703
+
704
+ int i;
705
+ };
706
+
707
+ struct DecomposeHash {
708
+ using is_transparent = void;
709
+ size_t operator()(const DecomposeType& a) const { return a.i; }
710
+ size_t operator()(int a) const { return a; }
711
+ size_t operator()(const char* a) const { return *a; }
712
+ };
713
+
714
+ struct DecomposeEq {
715
+ using is_transparent = void;
716
+ bool operator()(const DecomposeType& a, const DecomposeType& b) const {
717
+ return a.i == b.i;
718
+ }
719
+ bool operator()(const DecomposeType& a, int b) const { return a.i == b; }
720
+ bool operator()(const DecomposeType& a, const char* b) const {
721
+ return a.i == *b;
722
+ }
723
+ };
724
+
725
+ struct DecomposePolicy {
726
+ using slot_type = DecomposeType;
727
+ using key_type = DecomposeType;
728
+ using init_type = DecomposeType;
729
+
730
+ template <typename T>
731
+ static void construct(void*, DecomposeType* slot, T&& v) {
732
+ ::new (slot) DecomposeType(std::forward<T>(v));
733
+ }
734
+ static void destroy(void*, DecomposeType* slot) { slot->~DecomposeType(); }
735
+ static DecomposeType& element(slot_type* slot) { return *slot; }
736
+
737
+ template <class F, class T>
738
+ static auto apply(F&& f, const T& x) -> decltype(std::forward<F>(f)(x, x)) {
739
+ return std::forward<F>(f)(x, x);
740
+ }
741
+ };
742
+
743
+ template <typename Hash, typename Eq>
744
+ void TestDecompose(bool construct_three) {
745
+ DecomposeType elem{0};
746
+ const int one = 1;
747
+ const char* three_p = "3";
748
+ const auto& three = three_p;
749
+ const int elem_vector_count = 256;
750
+ std::vector<DecomposeType> elem_vector(elem_vector_count, DecomposeType{0});
751
+ std::iota(elem_vector.begin(), elem_vector.end(), 0);
752
+
753
+ using DecomposeSet =
754
+ raw_hash_set<DecomposePolicy, Hash, Eq, std::allocator<int>>;
755
+ DecomposeSet set1;
756
+
757
+ decompose_constructed = 0;
758
+ int expected_constructed = 0;
759
+ EXPECT_EQ(expected_constructed, decompose_constructed);
760
+ set1.insert(elem);
761
+ EXPECT_EQ(expected_constructed, decompose_constructed);
762
+ set1.insert(1);
763
+ EXPECT_EQ(++expected_constructed, decompose_constructed);
764
+ set1.emplace("3");
765
+ EXPECT_EQ(++expected_constructed, decompose_constructed);
766
+ EXPECT_EQ(expected_constructed, decompose_constructed);
767
+
768
+ { // insert(T&&)
769
+ set1.insert(1);
770
+ EXPECT_EQ(expected_constructed, decompose_constructed);
771
+ }
772
+
773
+ { // insert(const T&)
774
+ set1.insert(one);
775
+ EXPECT_EQ(expected_constructed, decompose_constructed);
776
+ }
777
+
778
+ { // insert(hint, T&&)
779
+ set1.insert(set1.begin(), 1);
780
+ EXPECT_EQ(expected_constructed, decompose_constructed);
781
+ }
782
+
783
+ { // insert(hint, const T&)
784
+ set1.insert(set1.begin(), one);
785
+ EXPECT_EQ(expected_constructed, decompose_constructed);
786
+ }
787
+
788
+ { // emplace(...)
789
+ set1.emplace(1);
790
+ EXPECT_EQ(expected_constructed, decompose_constructed);
791
+ set1.emplace("3");
792
+ expected_constructed += construct_three;
793
+ EXPECT_EQ(expected_constructed, decompose_constructed);
794
+ set1.emplace(one);
795
+ EXPECT_EQ(expected_constructed, decompose_constructed);
796
+ set1.emplace(three);
797
+ expected_constructed += construct_three;
798
+ EXPECT_EQ(expected_constructed, decompose_constructed);
799
+ }
800
+
801
+ { // emplace_hint(...)
802
+ set1.emplace_hint(set1.begin(), 1);
803
+ EXPECT_EQ(expected_constructed, decompose_constructed);
804
+ set1.emplace_hint(set1.begin(), "3");
805
+ expected_constructed += construct_three;
806
+ EXPECT_EQ(expected_constructed, decompose_constructed);
807
+ set1.emplace_hint(set1.begin(), one);
808
+ EXPECT_EQ(expected_constructed, decompose_constructed);
809
+ set1.emplace_hint(set1.begin(), three);
810
+ expected_constructed += construct_three;
811
+ EXPECT_EQ(expected_constructed, decompose_constructed);
812
+ }
813
+
814
+ decompose_copy_constructed = 0;
815
+ decompose_copy_assigned = 0;
816
+ decompose_move_constructed = 0;
817
+ decompose_move_assigned = 0;
818
+ int expected_copy_constructed = 0;
819
+ int expected_move_constructed = 0;
820
+ { // raw_hash_set(first, last) with random-access iterators
821
+ DecomposeSet set2(elem_vector.begin(), elem_vector.end());
822
+ // Expect exactly one copy-constructor call for each element if no
823
+ // rehashing is done.
824
+ expected_copy_constructed += elem_vector_count;
825
+ EXPECT_EQ(expected_copy_constructed, decompose_copy_constructed);
826
+ EXPECT_EQ(expected_move_constructed, decompose_move_constructed);
827
+ EXPECT_EQ(0, decompose_move_assigned);
828
+ EXPECT_EQ(0, decompose_copy_assigned);
829
+ }
830
+
831
+ { // raw_hash_set(first, last) with forward iterators
832
+ std::list<DecomposeType> elem_list(elem_vector.begin(), elem_vector.end());
833
+ expected_copy_constructed = decompose_copy_constructed;
834
+ DecomposeSet set2(elem_list.begin(), elem_list.end());
835
+ // Expect exactly N elements copied into set, expect at most 2*N elements
836
+ // moving internally for all resizing needed (for a growth factor of 2).
837
+ expected_copy_constructed += elem_vector_count;
838
+ EXPECT_EQ(expected_copy_constructed, decompose_copy_constructed);
839
+ expected_move_constructed += elem_vector_count;
840
+ EXPECT_LT(expected_move_constructed, decompose_move_constructed);
841
+ expected_move_constructed += elem_vector_count;
842
+ EXPECT_GE(expected_move_constructed, decompose_move_constructed);
843
+ EXPECT_EQ(0, decompose_move_assigned);
844
+ EXPECT_EQ(0, decompose_copy_assigned);
845
+ expected_copy_constructed = decompose_copy_constructed;
846
+ expected_move_constructed = decompose_move_constructed;
847
+ }
848
+
849
+ { // insert(first, last)
850
+ DecomposeSet set2;
851
+ set2.insert(elem_vector.begin(), elem_vector.end());
852
+ // Expect exactly N elements copied into set, expect at most 2*N elements
853
+ // moving internally for all resizing needed (for a growth factor of 2).
854
+ const int expected_new_elements = elem_vector_count;
855
+ const int expected_max_element_moves = 2 * elem_vector_count;
856
+ expected_copy_constructed += expected_new_elements;
857
+ EXPECT_EQ(expected_copy_constructed, decompose_copy_constructed);
858
+ expected_move_constructed += expected_max_element_moves;
859
+ EXPECT_GE(expected_move_constructed, decompose_move_constructed);
860
+ EXPECT_EQ(0, decompose_move_assigned);
861
+ EXPECT_EQ(0, decompose_copy_assigned);
862
+ expected_copy_constructed = decompose_copy_constructed;
863
+ expected_move_constructed = decompose_move_constructed;
864
+ }
865
+ }
866
+
867
+ TEST(Table, Decompose) {
868
+ TestDecompose<DecomposeHash, DecomposeEq>(false);
869
+
870
+ struct TransparentHashIntOverload {
871
+ size_t operator()(const DecomposeType& a) const { return a.i; }
872
+ size_t operator()(int a) const { return a; }
873
+ };
874
+ struct TransparentEqIntOverload {
875
+ bool operator()(const DecomposeType& a, const DecomposeType& b) const {
876
+ return a.i == b.i;
877
+ }
878
+ bool operator()(const DecomposeType& a, int b) const { return a.i == b; }
879
+ };
880
+ TestDecompose<TransparentHashIntOverload, DecomposeEq>(true);
881
+ TestDecompose<TransparentHashIntOverload, TransparentEqIntOverload>(true);
882
+ TestDecompose<DecomposeHash, TransparentEqIntOverload>(true);
883
+ }
884
+
885
+ // Returns the largest m such that a table with m elements has the same number
886
+ // of buckets as a table with n elements.
887
+ size_t MaxDensitySize(size_t n) {
888
+ IntTable t;
889
+ t.reserve(n);
890
+ for (size_t i = 0; i != n; ++i) t.emplace(i);
891
+ const size_t c = t.bucket_count();
892
+ while (c == t.bucket_count()) t.emplace(n++);
893
+ return t.size() - 1;
894
+ }
895
+
896
+ struct Modulo1000Hash {
897
+ size_t operator()(int x) const { return x % 1000; }
898
+ };
899
+
900
+ struct Modulo1000HashTable
901
+ : public raw_hash_set<IntPolicy, Modulo1000Hash, std::equal_to<int>,
902
+ std::allocator<int>> {};
903
+
904
+ // Test that rehash with no resize happen in case of many deleted slots.
905
+ TEST(Table, RehashWithNoResize) {
906
+ Modulo1000HashTable t;
907
+ // Adding the same length (and the same hash) strings
908
+ // to have at least kMinFullGroups groups
909
+ // with Group::kWidth collisions. Then fill up to MaxDensitySize;
910
+ const size_t kMinFullGroups = 7;
911
+ std::vector<int> keys;
912
+ for (size_t i = 0; i < MaxDensitySize(Group::kWidth * kMinFullGroups); ++i) {
913
+ int k = i * 1000;
914
+ t.emplace(k);
915
+ keys.push_back(k);
916
+ }
917
+ const size_t capacity = t.capacity();
918
+
919
+ // Remove elements from all groups except the first and the last one.
920
+ // All elements removed from full groups will be marked as ctrl_t::kDeleted.
921
+ const size_t erase_begin = Group::kWidth / 2;
922
+ const size_t erase_end = (t.size() / Group::kWidth - 1) * Group::kWidth;
923
+ for (size_t i = erase_begin; i < erase_end; ++i) {
924
+ EXPECT_EQ(1, t.erase(keys[i])) << i;
925
+ }
926
+ keys.erase(keys.begin() + erase_begin, keys.begin() + erase_end);
927
+
928
+ auto last_key = keys.back();
929
+ size_t last_key_num_probes = GetHashtableDebugNumProbes(t, last_key);
930
+
931
+ // Make sure that we have to make a lot of probes for last key.
932
+ ASSERT_GT(last_key_num_probes, kMinFullGroups);
933
+
934
+ int x = 1;
935
+ // Insert and erase one element, before inplace rehash happen.
936
+ while (last_key_num_probes == GetHashtableDebugNumProbes(t, last_key)) {
937
+ t.emplace(x);
938
+ ASSERT_EQ(capacity, t.capacity());
939
+ // All elements should be there.
940
+ ASSERT_TRUE(t.find(x) != t.end()) << x;
941
+ for (const auto& k : keys) {
942
+ ASSERT_TRUE(t.find(k) != t.end()) << k;
943
+ }
944
+ t.erase(x);
945
+ ++x;
946
+ }
947
+ }
948
+
949
+ TEST(Table, InsertEraseStressTest) {
950
+ IntTable t;
951
+ const size_t kMinElementCount = 250;
952
+ std::deque<int> keys;
953
+ size_t i = 0;
954
+ for (; i < MaxDensitySize(kMinElementCount); ++i) {
955
+ t.emplace(i);
956
+ keys.push_back(i);
957
+ }
958
+ const size_t kNumIterations = 1000000;
959
+ for (; i < kNumIterations; ++i) {
960
+ ASSERT_EQ(1, t.erase(keys.front()));
961
+ keys.pop_front();
962
+ t.emplace(i);
963
+ keys.push_back(i);
964
+ }
965
+ }
966
+
967
+ TEST(Table, InsertOverloads) {
968
+ StringTable t;
969
+ // These should all trigger the insert(init_type) overload.
970
+ t.insert({{}, {}});
971
+ t.insert({"ABC", {}});
972
+ t.insert({"DEF", "!!!"});
973
+
974
+ EXPECT_THAT(t, UnorderedElementsAre(Pair("", ""), Pair("ABC", ""),
975
+ Pair("DEF", "!!!")));
976
+ }
977
+
978
+ TEST(Table, LargeTable) {
979
+ IntTable t;
980
+ for (int64_t i = 0; i != 100000; ++i) t.emplace(i << 40);
981
+ for (int64_t i = 0; i != 100000; ++i) ASSERT_EQ(i << 40, *t.find(i << 40));
982
+ }
983
+
984
+ // Timeout if copy is quadratic as it was in Rust.
985
+ TEST(Table, EnsureNonQuadraticAsInRust) {
986
+ static const size_t kLargeSize = 1 << 15;
987
+
988
+ IntTable t;
989
+ for (size_t i = 0; i != kLargeSize; ++i) {
990
+ t.insert(i);
991
+ }
992
+
993
+ // If this is quadratic, the test will timeout.
994
+ IntTable t2;
995
+ for (const auto& entry : t) t2.insert(entry);
996
+ }
997
+
998
+ TEST(Table, ClearBug) {
999
+ IntTable t;
1000
+ constexpr size_t capacity = container_internal::Group::kWidth - 1;
1001
+ constexpr size_t max_size = capacity / 2 + 1;
1002
+ for (size_t i = 0; i < max_size; ++i) {
1003
+ t.insert(i);
1004
+ }
1005
+ ASSERT_EQ(capacity, t.capacity());
1006
+ intptr_t original = reinterpret_cast<intptr_t>(&*t.find(2));
1007
+ t.clear();
1008
+ ASSERT_EQ(capacity, t.capacity());
1009
+ for (size_t i = 0; i < max_size; ++i) {
1010
+ t.insert(i);
1011
+ }
1012
+ ASSERT_EQ(capacity, t.capacity());
1013
+ intptr_t second = reinterpret_cast<intptr_t>(&*t.find(2));
1014
+ // We are checking that original and second are close enough to each other
1015
+ // that they are probably still in the same group. This is not strictly
1016
+ // guaranteed.
1017
+ EXPECT_LT(static_cast<size_t>(std::abs(original - second)),
1018
+ capacity * sizeof(IntTable::value_type));
1019
+ }
1020
+
1021
+ TEST(Table, Erase) {
1022
+ IntTable t;
1023
+ EXPECT_TRUE(t.find(0) == t.end());
1024
+ auto res = t.emplace(0);
1025
+ EXPECT_TRUE(res.second);
1026
+ EXPECT_EQ(1, t.size());
1027
+ t.erase(res.first);
1028
+ EXPECT_EQ(0, t.size());
1029
+ EXPECT_TRUE(t.find(0) == t.end());
1030
+ }
1031
+
1032
+ TEST(Table, EraseMaintainsValidIterator) {
1033
+ IntTable t;
1034
+ const int kNumElements = 100;
1035
+ for (int i = 0; i < kNumElements; i ++) {
1036
+ EXPECT_TRUE(t.emplace(i).second);
1037
+ }
1038
+ EXPECT_EQ(t.size(), kNumElements);
1039
+
1040
+ int num_erase_calls = 0;
1041
+ auto it = t.begin();
1042
+ while (it != t.end()) {
1043
+ t.erase(it++);
1044
+ num_erase_calls++;
1045
+ }
1046
+
1047
+ EXPECT_TRUE(t.empty());
1048
+ EXPECT_EQ(num_erase_calls, kNumElements);
1049
+ }
1050
+
1051
+ // Collect N bad keys by following algorithm:
1052
+ // 1. Create an empty table and reserve it to 2 * N.
1053
+ // 2. Insert N random elements.
1054
+ // 3. Take first Group::kWidth - 1 to bad_keys array.
1055
+ // 4. Clear the table without resize.
1056
+ // 5. Go to point 2 while N keys not collected
1057
+ std::vector<int64_t> CollectBadMergeKeys(size_t N) {
1058
+ static constexpr int kGroupSize = Group::kWidth - 1;
1059
+
1060
+ auto topk_range = [](size_t b, size_t e,
1061
+ IntTable* t) -> std::vector<int64_t> {
1062
+ for (size_t i = b; i != e; ++i) {
1063
+ t->emplace(i);
1064
+ }
1065
+ std::vector<int64_t> res;
1066
+ res.reserve(kGroupSize);
1067
+ auto it = t->begin();
1068
+ for (size_t i = b; i != e && i != b + kGroupSize; ++i, ++it) {
1069
+ res.push_back(*it);
1070
+ }
1071
+ return res;
1072
+ };
1073
+
1074
+ std::vector<int64_t> bad_keys;
1075
+ bad_keys.reserve(N);
1076
+ IntTable t;
1077
+ t.reserve(N * 2);
1078
+
1079
+ for (size_t b = 0; bad_keys.size() < N; b += N) {
1080
+ auto keys = topk_range(b, b + N, &t);
1081
+ bad_keys.insert(bad_keys.end(), keys.begin(), keys.end());
1082
+ t.erase(t.begin(), t.end());
1083
+ EXPECT_TRUE(t.empty());
1084
+ }
1085
+ return bad_keys;
1086
+ }
1087
+
1088
+ struct ProbeStats {
1089
+ // Number of elements with specific probe length over all tested tables.
1090
+ std::vector<size_t> all_probes_histogram;
1091
+ // Ratios total_probe_length/size for every tested table.
1092
+ std::vector<double> single_table_ratios;
1093
+
1094
+ // Average ratio total_probe_length/size over tables.
1095
+ double AvgRatio() const {
1096
+ return std::accumulate(single_table_ratios.begin(),
1097
+ single_table_ratios.end(), 0.0) /
1098
+ single_table_ratios.size();
1099
+ }
1100
+
1101
+ // Maximum ratio total_probe_length/size over tables.
1102
+ double MaxRatio() const {
1103
+ return *std::max_element(single_table_ratios.begin(),
1104
+ single_table_ratios.end());
1105
+ }
1106
+
1107
+ // Percentile ratio total_probe_length/size over tables.
1108
+ double PercentileRatio(double Percentile = 0.95) const {
1109
+ auto r = single_table_ratios;
1110
+ auto mid = r.begin() + static_cast<size_t>(r.size() * Percentile);
1111
+ if (mid != r.end()) {
1112
+ std::nth_element(r.begin(), mid, r.end());
1113
+ return *mid;
1114
+ } else {
1115
+ return MaxRatio();
1116
+ }
1117
+ }
1118
+
1119
+ // Maximum probe length over all elements and all tables.
1120
+ size_t MaxProbe() const { return all_probes_histogram.size(); }
1121
+
1122
+ // Fraction of elements with specified probe length.
1123
+ std::vector<double> ProbeNormalizedHistogram() const {
1124
+ double total_elements = std::accumulate(all_probes_histogram.begin(),
1125
+ all_probes_histogram.end(), 0ull);
1126
+ std::vector<double> res;
1127
+ for (size_t p : all_probes_histogram) {
1128
+ res.push_back(p / total_elements);
1129
+ }
1130
+ return res;
1131
+ }
1132
+
1133
+ size_t PercentileProbe(double Percentile = 0.99) const {
1134
+ size_t idx = 0;
1135
+ for (double p : ProbeNormalizedHistogram()) {
1136
+ if (Percentile > p) {
1137
+ Percentile -= p;
1138
+ ++idx;
1139
+ } else {
1140
+ return idx;
1141
+ }
1142
+ }
1143
+ return idx;
1144
+ }
1145
+
1146
+ friend std::ostream& operator<<(std::ostream& out, const ProbeStats& s) {
1147
+ out << "{AvgRatio:" << s.AvgRatio() << ", MaxRatio:" << s.MaxRatio()
1148
+ << ", PercentileRatio:" << s.PercentileRatio()
1149
+ << ", MaxProbe:" << s.MaxProbe() << ", Probes=[";
1150
+ for (double p : s.ProbeNormalizedHistogram()) {
1151
+ out << p << ",";
1152
+ }
1153
+ out << "]}";
1154
+
1155
+ return out;
1156
+ }
1157
+ };
1158
+
1159
+ struct ExpectedStats {
1160
+ double avg_ratio;
1161
+ double max_ratio;
1162
+ std::vector<std::pair<double, double>> pecentile_ratios;
1163
+ std::vector<std::pair<double, double>> pecentile_probes;
1164
+
1165
+ friend std::ostream& operator<<(std::ostream& out, const ExpectedStats& s) {
1166
+ out << "{AvgRatio:" << s.avg_ratio << ", MaxRatio:" << s.max_ratio
1167
+ << ", PercentileRatios: [";
1168
+ for (auto el : s.pecentile_ratios) {
1169
+ out << el.first << ":" << el.second << ", ";
1170
+ }
1171
+ out << "], PercentileProbes: [";
1172
+ for (auto el : s.pecentile_probes) {
1173
+ out << el.first << ":" << el.second << ", ";
1174
+ }
1175
+ out << "]}";
1176
+
1177
+ return out;
1178
+ }
1179
+ };
1180
+
1181
+ void VerifyStats(size_t size, const ExpectedStats& exp,
1182
+ const ProbeStats& stats) {
1183
+ EXPECT_LT(stats.AvgRatio(), exp.avg_ratio) << size << " " << stats;
1184
+ EXPECT_LT(stats.MaxRatio(), exp.max_ratio) << size << " " << stats;
1185
+ for (auto pr : exp.pecentile_ratios) {
1186
+ EXPECT_LE(stats.PercentileRatio(pr.first), pr.second)
1187
+ << size << " " << pr.first << " " << stats;
1188
+ }
1189
+
1190
+ for (auto pr : exp.pecentile_probes) {
1191
+ EXPECT_LE(stats.PercentileProbe(pr.first), pr.second)
1192
+ << size << " " << pr.first << " " << stats;
1193
+ }
1194
+ }
1195
+
1196
+ using ProbeStatsPerSize = std::map<size_t, ProbeStats>;
1197
+
1198
+ // Collect total ProbeStats on num_iters iterations of the following algorithm:
1199
+ // 1. Create new table and reserve it to keys.size() * 2
1200
+ // 2. Insert all keys xored with seed
1201
+ // 3. Collect ProbeStats from final table.
1202
+ ProbeStats CollectProbeStatsOnKeysXoredWithSeed(
1203
+ const std::vector<int64_t>& keys, size_t num_iters) {
1204
+ const size_t reserve_size = keys.size() * 2;
1205
+
1206
+ ProbeStats stats;
1207
+
1208
+ int64_t seed = 0x71b1a19b907d6e33;
1209
+ while (num_iters--) {
1210
+ seed = static_cast<int64_t>(static_cast<uint64_t>(seed) * 17 + 13);
1211
+ IntTable t1;
1212
+ t1.reserve(reserve_size);
1213
+ for (const auto& key : keys) {
1214
+ t1.emplace(key ^ seed);
1215
+ }
1216
+
1217
+ auto probe_histogram = GetHashtableDebugNumProbesHistogram(t1);
1218
+ stats.all_probes_histogram.resize(
1219
+ std::max(stats.all_probes_histogram.size(), probe_histogram.size()));
1220
+ std::transform(probe_histogram.begin(), probe_histogram.end(),
1221
+ stats.all_probes_histogram.begin(),
1222
+ stats.all_probes_histogram.begin(), std::plus<size_t>());
1223
+
1224
+ size_t total_probe_seq_length = 0;
1225
+ for (size_t i = 0; i < probe_histogram.size(); ++i) {
1226
+ total_probe_seq_length += i * probe_histogram[i];
1227
+ }
1228
+ stats.single_table_ratios.push_back(total_probe_seq_length * 1.0 /
1229
+ keys.size());
1230
+ t1.erase(t1.begin(), t1.end());
1231
+ }
1232
+ return stats;
1233
+ }
1234
+
1235
+ ExpectedStats XorSeedExpectedStats() {
1236
+ constexpr bool kRandomizesInserts =
1237
+ #ifdef NDEBUG
1238
+ false;
1239
+ #else // NDEBUG
1240
+ true;
1241
+ #endif // NDEBUG
1242
+
1243
+ // The effective load factor is larger in non-opt mode because we insert
1244
+ // elements out of order.
1245
+ switch (container_internal::Group::kWidth) {
1246
+ case 8:
1247
+ if (kRandomizesInserts) {
1248
+ return {0.05,
1249
+ 1.0,
1250
+ {{0.95, 0.5}},
1251
+ {{0.95, 0}, {0.99, 2}, {0.999, 4}, {0.9999, 10}}};
1252
+ } else {
1253
+ return {0.05,
1254
+ 2.0,
1255
+ {{0.95, 0.1}},
1256
+ {{0.95, 0}, {0.99, 2}, {0.999, 4}, {0.9999, 10}}};
1257
+ }
1258
+ case 16:
1259
+ if (kRandomizesInserts) {
1260
+ return {0.1,
1261
+ 2.0,
1262
+ {{0.95, 0.1}},
1263
+ {{0.95, 0}, {0.99, 1}, {0.999, 8}, {0.9999, 15}}};
1264
+ } else {
1265
+ return {0.05,
1266
+ 1.0,
1267
+ {{0.95, 0.05}},
1268
+ {{0.95, 0}, {0.99, 1}, {0.999, 4}, {0.9999, 10}}};
1269
+ }
1270
+ }
1271
+ ABSL_RAW_LOG(FATAL, "%s", "Unknown Group width");
1272
+ return {};
1273
+ }
1274
+
1275
+ // TODO(b/80415403): Figure out why this test is so flaky, esp. on MSVC
1276
+ TEST(Table, DISABLED_EnsureNonQuadraticTopNXorSeedByProbeSeqLength) {
1277
+ ProbeStatsPerSize stats;
1278
+ std::vector<size_t> sizes = {Group::kWidth << 5, Group::kWidth << 10};
1279
+ for (size_t size : sizes) {
1280
+ stats[size] =
1281
+ CollectProbeStatsOnKeysXoredWithSeed(CollectBadMergeKeys(size), 200);
1282
+ }
1283
+ auto expected = XorSeedExpectedStats();
1284
+ for (size_t size : sizes) {
1285
+ auto& stat = stats[size];
1286
+ VerifyStats(size, expected, stat);
1287
+ LOG(INFO) << size << " " << stat;
1288
+ }
1289
+ }
1290
+
1291
+ // Collect total ProbeStats on num_iters iterations of the following algorithm:
1292
+ // 1. Create new table
1293
+ // 2. Select 10% of keys and insert 10 elements key * 17 + j * 13
1294
+ // 3. Collect ProbeStats from final table
1295
+ ProbeStats CollectProbeStatsOnLinearlyTransformedKeys(
1296
+ const std::vector<int64_t>& keys, size_t num_iters) {
1297
+ ProbeStats stats;
1298
+
1299
+ std::random_device rd;
1300
+ std::mt19937 rng(rd());
1301
+ auto linear_transform = [](size_t x, size_t y) { return x * 17 + y * 13; };
1302
+ std::uniform_int_distribution<size_t> dist(0, keys.size()-1);
1303
+ while (num_iters--) {
1304
+ IntTable t1;
1305
+ size_t num_keys = keys.size() / 10;
1306
+ size_t start = dist(rng);
1307
+ for (size_t i = 0; i != num_keys; ++i) {
1308
+ for (size_t j = 0; j != 10; ++j) {
1309
+ t1.emplace(linear_transform(keys[(i + start) % keys.size()], j));
1310
+ }
1311
+ }
1312
+
1313
+ auto probe_histogram = GetHashtableDebugNumProbesHistogram(t1);
1314
+ stats.all_probes_histogram.resize(
1315
+ std::max(stats.all_probes_histogram.size(), probe_histogram.size()));
1316
+ std::transform(probe_histogram.begin(), probe_histogram.end(),
1317
+ stats.all_probes_histogram.begin(),
1318
+ stats.all_probes_histogram.begin(), std::plus<size_t>());
1319
+
1320
+ size_t total_probe_seq_length = 0;
1321
+ for (size_t i = 0; i < probe_histogram.size(); ++i) {
1322
+ total_probe_seq_length += i * probe_histogram[i];
1323
+ }
1324
+ stats.single_table_ratios.push_back(total_probe_seq_length * 1.0 /
1325
+ t1.size());
1326
+ t1.erase(t1.begin(), t1.end());
1327
+ }
1328
+ return stats;
1329
+ }
1330
+
1331
+ ExpectedStats LinearTransformExpectedStats() {
1332
+ constexpr bool kRandomizesInserts =
1333
+ #ifdef NDEBUG
1334
+ false;
1335
+ #else // NDEBUG
1336
+ true;
1337
+ #endif // NDEBUG
1338
+
1339
+ // The effective load factor is larger in non-opt mode because we insert
1340
+ // elements out of order.
1341
+ switch (container_internal::Group::kWidth) {
1342
+ case 8:
1343
+ if (kRandomizesInserts) {
1344
+ return {0.1,
1345
+ 0.5,
1346
+ {{0.95, 0.3}},
1347
+ {{0.95, 0}, {0.99, 1}, {0.999, 8}, {0.9999, 15}}};
1348
+ } else {
1349
+ return {0.4,
1350
+ 0.6,
1351
+ {{0.95, 0.5}},
1352
+ {{0.95, 1}, {0.99, 14}, {0.999, 23}, {0.9999, 26}}};
1353
+ }
1354
+ case 16:
1355
+ if (kRandomizesInserts) {
1356
+ return {0.1,
1357
+ 0.4,
1358
+ {{0.95, 0.3}},
1359
+ {{0.95, 1}, {0.99, 2}, {0.999, 9}, {0.9999, 15}}};
1360
+ } else {
1361
+ return {0.05,
1362
+ 0.2,
1363
+ {{0.95, 0.1}},
1364
+ {{0.95, 0}, {0.99, 1}, {0.999, 6}, {0.9999, 10}}};
1365
+ }
1366
+ }
1367
+ ABSL_RAW_LOG(FATAL, "%s", "Unknown Group width");
1368
+ return {};
1369
+ }
1370
+
1371
+ // TODO(b/80415403): Figure out why this test is so flaky.
1372
+ TEST(Table, DISABLED_EnsureNonQuadraticTopNLinearTransformByProbeSeqLength) {
1373
+ ProbeStatsPerSize stats;
1374
+ std::vector<size_t> sizes = {Group::kWidth << 5, Group::kWidth << 10};
1375
+ for (size_t size : sizes) {
1376
+ stats[size] = CollectProbeStatsOnLinearlyTransformedKeys(
1377
+ CollectBadMergeKeys(size), 300);
1378
+ }
1379
+ auto expected = LinearTransformExpectedStats();
1380
+ for (size_t size : sizes) {
1381
+ auto& stat = stats[size];
1382
+ VerifyStats(size, expected, stat);
1383
+ LOG(INFO) << size << " " << stat;
1384
+ }
1385
+ }
1386
+
1387
+ TEST(Table, EraseCollision) {
1388
+ BadTable t;
1389
+
1390
+ // 1 2 3
1391
+ t.emplace(1);
1392
+ t.emplace(2);
1393
+ t.emplace(3);
1394
+ EXPECT_THAT(*t.find(1), 1);
1395
+ EXPECT_THAT(*t.find(2), 2);
1396
+ EXPECT_THAT(*t.find(3), 3);
1397
+ EXPECT_EQ(3, t.size());
1398
+
1399
+ // 1 DELETED 3
1400
+ t.erase(t.find(2));
1401
+ EXPECT_THAT(*t.find(1), 1);
1402
+ EXPECT_TRUE(t.find(2) == t.end());
1403
+ EXPECT_THAT(*t.find(3), 3);
1404
+ EXPECT_EQ(2, t.size());
1405
+
1406
+ // DELETED DELETED 3
1407
+ t.erase(t.find(1));
1408
+ EXPECT_TRUE(t.find(1) == t.end());
1409
+ EXPECT_TRUE(t.find(2) == t.end());
1410
+ EXPECT_THAT(*t.find(3), 3);
1411
+ EXPECT_EQ(1, t.size());
1412
+
1413
+ // DELETED DELETED DELETED
1414
+ t.erase(t.find(3));
1415
+ EXPECT_TRUE(t.find(1) == t.end());
1416
+ EXPECT_TRUE(t.find(2) == t.end());
1417
+ EXPECT_TRUE(t.find(3) == t.end());
1418
+ EXPECT_EQ(0, t.size());
1419
+ }
1420
+
1421
+ TEST(Table, EraseInsertProbing) {
1422
+ BadTable t(100);
1423
+
1424
+ // 1 2 3 4
1425
+ t.emplace(1);
1426
+ t.emplace(2);
1427
+ t.emplace(3);
1428
+ t.emplace(4);
1429
+
1430
+ // 1 DELETED 3 DELETED
1431
+ t.erase(t.find(2));
1432
+ t.erase(t.find(4));
1433
+
1434
+ // 1 10 3 11 12
1435
+ t.emplace(10);
1436
+ t.emplace(11);
1437
+ t.emplace(12);
1438
+
1439
+ EXPECT_EQ(5, t.size());
1440
+ EXPECT_THAT(t, UnorderedElementsAre(1, 10, 3, 11, 12));
1441
+ }
1442
+
1443
+ TEST(Table, Clear) {
1444
+ IntTable t;
1445
+ EXPECT_TRUE(t.find(0) == t.end());
1446
+ t.clear();
1447
+ EXPECT_TRUE(t.find(0) == t.end());
1448
+ auto res = t.emplace(0);
1449
+ EXPECT_TRUE(res.second);
1450
+ EXPECT_EQ(1, t.size());
1451
+ t.clear();
1452
+ EXPECT_EQ(0, t.size());
1453
+ EXPECT_TRUE(t.find(0) == t.end());
1454
+ }
1455
+
1456
+ TEST(Table, Swap) {
1457
+ IntTable t;
1458
+ EXPECT_TRUE(t.find(0) == t.end());
1459
+ auto res = t.emplace(0);
1460
+ EXPECT_TRUE(res.second);
1461
+ EXPECT_EQ(1, t.size());
1462
+ IntTable u;
1463
+ t.swap(u);
1464
+ EXPECT_EQ(0, t.size());
1465
+ EXPECT_EQ(1, u.size());
1466
+ EXPECT_TRUE(t.find(0) == t.end());
1467
+ EXPECT_THAT(*u.find(0), 0);
1468
+ }
1469
+
1470
+ TEST(Table, Rehash) {
1471
+ IntTable t;
1472
+ EXPECT_TRUE(t.find(0) == t.end());
1473
+ t.emplace(0);
1474
+ t.emplace(1);
1475
+ EXPECT_EQ(2, t.size());
1476
+ t.rehash(128);
1477
+ EXPECT_EQ(2, t.size());
1478
+ EXPECT_THAT(*t.find(0), 0);
1479
+ EXPECT_THAT(*t.find(1), 1);
1480
+ }
1481
+
1482
+ TEST(Table, RehashDoesNotRehashWhenNotNecessary) {
1483
+ IntTable t;
1484
+ t.emplace(0);
1485
+ t.emplace(1);
1486
+ auto* p = &*t.find(0);
1487
+ t.rehash(1);
1488
+ EXPECT_EQ(p, &*t.find(0));
1489
+ }
1490
+
1491
+ TEST(Table, RehashZeroDoesNotAllocateOnEmptyTable) {
1492
+ IntTable t;
1493
+ t.rehash(0);
1494
+ EXPECT_EQ(0, t.bucket_count());
1495
+ }
1496
+
1497
+ TEST(Table, RehashZeroDeallocatesEmptyTable) {
1498
+ IntTable t;
1499
+ t.emplace(0);
1500
+ t.clear();
1501
+ EXPECT_NE(0, t.bucket_count());
1502
+ t.rehash(0);
1503
+ EXPECT_EQ(0, t.bucket_count());
1504
+ }
1505
+
1506
+ TEST(Table, RehashZeroForcesRehash) {
1507
+ IntTable t;
1508
+ t.emplace(0);
1509
+ t.emplace(1);
1510
+ auto* p = &*t.find(0);
1511
+ t.rehash(0);
1512
+ EXPECT_NE(p, &*t.find(0));
1513
+ }
1514
+
1515
+ TEST(Table, ConstructFromInitList) {
1516
+ using P = std::pair<std::string, std::string>;
1517
+ struct Q {
1518
+ operator P() const { return {}; } // NOLINT
1519
+ };
1520
+ StringTable t = {P(), Q(), {}, {{}, {}}};
1521
+ }
1522
+
1523
+ TEST(Table, CopyConstruct) {
1524
+ IntTable t;
1525
+ t.emplace(0);
1526
+ EXPECT_EQ(1, t.size());
1527
+ {
1528
+ IntTable u(t);
1529
+ EXPECT_EQ(1, u.size());
1530
+ EXPECT_THAT(*u.find(0), 0);
1531
+ }
1532
+ {
1533
+ IntTable u{t};
1534
+ EXPECT_EQ(1, u.size());
1535
+ EXPECT_THAT(*u.find(0), 0);
1536
+ }
1537
+ {
1538
+ IntTable u = t;
1539
+ EXPECT_EQ(1, u.size());
1540
+ EXPECT_THAT(*u.find(0), 0);
1541
+ }
1542
+ }
1543
+
1544
+ TEST(Table, CopyConstructWithAlloc) {
1545
+ StringTable t;
1546
+ t.emplace("a", "b");
1547
+ EXPECT_EQ(1, t.size());
1548
+ StringTable u(t, Alloc<std::pair<std::string, std::string>>());
1549
+ EXPECT_EQ(1, u.size());
1550
+ EXPECT_THAT(*u.find("a"), Pair("a", "b"));
1551
+ }
1552
+
1553
+ struct ExplicitAllocIntTable
1554
+ : raw_hash_set<IntPolicy, container_internal::hash_default_hash<int64_t>,
1555
+ std::equal_to<int64_t>, Alloc<int64_t>> {
1556
+ ExplicitAllocIntTable() = default;
1557
+ };
1558
+
1559
+ TEST(Table, AllocWithExplicitCtor) {
1560
+ ExplicitAllocIntTable t;
1561
+ EXPECT_EQ(0, t.size());
1562
+ }
1563
+
1564
+ TEST(Table, MoveConstruct) {
1565
+ {
1566
+ StringTable t;
1567
+ t.emplace("a", "b");
1568
+ EXPECT_EQ(1, t.size());
1569
+
1570
+ StringTable u(std::move(t));
1571
+ EXPECT_EQ(1, u.size());
1572
+ EXPECT_THAT(*u.find("a"), Pair("a", "b"));
1573
+ }
1574
+ {
1575
+ StringTable t;
1576
+ t.emplace("a", "b");
1577
+ EXPECT_EQ(1, t.size());
1578
+
1579
+ StringTable u{std::move(t)};
1580
+ EXPECT_EQ(1, u.size());
1581
+ EXPECT_THAT(*u.find("a"), Pair("a", "b"));
1582
+ }
1583
+ {
1584
+ StringTable t;
1585
+ t.emplace("a", "b");
1586
+ EXPECT_EQ(1, t.size());
1587
+
1588
+ StringTable u = std::move(t);
1589
+ EXPECT_EQ(1, u.size());
1590
+ EXPECT_THAT(*u.find("a"), Pair("a", "b"));
1591
+ }
1592
+ }
1593
+
1594
+ TEST(Table, MoveConstructWithAlloc) {
1595
+ StringTable t;
1596
+ t.emplace("a", "b");
1597
+ EXPECT_EQ(1, t.size());
1598
+ StringTable u(std::move(t), Alloc<std::pair<std::string, std::string>>());
1599
+ EXPECT_EQ(1, u.size());
1600
+ EXPECT_THAT(*u.find("a"), Pair("a", "b"));
1601
+ }
1602
+
1603
+ TEST(Table, CopyAssign) {
1604
+ StringTable t;
1605
+ t.emplace("a", "b");
1606
+ EXPECT_EQ(1, t.size());
1607
+ StringTable u;
1608
+ u = t;
1609
+ EXPECT_EQ(1, u.size());
1610
+ EXPECT_THAT(*u.find("a"), Pair("a", "b"));
1611
+ }
1612
+
1613
+ TEST(Table, CopySelfAssign) {
1614
+ StringTable t;
1615
+ t.emplace("a", "b");
1616
+ EXPECT_EQ(1, t.size());
1617
+ t = *&t;
1618
+ EXPECT_EQ(1, t.size());
1619
+ EXPECT_THAT(*t.find("a"), Pair("a", "b"));
1620
+ }
1621
+
1622
+ TEST(Table, MoveAssign) {
1623
+ StringTable t;
1624
+ t.emplace("a", "b");
1625
+ EXPECT_EQ(1, t.size());
1626
+ StringTable u;
1627
+ u = std::move(t);
1628
+ EXPECT_EQ(1, u.size());
1629
+ EXPECT_THAT(*u.find("a"), Pair("a", "b"));
1630
+ }
1631
+
1632
+ TEST(Table, Equality) {
1633
+ StringTable t;
1634
+ std::vector<std::pair<std::string, std::string>> v = {{"a", "b"},
1635
+ {"aa", "bb"}};
1636
+ t.insert(std::begin(v), std::end(v));
1637
+ StringTable u = t;
1638
+ EXPECT_EQ(u, t);
1639
+ }
1640
+
1641
+ TEST(Table, Equality2) {
1642
+ StringTable t;
1643
+ std::vector<std::pair<std::string, std::string>> v1 = {{"a", "b"},
1644
+ {"aa", "bb"}};
1645
+ t.insert(std::begin(v1), std::end(v1));
1646
+ StringTable u;
1647
+ std::vector<std::pair<std::string, std::string>> v2 = {{"a", "a"},
1648
+ {"aa", "aa"}};
1649
+ u.insert(std::begin(v2), std::end(v2));
1650
+ EXPECT_NE(u, t);
1651
+ }
1652
+
1653
+ TEST(Table, Equality3) {
1654
+ StringTable t;
1655
+ std::vector<std::pair<std::string, std::string>> v1 = {{"b", "b"},
1656
+ {"bb", "bb"}};
1657
+ t.insert(std::begin(v1), std::end(v1));
1658
+ StringTable u;
1659
+ std::vector<std::pair<std::string, std::string>> v2 = {{"a", "a"},
1660
+ {"aa", "aa"}};
1661
+ u.insert(std::begin(v2), std::end(v2));
1662
+ EXPECT_NE(u, t);
1663
+ }
1664
+
1665
+ TEST(Table, NumDeletedRegression) {
1666
+ IntTable t;
1667
+ t.emplace(0);
1668
+ t.erase(t.find(0));
1669
+ // construct over a deleted slot.
1670
+ t.emplace(0);
1671
+ t.clear();
1672
+ }
1673
+
1674
+ TEST(Table, FindFullDeletedRegression) {
1675
+ IntTable t;
1676
+ for (int i = 0; i < 1000; ++i) {
1677
+ t.emplace(i);
1678
+ t.erase(t.find(i));
1679
+ }
1680
+ EXPECT_EQ(0, t.size());
1681
+ }
1682
+
1683
+ TEST(Table, ReplacingDeletedSlotDoesNotRehash) {
1684
+ size_t n;
1685
+ {
1686
+ // Compute n such that n is the maximum number of elements before rehash.
1687
+ IntTable t;
1688
+ t.emplace(0);
1689
+ size_t c = t.bucket_count();
1690
+ for (n = 1; c == t.bucket_count(); ++n) t.emplace(n);
1691
+ --n;
1692
+ }
1693
+ IntTable t;
1694
+ t.rehash(n);
1695
+ const size_t c = t.bucket_count();
1696
+ for (size_t i = 0; i != n; ++i) t.emplace(i);
1697
+ EXPECT_EQ(c, t.bucket_count()) << "rehashing threshold = " << n;
1698
+ t.erase(0);
1699
+ t.emplace(0);
1700
+ EXPECT_EQ(c, t.bucket_count()) << "rehashing threshold = " << n;
1701
+ }
1702
+
1703
+ TEST(Table, NoThrowMoveConstruct) {
1704
+ ASSERT_TRUE(
1705
+ std::is_nothrow_copy_constructible<absl::Hash<absl::string_view>>::value);
1706
+ ASSERT_TRUE(std::is_nothrow_copy_constructible<
1707
+ std::equal_to<absl::string_view>>::value);
1708
+ ASSERT_TRUE(std::is_nothrow_copy_constructible<std::allocator<int>>::value);
1709
+ EXPECT_TRUE(std::is_nothrow_move_constructible<StringTable>::value);
1710
+ }
1711
+
1712
+ TEST(Table, NoThrowMoveAssign) {
1713
+ ASSERT_TRUE(
1714
+ std::is_nothrow_move_assignable<absl::Hash<absl::string_view>>::value);
1715
+ ASSERT_TRUE(
1716
+ std::is_nothrow_move_assignable<std::equal_to<absl::string_view>>::value);
1717
+ ASSERT_TRUE(std::is_nothrow_move_assignable<std::allocator<int>>::value);
1718
+ ASSERT_TRUE(
1719
+ absl::allocator_traits<std::allocator<int>>::is_always_equal::value);
1720
+ EXPECT_TRUE(std::is_nothrow_move_assignable<StringTable>::value);
1721
+ }
1722
+
1723
+ TEST(Table, NoThrowSwappable) {
1724
+ ASSERT_TRUE(
1725
+ container_internal::IsNoThrowSwappable<absl::Hash<absl::string_view>>());
1726
+ ASSERT_TRUE(container_internal::IsNoThrowSwappable<
1727
+ std::equal_to<absl::string_view>>());
1728
+ ASSERT_TRUE(container_internal::IsNoThrowSwappable<std::allocator<int>>());
1729
+ EXPECT_TRUE(container_internal::IsNoThrowSwappable<StringTable>());
1730
+ }
1731
+
1732
+ TEST(Table, HeterogeneousLookup) {
1733
+ struct Hash {
1734
+ size_t operator()(int64_t i) const { return i; }
1735
+ size_t operator()(double i) const {
1736
+ ADD_FAILURE();
1737
+ return i;
1738
+ }
1739
+ };
1740
+ struct Eq {
1741
+ bool operator()(int64_t a, int64_t b) const { return a == b; }
1742
+ bool operator()(double a, int64_t b) const {
1743
+ ADD_FAILURE();
1744
+ return a == b;
1745
+ }
1746
+ bool operator()(int64_t a, double b) const {
1747
+ ADD_FAILURE();
1748
+ return a == b;
1749
+ }
1750
+ bool operator()(double a, double b) const {
1751
+ ADD_FAILURE();
1752
+ return a == b;
1753
+ }
1754
+ };
1755
+
1756
+ struct THash {
1757
+ using is_transparent = void;
1758
+ size_t operator()(int64_t i) const { return i; }
1759
+ size_t operator()(double i) const { return i; }
1760
+ };
1761
+ struct TEq {
1762
+ using is_transparent = void;
1763
+ bool operator()(int64_t a, int64_t b) const { return a == b; }
1764
+ bool operator()(double a, int64_t b) const { return a == b; }
1765
+ bool operator()(int64_t a, double b) const { return a == b; }
1766
+ bool operator()(double a, double b) const { return a == b; }
1767
+ };
1768
+
1769
+ raw_hash_set<IntPolicy, Hash, Eq, Alloc<int64_t>> s{0, 1, 2};
1770
+ // It will convert to int64_t before the query.
1771
+ EXPECT_EQ(1, *s.find(double{1.1}));
1772
+
1773
+ raw_hash_set<IntPolicy, THash, TEq, Alloc<int64_t>> ts{0, 1, 2};
1774
+ // It will try to use the double, and fail to find the object.
1775
+ EXPECT_TRUE(ts.find(1.1) == ts.end());
1776
+ }
1777
+
1778
+ template <class Table>
1779
+ using CallFind = decltype(std::declval<Table&>().find(17));
1780
+
1781
+ template <class Table>
1782
+ using CallErase = decltype(std::declval<Table&>().erase(17));
1783
+
1784
+ template <class Table>
1785
+ using CallExtract = decltype(std::declval<Table&>().extract(17));
1786
+
1787
+ template <class Table>
1788
+ using CallPrefetch = decltype(std::declval<Table&>().prefetch(17));
1789
+
1790
+ template <class Table>
1791
+ using CallCount = decltype(std::declval<Table&>().count(17));
1792
+
1793
+ template <template <typename> class C, class Table, class = void>
1794
+ struct VerifyResultOf : std::false_type {};
1795
+
1796
+ template <template <typename> class C, class Table>
1797
+ struct VerifyResultOf<C, Table, absl::void_t<C<Table>>> : std::true_type {};
1798
+
1799
+ TEST(Table, HeterogeneousLookupOverloads) {
1800
+ using NonTransparentTable =
1801
+ raw_hash_set<StringPolicy, absl::Hash<absl::string_view>,
1802
+ std::equal_to<absl::string_view>, std::allocator<int>>;
1803
+
1804
+ EXPECT_FALSE((VerifyResultOf<CallFind, NonTransparentTable>()));
1805
+ EXPECT_FALSE((VerifyResultOf<CallErase, NonTransparentTable>()));
1806
+ EXPECT_FALSE((VerifyResultOf<CallExtract, NonTransparentTable>()));
1807
+ EXPECT_FALSE((VerifyResultOf<CallPrefetch, NonTransparentTable>()));
1808
+ EXPECT_FALSE((VerifyResultOf<CallCount, NonTransparentTable>()));
1809
+
1810
+ using TransparentTable = raw_hash_set<
1811
+ StringPolicy,
1812
+ absl::container_internal::hash_default_hash<absl::string_view>,
1813
+ absl::container_internal::hash_default_eq<absl::string_view>,
1814
+ std::allocator<int>>;
1815
+
1816
+ EXPECT_TRUE((VerifyResultOf<CallFind, TransparentTable>()));
1817
+ EXPECT_TRUE((VerifyResultOf<CallErase, TransparentTable>()));
1818
+ EXPECT_TRUE((VerifyResultOf<CallExtract, TransparentTable>()));
1819
+ EXPECT_TRUE((VerifyResultOf<CallPrefetch, TransparentTable>()));
1820
+ EXPECT_TRUE((VerifyResultOf<CallCount, TransparentTable>()));
1821
+ }
1822
+
1823
+ TEST(Iterator, IsDefaultConstructible) {
1824
+ StringTable::iterator i;
1825
+ EXPECT_TRUE(i == StringTable::iterator());
1826
+ }
1827
+
1828
+ TEST(ConstIterator, IsDefaultConstructible) {
1829
+ StringTable::const_iterator i;
1830
+ EXPECT_TRUE(i == StringTable::const_iterator());
1831
+ }
1832
+
1833
+ TEST(Iterator, ConvertsToConstIterator) {
1834
+ StringTable::iterator i;
1835
+ EXPECT_TRUE(i == StringTable::const_iterator());
1836
+ }
1837
+
1838
+ TEST(Iterator, Iterates) {
1839
+ IntTable t;
1840
+ for (size_t i = 3; i != 6; ++i) EXPECT_TRUE(t.emplace(i).second);
1841
+ EXPECT_THAT(t, UnorderedElementsAre(3, 4, 5));
1842
+ }
1843
+
1844
+ TEST(Table, Merge) {
1845
+ StringTable t1, t2;
1846
+ t1.emplace("0", "-0");
1847
+ t1.emplace("1", "-1");
1848
+ t2.emplace("0", "~0");
1849
+ t2.emplace("2", "~2");
1850
+
1851
+ EXPECT_THAT(t1, UnorderedElementsAre(Pair("0", "-0"), Pair("1", "-1")));
1852
+ EXPECT_THAT(t2, UnorderedElementsAre(Pair("0", "~0"), Pair("2", "~2")));
1853
+
1854
+ t1.merge(t2);
1855
+ EXPECT_THAT(t1, UnorderedElementsAre(Pair("0", "-0"), Pair("1", "-1"),
1856
+ Pair("2", "~2")));
1857
+ EXPECT_THAT(t2, UnorderedElementsAre(Pair("0", "~0")));
1858
+ }
1859
+
1860
+ TEST(Table, IteratorEmplaceConstructibleRequirement) {
1861
+ struct Value {
1862
+ explicit Value(absl::string_view view) : value(view) {}
1863
+ std::string value;
1864
+
1865
+ bool operator==(const Value& other) const { return value == other.value; }
1866
+ };
1867
+ struct H {
1868
+ size_t operator()(const Value& v) const {
1869
+ return absl::Hash<std::string>{}(v.value);
1870
+ }
1871
+ };
1872
+
1873
+ struct Table : raw_hash_set<ValuePolicy<Value>, H, std::equal_to<Value>,
1874
+ std::allocator<Value>> {
1875
+ using Base = typename Table::raw_hash_set;
1876
+ using Base::Base;
1877
+ };
1878
+
1879
+ std::string input[3]{"A", "B", "C"};
1880
+
1881
+ Table t(std::begin(input), std::end(input));
1882
+ EXPECT_THAT(t, UnorderedElementsAre(Value{"A"}, Value{"B"}, Value{"C"}));
1883
+
1884
+ input[0] = "D";
1885
+ input[1] = "E";
1886
+ input[2] = "F";
1887
+ t.insert(std::begin(input), std::end(input));
1888
+ EXPECT_THAT(t, UnorderedElementsAre(Value{"A"}, Value{"B"}, Value{"C"},
1889
+ Value{"D"}, Value{"E"}, Value{"F"}));
1890
+ }
1891
+
1892
+ TEST(Nodes, EmptyNodeType) {
1893
+ using node_type = StringTable::node_type;
1894
+ node_type n;
1895
+ EXPECT_FALSE(n);
1896
+ EXPECT_TRUE(n.empty());
1897
+
1898
+ EXPECT_TRUE((std::is_same<node_type::allocator_type,
1899
+ StringTable::allocator_type>::value));
1900
+ }
1901
+
1902
+ TEST(Nodes, ExtractInsert) {
1903
+ constexpr char k0[] = "Very long string zero.";
1904
+ constexpr char k1[] = "Very long string one.";
1905
+ constexpr char k2[] = "Very long string two.";
1906
+ StringTable t = {{k0, ""}, {k1, ""}, {k2, ""}};
1907
+ EXPECT_THAT(t,
1908
+ UnorderedElementsAre(Pair(k0, ""), Pair(k1, ""), Pair(k2, "")));
1909
+
1910
+ auto node = t.extract(k0);
1911
+ EXPECT_THAT(t, UnorderedElementsAre(Pair(k1, ""), Pair(k2, "")));
1912
+ EXPECT_TRUE(node);
1913
+ EXPECT_FALSE(node.empty());
1914
+
1915
+ StringTable t2;
1916
+ StringTable::insert_return_type res = t2.insert(std::move(node));
1917
+ EXPECT_TRUE(res.inserted);
1918
+ EXPECT_THAT(*res.position, Pair(k0, ""));
1919
+ EXPECT_FALSE(res.node);
1920
+ EXPECT_THAT(t2, UnorderedElementsAre(Pair(k0, "")));
1921
+
1922
+ // Not there.
1923
+ EXPECT_THAT(t, UnorderedElementsAre(Pair(k1, ""), Pair(k2, "")));
1924
+ node = t.extract("Not there!");
1925
+ EXPECT_THAT(t, UnorderedElementsAre(Pair(k1, ""), Pair(k2, "")));
1926
+ EXPECT_FALSE(node);
1927
+
1928
+ // Inserting nothing.
1929
+ res = t2.insert(std::move(node));
1930
+ EXPECT_FALSE(res.inserted);
1931
+ EXPECT_EQ(res.position, t2.end());
1932
+ EXPECT_FALSE(res.node);
1933
+ EXPECT_THAT(t2, UnorderedElementsAre(Pair(k0, "")));
1934
+
1935
+ t.emplace(k0, "1");
1936
+ node = t.extract(k0);
1937
+
1938
+ // Insert duplicate.
1939
+ res = t2.insert(std::move(node));
1940
+ EXPECT_FALSE(res.inserted);
1941
+ EXPECT_THAT(*res.position, Pair(k0, ""));
1942
+ EXPECT_TRUE(res.node);
1943
+ EXPECT_FALSE(node); // NOLINT(bugprone-use-after-move)
1944
+ }
1945
+
1946
+ TEST(Nodes, HintInsert) {
1947
+ IntTable t = {1, 2, 3};
1948
+ auto node = t.extract(1);
1949
+ EXPECT_THAT(t, UnorderedElementsAre(2, 3));
1950
+ auto it = t.insert(t.begin(), std::move(node));
1951
+ EXPECT_THAT(t, UnorderedElementsAre(1, 2, 3));
1952
+ EXPECT_EQ(*it, 1);
1953
+ EXPECT_FALSE(node); // NOLINT(bugprone-use-after-move)
1954
+
1955
+ node = t.extract(2);
1956
+ EXPECT_THAT(t, UnorderedElementsAre(1, 3));
1957
+ // reinsert 2 to make the next insert fail.
1958
+ t.insert(2);
1959
+ EXPECT_THAT(t, UnorderedElementsAre(1, 2, 3));
1960
+ it = t.insert(t.begin(), std::move(node));
1961
+ EXPECT_EQ(*it, 2);
1962
+ // The node was not emptied by the insert call.
1963
+ EXPECT_TRUE(node); // NOLINT(bugprone-use-after-move)
1964
+ }
1965
+
1966
+ IntTable MakeSimpleTable(size_t size) {
1967
+ IntTable t;
1968
+ while (t.size() < size) t.insert(t.size());
1969
+ return t;
1970
+ }
1971
+
1972
+ std::vector<int> OrderOfIteration(const IntTable& t) {
1973
+ return {t.begin(), t.end()};
1974
+ }
1975
+
1976
+ // These IterationOrderChanges tests depend on non-deterministic behavior.
1977
+ // We are injecting non-determinism from the pointer of the table, but do so in
1978
+ // a way that only the page matters. We have to retry enough times to make sure
1979
+ // we are touching different memory pages to cause the ordering to change.
1980
+ // We also need to keep the old tables around to avoid getting the same memory
1981
+ // blocks over and over.
1982
+ TEST(Table, IterationOrderChangesByInstance) {
1983
+ for (size_t size : {2, 6, 12, 20}) {
1984
+ const auto reference_table = MakeSimpleTable(size);
1985
+ const auto reference = OrderOfIteration(reference_table);
1986
+
1987
+ std::vector<IntTable> tables;
1988
+ bool found_difference = false;
1989
+ for (int i = 0; !found_difference && i < 5000; ++i) {
1990
+ tables.push_back(MakeSimpleTable(size));
1991
+ found_difference = OrderOfIteration(tables.back()) != reference;
1992
+ }
1993
+ if (!found_difference) {
1994
+ FAIL()
1995
+ << "Iteration order remained the same across many attempts with size "
1996
+ << size;
1997
+ }
1998
+ }
1999
+ }
2000
+
2001
+ TEST(Table, IterationOrderChangesOnRehash) {
2002
+ std::vector<IntTable> garbage;
2003
+ for (int i = 0; i < 5000; ++i) {
2004
+ auto t = MakeSimpleTable(20);
2005
+ const auto reference = OrderOfIteration(t);
2006
+ // Force rehash to the same size.
2007
+ t.rehash(0);
2008
+ auto trial = OrderOfIteration(t);
2009
+ if (trial != reference) {
2010
+ // We are done.
2011
+ return;
2012
+ }
2013
+ garbage.push_back(std::move(t));
2014
+ }
2015
+ FAIL() << "Iteration order remained the same across many attempts.";
2016
+ }
2017
+
2018
+ // Verify that pointers are invalidated as soon as a second element is inserted.
2019
+ // This prevents dependency on pointer stability on small tables.
2020
+ TEST(Table, UnstablePointers) {
2021
+ IntTable table;
2022
+
2023
+ const auto addr = [&](int i) {
2024
+ return reinterpret_cast<uintptr_t>(&*table.find(i));
2025
+ };
2026
+
2027
+ table.insert(0);
2028
+ const uintptr_t old_ptr = addr(0);
2029
+
2030
+ // This causes a rehash.
2031
+ table.insert(1);
2032
+
2033
+ EXPECT_NE(old_ptr, addr(0));
2034
+ }
2035
+
2036
+ bool IsAssertEnabled() {
2037
+ // Use an assert with side-effects to figure out if they are actually enabled.
2038
+ bool assert_enabled = false;
2039
+ assert([&]() { // NOLINT
2040
+ assert_enabled = true;
2041
+ return true;
2042
+ }());
2043
+ return assert_enabled;
2044
+ }
2045
+
2046
+ TEST(TableDeathTest, InvalidIteratorAsserts) {
2047
+ if (!IsAssertEnabled()) GTEST_SKIP() << "Assertions not enabled.";
2048
+
2049
+ IntTable t;
2050
+ // Extra simple "regexp" as regexp support is highly varied across platforms.
2051
+ EXPECT_DEATH_IF_SUPPORTED(
2052
+ t.erase(t.end()),
2053
+ "erase.* called on invalid iterator. The iterator might be an "
2054
+ "end.*iterator or may have been default constructed.");
2055
+ typename IntTable::iterator iter;
2056
+ EXPECT_DEATH_IF_SUPPORTED(
2057
+ ++iter,
2058
+ "operator.* called on invalid iterator. The iterator might be an "
2059
+ "end.*iterator or may have been default constructed.");
2060
+ t.insert(0);
2061
+ iter = t.begin();
2062
+ t.erase(iter);
2063
+ EXPECT_DEATH_IF_SUPPORTED(
2064
+ ++iter,
2065
+ "operator.* called on invalid iterator. The element might have been "
2066
+ "erased or .*the table might have rehashed.");
2067
+ }
2068
+
2069
+ TEST(TableDeathTest, IteratorInvalidAssertsEqualityOperator) {
2070
+ if (!IsAssertEnabled()) GTEST_SKIP() << "Assertions not enabled.";
2071
+
2072
+ IntTable t;
2073
+ t.insert(1);
2074
+ t.insert(2);
2075
+ t.insert(3);
2076
+ auto iter1 = t.begin();
2077
+ auto iter2 = std::next(iter1);
2078
+ ASSERT_NE(iter1, t.end());
2079
+ ASSERT_NE(iter2, t.end());
2080
+ t.erase(iter1);
2081
+ // Extra simple "regexp" as regexp support is highly varied across platforms.
2082
+ const char* const kErasedDeathMessage =
2083
+ "Invalid iterator comparison. The element might have .*been erased or "
2084
+ "the table might have rehashed.";
2085
+ EXPECT_DEATH_IF_SUPPORTED(void(iter1 == iter2), kErasedDeathMessage);
2086
+ EXPECT_DEATH_IF_SUPPORTED(void(iter2 != iter1), kErasedDeathMessage);
2087
+ t.erase(iter2);
2088
+ EXPECT_DEATH_IF_SUPPORTED(void(iter1 == iter2), kErasedDeathMessage);
2089
+
2090
+ IntTable t1, t2;
2091
+ t1.insert(0);
2092
+ t2.insert(0);
2093
+ iter1 = t1.begin();
2094
+ iter2 = t2.begin();
2095
+ const char* const kContainerDiffDeathMessage =
2096
+ "Invalid iterator comparison. The iterators may be from different "
2097
+ ".*containers or the container might have rehashed.";
2098
+ EXPECT_DEATH_IF_SUPPORTED(void(iter1 == iter2), kContainerDiffDeathMessage);
2099
+ EXPECT_DEATH_IF_SUPPORTED(void(iter2 == iter1), kContainerDiffDeathMessage);
2100
+
2101
+ for (int i = 0; i < 10; ++i) t1.insert(i);
2102
+ // There should have been a rehash in t1.
2103
+ EXPECT_DEATH_IF_SUPPORTED(void(iter1 == t1.begin()),
2104
+ kContainerDiffDeathMessage);
2105
+ }
2106
+
2107
+ #if defined(ABSL_INTERNAL_HASHTABLEZ_SAMPLE)
2108
+ TEST(RawHashSamplerTest, Sample) {
2109
+ // Enable the feature even if the prod default is off.
2110
+ SetHashtablezEnabled(true);
2111
+ SetHashtablezSampleParameter(100);
2112
+
2113
+ auto& sampler = GlobalHashtablezSampler();
2114
+ size_t start_size = 0;
2115
+ absl::flat_hash_set<const HashtablezInfo*> preexisting_info;
2116
+ start_size += sampler.Iterate([&](const HashtablezInfo& info) {
2117
+ preexisting_info.insert(&info);
2118
+ ++start_size;
2119
+ });
2120
+
2121
+ std::vector<IntTable> tables;
2122
+ for (int i = 0; i < 1000000; ++i) {
2123
+ tables.emplace_back();
2124
+
2125
+ const bool do_reserve = (i % 10 > 5);
2126
+ const bool do_rehash = !do_reserve && (i % 10 > 0);
2127
+
2128
+ if (do_reserve) {
2129
+ // Don't reserve on all tables.
2130
+ tables.back().reserve(10 * (i % 10));
2131
+ }
2132
+
2133
+ tables.back().insert(1);
2134
+ tables.back().insert(i % 5);
2135
+
2136
+ if (do_rehash) {
2137
+ // Rehash some other tables.
2138
+ tables.back().rehash(10 * (i % 10));
2139
+ }
2140
+ }
2141
+ size_t end_size = 0;
2142
+ absl::flat_hash_map<size_t, int> observed_checksums;
2143
+ absl::flat_hash_map<ssize_t, int> reservations;
2144
+ end_size += sampler.Iterate([&](const HashtablezInfo& info) {
2145
+ if (preexisting_info.count(&info) == 0) {
2146
+ observed_checksums[info.hashes_bitwise_xor.load(
2147
+ std::memory_order_relaxed)]++;
2148
+ reservations[info.max_reserve.load(std::memory_order_relaxed)]++;
2149
+ }
2150
+ EXPECT_EQ(info.inline_element_size, sizeof(int64_t));
2151
+ ++end_size;
2152
+ });
2153
+
2154
+ EXPECT_NEAR((end_size - start_size) / static_cast<double>(tables.size()),
2155
+ 0.01, 0.005);
2156
+ EXPECT_EQ(observed_checksums.size(), 5);
2157
+ for (const auto& [_, count] : observed_checksums) {
2158
+ EXPECT_NEAR((100 * count) / static_cast<double>(tables.size()), 0.2, 0.05);
2159
+ }
2160
+
2161
+ EXPECT_EQ(reservations.size(), 10);
2162
+ for (const auto& [reservation, count] : reservations) {
2163
+ EXPECT_GE(reservation, 0);
2164
+ EXPECT_LT(reservation, 100);
2165
+
2166
+ EXPECT_NEAR((100 * count) / static_cast<double>(tables.size()), 0.1, 0.05)
2167
+ << reservation;
2168
+ }
2169
+ }
2170
+ #endif // ABSL_INTERNAL_HASHTABLEZ_SAMPLE
2171
+
2172
+ TEST(RawHashSamplerTest, DoNotSampleCustomAllocators) {
2173
+ // Enable the feature even if the prod default is off.
2174
+ SetHashtablezEnabled(true);
2175
+ SetHashtablezSampleParameter(100);
2176
+
2177
+ auto& sampler = GlobalHashtablezSampler();
2178
+ size_t start_size = 0;
2179
+ start_size += sampler.Iterate([&](const HashtablezInfo&) { ++start_size; });
2180
+
2181
+ std::vector<CustomAllocIntTable> tables;
2182
+ for (int i = 0; i < 1000000; ++i) {
2183
+ tables.emplace_back();
2184
+ tables.back().insert(1);
2185
+ }
2186
+ size_t end_size = 0;
2187
+ end_size += sampler.Iterate([&](const HashtablezInfo&) { ++end_size; });
2188
+
2189
+ EXPECT_NEAR((end_size - start_size) / static_cast<double>(tables.size()),
2190
+ 0.00, 0.001);
2191
+ }
2192
+
2193
+ #ifdef ABSL_HAVE_ADDRESS_SANITIZER
2194
+ TEST(Sanitizer, PoisoningUnused) {
2195
+ IntTable t;
2196
+ t.reserve(5);
2197
+ // Insert something to force an allocation.
2198
+ int64_t& v1 = *t.insert(0).first;
2199
+
2200
+ // Make sure there is something to test.
2201
+ ASSERT_GT(t.capacity(), 1);
2202
+
2203
+ int64_t* slots = RawHashSetTestOnlyAccess::GetSlots(t);
2204
+ for (size_t i = 0; i < t.capacity(); ++i) {
2205
+ EXPECT_EQ(slots + i != &v1, __asan_address_is_poisoned(slots + i));
2206
+ }
2207
+ }
2208
+
2209
+ TEST(Sanitizer, PoisoningOnErase) {
2210
+ IntTable t;
2211
+ int64_t& v = *t.insert(0).first;
2212
+
2213
+ EXPECT_FALSE(__asan_address_is_poisoned(&v));
2214
+ t.erase(0);
2215
+ EXPECT_TRUE(__asan_address_is_poisoned(&v));
2216
+ }
2217
+ #endif // ABSL_HAVE_ADDRESS_SANITIZER
2218
+
2219
+ TEST(Table, AlignOne) {
2220
+ // We previously had a bug in which we were copying a control byte over the
2221
+ // first slot when alignof(value_type) is 1. We test repeated
2222
+ // insertions/erases and verify that the behavior is correct.
2223
+ Uint8Table t;
2224
+ std::unordered_set<uint8_t> verifier; // NOLINT
2225
+
2226
+ // Do repeated insertions/erases from the table.
2227
+ for (int64_t i = 0; i < 100000; ++i) {
2228
+ SCOPED_TRACE(i);
2229
+ const uint8_t u = (i * -i) & 0xFF;
2230
+ auto it = t.find(u);
2231
+ auto verifier_it = verifier.find(u);
2232
+ if (it == t.end()) {
2233
+ ASSERT_EQ(verifier_it, verifier.end());
2234
+ t.insert(u);
2235
+ verifier.insert(u);
2236
+ } else {
2237
+ ASSERT_NE(verifier_it, verifier.end());
2238
+ t.erase(it);
2239
+ verifier.erase(verifier_it);
2240
+ }
2241
+ }
2242
+
2243
+ EXPECT_EQ(t.size(), verifier.size());
2244
+ for (uint8_t u : t) {
2245
+ EXPECT_EQ(verifier.count(u), 1);
2246
+ }
2247
+ }
2248
+
2249
+ // Invalid iterator use can trigger heap-use-after-free in asan,
2250
+ // use-of-uninitialized-value in msan, or invalidated iterator assertions.
2251
+ constexpr const char* kInvalidIteratorDeathMessage =
2252
+ "heap-use-after-free|use-of-uninitialized-value|invalidated "
2253
+ "iterator|Invalid iterator";
2254
+
2255
+ #if defined(__clang__) && defined(_MSC_VER)
2256
+ constexpr bool kLexan = true;
2257
+ #else
2258
+ constexpr bool kLexan = false;
2259
+ #endif
2260
+
2261
+ TEST(Iterator, InvalidUseCrashesWithSanitizers) {
2262
+ if (!SwisstableGenerationsEnabled()) GTEST_SKIP() << "Generations disabled.";
2263
+ if (kLexan) GTEST_SKIP() << "Lexan doesn't support | in regexp.";
2264
+
2265
+ IntTable t;
2266
+ // Start with 1 element so that `it` is never an end iterator.
2267
+ t.insert(-1);
2268
+ for (int i = 0; i < 10; ++i) {
2269
+ auto it = t.begin();
2270
+ t.insert(i);
2271
+ EXPECT_DEATH_IF_SUPPORTED(*it, kInvalidIteratorDeathMessage);
2272
+ EXPECT_DEATH_IF_SUPPORTED(void(it == t.begin()),
2273
+ kInvalidIteratorDeathMessage);
2274
+ }
2275
+ }
2276
+
2277
+ TEST(Iterator, InvalidUseWithReserveCrashesWithSanitizers) {
2278
+ if (!SwisstableGenerationsEnabled()) GTEST_SKIP() << "Generations disabled.";
2279
+ if (kLexan) GTEST_SKIP() << "Lexan doesn't support | in regexp.";
2280
+
2281
+ IntTable t;
2282
+ t.reserve(10);
2283
+ t.insert(0);
2284
+ auto it = t.begin();
2285
+ // Reserved growth can't rehash.
2286
+ for (int i = 1; i < 10; ++i) {
2287
+ t.insert(i);
2288
+ EXPECT_EQ(*it, 0);
2289
+ }
2290
+ // ptr will become invalidated on rehash.
2291
+ const int64_t* ptr = &*it;
2292
+
2293
+ // erase decreases size but does not decrease reserved growth so the next
2294
+ // insertion still invalidates iterators.
2295
+ t.erase(0);
2296
+ // The first insert after reserved growth is 0 is guaranteed to rehash when
2297
+ // generations are enabled.
2298
+ t.insert(10);
2299
+ EXPECT_DEATH_IF_SUPPORTED(*it, kInvalidIteratorDeathMessage);
2300
+ EXPECT_DEATH_IF_SUPPORTED(void(it == t.begin()),
2301
+ kInvalidIteratorDeathMessage);
2302
+ EXPECT_DEATH_IF_SUPPORTED(std::cout << *ptr,
2303
+ "heap-use-after-free|use-of-uninitialized-value");
2304
+ }
2305
+
2306
+ TEST(Table, ReservedGrowthUpdatesWhenTableDoesntGrow) {
2307
+ IntTable t;
2308
+ for (int i = 0; i < 8; ++i) t.insert(i);
2309
+ // Want to insert twice without invalidating iterators so reserve.
2310
+ const size_t cap = t.capacity();
2311
+ t.reserve(t.size() + 2);
2312
+ // We want to be testing the case in which the reserve doesn't grow the table.
2313
+ ASSERT_EQ(cap, t.capacity());
2314
+ auto it = t.find(0);
2315
+ t.insert(100);
2316
+ t.insert(200);
2317
+ // `it` shouldn't have been invalidated.
2318
+ EXPECT_EQ(*it, 0);
2319
+ }
2320
+
2321
+ } // namespace
2322
+ } // namespace container_internal
2323
+ ABSL_NAMESPACE_END
2324
+ } // namespace absl