fluent-plugin-openlineage 0.1.0

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 (2573) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +18 -0
  3. data/.idea/.gitignore +8 -0
  4. data/.idea/fluentd.iml +208 -0
  5. data/.idea/misc.xml +4 -0
  6. data/.idea/modules/benchmark-memory-0.2.iml +12 -0
  7. data/.idea/modules/bigdecimal-3.1.iml +11 -0
  8. data/.idea/modules/certstore_c-0.1.iml +15 -0
  9. data/.idea/modules/concurrent-ruby-1.3.iml +18 -0
  10. data/.idea/modules/concurrent-ruby-1.31.iml +15 -0
  11. data/.idea/modules/connection_pool-2.4.iml +11 -0
  12. data/.idea/modules/cool.io-1.8.iml +16 -0
  13. data/.idea/modules/drb-2.2.iml +14 -0
  14. data/.idea/modules/drb-2.21.iml +11 -0
  15. data/.idea/modules/ffi-1.17.iml +20 -0
  16. data/.idea/modules/ffi-win32-extensions-1.0.iml +19 -0
  17. data/.idea/modules/fluentd-1.17.iml +43 -0
  18. data/.idea/modules/http_parser.rb-0.8.iml +17 -0
  19. data/.idea/modules/json-2.7.iml +14 -0
  20. data/.idea/modules/json-2.71.iml +11 -0
  21. data/.idea/modules/msgpack-1.7.iml +15 -0
  22. data/.idea/modules/mutex_m-0.2.iml +15 -0
  23. data/.idea/modules/new_gem.iml +15 -0
  24. data/.idea/modules/power_assert-2.0.iml +19 -0
  25. data/.idea/modules/rake-13.2.iml +18 -0
  26. data/.idea/modules/rake-13.21.iml +15 -0
  27. data/.idea/modules/rake-compiler-1.2.iml +13 -0
  28. data/.idea/modules/rusty_json_schema-0.15.iml +15 -0
  29. data/.idea/modules/serverengine-2.3.iml +17 -0
  30. data/.idea/modules/sigdump-0.2.iml +16 -0
  31. data/.idea/modules/specifications.iml +14 -0
  32. data/.idea/modules/specifications1.iml +11 -0
  33. data/.idea/modules/strptime-0.2.iml +16 -0
  34. data/.idea/modules/thermite-0.13.iml +17 -0
  35. data/.idea/modules/webrick-1.8.iml +18 -0
  36. data/.idea/modules/win32-event-0.6.iml +21 -0
  37. data/.idea/modules/win32-ipc-0.7.iml +20 -0
  38. data/.idea/modules/yajl-ruby-1.4.iml +779 -0
  39. data/.idea/modules.xml +8 -0
  40. data/.idea/vcs.xml +6 -0
  41. data/.rspec +2 -0
  42. data/ChangeLog +3 -0
  43. data/Gemfile +3 -0
  44. data/LICENSE +202 -0
  45. data/README.md +223 -0
  46. data/Rakefile +13 -0
  47. data/fluent-plugin-openlineage.gemspec +28 -0
  48. data/lib/fluent/plugin/parser_openlineage.rb +182 -0
  49. data/misc/fluent.conf +101 -0
  50. data/misc/test-complete.json +73 -0
  51. data/misc/test-start.json +73 -0
  52. data/spec/Naming.md +500 -0
  53. data/spec/OpenLineage.json +304 -0
  54. data/spec/Versioning.md +49 -0
  55. data/spec/events/event_full.json +206 -0
  56. data/spec/events/event_invalid_dataset_facet.json +31 -0
  57. data/spec/events/event_invalid_input_dataset_facet.json +29 -0
  58. data/spec/events/event_invalid_job_facet.json +26 -0
  59. data/spec/events/event_invalid_output_dataset_facet.json +29 -0
  60. data/spec/events/event_invalid_run_facet.json +28 -0
  61. data/spec/events/event_no_run_id.json +28 -0
  62. data/spec/events/event_simple.json +29 -0
  63. data/spec/facets/ColumnLineageDatasetFacet.json +96 -0
  64. data/spec/facets/ColumnLineageDatasetFacet.md +106 -0
  65. data/spec/facets/DataQualityAssertionsDatasetFacet.json +49 -0
  66. data/spec/facets/DataQualityMetricsInputDatasetFacet.json +76 -0
  67. data/spec/facets/DatasetVersionDatasetFacet.json +31 -0
  68. data/spec/facets/DatasourceDatasetFacet.json +32 -0
  69. data/spec/facets/DocumentationDatasetFacet.json +31 -0
  70. data/spec/facets/DocumentationJobFacet.json +30 -0
  71. data/spec/facets/ErrorMessageRunFacet.json +41 -0
  72. data/spec/facets/ExternalQueryRunFacet.json +36 -0
  73. data/spec/facets/ExternalQueryRunFacet.md +49 -0
  74. data/spec/facets/ExtractionErrorRunFacet.json +58 -0
  75. data/spec/facets/JobTypeJobFacet.json +41 -0
  76. data/spec/facets/LifecycleStateChangeDatasetFacet.json +46 -0
  77. data/spec/facets/NominalTimeRunFacet.json +38 -0
  78. data/spec/facets/OutputStatisticsOutputDatasetFacet.json +36 -0
  79. data/spec/facets/OwnershipDatasetFacet.json +45 -0
  80. data/spec/facets/OwnershipJobFacet.json +45 -0
  81. data/spec/facets/ParentRunFacet.json +54 -0
  82. data/spec/facets/ProcessingEngineRunFacet.json +41 -0
  83. data/spec/facets/SQLJobFacet.json +30 -0
  84. data/spec/facets/SchemaDatasetFacet.json +59 -0
  85. data/spec/facets/SourceCodeJobFacet.json +34 -0
  86. data/spec/facets/SourceCodeLocationJobFacet.json +60 -0
  87. data/spec/facets/StorageDatasetFacet.json +35 -0
  88. data/spec/facets/SymlinksDatasetFacet.json +47 -0
  89. data/spec/fluent/plugin/test_parser_openlineage.rb +141 -0
  90. data/spec/registry/core/registry.json +31 -0
  91. data/spec/registry/gcp/facets/GcpCommonJobFacet.json +43 -0
  92. data/spec/registry/gcp/registry.json +6 -0
  93. data/spec/spec_helper.rb +8 -0
  94. data/spec/tests/ColumnLineageDatasetFacet/1.json +172 -0
  95. data/spec/tests/DataQualityAssertionsDatasetFacet/1.json +58 -0
  96. data/spec/tests/DataQualityMetricsInputDatasetFacet/1.json +23 -0
  97. data/spec/tests/DatasetVersionDatasetFacet/1.json +7 -0
  98. data/spec/tests/DatasourceDatasetFacet/1.json +7 -0
  99. data/spec/tests/DocumentationDatasetFacet/1.json +7 -0
  100. data/spec/tests/DocumentationJobFacet/1.json +7 -0
  101. data/spec/tests/ErrorMessageRunFacet/1.json +9 -0
  102. data/spec/tests/ExternalQueryRunFacet/1.json +8 -0
  103. data/spec/tests/ExtractionErrorRunFacet/1.json +15 -0
  104. data/spec/tests/JobTypeJobFacet/1.json +9 -0
  105. data/spec/tests/LifecycleStateChangeDatasetFacet/1.json +11 -0
  106. data/spec/tests/NominalTimeRunFacet/1.json +8 -0
  107. data/spec/tests/OutputStatisticsOutputDatasetFacet/1.json +9 -0
  108. data/spec/tests/OwnershipDatasetFacet/1.json +11 -0
  109. data/spec/tests/OwnershipJobFacet/1.json +11 -0
  110. data/spec/tests/ParentRunFacet/1.json +13 -0
  111. data/spec/tests/ProcessingEngineRunFacet/1.json +9 -0
  112. data/spec/tests/SQLJobFacet/1.json +7 -0
  113. data/spec/tests/SchemaDatasetFacet/1.json +92 -0
  114. data/spec/tests/SourceCodeJobFacet/1.json +8 -0
  115. data/spec/tests/SourceCodeLocationJobFacet/1.json +8 -0
  116. data/spec/tests/StorageDatasetFacet/1.json +8 -0
  117. data/spec/tests/SymlinksDatasetFacet/1.json +13 -0
  118. data/spec/tests/example_full_event.json +24 -0
  119. data/vendor/bundle/ruby/3.3.0/bin/fluent-binlog-reader +29 -0
  120. data/vendor/bundle/ruby/3.3.0/bin/fluent-binlog-reader.bat +2 -0
  121. data/vendor/bundle/ruby/3.3.0/bin/fluent-binlog-reader.lock +0 -0
  122. data/vendor/bundle/ruby/3.3.0/bin/fluent-ca-generate +29 -0
  123. data/vendor/bundle/ruby/3.3.0/bin/fluent-ca-generate.bat +2 -0
  124. data/vendor/bundle/ruby/3.3.0/bin/fluent-ca-generate.lock +0 -0
  125. data/vendor/bundle/ruby/3.3.0/bin/fluent-cap-ctl +29 -0
  126. data/vendor/bundle/ruby/3.3.0/bin/fluent-cap-ctl.bat +2 -0
  127. data/vendor/bundle/ruby/3.3.0/bin/fluent-cap-ctl.lock +0 -0
  128. data/vendor/bundle/ruby/3.3.0/bin/fluent-cat +29 -0
  129. data/vendor/bundle/ruby/3.3.0/bin/fluent-cat.bat +2 -0
  130. data/vendor/bundle/ruby/3.3.0/bin/fluent-cat.lock +0 -0
  131. data/vendor/bundle/ruby/3.3.0/bin/fluent-ctl +29 -0
  132. data/vendor/bundle/ruby/3.3.0/bin/fluent-ctl.bat +2 -0
  133. data/vendor/bundle/ruby/3.3.0/bin/fluent-ctl.lock +0 -0
  134. data/vendor/bundle/ruby/3.3.0/bin/fluent-debug +29 -0
  135. data/vendor/bundle/ruby/3.3.0/bin/fluent-debug.bat +2 -0
  136. data/vendor/bundle/ruby/3.3.0/bin/fluent-debug.lock +0 -0
  137. data/vendor/bundle/ruby/3.3.0/bin/fluent-gem +29 -0
  138. data/vendor/bundle/ruby/3.3.0/bin/fluent-gem.bat +2 -0
  139. data/vendor/bundle/ruby/3.3.0/bin/fluent-gem.lock +0 -0
  140. data/vendor/bundle/ruby/3.3.0/bin/fluent-plugin-config-format +29 -0
  141. data/vendor/bundle/ruby/3.3.0/bin/fluent-plugin-config-format.bat +2 -0
  142. data/vendor/bundle/ruby/3.3.0/bin/fluent-plugin-config-format.lock +0 -0
  143. data/vendor/bundle/ruby/3.3.0/bin/fluent-plugin-generate +29 -0
  144. data/vendor/bundle/ruby/3.3.0/bin/fluent-plugin-generate.bat +2 -0
  145. data/vendor/bundle/ruby/3.3.0/bin/fluent-plugin-generate.lock +0 -0
  146. data/vendor/bundle/ruby/3.3.0/bin/fluentd +29 -0
  147. data/vendor/bundle/ruby/3.3.0/bin/fluentd.bat +2 -0
  148. data/vendor/bundle/ruby/3.3.0/bin/fluentd.lock +0 -0
  149. data/vendor/bundle/ruby/3.3.0/bin/rake +29 -0
  150. data/vendor/bundle/ruby/3.3.0/bin/rake.bat +2 -0
  151. data/vendor/bundle/ruby/3.3.0/bin/rake.lock +0 -0
  152. data/vendor/bundle/ruby/3.3.0/cache/base64-0.2.0.gem +0 -0
  153. data/vendor/bundle/ruby/3.3.0/cache/certstore_c-0.1.7.gem +0 -0
  154. data/vendor/bundle/ruby/3.3.0/cache/concurrent-ruby-1.3.3.gem +0 -0
  155. data/vendor/bundle/ruby/3.3.0/cache/cool.io-1.8.1.gem +0 -0
  156. data/vendor/bundle/ruby/3.3.0/cache/csv-3.3.0.gem +0 -0
  157. data/vendor/bundle/ruby/3.3.0/cache/drb-2.2.1.gem +0 -0
  158. data/vendor/bundle/ruby/3.3.0/cache/ffi-1.17.0-x64-mingw-ucrt.gem +0 -0
  159. data/vendor/bundle/ruby/3.3.0/cache/ffi-win32-extensions-1.0.4.gem +0 -0
  160. data/vendor/bundle/ruby/3.3.0/cache/fluentd-1.17.0-x64-mingw-ucrt.gem +0 -0
  161. data/vendor/bundle/ruby/3.3.0/cache/http_parser.rb-0.8.0.gem +0 -0
  162. data/vendor/bundle/ruby/3.3.0/cache/json-2.7.2.gem +0 -0
  163. data/vendor/bundle/ruby/3.3.0/cache/minitar-0.9.gem +0 -0
  164. data/vendor/bundle/ruby/3.3.0/cache/msgpack-1.7.2.gem +0 -0
  165. data/vendor/bundle/ruby/3.3.0/cache/power_assert-2.0.3.gem +0 -0
  166. data/vendor/bundle/ruby/3.3.0/cache/rake-13.2.1.gem +0 -0
  167. data/vendor/bundle/ruby/3.3.0/cache/rusty_json_schema-0.15.0.gem +0 -0
  168. data/vendor/bundle/ruby/3.3.0/cache/serverengine-2.3.2.gem +0 -0
  169. data/vendor/bundle/ruby/3.3.0/cache/sigdump-0.2.5.gem +0 -0
  170. data/vendor/bundle/ruby/3.3.0/cache/strptime-0.2.5.gem +0 -0
  171. data/vendor/bundle/ruby/3.3.0/cache/test-unit-3.6.2.gem +0 -0
  172. data/vendor/bundle/ruby/3.3.0/cache/thermite-0.13.0.gem +0 -0
  173. data/vendor/bundle/ruby/3.3.0/cache/tomlrb-1.3.0.gem +0 -0
  174. data/vendor/bundle/ruby/3.3.0/cache/tzinfo-2.0.6.gem +0 -0
  175. data/vendor/bundle/ruby/3.3.0/cache/tzinfo-data-1.2024.1.gem +0 -0
  176. data/vendor/bundle/ruby/3.3.0/cache/webrick-1.8.1.gem +0 -0
  177. data/vendor/bundle/ruby/3.3.0/cache/win32-event-0.6.3.gem +0 -0
  178. data/vendor/bundle/ruby/3.3.0/cache/win32-ipc-0.7.0.gem +0 -0
  179. data/vendor/bundle/ruby/3.3.0/cache/win32-service-2.3.2.gem +0 -0
  180. data/vendor/bundle/ruby/3.3.0/cache/yajl-ruby-1.4.3.gem +0 -0
  181. data/vendor/bundle/ruby/3.3.0/extensions/x64-mingw-ucrt/3.3.0/certstore_c-0.1.7/gem.build_complete +0 -0
  182. data/vendor/bundle/ruby/3.3.0/extensions/x64-mingw-ucrt/3.3.0/certstore_c-0.1.7/gem_make.out +23 -0
  183. data/vendor/bundle/ruby/3.3.0/extensions/x64-mingw-ucrt/3.3.0/cool.io-1.8.1/gem.build_complete +0 -0
  184. data/vendor/bundle/ruby/3.3.0/extensions/x64-mingw-ucrt/3.3.0/cool.io-1.8.1/gem_make.out +23 -0
  185. data/vendor/bundle/ruby/3.3.0/extensions/x64-mingw-ucrt/3.3.0/http_parser.rb-0.8.0/gem.build_complete +0 -0
  186. data/vendor/bundle/ruby/3.3.0/extensions/x64-mingw-ucrt/3.3.0/http_parser.rb-0.8.0/gem_make.out +20 -0
  187. data/vendor/bundle/ruby/3.3.0/extensions/x64-mingw-ucrt/3.3.0/json-2.7.2/gem.build_complete +0 -0
  188. data/vendor/bundle/ruby/3.3.0/extensions/x64-mingw-ucrt/3.3.0/json-2.7.2/gem_make.out +16 -0
  189. data/vendor/bundle/ruby/3.3.0/extensions/x64-mingw-ucrt/3.3.0/msgpack-1.7.2/gem.build_complete +0 -0
  190. data/vendor/bundle/ruby/3.3.0/extensions/x64-mingw-ucrt/3.3.0/msgpack-1.7.2/gem_make.out +41 -0
  191. data/vendor/bundle/ruby/3.3.0/extensions/x64-mingw-ucrt/3.3.0/rusty_json_schema-0.15.0/gem_make.out +34 -0
  192. data/vendor/bundle/ruby/3.3.0/extensions/x64-mingw-ucrt/3.3.0/strptime-0.2.5/gem.build_complete +0 -0
  193. data/vendor/bundle/ruby/3.3.0/extensions/x64-mingw-ucrt/3.3.0/strptime-0.2.5/gem_make.out +24 -0
  194. data/vendor/bundle/ruby/3.3.0/extensions/x64-mingw-ucrt/3.3.0/yajl-ruby-1.4.3/gem.build_complete +0 -0
  195. data/vendor/bundle/ruby/3.3.0/extensions/x64-mingw-ucrt/3.3.0/yajl-ruby-1.4.3/gem_make.out +245 -0
  196. data/vendor/bundle/ruby/3.3.0/gems/base64-0.2.0/LICENSE.txt +22 -0
  197. data/vendor/bundle/ruby/3.3.0/gems/base64-0.2.0/README.md +48 -0
  198. data/vendor/bundle/ruby/3.3.0/gems/base64-0.2.0/lib/base64.rb +363 -0
  199. data/vendor/bundle/ruby/3.3.0/gems/certstore_c-0.1.7/.clang-format +5 -0
  200. data/vendor/bundle/ruby/3.3.0/gems/certstore_c-0.1.7/.gitignore +10 -0
  201. data/vendor/bundle/ruby/3.3.0/gems/certstore_c-0.1.7/Gemfile +4 -0
  202. data/vendor/bundle/ruby/3.3.0/gems/certstore_c-0.1.7/LICENSE.txt +202 -0
  203. data/vendor/bundle/ruby/3.3.0/gems/certstore_c-0.1.7/README.md +39 -0
  204. data/vendor/bundle/ruby/3.3.0/gems/certstore_c-0.1.7/Rakefile +38 -0
  205. data/vendor/bundle/ruby/3.3.0/gems/certstore_c-0.1.7/appveyor.yml +33 -0
  206. data/vendor/bundle/ruby/3.3.0/gems/certstore_c-0.1.7/bin/console +14 -0
  207. data/vendor/bundle/ruby/3.3.0/gems/certstore_c-0.1.7/bin/setup +8 -0
  208. data/vendor/bundle/ruby/3.3.0/gems/certstore_c-0.1.7/certstore_c.gemspec +45 -0
  209. data/vendor/bundle/ruby/3.3.0/gems/certstore_c-0.1.7/example/manage_certstore.rb +13 -0
  210. data/vendor/bundle/ruby/3.3.0/gems/certstore_c-0.1.7/example/open_tls_socket.rb +33 -0
  211. data/vendor/bundle/ruby/3.3.0/gems/certstore_c-0.1.7/ext/certstore/Makefile +273 -0
  212. data/vendor/bundle/ruby/3.3.0/gems/certstore_c-0.1.7/ext/certstore/certstore.c +22 -0
  213. data/vendor/bundle/ruby/3.3.0/gems/certstore_c-0.1.7/ext/certstore/certstore.h +41 -0
  214. data/vendor/bundle/ruby/3.3.0/gems/certstore_c-0.1.7/ext/certstore/certstore_util.c +32 -0
  215. data/vendor/bundle/ruby/3.3.0/gems/certstore_c-0.1.7/ext/certstore/extconf.rb +20 -0
  216. data/vendor/bundle/ruby/3.3.0/gems/certstore_c-0.1.7/ext/certstore/loader.c +527 -0
  217. data/vendor/bundle/ruby/3.3.0/gems/certstore_c-0.1.7/lib/certstore/loader.rb +35 -0
  218. data/vendor/bundle/ruby/3.3.0/gems/certstore_c-0.1.7/lib/certstore/openssl/loader.rb +77 -0
  219. data/vendor/bundle/ruby/3.3.0/gems/certstore_c-0.1.7/lib/certstore/version.rb +19 -0
  220. data/vendor/bundle/ruby/3.3.0/gems/certstore_c-0.1.7/lib/certstore.rb +12 -0
  221. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/CHANGELOG.md +588 -0
  222. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/Gemfile +36 -0
  223. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/LICENSE.txt +21 -0
  224. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/README.md +407 -0
  225. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/Rakefile +339 -0
  226. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/ext/concurrent-ruby/ConcurrentRubyService.java +17 -0
  227. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/ext/concurrent-ruby/com/concurrent_ruby/ext/AtomicReferenceLibrary.java +175 -0
  228. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/ext/concurrent-ruby/com/concurrent_ruby/ext/JRubyMapBackendLibrary.java +248 -0
  229. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/ext/concurrent-ruby/com/concurrent_ruby/ext/JavaAtomicBooleanLibrary.java +93 -0
  230. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/ext/concurrent-ruby/com/concurrent_ruby/ext/JavaAtomicFixnumLibrary.java +113 -0
  231. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/ext/concurrent-ruby/com/concurrent_ruby/ext/JavaSemaphoreLibrary.java +189 -0
  232. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/ext/concurrent-ruby/com/concurrent_ruby/ext/SynchronizationLibrary.java +292 -0
  233. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/ConcurrentHashMap.java +31 -0
  234. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/ConcurrentHashMapV8.java +3863 -0
  235. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/LongAdder.java +203 -0
  236. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/Striped64.java +342 -0
  237. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/nounsafe/ConcurrentHashMapV8.java +3800 -0
  238. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/nounsafe/LongAdder.java +204 -0
  239. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/nounsafe/Striped64.java +291 -0
  240. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166y/ThreadLocalRandom.java +199 -0
  241. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/agent.rb +588 -0
  242. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/array.rb +56 -0
  243. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/async.rb +449 -0
  244. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/atom.rb +222 -0
  245. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/atomic/atomic_boolean.rb +127 -0
  246. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/atomic/atomic_fixnum.rb +144 -0
  247. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/atomic/atomic_markable_reference.rb +167 -0
  248. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/atomic/atomic_reference.rb +135 -0
  249. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/atomic/count_down_latch.rb +100 -0
  250. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/atomic/cyclic_barrier.rb +128 -0
  251. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/atomic/event.rb +109 -0
  252. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/atomic/fiber_local_var.rb +109 -0
  253. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/atomic/java_count_down_latch.rb +43 -0
  254. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/atomic/locals.rb +189 -0
  255. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/atomic/lock_local_var.rb +28 -0
  256. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/atomic/mutex_atomic_boolean.rb +68 -0
  257. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/atomic/mutex_atomic_fixnum.rb +81 -0
  258. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/atomic/mutex_count_down_latch.rb +44 -0
  259. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/atomic/mutex_semaphore.rb +131 -0
  260. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/atomic/read_write_lock.rb +255 -0
  261. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/atomic/reentrant_read_write_lock.rb +379 -0
  262. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/atomic/semaphore.rb +163 -0
  263. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/atomic/thread_local_var.rb +111 -0
  264. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/atomic_reference/atomic_direct_update.rb +37 -0
  265. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/atomic_reference/mutex_atomic.rb +67 -0
  266. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/atomic_reference/numeric_cas_wrapper.rb +28 -0
  267. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/atomics.rb +10 -0
  268. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/collection/copy_on_notify_observer_set.rb +107 -0
  269. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/collection/copy_on_write_observer_set.rb +111 -0
  270. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/collection/java_non_concurrent_priority_queue.rb +84 -0
  271. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/collection/lock_free_stack.rb +160 -0
  272. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/collection/map/mri_map_backend.rb +66 -0
  273. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/collection/map/non_concurrent_map_backend.rb +148 -0
  274. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/collection/map/synchronized_map_backend.rb +85 -0
  275. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/collection/map/truffleruby_map_backend.rb +14 -0
  276. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/collection/non_concurrent_priority_queue.rb +143 -0
  277. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/collection/ruby_non_concurrent_priority_queue.rb +160 -0
  278. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/concern/deprecation.rb +34 -0
  279. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/concern/dereferenceable.rb +73 -0
  280. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/concern/logging.rb +116 -0
  281. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/concern/obligation.rb +220 -0
  282. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/concern/observable.rb +110 -0
  283. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/concurrent_ruby.jar +0 -0
  284. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/configuration.rb +105 -0
  285. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/constants.rb +8 -0
  286. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/dataflow.rb +81 -0
  287. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/delay.rb +199 -0
  288. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/errors.rb +74 -0
  289. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/exchanger.rb +353 -0
  290. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/executor/abstract_executor_service.rb +131 -0
  291. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/executor/cached_thread_pool.rb +62 -0
  292. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/executor/executor_service.rb +185 -0
  293. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/executor/fixed_thread_pool.rb +224 -0
  294. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/executor/immediate_executor.rb +66 -0
  295. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/executor/indirect_immediate_executor.rb +44 -0
  296. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/executor/java_executor_service.rb +100 -0
  297. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/executor/java_single_thread_executor.rb +30 -0
  298. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/executor/java_thread_pool_executor.rb +145 -0
  299. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/executor/ruby_executor_service.rb +82 -0
  300. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/executor/ruby_single_thread_executor.rb +21 -0
  301. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb +373 -0
  302. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/executor/safe_task_executor.rb +35 -0
  303. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/executor/serial_executor_service.rb +34 -0
  304. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/executor/serialized_execution.rb +107 -0
  305. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/executor/serialized_execution_delegator.rb +28 -0
  306. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/executor/simple_executor_service.rb +103 -0
  307. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/executor/single_thread_executor.rb +57 -0
  308. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/executor/thread_pool_executor.rb +88 -0
  309. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/executor/timer_set.rb +176 -0
  310. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/executors.rb +20 -0
  311. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/future.rb +141 -0
  312. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/hash.rb +52 -0
  313. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/immutable_struct.rb +101 -0
  314. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/ivar.rb +208 -0
  315. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/map.rb +350 -0
  316. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/maybe.rb +229 -0
  317. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/mutable_struct.rb +239 -0
  318. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/mvar.rb +242 -0
  319. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/options.rb +42 -0
  320. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/promise.rb +580 -0
  321. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/promises.rb +2178 -0
  322. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/re_include.rb +60 -0
  323. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/scheduled_task.rb +331 -0
  324. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/set.rb +64 -0
  325. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/settable_struct.rb +139 -0
  326. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/synchronization/abstract_lockable_object.rb +102 -0
  327. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/synchronization/abstract_object.rb +22 -0
  328. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/synchronization/abstract_struct.rb +171 -0
  329. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/synchronization/condition.rb +62 -0
  330. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/synchronization/full_memory_barrier.rb +29 -0
  331. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/synchronization/jruby_lockable_object.rb +15 -0
  332. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/synchronization/lock.rb +38 -0
  333. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/synchronization/lockable_object.rb +75 -0
  334. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/synchronization/mutex_lockable_object.rb +89 -0
  335. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/synchronization/object.rb +151 -0
  336. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/synchronization/safe_initialization.rb +36 -0
  337. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/synchronization/volatile.rb +101 -0
  338. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/synchronization.rb +13 -0
  339. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/thread_safe/synchronized_delegator.rb +47 -0
  340. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/thread_safe/util/adder.rb +74 -0
  341. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/thread_safe/util/data_structures.rb +52 -0
  342. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/thread_safe/util/power_of_two_tuple.rb +38 -0
  343. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/thread_safe/util/striped64.rb +246 -0
  344. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/thread_safe/util/volatile.rb +75 -0
  345. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/thread_safe/util/xor_shift_random.rb +50 -0
  346. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/thread_safe/util.rb +16 -0
  347. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/timer_task.rb +361 -0
  348. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/tuple.rb +82 -0
  349. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/tvar.rb +222 -0
  350. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/utility/engine.rb +45 -0
  351. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/utility/monotonic_time.rb +19 -0
  352. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/utility/native_extension_loader.rb +77 -0
  353. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/utility/native_integer.rb +54 -0
  354. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/utility/processor_counter.rb +190 -0
  355. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent/version.rb +3 -0
  356. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent-ruby.rb +5 -0
  357. data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.3/lib/concurrent-ruby/concurrent.rb +134 -0
  358. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/.github/workflows/test.yaml +53 -0
  359. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/.gitignore +29 -0
  360. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/.rspec +3 -0
  361. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/.travis.yml +16 -0
  362. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/CHANGES.md +301 -0
  363. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/Gemfile +4 -0
  364. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/LICENSE +20 -0
  365. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/README.md +169 -0
  366. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/Rakefile +78 -0
  367. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/appveyor.yml +18 -0
  368. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/cool.io.gemspec +25 -0
  369. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/examples/callbacked_echo_server.rb +24 -0
  370. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/examples/dslified_echo_client.rb +34 -0
  371. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/examples/dslified_echo_server.rb +24 -0
  372. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/examples/echo_client.rb +38 -0
  373. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/examples/echo_server.rb +27 -0
  374. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/examples/google.rb +9 -0
  375. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/ext/cool.io/.gitignore +5 -0
  376. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/ext/cool.io/cool.io.h +70 -0
  377. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/ext/cool.io/cool.io_ext.c +25 -0
  378. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/ext/cool.io/ev_wrap.h +10 -0
  379. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/ext/cool.io/extconf.rb +75 -0
  380. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/ext/cool.io/iowatcher.c +198 -0
  381. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/ext/cool.io/libev.c +8 -0
  382. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/ext/cool.io/loop.c +253 -0
  383. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/ext/cool.io/stat_watcher.c +269 -0
  384. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/ext/cool.io/timer_watcher.c +219 -0
  385. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/ext/cool.io/utils.c +127 -0
  386. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/ext/cool.io/watcher.c +264 -0
  387. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/ext/cool.io/watcher.h +71 -0
  388. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/ext/iobuffer/Makefile +273 -0
  389. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/ext/iobuffer/extconf.rb +10 -0
  390. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/ext/iobuffer/iobuffer.c +777 -0
  391. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/ext/libev/Changes +513 -0
  392. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/ext/libev/LICENSE +37 -0
  393. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/ext/libev/README +58 -0
  394. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/ext/libev/README.embed +3 -0
  395. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/ext/libev/ev.c +5238 -0
  396. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/ext/libev/ev.h +854 -0
  397. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/ext/libev/ev_epoll.c +285 -0
  398. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/ext/libev/ev_kqueue.c +218 -0
  399. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/ext/libev/ev_poll.c +151 -0
  400. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/ext/libev/ev_port.c +189 -0
  401. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/ext/libev/ev_select.c +364 -0
  402. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/ext/libev/ev_vars.h +204 -0
  403. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/ext/libev/ev_win32.c +162 -0
  404. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/ext/libev/ev_wrap.h +200 -0
  405. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/ext/libev/test_libev_win32.c +123 -0
  406. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/lib/.gitignore +2 -0
  407. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/lib/cool.io/async_watcher.rb +43 -0
  408. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/lib/cool.io/custom_require.rb +9 -0
  409. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/lib/cool.io/dns_resolver.rb +228 -0
  410. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/lib/cool.io/dsl.rb +139 -0
  411. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/lib/cool.io/io.rb +194 -0
  412. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/lib/cool.io/iowatcher.rb +17 -0
  413. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/lib/cool.io/listener.rb +111 -0
  414. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/lib/cool.io/loop.rb +122 -0
  415. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/lib/cool.io/meta.rb +50 -0
  416. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/lib/cool.io/server.rb +75 -0
  417. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/lib/cool.io/socket.rb +233 -0
  418. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/lib/cool.io/timer_watcher.rb +17 -0
  419. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/lib/cool.io/version.rb +7 -0
  420. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/lib/cool.io.rb +34 -0
  421. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/lib/coolio.rb +2 -0
  422. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/libev_ruby_gil.diff +175 -0
  423. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/libev_win_select.diff +130 -0
  424. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/spec/async_watcher_spec.rb +57 -0
  425. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/spec/dns_spec.rb +58 -0
  426. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/spec/iobuffer_spec.rb +147 -0
  427. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/spec/spec_helper.rb +19 -0
  428. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/spec/stat_watcher_spec.rb +81 -0
  429. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/spec/tcp_server_spec.rb +225 -0
  430. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/spec/tcp_socket_spec.rb +185 -0
  431. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/spec/timer_watcher_spec.rb +59 -0
  432. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/spec/udp_socket_spec.rb +58 -0
  433. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/spec/unix_listener_spec.rb +25 -0
  434. data/vendor/bundle/ruby/3.3.0/gems/cool.io-1.8.1/spec/unix_server_spec.rb +27 -0
  435. data/vendor/bundle/ruby/3.3.0/gems/csv-3.3.0/LICENSE.txt +33 -0
  436. data/vendor/bundle/ruby/3.3.0/gems/csv-3.3.0/NEWS.md +907 -0
  437. data/vendor/bundle/ruby/3.3.0/gems/csv-3.3.0/README.md +55 -0
  438. data/vendor/bundle/ruby/3.3.0/gems/csv-3.3.0/doc/csv/arguments/io.rdoc +5 -0
  439. data/vendor/bundle/ruby/3.3.0/gems/csv-3.3.0/doc/csv/options/common/col_sep.rdoc +57 -0
  440. data/vendor/bundle/ruby/3.3.0/gems/csv-3.3.0/doc/csv/options/common/quote_char.rdoc +42 -0
  441. data/vendor/bundle/ruby/3.3.0/gems/csv-3.3.0/doc/csv/options/common/row_sep.rdoc +91 -0
  442. data/vendor/bundle/ruby/3.3.0/gems/csv-3.3.0/doc/csv/options/generating/force_quotes.rdoc +17 -0
  443. data/vendor/bundle/ruby/3.3.0/gems/csv-3.3.0/doc/csv/options/generating/quote_empty.rdoc +12 -0
  444. data/vendor/bundle/ruby/3.3.0/gems/csv-3.3.0/doc/csv/options/generating/write_converters.rdoc +25 -0
  445. data/vendor/bundle/ruby/3.3.0/gems/csv-3.3.0/doc/csv/options/generating/write_empty_value.rdoc +15 -0
  446. data/vendor/bundle/ruby/3.3.0/gems/csv-3.3.0/doc/csv/options/generating/write_headers.rdoc +29 -0
  447. data/vendor/bundle/ruby/3.3.0/gems/csv-3.3.0/doc/csv/options/generating/write_nil_value.rdoc +14 -0
  448. data/vendor/bundle/ruby/3.3.0/gems/csv-3.3.0/doc/csv/options/parsing/converters.rdoc +46 -0
  449. data/vendor/bundle/ruby/3.3.0/gems/csv-3.3.0/doc/csv/options/parsing/empty_value.rdoc +13 -0
  450. data/vendor/bundle/ruby/3.3.0/gems/csv-3.3.0/doc/csv/options/parsing/field_size_limit.rdoc +39 -0
  451. data/vendor/bundle/ruby/3.3.0/gems/csv-3.3.0/doc/csv/options/parsing/header_converters.rdoc +43 -0
  452. data/vendor/bundle/ruby/3.3.0/gems/csv-3.3.0/doc/csv/options/parsing/headers.rdoc +63 -0
  453. data/vendor/bundle/ruby/3.3.0/gems/csv-3.3.0/doc/csv/options/parsing/liberal_parsing.rdoc +38 -0
  454. data/vendor/bundle/ruby/3.3.0/gems/csv-3.3.0/doc/csv/options/parsing/nil_value.rdoc +12 -0
  455. data/vendor/bundle/ruby/3.3.0/gems/csv-3.3.0/doc/csv/options/parsing/return_headers.rdoc +22 -0
  456. data/vendor/bundle/ruby/3.3.0/gems/csv-3.3.0/doc/csv/options/parsing/skip_blanks.rdoc +31 -0
  457. data/vendor/bundle/ruby/3.3.0/gems/csv-3.3.0/doc/csv/options/parsing/skip_lines.rdoc +37 -0
  458. data/vendor/bundle/ruby/3.3.0/gems/csv-3.3.0/doc/csv/options/parsing/strip.rdoc +15 -0
  459. data/vendor/bundle/ruby/3.3.0/gems/csv-3.3.0/doc/csv/options/parsing/unconverted_fields.rdoc +27 -0
  460. data/vendor/bundle/ruby/3.3.0/gems/csv-3.3.0/doc/csv/recipes/filtering.rdoc +158 -0
  461. data/vendor/bundle/ruby/3.3.0/gems/csv-3.3.0/doc/csv/recipes/generating.rdoc +298 -0
  462. data/vendor/bundle/ruby/3.3.0/gems/csv-3.3.0/doc/csv/recipes/parsing.rdoc +545 -0
  463. data/vendor/bundle/ruby/3.3.0/gems/csv-3.3.0/doc/csv/recipes/recipes.rdoc +6 -0
  464. data/vendor/bundle/ruby/3.3.0/gems/csv-3.3.0/lib/csv/core_ext/array.rb +9 -0
  465. data/vendor/bundle/ruby/3.3.0/gems/csv-3.3.0/lib/csv/core_ext/string.rb +9 -0
  466. data/vendor/bundle/ruby/3.3.0/gems/csv-3.3.0/lib/csv/fields_converter.rb +89 -0
  467. data/vendor/bundle/ruby/3.3.0/gems/csv-3.3.0/lib/csv/input_record_separator.rb +18 -0
  468. data/vendor/bundle/ruby/3.3.0/gems/csv-3.3.0/lib/csv/parser.rb +1297 -0
  469. data/vendor/bundle/ruby/3.3.0/gems/csv-3.3.0/lib/csv/row.rb +757 -0
  470. data/vendor/bundle/ruby/3.3.0/gems/csv-3.3.0/lib/csv/table.rb +1055 -0
  471. data/vendor/bundle/ruby/3.3.0/gems/csv-3.3.0/lib/csv/version.rb +6 -0
  472. data/vendor/bundle/ruby/3.3.0/gems/csv-3.3.0/lib/csv/writer.rb +210 -0
  473. data/vendor/bundle/ruby/3.3.0/gems/csv-3.3.0/lib/csv.rb +2882 -0
  474. data/vendor/bundle/ruby/3.3.0/gems/drb-2.2.1/LICENSE.txt +22 -0
  475. data/vendor/bundle/ruby/3.3.0/gems/drb-2.2.1/drb.gemspec +41 -0
  476. data/vendor/bundle/ruby/3.3.0/gems/drb-2.2.1/lib/drb/acl.rb +239 -0
  477. data/vendor/bundle/ruby/3.3.0/gems/drb-2.2.1/lib/drb/drb.rb +1943 -0
  478. data/vendor/bundle/ruby/3.3.0/gems/drb-2.2.1/lib/drb/eq.rb +15 -0
  479. data/vendor/bundle/ruby/3.3.0/gems/drb-2.2.1/lib/drb/extserv.rb +44 -0
  480. data/vendor/bundle/ruby/3.3.0/gems/drb-2.2.1/lib/drb/extservm.rb +94 -0
  481. data/vendor/bundle/ruby/3.3.0/gems/drb-2.2.1/lib/drb/gw.rb +161 -0
  482. data/vendor/bundle/ruby/3.3.0/gems/drb-2.2.1/lib/drb/invokemethod.rb +35 -0
  483. data/vendor/bundle/ruby/3.3.0/gems/drb-2.2.1/lib/drb/observer.rb +26 -0
  484. data/vendor/bundle/ruby/3.3.0/gems/drb-2.2.1/lib/drb/ssl.rb +354 -0
  485. data/vendor/bundle/ruby/3.3.0/gems/drb-2.2.1/lib/drb/timeridconv.rb +97 -0
  486. data/vendor/bundle/ruby/3.3.0/gems/drb-2.2.1/lib/drb/unix.rb +118 -0
  487. data/vendor/bundle/ruby/3.3.0/gems/drb-2.2.1/lib/drb/version.rb +3 -0
  488. data/vendor/bundle/ruby/3.3.0/gems/drb-2.2.1/lib/drb/weakidconv.rb +59 -0
  489. data/vendor/bundle/ruby/3.3.0/gems/drb-2.2.1/lib/drb.rb +3 -0
  490. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/CHANGELOG.md +456 -0
  491. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/COPYING +49 -0
  492. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/Gemfile +21 -0
  493. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/LICENSE +24 -0
  494. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/LICENSE.SPECS +22 -0
  495. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/README.md +137 -0
  496. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/Rakefile +206 -0
  497. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/ffi.gemspec +42 -0
  498. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/abstract_memory.rb +44 -0
  499. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/autopointer.rb +180 -0
  500. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/buffer.rb +4 -0
  501. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/callback.rb +4 -0
  502. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/compat.rb +43 -0
  503. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/data_converter.rb +67 -0
  504. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/dynamic_library.rb +118 -0
  505. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/enum.rb +302 -0
  506. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/errno.rb +43 -0
  507. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/ffi.rb +50 -0
  508. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/function.rb +71 -0
  509. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/io.rb +62 -0
  510. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/library.rb +576 -0
  511. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/library_path.rb +109 -0
  512. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/managedstruct.rb +84 -0
  513. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/memorypointer.rb +1 -0
  514. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/platform/aarch64-darwin/types.conf +130 -0
  515. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/platform/aarch64-freebsd/types.conf +128 -0
  516. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/platform/aarch64-freebsd12/types.conf +181 -0
  517. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/platform/aarch64-linux/types.conf +175 -0
  518. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/platform/aarch64-openbsd/types.conf +134 -0
  519. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/platform/aarch64-windows/types.conf +52 -0
  520. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/platform/arm-freebsd/types.conf +152 -0
  521. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/platform/arm-freebsd12/types.conf +152 -0
  522. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/platform/arm-linux/types.conf +132 -0
  523. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/platform/hppa1.1-linux/types.conf +178 -0
  524. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/platform/hppa2.0-linux/types.conf +178 -0
  525. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/platform/i386-cygwin/types.conf +3 -0
  526. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/platform/i386-darwin/types.conf +100 -0
  527. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/platform/i386-freebsd/types.conf +152 -0
  528. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/platform/i386-freebsd12/types.conf +152 -0
  529. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/platform/i386-gnu/types.conf +107 -0
  530. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/platform/i386-linux/types.conf +103 -0
  531. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/platform/i386-netbsd/types.conf +126 -0
  532. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/platform/i386-openbsd/types.conf +128 -0
  533. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/platform/i386-solaris/types.conf +122 -0
  534. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/platform/i386-windows/types.conf +52 -0
  535. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/platform/ia64-linux/types.conf +104 -0
  536. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/platform/loongarch64-linux/types.conf +141 -0
  537. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/platform/mips-linux/types.conf +102 -0
  538. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/platform/mips64-linux/types.conf +104 -0
  539. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/platform/mips64el-linux/types.conf +104 -0
  540. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/platform/mipsel-linux/types.conf +102 -0
  541. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/platform/mipsisa32r6-linux/types.conf +102 -0
  542. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/platform/mipsisa32r6el-linux/types.conf +102 -0
  543. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/platform/mipsisa64r6-linux/types.conf +104 -0
  544. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/platform/mipsisa64r6el-linux/types.conf +104 -0
  545. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/platform/powerpc-aix/types.conf +180 -0
  546. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/platform/powerpc-darwin/types.conf +100 -0
  547. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/platform/powerpc-linux/types.conf +130 -0
  548. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/platform/powerpc-openbsd/types.conf +156 -0
  549. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/platform/powerpc64-linux/types.conf +104 -0
  550. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/platform/powerpc64le-linux/types.conf +100 -0
  551. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/platform/riscv64-linux/types.conf +104 -0
  552. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/platform/s390-linux/types.conf +102 -0
  553. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/platform/s390x-linux/types.conf +102 -0
  554. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/platform/sparc-linux/types.conf +102 -0
  555. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/platform/sparc-solaris/types.conf +128 -0
  556. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/platform/sparcv9-linux/types.conf +102 -0
  557. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/platform/sparcv9-openbsd/types.conf +156 -0
  558. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/platform/sparcv9-solaris/types.conf +128 -0
  559. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/platform/sw_64-linux/types.conf +141 -0
  560. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/platform/x86_64-cygwin/types.conf +3 -0
  561. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/platform/x86_64-darwin/types.conf +130 -0
  562. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/platform/x86_64-dragonflybsd/types.conf +130 -0
  563. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/platform/x86_64-freebsd/types.conf +128 -0
  564. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/platform/x86_64-freebsd12/types.conf +158 -0
  565. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/platform/x86_64-haiku/types.conf +117 -0
  566. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/platform/x86_64-linux/types.conf +132 -0
  567. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/platform/x86_64-msys/types.conf +119 -0
  568. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/platform/x86_64-netbsd/types.conf +128 -0
  569. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/platform/x86_64-openbsd/types.conf +134 -0
  570. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/platform/x86_64-solaris/types.conf +122 -0
  571. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/platform/x86_64-windows/types.conf +52 -0
  572. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/platform.rb +187 -0
  573. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/pointer.rb +167 -0
  574. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/struct.rb +317 -0
  575. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/struct_by_reference.rb +72 -0
  576. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/struct_layout.rb +96 -0
  577. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/struct_layout_builder.rb +227 -0
  578. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/tools/const_generator.rb +232 -0
  579. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/tools/generator.rb +105 -0
  580. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/tools/generator_task.rb +32 -0
  581. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/tools/struct_generator.rb +195 -0
  582. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/tools/types_generator.rb +137 -0
  583. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/types.rb +222 -0
  584. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/union.rb +43 -0
  585. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/variadic.rb +80 -0
  586. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi/version.rb +3 -0
  587. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/lib/ffi.rb +27 -0
  588. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/rakelib/ffi_gem_helper.rb +65 -0
  589. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/samples/getlogin.rb +8 -0
  590. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/samples/getpid.rb +8 -0
  591. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/samples/gettimeofday.rb +18 -0
  592. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/samples/hello.rb +8 -0
  593. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/samples/hello_ractor.rb +11 -0
  594. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/samples/inotify.rb +60 -0
  595. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/samples/pty.rb +75 -0
  596. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/samples/qsort.rb +20 -0
  597. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/samples/qsort_ractor.rb +28 -0
  598. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/sig/ffi/abstract_memory.rbs +165 -0
  599. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/sig/ffi/auto_pointer.rbs +27 -0
  600. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/sig/ffi/buffer.rbs +18 -0
  601. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/sig/ffi/data_converter.rbs +10 -0
  602. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/sig/ffi/dynamic_library.rbs +9 -0
  603. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/sig/ffi/enum.rbs +38 -0
  604. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/sig/ffi/function.rbs +39 -0
  605. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/sig/ffi/library.rbs +42 -0
  606. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/sig/ffi/native_type.rbs +86 -0
  607. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/sig/ffi/pointer.rbs +42 -0
  608. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/sig/ffi/struct.rbs +76 -0
  609. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/sig/ffi/struct_by_reference.rbs +11 -0
  610. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/sig/ffi/struct_by_value.rbs +7 -0
  611. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/sig/ffi/struct_layout.rbs +9 -0
  612. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/sig/ffi/struct_layout_builder.rbs +5 -0
  613. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/sig/ffi/type.rbs +39 -0
  614. data/vendor/bundle/ruby/3.3.0/gems/ffi-1.17.0-x64-mingw-ucrt/sig/ffi.rbs +26 -0
  615. data/vendor/bundle/ruby/3.3.0/gems/ffi-win32-extensions-1.0.4/CHANGELOG.md +31 -0
  616. data/vendor/bundle/ruby/3.3.0/gems/ffi-win32-extensions-1.0.4/CODE_OF_CONDUCT.md +1 -0
  617. data/vendor/bundle/ruby/3.3.0/gems/ffi-win32-extensions-1.0.4/Gemfile +22 -0
  618. data/vendor/bundle/ruby/3.3.0/gems/ffi-win32-extensions-1.0.4/LICENSE +201 -0
  619. data/vendor/bundle/ruby/3.3.0/gems/ffi-win32-extensions-1.0.4/MANIFEST +9 -0
  620. data/vendor/bundle/ruby/3.3.0/gems/ffi-win32-extensions-1.0.4/README +48 -0
  621. data/vendor/bundle/ruby/3.3.0/gems/ffi-win32-extensions-1.0.4/README.md +57 -0
  622. data/vendor/bundle/ruby/3.3.0/gems/ffi-win32-extensions-1.0.4/Rakefile +53 -0
  623. data/vendor/bundle/ruby/3.3.0/gems/ffi-win32-extensions-1.0.4/VERSION +1 -0
  624. data/vendor/bundle/ruby/3.3.0/gems/ffi-win32-extensions-1.0.4/ffi-win32-extensions.gemspec +19 -0
  625. data/vendor/bundle/ruby/3.3.0/gems/ffi-win32-extensions-1.0.4/lib/ffi/win32/extensions.rb +133 -0
  626. data/vendor/bundle/ruby/3.3.0/gems/ffi-win32-extensions-1.0.4/lib/ffi-win32-extensions.rb +1 -0
  627. data/vendor/bundle/ruby/3.3.0/gems/ffi-win32-extensions-1.0.4/test/test_ffi_extensions.rb +41 -0
  628. data/vendor/bundle/ruby/3.3.0/gems/ffi-win32-extensions-1.0.4/test/test_string_extensions.rb +20 -0
  629. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/.deepsource.toml +13 -0
  630. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/.github/DISCUSSION_TEMPLATE/q-a-japanese.yml +50 -0
  631. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/.github/DISCUSSION_TEMPLATE/q-a.yml +47 -0
  632. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/.github/ISSUE_TEMPLATE/bug_report.yml +71 -0
  633. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/.github/ISSUE_TEMPLATE/config.yml +5 -0
  634. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/.github/ISSUE_TEMPLATE/feature_request.yml +39 -0
  635. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/.github/ISSUE_TEMPLATE.md +17 -0
  636. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/.github/PULL_REQUEST_TEMPLATE.md +14 -0
  637. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/.github/workflows/stale-actions.yml +24 -0
  638. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/.github/workflows/test-ruby-head.yml +31 -0
  639. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/.github/workflows/test.yml +32 -0
  640. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/.gitignore +30 -0
  641. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/ADOPTERS.md +5 -0
  642. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/AUTHORS +2 -0
  643. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/CHANGELOG.md +2786 -0
  644. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/CONTRIBUTING.md +45 -0
  645. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/GOVERNANCE.md +55 -0
  646. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/Gemfile +9 -0
  647. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/GithubWorkflow.md +78 -0
  648. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/LICENSE +202 -0
  649. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/MAINTAINERS.md +13 -0
  650. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/README.md +75 -0
  651. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/Rakefile +79 -0
  652. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/SECURITY.md +14 -0
  653. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/bin/fluent-binlog-reader +7 -0
  654. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/bin/fluent-ca-generate +6 -0
  655. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/bin/fluent-cap-ctl +7 -0
  656. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/bin/fluent-ctl +7 -0
  657. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/bin/fluent-debug +5 -0
  658. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/bin/fluent-plugin-config-format +5 -0
  659. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/bin/fluent-plugin-generate +5 -0
  660. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/code-of-conduct.md +3 -0
  661. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/docs/SECURITY_AUDIT.pdf +0 -0
  662. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/example/copy_roundrobin.conf +39 -0
  663. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/example/counter.conf +18 -0
  664. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/example/filter_stdout.conf +22 -0
  665. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/example/in_forward.conf +14 -0
  666. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/example/in_forward_client.conf +37 -0
  667. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/example/in_forward_shared_key.conf +15 -0
  668. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/example/in_forward_tls.conf +14 -0
  669. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/example/in_forward_users.conf +24 -0
  670. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/example/in_forward_workers.conf +21 -0
  671. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/example/in_http.conf +16 -0
  672. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/example/in_out_forward.conf +17 -0
  673. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/example/in_sample_blocks.conf +17 -0
  674. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/example/in_sample_with_compression.conf +23 -0
  675. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/example/in_syslog.conf +15 -0
  676. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/example/in_tail.conf +14 -0
  677. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/example/in_tcp.conf +13 -0
  678. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/example/in_udp.conf +13 -0
  679. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/example/logevents.conf +25 -0
  680. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/example/multi_filters.conf +61 -0
  681. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/example/out_copy.conf +20 -0
  682. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/example/out_exec_filter.conf +42 -0
  683. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/example/out_file.conf +13 -0
  684. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/example/out_forward.conf +35 -0
  685. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/example/out_forward_buf_file.conf +23 -0
  686. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/example/out_forward_client.conf +109 -0
  687. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/example/out_forward_heartbeat_none.conf +16 -0
  688. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/example/out_forward_sd.conf +17 -0
  689. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/example/out_forward_shared_key.conf +36 -0
  690. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/example/out_forward_tls.conf +18 -0
  691. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/example/out_forward_users.conf +65 -0
  692. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/example/out_null.conf +36 -0
  693. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/example/sd.yaml +8 -0
  694. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/example/secondary_file.conf +42 -0
  695. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/example/suppress_config_dump.conf +7 -0
  696. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/example/v0_12_filter.conf +78 -0
  697. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/example/v1_literal_example.conf +36 -0
  698. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/example/worker_section.conf +36 -0
  699. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/fluent.conf +139 -0
  700. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/fluentd.gemspec +62 -0
  701. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/agent.rb +168 -0
  702. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/capability.rb +87 -0
  703. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/clock.rb +66 -0
  704. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/command/binlog_reader.rb +244 -0
  705. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/command/bundler_injection.rb +45 -0
  706. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/command/ca_generate.rb +184 -0
  707. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/command/cap_ctl.rb +174 -0
  708. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/command/cat.rb +365 -0
  709. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/command/ctl.rb +180 -0
  710. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/command/debug.rb +103 -0
  711. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/command/fluentd.rb +374 -0
  712. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/command/plugin_config_formatter.rb +308 -0
  713. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/command/plugin_generator.rb +365 -0
  714. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/compat/call_super_mixin.rb +76 -0
  715. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/compat/detach_process_mixin.rb +33 -0
  716. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/compat/exec_util.rb +129 -0
  717. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/compat/file_util.rb +54 -0
  718. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/compat/filter.rb +68 -0
  719. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/compat/formatter.rb +111 -0
  720. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/compat/formatter_utils.rb +85 -0
  721. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/compat/handle_tag_and_time_mixin.rb +62 -0
  722. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/compat/handle_tag_name_mixin.rb +53 -0
  723. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/compat/input.rb +49 -0
  724. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/compat/output.rb +721 -0
  725. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/compat/output_chain.rb +60 -0
  726. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/compat/parser.rb +310 -0
  727. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/compat/parser_utils.rb +40 -0
  728. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/compat/propagate_default.rb +62 -0
  729. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/compat/record_filter_mixin.rb +34 -0
  730. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/compat/set_tag_key_mixin.rb +50 -0
  731. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/compat/set_time_key_mixin.rb +69 -0
  732. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/compat/socket_util.rb +165 -0
  733. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/compat/string_util.rb +34 -0
  734. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/compat/structured_format_mixin.rb +26 -0
  735. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/compat/type_converter.rb +90 -0
  736. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/config/basic_parser.rb +123 -0
  737. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/config/configure_proxy.rb +424 -0
  738. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/config/dsl.rb +152 -0
  739. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/config/element.rb +265 -0
  740. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/config/error.rb +44 -0
  741. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/config/literal_parser.rb +286 -0
  742. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/config/parser.rb +107 -0
  743. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/config/section.rb +272 -0
  744. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/config/types.rb +249 -0
  745. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/config/v1_parser.rb +192 -0
  746. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/config/yaml_parser/fluent_value.rb +47 -0
  747. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/config/yaml_parser/loader.rb +108 -0
  748. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/config/yaml_parser/parser.rb +166 -0
  749. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/config/yaml_parser/section_builder.rb +107 -0
  750. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/config/yaml_parser.rb +56 -0
  751. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/config.rb +89 -0
  752. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/configurable.rb +201 -0
  753. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/counter/base_socket.rb +44 -0
  754. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/counter/client.rb +297 -0
  755. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/counter/error.rb +86 -0
  756. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/counter/mutex_hash.rb +163 -0
  757. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/counter/server.rb +273 -0
  758. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/counter/store.rb +205 -0
  759. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/counter/validator.rb +145 -0
  760. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/counter.rb +23 -0
  761. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/daemon.rb +13 -0
  762. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/daemonizer.rb +88 -0
  763. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/engine.rb +253 -0
  764. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/env.rb +40 -0
  765. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/error.rb +37 -0
  766. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/event.rb +330 -0
  767. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/event_router.rb +315 -0
  768. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/ext_monitor_require.rb +28 -0
  769. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/file_wrapper.rb +137 -0
  770. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/filter.rb +21 -0
  771. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/fluent_log_event_router.rb +139 -0
  772. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/formatter.rb +23 -0
  773. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/input.rb +21 -0
  774. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/label.rb +46 -0
  775. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/load.rb +34 -0
  776. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/log/console_adapter.rb +66 -0
  777. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/log.rb +752 -0
  778. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/match.rb +187 -0
  779. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/mixin.rb +31 -0
  780. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/msgpack_factory.rb +111 -0
  781. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/oj_options.rb +61 -0
  782. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/output.rb +29 -0
  783. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/output_chain.rb +23 -0
  784. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/parser.rb +23 -0
  785. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/bare_output.rb +104 -0
  786. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/base.rb +214 -0
  787. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/buf_file.rb +242 -0
  788. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/buf_file_single.rb +254 -0
  789. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/buf_memory.rb +34 -0
  790. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/buffer/chunk.rb +240 -0
  791. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/buffer/file_chunk.rb +413 -0
  792. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/buffer/file_single_chunk.rb +310 -0
  793. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/buffer/memory_chunk.rb +91 -0
  794. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/buffer.rb +948 -0
  795. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/compressable.rb +96 -0
  796. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/exec_util.rb +22 -0
  797. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/file_util.rb +22 -0
  798. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/filter.rb +127 -0
  799. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/filter_grep.rb +189 -0
  800. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/filter_parser.rb +148 -0
  801. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/filter_record_transformer.rb +324 -0
  802. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/filter_stdout.rb +53 -0
  803. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/formatter.rb +75 -0
  804. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/formatter_csv.rb +78 -0
  805. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/formatter_hash.rb +35 -0
  806. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/formatter_json.rb +59 -0
  807. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/formatter_ltsv.rb +44 -0
  808. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/formatter_msgpack.rb +33 -0
  809. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/formatter_out_file.rb +53 -0
  810. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/formatter_single_value.rb +36 -0
  811. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/formatter_stdout.rb +76 -0
  812. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/formatter_tsv.rb +40 -0
  813. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/in_debug_agent.rb +71 -0
  814. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/in_dummy.rb +18 -0
  815. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/in_exec.rb +110 -0
  816. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/in_forward.rb +473 -0
  817. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/in_gc_stat.rb +72 -0
  818. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/in_http.rb +642 -0
  819. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/in_monitor_agent.rb +412 -0
  820. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/in_object_space.rb +93 -0
  821. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/in_sample.rb +141 -0
  822. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/in_syslog.rb +276 -0
  823. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/in_tail/group_watch.rb +204 -0
  824. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/in_tail/position_file.rb +269 -0
  825. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/in_tail.rb +1343 -0
  826. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/in_tcp.rb +226 -0
  827. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/in_udp.rb +92 -0
  828. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/in_unix.rb +195 -0
  829. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/input.rb +75 -0
  830. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/metrics.rb +119 -0
  831. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/metrics_local.rb +96 -0
  832. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/multi_output.rb +195 -0
  833. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/out_copy.rb +120 -0
  834. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/out_exec.rb +105 -0
  835. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/out_exec_filter.rb +319 -0
  836. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/out_file.rb +340 -0
  837. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/out_forward/ack_handler.rb +176 -0
  838. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/out_forward/connection_manager.rb +113 -0
  839. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/out_forward/error.rb +28 -0
  840. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/out_forward/failure_detector.rb +84 -0
  841. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/out_forward/handshake_protocol.rb +125 -0
  842. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/out_forward/load_balancer.rb +114 -0
  843. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/out_forward/socket_cache.rb +142 -0
  844. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/out_forward.rb +826 -0
  845. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/out_http.rb +387 -0
  846. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/out_null.rb +74 -0
  847. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/out_relabel.rb +32 -0
  848. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/out_roundrobin.rb +84 -0
  849. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/out_secondary_file.rb +148 -0
  850. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/out_stdout.rb +74 -0
  851. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/out_stream.rb +130 -0
  852. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/output.rb +1603 -0
  853. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/owned_by_mixin.rb +41 -0
  854. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/parser.rb +274 -0
  855. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/parser_apache.rb +28 -0
  856. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/parser_apache2.rb +88 -0
  857. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/parser_apache_error.rb +26 -0
  858. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/parser_csv.rb +114 -0
  859. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/parser_json.rb +113 -0
  860. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/parser_ltsv.rb +51 -0
  861. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/parser_msgpack.rb +71 -0
  862. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/parser_multiline.rb +152 -0
  863. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/parser_nginx.rb +28 -0
  864. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/parser_none.rb +36 -0
  865. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/parser_regexp.rb +68 -0
  866. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/parser_syslog.rb +496 -0
  867. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/parser_tsv.rb +42 -0
  868. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/sd_file.rb +156 -0
  869. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/sd_srv.rb +135 -0
  870. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/sd_static.rb +58 -0
  871. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/service_discovery.rb +65 -0
  872. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/socket_util.rb +22 -0
  873. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/storage.rb +84 -0
  874. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/storage_local.rb +162 -0
  875. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin/string_util.rb +22 -0
  876. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin.rb +206 -0
  877. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin_helper/cert_option.rb +191 -0
  878. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin_helper/child_process.rb +369 -0
  879. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin_helper/compat_parameters.rb +343 -0
  880. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin_helper/counter.rb +51 -0
  881. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin_helper/event_emitter.rb +100 -0
  882. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin_helper/event_loop.rb +170 -0
  883. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin_helper/extract.rb +104 -0
  884. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin_helper/formatter.rb +147 -0
  885. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin_helper/http_server/app.rb +79 -0
  886. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin_helper/http_server/compat/server.rb +92 -0
  887. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin_helper/http_server/compat/ssl_context_extractor.rb +52 -0
  888. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin_helper/http_server/compat/webrick_handler.rb +58 -0
  889. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin_helper/http_server/methods.rb +35 -0
  890. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin_helper/http_server/request.rb +42 -0
  891. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin_helper/http_server/router.rb +54 -0
  892. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin_helper/http_server/server.rb +94 -0
  893. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin_helper/http_server/ssl_context_builder.rb +41 -0
  894. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin_helper/http_server.rb +135 -0
  895. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin_helper/inject.rb +154 -0
  896. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin_helper/metrics.rb +129 -0
  897. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin_helper/parser.rb +147 -0
  898. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin_helper/record_accessor.rb +207 -0
  899. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin_helper/retry_state.rb +219 -0
  900. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin_helper/server.rb +828 -0
  901. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin_helper/service_discovery/manager.rb +146 -0
  902. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin_helper/service_discovery/round_robin_balancer.rb +43 -0
  903. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin_helper/service_discovery.rb +125 -0
  904. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin_helper/socket.rb +288 -0
  905. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin_helper/socket_option.rb +98 -0
  906. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin_helper/storage.rb +349 -0
  907. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin_helper/thread.rb +180 -0
  908. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin_helper/timer.rb +92 -0
  909. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin_helper.rb +75 -0
  910. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/plugin_id.rb +93 -0
  911. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/process.rb +22 -0
  912. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/registry.rb +117 -0
  913. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/root_agent.rb +372 -0
  914. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/rpc.rb +95 -0
  915. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/static_config_analysis.rb +194 -0
  916. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/supervisor.rb +1076 -0
  917. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/system_config.rb +189 -0
  918. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/test/base.rb +78 -0
  919. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/test/driver/base.rb +231 -0
  920. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/test/driver/base_owned.rb +83 -0
  921. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/test/driver/base_owner.rb +135 -0
  922. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/test/driver/event_feeder.rb +98 -0
  923. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/test/driver/filter.rb +61 -0
  924. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/test/driver/formatter.rb +30 -0
  925. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/test/driver/input.rb +31 -0
  926. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/test/driver/multi_output.rb +53 -0
  927. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/test/driver/output.rb +102 -0
  928. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/test/driver/parser.rb +30 -0
  929. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/test/driver/storage.rb +30 -0
  930. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/test/driver/test_event_router.rb +45 -0
  931. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/test/filter_test.rb +77 -0
  932. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/test/formatter_test.rb +65 -0
  933. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/test/helpers.rb +134 -0
  934. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/test/input_test.rb +174 -0
  935. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/test/log.rb +79 -0
  936. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/test/output_test.rb +156 -0
  937. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/test/parser_test.rb +70 -0
  938. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/test/startup_shutdown.rb +44 -0
  939. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/test.rb +58 -0
  940. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/time.rb +512 -0
  941. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/timezone.rb +171 -0
  942. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/tls.rb +81 -0
  943. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/unique_id.rb +39 -0
  944. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/variable_store.rb +40 -0
  945. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/version.rb +21 -0
  946. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/win32api.rb +38 -0
  947. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/lib/fluent/winsvc.rb +100 -0
  948. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/templates/new_gem/Gemfile +3 -0
  949. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/templates/new_gem/README.md.erb +43 -0
  950. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/templates/new_gem/Rakefile +13 -0
  951. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/templates/new_gem/fluent-plugin.gemspec.erb +27 -0
  952. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/templates/new_gem/lib/fluent/plugin/filter.rb.erb +14 -0
  953. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/templates/new_gem/lib/fluent/plugin/formatter.rb.erb +14 -0
  954. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/templates/new_gem/lib/fluent/plugin/input.rb.erb +11 -0
  955. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/templates/new_gem/lib/fluent/plugin/output.rb.erb +11 -0
  956. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/templates/new_gem/lib/fluent/plugin/parser.rb.erb +15 -0
  957. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/templates/new_gem/lib/fluent/plugin/storage.rb.erb +40 -0
  958. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/templates/new_gem/test/helper.rb.erb +7 -0
  959. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/templates/new_gem/test/plugin/test_filter.rb.erb +18 -0
  960. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/templates/new_gem/test/plugin/test_formatter.rb.erb +18 -0
  961. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/templates/new_gem/test/plugin/test_input.rb.erb +18 -0
  962. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/templates/new_gem/test/plugin/test_output.rb.erb +18 -0
  963. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/templates/new_gem/test/plugin/test_parser.rb.erb +18 -0
  964. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/templates/new_gem/test/plugin/test_storage.rb.erb +18 -0
  965. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/templates/plugin_config_formatter/param.md-compact.erb +25 -0
  966. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/templates/plugin_config_formatter/param.md-table.erb +10 -0
  967. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/templates/plugin_config_formatter/param.md.erb +34 -0
  968. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/templates/plugin_config_formatter/section.md.erb +12 -0
  969. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/command/test_binlog_reader.rb +362 -0
  970. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/command/test_ca_generate.rb +70 -0
  971. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/command/test_cap_ctl.rb +100 -0
  972. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/command/test_cat.rb +128 -0
  973. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/command/test_ctl.rb +56 -0
  974. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/command/test_fluentd.rb +1291 -0
  975. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/command/test_plugin_config_formatter.rb +397 -0
  976. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/command/test_plugin_generator.rb +109 -0
  977. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/compat/test_calls_super.rb +166 -0
  978. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/compat/test_parser.rb +92 -0
  979. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/config/assertions.rb +42 -0
  980. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/config/test_config_parser.rb +551 -0
  981. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/config/test_configurable.rb +1784 -0
  982. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/config/test_configure_proxy.rb +604 -0
  983. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/config/test_dsl.rb +415 -0
  984. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/config/test_element.rb +518 -0
  985. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/config/test_literal_parser.rb +309 -0
  986. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/config/test_plugin_configuration.rb +56 -0
  987. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/config/test_section.rb +191 -0
  988. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/config/test_system_config.rb +195 -0
  989. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/config/test_types.rb +408 -0
  990. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/counter/test_client.rb +563 -0
  991. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/counter/test_error.rb +44 -0
  992. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/counter/test_mutex_hash.rb +179 -0
  993. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/counter/test_server.rb +589 -0
  994. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/counter/test_store.rb +258 -0
  995. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/counter/test_validator.rb +137 -0
  996. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/helper.rb +155 -0
  997. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/helpers/fuzzy_assert.rb +89 -0
  998. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/helpers/process_extenstion.rb +33 -0
  999. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/log/test_console_adapter.rb +117 -0
  1000. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/data/2010/01/20100102-030405.log +0 -0
  1001. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/data/2010/01/20100102-030406.log +0 -0
  1002. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/data/2010/01/20100102.log +0 -0
  1003. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/data/log/bar +0 -0
  1004. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/data/log/foo/bar.log +0 -0
  1005. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/data/log/foo/bar2 +0 -0
  1006. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/data/log/test.log +0 -0
  1007. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/data/log_numeric/01.log +0 -0
  1008. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/data/log_numeric/02.log +0 -0
  1009. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/data/log_numeric/12.log +0 -0
  1010. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/data/log_numeric/14.log +0 -0
  1011. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/data/sd_file/config +11 -0
  1012. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/data/sd_file/config.json +17 -0
  1013. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/data/sd_file/config.yaml +11 -0
  1014. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/data/sd_file/config.yml +11 -0
  1015. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/data/sd_file/invalid_config.yml +7 -0
  1016. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/in_tail/test_fifo.rb +121 -0
  1017. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/in_tail/test_io_handler.rb +150 -0
  1018. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/in_tail/test_position_file.rb +346 -0
  1019. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/out_forward/test_ack_handler.rb +140 -0
  1020. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/out_forward/test_connection_manager.rb +145 -0
  1021. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/out_forward/test_handshake_protocol.rb +112 -0
  1022. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/out_forward/test_load_balancer.rb +106 -0
  1023. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/out_forward/test_socket_cache.rb +174 -0
  1024. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_bare_output.rb +131 -0
  1025. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_base.rb +247 -0
  1026. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_buf_file.rb +1314 -0
  1027. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_buf_file_single.rb +898 -0
  1028. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_buf_memory.rb +42 -0
  1029. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_buffer.rb +1493 -0
  1030. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_buffer_chunk.rb +209 -0
  1031. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_buffer_file_chunk.rb +871 -0
  1032. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_buffer_file_single_chunk.rb +611 -0
  1033. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_buffer_memory_chunk.rb +339 -0
  1034. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_compressable.rb +87 -0
  1035. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_file_util.rb +96 -0
  1036. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_filter.rb +368 -0
  1037. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_filter_grep.rb +697 -0
  1038. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_filter_parser.rb +731 -0
  1039. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_filter_record_transformer.rb +577 -0
  1040. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_filter_stdout.rb +207 -0
  1041. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_formatter_csv.rb +136 -0
  1042. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_formatter_hash.rb +38 -0
  1043. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_formatter_json.rb +61 -0
  1044. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_formatter_ltsv.rb +70 -0
  1045. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_formatter_msgpack.rb +28 -0
  1046. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_formatter_out_file.rb +116 -0
  1047. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_formatter_single_value.rb +44 -0
  1048. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_formatter_tsv.rb +76 -0
  1049. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_in_debug_agent.rb +49 -0
  1050. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_in_exec.rb +261 -0
  1051. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_in_forward.rb +1178 -0
  1052. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_in_gc_stat.rb +62 -0
  1053. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_in_http.rb +1124 -0
  1054. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_in_monitor_agent.rb +922 -0
  1055. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_in_object_space.rb +66 -0
  1056. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_in_sample.rb +190 -0
  1057. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_in_syslog.rb +505 -0
  1058. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_in_tail.rb +3429 -0
  1059. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_in_tcp.rb +328 -0
  1060. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_in_udp.rb +296 -0
  1061. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_in_unix.rb +181 -0
  1062. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_input.rb +137 -0
  1063. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_metadata.rb +89 -0
  1064. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_metrics.rb +294 -0
  1065. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_metrics_local.rb +96 -0
  1066. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_multi_output.rb +204 -0
  1067. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_out_copy.rb +308 -0
  1068. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_out_exec.rb +312 -0
  1069. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_out_exec_filter.rb +606 -0
  1070. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_out_file.rb +1038 -0
  1071. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_out_forward.rb +1349 -0
  1072. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_out_http.rb +557 -0
  1073. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_out_null.rb +105 -0
  1074. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_out_relabel.rb +28 -0
  1075. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_out_roundrobin.rb +146 -0
  1076. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_out_secondary_file.rb +458 -0
  1077. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_out_stdout.rb +205 -0
  1078. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_out_stream.rb +103 -0
  1079. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_output.rb +1334 -0
  1080. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_output_as_buffered.rb +2024 -0
  1081. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_output_as_buffered_backup.rb +363 -0
  1082. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_output_as_buffered_compress.rb +179 -0
  1083. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_output_as_buffered_overflow.rb +250 -0
  1084. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_output_as_buffered_retries.rb +966 -0
  1085. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_output_as_buffered_secondary.rb +882 -0
  1086. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_output_as_standard.rb +374 -0
  1087. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_owned_by.rb +34 -0
  1088. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_parser.rb +399 -0
  1089. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_parser_apache.rb +42 -0
  1090. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_parser_apache2.rb +47 -0
  1091. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_parser_apache_error.rb +45 -0
  1092. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_parser_csv.rb +200 -0
  1093. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_parser_json.rb +244 -0
  1094. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_parser_labeled_tsv.rb +160 -0
  1095. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_parser_msgpack.rb +127 -0
  1096. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_parser_multiline.rb +111 -0
  1097. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_parser_nginx.rb +88 -0
  1098. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_parser_none.rb +52 -0
  1099. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_parser_regexp.rb +284 -0
  1100. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_parser_syslog.rb +650 -0
  1101. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_parser_tsv.rb +122 -0
  1102. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_sd_file.rb +228 -0
  1103. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_sd_srv.rb +230 -0
  1104. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_storage.rb +166 -0
  1105. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_storage_local.rb +335 -0
  1106. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin/test_string_util.rb +26 -0
  1107. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin_helper/data/cert/cert-key.pem +27 -0
  1108. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin_helper/data/cert/cert-with-CRLF.pem +19 -0
  1109. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin_helper/data/cert/cert-with-no-newline.pem +19 -0
  1110. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin_helper/data/cert/cert.pem +19 -0
  1111. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin_helper/data/cert/cert_chains/ca-cert-key.pem +27 -0
  1112. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin_helper/data/cert/cert_chains/ca-cert.pem +20 -0
  1113. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin_helper/data/cert/cert_chains/cert-key.pem +27 -0
  1114. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin_helper/data/cert/cert_chains/cert.pem +40 -0
  1115. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin_helper/data/cert/empty.pem +0 -0
  1116. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin_helper/data/cert/generate_cert.rb +125 -0
  1117. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin_helper/data/cert/with_ca/ca-cert-key-pass.pem +30 -0
  1118. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin_helper/data/cert/with_ca/ca-cert-key.pem +27 -0
  1119. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin_helper/data/cert/with_ca/ca-cert-pass.pem +20 -0
  1120. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin_helper/data/cert/with_ca/ca-cert.pem +20 -0
  1121. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin_helper/data/cert/with_ca/cert-key-pass.pem +30 -0
  1122. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin_helper/data/cert/with_ca/cert-key.pem +27 -0
  1123. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin_helper/data/cert/with_ca/cert-pass.pem +21 -0
  1124. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin_helper/data/cert/with_ca/cert.pem +21 -0
  1125. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin_helper/data/cert/without_ca/cert-key-pass.pem +30 -0
  1126. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin_helper/data/cert/without_ca/cert-key.pem +27 -0
  1127. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin_helper/data/cert/without_ca/cert-pass.pem +20 -0
  1128. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin_helper/data/cert/without_ca/cert.pem +20 -0
  1129. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin_helper/http_server/test_app.rb +65 -0
  1130. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin_helper/http_server/test_route.rb +32 -0
  1131. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin_helper/service_discovery/test_manager.rb +93 -0
  1132. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin_helper/service_discovery/test_round_robin_balancer.rb +21 -0
  1133. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin_helper/test_cert_option.rb +25 -0
  1134. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin_helper/test_child_process.rb +862 -0
  1135. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin_helper/test_compat_parameters.rb +358 -0
  1136. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin_helper/test_event_emitter.rb +80 -0
  1137. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin_helper/test_event_loop.rb +52 -0
  1138. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin_helper/test_extract.rb +194 -0
  1139. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin_helper/test_formatter.rb +255 -0
  1140. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin_helper/test_http_server_helper.rb +372 -0
  1141. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin_helper/test_inject.rb +561 -0
  1142. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin_helper/test_metrics.rb +137 -0
  1143. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin_helper/test_parser.rb +264 -0
  1144. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin_helper/test_record_accessor.rb +238 -0
  1145. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin_helper/test_retry_state.rb +1006 -0
  1146. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin_helper/test_server.rb +1895 -0
  1147. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin_helper/test_service_discovery.rb +165 -0
  1148. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin_helper/test_socket.rb +146 -0
  1149. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin_helper/test_storage.rb +542 -0
  1150. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin_helper/test_thread.rb +164 -0
  1151. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/plugin_helper/test_timer.rb +130 -0
  1152. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/scripts/exec_script.rb +32 -0
  1153. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/scripts/fluent/plugin/formatter1/formatter_test1.rb +7 -0
  1154. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/scripts/fluent/plugin/formatter2/formatter_test2.rb +7 -0
  1155. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/scripts/fluent/plugin/formatter_known.rb +8 -0
  1156. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/scripts/fluent/plugin/out_test.rb +81 -0
  1157. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/scripts/fluent/plugin/out_test2.rb +80 -0
  1158. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/scripts/fluent/plugin/parser_known.rb +4 -0
  1159. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/test_capability.rb +74 -0
  1160. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/test_clock.rb +164 -0
  1161. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/test_config.rb +369 -0
  1162. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/test_configdsl.rb +148 -0
  1163. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/test_daemonizer.rb +91 -0
  1164. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/test_engine.rb +203 -0
  1165. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/test_event.rb +531 -0
  1166. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/test_event_router.rb +348 -0
  1167. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/test_event_time.rb +199 -0
  1168. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/test_file_wrapper.rb +53 -0
  1169. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/test_filter.rb +121 -0
  1170. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/test_fluent_log_event_router.rb +99 -0
  1171. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/test_formatter.rb +369 -0
  1172. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/test_input.rb +31 -0
  1173. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/test_log.rb +1076 -0
  1174. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/test_match.rb +148 -0
  1175. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/test_mixin.rb +351 -0
  1176. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/test_msgpack_factory.rb +50 -0
  1177. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/test_oj_options.rb +55 -0
  1178. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/test_output.rb +278 -0
  1179. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/test_plugin.rb +251 -0
  1180. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/test_plugin_classes.rb +370 -0
  1181. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/test_plugin_helper.rb +81 -0
  1182. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/test_plugin_id.rb +119 -0
  1183. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/test_process.rb +14 -0
  1184. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/test_root_agent.rb +951 -0
  1185. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/test_static_config_analysis.rb +177 -0
  1186. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/test_supervisor.rb +821 -0
  1187. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/test_test_drivers.rb +136 -0
  1188. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/test_time_formatter.rb +301 -0
  1189. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/test_time_parser.rb +362 -0
  1190. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/test_tls.rb +65 -0
  1191. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/test_unique_id.rb +47 -0
  1192. data/vendor/bundle/ruby/3.3.0/gems/fluentd-1.17.0-x64-mingw-ucrt/test/test_variable_store.rb +65 -0
  1193. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/.github/workflows/linux.yml +23 -0
  1194. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/.github/workflows/windows.yml +23 -0
  1195. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/.gitignore +12 -0
  1196. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/.gitmodules +6 -0
  1197. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/Gemfile +2 -0
  1198. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/LICENSE-MIT +20 -0
  1199. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/README.md +90 -0
  1200. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/Rakefile +8 -0
  1201. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/bench/standalone.rb +23 -0
  1202. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/bench/thin.rb +58 -0
  1203. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/ext/ruby_http_parser/.gitignore +1 -0
  1204. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/ext/ruby_http_parser/RubyHttpParserService.java +18 -0
  1205. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/ext/ruby_http_parser/ext_help.h +18 -0
  1206. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/ext/ruby_http_parser/extconf.rb +24 -0
  1207. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/ext/ruby_http_parser/org/ruby_http_parser/RubyHttpParser.java +502 -0
  1208. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/ext/ruby_http_parser/ruby_http_parser.c +561 -0
  1209. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/ext/ruby_http_parser/vendor/.gitkeep +0 -0
  1210. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/ext/ruby_http_parser/vendor/http-parser/AUTHORS +68 -0
  1211. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/ext/ruby_http_parser/vendor/http-parser/LICENSE-MIT +19 -0
  1212. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/ext/ruby_http_parser/vendor/http-parser/README.md +246 -0
  1213. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/ext/ruby_http_parser/vendor/http-parser/bench.c +128 -0
  1214. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/ext/ruby_http_parser/vendor/http-parser/contrib/parsertrace.c +157 -0
  1215. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/ext/ruby_http_parser/vendor/http-parser/contrib/url_parser.c +47 -0
  1216. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/ext/ruby_http_parser/vendor/http-parser/http_parser.c +2440 -0
  1217. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/ext/ruby_http_parser/vendor/http-parser/http_parser.gyp +111 -0
  1218. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/ext/ruby_http_parser/vendor/http-parser/http_parser.h +433 -0
  1219. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/ext/ruby_http_parser/vendor/http-parser/test.c +4456 -0
  1220. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/ext/ruby_http_parser/vendor/http-parser-java/AUTHORS +32 -0
  1221. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/ext/ruby_http_parser/vendor/http-parser-java/LICENSE-MIT +48 -0
  1222. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/ext/ruby_http_parser/vendor/http-parser-java/README.md +183 -0
  1223. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/ext/ruby_http_parser/vendor/http-parser-java/TODO +28 -0
  1224. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/ext/ruby_http_parser/vendor/http-parser-java/build.xml +74 -0
  1225. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/ext/ruby_http_parser/vendor/http-parser-java/http_parser.c +2175 -0
  1226. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/ext/ruby_http_parser/vendor/http-parser-java/http_parser.gyp +79 -0
  1227. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/ext/ruby_http_parser/vendor/http-parser-java/http_parser.h +304 -0
  1228. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/ext/ruby_http_parser/vendor/http-parser-java/src/Http-parser.java.iml +22 -0
  1229. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/FieldData.java +41 -0
  1230. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/HTTPCallback.java +8 -0
  1231. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/HTTPDataCallback.java +34 -0
  1232. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/HTTPErrorCallback.java +12 -0
  1233. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/HTTPException.java +9 -0
  1234. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/HTTPMethod.java +107 -0
  1235. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/HTTPParser.java +36 -0
  1236. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/HTTPParserUrl.java +76 -0
  1237. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/ParserSettings.java +256 -0
  1238. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/ParserType.java +13 -0
  1239. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/Util.java +111 -0
  1240. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/lolevel/HTTPCallback.java +5 -0
  1241. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/lolevel/HTTPDataCallback.java +25 -0
  1242. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/lolevel/HTTPErrorCallback.java +7 -0
  1243. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/lolevel/HTTPParser.java +2161 -0
  1244. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/ext/ruby_http_parser/vendor/http-parser-java/src/impl/http_parser/lolevel/ParserSettings.java +83 -0
  1245. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/Message.java +374 -0
  1246. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/ParseUrl.java +51 -0
  1247. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/Requests.java +69 -0
  1248. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/Responses.java +52 -0
  1249. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/Test.java +16 -0
  1250. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/TestHeaderOverflowError.java +48 -0
  1251. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/TestLoaderNG.java +212 -0
  1252. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/TestNoOverflowLongBody.java +62 -0
  1253. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/UnitTest.java +117 -0
  1254. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/Upgrade.java +27 -0
  1255. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/Url.java +127 -0
  1256. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/Util.java +236 -0
  1257. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/ext/ruby_http_parser/vendor/http-parser-java/src/test/http_parser/lolevel/WrongContentLength.java +59 -0
  1258. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/ext/ruby_http_parser/vendor/http-parser-java/test.c +3425 -0
  1259. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/ext/ruby_http_parser/vendor/http-parser-java/tests.dumped +845 -0
  1260. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/ext/ruby_http_parser/vendor/http-parser-java/tests.utf8 +17 -0
  1261. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/ext/ruby_http_parser/vendor/http-parser-java/tools/byte_constants.rb +6 -0
  1262. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/ext/ruby_http_parser/vendor/http-parser-java/tools/const_char.rb +13 -0
  1263. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/ext/ruby_http_parser/vendor/http-parser-java/tools/lowcase.rb +15 -0
  1264. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/ext/ruby_http_parser/vendor/http-parser-java/tools/parse_tests.rb +33 -0
  1265. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/http_parser.rb.gemspec +32 -0
  1266. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/lib/http/parser.rb +1 -0
  1267. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/lib/http_parser.rb +21 -0
  1268. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/spec/parser_spec.rb +428 -0
  1269. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/spec/spec_helper.rb +1 -0
  1270. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/spec/support/requests.json +612 -0
  1271. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/spec/support/responses.json +395 -0
  1272. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/tasks/compile.rake +42 -0
  1273. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/tasks/fixtures.rake +71 -0
  1274. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/tasks/spec.rake +5 -0
  1275. data/vendor/bundle/ruby/3.3.0/gems/http_parser.rb-0.8.0/tasks/submodules.rake +7 -0
  1276. data/vendor/bundle/ruby/3.3.0/gems/json-2.7.2/CHANGES.md +503 -0
  1277. data/vendor/bundle/ruby/3.3.0/gems/json-2.7.2/LICENSE +56 -0
  1278. data/vendor/bundle/ruby/3.3.0/gems/json-2.7.2/README.md +416 -0
  1279. data/vendor/bundle/ruby/3.3.0/gems/json-2.7.2/ext/json/Makefile +205 -0
  1280. data/vendor/bundle/ruby/3.3.0/gems/json-2.7.2/ext/json/ext/fbuffer/fbuffer.h +187 -0
  1281. data/vendor/bundle/ruby/3.3.0/gems/json-2.7.2/ext/json/ext/generator/Makefile +274 -0
  1282. data/vendor/bundle/ruby/3.3.0/gems/json-2.7.2/ext/json/ext/generator/depend +1 -0
  1283. data/vendor/bundle/ruby/3.3.0/gems/json-2.7.2/ext/json/ext/generator/extconf.rb +4 -0
  1284. data/vendor/bundle/ruby/3.3.0/gems/json-2.7.2/ext/json/ext/generator/generator.c +1703 -0
  1285. data/vendor/bundle/ruby/3.3.0/gems/json-2.7.2/ext/json/ext/generator/generator.h +177 -0
  1286. data/vendor/bundle/ruby/3.3.0/gems/json-2.7.2/ext/json/ext/parser/Makefile +274 -0
  1287. data/vendor/bundle/ruby/3.3.0/gems/json-2.7.2/ext/json/ext/parser/depend +1 -0
  1288. data/vendor/bundle/ruby/3.3.0/gems/json-2.7.2/ext/json/ext/parser/extconf.rb +32 -0
  1289. data/vendor/bundle/ruby/3.3.0/gems/json-2.7.2/ext/json/ext/parser/parser.c +2211 -0
  1290. data/vendor/bundle/ruby/3.3.0/gems/json-2.7.2/ext/json/ext/parser/parser.h +96 -0
  1291. data/vendor/bundle/ruby/3.3.0/gems/json-2.7.2/ext/json/ext/parser/parser.rl +971 -0
  1292. data/vendor/bundle/ruby/3.3.0/gems/json-2.7.2/ext/json/extconf.rb +3 -0
  1293. data/vendor/bundle/ruby/3.3.0/gems/json-2.7.2/json.gemspec +68 -0
  1294. data/vendor/bundle/ruby/3.3.0/gems/json-2.7.2/lib/json/add/bigdecimal.rb +58 -0
  1295. data/vendor/bundle/ruby/3.3.0/gems/json-2.7.2/lib/json/add/complex.rb +51 -0
  1296. data/vendor/bundle/ruby/3.3.0/gems/json-2.7.2/lib/json/add/core.rb +12 -0
  1297. data/vendor/bundle/ruby/3.3.0/gems/json-2.7.2/lib/json/add/date.rb +54 -0
  1298. data/vendor/bundle/ruby/3.3.0/gems/json-2.7.2/lib/json/add/date_time.rb +67 -0
  1299. data/vendor/bundle/ruby/3.3.0/gems/json-2.7.2/lib/json/add/exception.rb +49 -0
  1300. data/vendor/bundle/ruby/3.3.0/gems/json-2.7.2/lib/json/add/ostruct.rb +54 -0
  1301. data/vendor/bundle/ruby/3.3.0/gems/json-2.7.2/lib/json/add/range.rb +54 -0
  1302. data/vendor/bundle/ruby/3.3.0/gems/json-2.7.2/lib/json/add/rational.rb +49 -0
  1303. data/vendor/bundle/ruby/3.3.0/gems/json-2.7.2/lib/json/add/regexp.rb +48 -0
  1304. data/vendor/bundle/ruby/3.3.0/gems/json-2.7.2/lib/json/add/set.rb +48 -0
  1305. data/vendor/bundle/ruby/3.3.0/gems/json-2.7.2/lib/json/add/struct.rb +52 -0
  1306. data/vendor/bundle/ruby/3.3.0/gems/json-2.7.2/lib/json/add/symbol.rb +48 -0
  1307. data/vendor/bundle/ruby/3.3.0/gems/json-2.7.2/lib/json/add/time.rb +59 -0
  1308. data/vendor/bundle/ruby/3.3.0/gems/json-2.7.2/lib/json/common.rb +698 -0
  1309. data/vendor/bundle/ruby/3.3.0/gems/json-2.7.2/lib/json/ext.rb +15 -0
  1310. data/vendor/bundle/ruby/3.3.0/gems/json-2.7.2/lib/json/generic_object.rb +75 -0
  1311. data/vendor/bundle/ruby/3.3.0/gems/json-2.7.2/lib/json/pure/generator.rb +513 -0
  1312. data/vendor/bundle/ruby/3.3.0/gems/json-2.7.2/lib/json/pure/parser.rb +337 -0
  1313. data/vendor/bundle/ruby/3.3.0/gems/json-2.7.2/lib/json/pure.rb +15 -0
  1314. data/vendor/bundle/ruby/3.3.0/gems/json-2.7.2/lib/json/version.rb +9 -0
  1315. data/vendor/bundle/ruby/3.3.0/gems/json-2.7.2/lib/json.rb +592 -0
  1316. data/vendor/bundle/ruby/3.3.0/gems/minitar-0.9/Code-of-Conduct.md +74 -0
  1317. data/vendor/bundle/ruby/3.3.0/gems/minitar-0.9/Contributing.md +91 -0
  1318. data/vendor/bundle/ruby/3.3.0/gems/minitar-0.9/History.md +170 -0
  1319. data/vendor/bundle/ruby/3.3.0/gems/minitar-0.9/Licence.md +15 -0
  1320. data/vendor/bundle/ruby/3.3.0/gems/minitar-0.9/Manifest.txt +24 -0
  1321. data/vendor/bundle/ruby/3.3.0/gems/minitar-0.9/README.rdoc +97 -0
  1322. data/vendor/bundle/ruby/3.3.0/gems/minitar-0.9/Rakefile +52 -0
  1323. data/vendor/bundle/ruby/3.3.0/gems/minitar-0.9/docs/bsdl.txt +19 -0
  1324. data/vendor/bundle/ruby/3.3.0/gems/minitar-0.9/docs/ruby.txt +56 -0
  1325. data/vendor/bundle/ruby/3.3.0/gems/minitar-0.9/lib/archive/tar/minitar/input.rb +243 -0
  1326. data/vendor/bundle/ruby/3.3.0/gems/minitar-0.9/lib/archive/tar/minitar/output.rb +79 -0
  1327. data/vendor/bundle/ruby/3.3.0/gems/minitar-0.9/lib/archive/tar/minitar/posix_header.rb +276 -0
  1328. data/vendor/bundle/ruby/3.3.0/gems/minitar-0.9/lib/archive/tar/minitar/reader.rb +272 -0
  1329. data/vendor/bundle/ruby/3.3.0/gems/minitar-0.9/lib/archive/tar/minitar/writer.rb +317 -0
  1330. data/vendor/bundle/ruby/3.3.0/gems/minitar-0.9/lib/archive/tar/minitar.rb +310 -0
  1331. data/vendor/bundle/ruby/3.3.0/gems/minitar-0.9/lib/archive-tar-minitar.rb +3 -0
  1332. data/vendor/bundle/ruby/3.3.0/gems/minitar-0.9/lib/minitar.rb +12 -0
  1333. data/vendor/bundle/ruby/3.3.0/gems/minitar-0.9/test/minitest_helper.rb +11 -0
  1334. data/vendor/bundle/ruby/3.3.0/gems/minitar-0.9/test/support/tar_test_helpers.rb +131 -0
  1335. data/vendor/bundle/ruby/3.3.0/gems/minitar-0.9/test/test_tar_header.rb +113 -0
  1336. data/vendor/bundle/ruby/3.3.0/gems/minitar-0.9/test/test_tar_input.rb +227 -0
  1337. data/vendor/bundle/ruby/3.3.0/gems/minitar-0.9/test/test_tar_output.rb +54 -0
  1338. data/vendor/bundle/ruby/3.3.0/gems/minitar-0.9/test/test_tar_reader.rb +174 -0
  1339. data/vendor/bundle/ruby/3.3.0/gems/minitar-0.9/test/test_tar_writer.rb +228 -0
  1340. data/vendor/bundle/ruby/3.3.0/gems/msgpack-1.7.2/ChangeLog +351 -0
  1341. data/vendor/bundle/ruby/3.3.0/gems/msgpack-1.7.2/LICENSE +177 -0
  1342. data/vendor/bundle/ruby/3.3.0/gems/msgpack-1.7.2/README.md +293 -0
  1343. data/vendor/bundle/ruby/3.3.0/gems/msgpack-1.7.2/ext/java/org/msgpack/jruby/Buffer.java +233 -0
  1344. data/vendor/bundle/ruby/3.3.0/gems/msgpack-1.7.2/ext/java/org/msgpack/jruby/Decoder.java +307 -0
  1345. data/vendor/bundle/ruby/3.3.0/gems/msgpack-1.7.2/ext/java/org/msgpack/jruby/Encoder.java +456 -0
  1346. data/vendor/bundle/ruby/3.3.0/gems/msgpack-1.7.2/ext/java/org/msgpack/jruby/ExtensionRegistry.java +167 -0
  1347. data/vendor/bundle/ruby/3.3.0/gems/msgpack-1.7.2/ext/java/org/msgpack/jruby/ExtensionValue.java +128 -0
  1348. data/vendor/bundle/ruby/3.3.0/gems/msgpack-1.7.2/ext/java/org/msgpack/jruby/Factory.java +130 -0
  1349. data/vendor/bundle/ruby/3.3.0/gems/msgpack-1.7.2/ext/java/org/msgpack/jruby/MessagePackLibrary.java +45 -0
  1350. data/vendor/bundle/ruby/3.3.0/gems/msgpack-1.7.2/ext/java/org/msgpack/jruby/Packer.java +266 -0
  1351. data/vendor/bundle/ruby/3.3.0/gems/msgpack-1.7.2/ext/java/org/msgpack/jruby/Types.java +37 -0
  1352. data/vendor/bundle/ruby/3.3.0/gems/msgpack-1.7.2/ext/java/org/msgpack/jruby/Unpacker.java +336 -0
  1353. data/vendor/bundle/ruby/3.3.0/gems/msgpack-1.7.2/ext/msgpack/Makefile +273 -0
  1354. data/vendor/bundle/ruby/3.3.0/gems/msgpack-1.7.2/ext/msgpack/buffer.c +668 -0
  1355. data/vendor/bundle/ruby/3.3.0/gems/msgpack-1.7.2/ext/msgpack/buffer.h +500 -0
  1356. data/vendor/bundle/ruby/3.3.0/gems/msgpack-1.7.2/ext/msgpack/buffer_class.c +616 -0
  1357. data/vendor/bundle/ruby/3.3.0/gems/msgpack-1.7.2/ext/msgpack/buffer_class.h +33 -0
  1358. data/vendor/bundle/ruby/3.3.0/gems/msgpack-1.7.2/ext/msgpack/compat.h +26 -0
  1359. data/vendor/bundle/ruby/3.3.0/gems/msgpack-1.7.2/ext/msgpack/extconf.rb +51 -0
  1360. data/vendor/bundle/ruby/3.3.0/gems/msgpack-1.7.2/ext/msgpack/extension_value_class.c +34 -0
  1361. data/vendor/bundle/ruby/3.3.0/gems/msgpack-1.7.2/ext/msgpack/extension_value_class.h +31 -0
  1362. data/vendor/bundle/ruby/3.3.0/gems/msgpack-1.7.2/ext/msgpack/factory_class.c +276 -0
  1363. data/vendor/bundle/ruby/3.3.0/gems/msgpack-1.7.2/ext/msgpack/factory_class.h +33 -0
  1364. data/vendor/bundle/ruby/3.3.0/gems/msgpack-1.7.2/ext/msgpack/packer.c +199 -0
  1365. data/vendor/bundle/ruby/3.3.0/gems/msgpack-1.7.2/ext/msgpack/packer.h +506 -0
  1366. data/vendor/bundle/ruby/3.3.0/gems/msgpack-1.7.2/ext/msgpack/packer_class.c +442 -0
  1367. data/vendor/bundle/ruby/3.3.0/gems/msgpack-1.7.2/ext/msgpack/packer_class.h +43 -0
  1368. data/vendor/bundle/ruby/3.3.0/gems/msgpack-1.7.2/ext/msgpack/packer_ext_registry.c +74 -0
  1369. data/vendor/bundle/ruby/3.3.0/gems/msgpack-1.7.2/ext/msgpack/packer_ext_registry.h +140 -0
  1370. data/vendor/bundle/ruby/3.3.0/gems/msgpack-1.7.2/ext/msgpack/rbinit.c +35 -0
  1371. data/vendor/bundle/ruby/3.3.0/gems/msgpack-1.7.2/ext/msgpack/rmem.c +93 -0
  1372. data/vendor/bundle/ruby/3.3.0/gems/msgpack-1.7.2/ext/msgpack/rmem.h +109 -0
  1373. data/vendor/bundle/ruby/3.3.0/gems/msgpack-1.7.2/ext/msgpack/sysdep.h +118 -0
  1374. data/vendor/bundle/ruby/3.3.0/gems/msgpack-1.7.2/ext/msgpack/sysdep_endian.h +50 -0
  1375. data/vendor/bundle/ruby/3.3.0/gems/msgpack-1.7.2/ext/msgpack/sysdep_types.h +46 -0
  1376. data/vendor/bundle/ruby/3.3.0/gems/msgpack-1.7.2/ext/msgpack/unpacker.c +880 -0
  1377. data/vendor/bundle/ruby/3.3.0/gems/msgpack-1.7.2/ext/msgpack/unpacker.h +142 -0
  1378. data/vendor/bundle/ruby/3.3.0/gems/msgpack-1.7.2/ext/msgpack/unpacker_class.c +437 -0
  1379. data/vendor/bundle/ruby/3.3.0/gems/msgpack-1.7.2/ext/msgpack/unpacker_class.h +43 -0
  1380. data/vendor/bundle/ruby/3.3.0/gems/msgpack-1.7.2/ext/msgpack/unpacker_ext_registry.c +74 -0
  1381. data/vendor/bundle/ruby/3.3.0/gems/msgpack-1.7.2/ext/msgpack/unpacker_ext_registry.h +62 -0
  1382. data/vendor/bundle/ruby/3.3.0/gems/msgpack-1.7.2/lib/msgpack/bigint.rb +69 -0
  1383. data/vendor/bundle/ruby/3.3.0/gems/msgpack-1.7.2/lib/msgpack/buffer.rb +9 -0
  1384. data/vendor/bundle/ruby/3.3.0/gems/msgpack-1.7.2/lib/msgpack/core_ext.rb +139 -0
  1385. data/vendor/bundle/ruby/3.3.0/gems/msgpack-1.7.2/lib/msgpack/factory.rb +211 -0
  1386. data/vendor/bundle/ruby/3.3.0/gems/msgpack-1.7.2/lib/msgpack/packer.rb +37 -0
  1387. data/vendor/bundle/ruby/3.3.0/gems/msgpack-1.7.2/lib/msgpack/symbol.rb +26 -0
  1388. data/vendor/bundle/ruby/3.3.0/gems/msgpack-1.7.2/lib/msgpack/time.rb +29 -0
  1389. data/vendor/bundle/ruby/3.3.0/gems/msgpack-1.7.2/lib/msgpack/timestamp.rb +76 -0
  1390. data/vendor/bundle/ruby/3.3.0/gems/msgpack-1.7.2/lib/msgpack/unpacker.rb +41 -0
  1391. data/vendor/bundle/ruby/3.3.0/gems/msgpack-1.7.2/lib/msgpack/version.rb +6 -0
  1392. data/vendor/bundle/ruby/3.3.0/gems/msgpack-1.7.2/lib/msgpack.rb +48 -0
  1393. data/vendor/bundle/ruby/3.3.0/gems/msgpack-1.7.2/msgpack.gemspec +34 -0
  1394. data/vendor/bundle/ruby/3.3.0/gems/power_assert-2.0.3/.github/dependabot.yml +6 -0
  1395. data/vendor/bundle/ruby/3.3.0/gems/power_assert-2.0.3/.github/workflows/ci.yml +32 -0
  1396. data/vendor/bundle/ruby/3.3.0/gems/power_assert-2.0.3/.gitignore +9 -0
  1397. data/vendor/bundle/ruby/3.3.0/gems/power_assert-2.0.3/BSDL +22 -0
  1398. data/vendor/bundle/ruby/3.3.0/gems/power_assert-2.0.3/COPYING +57 -0
  1399. data/vendor/bundle/ruby/3.3.0/gems/power_assert-2.0.3/Gemfile +9 -0
  1400. data/vendor/bundle/ruby/3.3.0/gems/power_assert-2.0.3/LEGAL +4 -0
  1401. data/vendor/bundle/ruby/3.3.0/gems/power_assert-2.0.3/README.md +98 -0
  1402. data/vendor/bundle/ruby/3.3.0/gems/power_assert-2.0.3/Rakefile +59 -0
  1403. data/vendor/bundle/ruby/3.3.0/gems/power_assert-2.0.3/lib/power_assert/colorize.rb +7 -0
  1404. data/vendor/bundle/ruby/3.3.0/gems/power_assert-2.0.3/lib/power_assert/configuration.rb +46 -0
  1405. data/vendor/bundle/ruby/3.3.0/gems/power_assert-2.0.3/lib/power_assert/context.rb +233 -0
  1406. data/vendor/bundle/ruby/3.3.0/gems/power_assert-2.0.3/lib/power_assert/enable_tracepoint_events.rb +60 -0
  1407. data/vendor/bundle/ruby/3.3.0/gems/power_assert-2.0.3/lib/power_assert/inspector.rb +66 -0
  1408. data/vendor/bundle/ruby/3.3.0/gems/power_assert-2.0.3/lib/power_assert/parser.rb +251 -0
  1409. data/vendor/bundle/ruby/3.3.0/gems/power_assert-2.0.3/lib/power_assert/version.rb +3 -0
  1410. data/vendor/bundle/ruby/3.3.0/gems/power_assert-2.0.3/lib/power_assert.rb +91 -0
  1411. data/vendor/bundle/ruby/3.3.0/gems/power_assert-2.0.3/power_assert.gemspec +31 -0
  1412. data/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/History.rdoc +2403 -0
  1413. data/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/MIT-LICENSE +21 -0
  1414. data/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/README.rdoc +155 -0
  1415. data/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/doc/command_line_usage.rdoc +158 -0
  1416. data/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/doc/example/Rakefile1 +38 -0
  1417. data/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/doc/example/Rakefile2 +35 -0
  1418. data/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/doc/example/a.c +6 -0
  1419. data/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/doc/example/b.c +6 -0
  1420. data/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/doc/example/main.c +11 -0
  1421. data/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/doc/glossary.rdoc +42 -0
  1422. data/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/doc/jamis.rb +592 -0
  1423. data/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/doc/proto_rake.rdoc +127 -0
  1424. data/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/doc/rake.1 +156 -0
  1425. data/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/doc/rakefile.rdoc +622 -0
  1426. data/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/doc/rational.rdoc +151 -0
  1427. data/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/exe/rake +27 -0
  1428. data/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/application.rb +861 -0
  1429. data/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/backtrace.rb +25 -0
  1430. data/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/clean.rb +78 -0
  1431. data/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/cloneable.rb +17 -0
  1432. data/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/cpu_counter.rb +107 -0
  1433. data/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/default_loader.rb +15 -0
  1434. data/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/dsl_definition.rb +196 -0
  1435. data/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/early_time.rb +22 -0
  1436. data/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/ext/core.rb +26 -0
  1437. data/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/ext/string.rb +176 -0
  1438. data/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/file_creation_task.rb +25 -0
  1439. data/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/file_list.rb +435 -0
  1440. data/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/file_task.rb +58 -0
  1441. data/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/file_utils.rb +132 -0
  1442. data/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/file_utils_ext.rb +134 -0
  1443. data/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/invocation_chain.rb +57 -0
  1444. data/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/invocation_exception_mixin.rb +17 -0
  1445. data/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/late_time.rb +18 -0
  1446. data/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/linked_list.rb +112 -0
  1447. data/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/loaders/makefile.rb +54 -0
  1448. data/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/multi_task.rb +14 -0
  1449. data/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/name_space.rb +38 -0
  1450. data/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/packagetask.rb +222 -0
  1451. data/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/phony.rb +16 -0
  1452. data/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/private_reader.rb +21 -0
  1453. data/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/promise.rb +100 -0
  1454. data/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/pseudo_status.rb +30 -0
  1455. data/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/rake_module.rb +67 -0
  1456. data/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/rake_test_loader.rb +27 -0
  1457. data/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/rule_recursion_overflow_error.rb +20 -0
  1458. data/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/scope.rb +43 -0
  1459. data/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/task.rb +434 -0
  1460. data/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/task_argument_error.rb +8 -0
  1461. data/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/task_arguments.rb +109 -0
  1462. data/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/task_manager.rb +331 -0
  1463. data/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/tasklib.rb +12 -0
  1464. data/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/testtask.rb +189 -0
  1465. data/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/thread_history_display.rb +49 -0
  1466. data/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/thread_pool.rb +163 -0
  1467. data/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/trace_output.rb +23 -0
  1468. data/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/version.rb +10 -0
  1469. data/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/win32.rb +51 -0
  1470. data/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake.rb +70 -0
  1471. data/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/rake.gemspec +101 -0
  1472. data/vendor/bundle/ruby/3.3.0/gems/rusty_json_schema-0.15.0/Cargo.toml +14 -0
  1473. data/vendor/bundle/ruby/3.3.0/gems/rusty_json_schema-0.15.0/README.md +76 -0
  1474. data/vendor/bundle/ruby/3.3.0/gems/rusty_json_schema-0.15.0/ext/Rakefile +51 -0
  1475. data/vendor/bundle/ruby/3.3.0/gems/rusty_json_schema-0.15.0/ext/json_schema.so.x64-mingw32.default +0 -0
  1476. data/vendor/bundle/ruby/3.3.0/gems/rusty_json_schema-0.15.0/ext/json_schema.so.x86_64-darwin.default +0 -0
  1477. data/vendor/bundle/ruby/3.3.0/gems/rusty_json_schema-0.15.0/ext/json_schema.so.x86_64-linux.default +0 -0
  1478. data/vendor/bundle/ruby/3.3.0/gems/rusty_json_schema-0.15.0/lib/rusty_json_schema/binding.rb +22 -0
  1479. data/vendor/bundle/ruby/3.3.0/gems/rusty_json_schema-0.15.0/lib/rusty_json_schema/nodes_array.rb +26 -0
  1480. data/vendor/bundle/ruby/3.3.0/gems/rusty_json_schema-0.15.0/lib/rusty_json_schema/validator.rb +47 -0
  1481. data/vendor/bundle/ruby/3.3.0/gems/rusty_json_schema-0.15.0/lib/rusty_json_schema/version.rb +7 -0
  1482. data/vendor/bundle/ruby/3.3.0/gems/rusty_json_schema-0.15.0/lib/rusty_json_schema.rb +51 -0
  1483. data/vendor/bundle/ruby/3.3.0/gems/rusty_json_schema-0.15.0/lib/tasks/thermite_dir_patch.rb +13 -0
  1484. data/vendor/bundle/ruby/3.3.0/gems/rusty_json_schema-0.15.0/rusty_json_schema.gemspec +46 -0
  1485. data/vendor/bundle/ruby/3.3.0/gems/rusty_json_schema-0.15.0/src/lib.rs +267 -0
  1486. data/vendor/bundle/ruby/3.3.0/gems/serverengine-2.3.2/.github/workflows/linux.yml +31 -0
  1487. data/vendor/bundle/ruby/3.3.0/gems/serverengine-2.3.2/.github/workflows/windows.yml +42 -0
  1488. data/vendor/bundle/ruby/3.3.0/gems/serverengine-2.3.2/.gitignore +5 -0
  1489. data/vendor/bundle/ruby/3.3.0/gems/serverengine-2.3.2/.rspec +2 -0
  1490. data/vendor/bundle/ruby/3.3.0/gems/serverengine-2.3.2/Changelog +208 -0
  1491. data/vendor/bundle/ruby/3.3.0/gems/serverengine-2.3.2/Gemfile +2 -0
  1492. data/vendor/bundle/ruby/3.3.0/gems/serverengine-2.3.2/LICENSE +202 -0
  1493. data/vendor/bundle/ruby/3.3.0/gems/serverengine-2.3.2/NOTICE +3 -0
  1494. data/vendor/bundle/ruby/3.3.0/gems/serverengine-2.3.2/README.md +517 -0
  1495. data/vendor/bundle/ruby/3.3.0/gems/serverengine-2.3.2/Rakefile +10 -0
  1496. data/vendor/bundle/ruby/3.3.0/gems/serverengine-2.3.2/examples/server.rb +138 -0
  1497. data/vendor/bundle/ruby/3.3.0/gems/serverengine-2.3.2/examples/spawn_worker_script.rb +38 -0
  1498. data/vendor/bundle/ruby/3.3.0/gems/serverengine-2.3.2/lib/serverengine/blocking_flag.rb +77 -0
  1499. data/vendor/bundle/ruby/3.3.0/gems/serverengine-2.3.2/lib/serverengine/command_sender.rb +89 -0
  1500. data/vendor/bundle/ruby/3.3.0/gems/serverengine-2.3.2/lib/serverengine/config_loader.rb +82 -0
  1501. data/vendor/bundle/ruby/3.3.0/gems/serverengine-2.3.2/lib/serverengine/daemon.rb +232 -0
  1502. data/vendor/bundle/ruby/3.3.0/gems/serverengine-2.3.2/lib/serverengine/daemon_logger.rb +172 -0
  1503. data/vendor/bundle/ruby/3.3.0/gems/serverengine-2.3.2/lib/serverengine/embedded_server.rb +67 -0
  1504. data/vendor/bundle/ruby/3.3.0/gems/serverengine-2.3.2/lib/serverengine/multi_process_server.rb +173 -0
  1505. data/vendor/bundle/ruby/3.3.0/gems/serverengine-2.3.2/lib/serverengine/multi_spawn_server.rb +88 -0
  1506. data/vendor/bundle/ruby/3.3.0/gems/serverengine-2.3.2/lib/serverengine/multi_thread_server.rb +83 -0
  1507. data/vendor/bundle/ruby/3.3.0/gems/serverengine-2.3.2/lib/serverengine/multi_worker_server.rb +173 -0
  1508. data/vendor/bundle/ruby/3.3.0/gems/serverengine-2.3.2/lib/serverengine/privilege.rb +57 -0
  1509. data/vendor/bundle/ruby/3.3.0/gems/serverengine-2.3.2/lib/serverengine/process_manager.rb +534 -0
  1510. data/vendor/bundle/ruby/3.3.0/gems/serverengine-2.3.2/lib/serverengine/server.rb +183 -0
  1511. data/vendor/bundle/ruby/3.3.0/gems/serverengine-2.3.2/lib/serverengine/signal_thread.rb +116 -0
  1512. data/vendor/bundle/ruby/3.3.0/gems/serverengine-2.3.2/lib/serverengine/signals.rb +31 -0
  1513. data/vendor/bundle/ruby/3.3.0/gems/serverengine-2.3.2/lib/serverengine/socket_manager.rb +259 -0
  1514. data/vendor/bundle/ruby/3.3.0/gems/serverengine-2.3.2/lib/serverengine/socket_manager_unix.rb +131 -0
  1515. data/vendor/bundle/ruby/3.3.0/gems/serverengine-2.3.2/lib/serverengine/socket_manager_win.rb +158 -0
  1516. data/vendor/bundle/ruby/3.3.0/gems/serverengine-2.3.2/lib/serverengine/supervisor.rb +317 -0
  1517. data/vendor/bundle/ruby/3.3.0/gems/serverengine-2.3.2/lib/serverengine/utils.rb +62 -0
  1518. data/vendor/bundle/ruby/3.3.0/gems/serverengine-2.3.2/lib/serverengine/version.rb +3 -0
  1519. data/vendor/bundle/ruby/3.3.0/gems/serverengine-2.3.2/lib/serverengine/winsock.rb +133 -0
  1520. data/vendor/bundle/ruby/3.3.0/gems/serverengine-2.3.2/lib/serverengine/worker.rb +84 -0
  1521. data/vendor/bundle/ruby/3.3.0/gems/serverengine-2.3.2/lib/serverengine.rb +61 -0
  1522. data/vendor/bundle/ruby/3.3.0/gems/serverengine-2.3.2/serverengine.gemspec +32 -0
  1523. data/vendor/bundle/ruby/3.3.0/gems/serverengine-2.3.2/spec/blocking_flag_spec.rb +71 -0
  1524. data/vendor/bundle/ruby/3.3.0/gems/serverengine-2.3.2/spec/daemon_logger_spec.rb +200 -0
  1525. data/vendor/bundle/ruby/3.3.0/gems/serverengine-2.3.2/spec/daemon_spec.rb +184 -0
  1526. data/vendor/bundle/ruby/3.3.0/gems/serverengine-2.3.2/spec/multi_process_server_spec.rb +259 -0
  1527. data/vendor/bundle/ruby/3.3.0/gems/serverengine-2.3.2/spec/multi_spawn_server_spec.rb +225 -0
  1528. data/vendor/bundle/ruby/3.3.0/gems/serverengine-2.3.2/spec/server_worker_context.rb +278 -0
  1529. data/vendor/bundle/ruby/3.3.0/gems/serverengine-2.3.2/spec/signal_thread_spec.rb +94 -0
  1530. data/vendor/bundle/ruby/3.3.0/gems/serverengine-2.3.2/spec/socket_manager_spec.rb +282 -0
  1531. data/vendor/bundle/ruby/3.3.0/gems/serverengine-2.3.2/spec/spec_helper.rb +21 -0
  1532. data/vendor/bundle/ruby/3.3.0/gems/serverengine-2.3.2/spec/supervisor_spec.rb +237 -0
  1533. data/vendor/bundle/ruby/3.3.0/gems/serverengine-2.3.2/spec/winsock_spec.rb +17 -0
  1534. data/vendor/bundle/ruby/3.3.0/gems/sigdump-0.2.5/.gitignore +2 -0
  1535. data/vendor/bundle/ruby/3.3.0/gems/sigdump-0.2.5/ChangeLog +36 -0
  1536. data/vendor/bundle/ruby/3.3.0/gems/sigdump-0.2.5/Gemfile +3 -0
  1537. data/vendor/bundle/ruby/3.3.0/gems/sigdump-0.2.5/LICENSE +202 -0
  1538. data/vendor/bundle/ruby/3.3.0/gems/sigdump-0.2.5/README.md +134 -0
  1539. data/vendor/bundle/ruby/3.3.0/gems/sigdump-0.2.5/Rakefile +5 -0
  1540. data/vendor/bundle/ruby/3.3.0/gems/sigdump-0.2.5/lib/sigdump/setup.rb +4 -0
  1541. data/vendor/bundle/ruby/3.3.0/gems/sigdump-0.2.5/lib/sigdump.rb +150 -0
  1542. data/vendor/bundle/ruby/3.3.0/gems/sigdump-0.2.5/sigdump.gemspec +21 -0
  1543. data/vendor/bundle/ruby/3.3.0/gems/strptime-0.2.5/.clang-format +67 -0
  1544. data/vendor/bundle/ruby/3.3.0/gems/strptime-0.2.5/.gitignore +15 -0
  1545. data/vendor/bundle/ruby/3.3.0/gems/strptime-0.2.5/.rspec +2 -0
  1546. data/vendor/bundle/ruby/3.3.0/gems/strptime-0.2.5/.travis.yml +24 -0
  1547. data/vendor/bundle/ruby/3.3.0/gems/strptime-0.2.5/Gemfile +4 -0
  1548. data/vendor/bundle/ruby/3.3.0/gems/strptime-0.2.5/LICENSE.txt +26 -0
  1549. data/vendor/bundle/ruby/3.3.0/gems/strptime-0.2.5/README.md +54 -0
  1550. data/vendor/bundle/ruby/3.3.0/gems/strptime-0.2.5/Rakefile +36 -0
  1551. data/vendor/bundle/ruby/3.3.0/gems/strptime-0.2.5/appveyor.yml +18 -0
  1552. data/vendor/bundle/ruby/3.3.0/gems/strptime-0.2.5/bin/console +14 -0
  1553. data/vendor/bundle/ruby/3.3.0/gems/strptime-0.2.5/bin/setup +7 -0
  1554. data/vendor/bundle/ruby/3.3.0/gems/strptime-0.2.5/ext/strptime/Makefile +273 -0
  1555. data/vendor/bundle/ruby/3.3.0/gems/strptime-0.2.5/ext/strptime/extconf.rb +7 -0
  1556. data/vendor/bundle/ruby/3.3.0/gems/strptime-0.2.5/ext/strptime/ruby_time.c +694 -0
  1557. data/vendor/bundle/ruby/3.3.0/gems/strptime-0.2.5/ext/strptime/strftime.c +510 -0
  1558. data/vendor/bundle/ruby/3.3.0/gems/strptime-0.2.5/ext/strptime/strptime.c +742 -0
  1559. data/vendor/bundle/ruby/3.3.0/gems/strptime-0.2.5/ext/strptime/strptime.h +29 -0
  1560. data/vendor/bundle/ruby/3.3.0/gems/strptime-0.2.5/lib/strptime/version.rb +3 -0
  1561. data/vendor/bundle/ruby/3.3.0/gems/strptime-0.2.5/lib/strptime.rb +10 -0
  1562. data/vendor/bundle/ruby/3.3.0/gems/strptime-0.2.5/strptime.gemspec +30 -0
  1563. data/vendor/bundle/ruby/3.3.0/gems/test-unit-3.6.2/BSDL +24 -0
  1564. data/vendor/bundle/ruby/3.3.0/gems/test-unit-3.6.2/COPYING +64 -0
  1565. data/vendor/bundle/ruby/3.3.0/gems/test-unit-3.6.2/PSFL +271 -0
  1566. data/vendor/bundle/ruby/3.3.0/gems/test-unit-3.6.2/README.md +108 -0
  1567. data/vendor/bundle/ruby/3.3.0/gems/test-unit-3.6.2/Rakefile +68 -0
  1568. data/vendor/bundle/ruby/3.3.0/gems/test-unit-3.6.2/doc/text/getting-started.md +246 -0
  1569. data/vendor/bundle/ruby/3.3.0/gems/test-unit-3.6.2/doc/text/how-to.md +90 -0
  1570. data/vendor/bundle/ruby/3.3.0/gems/test-unit-3.6.2/doc/text/news.md +1782 -0
  1571. data/vendor/bundle/ruby/3.3.0/gems/test-unit-3.6.2/lib/test/unit/assertion-failed-error.rb +60 -0
  1572. data/vendor/bundle/ruby/3.3.0/gems/test-unit-3.6.2/lib/test/unit/assertions.rb +2541 -0
  1573. data/vendor/bundle/ruby/3.3.0/gems/test-unit-3.6.2/lib/test/unit/attribute-matcher.rb +26 -0
  1574. data/vendor/bundle/ruby/3.3.0/gems/test-unit-3.6.2/lib/test/unit/attribute.rb +228 -0
  1575. data/vendor/bundle/ruby/3.3.0/gems/test-unit-3.6.2/lib/test/unit/auto-runner-loader.rb +17 -0
  1576. data/vendor/bundle/ruby/3.3.0/gems/test-unit-3.6.2/lib/test/unit/autorunner.rb +606 -0
  1577. data/vendor/bundle/ruby/3.3.0/gems/test-unit-3.6.2/lib/test/unit/code-snippet-fetcher.rb +58 -0
  1578. data/vendor/bundle/ruby/3.3.0/gems/test-unit-3.6.2/lib/test/unit/collector/descendant.rb +20 -0
  1579. data/vendor/bundle/ruby/3.3.0/gems/test-unit-3.6.2/lib/test/unit/collector/dir.rb +110 -0
  1580. data/vendor/bundle/ruby/3.3.0/gems/test-unit-3.6.2/lib/test/unit/collector/load.rb +201 -0
  1581. data/vendor/bundle/ruby/3.3.0/gems/test-unit-3.6.2/lib/test/unit/collector/objectspace.rb +35 -0
  1582. data/vendor/bundle/ruby/3.3.0/gems/test-unit-3.6.2/lib/test/unit/collector/xml.rb +249 -0
  1583. data/vendor/bundle/ruby/3.3.0/gems/test-unit-3.6.2/lib/test/unit/collector.rb +104 -0
  1584. data/vendor/bundle/ruby/3.3.0/gems/test-unit-3.6.2/lib/test/unit/color-scheme.rb +225 -0
  1585. data/vendor/bundle/ruby/3.3.0/gems/test-unit-3.6.2/lib/test/unit/color.rb +134 -0
  1586. data/vendor/bundle/ruby/3.3.0/gems/test-unit-3.6.2/lib/test/unit/data-sets.rb +127 -0
  1587. data/vendor/bundle/ruby/3.3.0/gems/test-unit-3.6.2/lib/test/unit/data.rb +371 -0
  1588. data/vendor/bundle/ruby/3.3.0/gems/test-unit-3.6.2/lib/test/unit/diff.rb +745 -0
  1589. data/vendor/bundle/ruby/3.3.0/gems/test-unit-3.6.2/lib/test/unit/error.rb +158 -0
  1590. data/vendor/bundle/ruby/3.3.0/gems/test-unit-3.6.2/lib/test/unit/exception-handler.rb +82 -0
  1591. data/vendor/bundle/ruby/3.3.0/gems/test-unit-3.6.2/lib/test/unit/failure.rb +169 -0
  1592. data/vendor/bundle/ruby/3.3.0/gems/test-unit-3.6.2/lib/test/unit/fault-location-detector.rb +100 -0
  1593. data/vendor/bundle/ruby/3.3.0/gems/test-unit-3.6.2/lib/test/unit/fixture.rb +304 -0
  1594. data/vendor/bundle/ruby/3.3.0/gems/test-unit-3.6.2/lib/test/unit/notification.rb +138 -0
  1595. data/vendor/bundle/ruby/3.3.0/gems/test-unit-3.6.2/lib/test/unit/omission.rb +198 -0
  1596. data/vendor/bundle/ruby/3.3.0/gems/test-unit-3.6.2/lib/test/unit/pending.rb +155 -0
  1597. data/vendor/bundle/ruby/3.3.0/gems/test-unit-3.6.2/lib/test/unit/priority.rb +194 -0
  1598. data/vendor/bundle/ruby/3.3.0/gems/test-unit-3.6.2/lib/test/unit/runner/console.rb +78 -0
  1599. data/vendor/bundle/ruby/3.3.0/gems/test-unit-3.6.2/lib/test/unit/runner/emacs.rb +8 -0
  1600. data/vendor/bundle/ruby/3.3.0/gems/test-unit-3.6.2/lib/test/unit/runner/xml.rb +15 -0
  1601. data/vendor/bundle/ruby/3.3.0/gems/test-unit-3.6.2/lib/test/unit/test-suite-creator.rb +103 -0
  1602. data/vendor/bundle/ruby/3.3.0/gems/test-unit-3.6.2/lib/test/unit/testcase.rb +938 -0
  1603. data/vendor/bundle/ruby/3.3.0/gems/test-unit-3.6.2/lib/test/unit/testresult.rb +132 -0
  1604. data/vendor/bundle/ruby/3.3.0/gems/test-unit-3.6.2/lib/test/unit/testsuite.rb +175 -0
  1605. data/vendor/bundle/ruby/3.3.0/gems/test-unit-3.6.2/lib/test/unit/ui/console/outputlevel.rb +15 -0
  1606. data/vendor/bundle/ruby/3.3.0/gems/test-unit-3.6.2/lib/test/unit/ui/console/testrunner.rb +804 -0
  1607. data/vendor/bundle/ruby/3.3.0/gems/test-unit-3.6.2/lib/test/unit/ui/emacs/testrunner.rb +49 -0
  1608. data/vendor/bundle/ruby/3.3.0/gems/test-unit-3.6.2/lib/test/unit/ui/testrunner.rb +53 -0
  1609. data/vendor/bundle/ruby/3.3.0/gems/test-unit-3.6.2/lib/test/unit/ui/testrunnermediator.rb +114 -0
  1610. data/vendor/bundle/ruby/3.3.0/gems/test-unit-3.6.2/lib/test/unit/ui/testrunnerutilities.rb +41 -0
  1611. data/vendor/bundle/ruby/3.3.0/gems/test-unit-3.6.2/lib/test/unit/ui/xml/testrunner.rb +224 -0
  1612. data/vendor/bundle/ruby/3.3.0/gems/test-unit-3.6.2/lib/test/unit/util/backtracefilter.rb +59 -0
  1613. data/vendor/bundle/ruby/3.3.0/gems/test-unit-3.6.2/lib/test/unit/util/memory-usage.rb +47 -0
  1614. data/vendor/bundle/ruby/3.3.0/gems/test-unit-3.6.2/lib/test/unit/util/method-owner-finder.rb +28 -0
  1615. data/vendor/bundle/ruby/3.3.0/gems/test-unit-3.6.2/lib/test/unit/util/observable.rb +90 -0
  1616. data/vendor/bundle/ruby/3.3.0/gems/test-unit-3.6.2/lib/test/unit/util/output.rb +32 -0
  1617. data/vendor/bundle/ruby/3.3.0/gems/test-unit-3.6.2/lib/test/unit/util/procwrapper.rb +48 -0
  1618. data/vendor/bundle/ruby/3.3.0/gems/test-unit-3.6.2/lib/test/unit/version.rb +5 -0
  1619. data/vendor/bundle/ruby/3.3.0/gems/test-unit-3.6.2/lib/test/unit/warning.rb +3 -0
  1620. data/vendor/bundle/ruby/3.3.0/gems/test-unit-3.6.2/lib/test/unit.rb +521 -0
  1621. data/vendor/bundle/ruby/3.3.0/gems/test-unit-3.6.2/lib/test-unit.rb +19 -0
  1622. data/vendor/bundle/ruby/3.3.0/gems/test-unit-3.6.2/sample/adder.rb +13 -0
  1623. data/vendor/bundle/ruby/3.3.0/gems/test-unit-3.6.2/sample/subtracter.rb +12 -0
  1624. data/vendor/bundle/ruby/3.3.0/gems/test-unit-3.6.2/sample/test_adder.rb +20 -0
  1625. data/vendor/bundle/ruby/3.3.0/gems/test-unit-3.6.2/sample/test_subtracter.rb +20 -0
  1626. data/vendor/bundle/ruby/3.3.0/gems/test-unit-3.6.2/sample/test_user.rb +23 -0
  1627. data/vendor/bundle/ruby/3.3.0/gems/thermite-0.13.0/.appveyor.yml +27 -0
  1628. data/vendor/bundle/ruby/3.3.0/gems/thermite-0.13.0/.gitignore +5 -0
  1629. data/vendor/bundle/ruby/3.3.0/gems/thermite-0.13.0/.rubocop.yml +33 -0
  1630. data/vendor/bundle/ruby/3.3.0/gems/thermite-0.13.0/.travis.yml +24 -0
  1631. data/vendor/bundle/ruby/3.3.0/gems/thermite-0.13.0/.yardopts +2 -0
  1632. data/vendor/bundle/ruby/3.3.0/gems/thermite-0.13.0/CONTRIBUTING.md +67 -0
  1633. data/vendor/bundle/ruby/3.3.0/gems/thermite-0.13.0/Gemfile +10 -0
  1634. data/vendor/bundle/ruby/3.3.0/gems/thermite-0.13.0/LICENSE +9 -0
  1635. data/vendor/bundle/ruby/3.3.0/gems/thermite-0.13.0/NEWS.md +173 -0
  1636. data/vendor/bundle/ruby/3.3.0/gems/thermite-0.13.0/README.md +134 -0
  1637. data/vendor/bundle/ruby/3.3.0/gems/thermite-0.13.0/Rakefile +32 -0
  1638. data/vendor/bundle/ruby/3.3.0/gems/thermite-0.13.0/ci/after_success.py +54 -0
  1639. data/vendor/bundle/ruby/3.3.0/gems/thermite-0.13.0/lib/thermite/cargo.rb +125 -0
  1640. data/vendor/bundle/ruby/3.3.0/gems/thermite-0.13.0/lib/thermite/config.rb +290 -0
  1641. data/vendor/bundle/ruby/3.3.0/gems/thermite-0.13.0/lib/thermite/custom_binary.rb +66 -0
  1642. data/vendor/bundle/ruby/3.3.0/gems/thermite-0.13.0/lib/thermite/fiddle.rb +45 -0
  1643. data/vendor/bundle/ruby/3.3.0/gems/thermite-0.13.0/lib/thermite/github_release_binary.rb +122 -0
  1644. data/vendor/bundle/ruby/3.3.0/gems/thermite-0.13.0/lib/thermite/package.rb +95 -0
  1645. data/vendor/bundle/ruby/3.3.0/gems/thermite-0.13.0/lib/thermite/tasks.rb +157 -0
  1646. data/vendor/bundle/ruby/3.3.0/gems/thermite-0.13.0/lib/thermite/util.rb +59 -0
  1647. data/vendor/bundle/ruby/3.3.0/gems/thermite-0.13.0/test/fixtures/config/Cargo.toml +5 -0
  1648. data/vendor/bundle/ruby/3.3.0/gems/thermite-0.13.0/test/fixtures/github/releases.atom +30 -0
  1649. data/vendor/bundle/ruby/3.3.0/gems/thermite-0.13.0/test/lib/thermite/cargo_test.rb +95 -0
  1650. data/vendor/bundle/ruby/3.3.0/gems/thermite-0.13.0/test/lib/thermite/config_test.rb +232 -0
  1651. data/vendor/bundle/ruby/3.3.0/gems/thermite-0.13.0/test/lib/thermite/custom_binary_test.rb +59 -0
  1652. data/vendor/bundle/ruby/3.3.0/gems/thermite-0.13.0/test/lib/thermite/github_release_binary_test.rb +160 -0
  1653. data/vendor/bundle/ruby/3.3.0/gems/thermite-0.13.0/test/lib/thermite/package_test.rb +119 -0
  1654. data/vendor/bundle/ruby/3.3.0/gems/thermite-0.13.0/test/lib/thermite/util_test.rb +55 -0
  1655. data/vendor/bundle/ruby/3.3.0/gems/thermite-0.13.0/test/test_helper.rb +56 -0
  1656. data/vendor/bundle/ruby/3.3.0/gems/thermite-0.13.0/thermite.gemspec +28 -0
  1657. data/vendor/bundle/ruby/3.3.0/gems/tomlrb-1.3.0/LICENSE.txt +21 -0
  1658. data/vendor/bundle/ruby/3.3.0/gems/tomlrb-1.3.0/lib/tomlrb/generated_parser.rb +570 -0
  1659. data/vendor/bundle/ruby/3.3.0/gems/tomlrb-1.3.0/lib/tomlrb/handler.rb +73 -0
  1660. data/vendor/bundle/ruby/3.3.0/gems/tomlrb-1.3.0/lib/tomlrb/parser.rb +19 -0
  1661. data/vendor/bundle/ruby/3.3.0/gems/tomlrb-1.3.0/lib/tomlrb/parser.y +106 -0
  1662. data/vendor/bundle/ruby/3.3.0/gems/tomlrb-1.3.0/lib/tomlrb/scanner.rb +58 -0
  1663. data/vendor/bundle/ruby/3.3.0/gems/tomlrb-1.3.0/lib/tomlrb/string_utils.rb +33 -0
  1664. data/vendor/bundle/ruby/3.3.0/gems/tomlrb-1.3.0/lib/tomlrb/version.rb +3 -0
  1665. data/vendor/bundle/ruby/3.3.0/gems/tomlrb-1.3.0/lib/tomlrb.rb +44 -0
  1666. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-2.0.6/.yardopts +9 -0
  1667. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-2.0.6/CHANGES.md +1026 -0
  1668. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-2.0.6/LICENSE +19 -0
  1669. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-2.0.6/README.md +406 -0
  1670. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-2.0.6/lib/tzinfo/annual_rules.rb +71 -0
  1671. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-2.0.6/lib/tzinfo/country.rb +208 -0
  1672. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-2.0.6/lib/tzinfo/country_timezone.rb +93 -0
  1673. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-2.0.6/lib/tzinfo/data_source.rb +446 -0
  1674. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-2.0.6/lib/tzinfo/data_sources/constant_offset_data_timezone_info.rb +56 -0
  1675. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-2.0.6/lib/tzinfo/data_sources/country_info.rb +42 -0
  1676. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-2.0.6/lib/tzinfo/data_sources/data_timezone_info.rb +91 -0
  1677. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-2.0.6/lib/tzinfo/data_sources/linked_timezone_info.rb +33 -0
  1678. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-2.0.6/lib/tzinfo/data_sources/posix_time_zone_parser.rb +177 -0
  1679. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-2.0.6/lib/tzinfo/data_sources/ruby_data_source.rb +141 -0
  1680. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-2.0.6/lib/tzinfo/data_sources/timezone_info.rb +47 -0
  1681. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-2.0.6/lib/tzinfo/data_sources/transitions_data_timezone_info.rb +214 -0
  1682. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-2.0.6/lib/tzinfo/data_sources/zoneinfo_data_source.rb +592 -0
  1683. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-2.0.6/lib/tzinfo/data_sources/zoneinfo_reader.rb +482 -0
  1684. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-2.0.6/lib/tzinfo/data_sources.rb +8 -0
  1685. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-2.0.6/lib/tzinfo/data_timezone.rb +44 -0
  1686. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-2.0.6/lib/tzinfo/datetime_with_offset.rb +153 -0
  1687. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-2.0.6/lib/tzinfo/format1/country_definer.rb +17 -0
  1688. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-2.0.6/lib/tzinfo/format1/country_index_definition.rb +64 -0
  1689. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-2.0.6/lib/tzinfo/format1/timezone_definer.rb +64 -0
  1690. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-2.0.6/lib/tzinfo/format1/timezone_definition.rb +39 -0
  1691. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-2.0.6/lib/tzinfo/format1/timezone_index_definition.rb +77 -0
  1692. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-2.0.6/lib/tzinfo/format1.rb +10 -0
  1693. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-2.0.6/lib/tzinfo/format2/country_definer.rb +68 -0
  1694. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-2.0.6/lib/tzinfo/format2/country_index_definer.rb +68 -0
  1695. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-2.0.6/lib/tzinfo/format2/country_index_definition.rb +46 -0
  1696. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-2.0.6/lib/tzinfo/format2/timezone_definer.rb +94 -0
  1697. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-2.0.6/lib/tzinfo/format2/timezone_definition.rb +73 -0
  1698. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-2.0.6/lib/tzinfo/format2/timezone_index_definer.rb +45 -0
  1699. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-2.0.6/lib/tzinfo/format2/timezone_index_definition.rb +55 -0
  1700. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-2.0.6/lib/tzinfo/format2.rb +10 -0
  1701. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-2.0.6/lib/tzinfo/info_timezone.rb +35 -0
  1702. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-2.0.6/lib/tzinfo/linked_timezone.rb +44 -0
  1703. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-2.0.6/lib/tzinfo/offset_timezone_period.rb +42 -0
  1704. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-2.0.6/lib/tzinfo/ruby_core_support.rb +38 -0
  1705. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-2.0.6/lib/tzinfo/string_deduper.rb +118 -0
  1706. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-2.0.6/lib/tzinfo/time_with_offset.rb +154 -0
  1707. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-2.0.6/lib/tzinfo/timestamp.rb +552 -0
  1708. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-2.0.6/lib/tzinfo/timestamp_with_offset.rb +85 -0
  1709. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-2.0.6/lib/tzinfo/timezone.rb +1160 -0
  1710. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-2.0.6/lib/tzinfo/timezone_offset.rb +111 -0
  1711. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-2.0.6/lib/tzinfo/timezone_period.rb +179 -0
  1712. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-2.0.6/lib/tzinfo/timezone_proxy.rb +96 -0
  1713. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-2.0.6/lib/tzinfo/timezone_transition.rb +98 -0
  1714. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-2.0.6/lib/tzinfo/transition_rule.rb +455 -0
  1715. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-2.0.6/lib/tzinfo/transitions_timezone_period.rb +63 -0
  1716. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-2.0.6/lib/tzinfo/version.rb +7 -0
  1717. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-2.0.6/lib/tzinfo/with_offset.rb +61 -0
  1718. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-2.0.6/lib/tzinfo.rb +81 -0
  1719. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/.yardopts +8 -0
  1720. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/CONTRIBUTING.md +7 -0
  1721. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/LICENSE +19 -0
  1722. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/README.md +42 -0
  1723. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Africa/Abidjan.rb +23 -0
  1724. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Africa/Accra.rb +18 -0
  1725. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Africa/Addis_Ababa.rb +18 -0
  1726. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Africa/Algiers.rb +60 -0
  1727. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Africa/Asmara.rb +18 -0
  1728. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Africa/Asmera.rb +18 -0
  1729. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Africa/Bamako.rb +18 -0
  1730. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Africa/Bangui.rb +18 -0
  1731. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Africa/Banjul.rb +18 -0
  1732. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Africa/Bissau.rb +25 -0
  1733. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Africa/Blantyre.rb +18 -0
  1734. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Africa/Brazzaville.rb +18 -0
  1735. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Africa/Bujumbura.rb +18 -0
  1736. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Africa/Cairo.rb +254 -0
  1737. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Africa/Casablanca.rb +196 -0
  1738. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Africa/Ceuta.rb +225 -0
  1739. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Africa/Conakry.rb +18 -0
  1740. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Africa/Dakar.rb +18 -0
  1741. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Africa/Dar_es_Salaam.rb +18 -0
  1742. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Africa/Djibouti.rb +18 -0
  1743. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Africa/Douala.rb +18 -0
  1744. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Africa/El_Aaiun.rb +186 -0
  1745. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Africa/Freetown.rb +18 -0
  1746. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Africa/Gaborone.rb +18 -0
  1747. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Africa/Harare.rb +18 -0
  1748. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Africa/Johannesburg.rb +30 -0
  1749. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Africa/Juba.rb +59 -0
  1750. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Africa/Kampala.rb +18 -0
  1751. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Africa/Khartoum.rb +59 -0
  1752. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Africa/Kigali.rb +18 -0
  1753. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Africa/Kinshasa.rb +18 -0
  1754. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Africa/Lagos.rb +28 -0
  1755. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Africa/Libreville.rb +18 -0
  1756. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Africa/Lome.rb +18 -0
  1757. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Africa/Luanda.rb +18 -0
  1758. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Africa/Lubumbashi.rb +18 -0
  1759. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Africa/Lusaka.rb +18 -0
  1760. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Africa/Malabo.rb +18 -0
  1761. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Africa/Maputo.rb +23 -0
  1762. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Africa/Maseru.rb +18 -0
  1763. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Africa/Mbabane.rb +18 -0
  1764. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Africa/Mogadishu.rb +18 -0
  1765. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Africa/Monrovia.rb +27 -0
  1766. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Africa/Nairobi.rb +29 -0
  1767. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Africa/Ndjamena.rb +26 -0
  1768. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Africa/Niamey.rb +18 -0
  1769. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Africa/Nouakchott.rb +18 -0
  1770. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Africa/Ouagadougou.rb +18 -0
  1771. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Africa/Porto__m__Novo.rb +18 -0
  1772. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Africa/Sao_Tome.rb +28 -0
  1773. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Africa/Timbuktu.rb +18 -0
  1774. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Africa/Tripoli.rb +56 -0
  1775. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Africa/Tunis.rb +58 -0
  1776. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Africa/Windhoek.rb +79 -0
  1777. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Adak.rb +249 -0
  1778. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Anchorage.rb +249 -0
  1779. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Anguilla.rb +18 -0
  1780. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Antigua.rb +18 -0
  1781. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Araguaina.rb +74 -0
  1782. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Argentina/Buenos_Aires.rb +89 -0
  1783. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Argentina/Catamarca.rb +89 -0
  1784. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Argentina/ComodRivadavia.rb +20 -0
  1785. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Argentina/Cordoba.rb +89 -0
  1786. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Argentina/Jujuy.rb +87 -0
  1787. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Argentina/La_Rioja.rb +90 -0
  1788. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Argentina/Mendoza.rb +89 -0
  1789. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Argentina/Rio_Gallegos.rb +89 -0
  1790. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Argentina/Salta.rb +87 -0
  1791. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Argentina/San_Juan.rb +90 -0
  1792. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Argentina/San_Luis.rb +90 -0
  1793. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Argentina/Tucuman.rb +91 -0
  1794. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Argentina/Ushuaia.rb +89 -0
  1795. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Aruba.rb +18 -0
  1796. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Asuncion.rb +227 -0
  1797. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Atikokan.rb +18 -0
  1798. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Atka.rb +18 -0
  1799. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Bahia.rb +84 -0
  1800. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Bahia_Banderas.rb +89 -0
  1801. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Barbados.rb +39 -0
  1802. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Belem.rb +52 -0
  1803. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Belize.rb +124 -0
  1804. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Blanc__m__Sablon.rb +18 -0
  1805. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Boa_Vista.rb +56 -0
  1806. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Bogota.rb +28 -0
  1807. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Boise.rb +252 -0
  1808. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Buenos_Aires.rb +18 -0
  1809. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Cambridge_Bay.rb +239 -0
  1810. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Campo_Grande.rb +114 -0
  1811. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Cancun.rb +67 -0
  1812. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Caracas.rb +29 -0
  1813. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Catamarca.rb +18 -0
  1814. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Cayenne.rb +25 -0
  1815. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Cayman.rb +18 -0
  1816. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Chicago.rb +336 -0
  1817. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Chihuahua.rb +85 -0
  1818. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Ciudad_Juarez.rb +190 -0
  1819. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Coral_Harbour.rb +18 -0
  1820. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Cordoba.rb +18 -0
  1821. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Costa_Rica.rb +34 -0
  1822. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Creston.rb +18 -0
  1823. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Cuiaba.rb +112 -0
  1824. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Curacao.rb +18 -0
  1825. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Danmarkshavn.rb +58 -0
  1826. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Dawson.rb +122 -0
  1827. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Dawson_Creek.rb +84 -0
  1828. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Denver.rb +257 -0
  1829. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Detroit.rb +241 -0
  1830. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Dominica.rb +18 -0
  1831. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Edmonton.rb +249 -0
  1832. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Eirunepe.rb +57 -0
  1833. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/El_Salvador.rb +28 -0
  1834. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Ensenada.rb +18 -0
  1835. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Fort_Nelson.rb +169 -0
  1836. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Fort_Wayne.rb +18 -0
  1837. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Fortaleza.rb +62 -0
  1838. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Glace_Bay.rb +239 -0
  1839. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Godthab.rb +18 -0
  1840. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Goose_Bay.rb +308 -0
  1841. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Grand_Turk.rb +214 -0
  1842. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Grenada.rb +18 -0
  1843. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Guadeloupe.rb +18 -0
  1844. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Guatemala.rb +32 -0
  1845. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Guayaquil.rb +28 -0
  1846. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Guyana.rb +28 -0
  1847. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Halifax.rb +327 -0
  1848. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Havana.rb +254 -0
  1849. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Hermosillo.rb +40 -0
  1850. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Indiana/Indianapolis.rb +202 -0
  1851. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Indiana/Knox.rb +256 -0
  1852. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Indiana/Marengo.rb +206 -0
  1853. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Indiana/Petersburg.rb +219 -0
  1854. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Indiana/Tell_City.rb +201 -0
  1855. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Indiana/Vevay.rb +184 -0
  1856. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Indiana/Vincennes.rb +204 -0
  1857. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Indiana/Winamac.rb +210 -0
  1858. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Indianapolis.rb +18 -0
  1859. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Inuvik.rb +232 -0
  1860. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Iqaluit.rb +236 -0
  1861. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Jamaica.rb +46 -0
  1862. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Jujuy.rb +18 -0
  1863. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Juneau.rb +248 -0
  1864. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Kentucky/Louisville.rb +281 -0
  1865. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Kentucky/Monticello.rb +251 -0
  1866. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Knox_IN.rb +18 -0
  1867. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Kralendijk.rb +18 -0
  1868. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/La_Paz.rb +27 -0
  1869. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Lima.rb +40 -0
  1870. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Los_Angeles.rb +285 -0
  1871. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Louisville.rb +18 -0
  1872. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Lower_Princes.rb +18 -0
  1873. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Maceio.rb +64 -0
  1874. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Managua.rb +41 -0
  1875. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Manaus.rb +54 -0
  1876. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Marigot.rb +18 -0
  1877. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Martinique.rb +28 -0
  1878. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Matamoros.rb +184 -0
  1879. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Mazatlan.rb +88 -0
  1880. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Mendoza.rb +18 -0
  1881. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Menominee.rb +243 -0
  1882. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Merida.rb +81 -0
  1883. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Metlakatla.rb +183 -0
  1884. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Mexico_City.rb +94 -0
  1885. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Miquelon.rb +202 -0
  1886. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Moncton.rb +307 -0
  1887. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Monterrey.rb +80 -0
  1888. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Montevideo.rb +115 -0
  1889. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Montreal.rb +18 -0
  1890. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Montserrat.rb +18 -0
  1891. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Nassau.rb +18 -0
  1892. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/New_York.rb +335 -0
  1893. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Nipigon.rb +18 -0
  1894. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Nome.rb +249 -0
  1895. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Noronha.rb +62 -0
  1896. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/North_Dakota/Beulah.rb +253 -0
  1897. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/North_Dakota/Center.rb +253 -0
  1898. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/North_Dakota/New_Salem.rb +253 -0
  1899. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Nuuk.rb +215 -0
  1900. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Ojinaga.rb +189 -0
  1901. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Panama.rb +25 -0
  1902. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Pangnirtung.rb +18 -0
  1903. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Paramaribo.rb +29 -0
  1904. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Phoenix.rb +35 -0
  1905. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Port__m__au__m__Prince.rb +184 -0
  1906. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Port_of_Spain.rb +18 -0
  1907. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Porto_Acre.rb +18 -0
  1908. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Porto_Velho.rb +52 -0
  1909. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Puerto_Rico.rb +28 -0
  1910. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Punta_Arenas.rb +144 -0
  1911. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Rainy_River.rb +18 -0
  1912. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Rankin_Inlet.rb +231 -0
  1913. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Recife.rb +62 -0
  1914. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Regina.rb +79 -0
  1915. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Resolute.rb +231 -0
  1916. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Rio_Branco.rb +55 -0
  1917. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Rosario.rb +18 -0
  1918. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Santa_Isabel.rb +18 -0
  1919. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Santarem.rb +54 -0
  1920. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Santiago.rb +258 -0
  1921. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Santo_Domingo.rb +43 -0
  1922. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Sao_Paulo.rb +114 -0
  1923. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Scoresbysund.rb +216 -0
  1924. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Shiprock.rb +18 -0
  1925. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Sitka.rb +247 -0
  1926. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/St_Barthelemy.rb +18 -0
  1927. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/St_Johns.rb +341 -0
  1928. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/St_Kitts.rb +18 -0
  1929. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/St_Lucia.rb +18 -0
  1930. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/St_Thomas.rb +18 -0
  1931. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/St_Vincent.rb +18 -0
  1932. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Swift_Current.rb +49 -0
  1933. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Tegucigalpa.rb +30 -0
  1934. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Thule.rb +192 -0
  1935. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Thunder_Bay.rb +18 -0
  1936. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Tijuana.rb +249 -0
  1937. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Toronto.rb +332 -0
  1938. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Tortola.rb +18 -0
  1939. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Vancouver.rb +289 -0
  1940. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Virgin.rb +18 -0
  1941. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Whitehorse.rb +122 -0
  1942. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Winnipeg.rb +285 -0
  1943. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Yakutat.rb +246 -0
  1944. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/America/Yellowknife.rb +18 -0
  1945. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Antarctica/Casey.rb +40 -0
  1946. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Antarctica/Davis.rb +30 -0
  1947. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Antarctica/DumontDUrville.rb +18 -0
  1948. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Antarctica/Macquarie.rb +240 -0
  1949. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Antarctica/Mawson.rb +25 -0
  1950. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Antarctica/McMurdo.rb +18 -0
  1951. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Antarctica/Palmer.rb +107 -0
  1952. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Antarctica/Rothera.rb +23 -0
  1953. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Antarctica/South_Pole.rb +18 -0
  1954. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Antarctica/Syowa.rb +18 -0
  1955. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Antarctica/Troll.rb +164 -0
  1956. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Antarctica/Vostok.rb +27 -0
  1957. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Arctic/Longyearbyen.rb +18 -0
  1958. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Aden.rb +18 -0
  1959. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Almaty.rb +77 -0
  1960. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Amman.rb +111 -0
  1961. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Anadyr.rb +91 -0
  1962. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Aqtau.rb +76 -0
  1963. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Aqtobe.rb +77 -0
  1964. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Ashgabat.rb +50 -0
  1965. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Ashkhabad.rb +18 -0
  1966. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Atyrau.rb +77 -0
  1967. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Baghdad.rb +78 -0
  1968. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Bahrain.rb +18 -0
  1969. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Baku.rb +91 -0
  1970. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Bangkok.rb +25 -0
  1971. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Barnaul.rb +92 -0
  1972. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Beirut.rb +238 -0
  1973. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Bishkek.rb +77 -0
  1974. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Brunei.rb +18 -0
  1975. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Calcutta.rb +18 -0
  1976. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Chita.rb +92 -0
  1977. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Choibalsan.rb +77 -0
  1978. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Chongqing.rb +18 -0
  1979. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Chungking.rb +18 -0
  1980. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Colombo.rb +35 -0
  1981. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Dacca.rb +18 -0
  1982. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Damascus.rb +145 -0
  1983. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Dhaka.rb +33 -0
  1984. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Dili.rb +27 -0
  1985. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Dubai.rb +23 -0
  1986. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Dushanbe.rb +49 -0
  1987. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Famagusta.rb +224 -0
  1988. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Gaza.rb +285 -0
  1989. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Harbin.rb +18 -0
  1990. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Hebron.rb +287 -0
  1991. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Ho_Chi_Minh.rb +34 -0
  1992. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Hong_Kong.rb +94 -0
  1993. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Hovd.rb +74 -0
  1994. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Irkutsk.rb +93 -0
  1995. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Istanbul.rb +18 -0
  1996. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Jakarta.rb +35 -0
  1997. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Jayapura.rb +27 -0
  1998. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Jerusalem.rb +248 -0
  1999. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Kabul.rb +25 -0
  2000. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Kamchatka.rb +89 -0
  2001. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Karachi.rb +37 -0
  2002. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Kashgar.rb +18 -0
  2003. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Kathmandu.rb +25 -0
  2004. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Katmandu.rb +18 -0
  2005. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Khandyga.rb +95 -0
  2006. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Kolkata.rb +32 -0
  2007. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Krasnoyarsk.rb +91 -0
  2008. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Kuala_Lumpur.rb +18 -0
  2009. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Kuching.rb +43 -0
  2010. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Kuwait.rb +18 -0
  2011. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Macao.rb +18 -0
  2012. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Macau.rb +96 -0
  2013. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Magadan.rb +92 -0
  2014. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Makassar.rb +29 -0
  2015. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Manila.rb +35 -0
  2016. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Muscat.rb +18 -0
  2017. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Nicosia.rb +224 -0
  2018. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Novokuznetsk.rb +89 -0
  2019. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Novosibirsk.rb +92 -0
  2020. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Omsk.rb +91 -0
  2021. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Oral.rb +78 -0
  2022. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Phnom_Penh.rb +18 -0
  2023. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Pontianak.rb +35 -0
  2024. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Pyongyang.rb +29 -0
  2025. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Qatar.rb +25 -0
  2026. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Qostanay.rb +78 -0
  2027. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Qyzylorda.rb +78 -0
  2028. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Rangoon.rb +18 -0
  2029. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Riyadh.rb +23 -0
  2030. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Saigon.rb +18 -0
  2031. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Sakhalin.rb +92 -0
  2032. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Samarkand.rb +49 -0
  2033. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Seoul.rb +55 -0
  2034. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Shanghai.rb +52 -0
  2035. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Singapore.rb +36 -0
  2036. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Srednekolymsk.rb +91 -0
  2037. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Taipei.rb +65 -0
  2038. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Tashkent.rb +49 -0
  2039. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Tbilisi.rb +78 -0
  2040. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Tehran.rb +97 -0
  2041. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Tel_Aviv.rb +18 -0
  2042. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Thimbu.rb +18 -0
  2043. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Thimphu.rb +25 -0
  2044. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Tokyo.rb +32 -0
  2045. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Tomsk.rb +92 -0
  2046. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Ujung_Pandang.rb +18 -0
  2047. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Ulaanbaatar.rb +74 -0
  2048. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Ulan_Bator.rb +18 -0
  2049. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Urumqi.rb +23 -0
  2050. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Ust__m__Nera.rb +94 -0
  2051. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Vientiane.rb +18 -0
  2052. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Vladivostok.rb +91 -0
  2053. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Yakutsk.rb +91 -0
  2054. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Yangon.rb +28 -0
  2055. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Yekaterinburg.rb +93 -0
  2056. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Asia/Yerevan.rb +87 -0
  2057. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Atlantic/Azores.rb +325 -0
  2058. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Atlantic/Bermuda.rb +255 -0
  2059. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Atlantic/Canary.rb +216 -0
  2060. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Atlantic/Cape_Verde.rb +28 -0
  2061. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Atlantic/Faeroe.rb +18 -0
  2062. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Atlantic/Faroe.rb +212 -0
  2063. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Atlantic/Jan_Mayen.rb +18 -0
  2064. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Atlantic/Madeira.rb +324 -0
  2065. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Atlantic/Reykjavik.rb +18 -0
  2066. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Atlantic/South_Georgia.rb +23 -0
  2067. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Atlantic/St_Helena.rb +18 -0
  2068. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Atlantic/Stanley.rb +96 -0
  2069. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Australia/ACT.rb +18 -0
  2070. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Australia/Adelaide.rb +240 -0
  2071. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Australia/Brisbane.rb +40 -0
  2072. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Australia/Broken_Hill.rb +242 -0
  2073. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Australia/Canberra.rb +18 -0
  2074. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Australia/Currie.rb +18 -0
  2075. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Australia/Darwin.rb +34 -0
  2076. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Australia/Eucla.rb +42 -0
  2077. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Australia/Hobart.rb +250 -0
  2078. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Australia/LHI.rb +18 -0
  2079. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Australia/Lindeman.rb +44 -0
  2080. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Australia/Lord_Howe.rb +213 -0
  2081. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Australia/Melbourne.rb +238 -0
  2082. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Australia/NSW.rb +18 -0
  2083. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Australia/North.rb +18 -0
  2084. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Australia/Perth.rb +42 -0
  2085. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Australia/Queensland.rb +18 -0
  2086. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Australia/South.rb +18 -0
  2087. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Australia/Sydney.rb +238 -0
  2088. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Australia/Tasmania.rb +18 -0
  2089. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Australia/Victoria.rb +18 -0
  2090. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Australia/West.rb +18 -0
  2091. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Australia/Yancowinna.rb +18 -0
  2092. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Brazil/Acre.rb +18 -0
  2093. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Brazil/DeNoronha.rb +18 -0
  2094. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Brazil/East.rb +18 -0
  2095. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Brazil/West.rb +18 -0
  2096. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/CET.rb +230 -0
  2097. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/CST6CDT.rb +245 -0
  2098. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Canada/Atlantic.rb +18 -0
  2099. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Canada/Central.rb +18 -0
  2100. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Canada/Eastern.rb +18 -0
  2101. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Canada/Mountain.rb +18 -0
  2102. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Canada/Newfoundland.rb +18 -0
  2103. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Canada/Pacific.rb +18 -0
  2104. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Canada/Saskatchewan.rb +18 -0
  2105. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Canada/Yukon.rb +18 -0
  2106. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Chile/Continental.rb +18 -0
  2107. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Chile/EasterIsland.rb +18 -0
  2108. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Cuba.rb +16 -0
  2109. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/EET.rb +216 -0
  2110. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/EST.rb +19 -0
  2111. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/EST5EDT.rb +245 -0
  2112. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Egypt.rb +16 -0
  2113. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Eire.rb +16 -0
  2114. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Etc/GMT.rb +21 -0
  2115. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Etc/GMT0.rb +18 -0
  2116. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Etc/GMT__m__0.rb +18 -0
  2117. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Etc/GMT__m__1.rb +21 -0
  2118. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Etc/GMT__m__10.rb +21 -0
  2119. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Etc/GMT__m__11.rb +21 -0
  2120. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Etc/GMT__m__12.rb +21 -0
  2121. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Etc/GMT__m__13.rb +21 -0
  2122. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Etc/GMT__m__14.rb +21 -0
  2123. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Etc/GMT__m__2.rb +21 -0
  2124. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Etc/GMT__m__3.rb +21 -0
  2125. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Etc/GMT__m__4.rb +21 -0
  2126. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Etc/GMT__m__5.rb +21 -0
  2127. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Etc/GMT__m__6.rb +21 -0
  2128. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Etc/GMT__m__7.rb +21 -0
  2129. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Etc/GMT__m__8.rb +21 -0
  2130. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Etc/GMT__m__9.rb +21 -0
  2131. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Etc/GMT__p__0.rb +18 -0
  2132. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Etc/GMT__p__1.rb +21 -0
  2133. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Etc/GMT__p__10.rb +21 -0
  2134. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Etc/GMT__p__11.rb +21 -0
  2135. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Etc/GMT__p__12.rb +21 -0
  2136. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Etc/GMT__p__2.rb +21 -0
  2137. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Etc/GMT__p__3.rb +21 -0
  2138. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Etc/GMT__p__4.rb +21 -0
  2139. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Etc/GMT__p__5.rb +21 -0
  2140. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Etc/GMT__p__6.rb +21 -0
  2141. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Etc/GMT__p__7.rb +21 -0
  2142. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Etc/GMT__p__8.rb +21 -0
  2143. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Etc/GMT__p__9.rb +21 -0
  2144. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Etc/Greenwich.rb +18 -0
  2145. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Etc/UCT.rb +18 -0
  2146. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Etc/UTC.rb +21 -0
  2147. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Etc/Universal.rb +18 -0
  2148. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Etc/Zulu.rb +18 -0
  2149. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Europe/Amsterdam.rb +18 -0
  2150. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Europe/Andorra.rb +206 -0
  2151. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Europe/Astrakhan.rb +89 -0
  2152. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Europe/Athens.rb +238 -0
  2153. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Europe/Belfast.rb +18 -0
  2154. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Europe/Belgrade.rb +216 -0
  2155. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Europe/Berlin.rb +241 -0
  2156. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Europe/Bratislava.rb +18 -0
  2157. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Europe/Brussels.rb +285 -0
  2158. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Europe/Bucharest.rb +234 -0
  2159. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Europe/Budapest.rb +248 -0
  2160. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Europe/Busingen.rb +18 -0
  2161. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Europe/Chisinau.rb +244 -0
  2162. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Europe/Copenhagen.rb +18 -0
  2163. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Europe/Dublin.rb +329 -0
  2164. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Europe/Gibraltar.rb +298 -0
  2165. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Europe/Guernsey.rb +18 -0
  2166. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Europe/Helsinki.rb +216 -0
  2167. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Europe/Isle_of_Man.rb +18 -0
  2168. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Europe/Istanbul.rb +141 -0
  2169. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Europe/Jersey.rb +18 -0
  2170. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Europe/Kaliningrad.rb +108 -0
  2171. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Europe/Kiev.rb +18 -0
  2172. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Europe/Kirov.rb +90 -0
  2173. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Europe/Kyiv.rb +223 -0
  2174. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Europe/Lisbon.rb +323 -0
  2175. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Europe/Ljubljana.rb +18 -0
  2176. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Europe/London.rb +341 -0
  2177. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Europe/Luxembourg.rb +18 -0
  2178. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Europe/Madrid.rb +262 -0
  2179. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Europe/Malta.rb +266 -0
  2180. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Europe/Mariehamn.rb +18 -0
  2181. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Europe/Minsk.rb +97 -0
  2182. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Europe/Monaco.rb +18 -0
  2183. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Europe/Moscow.rb +109 -0
  2184. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Europe/Nicosia.rb +18 -0
  2185. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Europe/Oslo.rb +18 -0
  2186. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Europe/Paris.rb +285 -0
  2187. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Europe/Podgorica.rb +18 -0
  2188. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Europe/Prague.rb +243 -0
  2189. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Europe/Riga.rb +229 -0
  2190. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Europe/Rome.rb +268 -0
  2191. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Europe/Samara.rb +90 -0
  2192. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Europe/San_Marino.rb +18 -0
  2193. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Europe/Sarajevo.rb +18 -0
  2194. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Europe/Saratov.rb +89 -0
  2195. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Europe/Simferopol.rb +104 -0
  2196. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Europe/Skopje.rb +18 -0
  2197. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Europe/Sofia.rb +226 -0
  2198. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Europe/Stockholm.rb +18 -0
  2199. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Europe/Tallinn.rb +225 -0
  2200. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Europe/Tirane.rb +230 -0
  2201. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Europe/Tiraspol.rb +18 -0
  2202. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Europe/Ulyanovsk.rb +93 -0
  2203. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Europe/Uzhgorod.rb +18 -0
  2204. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Europe/Vaduz.rb +18 -0
  2205. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Europe/Vatican.rb +18 -0
  2206. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Europe/Vienna.rb +236 -0
  2207. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Europe/Vilnius.rb +223 -0
  2208. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Europe/Volgograd.rb +92 -0
  2209. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Europe/Warsaw.rb +265 -0
  2210. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Europe/Zagreb.rb +18 -0
  2211. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Europe/Zaporozhye.rb +18 -0
  2212. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Europe/Zurich.rb +218 -0
  2213. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Factory.rb +19 -0
  2214. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/GB.rb +16 -0
  2215. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/GB__m__Eire.rb +16 -0
  2216. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/GMT.rb +16 -0
  2217. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/GMT0.rb +16 -0
  2218. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/GMT__m__0.rb +16 -0
  2219. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/GMT__p__0.rb +16 -0
  2220. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Greenwich.rb +16 -0
  2221. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/HST.rb +19 -0
  2222. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Hongkong.rb +16 -0
  2223. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Iceland.rb +16 -0
  2224. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Indian/Antananarivo.rb +18 -0
  2225. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Indian/Chagos.rb +25 -0
  2226. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Indian/Christmas.rb +18 -0
  2227. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Indian/Cocos.rb +18 -0
  2228. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Indian/Comoro.rb +18 -0
  2229. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Indian/Kerguelen.rb +18 -0
  2230. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Indian/Mahe.rb +18 -0
  2231. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Indian/Maldives.rb +25 -0
  2232. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Indian/Mauritius.rb +28 -0
  2233. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Indian/Mayotte.rb +18 -0
  2234. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Indian/Reunion.rb +18 -0
  2235. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Iran.rb +16 -0
  2236. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Israel.rb +16 -0
  2237. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Jamaica.rb +16 -0
  2238. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Japan.rb +16 -0
  2239. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Kwajalein.rb +16 -0
  2240. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Libya.rb +16 -0
  2241. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/MET.rb +230 -0
  2242. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/MST.rb +19 -0
  2243. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/MST7MDT.rb +245 -0
  2244. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Mexico/BajaNorte.rb +18 -0
  2245. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Mexico/BajaSur.rb +18 -0
  2246. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Mexico/General.rb +18 -0
  2247. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/NZ.rb +16 -0
  2248. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/NZ__m__CHAT.rb +16 -0
  2249. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Navajo.rb +16 -0
  2250. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/PRC.rb +16 -0
  2251. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/PST8PDT.rb +245 -0
  2252. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Pacific/Apia.rb +53 -0
  2253. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Pacific/Auckland.rb +255 -0
  2254. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Pacific/Bougainville.rb +30 -0
  2255. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Pacific/Chatham.rb +226 -0
  2256. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Pacific/Chuuk.rb +18 -0
  2257. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Pacific/Easter.rb +238 -0
  2258. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Pacific/Efate.rb +46 -0
  2259. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Pacific/Enderbury.rb +18 -0
  2260. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Pacific/Fakaofo.rb +25 -0
  2261. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Pacific/Fiji.rb +52 -0
  2262. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Pacific/Funafuti.rb +18 -0
  2263. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Pacific/Galapagos.rb +28 -0
  2264. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Pacific/Gambier.rb +23 -0
  2265. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Pacific/Guadalcanal.rb +23 -0
  2266. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Pacific/Guam.rb +47 -0
  2267. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Pacific/Honolulu.rb +33 -0
  2268. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Pacific/Johnston.rb +18 -0
  2269. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Pacific/Kanton.rb +27 -0
  2270. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Pacific/Kiritimati.rb +27 -0
  2271. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Pacific/Kosrae.rb +35 -0
  2272. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Pacific/Kwajalein.rb +32 -0
  2273. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Pacific/Majuro.rb +18 -0
  2274. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Pacific/Marquesas.rb +23 -0
  2275. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Pacific/Midway.rb +18 -0
  2276. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Pacific/Nauru.rb +28 -0
  2277. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Pacific/Niue.rb +25 -0
  2278. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Pacific/Norfolk.rb +141 -0
  2279. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Pacific/Noumea.rb +30 -0
  2280. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Pacific/Pago_Pago.rb +25 -0
  2281. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Pacific/Palau.rb +25 -0
  2282. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Pacific/Pitcairn.rb +25 -0
  2283. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Pacific/Pohnpei.rb +18 -0
  2284. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Pacific/Ponape.rb +18 -0
  2285. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Pacific/Port_Moresby.rb +25 -0
  2286. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Pacific/Rarotonga.rb +53 -0
  2287. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Pacific/Saipan.rb +18 -0
  2288. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Pacific/Samoa.rb +18 -0
  2289. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Pacific/Tahiti.rb +23 -0
  2290. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Pacific/Tarawa.rb +23 -0
  2291. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Pacific/Tongatapu.rb +34 -0
  2292. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Pacific/Truk.rb +18 -0
  2293. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Pacific/Wake.rb +18 -0
  2294. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Pacific/Wallis.rb +18 -0
  2295. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Pacific/Yap.rb +18 -0
  2296. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Poland.rb +16 -0
  2297. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Portugal.rb +16 -0
  2298. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/ROC.rb +16 -0
  2299. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/ROK.rb +16 -0
  2300. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Singapore.rb +16 -0
  2301. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Turkey.rb +16 -0
  2302. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/UCT.rb +16 -0
  2303. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/US/Alaska.rb +18 -0
  2304. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/US/Aleutian.rb +18 -0
  2305. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/US/Arizona.rb +18 -0
  2306. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/US/Central.rb +18 -0
  2307. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/US/East__m__Indiana.rb +18 -0
  2308. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/US/Eastern.rb +18 -0
  2309. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/US/Hawaii.rb +18 -0
  2310. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/US/Indiana__m__Starke.rb +18 -0
  2311. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/US/Michigan.rb +18 -0
  2312. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/US/Mountain.rb +18 -0
  2313. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/US/Pacific.rb +18 -0
  2314. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/US/Samoa.rb +18 -0
  2315. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/UTC.rb +16 -0
  2316. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Universal.rb +16 -0
  2317. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/WET.rb +216 -0
  2318. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/W__m__SU.rb +16 -0
  2319. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/definitions/Zulu.rb +16 -0
  2320. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/indexes/countries.rb +932 -0
  2321. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/indexes/timezones.rb +612 -0
  2322. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/tzdataparser.rb +1350 -0
  2323. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data/version.rb +20 -0
  2324. data/vendor/bundle/ruby/3.3.0/gems/tzinfo-data-1.2024.1/lib/tzinfo/data.rb +8 -0
  2325. data/vendor/bundle/ruby/3.3.0/gems/webrick-1.8.1/Gemfile +6 -0
  2326. data/vendor/bundle/ruby/3.3.0/gems/webrick-1.8.1/LICENSE.txt +22 -0
  2327. data/vendor/bundle/ruby/3.3.0/gems/webrick-1.8.1/README.md +61 -0
  2328. data/vendor/bundle/ruby/3.3.0/gems/webrick-1.8.1/Rakefile +17 -0
  2329. data/vendor/bundle/ruby/3.3.0/gems/webrick-1.8.1/lib/webrick/accesslog.rb +157 -0
  2330. data/vendor/bundle/ruby/3.3.0/gems/webrick-1.8.1/lib/webrick/cgi.rb +313 -0
  2331. data/vendor/bundle/ruby/3.3.0/gems/webrick-1.8.1/lib/webrick/compat.rb +36 -0
  2332. data/vendor/bundle/ruby/3.3.0/gems/webrick-1.8.1/lib/webrick/config.rb +158 -0
  2333. data/vendor/bundle/ruby/3.3.0/gems/webrick-1.8.1/lib/webrick/cookie.rb +172 -0
  2334. data/vendor/bundle/ruby/3.3.0/gems/webrick-1.8.1/lib/webrick/htmlutils.rb +30 -0
  2335. data/vendor/bundle/ruby/3.3.0/gems/webrick-1.8.1/lib/webrick/httpauth/authenticator.rb +117 -0
  2336. data/vendor/bundle/ruby/3.3.0/gems/webrick-1.8.1/lib/webrick/httpauth/basicauth.rb +116 -0
  2337. data/vendor/bundle/ruby/3.3.0/gems/webrick-1.8.1/lib/webrick/httpauth/digestauth.rb +395 -0
  2338. data/vendor/bundle/ruby/3.3.0/gems/webrick-1.8.1/lib/webrick/httpauth/htdigest.rb +132 -0
  2339. data/vendor/bundle/ruby/3.3.0/gems/webrick-1.8.1/lib/webrick/httpauth/htgroup.rb +97 -0
  2340. data/vendor/bundle/ruby/3.3.0/gems/webrick-1.8.1/lib/webrick/httpauth/htpasswd.rb +158 -0
  2341. data/vendor/bundle/ruby/3.3.0/gems/webrick-1.8.1/lib/webrick/httpauth/userdb.rb +53 -0
  2342. data/vendor/bundle/ruby/3.3.0/gems/webrick-1.8.1/lib/webrick/httpauth.rb +96 -0
  2343. data/vendor/bundle/ruby/3.3.0/gems/webrick-1.8.1/lib/webrick/httpproxy.rb +354 -0
  2344. data/vendor/bundle/ruby/3.3.0/gems/webrick-1.8.1/lib/webrick/httprequest.rb +640 -0
  2345. data/vendor/bundle/ruby/3.3.0/gems/webrick-1.8.1/lib/webrick/httpresponse.rb +588 -0
  2346. data/vendor/bundle/ruby/3.3.0/gems/webrick-1.8.1/lib/webrick/https.rb +152 -0
  2347. data/vendor/bundle/ruby/3.3.0/gems/webrick-1.8.1/lib/webrick/httpserver.rb +294 -0
  2348. data/vendor/bundle/ruby/3.3.0/gems/webrick-1.8.1/lib/webrick/httpservlet/abstract.rb +152 -0
  2349. data/vendor/bundle/ruby/3.3.0/gems/webrick-1.8.1/lib/webrick/httpservlet/cgi_runner.rb +47 -0
  2350. data/vendor/bundle/ruby/3.3.0/gems/webrick-1.8.1/lib/webrick/httpservlet/cgihandler.rb +126 -0
  2351. data/vendor/bundle/ruby/3.3.0/gems/webrick-1.8.1/lib/webrick/httpservlet/erbhandler.rb +88 -0
  2352. data/vendor/bundle/ruby/3.3.0/gems/webrick-1.8.1/lib/webrick/httpservlet/filehandler.rb +552 -0
  2353. data/vendor/bundle/ruby/3.3.0/gems/webrick-1.8.1/lib/webrick/httpservlet/prochandler.rb +48 -0
  2354. data/vendor/bundle/ruby/3.3.0/gems/webrick-1.8.1/lib/webrick/httpservlet.rb +23 -0
  2355. data/vendor/bundle/ruby/3.3.0/gems/webrick-1.8.1/lib/webrick/httpstatus.rb +194 -0
  2356. data/vendor/bundle/ruby/3.3.0/gems/webrick-1.8.1/lib/webrick/httputils.rb +523 -0
  2357. data/vendor/bundle/ruby/3.3.0/gems/webrick-1.8.1/lib/webrick/httpversion.rb +76 -0
  2358. data/vendor/bundle/ruby/3.3.0/gems/webrick-1.8.1/lib/webrick/log.rb +156 -0
  2359. data/vendor/bundle/ruby/3.3.0/gems/webrick-1.8.1/lib/webrick/server.rb +381 -0
  2360. data/vendor/bundle/ruby/3.3.0/gems/webrick-1.8.1/lib/webrick/ssl.rb +219 -0
  2361. data/vendor/bundle/ruby/3.3.0/gems/webrick-1.8.1/lib/webrick/utils.rb +265 -0
  2362. data/vendor/bundle/ruby/3.3.0/gems/webrick-1.8.1/lib/webrick/version.rb +18 -0
  2363. data/vendor/bundle/ruby/3.3.0/gems/webrick-1.8.1/lib/webrick.rb +232 -0
  2364. data/vendor/bundle/ruby/3.3.0/gems/webrick-1.8.1/webrick.gemspec +70 -0
  2365. data/vendor/bundle/ruby/3.3.0/gems/win32-event-0.6.3/CHANGES +71 -0
  2366. data/vendor/bundle/ruby/3.3.0/gems/win32-event-0.6.3/MANIFEST +9 -0
  2367. data/vendor/bundle/ruby/3.3.0/gems/win32-event-0.6.3/README +51 -0
  2368. data/vendor/bundle/ruby/3.3.0/gems/win32-event-0.6.3/Rakefile +28 -0
  2369. data/vendor/bundle/ruby/3.3.0/gems/win32-event-0.6.3/certs/djberg96_pub.pem +21 -0
  2370. data/vendor/bundle/ruby/3.3.0/gems/win32-event-0.6.3/lib/win32/event.rb +189 -0
  2371. data/vendor/bundle/ruby/3.3.0/gems/win32-event-0.6.3/lib/win32-event.rb +1 -0
  2372. data/vendor/bundle/ruby/3.3.0/gems/win32-event-0.6.3/test/test_win32_event.rb +200 -0
  2373. data/vendor/bundle/ruby/3.3.0/gems/win32-event-0.6.3/win32-event.gemspec +27 -0
  2374. data/vendor/bundle/ruby/3.3.0/gems/win32-ipc-0.7.0/CHANGES +96 -0
  2375. data/vendor/bundle/ruby/3.3.0/gems/win32-ipc-0.7.0/MANIFEST +8 -0
  2376. data/vendor/bundle/ruby/3.3.0/gems/win32-ipc-0.7.0/README +32 -0
  2377. data/vendor/bundle/ruby/3.3.0/gems/win32-ipc-0.7.0/Rakefile +28 -0
  2378. data/vendor/bundle/ruby/3.3.0/gems/win32-ipc-0.7.0/certs/djberg96_pub.pem +21 -0
  2379. data/vendor/bundle/ruby/3.3.0/gems/win32-ipc-0.7.0/lib/win32/ipc.rb +185 -0
  2380. data/vendor/bundle/ruby/3.3.0/gems/win32-ipc-0.7.0/lib/win32-ipc.rb +1 -0
  2381. data/vendor/bundle/ruby/3.3.0/gems/win32-ipc-0.7.0/test/test_win32_ipc.rb +88 -0
  2382. data/vendor/bundle/ruby/3.3.0/gems/win32-ipc-0.7.0/win32-ipc.gemspec +25 -0
  2383. data/vendor/bundle/ruby/3.3.0/gems/win32-service-2.3.2/lib/win32/daemon.rb +366 -0
  2384. data/vendor/bundle/ruby/3.3.0/gems/win32-service-2.3.2/lib/win32/service.rb +1666 -0
  2385. data/vendor/bundle/ruby/3.3.0/gems/win32-service-2.3.2/lib/win32/windows/constants.rb +143 -0
  2386. data/vendor/bundle/ruby/3.3.0/gems/win32-service-2.3.2/lib/win32/windows/functions.rb +75 -0
  2387. data/vendor/bundle/ruby/3.3.0/gems/win32-service-2.3.2/lib/win32/windows/structs.rb +121 -0
  2388. data/vendor/bundle/ruby/3.3.0/gems/win32-service-2.3.2/lib/win32/windows/version.rb +6 -0
  2389. data/vendor/bundle/ruby/3.3.0/gems/win32-service-2.3.2/lib/win32-daemon.rb +1 -0
  2390. data/vendor/bundle/ruby/3.3.0/gems/win32-service-2.3.2/lib/win32-service.rb +1 -0
  2391. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/.codeclimate.yml +40 -0
  2392. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/.github/workflows/ci.yml +26 -0
  2393. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/.gitignore +13 -0
  2394. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/.rspec +2 -0
  2395. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/CHANGELOG.md +332 -0
  2396. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/Gemfile +3 -0
  2397. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/LICENSE +21 -0
  2398. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/README.md +367 -0
  2399. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/Rakefile +2 -0
  2400. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/benchmark/encode.rb +72 -0
  2401. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/benchmark/encode_json_and_marshal.rb +42 -0
  2402. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/benchmark/encode_json_and_yaml.rb +53 -0
  2403. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/benchmark/http.rb +32 -0
  2404. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/benchmark/parse.rb +94 -0
  2405. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/benchmark/parse_json_and_marshal.rb +50 -0
  2406. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/benchmark/parse_json_and_yaml.rb +55 -0
  2407. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/benchmark/parse_stream.rb +54 -0
  2408. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/benchmark/subjects/item.json +1 -0
  2409. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/benchmark/subjects/ohai.json +1216 -0
  2410. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/benchmark/subjects/ohai.marshal_dump +0 -0
  2411. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/benchmark/subjects/ohai.yml +975 -0
  2412. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/benchmark/subjects/twitter_search.json +1 -0
  2413. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/benchmark/subjects/twitter_stream.json +430 -0
  2414. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/benchmark/subjects/unicode.json +1 -0
  2415. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/examples/encoding/chunked_encoding.rb +27 -0
  2416. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/examples/encoding/one_shot.rb +13 -0
  2417. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/examples/encoding/to_an_io.rb +12 -0
  2418. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/examples/http/twitter_search_api.rb +12 -0
  2419. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/examples/http/twitter_stream_api.rb +26 -0
  2420. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/examples/parsing/from_file.rb +14 -0
  2421. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/examples/parsing/from_stdin.rb +9 -0
  2422. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/examples/parsing/from_string.rb +13 -0
  2423. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/ext/yajl/api/yajl_common.h +95 -0
  2424. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/ext/yajl/api/yajl_gen.h +166 -0
  2425. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/ext/yajl/api/yajl_parse.h +198 -0
  2426. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/ext/yajl/api/yajl_version.h +23 -0
  2427. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/ext/yajl/extconf.rb +12 -0
  2428. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/ext/yajl/yajl.c +180 -0
  2429. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/ext/yajl/yajl_alloc.c +65 -0
  2430. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/ext/yajl/yajl_alloc.h +51 -0
  2431. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/ext/yajl/yajl_buf.c +200 -0
  2432. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/ext/yajl/yajl_buf.h +89 -0
  2433. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/ext/yajl/yajl_bytestack.h +102 -0
  2434. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/ext/yajl/yajl_encode.c +237 -0
  2435. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/ext/yajl/yajl_encode.h +55 -0
  2436. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/ext/yajl/yajl_ext.c +1424 -0
  2437. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/ext/yajl/yajl_ext.h +135 -0
  2438. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/ext/yajl/yajl_gen.c +378 -0
  2439. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/ext/yajl/yajl_lex.c +758 -0
  2440. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/ext/yajl/yajl_lex.h +148 -0
  2441. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/ext/yajl/yajl_parser.c +464 -0
  2442. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/ext/yajl/yajl_parser.h +84 -0
  2443. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/ext/yajl/yajl_version.c +7 -0
  2444. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/lib/yajl/bzip2/stream_reader.rb +31 -0
  2445. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/lib/yajl/bzip2/stream_writer.rb +14 -0
  2446. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/lib/yajl/bzip2.rb +11 -0
  2447. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/lib/yajl/deflate/stream_reader.rb +43 -0
  2448. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/lib/yajl/deflate/stream_writer.rb +20 -0
  2449. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/lib/yajl/deflate.rb +6 -0
  2450. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/lib/yajl/gzip/stream_reader.rb +30 -0
  2451. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/lib/yajl/gzip/stream_writer.rb +13 -0
  2452. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/lib/yajl/gzip.rb +6 -0
  2453. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/lib/yajl/http_stream.rb +213 -0
  2454. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/lib/yajl/json_gem/encoding.rb +50 -0
  2455. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/lib/yajl/json_gem/parsing.rb +26 -0
  2456. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/lib/yajl/json_gem.rb +13 -0
  2457. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/lib/yajl/version.rb +3 -0
  2458. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/lib/yajl.rb +83 -0
  2459. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/script/bootstrap +5 -0
  2460. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/encoding/encoding_spec.rb +341 -0
  2461. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/global/global_spec.rb +54 -0
  2462. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/http/fixtures/http.bzip2.dump +0 -0
  2463. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/http/fixtures/http.chunked.dump +11 -0
  2464. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/http/fixtures/http.deflate.dump +0 -0
  2465. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/http/fixtures/http.error.dump +12 -0
  2466. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/http/fixtures/http.gzip.dump +0 -0
  2467. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/http/fixtures/http.html.dump +1220 -0
  2468. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/http/fixtures/http.raw.dump +1226 -0
  2469. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/http/http_delete_spec.rb +98 -0
  2470. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/http/http_error_spec.rb +31 -0
  2471. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/http/http_get_spec.rb +109 -0
  2472. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/http/http_post_spec.rb +123 -0
  2473. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/http/http_put_spec.rb +105 -0
  2474. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/http/http_stream_options_spec.rb +27 -0
  2475. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/json_gem_compatibility/compatibility_spec.rb +207 -0
  2476. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/parsing/active_support_spec.rb +64 -0
  2477. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/parsing/chunked_spec.rb +96 -0
  2478. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/parsing/fixtures/fail.15.json +1 -0
  2479. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/parsing/fixtures/fail.16.json +1 -0
  2480. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/parsing/fixtures/fail.17.json +1 -0
  2481. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/parsing/fixtures/fail.26.json +1 -0
  2482. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/parsing/fixtures/fail11.json +1 -0
  2483. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/parsing/fixtures/fail12.json +1 -0
  2484. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/parsing/fixtures/fail13.json +1 -0
  2485. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/parsing/fixtures/fail14.json +1 -0
  2486. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/parsing/fixtures/fail19.json +1 -0
  2487. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/parsing/fixtures/fail20.json +1 -0
  2488. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/parsing/fixtures/fail21.json +1 -0
  2489. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/parsing/fixtures/fail22.json +1 -0
  2490. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/parsing/fixtures/fail23.json +1 -0
  2491. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/parsing/fixtures/fail24.json +1 -0
  2492. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/parsing/fixtures/fail25.json +1 -0
  2493. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/parsing/fixtures/fail27.json +2 -0
  2494. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/parsing/fixtures/fail28.json +2 -0
  2495. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/parsing/fixtures/fail3.json +1 -0
  2496. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/parsing/fixtures/fail4.json +1 -0
  2497. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/parsing/fixtures/fail5.json +1 -0
  2498. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/parsing/fixtures/fail6.json +1 -0
  2499. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/parsing/fixtures/fail9.json +1 -0
  2500. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/parsing/fixtures/pass.array.json +6 -0
  2501. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/parsing/fixtures/pass.codepoints_from_unicode_org.json +1 -0
  2502. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/parsing/fixtures/pass.contacts.json +1 -0
  2503. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/parsing/fixtures/pass.db100.xml.json +1 -0
  2504. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/parsing/fixtures/pass.db1000.xml.json +1 -0
  2505. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/parsing/fixtures/pass.dc_simple_with_comments.json +11 -0
  2506. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/parsing/fixtures/pass.deep_arrays.json +1 -0
  2507. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/parsing/fixtures/pass.difficult_json_c_test_case.json +1 -0
  2508. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/parsing/fixtures/pass.difficult_json_c_test_case_with_comments.json +1 -0
  2509. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/parsing/fixtures/pass.doubles.json +1 -0
  2510. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/parsing/fixtures/pass.empty_array.json +1 -0
  2511. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/parsing/fixtures/pass.empty_string.json +1 -0
  2512. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/parsing/fixtures/pass.escaped_bulgarian.json +4 -0
  2513. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/parsing/fixtures/pass.escaped_foobar.json +1 -0
  2514. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/parsing/fixtures/pass.item.json +1 -0
  2515. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/parsing/fixtures/pass.json-org-sample1.json +23 -0
  2516. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/parsing/fixtures/pass.json-org-sample2.json +11 -0
  2517. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/parsing/fixtures/pass.json-org-sample3.json +26 -0
  2518. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/parsing/fixtures/pass.json-org-sample4-nows.json +88 -0
  2519. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/parsing/fixtures/pass.json-org-sample4.json +89 -0
  2520. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/parsing/fixtures/pass.json-org-sample5.json +27 -0
  2521. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/parsing/fixtures/pass.map-spain.xml.json +1 -0
  2522. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/parsing/fixtures/pass.ns-invoice100.xml.json +1 -0
  2523. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/parsing/fixtures/pass.ns-soap.xml.json +1 -0
  2524. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/parsing/fixtures/pass.numbers-fp-4k.json +6 -0
  2525. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/parsing/fixtures/pass.numbers-fp-64k.json +61 -0
  2526. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/parsing/fixtures/pass.numbers-int-4k.json +11 -0
  2527. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/parsing/fixtures/pass.numbers-int-64k.json +154 -0
  2528. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/parsing/fixtures/pass.twitter-search.json +1 -0
  2529. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/parsing/fixtures/pass.twitter-search2.json +1 -0
  2530. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/parsing/fixtures/pass.unicode.json +3315 -0
  2531. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/parsing/fixtures/pass.yelp.json +1 -0
  2532. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/parsing/fixtures/pass1.json +56 -0
  2533. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/parsing/fixtures/pass2.json +1 -0
  2534. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/parsing/fixtures/pass3.json +6 -0
  2535. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/parsing/fixtures_spec.rb +40 -0
  2536. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/parsing/large_number_spec.rb +60 -0
  2537. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/parsing/one_off_spec.rb +97 -0
  2538. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/projection/project_file.rb +41 -0
  2539. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/projection/projection.rb +498 -0
  2540. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/rcov.opts +3 -0
  2541. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/spec/spec_helper.rb +13 -0
  2542. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/tasks/compile.rake +35 -0
  2543. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/tasks/rspec.rake +16 -0
  2544. data/vendor/bundle/ruby/3.3.0/gems/yajl-ruby-1.4.3/yajl-ruby.gemspec +23 -0
  2545. data/vendor/bundle/ruby/3.3.0/specifications/base64-0.2.0.gemspec +23 -0
  2546. data/vendor/bundle/ruby/3.3.0/specifications/certstore_c-0.1.7.gemspec +34 -0
  2547. data/vendor/bundle/ruby/3.3.0/specifications/concurrent-ruby-1.3.3.gemspec +24 -0
  2548. data/vendor/bundle/ruby/3.3.0/specifications/cool.io-1.8.1.gemspec +0 -0
  2549. data/vendor/bundle/ruby/3.3.0/specifications/csv-3.3.0.gemspec +31 -0
  2550. data/vendor/bundle/ruby/3.3.0/specifications/drb-2.2.1.gemspec +22 -0
  2551. data/vendor/bundle/ruby/3.3.0/specifications/ffi-1.17.0-x64-mingw-ucrt.gemspec +31 -0
  2552. data/vendor/bundle/ruby/3.3.0/specifications/ffi-win32-extensions-1.0.4.gemspec +24 -0
  2553. data/vendor/bundle/ruby/3.3.0/specifications/fluentd-1.17.0-x64-mingw-ucrt.gemspec +59 -0
  2554. data/vendor/bundle/ruby/3.3.0/specifications/http_parser.rb-0.8.0.gemspec +32 -0
  2555. data/vendor/bundle/ruby/3.3.0/specifications/json-2.7.2.gemspec +0 -0
  2556. data/vendor/bundle/ruby/3.3.0/specifications/minitar-0.9.gemspec +38 -0
  2557. data/vendor/bundle/ruby/3.3.0/specifications/msgpack-1.7.2.gemspec +35 -0
  2558. data/vendor/bundle/ruby/3.3.0/specifications/power_assert-2.0.3.gemspec +34 -0
  2559. data/vendor/bundle/ruby/3.3.0/specifications/rake-13.2.1.gemspec +26 -0
  2560. data/vendor/bundle/ruby/3.3.0/specifications/serverengine-2.3.2.gemspec +31 -0
  2561. data/vendor/bundle/ruby/3.3.0/specifications/sigdump-0.2.5.gemspec +24 -0
  2562. data/vendor/bundle/ruby/3.3.0/specifications/strptime-0.2.5.gemspec +34 -0
  2563. data/vendor/bundle/ruby/3.3.0/specifications/test-unit-3.6.2.gemspec +30 -0
  2564. data/vendor/bundle/ruby/3.3.0/specifications/thermite-0.13.0.gemspec +31 -0
  2565. data/vendor/bundle/ruby/3.3.0/specifications/tomlrb-1.3.0.gemspec +21 -0
  2566. data/vendor/bundle/ruby/3.3.0/specifications/tzinfo-2.0.6.gemspec +30 -0
  2567. data/vendor/bundle/ruby/3.3.0/specifications/tzinfo-data-1.2024.1.gemspec +29 -0
  2568. data/vendor/bundle/ruby/3.3.0/specifications/webrick-1.8.1.gemspec +22 -0
  2569. data/vendor/bundle/ruby/3.3.0/specifications/win32-event-0.6.3.gemspec +29 -0
  2570. data/vendor/bundle/ruby/3.3.0/specifications/win32-ipc-0.7.0.gemspec +28 -0
  2571. data/vendor/bundle/ruby/3.3.0/specifications/win32-service-2.3.2.gemspec +31 -0
  2572. data/vendor/bundle/ruby/3.3.0/specifications/yajl-ruby-1.4.3.gemspec +31 -0
  2573. metadata +2757 -0
@@ -0,0 +1,3429 @@
1
+ require_relative '../helper'
2
+ require 'fluent/test/driver/input'
3
+ require 'fluent/plugin/in_tail'
4
+ require 'fluent/plugin/buffer'
5
+ require 'fluent/system_config'
6
+ require 'fluent/file_wrapper'
7
+ require 'net/http'
8
+ require 'flexmock/test_unit'
9
+ require 'timecop'
10
+ require 'tmpdir'
11
+ require 'securerandom'
12
+
13
+ class TailInputTest < Test::Unit::TestCase
14
+ include FlexMock::TestCase
15
+
16
+ def tmp_dir
17
+ File.join(File.dirname(__FILE__), "..", "tmp", "tail#{ENV['TEST_ENV_NUMBER']}", SecureRandom.hex(10))
18
+ end
19
+
20
+ def setup
21
+ Fluent::Test.setup
22
+ @tmp_dir = tmp_dir
23
+ cleanup_directory(@tmp_dir)
24
+ end
25
+
26
+ def teardown
27
+ super
28
+ cleanup_directory(@tmp_dir)
29
+ Fluent::Engine.stop
30
+ Timecop.return
31
+ end
32
+
33
+ def cleanup_directory(path)
34
+ unless Dir.exist?(path)
35
+ FileUtils.mkdir_p(path)
36
+ return
37
+ end
38
+
39
+ FileUtils.remove_entry_secure(path, true)
40
+ end
41
+
42
+ def cleanup_file(path)
43
+ FileUtils.remove_entry_secure(path, true)
44
+ end
45
+
46
+ def create_target_info(path)
47
+ Fluent::Plugin::TailInput::TargetInfo.new(path, Fluent::FileWrapper.stat(path).ino)
48
+ end
49
+
50
+ ROOT_CONFIG = config_element("ROOT", "", {
51
+ "tag" => "t1",
52
+ "rotate_wait" => "2s",
53
+ "refresh_interval" => "1s"
54
+ })
55
+
56
+ def base_config
57
+ ROOT_CONFIG + config_element("", "", { "path" => "#{@tmp_dir}/tail.txt" })
58
+ end
59
+
60
+ def common_config
61
+ base_config + config_element("", "", { "pos_file" => "#{@tmp_dir}/tail.pos" })
62
+ end
63
+
64
+ def common_follow_inode_config
65
+ config_element("ROOT", "", {
66
+ "path" => "#{@tmp_dir}/tail.txt*",
67
+ "pos_file" => "#{@tmp_dir}/tail.pos",
68
+ "tag" => "t1",
69
+ "refresh_interval" => "1s",
70
+ "read_from_head" => "true",
71
+ "format" => "none",
72
+ "rotate_wait" => "1s",
73
+ "follow_inodes" => "true"
74
+ })
75
+ end
76
+
77
+ CONFIG_READ_FROM_HEAD = config_element("", "", { "read_from_head" => true })
78
+ CONFIG_DISABLE_WATCH_TIMER = config_element("", "", { "enable_watch_timer" => false })
79
+ CONFIG_DISABLE_STAT_WATCHER = config_element("", "", { "enable_stat_watcher" => false })
80
+ CONFIG_OPEN_ON_EVERY_UPDATE = config_element("", "", { "open_on_every_update" => true })
81
+ SINGLE_LINE_CONFIG = config_element("", "", { "format" => "/(?<message>.*)/" })
82
+ PARSE_SINGLE_LINE_CONFIG = config_element("", "", {}, [config_element("parse", "", { "@type" => "/(?<message>.*)/" })])
83
+ MULTILINE_CONFIG = config_element(
84
+ "", "", {
85
+ "format" => "multiline",
86
+ "format1" => "/^s (?<message1>[^\\n]+)(\\nf (?<message2>[^\\n]+))?(\\nf (?<message3>.*))?/",
87
+ "format_firstline" => "/^[s]/"
88
+ })
89
+ PARSE_MULTILINE_CONFIG = config_element(
90
+ "", "", {},
91
+ [config_element("parse", "", {
92
+ "@type" => "multiline",
93
+ "format1" => "/^s (?<message1>[^\\n]+)(\\nf (?<message2>[^\\n]+))?(\\nf (?<message3>.*))?/",
94
+ "format_firstline" => "/^[s]/"
95
+ })
96
+ ])
97
+
98
+ MULTILINE_CONFIG_WITH_NEWLINE = config_element(
99
+ "", "", {
100
+ "format" => "multiline",
101
+ "format1" => "/^s (?<message1>[^\\n]+)(\\nf (?<message2>[^\\n]+))?(\\nf (?<message3>.[^\\n]+))?/",
102
+ "format_firstline" => "/^[s]/"
103
+ })
104
+ PARSE_MULTILINE_CONFIG_WITH_NEWLINE = config_element(
105
+ "", "", {},
106
+ [config_element("parse", "", {
107
+ "@type" => "multiline",
108
+ "format1" => "/^s (?<message1>[^\\n]+)(\\nf (?<message2>[^\\n]+))?(\\nf (?<message3>.[^\\n]+))?/",
109
+ "format_firstline" => "/^[s]/"
110
+ })
111
+ ])
112
+
113
+ EX_ROTATE_WAIT = 0
114
+ EX_FOLLOW_INODES = false
115
+
116
+ def ex_config
117
+ config_element("", "", {
118
+ "tag" => "tail",
119
+ "path" => "test/plugin/*/%Y/%m/%Y%m%d-%H%M%S.log,test/plugin/data/log/**/*.log",
120
+ "format" => "none",
121
+ "pos_file" => "#{@tmp_dir}/tail.pos",
122
+ "read_from_head" => true,
123
+ "refresh_interval" => 30,
124
+ "rotate_wait" => "#{EX_ROTATE_WAIT}s",
125
+ "follow_inodes" => "#{EX_FOLLOW_INODES}",
126
+ })
127
+ end
128
+
129
+ def tailing_group_pattern
130
+ "/#{@tmp_dir}\/(?<podname>[a-z0-9]([-a-z0-9]*[a-z0-9])?(\/[a-z0-9]([-a-z0-9]*[a-z0-9])?)*)_(?<namespace>[^_]+)_(?<container>.+)-(?<docker_id>[a-z0-9]{6})\.log$/"
131
+ end
132
+
133
+ DEBUG_LOG_LEVEL = config_element("", "", {
134
+ "@log_level" => "debug"
135
+ })
136
+
137
+ def create_group_directive(pattern, rate_period, *rules)
138
+ config_element("", "", {}, [
139
+ config_element("group", "", {
140
+ "pattern" => pattern,
141
+ "rate_period" => rate_period
142
+ }, rules)
143
+ ])
144
+ end
145
+
146
+ def create_rule_directive(match_named_captures, limit)
147
+ params = {
148
+ "limit" => limit,
149
+ "match" => match_named_captures,
150
+ }
151
+
152
+ config_element("rule", "", params)
153
+ end
154
+
155
+ def create_path_element(path)
156
+ config_element("source", "", { "path" => "#{@tmp_dir}/#{path}" })
157
+ end
158
+
159
+ def create_driver(conf = SINGLE_LINE_CONFIG, use_common_conf = true)
160
+ config = use_common_conf ? common_config + conf : conf
161
+ Fluent::Test::Driver::Input.new(Fluent::Plugin::TailInput).configure(config)
162
+ end
163
+
164
+ sub_test_case "configure" do
165
+ test "plain single line" do
166
+ d = create_driver
167
+ assert_equal(["#{@tmp_dir}/tail.txt"], d.instance.paths)
168
+ assert_equal("t1", d.instance.tag)
169
+ assert_equal(2, d.instance.rotate_wait)
170
+ assert_equal("#{@tmp_dir}/tail.pos", d.instance.pos_file)
171
+ assert_equal(1000, d.instance.read_lines_limit)
172
+ assert_equal(-1, d.instance.read_bytes_limit_per_second)
173
+ assert_equal(false, d.instance.ignore_repeated_permission_error)
174
+ assert_nothing_raised do
175
+ d.instance.have_read_capability?
176
+ end
177
+ end
178
+
179
+ data("empty" => config_element,
180
+ "w/o @type" => config_element("", "", {}, [config_element("parse", "", {})]))
181
+ test "w/o parse section" do |conf|
182
+ assert_raise(Fluent::ConfigError) do
183
+ create_driver(conf)
184
+ end
185
+ end
186
+
187
+ test "multi paths with path_delimiter" do
188
+ c = config_element("ROOT", "", { "path" => "tail.txt|test2|tmp,dev", "tag" => "t1", "path_delimiter" => "|" })
189
+ d = create_driver(c + PARSE_SINGLE_LINE_CONFIG, false)
190
+ assert_equal(["tail.txt", "test2", "tmp,dev"], d.instance.paths)
191
+ end
192
+
193
+ test "multi paths with same path configured twice" do
194
+ c = config_element("ROOT", "", { "path" => "test1.txt,test2.txt,test1.txt", "tag" => "t1", "path_delimiter" => "," })
195
+ d = create_driver(c + PARSE_SINGLE_LINE_CONFIG, false)
196
+ assert_equal(["test2.txt","test1.txt"].sort, d.instance.paths.sort)
197
+ end
198
+
199
+ test "multi paths with invaid path_delimiter" do
200
+ c = config_element("ROOT", "", { "path" => "tail.txt|test2|tmp,dev", "tag" => "t1", "path_delimiter" => "*" })
201
+ assert_raise(Fluent::ConfigError) do
202
+ create_driver(c + PARSE_SINGLE_LINE_CONFIG, false)
203
+ end
204
+ end
205
+
206
+ test "follow_inodes w/o pos file" do
207
+ assert_raise(Fluent::ConfigError) do
208
+ create_driver(base_config + config_element('', '', {'follow_inodes' => 'true'}))
209
+ end
210
+ end
211
+
212
+ sub_test_case "log throttling per file" do
213
+ test "w/o watcher timer is invalid" do
214
+ conf = CONFIG_DISABLE_WATCH_TIMER + config_element("ROOT", "", {"read_bytes_limit_per_second" => "8k"})
215
+ assert_raise(Fluent::ConfigError) do
216
+ create_driver(conf)
217
+ end
218
+ end
219
+
220
+ test "valid" do
221
+ conf = config_element("ROOT", "", {"read_bytes_limit_per_second" => "8k"})
222
+ assert_raise(Fluent::ConfigError) do
223
+ create_driver(conf)
224
+ end
225
+ end
226
+ end
227
+
228
+ test "both enable_watch_timer and enable_stat_watcher are false" do
229
+ assert_raise(Fluent::ConfigError) do
230
+ create_driver(CONFIG_DISABLE_WATCH_TIMER + CONFIG_DISABLE_STAT_WATCHER + PARSE_SINGLE_LINE_CONFIG)
231
+ end
232
+ end
233
+
234
+ sub_test_case "encoding" do
235
+ test "valid" do
236
+ conf = SINGLE_LINE_CONFIG + config_element("", "", { "encoding" => "utf-8" })
237
+ d = create_driver(conf)
238
+ assert_equal(Encoding::UTF_8, d.instance.encoding)
239
+ end
240
+
241
+ test "invalid" do
242
+ conf = SINGLE_LINE_CONFIG + config_element("", "", { "encoding" => "no-such-encoding" })
243
+ assert_raise(Fluent::ConfigError) do
244
+ create_driver(conf)
245
+ end
246
+ end
247
+ end
248
+
249
+ sub_test_case "from_encoding" do
250
+ test "only specified from_encoding raise ConfigError" do
251
+ conf = SINGLE_LINE_CONFIG + config_element("", "", { "from_encoding" => "utf-8" })
252
+ assert_raise(Fluent::ConfigError) do
253
+ create_driver(conf)
254
+ end
255
+ end
256
+
257
+ test "valid" do
258
+ conf = SINGLE_LINE_CONFIG + config_element("", "", {
259
+ "from_encoding" => "utf-8",
260
+ "encoding" => "utf-8"
261
+ })
262
+ d = create_driver(conf)
263
+ assert_equal(Encoding::UTF_8, d.instance.from_encoding)
264
+ end
265
+
266
+ test "invalid" do
267
+ conf = SINGLE_LINE_CONFIG + config_element("", "", {
268
+ "from_encoding" => "no-such-encoding",
269
+ "encoding" => "utf-8"
270
+ })
271
+ assert_raise(Fluent::ConfigError) do
272
+ create_driver(conf)
273
+ end
274
+ end
275
+ end
276
+ end
277
+
278
+ sub_test_case "configure group" do
279
+ test "<rule> required" do
280
+ conf = create_group_directive('.', '1m') + SINGLE_LINE_CONFIG
281
+ assert_raise(Fluent::ConfigError) do
282
+ create_driver(conf)
283
+ end
284
+ end
285
+
286
+ test "valid configuration" do
287
+ rule1 = create_rule_directive({
288
+ "namespace"=> "/namespace-a/",
289
+ "podname"=> "/podname-[b|c]/"
290
+ }, 100)
291
+ rule2 = create_rule_directive({
292
+ "namespace"=> "/namespace-[d|e]/",
293
+ "podname"=> "/podname-f/",
294
+ }, 50)
295
+ rule3 = create_rule_directive({
296
+ "podname"=> "/podname-g/",
297
+ }, -1)
298
+ rule4 = create_rule_directive({
299
+ "namespace"=> "/namespace-h/",
300
+ }, 0)
301
+
302
+ conf = create_group_directive(tailing_group_pattern, '1m', rule1, rule2, rule3, rule4) + SINGLE_LINE_CONFIG
303
+ assert_nothing_raised do
304
+ create_driver(conf)
305
+ end
306
+ end
307
+
308
+ test "limit should be greater than DEFAULT_LIMIT (-1)" do
309
+ rule1 = create_rule_directive({
310
+ "namespace"=> "/namespace-a/",
311
+ "podname"=> "/podname-[b|c]/",
312
+ }, -100)
313
+ rule2 = create_rule_directive({
314
+ "namespace"=> "/namespace-[d|e]/",
315
+ "podname"=> "/podname-f/",
316
+ }, 50)
317
+ conf = create_group_directive(tailing_group_pattern, '1m', rule1, rule2) + SINGLE_LINE_CONFIG
318
+ assert_raise(RuntimeError) do
319
+ create_driver(conf)
320
+ end
321
+ end
322
+ end
323
+
324
+ sub_test_case "group rules line limit resolution" do
325
+ test "valid" do
326
+ rule1 = create_rule_directive({
327
+ "namespace"=> "/namespace-a/",
328
+ "podname"=> "/podname-[b|c]/",
329
+ }, 50)
330
+ rule2 = create_rule_directive({
331
+ "podname"=> "/podname-[b|c]/",
332
+ }, 400)
333
+ rule3 = create_rule_directive({
334
+ "namespace"=> "/namespace-a/",
335
+ }, 100)
336
+
337
+ conf = create_group_directive(tailing_group_pattern, '1m', rule3, rule1, rule2) + SINGLE_LINE_CONFIG
338
+ assert_nothing_raised do
339
+ d = create_driver(conf)
340
+ instance = d.instance
341
+
342
+ metadata = {
343
+ "namespace"=> "namespace-a",
344
+ "podname"=> "podname-b",
345
+ }
346
+ assert_equal(50, instance.find_group(metadata).limit)
347
+
348
+ metadata = {
349
+ "namespace" => "namespace-a",
350
+ "podname" => "podname-c",
351
+ }
352
+ assert_equal(50, instance.find_group(metadata).limit)
353
+
354
+ metadata = {
355
+ "namespace" => "namespace-a",
356
+ "podname" => "podname-d",
357
+ }
358
+ assert_equal(100, instance.find_group(metadata).limit)
359
+
360
+ metadata = {
361
+ "namespace" => "namespace-f",
362
+ "podname" => "podname-b",
363
+ }
364
+ assert_equal(400, instance.find_group(metadata).limit)
365
+
366
+ metadata = {
367
+ "podname" => "podname-c",
368
+ }
369
+ assert_equal(400, instance.find_group(metadata).limit)
370
+
371
+ assert_equal(-1, instance.find_group({}).limit)
372
+ end
373
+ end
374
+ end
375
+
376
+ sub_test_case "files should be placed in groups" do
377
+ test "invalid regex pattern places files in default group" do
378
+ rule1 = create_rule_directive({}, 100) ## limits default groups
379
+ conf = ROOT_CONFIG + DEBUG_LOG_LEVEL + create_group_directive(tailing_group_pattern, '1m', rule1) + create_path_element("test*.txt") + SINGLE_LINE_CONFIG
380
+
381
+ d = create_driver(conf, false)
382
+ Fluent::FileWrapper.open("#{@tmp_dir}/test1.txt", 'w')
383
+ Fluent::FileWrapper.open("#{@tmp_dir}/test2.txt", 'w')
384
+ Fluent::FileWrapper.open("#{@tmp_dir}/test3.txt", 'w')
385
+
386
+ d.run do
387
+ ## checking default group_watcher's paths
388
+ instance = d.instance
389
+ key = instance.default_group_key
390
+
391
+ assert_equal(3, instance.log.logs.count{|a| a.match?("Cannot find group from metadata, Adding file in the default group\n")})
392
+ assert_equal(3, instance.group_watchers[key].size)
393
+ assert_true(instance.group_watchers[key].include? File.join(@tmp_dir, 'test1.txt'))
394
+ assert_true(instance.group_watchers[key].include? File.join(@tmp_dir, 'test2.txt'))
395
+ assert_true(instance.group_watchers[key].include? File.join(@tmp_dir, 'test3.txt'))
396
+ end
397
+ end
398
+
399
+ test "valid regex pattern places file in their respective groups" do
400
+ rule1 = create_rule_directive({
401
+ "namespace"=> "/test-namespace1/",
402
+ "podname"=> "/test-podname1/",
403
+ }, 100)
404
+ rule2 = create_rule_directive({
405
+ "namespace"=> "/test-namespace1/",
406
+ }, 200)
407
+ rule3 = create_rule_directive({
408
+ "podname"=> "/test-podname2/",
409
+ }, 300)
410
+ rule4 = create_rule_directive({}, 400)
411
+
412
+ path_element = create_path_element("test-podname*.log")
413
+
414
+ conf = ROOT_CONFIG + create_group_directive(tailing_group_pattern, '1m', rule4, rule3, rule2, rule1) + path_element + SINGLE_LINE_CONFIG
415
+ d = create_driver(conf, false)
416
+
417
+ file1 = File.join(@tmp_dir, "test-podname1_test-namespace1_test-container-15fabq.log")
418
+ file2 = File.join(@tmp_dir, "test-podname3_test-namespace1_test-container-15fabq.log")
419
+ file3 = File.join(@tmp_dir, "test-podname2_test-namespace2_test-container-15fabq.log")
420
+ file4 = File.join(@tmp_dir, "test-podname4_test-namespace3_test-container-15fabq.log")
421
+
422
+ d.run do
423
+ Fluent::FileWrapper.open(file1, 'w')
424
+ Fluent::FileWrapper.open(file2, 'w')
425
+ Fluent::FileWrapper.open(file3, 'w')
426
+ Fluent::FileWrapper.open(file4, 'w')
427
+
428
+ instance = d.instance
429
+ assert_equal(100, instance.find_group_from_metadata(file1).limit)
430
+ assert_equal(200, instance.find_group_from_metadata(file2).limit)
431
+ assert_equal(300, instance.find_group_from_metadata(file3).limit)
432
+ assert_equal(400, instance.find_group_from_metadata(file4).limit)
433
+ end
434
+ end
435
+ end
436
+
437
+ sub_test_case "singleline" do
438
+ data(flat: SINGLE_LINE_CONFIG,
439
+ parse: PARSE_SINGLE_LINE_CONFIG)
440
+ def test_emit(data)
441
+ config = data
442
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "wb") {|f|
443
+ f.puts "test1"
444
+ f.puts "test2"
445
+ }
446
+
447
+ d = create_driver(config)
448
+
449
+ d.run(expect_emits: 1) do
450
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "ab") {|f|
451
+ f.puts "test3\ntest4"
452
+ }
453
+ end
454
+
455
+ events = d.events
456
+ assert_equal(true, events.length > 0)
457
+ assert_equal({"message" => "test3"}, events[0][2])
458
+ assert_equal({"message" => "test4"}, events[1][2])
459
+ assert(events[0][1].is_a?(Fluent::EventTime))
460
+ assert(events[1][1].is_a?(Fluent::EventTime))
461
+ assert_equal(1, d.emit_count)
462
+ end
463
+
464
+ def test_emit_with_emit_unmatched_lines_true
465
+ config = config_element("", "", { "format" => "/^(?<message>test.*)/", "emit_unmatched_lines" => true })
466
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "wb") { |f| }
467
+
468
+ d = create_driver(config)
469
+ d.run(expect_emits: 1) do
470
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "ab") {|f|
471
+ f.puts "test line 1"
472
+ f.puts "test line 2"
473
+ f.puts "bad line 1"
474
+ f.puts "test line 3"
475
+ }
476
+ end
477
+
478
+ events = d.events
479
+ assert_equal(4, events.length)
480
+ assert_equal({"message" => "test line 1"}, events[0][2])
481
+ assert_equal({"message" => "test line 2"}, events[1][2])
482
+ assert_equal({"unmatched_line" => "bad line 1"}, events[2][2])
483
+ assert_equal({"message" => "test line 3"}, events[3][2])
484
+ end
485
+
486
+ data('flat 1' => [:flat, 1, 2],
487
+ 'flat 10' => [:flat, 10, 1],
488
+ 'parse 1' => [:parse, 1, 2],
489
+ 'parse 10' => [:parse, 10, 1])
490
+ def test_emit_with_read_lines_limit(data)
491
+ config_style, limit, num_events = data
492
+ case config_style
493
+ when :flat
494
+ config = CONFIG_READ_FROM_HEAD + SINGLE_LINE_CONFIG + config_element("", "", { "read_lines_limit" => limit })
495
+ when :parse
496
+ config = CONFIG_READ_FROM_HEAD + config_element("", "", { "read_lines_limit" => limit }) + PARSE_SINGLE_LINE_CONFIG
497
+ end
498
+ d = create_driver(config)
499
+ msg = 'test' * 2000 # in_tail reads 8192 bytes at once.
500
+
501
+ d.run(expect_emits: num_events, timeout: 2) do
502
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "ab") {|f|
503
+ f.puts msg
504
+ f.puts msg
505
+ }
506
+ end
507
+
508
+ events = d.events
509
+ assert_equal(true, events.length > 0)
510
+ assert_equal({"message" => msg}, events[0][2])
511
+ assert_equal({"message" => msg}, events[1][2])
512
+ assert num_events <= d.emit_count
513
+ end
514
+
515
+ sub_test_case "log throttling per file" do
516
+ teardown do
517
+ cleanup_file("#{@tmp_dir}/tail.txt")
518
+ end
519
+
520
+ sub_test_case "reads_bytes_per_second w/o throttled" do
521
+ data("flat 8192 bytes, 2 events" => [:flat, 100, 8192, 2],
522
+ "flat 8192 bytes, 2 events w/o stat watcher" => [:flat_without_stat, 100, 8192, 2],
523
+ "flat #{8192*10} bytes, 20 events" => [:flat, 100, (8192 * 10), 20],
524
+ "flat #{8192*10} bytes, 20 events w/o stat watcher" => [:flat_without_stat, 100, (8192 * 10), 20],
525
+ "parse #{8192*4} bytes, 8 events" => [:parse, 100, (8192 * 4), 8],
526
+ "parse #{8192*4} bytes, 8 events w/o stat watcher" => [:parse_without_stat, 100, (8192 * 4), 8],
527
+ "parse #{8192*10} bytes, 20 events" => [:parse, 100, (8192 * 10), 20],
528
+ "parse #{8192*10} bytes, 20 events w/o stat watcher" => [:parse_without_stat, 100, (8192 * 10), 20],
529
+ "flat 8k bytes with unit, 2 events" => [:flat, 100, "8k", 2])
530
+ def test_emit_with_read_bytes_limit_per_second(data)
531
+ config_style, limit, limit_bytes, num_events = data
532
+ case config_style
533
+ when :flat
534
+ config = CONFIG_READ_FROM_HEAD + SINGLE_LINE_CONFIG + config_element("", "", { "read_lines_limit" => limit, "read_bytes_limit_per_second" => limit_bytes })
535
+ when :parse
536
+ config = CONFIG_READ_FROM_HEAD + config_element("", "", { "read_lines_limit" => limit, "read_bytes_limit_per_second" => limit_bytes }) + PARSE_SINGLE_LINE_CONFIG
537
+ when :flat_without_stat
538
+ config = CONFIG_READ_FROM_HEAD + SINGLE_LINE_CONFIG + CONFIG_DISABLE_STAT_WATCHER + config_element("", "", { "read_lines_limit" => limit, "read_bytes_limit_per_second" => limit_bytes })
539
+ when :parse_without_stat
540
+ config = CONFIG_READ_FROM_HEAD + CONFIG_DISABLE_STAT_WATCHER + config_element("", "", { "read_lines_limit" => limit, "read_bytes_limit_per_second" => limit_bytes }) + PARSE_SINGLE_LINE_CONFIG
541
+ end
542
+
543
+ msg = 'test' * 2000 # in_tail reads 8192 bytes at once.
544
+ start_time = Fluent::Clock.now
545
+
546
+ d = create_driver(config)
547
+ d.run(expect_emits: 2) do
548
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "ab") {|f|
549
+ 100.times do
550
+ f.puts msg
551
+ end
552
+ }
553
+ end
554
+
555
+ assert_true(Fluent::Clock.now - start_time > 1)
556
+ assert_equal(num_events.times.map { {"message" => msg} },
557
+ d.events.collect { |event| event[2] })
558
+ end
559
+
560
+ def test_read_bytes_limit_precede_read_lines_limit
561
+ config = CONFIG_READ_FROM_HEAD +
562
+ SINGLE_LINE_CONFIG +
563
+ config_element("", "", {
564
+ "read_lines_limit" => 1000,
565
+ "read_bytes_limit_per_second" => 8192
566
+ })
567
+ msg = 'abc'
568
+ start_time = Fluent::Clock.now
569
+ d = create_driver(config)
570
+ d.run(expect_emits: 2) do
571
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "ab") {|f|
572
+ 8000.times do
573
+ f.puts msg
574
+ end
575
+ }
576
+ end
577
+
578
+ assert_true(Fluent::Clock.now - start_time > 1)
579
+ assert_equal(4096.times.map { {"message" => msg} },
580
+ d.events.collect { |event| event[2] })
581
+ end
582
+ end
583
+
584
+ sub_test_case "reads_bytes_per_second w/ throttled already" do
585
+ data("flat 8192 bytes" => [:flat, 100, 8192],
586
+ "parse 8192 bytes" => [:parse, 100, 8192])
587
+ def test_emit_with_read_bytes_limit_per_second(data)
588
+ config_style, limit, limit_bytes = data
589
+ case config_style
590
+ when :flat
591
+ config = CONFIG_READ_FROM_HEAD + SINGLE_LINE_CONFIG + config_element("", "", { "read_lines_limit" => limit, "read_bytes_limit_per_second" => limit_bytes })
592
+ when :parse
593
+ config = CONFIG_READ_FROM_HEAD + config_element("", "", { "read_lines_limit" => limit, "read_bytes_limit_per_second" => limit_bytes }) + PARSE_SINGLE_LINE_CONFIG
594
+ end
595
+ d = create_driver(config)
596
+ msg = 'test' * 2000 # in_tail reads 8192 bytes at once.
597
+
598
+ mock.proxy(d.instance).io_handler(anything, anything) do |io_handler|
599
+ require 'fluent/config/types'
600
+ limit_bytes_value = Fluent::Config.size_value(limit_bytes)
601
+ io_handler.instance_variable_set(:@number_bytes_read, limit_bytes_value)
602
+ if Fluent.linux?
603
+ mock.proxy(io_handler).handle_notify.at_least(5)
604
+ else
605
+ mock.proxy(io_handler).handle_notify.twice
606
+ end
607
+ io_handler
608
+ end
609
+
610
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "ab") do |f|
611
+ 100.times do
612
+ f.puts msg
613
+ end
614
+ end
615
+
616
+ # We should not do shutdown here due to hard timeout.
617
+ d.run do
618
+ start_time = Fluent::Clock.now
619
+ while Fluent::Clock.now - start_time < 0.8 do
620
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "ab") do |f|
621
+ f.puts msg
622
+ f.flush
623
+ end
624
+ sleep 0.05
625
+ end
626
+ end
627
+
628
+ assert_equal([], d.events)
629
+ end
630
+ end
631
+
632
+ sub_test_case "EOF with reads_bytes_per_second" do
633
+ def test_longer_than_rotate_wait
634
+ limit_bytes = 8192
635
+ num_lines = 1024 * 3
636
+ msg = "08bytes"
637
+
638
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "wb") do |f|
639
+ f.write("#{msg}\n" * num_lines)
640
+ end
641
+
642
+ config = CONFIG_READ_FROM_HEAD +
643
+ SINGLE_LINE_CONFIG +
644
+ config_element("", "", {
645
+ "read_bytes_limit_per_second" => limit_bytes,
646
+ "rotate_wait" => 0.1,
647
+ "refresh_interval" => 0.5,
648
+ })
649
+
650
+ rotated = false
651
+ d = create_driver(config)
652
+ d.run(timeout: 10) do
653
+ while d.events.size < num_lines do
654
+ if d.events.size > 0 && !rotated
655
+ cleanup_file("#{@tmp_dir}/tail.txt")
656
+ FileUtils.touch("#{@tmp_dir}/tail.txt")
657
+ rotated = true
658
+ end
659
+ sleep 0.3
660
+ end
661
+ end
662
+
663
+ assert_equal(num_lines,
664
+ d.events.count do |event|
665
+ event[2]["message"] == msg
666
+ end)
667
+ end
668
+
669
+ def test_shorter_than_rotate_wait
670
+ limit_bytes = 8192
671
+ num_lines = 1024 * 2
672
+ msg = "08bytes"
673
+
674
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "wb") do |f|
675
+ f.write("#{msg}\n" * num_lines)
676
+ end
677
+
678
+ config = CONFIG_READ_FROM_HEAD +
679
+ SINGLE_LINE_CONFIG +
680
+ config_element("", "", {
681
+ "read_bytes_limit_per_second" => limit_bytes,
682
+ "rotate_wait" => 2,
683
+ "refresh_interval" => 0.5,
684
+ })
685
+
686
+ start_time = Fluent::Clock.now
687
+ rotated = false
688
+ detached = false
689
+ d = create_driver(config)
690
+ mock.proxy(d.instance).setup_watcher(anything, anything) do |tw|
691
+ mock.proxy(tw).detach(anything) do |v|
692
+ detached = true
693
+ v
694
+ end
695
+ tw
696
+ end.twice
697
+
698
+ d.run(timeout: 10) do
699
+ until detached do
700
+ if d.events.size > 0 && !rotated
701
+ cleanup_file("#{@tmp_dir}/tail.txt")
702
+ FileUtils.touch("#{@tmp_dir}/tail.txt")
703
+ rotated = true
704
+ end
705
+ sleep 0.3
706
+ end
707
+ end
708
+
709
+ assert_true(Fluent::Clock.now - start_time > 2)
710
+ assert_equal(num_lines,
711
+ d.events.count do |event|
712
+ event[2]["message"] == msg
713
+ end)
714
+ end
715
+ end
716
+ end
717
+
718
+ data(flat: CONFIG_READ_FROM_HEAD + SINGLE_LINE_CONFIG,
719
+ parse: CONFIG_READ_FROM_HEAD + PARSE_SINGLE_LINE_CONFIG)
720
+ def test_emit_with_read_from_head(data)
721
+ config = data
722
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "wb") {|f|
723
+ f.puts "test1"
724
+ f.puts "test2"
725
+ }
726
+
727
+ d = create_driver(config)
728
+
729
+ d.run(expect_emits: 2) do
730
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "ab") {|f|
731
+ f.puts "test3"
732
+ f.puts "test4"
733
+ }
734
+ end
735
+
736
+ events = d.events
737
+ assert(events.length > 0)
738
+ assert_equal({"message" => "test1"}, events[0][2])
739
+ assert_equal({"message" => "test2"}, events[1][2])
740
+ assert_equal({"message" => "test3"}, events[2][2])
741
+ assert_equal({"message" => "test4"}, events[3][2])
742
+ end
743
+
744
+ data(flat: CONFIG_DISABLE_WATCH_TIMER + SINGLE_LINE_CONFIG,
745
+ parse: CONFIG_DISABLE_WATCH_TIMER + PARSE_SINGLE_LINE_CONFIG)
746
+ def test_emit_without_watch_timer(data)
747
+ config = data
748
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "wb") {|f|
749
+ f.puts "test1"
750
+ f.puts "test2"
751
+ }
752
+
753
+ d = create_driver(config)
754
+
755
+ d.run(expect_emits: 1) do
756
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "ab") {|f|
757
+ f.puts "test3"
758
+ f.puts "test4"
759
+ }
760
+ # according to cool.io's stat_watcher.c, systems without inotify will use
761
+ # an "automatic" value, typically around 5 seconds
762
+ end
763
+
764
+ events = d.events
765
+ assert(events.length > 0)
766
+ assert_equal({"message" => "test3"}, events[0][2])
767
+ assert_equal({"message" => "test4"}, events[1][2])
768
+ end
769
+
770
+ # https://github.com/fluent/fluentd/pull/3541#discussion_r740197711
771
+ def test_watch_wildcard_path_without_watch_timer
772
+ omit "need inotify" unless Fluent.linux?
773
+
774
+ config = config_element("ROOT", "", {
775
+ "path" => "#{@tmp_dir}/tail*.txt",
776
+ "tag" => "t1",
777
+ })
778
+ config = config + CONFIG_DISABLE_WATCH_TIMER + SINGLE_LINE_CONFIG
779
+
780
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "wb") {|f|
781
+ f.puts "test1"
782
+ f.puts "test2"
783
+ }
784
+
785
+ d = create_driver(config, false)
786
+
787
+ d.run(expect_emits: 1, timeout: 1) do
788
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "ab") {|f|
789
+ f.puts "test3"
790
+ f.puts "test4"
791
+ }
792
+ end
793
+
794
+ assert_equal(
795
+ [
796
+ {"message" => "test3"},
797
+ {"message" => "test4"},
798
+ ],
799
+ d.events.collect { |event| event[2] })
800
+ end
801
+
802
+ data(flat: CONFIG_DISABLE_STAT_WATCHER + SINGLE_LINE_CONFIG,
803
+ parse: CONFIG_DISABLE_STAT_WATCHER + PARSE_SINGLE_LINE_CONFIG)
804
+ def test_emit_with_disable_stat_watcher(data)
805
+ config = data
806
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "wb") {|f|
807
+ f.puts "test1"
808
+ f.puts "test2"
809
+ }
810
+
811
+ d = create_driver(config)
812
+
813
+ d.run(expect_emits: 1) do
814
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "ab") {|f|
815
+ f.puts "test3"
816
+ f.puts "test4"
817
+ }
818
+ end
819
+
820
+ events = d.events
821
+ assert(events.length > 0)
822
+ assert_equal({"message" => "test3"}, events[0][2])
823
+ assert_equal({"message" => "test4"}, events[1][2])
824
+ end
825
+
826
+ def test_always_read_from_head_on_detecting_a_new_file
827
+ d = create_driver(SINGLE_LINE_CONFIG)
828
+
829
+ d.run(expect_emits: 1, timeout: 3) do
830
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "wb") {|f|
831
+ f.puts "test1\ntest2\n"
832
+ }
833
+ end
834
+
835
+ assert_equal(
836
+ [
837
+ {"message" => "test1"},
838
+ {"message" => "test2"},
839
+ ],
840
+ d.events.collect { |event| event[2] })
841
+ end
842
+ end
843
+
844
+ class TestWithSystem < self
845
+ include Fluent::SystemConfig::Mixin
846
+
847
+ OVERRIDE_FILE_PERMISSION = 0620
848
+ CONFIG_SYSTEM = %[
849
+ <system>
850
+ file_permission #{OVERRIDE_FILE_PERMISSION}
851
+ </system>
852
+ ]
853
+
854
+ def setup
855
+ omit "NTFS doesn't support UNIX like permissions" if Fluent.windows?
856
+ super
857
+ # Store default permission
858
+ @default_permission = system_config.instance_variable_get(:@file_permission)
859
+ end
860
+
861
+ def teardown
862
+ return if Fluent.windows?
863
+ super
864
+ # Restore default permission
865
+ system_config.instance_variable_set(:@file_permission, @default_permission)
866
+ end
867
+
868
+ def parse_system(text)
869
+ basepath = File.expand_path(File.dirname(__FILE__) + '/../../')
870
+ Fluent::Config.parse(text, '(test)', basepath, true).elements.find { |e| e.name == 'system' }
871
+ end
872
+
873
+ def test_emit_with_system
874
+ system_conf = parse_system(CONFIG_SYSTEM)
875
+ sc = Fluent::SystemConfig.new(system_conf)
876
+ Fluent::Engine.init(sc)
877
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "wb") {|f|
878
+ f.puts "test1"
879
+ f.puts "test2"
880
+ }
881
+
882
+ d = create_driver
883
+
884
+ d.run(expect_emits: 1) do
885
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "ab") {|f|
886
+ f.puts "test3"
887
+ f.puts "test4"
888
+ }
889
+ end
890
+
891
+ events = d.events
892
+ assert_equal(true, events.length > 0)
893
+ assert_equal({"message" => "test3"}, events[0][2])
894
+ assert_equal({"message" => "test4"}, events[1][2])
895
+ assert(events[0][1].is_a?(Fluent::EventTime))
896
+ assert(events[1][1].is_a?(Fluent::EventTime))
897
+ assert_equal(1, d.emit_count)
898
+ pos = d.instance.instance_variable_get(:@pf_file)
899
+ mode = "%o" % File.stat(pos).mode
900
+ assert_equal OVERRIDE_FILE_PERMISSION, mode[-3, 3].to_i
901
+ end
902
+ end
903
+
904
+ sub_test_case "rotate file" do
905
+ def create_driver(conf = SINGLE_LINE_CONFIG)
906
+ config = common_config + conf
907
+ Fluent::Test::Driver::Input.new(Fluent::Plugin::TailInput).configure(config)
908
+ end
909
+
910
+ data(flat: SINGLE_LINE_CONFIG,
911
+ parse: PARSE_SINGLE_LINE_CONFIG)
912
+ def test_rotate_file(data)
913
+ config = data
914
+ events = sub_test_rotate_file(config, expect_emits: 2)
915
+ assert_equal(3.upto(6).collect { |i| {"message" => "test#{i}"} },
916
+ events.collect { |event| event[2] })
917
+ end
918
+
919
+ data(flat: CONFIG_READ_FROM_HEAD + SINGLE_LINE_CONFIG,
920
+ parse: CONFIG_READ_FROM_HEAD + PARSE_SINGLE_LINE_CONFIG)
921
+ def test_rotate_file_with_read_from_head(data)
922
+ config = data
923
+ events = sub_test_rotate_file(config, expect_records: 6)
924
+ assert_equal(1.upto(6).collect { |i| {"message" => "test#{i}"} },
925
+ events.collect { |event| event[2] })
926
+ end
927
+
928
+ data(flat: CONFIG_OPEN_ON_EVERY_UPDATE + CONFIG_READ_FROM_HEAD + SINGLE_LINE_CONFIG,
929
+ parse: CONFIG_OPEN_ON_EVERY_UPDATE + CONFIG_READ_FROM_HEAD + PARSE_SINGLE_LINE_CONFIG)
930
+ def test_rotate_file_with_open_on_every_update(data)
931
+ config = data
932
+ events = sub_test_rotate_file(config, expect_records: 6)
933
+ assert_equal(1.upto(6).collect { |i| {"message" => "test#{i}"} },
934
+ events.collect { |event| event[2] })
935
+ end
936
+
937
+ data(flat: SINGLE_LINE_CONFIG,
938
+ parse: PARSE_SINGLE_LINE_CONFIG)
939
+ def test_rotate_file_with_write_old(data)
940
+ config = data
941
+ events = sub_test_rotate_file(config, expect_emits: 3) { |rotated_file|
942
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "wb") { |f| }
943
+ rotated_file.puts "test7"
944
+ rotated_file.puts "test8"
945
+ rotated_file.flush
946
+
947
+ sleep 1
948
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "ab") { |f|
949
+ f.puts "test5"
950
+ f.puts "test6"
951
+ }
952
+ }
953
+ # This test sometimes fails and it shows a potential bug of in_tail
954
+ # https://github.com/fluent/fluentd/issues/1434
955
+ assert_equal([3, 4, 7, 8, 5, 6].collect { |i| {"message" => "test#{i}"} },
956
+ events.collect { |event| event[2] })
957
+ end
958
+
959
+ data(flat: SINGLE_LINE_CONFIG,
960
+ parse: PARSE_SINGLE_LINE_CONFIG)
961
+ def test_rotate_file_with_write_old_and_no_new_file(data)
962
+ config = data
963
+ events = sub_test_rotate_file(config, expect_emits: 2) { |rotated_file|
964
+ rotated_file.puts "test7"
965
+ rotated_file.puts "test8"
966
+ rotated_file.flush
967
+ }
968
+ assert_equal([3, 4, 7, 8].collect { |i| {"message" => "test#{i}"} },
969
+ events.collect { |event| event[2] })
970
+ end
971
+
972
+ def sub_test_rotate_file(config = nil, expect_emits: nil, expect_records: nil, timeout: 5)
973
+ file = Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "wb")
974
+ file.puts "test1"
975
+ file.puts "test2"
976
+ file.flush
977
+
978
+ d = create_driver(config)
979
+ d.run(expect_emits: expect_emits, expect_records: expect_records, timeout: timeout) do
980
+ sleep(0.1) while d.instance.instance_variable_get(:@startup)
981
+ size = d.emit_count
982
+ file.puts "test3"
983
+ file.puts "test4"
984
+ file.flush
985
+ sleep(0.1) until d.emit_count >= size + 1
986
+ size = d.emit_count
987
+
988
+ if Fluent.windows?
989
+ file.close
990
+ FileUtils.mv("#{@tmp_dir}/tail.txt", "#{@tmp_dir}/tail2.txt", force: true)
991
+ file = Fluent::FileWrapper.open("#{@tmp_dir}/tail2.txt", "ab")
992
+ else
993
+ FileUtils.mv("#{@tmp_dir}/tail.txt", "#{@tmp_dir}/tail2.txt")
994
+ end
995
+ if block_given?
996
+ yield file
997
+ else
998
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "wb") { |f| }
999
+ sleep 1
1000
+
1001
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "ab") { |f|
1002
+ f.puts "test5"
1003
+ f.puts "test6"
1004
+ }
1005
+ end
1006
+ end
1007
+
1008
+ d.events
1009
+ ensure
1010
+ file.close if file && !file.closed?
1011
+ end
1012
+ end
1013
+
1014
+ def test_truncate_file
1015
+ config = SINGLE_LINE_CONFIG
1016
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "wb") {|f|
1017
+ f.puts "test1"
1018
+ f.puts "test2"
1019
+ f.flush
1020
+ }
1021
+
1022
+ d = create_driver(config)
1023
+
1024
+ d.run(expect_emits: 2) do
1025
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "ab") {|f|
1026
+ f.puts "test3\ntest4"
1027
+ f.flush
1028
+ }
1029
+ waiting(2) { sleep 0.1 until d.events.length == 2 }
1030
+ if Fluent.windows?
1031
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "wb") { |f|
1032
+ f.puts("test1");
1033
+ }
1034
+ else
1035
+ File.truncate("#{@tmp_dir}/tail.txt", 6)
1036
+ end
1037
+ end
1038
+
1039
+ expected = {
1040
+ emit_count: 2,
1041
+ events: [
1042
+ [Fluent::EventTime, {"message" => "test3"}],
1043
+ [Fluent::EventTime, {"message" => "test4"}],
1044
+ [Fluent::EventTime, {"message" => "test1"}],
1045
+ ]
1046
+ }
1047
+ actual = {
1048
+ emit_count: d.emit_count,
1049
+ events: d.events.collect{|event| [event[1].class, event[2]]}
1050
+ }
1051
+ assert_equal(expected, actual)
1052
+ end
1053
+
1054
+ def test_move_truncate_move_back
1055
+ config = SINGLE_LINE_CONFIG
1056
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "wb") {|f|
1057
+ f.puts "test1"
1058
+ f.puts "test2"
1059
+ }
1060
+
1061
+ d = create_driver(config)
1062
+
1063
+ d.run(expect_emits: 1) do
1064
+ if Fluent.windows?
1065
+ FileUtils.mv("#{@tmp_dir}/tail.txt", "#{@tmp_dir}/tail2.txt", force: true)
1066
+ else
1067
+ FileUtils.mv("#{@tmp_dir}/tail.txt", "#{@tmp_dir}/tail2.txt")
1068
+ end
1069
+ sleep(1)
1070
+ if Fluent.windows?
1071
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail2.txt", "wb") { |f|
1072
+ f.puts("test1");
1073
+ }
1074
+ else
1075
+ File.truncate("#{@tmp_dir}/tail2.txt", 6)
1076
+ end
1077
+ sleep(1)
1078
+ if Fluent.windows?
1079
+ FileUtils.mv("#{@tmp_dir}/tail2.txt", "#{@tmp_dir}/tail.txt", force: true)
1080
+ else
1081
+ FileUtils.mv("#{@tmp_dir}/tail2.txt", "#{@tmp_dir}/tail.txt")
1082
+ end
1083
+ end
1084
+
1085
+ events = d.events
1086
+ assert_equal(1, events.length)
1087
+ assert_equal({"message" => "test1"}, events[0][2])
1088
+ assert(events[0][1].is_a?(Fluent::EventTime))
1089
+ assert_equal(1, d.emit_count)
1090
+ end
1091
+
1092
+ def test_lf
1093
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "wb") {|f| }
1094
+
1095
+ d = create_driver
1096
+
1097
+ d.run(expect_emits: 1) do
1098
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "ab") {|f|
1099
+ f.print "test3"
1100
+ }
1101
+ sleep 1
1102
+
1103
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "ab") {|f|
1104
+ f.puts "test4"
1105
+ }
1106
+ end
1107
+
1108
+ events = d.events
1109
+ assert_equal(true, events.length > 0)
1110
+ assert_equal({"message" => "test3test4"}, events[0][2])
1111
+ end
1112
+
1113
+ def test_whitespace
1114
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "wb") {|f| }
1115
+
1116
+ d = create_driver
1117
+
1118
+ d.run(expect_emits: 1) do
1119
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "ab") {|f|
1120
+ f.puts " " # 4 spaces
1121
+ f.puts " 4 spaces"
1122
+ f.puts "4 spaces "
1123
+ f.puts " " # tab
1124
+ f.puts " tab"
1125
+ f.puts "tab "
1126
+ }
1127
+ end
1128
+
1129
+ events = d.events
1130
+ assert_equal(true, events.length > 0)
1131
+ assert_equal({"message" => " "}, events[0][2])
1132
+ assert_equal({"message" => " 4 spaces"}, events[1][2])
1133
+ assert_equal({"message" => "4 spaces "}, events[2][2])
1134
+ assert_equal({"message" => " "}, events[3][2])
1135
+ assert_equal({"message" => " tab"}, events[4][2])
1136
+ assert_equal({"message" => "tab "}, events[5][2])
1137
+ end
1138
+
1139
+ data(
1140
+ 'flat default encoding' => [SINGLE_LINE_CONFIG, Encoding::ASCII_8BIT],
1141
+ 'flat explicit encoding config' => [SINGLE_LINE_CONFIG + config_element("", "", { "encoding" => "utf-8" }), Encoding::UTF_8],
1142
+ 'parse default encoding' => [PARSE_SINGLE_LINE_CONFIG, Encoding::ASCII_8BIT],
1143
+ 'parse explicit encoding config' => [PARSE_SINGLE_LINE_CONFIG + config_element("", "", { "encoding" => "utf-8" }), Encoding::UTF_8])
1144
+ def test_encoding(data)
1145
+ encoding_config, encoding = data
1146
+
1147
+ d = create_driver(CONFIG_READ_FROM_HEAD + encoding_config)
1148
+
1149
+ d.run(expect_emits: 1) do
1150
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "wb") {|f|
1151
+ f.puts "test"
1152
+ }
1153
+ end
1154
+
1155
+ events = d.events
1156
+ assert_equal(encoding, events[0][2]['message'].encoding)
1157
+ end
1158
+
1159
+ def test_from_encoding
1160
+ conf = config_element(
1161
+ "", "", {
1162
+ "format" => "/(?<message>.*)/",
1163
+ "read_from_head" => "true",
1164
+ "from_encoding" => "cp932",
1165
+ "encoding" => "utf-8"
1166
+ })
1167
+ d = create_driver(conf)
1168
+ cp932_message = "\x82\xCD\x82\xEB\x81\x5B\x82\xED\x81\x5B\x82\xE9\x82\xC7".force_encoding(Encoding::CP932)
1169
+ utf8_message = cp932_message.encode(Encoding::UTF_8)
1170
+
1171
+ d.run(expect_emits: 1) do
1172
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "w:cp932") {|f|
1173
+ f.puts cp932_message
1174
+ }
1175
+ end
1176
+
1177
+ events = d.events
1178
+ assert_equal(utf8_message, events[0][2]['message'])
1179
+ assert_equal(Encoding::UTF_8, events[0][2]['message'].encoding)
1180
+ end
1181
+
1182
+ def test_from_encoding_utf16
1183
+ conf = config_element(
1184
+ "", "", {
1185
+ "format" => "/(?<message>.*)/",
1186
+ "read_from_head" => "true",
1187
+ "from_encoding" => "utf-16le",
1188
+ "encoding" => "utf-8"
1189
+ })
1190
+ d = create_driver(conf)
1191
+ utf16_message = "\u306F\u308D\u30FC\u308F\u30FC\u308B\u3069\n".encode(Encoding::UTF_16LE)
1192
+ utf8_message = utf16_message.encode(Encoding::UTF_8).strip
1193
+
1194
+ d.run(expect_emits: 1) do
1195
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "w:utf-16le") { |f|
1196
+ f.write utf16_message
1197
+ }
1198
+ end
1199
+
1200
+ events = d.events
1201
+ assert_equal(utf8_message, events[0][2]['message'])
1202
+ assert_equal(Encoding::UTF_8, events[0][2]['message'].encoding)
1203
+ end
1204
+
1205
+ def test_encoding_with_bad_character
1206
+ conf = config_element(
1207
+ "", "", {
1208
+ "format" => "/(?<message>.*)/",
1209
+ "read_from_head" => "true",
1210
+ "from_encoding" => "ASCII-8BIT",
1211
+ "encoding" => "utf-8"
1212
+ })
1213
+ d = create_driver(conf)
1214
+
1215
+ d.run(expect_emits: 1) do
1216
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "w") { |f|
1217
+ f.write "te\x86st\n"
1218
+ }
1219
+ end
1220
+
1221
+ events = d.events
1222
+ assert_equal("te\uFFFDst", events[0][2]['message'])
1223
+ assert_equal(Encoding::UTF_8, events[0][2]['message'].encoding)
1224
+ end
1225
+
1226
+ sub_test_case "multiline" do
1227
+ data(flat: MULTILINE_CONFIG,
1228
+ parse: PARSE_MULTILINE_CONFIG)
1229
+ def test_multiline(data)
1230
+ config = data
1231
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "wb") { |f| }
1232
+
1233
+ d = create_driver(config)
1234
+ d.run(expect_emits: 1) do
1235
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "ab") { |f|
1236
+ f.puts "f test1"
1237
+ f.puts "s test2"
1238
+ f.puts "f test3"
1239
+ f.puts "f test4"
1240
+ f.puts "s test5"
1241
+ f.puts "s test6"
1242
+ f.puts "f test7"
1243
+ f.puts "s test8"
1244
+ }
1245
+ end
1246
+
1247
+ events = d.events
1248
+ assert_equal(4, events.length)
1249
+ assert_equal({"message1" => "test2", "message2" => "test3", "message3" => "test4"}, events[0][2])
1250
+ assert_equal({"message1" => "test5"}, events[1][2])
1251
+ assert_equal({"message1" => "test6", "message2" => "test7"}, events[2][2])
1252
+ assert_equal({"message1" => "test8"}, events[3][2])
1253
+ end
1254
+
1255
+ data(flat: MULTILINE_CONFIG,
1256
+ parse: PARSE_MULTILINE_CONFIG)
1257
+ def test_multiline_with_emit_unmatched_lines_true(data)
1258
+ config = data + config_element("", "", { "emit_unmatched_lines" => true })
1259
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "wb") { |f| }
1260
+
1261
+ d = create_driver(config)
1262
+ d.run(expect_emits: 1) do
1263
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "ab") { |f|
1264
+ f.puts "f test1"
1265
+ f.puts "s test2"
1266
+ f.puts "f test3"
1267
+ f.puts "f test4"
1268
+ f.puts "s test5"
1269
+ f.puts "s test6"
1270
+ f.puts "f test7"
1271
+ f.puts "s test8"
1272
+ }
1273
+ end
1274
+
1275
+ events = d.events
1276
+ assert_equal(5, events.length)
1277
+ assert_equal({"unmatched_line" => "f test1"}, events[0][2])
1278
+ assert_equal({"message1" => "test2", "message2" => "test3", "message3" => "test4"}, events[1][2])
1279
+ assert_equal({"message1" => "test5"}, events[2][2])
1280
+ assert_equal({"message1" => "test6", "message2" => "test7"}, events[3][2])
1281
+ assert_equal({"message1" => "test8"}, events[4][2])
1282
+ end
1283
+
1284
+ data(
1285
+ flat: MULTILINE_CONFIG_WITH_NEWLINE,
1286
+ parse: PARSE_MULTILINE_CONFIG_WITH_NEWLINE)
1287
+ def test_multiline_with_emit_unmatched_lines2(data)
1288
+ config = data + config_element("", "", { "emit_unmatched_lines" => true })
1289
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "wb") { |f| }
1290
+
1291
+ d = create_driver(config)
1292
+ d.run(expect_emits: 0, timeout: 1) do
1293
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "ab") { |f|
1294
+ f.puts "s test0"
1295
+ f.puts "f test1"
1296
+ f.puts "f test2"
1297
+
1298
+ f.puts "f test3"
1299
+
1300
+ f.puts "s test4"
1301
+ f.puts "f test5"
1302
+ f.puts "f test6"
1303
+ }
1304
+ end
1305
+
1306
+ events = d.events
1307
+ assert_equal({"message1" => "test0", "message2" => "test1", "message3" => "test2"}, events[0][2])
1308
+ assert_equal({ 'unmatched_line' => "f test3" }, events[1][2])
1309
+ assert_equal({"message1" => "test4", "message2" => "test5", "message3" => "test6"}, events[2][2])
1310
+ end
1311
+
1312
+ data(flat: MULTILINE_CONFIG,
1313
+ parse: PARSE_MULTILINE_CONFIG)
1314
+ def test_multiline_with_flush_interval(data)
1315
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "wb") { |f| }
1316
+
1317
+ config = data + config_element("", "", { "multiline_flush_interval" => "2s" })
1318
+ d = create_driver(config)
1319
+
1320
+ assert_equal(2, d.instance.multiline_flush_interval)
1321
+
1322
+ d.run(expect_emits: 1) do
1323
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "ab") { |f|
1324
+ f.puts "f test1"
1325
+ f.puts "s test2"
1326
+ f.puts "f test3"
1327
+ f.puts "f test4"
1328
+ f.puts "s test5"
1329
+ f.puts "s test6"
1330
+ f.puts "f test7"
1331
+ f.puts "s test8"
1332
+ }
1333
+ end
1334
+
1335
+ events = d.events
1336
+ assert_equal(4, events.length)
1337
+ assert_equal({"message1" => "test2", "message2" => "test3", "message3" => "test4"}, events[0][2])
1338
+ assert_equal({"message1" => "test5"}, events[1][2])
1339
+ assert_equal({"message1" => "test6", "message2" => "test7"}, events[2][2])
1340
+ assert_equal({"message1" => "test8"}, events[3][2])
1341
+ end
1342
+
1343
+ data(
1344
+ 'flat default encoding' => [MULTILINE_CONFIG, Encoding::ASCII_8BIT],
1345
+ 'flat explicit encoding config' => [MULTILINE_CONFIG + config_element("", "", { "encoding" => "utf-8" }), Encoding::UTF_8],
1346
+ 'parse default encoding' => [PARSE_MULTILINE_CONFIG, Encoding::ASCII_8BIT],
1347
+ 'parse explicit encoding config' => [PARSE_MULTILINE_CONFIG + config_element("", "", { "encoding" => "utf-8" }), Encoding::UTF_8])
1348
+ def test_multiline_encoding_of_flushed_record(data)
1349
+ encoding_config, encoding = data
1350
+
1351
+ config = config_element("", "", {
1352
+ "multiline_flush_interval" => "2s",
1353
+ "read_from_head" => "true",
1354
+ })
1355
+ d = create_driver(config + encoding_config)
1356
+
1357
+ d.run(expect_emits: 1) do
1358
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "wb") { |f|
1359
+ f.puts "s test"
1360
+ }
1361
+ end
1362
+ events = d.events
1363
+ assert_equal(1, events.length)
1364
+ assert_equal(encoding, events[0][2]['message1'].encoding)
1365
+ end
1366
+
1367
+ def test_multiline_from_encoding_of_flushed_record
1368
+ conf = MULTILINE_CONFIG + config_element(
1369
+ "", "",
1370
+ {
1371
+ "multiline_flush_interval" => "1s",
1372
+ "read_from_head" => "true",
1373
+ "from_encoding" => "cp932",
1374
+ "encoding" => "utf-8"
1375
+ })
1376
+ d = create_driver(conf)
1377
+
1378
+ cp932_message = "s \x82\xCD\x82\xEB\x81\x5B\x82\xED\x81\x5B\x82\xE9\x82\xC7".force_encoding(Encoding::CP932)
1379
+ utf8_message = "\x82\xCD\x82\xEB\x81\x5B\x82\xED\x81\x5B\x82\xE9\x82\xC7".encode(Encoding::UTF_8, Encoding::CP932)
1380
+ d.run(expect_emits: 1) do
1381
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "w:cp932") { |f|
1382
+ f.puts cp932_message
1383
+ }
1384
+ end
1385
+
1386
+ events = d.events
1387
+ assert_equal(1, events.length)
1388
+ assert_equal(utf8_message, events[0][2]['message1'])
1389
+ assert_equal(Encoding::UTF_8, events[0][2]['message1'].encoding)
1390
+ end
1391
+
1392
+ data(flat: config_element(
1393
+ "", "", {
1394
+ "format" => "multiline",
1395
+ "format1" => "/^s (?<message1>[^\\n]+)\\n?/",
1396
+ "format2" => "/(f (?<message2>[^\\n]+)\\n?)?/",
1397
+ "format3" => "/(f (?<message3>.*))?/",
1398
+ "format_firstline" => "/^[s]/"
1399
+ }),
1400
+ parse: config_element(
1401
+ "", "", {},
1402
+ [config_element("parse", "", {
1403
+ "@type" => "multiline",
1404
+ "format1" => "/^s (?<message1>[^\\n]+)\\n?/",
1405
+ "format2" => "/(f (?<message2>[^\\n]+)\\n?)?/",
1406
+ "format3" => "/(f (?<message3>.*))?/",
1407
+ "format_firstline" => "/^[s]/"
1408
+ })
1409
+ ])
1410
+ )
1411
+ def test_multiline_with_multiple_formats(data)
1412
+ config = data
1413
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "wb") { |f| }
1414
+
1415
+ d = create_driver(config)
1416
+ d.run(expect_emits: 1) do
1417
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "ab") { |f|
1418
+ f.puts "f test1"
1419
+ f.puts "s test2"
1420
+ f.puts "f test3"
1421
+ f.puts "f test4"
1422
+ f.puts "s test5"
1423
+ f.puts "s test6"
1424
+ f.puts "f test7"
1425
+ f.puts "s test8"
1426
+ }
1427
+ end
1428
+
1429
+ events = d.events
1430
+ assert(events.length > 0)
1431
+ assert_equal({"message1" => "test2", "message2" => "test3", "message3" => "test4"}, events[0][2])
1432
+ assert_equal({"message1" => "test5"}, events[1][2])
1433
+ assert_equal({"message1" => "test6", "message2" => "test7"}, events[2][2])
1434
+ assert_equal({"message1" => "test8"}, events[3][2])
1435
+ end
1436
+
1437
+ data(flat: config_element(
1438
+ "", "", {
1439
+ "format" => "multiline",
1440
+ "format1" => "/^[s|f] (?<message>.*)/",
1441
+ "format_firstline" => "/^[s]/"
1442
+ }),
1443
+ parse: config_element(
1444
+ "", "", {},
1445
+ [config_element("parse", "", {
1446
+ "@type" => "multiline",
1447
+ "format1" => "/^[s|f] (?<message>.*)/",
1448
+ "format_firstline" => "/^[s]/"
1449
+ })
1450
+ ])
1451
+ )
1452
+ def test_multilinelog_with_multiple_paths(data)
1453
+ files = ["#{@tmp_dir}/tail1.txt", "#{@tmp_dir}/tail2.txt"]
1454
+ files.each { |file| Fluent::FileWrapper.open(file, "wb") { |f| } }
1455
+
1456
+ config = data + config_element("", "", {
1457
+ "path" => "#{files[0]},#{files[1]}",
1458
+ "tag" => "t1",
1459
+ })
1460
+ d = create_driver(config, false)
1461
+ d.run(expect_emits: 2) do
1462
+ files.each do |file|
1463
+ Fluent::FileWrapper.open(file, 'ab') { |f|
1464
+ f.puts "f #{file} line should be ignored"
1465
+ f.puts "s test1"
1466
+ f.puts "f test2"
1467
+ f.puts "f test3"
1468
+ f.puts "s test4"
1469
+ }
1470
+ end
1471
+ end
1472
+
1473
+ events = d.events
1474
+ assert_equal({"message" => "test1\nf test2\nf test3"}, events[0][2])
1475
+ assert_equal({"message" => "test1\nf test2\nf test3"}, events[1][2])
1476
+ # "test4" events are here because these events are flushed at shutdown phase
1477
+ assert_equal({"message" => "test4"}, events[2][2])
1478
+ assert_equal({"message" => "test4"}, events[3][2])
1479
+ end
1480
+
1481
+ data(flat: config_element("", "", {
1482
+ "format" => "multiline",
1483
+ "format1" => "/(?<var1>foo \\d)\\n/",
1484
+ "format2" => "/(?<var2>bar \\d)\\n/",
1485
+ "format3" => "/(?<var3>baz \\d)/"
1486
+ }),
1487
+ parse: config_element(
1488
+ "", "", {},
1489
+ [config_element("parse", "", {
1490
+ "@type" => "multiline",
1491
+ "format1" => "/(?<var1>foo \\d)\\n/",
1492
+ "format2" => "/(?<var2>bar \\d)\\n/",
1493
+ "format3" => "/(?<var3>baz \\d)/"
1494
+ })
1495
+ ])
1496
+ )
1497
+ def test_multiline_without_firstline(data)
1498
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "wb") { |f| }
1499
+
1500
+ config = data
1501
+ d = create_driver(config)
1502
+ d.run(expect_emits: 1) do
1503
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "ab") { |f|
1504
+ f.puts "foo 1"
1505
+ f.puts "bar 1"
1506
+ f.puts "baz 1"
1507
+ f.puts "foo 2"
1508
+ f.puts "bar 2"
1509
+ f.puts "baz 2"
1510
+ }
1511
+ end
1512
+
1513
+ events = d.events
1514
+ assert_equal(2, events.length)
1515
+ assert_equal({"var1" => "foo 1", "var2" => "bar 1", "var3" => "baz 1"}, events[0][2])
1516
+ assert_equal({"var1" => "foo 2", "var2" => "bar 2", "var3" => "baz 2"}, events[1][2])
1517
+ end
1518
+ end
1519
+
1520
+ sub_test_case "path" do
1521
+ # * path test
1522
+ # TODO: Clean up tests
1523
+ def test_expand_paths
1524
+ ex_paths = [
1525
+ create_target_info('test/plugin/data/2010/01/20100102-030405.log'),
1526
+ create_target_info('test/plugin/data/log/foo/bar.log'),
1527
+ create_target_info('test/plugin/data/log/test.log')
1528
+ ]
1529
+ plugin = create_driver(ex_config, false).instance
1530
+ flexstub(Time) do |timeclass|
1531
+ timeclass.should_receive(:now).with_no_args.and_return(Time.new(2010, 1, 2, 3, 4, 5))
1532
+ assert_equal(ex_paths, plugin.expand_paths.values.sort_by { |path_ino| path_ino.path })
1533
+ end
1534
+
1535
+ # Test exclusion
1536
+ exclude_config = ex_config + config_element("", "", { "exclude_path" => %Q(["#{ex_paths.last.path}"]) })
1537
+ plugin = create_driver(exclude_config, false).instance
1538
+ assert_equal(ex_paths - [ex_paths.last], plugin.expand_paths.values.sort_by { |path_ino| path_ino.path })
1539
+ end
1540
+
1541
+ sub_test_case "expand_paths with glob" do |data|
1542
+ sub_test_case "extended_glob" do
1543
+ data("curly braces" => [true, "always", "test/plugin/data/log_numeric/{0,1}*.log"],
1544
+ "square brackets" => [true, "always", "test/plugin/data/log_numeric/[0-1][2-4].log"],
1545
+ "asterisk" => [true, "always", "test/plugin/data/log/*.log"],
1546
+ "one character matcher" => [true, "always", "test/plugin/data/log/tes?.log"],
1547
+ )
1548
+ def test_expand_paths_with_use_glob_p_and_almost_set_of_patterns
1549
+ result, option, path = data
1550
+ config = config_element("", "", {
1551
+ "tag" => "tail",
1552
+ "path" => path,
1553
+ "format" => "none",
1554
+ "pos_file" => "#{@tmp_dir}/tail.pos",
1555
+ "read_from_head" => true,
1556
+ "refresh_interval" => 30,
1557
+ "glob_policy" => option,
1558
+ "path_delimiter" => "|",
1559
+ "rotate_wait" => "#{EX_ROTATE_WAIT}s",
1560
+ "follow_inodes" => "#{EX_FOLLOW_INODES}",
1561
+ })
1562
+ plugin = create_driver(config, false).instance
1563
+ assert_equal(result, !!plugin.use_glob?(path))
1564
+ end
1565
+
1566
+ data("curly braces" => [true, false, "extended", "test/plugin/data/log_numeric/{0,1}*.log"],
1567
+ "square brackets" => [false, true, "extended", "test/plugin/data/log_numeric/[0-1][2-4].log"],
1568
+ "asterisk" => [false, true, "extended", "test/plugin/data/log/*.log"],
1569
+ "one character matcher" => [false, true, "extended", "test/plugin/data/log/tes?.log"],
1570
+ )
1571
+ def test_expand_paths_with_use_glob_p
1572
+ emit_exception_p, result, option, path = data
1573
+ config = config_element("", "", {
1574
+ "tag" => "tail",
1575
+ "path" => path,
1576
+ "format" => "none",
1577
+ "pos_file" => "#{@tmp_dir}/tail.pos",
1578
+ "read_from_head" => true,
1579
+ "refresh_interval" => 30,
1580
+ "glob_policy" => option,
1581
+ "rotate_wait" => "#{EX_ROTATE_WAIT}s",
1582
+ "follow_inodes" => "#{EX_FOLLOW_INODES}",
1583
+ })
1584
+ if emit_exception_p
1585
+ assert_raise(Fluent::ConfigError) do
1586
+ plugin = create_driver(config, false).instance
1587
+ end
1588
+ else
1589
+ plugin = create_driver(config, false).instance
1590
+ assert_equal(result, !!plugin.use_glob?(path))
1591
+ end
1592
+ end
1593
+ end
1594
+
1595
+ sub_test_case "only_use_backward_compatible" do
1596
+ data("square brackets" => [false, "backward_compatible", "test/plugin/data/log_numeric/[0-1][2-4].log"],
1597
+ "asterisk" => [true, "backward_compatible", "test/plugin/data/log/*.log"],
1598
+ "one character matcher" => [false, "backward_compatible", "test/plugin/data/log/tes?.log"],
1599
+ )
1600
+ def test_expand_paths_with_use_glob_p
1601
+ result, option, path = data
1602
+ config = config_element("", "", {
1603
+ "tag" => "tail",
1604
+ "path" => path,
1605
+ "format" => "none",
1606
+ "pos_file" => "#{@tmp_dir}/tail.pos",
1607
+ "read_from_head" => true,
1608
+ "refresh_interval" => 30,
1609
+ "glob_policy" => option,
1610
+ "rotate_wait" => "#{EX_ROTATE_WAIT}s",
1611
+ "follow_inodes" => "#{EX_FOLLOW_INODES}",
1612
+ })
1613
+ plugin = create_driver(config, false).instance
1614
+ assert_equal(result, !!plugin.use_glob?(path))
1615
+ end
1616
+ end
1617
+ end
1618
+
1619
+ def ex_config_with_brackets
1620
+ config_element("", "", {
1621
+ "tag" => "tail",
1622
+ "path" => "test/plugin/data/log_numeric/[0-1][2-4].log",
1623
+ "format" => "none",
1624
+ "pos_file" => "#{@tmp_dir}/tail.pos",
1625
+ "read_from_head" => true,
1626
+ "refresh_interval" => 30,
1627
+ "glob_policy" => "extended",
1628
+ "rotate_wait" => "#{EX_ROTATE_WAIT}s",
1629
+ "follow_inodes" => "#{EX_FOLLOW_INODES}",
1630
+ })
1631
+ end
1632
+
1633
+ def test_config_with_always_with_default_delimiter
1634
+ assert_raise(Fluent::ConfigError) do
1635
+ config = config_element("", "", {
1636
+ "tag" => "tail",
1637
+ "path" => "test/plugin/data/log_numeric/[0-1][2-4].log",
1638
+ "format" => "none",
1639
+ "pos_file" => "#{@tmp_dir}/tail.pos",
1640
+ "read_from_head" => true,
1641
+ "refresh_interval" => 30,
1642
+ "glob_policy" => "always",
1643
+ "rotate_wait" => "#{EX_ROTATE_WAIT}s",
1644
+ "follow_inodes" => "#{EX_FOLLOW_INODES}",
1645
+ })
1646
+
1647
+ create_driver(config, false).instance
1648
+ end
1649
+ end
1650
+
1651
+ def test_config_with_always_with_custom_delimiter
1652
+ assert_nothing_raised do
1653
+ config = config_element("", "", {
1654
+ "tag" => "tail",
1655
+ "path" => "test/plugin/data/log_numeric/[0-1][2-4].log",
1656
+ "format" => "none",
1657
+ "pos_file" => "#{@tmp_dir}/tail.pos",
1658
+ "read_from_head" => true,
1659
+ "refresh_interval" => 30,
1660
+ "glob_policy" => "always",
1661
+ "path_delimiter" => "|",
1662
+ "rotate_wait" => "#{EX_ROTATE_WAIT}s",
1663
+ "follow_inodes" => "#{EX_FOLLOW_INODES}",
1664
+ })
1665
+
1666
+ create_driver(config, false).instance
1667
+ end
1668
+ end
1669
+
1670
+ def test_expand_paths_with_brackets
1671
+ expanded_paths = [
1672
+ create_target_info('test/plugin/data/log_numeric/01.log'),
1673
+ create_target_info('test/plugin/data/log_numeric/02.log'),
1674
+ create_target_info('test/plugin/data/log_numeric/12.log'),
1675
+ create_target_info('test/plugin/data/log_numeric/14.log'),
1676
+ ]
1677
+
1678
+ plugin = create_driver(ex_config_with_brackets, false).instance
1679
+ assert_equal(expanded_paths - [expanded_paths.first], plugin.expand_paths.values.sort_by { |path_ino| path_ino.path })
1680
+ end
1681
+
1682
+ def test_expand_paths_with_duplicate_configuration
1683
+ expanded_paths = [
1684
+ create_target_info('test/plugin/data/log/foo/bar.log'),
1685
+ create_target_info('test/plugin/data/log/test.log')
1686
+ ]
1687
+ duplicate_config = ex_config.dup
1688
+ duplicate_config["path"]="test/plugin/data/log/**/*.log, test/plugin/data/log/**/*.log"
1689
+ plugin = create_driver(ex_config, false).instance
1690
+ assert_equal(expanded_paths, plugin.expand_paths.values.sort_by { |path_ino| path_ino.path })
1691
+ end
1692
+
1693
+ def test_expand_paths_with_timezone
1694
+ ex_paths = [
1695
+ create_target_info('test/plugin/data/2010/01/20100102-030405.log'),
1696
+ create_target_info('test/plugin/data/log/foo/bar.log'),
1697
+ create_target_info('test/plugin/data/log/test.log')
1698
+ ]
1699
+ ['Asia/Taipei', '+08'].each do |tz_type|
1700
+ taipei_config = ex_config + config_element("", "", {"path_timezone" => tz_type})
1701
+ plugin = create_driver(taipei_config, false).instance
1702
+
1703
+ # Test exclude
1704
+ exclude_config = taipei_config + config_element("", "", { "exclude_path" => %Q(["test/plugin/**/%Y%m%d-%H%M%S.log"]) })
1705
+ exclude_plugin = create_driver(exclude_config, false).instance
1706
+
1707
+ with_timezone('utc') do
1708
+ flexstub(Time) do |timeclass|
1709
+ # env : 2010-01-01 19:04:05 (UTC), tail path : 2010-01-02 03:04:05 (Asia/Taipei)
1710
+ timeclass.should_receive(:now).with_no_args.and_return(Time.new(2010, 1, 1, 19, 4, 5))
1711
+
1712
+ assert_equal(ex_paths, plugin.expand_paths.values.sort_by { |path_ino| path_ino.path })
1713
+ assert_equal(ex_paths - [ex_paths.first], exclude_plugin.expand_paths.values.sort_by { |path_ino| path_ino.path })
1714
+ end
1715
+ end
1716
+ end
1717
+ end
1718
+
1719
+ def test_log_file_without_extension
1720
+ expected_files = [
1721
+ create_target_info('test/plugin/data/log/bar'),
1722
+ create_target_info('test/plugin/data/log/foo/bar.log'),
1723
+ create_target_info('test/plugin/data/log/foo/bar2'),
1724
+ create_target_info('test/plugin/data/log/test.log')
1725
+ ]
1726
+
1727
+ config = config_element("", "", {
1728
+ "tag" => "tail",
1729
+ "path" => "test/plugin/data/log/**/*",
1730
+ "format" => "none",
1731
+ "pos_file" => "#{@tmp_dir}/tail.pos"
1732
+ })
1733
+
1734
+ plugin = create_driver(config, false).instance
1735
+ assert_equal(expected_files, plugin.expand_paths.values.sort_by { |path_ino| path_ino.path })
1736
+ end
1737
+
1738
+ def test_unwatched_files_should_be_removed
1739
+ config = config_element("", "", {
1740
+ "tag" => "tail",
1741
+ "path" => "#{@tmp_dir}/*.txt",
1742
+ "format" => "none",
1743
+ "pos_file" => "#{@tmp_dir}/tail.pos",
1744
+ "read_from_head" => true,
1745
+ "refresh_interval" => 1,
1746
+ })
1747
+ d = create_driver(config, false)
1748
+ d.end_if { d.instance.instance_variable_get(:@tails).keys.size >= 1 }
1749
+ d.run(expect_emits: 1, shutdown: false) do
1750
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "ab") { |f| f.puts "test3\n" }
1751
+ end
1752
+
1753
+ cleanup_file("#{@tmp_dir}/tail.txt")
1754
+ waiting(20) { sleep 0.1 until Dir.glob("#{@tmp_dir}/*.txt").size == 0 } # Ensure file is deleted on Windows
1755
+ waiting(5) { sleep 0.1 until d.instance.instance_variable_get(:@tails).keys.size <= 0 }
1756
+
1757
+ assert_equal(
1758
+ {
1759
+ files: [],
1760
+ tails: []
1761
+ },
1762
+ {
1763
+ files: Dir.glob("#{@tmp_dir}/*.txt"),
1764
+ tails: d.instance.instance_variable_get(:@tails).keys
1765
+ }
1766
+ )
1767
+ ensure
1768
+ d.instance_shutdown if d && d.instance
1769
+ cleanup_directory(@tmp_dir)
1770
+ end
1771
+
1772
+ def count_timer_object
1773
+ num = 0
1774
+ ObjectSpace.each_object(Fluent::PluginHelper::Timer::TimerWatcher) { |obj|
1775
+ num += 1
1776
+ }
1777
+ num
1778
+ end
1779
+ end
1780
+
1781
+ sub_test_case "path w/ Linux capability" do
1782
+ def capability_enabled?
1783
+ if Fluent.linux?
1784
+ begin
1785
+ require 'capng'
1786
+ true
1787
+ rescue LoadError
1788
+ false
1789
+ end
1790
+ else
1791
+ false
1792
+ end
1793
+ end
1794
+
1795
+ setup do
1796
+ omit "This environment is not enabled Linux capability handling feature" unless capability_enabled?
1797
+
1798
+ @capng = CapNG.new(:current_process)
1799
+ flexstub(Fluent::Capability) do |klass|
1800
+ klass.should_receive(:new).with(:current_process).and_return(@capng)
1801
+ end
1802
+ end
1803
+
1804
+ data("dac_read_search" => [:dac_read_search, true, 1],
1805
+ "dac_override" => [:dac_override, true, 1],
1806
+ "chown" => [:chown, false, 0],
1807
+ )
1808
+ test "with partially elevated privileges" do |data|
1809
+ cap, result, readable_paths = data
1810
+ @capng.update(:add, :effective, cap)
1811
+
1812
+ d = create_driver(
1813
+ config_element("ROOT", "", {
1814
+ "path" => "/var/log/ker*.log", # Use /var/log/kern.log
1815
+ "tag" => "t1",
1816
+ "rotate_wait" => "2s"
1817
+ }) + PARSE_SINGLE_LINE_CONFIG, false)
1818
+
1819
+ assert_equal(readable_paths, d.instance.expand_paths.length)
1820
+ assert_equal(result, d.instance.have_read_capability?)
1821
+ end
1822
+ end
1823
+
1824
+ def test_pos_file_dir_creation
1825
+ config = config_element("", "", {
1826
+ "tag" => "tail",
1827
+ "path" => "#{@tmp_dir}/*.txt",
1828
+ "format" => "none",
1829
+ "pos_file" => "#{@tmp_dir}/pos/tail.pos",
1830
+ "read_from_head" => true,
1831
+ "refresh_interval" => 1
1832
+ })
1833
+
1834
+ assert_path_not_exist("#{@tmp_dir}/pos")
1835
+ d = create_driver(config, false)
1836
+ d.run
1837
+ assert_path_exist("#{@tmp_dir}/pos")
1838
+ assert_equal('755', File.stat("#{@tmp_dir}/pos").mode.to_s(8)[-3, 3])
1839
+ ensure
1840
+ cleanup_directory(@tmp_dir)
1841
+ end
1842
+
1843
+ def test_pos_file_dir_creation_with_system_dir_permission
1844
+ config = config_element("", "", {
1845
+ "tag" => "tail",
1846
+ "path" => "#{@tmp_dir}/*.txt",
1847
+ "format" => "none",
1848
+ "pos_file" => "#{@tmp_dir}/pos/tail.pos",
1849
+ "read_from_head" => true,
1850
+ "refresh_interval" => 1
1851
+ })
1852
+
1853
+ assert_path_not_exist("#{@tmp_dir}/pos")
1854
+
1855
+ Fluent::SystemConfig.overwrite_system_config({ "dir_permission" => "744" }) do
1856
+ d = create_driver(config, false)
1857
+ d.run
1858
+ end
1859
+
1860
+ assert_path_exist("#{@tmp_dir}/pos")
1861
+ if Fluent.windows?
1862
+ assert_equal('755', File.stat("#{@tmp_dir}/pos").mode.to_s(8)[-3, 3])
1863
+ else
1864
+ assert_equal('744', File.stat("#{@tmp_dir}/pos").mode.to_s(8)[-3, 3])
1865
+ end
1866
+ ensure
1867
+ cleanup_directory(@tmp_dir)
1868
+ end
1869
+
1870
+ def test_z_refresh_watchers
1871
+ ex_paths = [
1872
+ create_target_info('test/plugin/data/2010/01/20100102-030405.log'),
1873
+ create_target_info('test/plugin/data/log/foo/bar.log'),
1874
+ create_target_info('test/plugin/data/log/test.log'),
1875
+ ]
1876
+ plugin = create_driver(ex_config, false).instance
1877
+ sio = StringIO.new
1878
+ plugin.instance_eval do
1879
+ @pf = Fluent::Plugin::TailInput::PositionFile.load(sio, EX_FOLLOW_INODES, {}, logger: $log)
1880
+ @loop = Coolio::Loop.new
1881
+ opened_file_metrics = Fluent::Plugin::LocalMetrics.new
1882
+ opened_file_metrics.configure(config_element('metrics', '', {}))
1883
+ closed_file_metrics = Fluent::Plugin::LocalMetrics.new
1884
+ closed_file_metrics.configure(config_element('metrics', '', {}))
1885
+ rotated_file_metrics = Fluent::Plugin::LocalMetrics.new
1886
+ rotated_file_metrics.configure(config_element('metrics', '', {}))
1887
+ @metrics = Fluent::Plugin::TailInput::MetricsInfo.new(opened_file_metrics, closed_file_metrics, rotated_file_metrics)
1888
+ end
1889
+
1890
+ Timecop.freeze(2010, 1, 2, 3, 4, 5) do
1891
+ ex_paths.each do |target_info|
1892
+ mock.proxy(Fluent::Plugin::TailInput::TailWatcher).new(target_info, anything, anything, true, false, anything, nil, anything, anything).once
1893
+ end
1894
+
1895
+ plugin.refresh_watchers
1896
+ end
1897
+
1898
+ path = 'test/plugin/data/2010/01/20100102-030405.log'
1899
+ mock.proxy(plugin).detach_watcher_after_rotate_wait(plugin.instance_variable_get(:@tails)[path], Fluent::FileWrapper.stat(path).ino)
1900
+
1901
+ Timecop.freeze(2010, 1, 2, 3, 4, 6) do
1902
+ path = "test/plugin/data/2010/01/20100102-030406.log"
1903
+ inode = Fluent::FileWrapper.stat(path).ino
1904
+ target_info = Fluent::Plugin::TailInput::TargetInfo.new(path, inode)
1905
+ mock.proxy(Fluent::Plugin::TailInput::TailWatcher).new(target_info, anything, anything, true, false, anything, nil, anything, anything).once
1906
+ plugin.refresh_watchers
1907
+
1908
+ flexstub(Fluent::Plugin::TailInput::TailWatcher) do |watcherclass|
1909
+ watcherclass.should_receive(:new).never
1910
+ plugin.refresh_watchers
1911
+ end
1912
+ end
1913
+ end
1914
+
1915
+ sub_test_case "refresh of pos file" do
1916
+ test 'type of pos_file_compaction_interval is time' do
1917
+ tail = {
1918
+ "tag" => "tail",
1919
+ "path" => "#{@tmp_dir}/*.txt",
1920
+ "format" => "none",
1921
+ "pos_file" => "#{@tmp_dir}/pos/tail.pos",
1922
+ "refresh_interval" => 1,
1923
+ "read_from_head" => true,
1924
+ 'pos_file_compaction_interval' => '24h',
1925
+ }
1926
+ config = config_element("", "", tail)
1927
+ d = create_driver(config, false)
1928
+ mock(d.instance).timer_execute(:in_tail_refresh_watchers, 1.0).once
1929
+ mock(d.instance).timer_execute(:in_tail_refresh_compact_pos_file, 60 * 60 * 24).once
1930
+ d.run # call start
1931
+ end
1932
+ end
1933
+
1934
+ sub_test_case "receive_lines" do
1935
+ DummyWatcher = Struct.new("DummyWatcher", :tag)
1936
+
1937
+ def test_tag
1938
+ d = create_driver(ex_config, false)
1939
+ d.run {}
1940
+ plugin = d.instance
1941
+ mock(plugin.router).emit_stream('tail', anything).once
1942
+ plugin.receive_lines(['foo', 'bar'], DummyWatcher.new('foo.bar.log'))
1943
+ end
1944
+
1945
+ def test_tag_with_only_star
1946
+ config = config_element("", "", {
1947
+ "tag" => "*",
1948
+ "path" => "test/plugin/*/%Y/%m/%Y%m%d-%H%M%S.log,test/plugin/data/log/**/*.log",
1949
+ "format" => "none",
1950
+ "read_from_head" => true
1951
+ })
1952
+ d = create_driver(config, false)
1953
+ d.run {}
1954
+ plugin = d.instance
1955
+ mock(plugin.router).emit_stream('foo.bar.log', anything).once
1956
+ plugin.receive_lines(['foo', 'bar'], DummyWatcher.new('foo.bar.log'))
1957
+ end
1958
+
1959
+ def test_tag_prefix
1960
+ config = config_element("", "", {
1961
+ "tag" => "pre.*",
1962
+ "path" => "test/plugin/*/%Y/%m/%Y%m%d-%H%M%S.log,test/plugin/data/log/**/*.log",
1963
+ "format" => "none",
1964
+ "read_from_head" => true
1965
+ })
1966
+ d = create_driver(config, false)
1967
+ d.run {}
1968
+ plugin = d.instance
1969
+ mock(plugin.router).emit_stream('pre.foo.bar.log', anything).once
1970
+ plugin.receive_lines(['foo', 'bar'], DummyWatcher.new('foo.bar.log'))
1971
+ end
1972
+
1973
+ def test_tag_suffix
1974
+ config = config_element("", "", {
1975
+ "tag" => "*.post",
1976
+ "path" => "test/plugin/*/%Y/%m/%Y%m%d-%H%M%S.log,test/plugin/data/log/**/*.log",
1977
+ "format" => "none",
1978
+ "read_from_head" => true
1979
+ })
1980
+ d = create_driver(config, false)
1981
+ d.run {}
1982
+ plugin = d.instance
1983
+ mock(plugin.router).emit_stream('foo.bar.log.post', anything).once
1984
+ plugin.receive_lines(['foo', 'bar'], DummyWatcher.new('foo.bar.log'))
1985
+ end
1986
+
1987
+ def test_tag_prefix_and_suffix
1988
+ config = config_element("", "", {
1989
+ "tag" => "pre.*.post",
1990
+ "path" => "test/plugin/*/%Y/%m/%Y%m%d-%H%M%S.log,test/plugin/data/log/**/*.log",
1991
+ "format" => "none",
1992
+ "read_from_head" => true
1993
+ })
1994
+ d = create_driver(config, false)
1995
+ d.run {}
1996
+ plugin = d.instance
1997
+ mock(plugin.router).emit_stream('pre.foo.bar.log.post', anything).once
1998
+ plugin.receive_lines(['foo', 'bar'], DummyWatcher.new('foo.bar.log'))
1999
+ end
2000
+
2001
+ def test_tag_prefix_and_suffix_ignore
2002
+ config = config_element("", "", {
2003
+ "tag" => "pre.*.post*ignore",
2004
+ "path" => "test/plugin/*/%Y/%m/%Y%m%d-%H%M%S.log,test/plugin/data/log/**/*.log",
2005
+ "format" => "none",
2006
+ "read_from_head" => true
2007
+ })
2008
+ d = create_driver(config, false)
2009
+ d.run {}
2010
+ plugin = d.instance
2011
+ mock(plugin.router).emit_stream('pre.foo.bar.log.post', anything).once
2012
+ plugin.receive_lines(['foo', 'bar'], DummyWatcher.new('foo.bar.log'))
2013
+ end
2014
+
2015
+ data(
2016
+ small: ["128", 128],
2017
+ KiB: ["1k", 1024]
2018
+ )
2019
+ test 'max_line_size' do |(label, size)|
2020
+ config = config_element("", "", {
2021
+ "tag" => "max_line_size",
2022
+ "path" => "#{@tmp_dir}/with_long_lines.txt",
2023
+ "format" => "none",
2024
+ "read_from_head" => true,
2025
+ "max_line_size" => label,
2026
+ "log_level" => "debug"
2027
+ })
2028
+ Fluent::FileWrapper.open("#{@tmp_dir}/with_long_lines.txt", "w+") do |f|
2029
+ f.puts "foo"
2030
+ f.puts "x" * size # 'x' * size + \n > @max_line_size
2031
+ f.puts "bar"
2032
+ end
2033
+ d = create_driver(config, false)
2034
+ timestamp = Time.parse("Mon Nov 29 11:22:33 UTC 2021")
2035
+ Timecop.freeze(timestamp)
2036
+ d.run(expect_records: 2)
2037
+ assert_equal([
2038
+ [{"message" => "foo"},{"message" => "bar"}],
2039
+ [
2040
+ "2021-11-29 11:22:33 +0000 [warn]: received line length is longer than #{size}\n",
2041
+ "2021-11-29 11:22:33 +0000 [debug]: skipped line: #{'x' * size}\n"
2042
+ ]
2043
+ ],
2044
+ [
2045
+ d.events.collect { |event| event.last },
2046
+ d.logs[-2..]
2047
+ ])
2048
+ end
2049
+ end
2050
+
2051
+ # Ensure that no fatal exception is raised when a file is missing and that
2052
+ # files that do exist are still tailed as expected.
2053
+ def test_missing_file
2054
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "wb") {|f|
2055
+ f.puts "test1"
2056
+ f.puts "test2"
2057
+ }
2058
+
2059
+ # Try two different configs - one with read_from_head and one without,
2060
+ # since their interactions with the filesystem differ.
2061
+ config1 = config_element("", "", {
2062
+ "tag" => "t1",
2063
+ "path" => "#{@tmp_dir}/non_existent_file.txt,#{@tmp_dir}/tail.txt",
2064
+ "format" => "none",
2065
+ "rotate_wait" => "2s",
2066
+ "pos_file" => "#{@tmp_dir}/tail.pos"
2067
+ })
2068
+ config2 = config1 + config_element("", "", { "read_from_head" => true })
2069
+ [config1, config2].each do |config|
2070
+ d = create_driver(config, false)
2071
+ d.run(expect_emits: 1) do
2072
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "ab") {|f|
2073
+ f.puts "test3"
2074
+ f.puts "test4"
2075
+ }
2076
+ end
2077
+ # This test sometimes fails and it shows a potential bug of in_tail
2078
+ # https://github.com/fluent/fluentd/issues/1434
2079
+ events = d.events
2080
+ assert_equal(2, events.length)
2081
+ assert_equal({"message" => "test3"}, events[0][2])
2082
+ assert_equal({"message" => "test4"}, events[1][2])
2083
+ end
2084
+ end
2085
+
2086
+ sub_test_case 'inode_processing' do
2087
+ def test_should_delete_file_pos_entry_for_non_existing_file_with_follow_inodes
2088
+ config = common_follow_inode_config
2089
+
2090
+ path = "#{@tmp_dir}/tail.txt"
2091
+ ino = 1
2092
+ pos = 1234
2093
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.pos", "wb") {|f|
2094
+ f.puts ("%s\t%016x\t%016x\n" % [path, pos, ino])
2095
+ }
2096
+
2097
+ d = create_driver(config, false)
2098
+ d.run
2099
+
2100
+ pos_file = Fluent::FileWrapper.open("#{@tmp_dir}/tail.pos", "r")
2101
+ pos_file.pos = 0
2102
+
2103
+ assert_raise(EOFError) do
2104
+ pos_file.readline
2105
+ end
2106
+ end
2107
+
2108
+ def test_should_write_latest_offset_after_rotate_wait
2109
+ config = common_follow_inode_config
2110
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "wb") {|f|
2111
+ f.puts "test1"
2112
+ f.puts "test2"
2113
+ }
2114
+
2115
+ d = create_driver(config, false)
2116
+ d.run(expect_emits: 2, shutdown: false) do
2117
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "ab") {|f| f.puts "test3\n"}
2118
+ FileUtils.move("#{@tmp_dir}/tail.txt", "#{@tmp_dir}/tail.txt" + "1")
2119
+ sleep 1
2120
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt" + "1", "ab") {|f| f.puts "test4\n"}
2121
+ end
2122
+
2123
+ pos_file = Fluent::FileWrapper.open("#{@tmp_dir}/tail.pos", "r")
2124
+ pos_file.pos = 0
2125
+ line_parts = /^([^\t]+)\t([0-9a-fA-F]+)\t([0-9a-fA-F]+)/.match(pos_file.readline)
2126
+ waiting(5) {
2127
+ while line_parts[2].to_i(16) != 24
2128
+ sleep(0.1)
2129
+ pos_file.pos = 0
2130
+ line_parts = /^([^\t]+)\t([0-9a-fA-F]+)\t([0-9a-fA-F]+)/.match(pos_file.readline)
2131
+ end
2132
+ }
2133
+ assert_equal(24, line_parts[2].to_i(16))
2134
+ d.instance_shutdown
2135
+ end
2136
+
2137
+ def test_should_remove_deleted_file
2138
+ config = config_element("", "", {"format" => "none"})
2139
+
2140
+ path = "#{@tmp_dir}/tail.txt"
2141
+ ino = 1
2142
+ pos = 1234
2143
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.pos", "wb") {|f|
2144
+ f.puts ("%s\t%016x\t%016x\n" % [path, pos, ino])
2145
+ }
2146
+
2147
+ d = create_driver(config)
2148
+ d.run do
2149
+ pos_file = Fluent::FileWrapper.open("#{@tmp_dir}/tail.pos", "r")
2150
+ pos_file.pos = 0
2151
+ assert_equal([], pos_file.readlines)
2152
+ end
2153
+ end
2154
+
2155
+ def test_should_mark_file_unwatched_after_limit_recently_modified_and_rotate_wait
2156
+ config = config_element("ROOT", "", {
2157
+ "path" => "#{@tmp_dir}/tail.txt*",
2158
+ "pos_file" => "#{@tmp_dir}/tail.pos",
2159
+ "tag" => "t1",
2160
+ "rotate_wait" => "1s",
2161
+ "refresh_interval" => "1s",
2162
+ "limit_recently_modified" => "1s",
2163
+ "read_from_head" => "true",
2164
+ "format" => "none",
2165
+ "follow_inodes" => "true",
2166
+ })
2167
+
2168
+ d = create_driver(config, false)
2169
+
2170
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "wb") {|f|
2171
+ f.puts "test1"
2172
+ f.puts "test2"
2173
+ }
2174
+ target_info = create_target_info("#{@tmp_dir}/tail.txt")
2175
+
2176
+ d.run(expect_emits: 1, shutdown: false) do
2177
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "ab") {|f| f.puts "test3\n"}
2178
+ end
2179
+
2180
+
2181
+ Timecop.travel(Time.now + 10) do
2182
+ waiting(5) {
2183
+ # @pos will be reset as 0 when UNWATCHED_POSITION is specified.
2184
+ sleep 0.1 until d.instance.instance_variable_get(:@pf)[target_info].read_pos == 0
2185
+ }
2186
+ end
2187
+
2188
+ assert_equal(0, d.instance.instance_variable_get(:@pf)[target_info].read_pos)
2189
+
2190
+ d.instance_shutdown
2191
+ end
2192
+
2193
+ def test_should_read_from_head_on_file_renaming_with_star_in_pattern
2194
+ config = config_element("ROOT", "", {
2195
+ "path" => "#{@tmp_dir}/tail.txt*",
2196
+ "pos_file" => "#{@tmp_dir}/tail.pos",
2197
+ "tag" => "t1",
2198
+ "rotate_wait" => "10s",
2199
+ "refresh_interval" => "1s",
2200
+ "limit_recently_modified" => "60s",
2201
+ "read_from_head" => "true",
2202
+ "format" => "none",
2203
+ "follow_inodes" => "true"
2204
+ })
2205
+
2206
+ d = create_driver(config, false)
2207
+
2208
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "wb") {|f|
2209
+ f.puts "test1"
2210
+ f.puts "test2"
2211
+ }
2212
+
2213
+ d.run(expect_emits: 2, shutdown: false) do
2214
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "ab") {|f| f.puts "test3\n"}
2215
+ FileUtils.move("#{@tmp_dir}/tail.txt", "#{@tmp_dir}/tail.txt1")
2216
+ end
2217
+
2218
+ events = d.events
2219
+ assert_equal(3, events.length)
2220
+ d.instance_shutdown
2221
+ end
2222
+
2223
+ def test_should_not_read_from_head_on_rotation_when_watching_inodes
2224
+ config = common_follow_inode_config
2225
+
2226
+ d = create_driver(config, false)
2227
+
2228
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "wb") {|f|
2229
+ f.puts "test1"
2230
+ f.puts "test2"
2231
+ }
2232
+
2233
+ d.run(expect_emits: 1, shutdown: false) do
2234
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "ab") {|f| f.puts "test3\n"}
2235
+ end
2236
+
2237
+ FileUtils.move("#{@tmp_dir}/tail.txt", "#{@tmp_dir}/tail.txt1")
2238
+ Timecop.travel(Time.now + 10) do
2239
+ sleep 2
2240
+ events = d.events
2241
+ assert_equal(3, events.length)
2242
+ end
2243
+
2244
+ d.instance_shutdown
2245
+ end
2246
+
2247
+ def test_should_mark_file_unwatched_if_same_name_file_created_with_different_inode
2248
+ config = common_follow_inode_config
2249
+
2250
+ d = create_driver(config, false)
2251
+
2252
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "wb") {|f|
2253
+ f.puts "test1"
2254
+ f.puts "test2"
2255
+ }
2256
+ target_info = create_target_info("#{@tmp_dir}/tail.txt")
2257
+
2258
+ d.run(expect_emits: 2, shutdown: false) do
2259
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "ab") {|f| f.puts "test3\n"}
2260
+ cleanup_file("#{@tmp_dir}/tail.txt")
2261
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "wb") {|f| f.puts "test4\n"}
2262
+ end
2263
+
2264
+ new_target_info = create_target_info("#{@tmp_dir}/tail.txt")
2265
+
2266
+ pos_file = d.instance.instance_variable_get(:@pf)
2267
+
2268
+ waiting(10) {
2269
+ # @pos will be reset as 0 when UNWATCHED_POSITION is specified.
2270
+ sleep 0.1 until pos_file[target_info].read_pos == 0
2271
+ }
2272
+ new_position = pos_file[new_target_info].read_pos
2273
+ assert_equal(6, new_position)
2274
+
2275
+ d.instance_shutdown
2276
+ end
2277
+
2278
+ def test_should_close_watcher_after_rotate_wait
2279
+ now = Time.now
2280
+ config = common_follow_inode_config + config_element('', '', {"rotate_wait" => "1s", "limit_recently_modified" => "1s"})
2281
+
2282
+ d = create_driver(config, false)
2283
+ d.instance.instance_eval do
2284
+ opened_file_metrics = Fluent::Plugin::LocalMetrics.new
2285
+ opened_file_metrics.configure(config_element('metrics', '', {}))
2286
+ closed_file_metrics = Fluent::Plugin::LocalMetrics.new
2287
+ closed_file_metrics.configure(config_element('metrics', '', {}))
2288
+ rotated_file_metrics = Fluent::Plugin::LocalMetrics.new
2289
+ rotated_file_metrics.configure(config_element('metrics', '', {}))
2290
+ @metrics = Fluent::Plugin::TailInput::MetricsInfo.new(opened_file_metrics, closed_file_metrics, rotated_file_metrics)
2291
+ end
2292
+
2293
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "wb") {|f|
2294
+ f.puts "test1"
2295
+ f.puts "test2"
2296
+ }
2297
+ target_info = create_target_info("#{@tmp_dir}/tail.txt")
2298
+ mock.proxy(Fluent::Plugin::TailInput::TailWatcher).new(target_info, anything, anything, true, true, anything, nil, anything, anything).once
2299
+ d.run(shutdown: false)
2300
+ assert d.instance.instance_variable_get(:@tails)[target_info.path]
2301
+
2302
+ Timecop.travel(now + 10) do
2303
+ d.instance.instance_eval do
2304
+ sleep 0.1 until @tails[target_info.path] == nil
2305
+ end
2306
+ assert_nil d.instance.instance_variable_get(:@tails)[target_info.path]
2307
+ end
2308
+ d.instance_shutdown
2309
+ end
2310
+
2311
+ def test_should_create_new_watcher_for_new_file_with_same_name
2312
+ now = Time.now
2313
+ config = common_follow_inode_config + config_element('', '', {"limit_recently_modified" => "2s"})
2314
+
2315
+ d = create_driver(config, false)
2316
+
2317
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "wb") {|f|
2318
+ f.puts "test1"
2319
+ f.puts "test2"
2320
+ }
2321
+ path_ino = create_target_info("#{@tmp_dir}/tail.txt")
2322
+
2323
+ d.run(expect_emits: 1, shutdown: false) do
2324
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "ab") {|f| f.puts "test3\n"}
2325
+ end
2326
+
2327
+ cleanup_file("#{@tmp_dir}/tail.txt")
2328
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "wb") {|f|
2329
+ f.puts "test3"
2330
+ f.puts "test4"
2331
+ }
2332
+ new_path_ino = create_target_info("#{@tmp_dir}/tail.txt")
2333
+
2334
+ Timecop.travel(now + 10) do
2335
+ sleep 3
2336
+ d.instance.instance_eval do
2337
+ @tails[path_ino.path] == nil
2338
+ @tails[new_path_ino.path] != nil
2339
+ end
2340
+ end
2341
+
2342
+ events = d.events
2343
+
2344
+ assert_equal(5, events.length)
2345
+
2346
+ d.instance_shutdown
2347
+ end
2348
+
2349
+ def test_truncate_file_with_follow_inodes
2350
+ config = common_follow_inode_config
2351
+
2352
+ d = create_driver(config, false)
2353
+
2354
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "wb") {|f|
2355
+ f.puts "test1"
2356
+ f.puts "test2"
2357
+ }
2358
+
2359
+ d.run(expect_emits: 3, shutdown: false) do
2360
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "ab") {|f| f.puts "test3\n"}
2361
+ sleep 2
2362
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "w+b") {|f| f.puts "test4\n"}
2363
+ end
2364
+
2365
+ events = d.events
2366
+ assert_equal(4, events.length)
2367
+ assert_equal({"message" => "test1"}, events[0][2])
2368
+ assert_equal({"message" => "test2"}, events[1][2])
2369
+ assert_equal({"message" => "test3"}, events[2][2])
2370
+ assert_equal({"message" => "test4"}, events[3][2])
2371
+ d.instance_shutdown
2372
+ end
2373
+
2374
+ # issue #3464
2375
+ def test_should_replace_target_info
2376
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "wb") {|f|
2377
+ f.puts "test1\n"
2378
+ }
2379
+ target_info = create_target_info("#{@tmp_dir}/tail.txt")
2380
+ inodes = []
2381
+
2382
+ config = config_element("ROOT", "", {
2383
+ "path" => "#{@tmp_dir}/tail.txt*",
2384
+ "pos_file" => "#{@tmp_dir}/tail.pos",
2385
+ "tag" => "t1",
2386
+ "refresh_interval" => "60s",
2387
+ "read_from_head" => "true",
2388
+ "format" => "none",
2389
+ "rotate_wait" => "1s",
2390
+ "follow_inodes" => "true"
2391
+ })
2392
+ d = create_driver(config, false)
2393
+ d.run(timeout: 5) do
2394
+ while d.events.size < 1 do
2395
+ sleep 0.1
2396
+ end
2397
+ inodes = d.instance.instance_variable_get(:@tails).values.collect do |tw|
2398
+ tw.ino
2399
+ end
2400
+ assert_equal([target_info.ino], inodes)
2401
+
2402
+ cleanup_file("#{@tmp_dir}/tail.txt")
2403
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "wb") {|f| f.puts "test2\n"}
2404
+
2405
+ while d.events.size < 2 do
2406
+ sleep 0.1
2407
+ end
2408
+ inodes = d.instance.instance_variable_get(:@tails).values.collect do |tw|
2409
+ tw.ino
2410
+ end
2411
+ new_target_info = create_target_info("#{@tmp_dir}/tail.txt")
2412
+ assert_not_equal(target_info.ino, new_target_info.ino)
2413
+ assert_equal([new_target_info.ino], inodes)
2414
+ end
2415
+ end
2416
+ end
2417
+
2418
+ sub_test_case "tail_path" do
2419
+ def test_tail_path_with_singleline
2420
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "wb") {|f|
2421
+ f.puts "test1"
2422
+ f.puts "test2"
2423
+ }
2424
+
2425
+ d = create_driver(SINGLE_LINE_CONFIG + config_element("", "", { "path_key" => "path" }))
2426
+
2427
+ d.run(expect_emits: 1) do
2428
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "ab") {|f|
2429
+ f.puts "test3"
2430
+ f.puts "test4"
2431
+ }
2432
+ end
2433
+
2434
+ events = d.events
2435
+ assert_equal(true, events.length > 0)
2436
+ events.each do |emit|
2437
+ assert_equal("#{@tmp_dir}/tail.txt", emit[2]["path"])
2438
+ end
2439
+ end
2440
+
2441
+ def test_tail_path_with_multiline_with_firstline
2442
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "wb") { |f| }
2443
+
2444
+ config = config_element("", "", {
2445
+ "path_key" => "path",
2446
+ "format" => "multiline",
2447
+ "format1" => "/^s (?<message1>[^\\n]+)(\\nf (?<message2>[^\\n]+))?(\\nf (?<message3>.*))?/",
2448
+ "format_firstline" => "/^[s]/"
2449
+ })
2450
+ d = create_driver(config)
2451
+ d.run(expect_emits: 1) do
2452
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "ab") { |f|
2453
+ f.puts "f test1"
2454
+ f.puts "s test2"
2455
+ f.puts "f test3"
2456
+ f.puts "f test4"
2457
+ f.puts "s test5"
2458
+ f.puts "s test6"
2459
+ f.puts "f test7"
2460
+ f.puts "s test8"
2461
+ }
2462
+ end
2463
+
2464
+ events = d.events
2465
+ assert_equal(4, events.length)
2466
+ events.each do |emit|
2467
+ assert_equal("#{@tmp_dir}/tail.txt", emit[2]["path"])
2468
+ end
2469
+ end
2470
+
2471
+ def test_tail_path_with_multiline_without_firstline
2472
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "wb") { |f| }
2473
+
2474
+ config = config_element("", "", {
2475
+ "path_key" => "path",
2476
+ "format" => "multiline",
2477
+ "format1" => "/(?<var1>foo \\d)\\n/",
2478
+ "format2" => "/(?<var2>bar \\d)\\n/",
2479
+ "format3" => "/(?<var3>baz \\d)/",
2480
+ })
2481
+ d = create_driver(config)
2482
+ d.run(expect_emits: 1) do
2483
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "ab") { |f|
2484
+ f.puts "foo 1"
2485
+ f.puts "bar 1"
2486
+ f.puts "baz 1"
2487
+ }
2488
+ end
2489
+
2490
+ events = d.events
2491
+ assert(events.length > 0)
2492
+ events.each do |emit|
2493
+ assert_equal("#{@tmp_dir}/tail.txt", emit[2]["path"])
2494
+ end
2495
+ end
2496
+
2497
+ def test_tail_path_with_multiline_with_multiple_paths
2498
+ if ENV["APPVEYOR"] && Fluent.windows?
2499
+ omit "This testcase is unstable on AppVeyor."
2500
+ end
2501
+ files = ["#{@tmp_dir}/tail1.txt", "#{@tmp_dir}/tail2.txt"]
2502
+ files.each { |file| Fluent::FileWrapper.open(file, "wb") { |f| } }
2503
+
2504
+ config = config_element("", "", {
2505
+ "path" => "#{files[0]},#{files[1]}",
2506
+ "path_key" => "path",
2507
+ "tag" => "t1",
2508
+ "format" => "multiline",
2509
+ "format1" => "/^[s|f] (?<message>.*)/",
2510
+ "format_firstline" => "/^[s]/"
2511
+ })
2512
+ d = create_driver(config, false)
2513
+ d.run(expect_emits: 2) do
2514
+ files.each do |file|
2515
+ Fluent::FileWrapper.open(file, 'ab') { |f|
2516
+ f.puts "f #{file} line should be ignored"
2517
+ f.puts "s test1"
2518
+ f.puts "f test2"
2519
+ f.puts "f test3"
2520
+ f.puts "s test4"
2521
+ }
2522
+ end
2523
+ end
2524
+
2525
+ events = d.events
2526
+ assert_equal(4, events.length)
2527
+ assert_equal(files, [events[0][2]["path"], events[1][2]["path"]].sort)
2528
+ # "test4" events are here because these events are flushed at shutdown phase
2529
+ assert_equal(files, [events[2][2]["path"], events[3][2]["path"]].sort)
2530
+ end
2531
+ end
2532
+
2533
+ def test_limit_recently_modified
2534
+ now = Time.new(2010, 1, 2, 3, 4, 5)
2535
+ FileUtils.touch("#{@tmp_dir}/tail_unwatch.txt", mtime: (now - 3601))
2536
+ FileUtils.touch("#{@tmp_dir}/tail_watch1.txt", mtime: (now - 3600))
2537
+ FileUtils.touch("#{@tmp_dir}/tail_watch2.txt", mtime: now)
2538
+
2539
+ config = config_element('', '', {
2540
+ 'tag' => 'tail',
2541
+ 'path' => "#{@tmp_dir}/*.txt",
2542
+ 'format' => 'none',
2543
+ 'limit_recently_modified' => '3600s'
2544
+ })
2545
+
2546
+ expected_files = [
2547
+ create_target_info("#{@tmp_dir}/tail_watch1.txt"),
2548
+ create_target_info("#{@tmp_dir}/tail_watch2.txt")
2549
+ ]
2550
+
2551
+ Timecop.freeze(now) do
2552
+ plugin = create_driver(config, false).instance
2553
+ assert_equal(expected_files, plugin.expand_paths.values.sort_by { |path_ino| path_ino.path })
2554
+ end
2555
+ end
2556
+
2557
+ def test_skip_refresh_on_startup
2558
+ FileUtils.touch("#{@tmp_dir}/tail.txt")
2559
+ config = config_element('', '', {
2560
+ 'format' => 'none',
2561
+ 'refresh_interval' => 1,
2562
+ 'skip_refresh_on_startup' => true
2563
+ })
2564
+ d = create_driver(config)
2565
+ d.run(shutdown: false) {}
2566
+ assert_equal(0, d.instance.instance_variable_get(:@tails).keys.size)
2567
+ # detect a file at first execution of in_tail_refresh_watchers timer
2568
+ waiting(5) { sleep 0.1 until d.instance.instance_variable_get(:@tails).keys.size == 1 }
2569
+ d.instance_shutdown
2570
+ end
2571
+
2572
+ def test_ENOENT_error_after_setup_watcher
2573
+ path = "#{@tmp_dir}/tail.txt"
2574
+ FileUtils.touch(path)
2575
+ config = config_element('', '', {
2576
+ 'format' => 'none',
2577
+ })
2578
+ d = create_driver(config)
2579
+ file_deleted = false
2580
+ mock.proxy(d.instance).existence_path do |hash|
2581
+ unless file_deleted
2582
+ cleanup_file(path)
2583
+ file_deleted = true
2584
+ end
2585
+ hash
2586
+ end.twice
2587
+ assert_nothing_raised do
2588
+ d.run(shutdown: false) {}
2589
+ end
2590
+ assert($log.out.logs.any?{|log| log.include?("stat() for #{path} failed. Continuing without tailing it.\n") },
2591
+ $log.out.logs.join("\n"))
2592
+ ensure
2593
+ d.instance_shutdown if d && d.instance
2594
+ end
2595
+
2596
+ def test_EACCES_error_after_setup_watcher
2597
+ omit "Cannot test with root user" if Process::UID.eid == 0
2598
+ path = "#{@tmp_dir}/noaccess/tail.txt"
2599
+ begin
2600
+ FileUtils.mkdir_p("#{@tmp_dir}/noaccess")
2601
+ FileUtils.chmod(0755, "#{@tmp_dir}/noaccess")
2602
+ FileUtils.touch(path)
2603
+ config = config_element('', '', {
2604
+ 'tag' => "tail",
2605
+ 'path' => path,
2606
+ 'format' => 'none',
2607
+ })
2608
+ d = create_driver(config, false)
2609
+ mock.proxy(d.instance).existence_path do |hash|
2610
+ FileUtils.chmod(0000, "#{@tmp_dir}/noaccess")
2611
+ hash
2612
+ end.twice
2613
+ assert_nothing_raised do
2614
+ d.run(shutdown: false) {}
2615
+ end
2616
+ assert($log.out.logs.any?{|log| log.include?("stat() for #{path} failed. Continuing without tailing it.\n") },
2617
+ $log.out.logs.join("\n"))
2618
+ end
2619
+ ensure
2620
+ d.instance_shutdown if d && d.instance
2621
+ if File.exist?("#{@tmp_dir}/noaccess")
2622
+ FileUtils.chmod(0755, "#{@tmp_dir}/noaccess")
2623
+ FileUtils.rm_rf("#{@tmp_dir}/noaccess")
2624
+ end
2625
+ end unless Fluent.windows?
2626
+
2627
+ def test_EACCES
2628
+ path = "#{@tmp_dir}/tail.txt"
2629
+ FileUtils.touch(path)
2630
+ config = config_element('', '', {
2631
+ 'format' => 'none',
2632
+ })
2633
+ d = create_driver(config)
2634
+ mock.proxy(Fluent::FileWrapper).stat(path) do |stat|
2635
+ raise Errno::EACCES
2636
+ end.at_least(1)
2637
+ assert_nothing_raised do
2638
+ d.run(shutdown: false) {}
2639
+ end
2640
+ assert($log.out.logs.any?{|log| log.include?("expand_paths: stat() for #{path} failed with Errno::EACCES. Skip file.\n") })
2641
+ ensure
2642
+ d.instance_shutdown if d && d.instance
2643
+ end
2644
+
2645
+ def test_shutdown_timeout
2646
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "wb") do |f|
2647
+ # Should be large enough to take too long time to consume
2648
+ (1024 * 1024 * 5).times do
2649
+ f.puts "{\"test\":\"fizzbuzz\"}"
2650
+ end
2651
+ end
2652
+
2653
+ config =
2654
+ CONFIG_READ_FROM_HEAD +
2655
+ config_element('', '', {
2656
+ 'format' => 'json',
2657
+ 'skip_refresh_on_startup' => true,
2658
+ })
2659
+ shutdown_start_time = 0
2660
+
2661
+ d = create_driver(config)
2662
+ mock.proxy(d.instance).io_handler(anything, anything) do |io_handler|
2663
+ mock.proxy(io_handler).ready_to_shutdown(anything) do
2664
+ shutdown_start_time = Fluent::Clock.now
2665
+ end
2666
+ io_handler.shutdown_timeout = 0.5
2667
+ io_handler
2668
+ end
2669
+
2670
+ assert_nothing_raised do
2671
+ d.run(expect_emits: 1)
2672
+ end
2673
+
2674
+ elapsed = Fluent::Clock.now - shutdown_start_time
2675
+ assert_true(elapsed > 0.5 && elapsed < 2.0,
2676
+ "elapsed time: #{elapsed}")
2677
+ end
2678
+
2679
+ sub_test_case "throttling logs at in_tail level" do
2680
+ data("file test1.log no_limit 5120 text: msg" => ["test1.log", 5120, "msg"],
2681
+ "file test2.log no_limit 1024 text: test" => ["test2.log", 1024, "test"])
2682
+ def test_lines_collected_with_no_throttling(data)
2683
+ file, num_lines, msg = data
2684
+
2685
+ pattern = "/^#{@tmp_dir}\/(?<file>.+)\.log$/"
2686
+ rule = create_rule_directive({
2687
+ "file" => "/test.*/",
2688
+ }, -1)
2689
+ group = create_group_directive(pattern, "1s", rule)
2690
+ path_element = create_path_element(file)
2691
+
2692
+ conf = ROOT_CONFIG + group + path_element + CONFIG_READ_FROM_HEAD + SINGLE_LINE_CONFIG
2693
+
2694
+ Fluent::FileWrapper.open("#{@tmp_dir}/#{file}", 'wb') do |f|
2695
+ num_lines.times do
2696
+ f.puts "#{msg}\n"
2697
+ end
2698
+ end
2699
+
2700
+
2701
+ d = create_driver(conf, false)
2702
+ d.run(timeout: 3) do
2703
+ start_time = Fluent::Clock.now
2704
+
2705
+ assert_equal(num_lines, d.record_count)
2706
+ assert_equal({ "message" => msg }, d.events[0][2])
2707
+
2708
+ prev_count = d.record_count
2709
+ sleep(0.1) while d.emit_count < 1
2710
+ assert_true(Fluent::Clock.now - start_time < 2)
2711
+ ## after waiting for 1 (+ jitter) secs, limit will reset
2712
+ ## Plugin will start reading but it will encounter EOF Error
2713
+ ## since no logs are left to be read
2714
+ ## Hence, d.record_count = prev_count
2715
+ tail_watcher_interval = 1.0 # hard coded value in in_tail
2716
+ safety_ratio = 1.2
2717
+ jitter = tail_watcher_interval * safety_ratio
2718
+ sleep(1.0 + jitter)
2719
+ assert_equal(0, d.record_count - prev_count)
2720
+ end
2721
+ end
2722
+
2723
+ test "lines collected with throttling" do
2724
+ file = "podname1_namespace12_container-123456.log"
2725
+ limit = 1000
2726
+ rate_period = 2
2727
+ num_lines = 3000
2728
+ msg = "a" * 8190 # Total size = 8190 bytes + 2 (\n) bytes
2729
+
2730
+ rule = create_rule_directive({
2731
+ "namespace"=> "/namespace.+/",
2732
+ "podname"=> "/podname.+/",
2733
+ }, limit)
2734
+ path_element = create_path_element(file)
2735
+ conf = ROOT_CONFIG + create_group_directive(tailing_group_pattern, "#{rate_period}s", rule) + path_element + SINGLE_LINE_CONFIG + CONFIG_READ_FROM_HEAD
2736
+
2737
+ d = create_driver(conf, false)
2738
+ file_path = "#{@tmp_dir}/#{file}"
2739
+
2740
+ Fluent::FileWrapper.open(file_path, 'wb') do |f|
2741
+ num_lines.times do
2742
+ f.puts msg
2743
+ end
2744
+ end
2745
+
2746
+ d.run(timeout: 15) do
2747
+ sleep_interval = 0.1
2748
+ tail_watcher_interval = 1.0 # hard coded value in in_tail
2749
+ safety_ratio = 1.2
2750
+ lower_jitter = sleep_interval * safety_ratio
2751
+ upper_jitter = (tail_watcher_interval + sleep_interval) * safety_ratio
2752
+ lower_interval = rate_period - lower_jitter
2753
+ upper_interval = rate_period + upper_jitter
2754
+
2755
+ emit_count = 0
2756
+ prev_count = 0
2757
+
2758
+ while emit_count < 3 do
2759
+ start_time = Fluent::Clock.now
2760
+ sleep(sleep_interval) while d.emit_count <= emit_count
2761
+ elapsed_seconds = Fluent::Clock.now - start_time
2762
+ if emit_count > 0
2763
+ assert_true(elapsed_seconds > lower_interval && elapsed_seconds < upper_interval,
2764
+ "elapsed_seconds #{elapsed_seconds} is out of allowed range:\n" +
2765
+ " lower: #{lower_interval} [sec]\n" +
2766
+ " upper: #{upper_interval} [sec]")
2767
+ end
2768
+ assert_equal(limit, d.record_count - prev_count)
2769
+ emit_count = d.emit_count
2770
+ prev_count = d.record_count
2771
+ end
2772
+
2773
+ ## When all the lines are read and rate_period seconds are over
2774
+ ## limit will reset and since there are no more logs to be read,
2775
+ ## number_lines_read will be 0
2776
+ sleep upper_interval
2777
+ gw = d.instance.find_group_from_metadata(file_path)
2778
+ assert_equal(0, gw.current_paths[file_path].number_lines_read)
2779
+ end
2780
+ end
2781
+ end
2782
+
2783
+ sub_test_case "Update watchers for rotation with follow_inodes" do
2784
+ def test_updateTW_before_refreshTW_and_detach_before_refreshTW
2785
+ config = config_element(
2786
+ "ROOT",
2787
+ "",
2788
+ {
2789
+ "path" => "#{@tmp_dir}/tail.txt*",
2790
+ "pos_file" => "#{@tmp_dir}/tail.pos",
2791
+ "tag" => "t1",
2792
+ "format" => "none",
2793
+ "read_from_head" => "true",
2794
+ "follow_inodes" => "true",
2795
+ # In order to detach the old watcher quickly.
2796
+ "rotate_wait" => "1s",
2797
+ # In order to reproduce the same condition stably, ensure that `refresh_watchers` is not
2798
+ # called by a timer.
2799
+ "refresh_interval" => "1h",
2800
+ # stat_watcher often calls `TailWatcher::on_notify` faster than creating a new log file,
2801
+ # so disable it in order to reproduce the same condition stably.
2802
+ "enable_stat_watcher" => "false",
2803
+ }
2804
+ )
2805
+ d = create_driver(config, false)
2806
+
2807
+ tail_watchers = []
2808
+ stub.proxy(d.instance).setup_watcher do |tw|
2809
+ tail_watchers.append(tw)
2810
+ tw
2811
+ end
2812
+
2813
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "wb") {|f| f.puts "file1 log1"}
2814
+
2815
+ d.run(expect_records: 4, timeout: 10) do
2816
+ # Rotate (If the timing is bad, `TailWatcher::on_notify` might be called between mv and new-file-creation)
2817
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "ab") {|f| f.puts "file1 log2"}
2818
+ FileUtils.move("#{@tmp_dir}/tail.txt", "#{@tmp_dir}/tail.txt" + "1")
2819
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "wb") {|f| f.puts "file2 log1"}
2820
+
2821
+ # `watch_timer` calls `TailWatcher::on_notify`, and then `update_watcher` updates the TailWatcher:
2822
+ # TailWatcher(path: "tail.txt", inode: inode_0) => TailWatcher(path: "tail.txt", inode: inode_1)
2823
+ # The old TailWathcer is detached here since `rotate_wait` is just `1s`.
2824
+ sleep 3
2825
+
2826
+ # This reproduces the following situation:
2827
+ # Rotation => update_watcher => refresh_watchers
2828
+ # This adds a new TailWatcher: TailWatcher(path: "tail.txt1", inode: inode_0)
2829
+ d.instance.refresh_watchers
2830
+
2831
+ # Append to the new current log file.
2832
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "ab") {|f| f.puts "file2 log2"}
2833
+ end
2834
+
2835
+ inode_0 = tail_watchers[0].ino
2836
+ inode_1 = tail_watchers[1].ino
2837
+ record_values = d.events.collect { |event| event[2]["message"] }.sort
2838
+ position_entries = []
2839
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.pos", "r") do |f|
2840
+ f.readlines(chomp: true).each do |line|
2841
+ values = line.split("\t")
2842
+ position_entries.append([values[0], values[1], values[2].to_i(16)])
2843
+ end
2844
+ end
2845
+
2846
+ assert_equal(
2847
+ {
2848
+ record_values: ["file1 log1", "file1 log2", "file2 log1", "file2 log2"],
2849
+ tail_watcher_paths: ["#{@tmp_dir}/tail.txt", "#{@tmp_dir}/tail.txt", "#{@tmp_dir}/tail.txt1"],
2850
+ tail_watcher_inodes: [inode_0, inode_1, inode_0],
2851
+ tail_watcher_io_handler_opened_statuses: [false, false, false],
2852
+ position_entries: [
2853
+ ["#{@tmp_dir}/tail.txt", "0000000000000016", inode_0],
2854
+ ["#{@tmp_dir}/tail.txt", "0000000000000016", inode_1],
2855
+ ],
2856
+ },
2857
+ {
2858
+ record_values: record_values,
2859
+ tail_watcher_paths: tail_watchers.collect { |tw| tw.path },
2860
+ tail_watcher_inodes: tail_watchers.collect { |tw| tw.ino },
2861
+ tail_watcher_io_handler_opened_statuses: tail_watchers.collect { |tw| tw.instance_variable_get(:@io_handler)&.opened? || false },
2862
+ position_entries: position_entries
2863
+ },
2864
+ )
2865
+ end
2866
+
2867
+ def test_updateTW_before_refreshTW_and_detach_after_refreshTW
2868
+ config = config_element(
2869
+ "ROOT",
2870
+ "",
2871
+ {
2872
+ "path" => "#{@tmp_dir}/tail.txt*",
2873
+ "pos_file" => "#{@tmp_dir}/tail.pos",
2874
+ "tag" => "t1",
2875
+ "format" => "none",
2876
+ "read_from_head" => "true",
2877
+ "follow_inodes" => "true",
2878
+ # In order to detach the old watcher after refresh_watchers.
2879
+ "rotate_wait" => "4s",
2880
+ # In order to reproduce the same condition stably, ensure that `refresh_watchers` is not
2881
+ # called by a timer.
2882
+ "refresh_interval" => "1h",
2883
+ # stat_watcher often calls `TailWatcher::on_notify` faster than creating a new log file,
2884
+ # so disable it in order to reproduce the same condition stably.
2885
+ "enable_stat_watcher" => "false",
2886
+ }
2887
+ )
2888
+ d = create_driver(config, false)
2889
+
2890
+ tail_watchers = []
2891
+ stub.proxy(d.instance).setup_watcher do |tw|
2892
+ tail_watchers.append(tw)
2893
+ tw
2894
+ end
2895
+
2896
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "wb") {|f| f.puts "file1 log1"}
2897
+
2898
+ d.run(expect_records: 4, timeout: 10) do
2899
+ # Rotate (If the timing is bad, `TailWatcher::on_notify` might be called between mv and new-file-creation)
2900
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "ab") {|f| f.puts "file1 log2"}
2901
+ FileUtils.move("#{@tmp_dir}/tail.txt", "#{@tmp_dir}/tail.txt" + "1")
2902
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "wb") {|f| f.puts "file2 log1"}
2903
+
2904
+ # `watch_timer` calls `TailWatcher::on_notify`, and then `update_watcher` updates the TailWatcher:
2905
+ # TailWatcher(path: "tail.txt", inode: inode_0) => TailWatcher(path: "tail.txt", inode: inode_1)
2906
+ sleep 2
2907
+
2908
+ # This reproduces the following situation:
2909
+ # Rotation => update_watcher => refresh_watchers
2910
+ # This adds a new TailWatcher: TailWatcher(path: "tail.txt1", inode: inode_0)
2911
+ d.instance.refresh_watchers
2912
+
2913
+ # The old TailWathcer is detached here since `rotate_wait` is `4s`.
2914
+ sleep 3
2915
+
2916
+ # Append to the new current log file.
2917
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "ab") {|f| f.puts "file2 log2"}
2918
+ end
2919
+
2920
+ inode_0 = tail_watchers[0].ino
2921
+ inode_1 = tail_watchers[1].ino
2922
+ record_values = d.events.collect { |event| event[2]["message"] }.sort
2923
+ position_entries = []
2924
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.pos", "r") do |f|
2925
+ f.readlines(chomp: true).each do |line|
2926
+ values = line.split("\t")
2927
+ position_entries.append([values[0], values[1], values[2].to_i(16)])
2928
+ end
2929
+ end
2930
+
2931
+ assert_equal(
2932
+ {
2933
+ record_values: ["file1 log1", "file1 log2", "file2 log1", "file2 log2"],
2934
+ tail_watcher_paths: ["#{@tmp_dir}/tail.txt", "#{@tmp_dir}/tail.txt", "#{@tmp_dir}/tail.txt1"],
2935
+ tail_watcher_inodes: [inode_0, inode_1, inode_0],
2936
+ tail_watcher_io_handler_opened_statuses: [false, false, false],
2937
+ position_entries: [
2938
+ # The recorded path is old, but it is no problem. The path is not used when using follow_inodes.
2939
+ ["#{@tmp_dir}/tail.txt", "0000000000000016", inode_0],
2940
+ ["#{@tmp_dir}/tail.txt", "0000000000000016", inode_1],
2941
+ ],
2942
+ },
2943
+ {
2944
+ record_values: record_values,
2945
+ tail_watcher_paths: tail_watchers.collect { |tw| tw.path },
2946
+ tail_watcher_inodes: tail_watchers.collect { |tw| tw.ino },
2947
+ tail_watcher_io_handler_opened_statuses: tail_watchers.collect { |tw| tw.instance_variable_get(:@io_handler)&.opened? || false },
2948
+ position_entries: position_entries
2949
+ },
2950
+ )
2951
+ end
2952
+
2953
+ # The scenario where in_tail wrongly detaches TailWatcher.
2954
+ # This is reported in https://github.com/fluent/fluentd/issues/4190.
2955
+ def test_updateTW_after_refreshTW
2956
+ config = config_element(
2957
+ "ROOT",
2958
+ "",
2959
+ {
2960
+ "path" => "#{@tmp_dir}/tail.txt*",
2961
+ "pos_file" => "#{@tmp_dir}/tail.pos",
2962
+ "tag" => "t1",
2963
+ "format" => "none",
2964
+ "read_from_head" => "true",
2965
+ "follow_inodes" => "true",
2966
+ # In order to detach the old watcher quickly.
2967
+ "rotate_wait" => "1s",
2968
+ # In order to reproduce the same condition stably, ensure that `refresh_watchers` is not
2969
+ # called by a timer.
2970
+ "refresh_interval" => "1h",
2971
+ # stat_watcher often calls `TailWatcher::on_notify` faster than creating a new log file,
2972
+ # so disable it in order to reproduce the same condition stably.
2973
+ "enable_stat_watcher" => "false",
2974
+ }
2975
+ )
2976
+ d = create_driver(config, false)
2977
+
2978
+ tail_watchers = []
2979
+ stub.proxy(d.instance).setup_watcher do |tw|
2980
+ tail_watchers.append(tw)
2981
+ tw
2982
+ end
2983
+
2984
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "wb") {|f| f.puts "file1 log1"}
2985
+
2986
+ d.run(expect_records: 4, timeout: 10) do
2987
+ # Rotate (If the timing is bad, `TailWatcher::on_notify` might be called between mv and new-file-creation)
2988
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "ab") {|f| f.puts "file1 log2"}
2989
+ FileUtils.move("#{@tmp_dir}/tail.txt", "#{@tmp_dir}/tail.txt" + "1")
2990
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "wb") {|f| f.puts "file2 log1"}
2991
+
2992
+ # This reproduces the following situation:
2993
+ # Rotation => refresh_watchers => update_watcher
2994
+ # This add a new TailWatcher: TailWatcher(path: "tail.txt", inode: inode_1)
2995
+ # This overwrites `@tails["tail.txt"]`
2996
+ d.instance.refresh_watchers
2997
+
2998
+ # `watch_timer` calls `TailWatcher::on_notify`, and then `update_watcher` trys to update the TailWatcher:
2999
+ # TailWatcher(path: "tail.txt", inode: inode_0) => TailWatcher(path: "tail.txt", inode: inode_1)
3000
+ # However, it is already added in `refresh_watcher`, so `update_watcher` doesn't create the new TailWatcher.
3001
+ # The old TailWathcer is detached here since `rotate_wait` is just `1s`.
3002
+ sleep 3
3003
+
3004
+ # This adds a new TailWatcher: TailWatcher(path: "tail.txt1", inode: inode_0)
3005
+ d.instance.refresh_watchers
3006
+
3007
+ # Append to the new current log file.
3008
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "ab") {|f| f.puts "file2 log2"}
3009
+ end
3010
+
3011
+ inode_0 = tail_watchers[0].ino
3012
+ inode_1 = tail_watchers[1].ino
3013
+ record_values = d.events.collect { |event| event[2]["message"] }.sort
3014
+ position_entries = []
3015
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.pos", "r") do |f|
3016
+ f.readlines(chomp: true).each do |line|
3017
+ values = line.split("\t")
3018
+ position_entries.append([values[0], values[1], values[2].to_i(16)])
3019
+ end
3020
+ end
3021
+
3022
+ assert_equal(
3023
+ {
3024
+ record_values: ["file1 log1", "file1 log2", "file2 log1", "file2 log2"],
3025
+ tail_watcher_paths: ["#{@tmp_dir}/tail.txt", "#{@tmp_dir}/tail.txt", "#{@tmp_dir}/tail.txt1"],
3026
+ tail_watcher_inodes: [inode_0, inode_1, inode_0],
3027
+ tail_watcher_io_handler_opened_statuses: [false, false, false],
3028
+ position_entries: [
3029
+ # The recorded path is old, but it is no problem. The path is not used when using follow_inodes.
3030
+ ["#{@tmp_dir}/tail.txt", "0000000000000016", inode_0],
3031
+ ["#{@tmp_dir}/tail.txt", "0000000000000016", inode_1],
3032
+ ],
3033
+ },
3034
+ {
3035
+ record_values: record_values,
3036
+ tail_watcher_paths: tail_watchers.collect { |tw| tw.path },
3037
+ tail_watcher_inodes: tail_watchers.collect { |tw| tw.ino },
3038
+ tail_watcher_io_handler_opened_statuses: tail_watchers.collect { |tw| tw.instance_variable_get(:@io_handler)&.opened? || false },
3039
+ position_entries: position_entries
3040
+ },
3041
+ )
3042
+ end
3043
+
3044
+ def test_path_resurrection
3045
+ config = config_element(
3046
+ "ROOT",
3047
+ "",
3048
+ {
3049
+ "path" => "#{@tmp_dir}/tail.txt*",
3050
+ "pos_file" => "#{@tmp_dir}/tail.pos",
3051
+ "tag" => "t1",
3052
+ "format" => "none",
3053
+ "read_from_head" => "true",
3054
+ "follow_inodes" => "true",
3055
+ # In order to reproduce the same condition stably, ensure that `refresh_watchers` is not
3056
+ # called by a timer.
3057
+ "refresh_interval" => "1h",
3058
+ # https://github.com/fluent/fluentd/pull/4237#issuecomment-1633358632
3059
+ # Because of this problem, log duplication can occur during `rotate_wait`.
3060
+ # Need to set `rotate_wait 0` for a workaround.
3061
+ "rotate_wait" => "0s",
3062
+ }
3063
+ )
3064
+ d = create_driver(config, false)
3065
+
3066
+ tail_watchers = []
3067
+ stub.proxy(d.instance).setup_watcher do |tw|
3068
+ tail_watchers.append(tw)
3069
+ tw
3070
+ end
3071
+
3072
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "wb") {|f| f.puts "file1 log1"}
3073
+
3074
+ d.run(expect_records: 5, timeout: 10) do
3075
+ # Rotate
3076
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "ab") {|f| f.puts "file1 log2"}
3077
+ FileUtils.move("#{@tmp_dir}/tail.txt", "#{@tmp_dir}/tail.txt" + "1")
3078
+ # TailWatcher(path: "tail.txt", inode: inode_0) detects `tail.txt` disappeared.
3079
+ # Call `update_watcher` to stop and discard self.
3080
+ # If not discarding, then it will be a orphan and cause leak and log duplication.
3081
+ #
3082
+ # This reproduces the case where the notify to TailWatcher comes before the new file for the path
3083
+ # is created during rotation.
3084
+ # (stat_watcher notifies faster than a new file is created)
3085
+ # Overall, this is a rotation operation, but from the TailWatcher, it appears as if the file
3086
+ # was resurrected once it disappeared.
3087
+ sleep 2 # On Windows and macOS, StatWatcher doesn't work, so need enough interval for TimeTrigger.
3088
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "wb") {|f| f.puts "file2 log1"}
3089
+
3090
+ # Add new TailWatchers
3091
+ # tail.txt: TailWatcher(path: "tail.txt", inode: inode_1)
3092
+ # tail.txt: TailWatcher(path: "tail.txt1", inode: inode_0)
3093
+ # NOTE: If not discarding the first TailWatcher on notify, this makes it a orphan because
3094
+ # this overwrites the `@tails[tail.txt]` by adding TailWatcher(path: "tail.txt", inode: inode_1)
3095
+ d.instance.refresh_watchers
3096
+
3097
+ # This does nothing.
3098
+ # NOTE: If not discarding the first TailWatcher on notify, this add
3099
+ # tail.txt1: TailWatcher(path: "tail.txt1", inode: inode_0)
3100
+ # because the previous refresh_watcher overwrites `@tails[tail.txt]` and the inode_0 is lost.
3101
+ # This would cause log duplication.
3102
+ d.instance.refresh_watchers
3103
+
3104
+ # Append to the old file
3105
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt1", "ab") {|f| f.puts "file1 log3"}
3106
+
3107
+ # Append to the new current log file.
3108
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt", "ab") {|f| f.puts "file2 log2"}
3109
+ end
3110
+
3111
+ inode_0 = Fluent::FileWrapper.stat("#{@tmp_dir}/tail.txt1").ino
3112
+ inode_1 = Fluent::FileWrapper.stat("#{@tmp_dir}/tail.txt").ino
3113
+ record_values = d.events.collect { |event| event[2]["message"] }.sort
3114
+ position_entries = []
3115
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.pos", "r") do |f|
3116
+ f.readlines(chomp: true).each do |line|
3117
+ values = line.split("\t")
3118
+ position_entries.append([values[0], values[1], values[2].to_i(16)])
3119
+ end
3120
+ end
3121
+
3122
+ assert_equal(
3123
+ {
3124
+ record_values: ["file1 log1", "file1 log2", "file1 log3", "file2 log1", "file2 log2"],
3125
+ tail_watcher_set: Set[
3126
+ {
3127
+ path: "#{@tmp_dir}/tail.txt",
3128
+ inode: inode_0,
3129
+ io_handler_opened_status: false,
3130
+ },
3131
+ {
3132
+ path: "#{@tmp_dir}/tail.txt",
3133
+ inode: inode_1,
3134
+ io_handler_opened_status: false,
3135
+ },
3136
+ {
3137
+ path: "#{@tmp_dir}/tail.txt1",
3138
+ inode: inode_0,
3139
+ io_handler_opened_status: false,
3140
+ },
3141
+ ],
3142
+ position_entries: [
3143
+ ["#{@tmp_dir}/tail.txt", "0000000000000021", inode_0],
3144
+ ["#{@tmp_dir}/tail.txt", "0000000000000016", inode_1],
3145
+ ],
3146
+ },
3147
+ {
3148
+ record_values: record_values,
3149
+ tail_watcher_set: Set.new(tail_watchers.collect { |tw|
3150
+ {
3151
+ path: tw.path,
3152
+ inode: tw.ino,
3153
+ io_handler_opened_status: tw.instance_variable_get(:@io_handler)&.opened? || false,
3154
+ }
3155
+ }),
3156
+ position_entries: position_entries,
3157
+ },
3158
+ )
3159
+ end
3160
+
3161
+ def test_next_rotation_occurs_very_fast_while_old_TW_still_waiting_rotate_wait
3162
+ config = config_element(
3163
+ "ROOT",
3164
+ "",
3165
+ {
3166
+ "path" => "#{@tmp_dir}/tail.txt*",
3167
+ "pos_file" => "#{@tmp_dir}/tail.pos",
3168
+ "tag" => "t1",
3169
+ "format" => "none",
3170
+ "read_from_head" => "true",
3171
+ "follow_inodes" => "true",
3172
+ "rotate_wait" => "3s",
3173
+ "refresh_interval" => "1h",
3174
+ # stat_watcher often calls `TailWatcher::on_notify` faster than creating a new log file,
3175
+ # so disable it in order to reproduce the same condition stably.
3176
+ "enable_stat_watcher" => "false",
3177
+ }
3178
+ )
3179
+ d = create_driver(config, false)
3180
+
3181
+ tail_watchers = []
3182
+ stub.proxy(d.instance).setup_watcher do |tw|
3183
+ tail_watchers.append(tw)
3184
+ mock.proxy(tw).close.once # Note: Currently, there is no harm in duplicate calls.
3185
+ tw
3186
+ end
3187
+
3188
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt0", "wb") {|f| f.puts "file1 log1"}
3189
+
3190
+ d.run(expect_records: 6, timeout: 15) do
3191
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt0", "ab") {|f| f.puts "file1 log2"}
3192
+
3193
+ sleep 1.5 # Need to be larger than 1s (the interval of watch_timer)
3194
+
3195
+ FileUtils.move("#{@tmp_dir}/tail.txt0", "#{@tmp_dir}/tail.txt" + "1")
3196
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt0", "wb") {|f| f.puts "file2 log1"}
3197
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt0", "ab") {|f| f.puts "file2 log2"}
3198
+
3199
+ sleep 1.5 # Need to be larger than 1s (the interval of watch_timer)
3200
+
3201
+ # Rotate again (Old TailWatcher waiting rotate_wait also calls update_watcher)
3202
+ [1, 0].each do |i|
3203
+ FileUtils.move("#{@tmp_dir}/tail.txt#{i}", "#{@tmp_dir}/tail.txt#{i + 1}")
3204
+ end
3205
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt0", "wb") {|f| f.puts "file3 log1"}
3206
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt0", "ab") {|f| f.puts "file3 log2"}
3207
+
3208
+ # Wait rotate_wait to confirm that TailWatcher.close is not called in duplicate.
3209
+ # (Note: Currently, there is no harm in duplicate calls)
3210
+ sleep 4
3211
+ end
3212
+
3213
+ inode_0 = tail_watchers[0]&.ino
3214
+ inode_1 = tail_watchers[1]&.ino
3215
+ inode_2 = tail_watchers[2]&.ino
3216
+ record_values = d.events.collect { |event| event[2]["message"] }.sort
3217
+ position_entries = []
3218
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.pos", "r") do |f|
3219
+ f.readlines(chomp: true).each do |line|
3220
+ values = line.split("\t")
3221
+ position_entries.append([values[0], values[1], values[2].to_i(16)])
3222
+ end
3223
+ end
3224
+
3225
+ assert_equal(
3226
+ {
3227
+ record_values: ["file1 log1", "file1 log2", "file2 log1", "file2 log2", "file3 log1", "file3 log2"],
3228
+ tail_watcher_paths: ["#{@tmp_dir}/tail.txt0", "#{@tmp_dir}/tail.txt0", "#{@tmp_dir}/tail.txt0"],
3229
+ tail_watcher_inodes: [inode_0, inode_1, inode_2],
3230
+ tail_watcher_io_handler_opened_statuses: [false, false, false],
3231
+ position_entries: [
3232
+ ["#{@tmp_dir}/tail.txt0", "0000000000000016", inode_0],
3233
+ ["#{@tmp_dir}/tail.txt0", "0000000000000016", inode_1],
3234
+ ["#{@tmp_dir}/tail.txt0", "0000000000000016", inode_2],
3235
+ ],
3236
+ },
3237
+ {
3238
+ record_values: record_values,
3239
+ tail_watcher_paths: tail_watchers.collect { |tw| tw.path },
3240
+ tail_watcher_inodes: tail_watchers.collect { |tw| tw.ino },
3241
+ tail_watcher_io_handler_opened_statuses: tail_watchers.collect { |tw| tw.instance_variable_get(:@io_handler)&.opened? || false },
3242
+ position_entries: position_entries
3243
+ },
3244
+ )
3245
+ end
3246
+ end
3247
+
3248
+ sub_test_case "Update watchers for rotation without follow_inodes" do
3249
+ # The scenario where in_tail wrongly unwatches the PositionEntry.
3250
+ # This is reported in https://github.com/fluent/fluentd/issues/3614.
3251
+ def test_refreshTW_during_rotation
3252
+ config = config_element(
3253
+ "ROOT",
3254
+ "",
3255
+ {
3256
+ "path" => "#{@tmp_dir}/tail.txt0",
3257
+ "pos_file" => "#{@tmp_dir}/tail.pos",
3258
+ "tag" => "t1",
3259
+ "format" => "none",
3260
+ "read_from_head" => "true",
3261
+ # In order to detach the old watcher quickly.
3262
+ "rotate_wait" => "3s",
3263
+ # In order to reproduce the same condition stably, ensure that `refresh_watchers` is not
3264
+ # called by a timer.
3265
+ "refresh_interval" => "1h",
3266
+ # stat_watcher often calls `TailWatcher::on_notify` faster than creating a new log file,
3267
+ # so disable it in order to reproduce the same condition stably.
3268
+ "enable_stat_watcher" => "false",
3269
+ }
3270
+ )
3271
+ d = create_driver(config, false)
3272
+
3273
+ tail_watchers = []
3274
+ stub.proxy(d.instance).setup_watcher do |tw|
3275
+ tail_watchers.append(tw)
3276
+ tw
3277
+ end
3278
+
3279
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt0", "wb") {|f| f.puts "file1 log1"}
3280
+
3281
+ d.run(expect_records: 6, timeout: 15) do
3282
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt0", "ab") {|f| f.puts "file1 log2"}
3283
+ FileUtils.move("#{@tmp_dir}/tail.txt0", "#{@tmp_dir}/tail.txt" + "1")
3284
+
3285
+ # This reproduces the following situation:
3286
+ # `refresh_watchers` is called during the rotation process and it detects the current file being lost.
3287
+ # Then it stops and unwatches the TailWatcher.
3288
+ d.instance.refresh_watchers
3289
+
3290
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt0", "wb") {|f| f.puts "file2 log1"}
3291
+
3292
+ # `watch_timer` calls `TailWatcher::on_notify`, and then `update_watcher` trys to add the new TailWatcher.
3293
+ # After `rotate_wait` interval, the PositionEntry is unwatched.
3294
+ # HOWEVER, the new TailWatcher is still using that PositionEntry, so this breaks the PositionFile!!
3295
+ # That PositionEntry is removed from `PositionFile::map`, but it is still working and remaining in the real pos file.
3296
+ sleep 5
3297
+
3298
+ # Append to the new current log file.
3299
+ # The PositionEntry is updated although it does not exist in `PositionFile::map`.
3300
+ # `PositionFile::map`: empty
3301
+ # Real pos file: `.../tail.txt 0000000000000016 (inode)`
3302
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt0", "ab") {|f| f.puts "file2 log2"}
3303
+
3304
+ # Rotate again
3305
+ [1, 0].each do |i|
3306
+ FileUtils.move("#{@tmp_dir}/tail.txt#{i}", "#{@tmp_dir}/tail.txt#{i + 1}")
3307
+ end
3308
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt0", "wb") {|f| f.puts "file3 log1"}
3309
+
3310
+ # `watch_timer` calls `TailWatcher::on_notify`, and then `update_watcher` trys to update the TailWatcher.
3311
+ sleep 3
3312
+
3313
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt0", "ab") {|f| f.puts "file3 log2"}
3314
+ end
3315
+
3316
+ inode_0 = tail_watchers[0]&.ino
3317
+ inode_1 = tail_watchers[1]&.ino
3318
+ inode_2 = tail_watchers[2]&.ino
3319
+ record_values = d.events.collect { |event| event[2]["message"] }.sort
3320
+ position_entries = []
3321
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.pos", "r") do |f|
3322
+ f.readlines(chomp: true).each do |line|
3323
+ values = line.split("\t")
3324
+ position_entries.append([values[0], values[1], values[2].to_i(16)])
3325
+ end
3326
+ end
3327
+
3328
+ assert_equal(
3329
+ {
3330
+ record_values: ["file1 log1", "file1 log2", "file2 log1", "file2 log2", "file3 log1", "file3 log2"],
3331
+ tail_watcher_paths: ["#{@tmp_dir}/tail.txt0", "#{@tmp_dir}/tail.txt0", "#{@tmp_dir}/tail.txt0"],
3332
+ tail_watcher_inodes: [inode_0, inode_1, inode_2],
3333
+ tail_watcher_io_handler_opened_statuses: [false, false, false],
3334
+ position_entries: [
3335
+ # The recorded path is old, but it is no problem. The path is not used when using follow_inodes.
3336
+ ["#{@tmp_dir}/tail.txt0", "0000000000000016", inode_2],
3337
+ ],
3338
+ },
3339
+ {
3340
+ record_values: record_values,
3341
+ tail_watcher_paths: tail_watchers.collect { |tw| tw.path },
3342
+ tail_watcher_inodes: tail_watchers.collect { |tw| tw.ino },
3343
+ tail_watcher_io_handler_opened_statuses: tail_watchers.collect { |tw| tw.instance_variable_get(:@io_handler)&.opened? || false },
3344
+ position_entries: position_entries
3345
+ },
3346
+ )
3347
+ end
3348
+
3349
+ def test_next_rotation_occurs_very_fast_while_old_TW_still_waiting_rotate_wait
3350
+ config = config_element(
3351
+ "ROOT",
3352
+ "",
3353
+ {
3354
+ "path" => "#{@tmp_dir}/tail.txt0",
3355
+ "pos_file" => "#{@tmp_dir}/tail.pos",
3356
+ "tag" => "t1",
3357
+ "format" => "none",
3358
+ "read_from_head" => "true",
3359
+ "rotate_wait" => "3s",
3360
+ "refresh_interval" => "1h",
3361
+ }
3362
+ )
3363
+ d = create_driver(config, false)
3364
+
3365
+ tail_watchers = []
3366
+ stub.proxy(d.instance).setup_watcher do |tw|
3367
+ tail_watchers.append(tw)
3368
+ mock.proxy(tw).close.once # Note: Currently, there is no harm in duplicate calls.
3369
+ tw
3370
+ end
3371
+
3372
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt0", "wb") {|f| f.puts "file1 log1"}
3373
+
3374
+ d.run(expect_records: 6, timeout: 15) do
3375
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt0", "ab") {|f| f.puts "file1 log2"}
3376
+
3377
+ sleep 1.5 # Need to be larger than 1s (the interval of watch_timer)
3378
+
3379
+ FileUtils.move("#{@tmp_dir}/tail.txt0", "#{@tmp_dir}/tail.txt" + "1")
3380
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt0", "wb") {|f| f.puts "file2 log1"}
3381
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt0", "ab") {|f| f.puts "file2 log2"}
3382
+
3383
+ sleep 1.5 # Need to be larger than 1s (the interval of watch_timer)
3384
+
3385
+ # Rotate again (Old TailWatcher waiting rotate_wait also calls update_watcher)
3386
+ [1, 0].each do |i|
3387
+ FileUtils.move("#{@tmp_dir}/tail.txt#{i}", "#{@tmp_dir}/tail.txt#{i + 1}")
3388
+ end
3389
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt0", "wb") {|f| f.puts "file3 log1"}
3390
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.txt0", "ab") {|f| f.puts "file3 log2"}
3391
+
3392
+ # Wait rotate_wait to confirm that TailWatcher.close is not called in duplicate.
3393
+ # (Note: Currently, there is no harm in duplicate calls)
3394
+ sleep 4
3395
+ end
3396
+
3397
+ inode_0 = tail_watchers[0]&.ino
3398
+ inode_1 = tail_watchers[1]&.ino
3399
+ inode_2 = tail_watchers[2]&.ino
3400
+ record_values = d.events.collect { |event| event[2]["message"] }.sort
3401
+ position_entries = []
3402
+ Fluent::FileWrapper.open("#{@tmp_dir}/tail.pos", "r") do |f|
3403
+ f.readlines(chomp: true).each do |line|
3404
+ values = line.split("\t")
3405
+ position_entries.append([values[0], values[1], values[2].to_i(16)])
3406
+ end
3407
+ end
3408
+
3409
+ assert_equal(
3410
+ {
3411
+ record_values: ["file1 log1", "file1 log2", "file2 log1", "file2 log2", "file3 log1", "file3 log2"],
3412
+ tail_watcher_paths: ["#{@tmp_dir}/tail.txt0", "#{@tmp_dir}/tail.txt0", "#{@tmp_dir}/tail.txt0"],
3413
+ tail_watcher_inodes: [inode_0, inode_1, inode_2],
3414
+ tail_watcher_io_handler_opened_statuses: [false, false, false],
3415
+ position_entries: [
3416
+ ["#{@tmp_dir}/tail.txt0", "0000000000000016", inode_2],
3417
+ ],
3418
+ },
3419
+ {
3420
+ record_values: record_values,
3421
+ tail_watcher_paths: tail_watchers.collect { |tw| tw.path },
3422
+ tail_watcher_inodes: tail_watchers.collect { |tw| tw.ino },
3423
+ tail_watcher_io_handler_opened_statuses: tail_watchers.collect { |tw| tw.instance_variable_get(:@io_handler)&.opened? || false },
3424
+ position_entries: position_entries
3425
+ },
3426
+ )
3427
+ end
3428
+ end
3429
+ end