Game sync and live services for independent game developers (targeting itch.io)
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Fix dependency versions and poem v3 upgrade

- Bump qbsdiff to 1.4, tower-http with compression-br feature
- Upgrade to poem-openapi v5 with correct #[OpenApi] macro
- Switch from rusqlite to sqlx async for database
- Wrap SpacesClient in Arc for Clone trait
- Fix expires() -> expires_in() for S3 presigning
- Update endpoint impls to return Result<Response>

+5435 -289
+5305
Cargo.lock
··· 1 + # This file is automatically @generated by Cargo. 2 + # It is not intended for manual editing. 3 + version = 4 4 + 5 + [[package]] 6 + name = "ahash" 7 + version = "0.8.12" 8 + source = "registry+https://github.com/rust-lang/crates.io-index" 9 + checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" 10 + dependencies = [ 11 + "cfg-if", 12 + "once_cell", 13 + "version_check", 14 + "zerocopy", 15 + ] 16 + 17 + [[package]] 18 + name = "aho-corasick" 19 + version = "1.1.4" 20 + source = "registry+https://github.com/rust-lang/crates.io-index" 21 + checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" 22 + dependencies = [ 23 + "memchr", 24 + ] 25 + 26 + [[package]] 27 + name = "alloc-no-stdlib" 28 + version = "2.0.4" 29 + source = "registry+https://github.com/rust-lang/crates.io-index" 30 + checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" 31 + 32 + [[package]] 33 + name = "alloc-stdlib" 34 + version = "0.2.2" 35 + source = "registry+https://github.com/rust-lang/crates.io-index" 36 + checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" 37 + dependencies = [ 38 + "alloc-no-stdlib", 39 + ] 40 + 41 + [[package]] 42 + name = "allocator-api2" 43 + version = "0.2.21" 44 + source = "registry+https://github.com/rust-lang/crates.io-index" 45 + checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" 46 + 47 + [[package]] 48 + name = "android_system_properties" 49 + version = "0.1.5" 50 + source = "registry+https://github.com/rust-lang/crates.io-index" 51 + checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" 52 + dependencies = [ 53 + "libc", 54 + ] 55 + 56 + [[package]] 57 + name = "anstream" 58 + version = "1.0.0" 59 + source = "registry+https://github.com/rust-lang/crates.io-index" 60 + checksum = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d" 61 + dependencies = [ 62 + "anstyle", 63 + "anstyle-parse", 64 + "anstyle-query", 65 + "anstyle-wincon", 66 + "colorchoice", 67 + "is_terminal_polyfill", 68 + "utf8parse", 69 + ] 70 + 71 + [[package]] 72 + name = "anstyle" 73 + version = "1.0.14" 74 + source = "registry+https://github.com/rust-lang/crates.io-index" 75 + checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000" 76 + 77 + [[package]] 78 + name = "anstyle-parse" 79 + version = "1.0.0" 80 + source = "registry+https://github.com/rust-lang/crates.io-index" 81 + checksum = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e" 82 + dependencies = [ 83 + "utf8parse", 84 + ] 85 + 86 + [[package]] 87 + name = "anstyle-query" 88 + version = "1.1.5" 89 + source = "registry+https://github.com/rust-lang/crates.io-index" 90 + checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" 91 + dependencies = [ 92 + "windows-sys 0.61.2", 93 + ] 94 + 95 + [[package]] 96 + name = "anstyle-wincon" 97 + version = "3.0.11" 98 + source = "registry+https://github.com/rust-lang/crates.io-index" 99 + checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d" 100 + dependencies = [ 101 + "anstyle", 102 + "once_cell_polyfill", 103 + "windows-sys 0.61.2", 104 + ] 105 + 106 + [[package]] 107 + name = "anyhow" 108 + version = "1.0.102" 109 + source = "registry+https://github.com/rust-lang/crates.io-index" 110 + checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" 111 + 112 + [[package]] 113 + name = "argon2" 114 + version = "0.5.3" 115 + source = "registry+https://github.com/rust-lang/crates.io-index" 116 + checksum = "3c3610892ee6e0cbce8ae2700349fcf8f98adb0dbfbee85aec3c9179d29cc072" 117 + dependencies = [ 118 + "base64ct", 119 + "blake2", 120 + "cpufeatures 0.2.17", 121 + "password-hash", 122 + ] 123 + 124 + [[package]] 125 + name = "arraydeque" 126 + version = "0.5.1" 127 + source = "registry+https://github.com/rust-lang/crates.io-index" 128 + checksum = "7d902e3d592a523def97af8f317b08ce16b7ab854c1985a0c671e6f15cebc236" 129 + 130 + [[package]] 131 + name = "async-compression" 132 + version = "0.4.42" 133 + source = "registry+https://github.com/rust-lang/crates.io-index" 134 + checksum = "e79b3f8a79cccc2898f31920fc69f304859b3bd567490f75ebf51ae1c792a9ac" 135 + dependencies = [ 136 + "compression-codecs", 137 + "compression-core", 138 + "pin-project-lite", 139 + "tokio", 140 + ] 141 + 142 + [[package]] 143 + name = "async-trait" 144 + version = "0.1.89" 145 + source = "registry+https://github.com/rust-lang/crates.io-index" 146 + checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" 147 + dependencies = [ 148 + "proc-macro2", 149 + "quote", 150 + "syn", 151 + ] 152 + 153 + [[package]] 154 + name = "atoi" 155 + version = "2.0.0" 156 + source = "registry+https://github.com/rust-lang/crates.io-index" 157 + checksum = "f28d99ec8bfea296261ca1af174f24225171fea9664ba9003cbebee704810528" 158 + dependencies = [ 159 + "num-traits", 160 + ] 161 + 162 + [[package]] 163 + name = "atomic-waker" 164 + version = "1.1.2" 165 + source = "registry+https://github.com/rust-lang/crates.io-index" 166 + checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" 167 + 168 + [[package]] 169 + name = "autocfg" 170 + version = "1.5.0" 171 + source = "registry+https://github.com/rust-lang/crates.io-index" 172 + checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" 173 + 174 + [[package]] 175 + name = "aws-credential-types" 176 + version = "1.2.14" 177 + source = "registry+https://github.com/rust-lang/crates.io-index" 178 + checksum = "8f20799b373a1be121fe3005fba0c2090af9411573878f224df44b42727fcaf7" 179 + dependencies = [ 180 + "aws-smithy-async", 181 + "aws-smithy-runtime-api", 182 + "aws-smithy-types", 183 + "zeroize", 184 + ] 185 + 186 + [[package]] 187 + name = "aws-lc-rs" 188 + version = "1.16.3" 189 + source = "registry+https://github.com/rust-lang/crates.io-index" 190 + checksum = "0ec6fb3fe69024a75fa7e1bfb48aa6cf59706a101658ea01bfd33b2b248a038f" 191 + dependencies = [ 192 + "aws-lc-sys", 193 + "zeroize", 194 + ] 195 + 196 + [[package]] 197 + name = "aws-lc-sys" 198 + version = "0.40.0" 199 + source = "registry+https://github.com/rust-lang/crates.io-index" 200 + checksum = "f50037ee5e1e41e7b8f9d161680a725bd1626cb6f8c7e901f91f942850852fe7" 201 + dependencies = [ 202 + "cc", 203 + "cmake", 204 + "dunce", 205 + "fs_extra", 206 + ] 207 + 208 + [[package]] 209 + name = "aws-runtime" 210 + version = "1.7.3" 211 + source = "registry+https://github.com/rust-lang/crates.io-index" 212 + checksum = "5dcd93c82209ac7413532388067dce79be5a8780c1786e5fae3df22e4dee2864" 213 + dependencies = [ 214 + "aws-credential-types", 215 + "aws-sigv4", 216 + "aws-smithy-async", 217 + "aws-smithy-eventstream", 218 + "aws-smithy-http 0.63.6", 219 + "aws-smithy-runtime", 220 + "aws-smithy-runtime-api", 221 + "aws-smithy-types", 222 + "aws-types", 223 + "bytes", 224 + "bytes-utils", 225 + "fastrand", 226 + "http 0.2.12", 227 + "http 1.4.0", 228 + "http-body 0.4.6", 229 + "http-body 1.0.1", 230 + "percent-encoding", 231 + "pin-project-lite", 232 + "tracing", 233 + "uuid", 234 + ] 235 + 236 + [[package]] 237 + name = "aws-sdk-s3" 238 + version = "1.119.0" 239 + source = "registry+https://github.com/rust-lang/crates.io-index" 240 + checksum = "1d65fddc3844f902dfe1864acb8494db5f9342015ee3ab7890270d36fbd2e01c" 241 + dependencies = [ 242 + "aws-credential-types", 243 + "aws-runtime", 244 + "aws-sigv4", 245 + "aws-smithy-async", 246 + "aws-smithy-checksums", 247 + "aws-smithy-eventstream", 248 + "aws-smithy-http 0.62.6", 249 + "aws-smithy-json", 250 + "aws-smithy-runtime", 251 + "aws-smithy-runtime-api", 252 + "aws-smithy-types", 253 + "aws-smithy-xml", 254 + "aws-types", 255 + "bytes", 256 + "fastrand", 257 + "hex", 258 + "hmac 0.12.1", 259 + "http 0.2.12", 260 + "http 1.4.0", 261 + "http-body 0.4.6", 262 + "lru", 263 + "percent-encoding", 264 + "regex-lite", 265 + "sha2 0.10.9", 266 + "tracing", 267 + "url", 268 + ] 269 + 270 + [[package]] 271 + name = "aws-sigv4" 272 + version = "1.4.3" 273 + source = "registry+https://github.com/rust-lang/crates.io-index" 274 + checksum = "68dc0b907359b120170613b5c09ccc61304eac3998ff6274b97d93ee6490115a" 275 + dependencies = [ 276 + "aws-credential-types", 277 + "aws-smithy-eventstream", 278 + "aws-smithy-http 0.63.6", 279 + "aws-smithy-runtime-api", 280 + "aws-smithy-types", 281 + "bytes", 282 + "crypto-bigint 0.5.5", 283 + "form_urlencoded", 284 + "hex", 285 + "hmac 0.13.0", 286 + "http 0.2.12", 287 + "http 1.4.0", 288 + "p256", 289 + "percent-encoding", 290 + "ring", 291 + "sha2 0.11.0", 292 + "subtle", 293 + "time", 294 + "tracing", 295 + "zeroize", 296 + ] 297 + 298 + [[package]] 299 + name = "aws-smithy-async" 300 + version = "1.2.14" 301 + source = "registry+https://github.com/rust-lang/crates.io-index" 302 + checksum = "2ffcaf626bdda484571968400c326a244598634dc75fd451325a54ad1a59acfc" 303 + dependencies = [ 304 + "futures-util", 305 + "pin-project-lite", 306 + "tokio", 307 + ] 308 + 309 + [[package]] 310 + name = "aws-smithy-checksums" 311 + version = "0.63.12" 312 + source = "registry+https://github.com/rust-lang/crates.io-index" 313 + checksum = "87294a084b43d649d967efe58aa1f9e0adc260e13a6938eb904c0ae9b45824ae" 314 + dependencies = [ 315 + "aws-smithy-http 0.62.6", 316 + "aws-smithy-types", 317 + "bytes", 318 + "crc-fast", 319 + "hex", 320 + "http 0.2.12", 321 + "http-body 0.4.6", 322 + "md-5", 323 + "pin-project-lite", 324 + "sha1", 325 + "sha2 0.10.9", 326 + "tracing", 327 + ] 328 + 329 + [[package]] 330 + name = "aws-smithy-eventstream" 331 + version = "0.60.20" 332 + source = "registry+https://github.com/rust-lang/crates.io-index" 333 + checksum = "faf09d74e5e32f76b8762da505a3cd59303e367a664ca67295387baa8c1d7548" 334 + dependencies = [ 335 + "aws-smithy-types", 336 + "bytes", 337 + "crc32fast", 338 + ] 339 + 340 + [[package]] 341 + name = "aws-smithy-http" 342 + version = "0.62.6" 343 + source = "registry+https://github.com/rust-lang/crates.io-index" 344 + checksum = "826141069295752372f8203c17f28e30c464d22899a43a0c9fd9c458d469c88b" 345 + dependencies = [ 346 + "aws-smithy-eventstream", 347 + "aws-smithy-runtime-api", 348 + "aws-smithy-types", 349 + "bytes", 350 + "bytes-utils", 351 + "futures-core", 352 + "futures-util", 353 + "http 0.2.12", 354 + "http 1.4.0", 355 + "http-body 0.4.6", 356 + "percent-encoding", 357 + "pin-project-lite", 358 + "pin-utils", 359 + "tracing", 360 + ] 361 + 362 + [[package]] 363 + name = "aws-smithy-http" 364 + version = "0.63.6" 365 + source = "registry+https://github.com/rust-lang/crates.io-index" 366 + checksum = "ba1ab2dc1c2c3749ead27180d333c42f11be8b0e934058fb4b2258ee8dbe5231" 367 + dependencies = [ 368 + "aws-smithy-runtime-api", 369 + "aws-smithy-types", 370 + "bytes", 371 + "bytes-utils", 372 + "futures-core", 373 + "futures-util", 374 + "http 1.4.0", 375 + "http-body 1.0.1", 376 + "http-body-util", 377 + "percent-encoding", 378 + "pin-project-lite", 379 + "pin-utils", 380 + "tracing", 381 + ] 382 + 383 + [[package]] 384 + name = "aws-smithy-http-client" 385 + version = "1.1.12" 386 + source = "registry+https://github.com/rust-lang/crates.io-index" 387 + checksum = "6a2f165a7feee6f263028b899d0a181987f4fa7179a6411a32a439fba7c5f769" 388 + dependencies = [ 389 + "aws-smithy-async", 390 + "aws-smithy-runtime-api", 391 + "aws-smithy-types", 392 + "h2 0.3.27", 393 + "h2 0.4.13", 394 + "http 0.2.12", 395 + "http 1.4.0", 396 + "http-body 0.4.6", 397 + "hyper 0.14.32", 398 + "hyper 1.9.0", 399 + "hyper-rustls 0.24.2", 400 + "hyper-rustls 0.27.9", 401 + "hyper-util", 402 + "pin-project-lite", 403 + "rustls 0.21.12", 404 + "rustls 0.23.40", 405 + "rustls-native-certs", 406 + "rustls-pki-types", 407 + "tokio", 408 + "tokio-rustls 0.26.4", 409 + "tower", 410 + "tracing", 411 + ] 412 + 413 + [[package]] 414 + name = "aws-smithy-json" 415 + version = "0.61.9" 416 + source = "registry+https://github.com/rust-lang/crates.io-index" 417 + checksum = "49fa1213db31ac95288d981476f78d05d9cbb0353d22cdf3472cc05bb02f6551" 418 + dependencies = [ 419 + "aws-smithy-types", 420 + ] 421 + 422 + [[package]] 423 + name = "aws-smithy-observability" 424 + version = "0.2.6" 425 + source = "registry+https://github.com/rust-lang/crates.io-index" 426 + checksum = "a06c2315d173edbf1920da8ba3a7189695827002e4c0fc961973ab1c54abca9c" 427 + dependencies = [ 428 + "aws-smithy-runtime-api", 429 + ] 430 + 431 + [[package]] 432 + name = "aws-smithy-runtime" 433 + version = "1.11.1" 434 + source = "registry+https://github.com/rust-lang/crates.io-index" 435 + checksum = "0504b1ab12debb5959e5165ee5fe97dd387e7aa7ea6a477bfd7635dfe769a4f5" 436 + dependencies = [ 437 + "aws-smithy-async", 438 + "aws-smithy-http 0.63.6", 439 + "aws-smithy-http-client", 440 + "aws-smithy-observability", 441 + "aws-smithy-runtime-api", 442 + "aws-smithy-types", 443 + "bytes", 444 + "fastrand", 445 + "http 0.2.12", 446 + "http 1.4.0", 447 + "http-body 0.4.6", 448 + "http-body 1.0.1", 449 + "http-body-util", 450 + "pin-project-lite", 451 + "pin-utils", 452 + "tokio", 453 + "tracing", 454 + ] 455 + 456 + [[package]] 457 + name = "aws-smithy-runtime-api" 458 + version = "1.12.0" 459 + source = "registry+https://github.com/rust-lang/crates.io-index" 460 + checksum = "b71a13df6ada0aafbf21a73bdfcdf9324cfa9df77d96b8446045be3cde61b42e" 461 + dependencies = [ 462 + "aws-smithy-async", 463 + "aws-smithy-runtime-api-macros", 464 + "aws-smithy-types", 465 + "bytes", 466 + "http 0.2.12", 467 + "http 1.4.0", 468 + "pin-project-lite", 469 + "tokio", 470 + "tracing", 471 + "zeroize", 472 + ] 473 + 474 + [[package]] 475 + name = "aws-smithy-runtime-api-macros" 476 + version = "1.0.0" 477 + source = "registry+https://github.com/rust-lang/crates.io-index" 478 + checksum = "8d7396fd9500589e62e460e987ecb671bad374934e55ec3b5f498cc7a8a8a7b7" 479 + dependencies = [ 480 + "proc-macro2", 481 + "quote", 482 + "syn", 483 + ] 484 + 485 + [[package]] 486 + name = "aws-smithy-types" 487 + version = "1.4.7" 488 + source = "registry+https://github.com/rust-lang/crates.io-index" 489 + checksum = "9d73dbfbaa8e4bc57b9045137680b958d274823509a360abfd8e1d514d40c95c" 490 + dependencies = [ 491 + "base64-simd", 492 + "bytes", 493 + "bytes-utils", 494 + "futures-core", 495 + "http 0.2.12", 496 + "http 1.4.0", 497 + "http-body 0.4.6", 498 + "http-body 1.0.1", 499 + "http-body-util", 500 + "itoa", 501 + "num-integer", 502 + "pin-project-lite", 503 + "pin-utils", 504 + "ryu", 505 + "serde", 506 + "time", 507 + "tokio", 508 + "tokio-util", 509 + ] 510 + 511 + [[package]] 512 + name = "aws-smithy-xml" 513 + version = "0.60.15" 514 + source = "registry+https://github.com/rust-lang/crates.io-index" 515 + checksum = "0ce02add1aa3677d022f8adf81dcbe3046a95f17a1b1e8979c145cd21d3d22b3" 516 + dependencies = [ 517 + "xmlparser", 518 + ] 519 + 520 + [[package]] 521 + name = "aws-types" 522 + version = "1.3.15" 523 + source = "registry+https://github.com/rust-lang/crates.io-index" 524 + checksum = "2f4bbcaa9304ea40902d3d5f42a0428d1bd895a2b0f6999436fb279ffddc58ac" 525 + dependencies = [ 526 + "aws-credential-types", 527 + "aws-smithy-async", 528 + "aws-smithy-runtime-api", 529 + "aws-smithy-types", 530 + "rustc_version", 531 + "tracing", 532 + ] 533 + 534 + [[package]] 535 + name = "base16ct" 536 + version = "0.1.1" 537 + source = "registry+https://github.com/rust-lang/crates.io-index" 538 + checksum = "349a06037c7bf932dd7e7d1f653678b2038b9ad46a74102f1fc7bd7872678cce" 539 + 540 + [[package]] 541 + name = "base64" 542 + version = "0.21.7" 543 + source = "registry+https://github.com/rust-lang/crates.io-index" 544 + checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" 545 + 546 + [[package]] 547 + name = "base64" 548 + version = "0.22.1" 549 + source = "registry+https://github.com/rust-lang/crates.io-index" 550 + checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" 551 + 552 + [[package]] 553 + name = "base64-simd" 554 + version = "0.8.0" 555 + source = "registry+https://github.com/rust-lang/crates.io-index" 556 + checksum = "339abbe78e73178762e23bea9dfd08e697eb3f3301cd4be981c0f78ba5859195" 557 + dependencies = [ 558 + "outref", 559 + "vsimd", 560 + ] 561 + 562 + [[package]] 563 + name = "base64ct" 564 + version = "1.8.3" 565 + source = "registry+https://github.com/rust-lang/crates.io-index" 566 + checksum = "2af50177e190e07a26ab74f8b1efbfe2ef87da2116221318cb1c2e82baf7de06" 567 + 568 + [[package]] 569 + name = "bitflags" 570 + version = "1.3.2" 571 + source = "registry+https://github.com/rust-lang/crates.io-index" 572 + checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" 573 + 574 + [[package]] 575 + name = "bitflags" 576 + version = "2.11.1" 577 + source = "registry+https://github.com/rust-lang/crates.io-index" 578 + checksum = "c4512299f36f043ab09a583e57bceb5a5aab7a73db1805848e8fef3c9e8c78b3" 579 + dependencies = [ 580 + "serde_core", 581 + ] 582 + 583 + [[package]] 584 + name = "blake2" 585 + version = "0.10.6" 586 + source = "registry+https://github.com/rust-lang/crates.io-index" 587 + checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe" 588 + dependencies = [ 589 + "digest 0.10.7", 590 + ] 591 + 592 + [[package]] 593 + name = "block-buffer" 594 + version = "0.10.4" 595 + source = "registry+https://github.com/rust-lang/crates.io-index" 596 + checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" 597 + dependencies = [ 598 + "generic-array", 599 + ] 600 + 601 + [[package]] 602 + name = "block-buffer" 603 + version = "0.12.0" 604 + source = "registry+https://github.com/rust-lang/crates.io-index" 605 + checksum = "cdd35008169921d80bc60d3d0ab416eecb028c4cd653352907921d95084790be" 606 + dependencies = [ 607 + "hybrid-array", 608 + ] 609 + 610 + [[package]] 611 + name = "brotli" 612 + version = "8.0.2" 613 + source = "registry+https://github.com/rust-lang/crates.io-index" 614 + checksum = "4bd8b9603c7aa97359dbd97ecf258968c95f3adddd6db2f7e7a5bef101c84560" 615 + dependencies = [ 616 + "alloc-no-stdlib", 617 + "alloc-stdlib", 618 + "brotli-decompressor", 619 + ] 620 + 621 + [[package]] 622 + name = "brotli-decompressor" 623 + version = "5.0.0" 624 + source = "registry+https://github.com/rust-lang/crates.io-index" 625 + checksum = "874bb8112abecc98cbd6d81ea4fa7e94fb9449648c93cc89aa40c81c24d7de03" 626 + dependencies = [ 627 + "alloc-no-stdlib", 628 + "alloc-stdlib", 629 + ] 630 + 631 + [[package]] 632 + name = "bumpalo" 633 + version = "3.20.2" 634 + source = "registry+https://github.com/rust-lang/crates.io-index" 635 + checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" 636 + 637 + [[package]] 638 + name = "byteorder" 639 + version = "1.5.0" 640 + source = "registry+https://github.com/rust-lang/crates.io-index" 641 + checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" 642 + 643 + [[package]] 644 + name = "bytes" 645 + version = "1.11.1" 646 + source = "registry+https://github.com/rust-lang/crates.io-index" 647 + checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" 648 + 649 + [[package]] 650 + name = "bytes-utils" 651 + version = "0.1.4" 652 + source = "registry+https://github.com/rust-lang/crates.io-index" 653 + checksum = "7dafe3a8757b027e2be6e4e5601ed563c55989fcf1546e933c66c8eb3a058d35" 654 + dependencies = [ 655 + "bytes", 656 + "either", 657 + ] 658 + 659 + [[package]] 660 + name = "bzip2" 661 + version = "0.6.1" 662 + source = "registry+https://github.com/rust-lang/crates.io-index" 663 + checksum = "f3a53fac24f34a81bc9954b5d6cfce0c21e18ec6959f44f56e8e90e4bb7c346c" 664 + dependencies = [ 665 + "libbz2-rs-sys", 666 + ] 667 + 668 + [[package]] 669 + name = "cc" 670 + version = "1.2.61" 671 + source = "registry+https://github.com/rust-lang/crates.io-index" 672 + checksum = "d16d90359e986641506914ba71350897565610e87ce0ad9e6f28569db3dd5c6d" 673 + dependencies = [ 674 + "find-msvc-tools", 675 + "jobserver", 676 + "libc", 677 + "shlex", 678 + ] 679 + 680 + [[package]] 681 + name = "cdivsufsort" 682 + version = "2.0.0" 683 + source = "registry+https://github.com/rust-lang/crates.io-index" 684 + checksum = "edefce019197609da416762da75bb000bbd2224b2d89a7e722c2296cbff79b8c" 685 + dependencies = [ 686 + "cc", 687 + "sacabase", 688 + ] 689 + 690 + [[package]] 691 + name = "cfg-if" 692 + version = "1.0.4" 693 + source = "registry+https://github.com/rust-lang/crates.io-index" 694 + checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" 695 + 696 + [[package]] 697 + name = "cfg_aliases" 698 + version = "0.2.1" 699 + source = "registry+https://github.com/rust-lang/crates.io-index" 700 + checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" 701 + 702 + [[package]] 703 + name = "chrono" 704 + version = "0.4.44" 705 + source = "registry+https://github.com/rust-lang/crates.io-index" 706 + checksum = "c673075a2e0e5f4a1dde27ce9dee1ea4558c7ffe648f576438a20ca1d2acc4b0" 707 + dependencies = [ 708 + "iana-time-zone", 709 + "js-sys", 710 + "num-traits", 711 + "serde", 712 + "wasm-bindgen", 713 + "windows-link", 714 + ] 715 + 716 + [[package]] 717 + name = "clap" 718 + version = "4.6.1" 719 + source = "registry+https://github.com/rust-lang/crates.io-index" 720 + checksum = "1ddb117e43bbf7dacf0a4190fef4d345b9bad68dfc649cb349e7d17d28428e51" 721 + dependencies = [ 722 + "clap_builder", 723 + "clap_derive", 724 + ] 725 + 726 + [[package]] 727 + name = "clap_builder" 728 + version = "4.6.0" 729 + source = "registry+https://github.com/rust-lang/crates.io-index" 730 + checksum = "714a53001bf66416adb0e2ef5ac857140e7dc3a0c48fb28b2f10762fc4b5069f" 731 + dependencies = [ 732 + "anstream", 733 + "anstyle", 734 + "clap_lex", 735 + "strsim", 736 + ] 737 + 738 + [[package]] 739 + name = "clap_derive" 740 + version = "4.6.1" 741 + source = "registry+https://github.com/rust-lang/crates.io-index" 742 + checksum = "f2ce8604710f6733aa641a2b3731eaa1e8b3d9973d5e3565da11800813f997a9" 743 + dependencies = [ 744 + "heck", 745 + "proc-macro2", 746 + "quote", 747 + "syn", 748 + ] 749 + 750 + [[package]] 751 + name = "clap_lex" 752 + version = "1.1.0" 753 + source = "registry+https://github.com/rust-lang/crates.io-index" 754 + checksum = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9" 755 + 756 + [[package]] 757 + name = "cmake" 758 + version = "0.1.58" 759 + source = "registry+https://github.com/rust-lang/crates.io-index" 760 + checksum = "c0f78a02292a74a88ac736019ab962ece0bc380e3f977bf72e376c5d78ff0678" 761 + dependencies = [ 762 + "cc", 763 + ] 764 + 765 + [[package]] 766 + name = "cmov" 767 + version = "0.5.3" 768 + source = "registry+https://github.com/rust-lang/crates.io-index" 769 + checksum = "3f88a43d011fc4a6876cb7344703e297c71dda42494fee094d5f7c76bf13f746" 770 + 771 + [[package]] 772 + name = "colorchoice" 773 + version = "1.0.5" 774 + source = "registry+https://github.com/rust-lang/crates.io-index" 775 + checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" 776 + 777 + [[package]] 778 + name = "compression-codecs" 779 + version = "0.4.38" 780 + source = "registry+https://github.com/rust-lang/crates.io-index" 781 + checksum = "ce2548391e9c1929c21bf6aa2680af86fe4c1b33e6cea9ac1cfeec0bd11218cf" 782 + dependencies = [ 783 + "brotli", 784 + "compression-core", 785 + ] 786 + 787 + [[package]] 788 + name = "compression-core" 789 + version = "0.4.32" 790 + source = "registry+https://github.com/rust-lang/crates.io-index" 791 + checksum = "cc14f565cf027a105f7a44ccf9e5b424348421a1d8952a8fc9d499d313107789" 792 + 793 + [[package]] 794 + name = "concurrent-queue" 795 + version = "2.5.0" 796 + source = "registry+https://github.com/rust-lang/crates.io-index" 797 + checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" 798 + dependencies = [ 799 + "crossbeam-utils", 800 + ] 801 + 802 + [[package]] 803 + name = "config" 804 + version = "0.14.1" 805 + source = "registry+https://github.com/rust-lang/crates.io-index" 806 + checksum = "68578f196d2a33ff61b27fae256c3164f65e36382648e30666dde05b8cc9dfdf" 807 + dependencies = [ 808 + "async-trait", 809 + "convert_case 0.6.0", 810 + "json5", 811 + "nom", 812 + "pathdiff", 813 + "ron", 814 + "rust-ini", 815 + "serde", 816 + "serde_json", 817 + "toml", 818 + "yaml-rust2", 819 + ] 820 + 821 + [[package]] 822 + name = "const-oid" 823 + version = "0.9.6" 824 + source = "registry+https://github.com/rust-lang/crates.io-index" 825 + checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" 826 + 827 + [[package]] 828 + name = "const-oid" 829 + version = "0.10.2" 830 + source = "registry+https://github.com/rust-lang/crates.io-index" 831 + checksum = "a6ef517f0926dd24a1582492c791b6a4818a4d94e789a334894aa15b0d12f55c" 832 + 833 + [[package]] 834 + name = "const-random" 835 + version = "0.1.18" 836 + source = "registry+https://github.com/rust-lang/crates.io-index" 837 + checksum = "87e00182fe74b066627d63b85fd550ac2998d4b0bd86bfed477a0ae4c7c71359" 838 + dependencies = [ 839 + "const-random-macro", 840 + ] 841 + 842 + [[package]] 843 + name = "const-random-macro" 844 + version = "0.1.16" 845 + source = "registry+https://github.com/rust-lang/crates.io-index" 846 + checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e" 847 + dependencies = [ 848 + "getrandom 0.2.17", 849 + "once_cell", 850 + "tiny-keccak", 851 + ] 852 + 853 + [[package]] 854 + name = "convert_case" 855 + version = "0.6.0" 856 + source = "registry+https://github.com/rust-lang/crates.io-index" 857 + checksum = "ec182b0ca2f35d8fc196cf3404988fd8b8c739a4d270ff118a398feb0cbec1ca" 858 + dependencies = [ 859 + "unicode-segmentation", 860 + ] 861 + 862 + [[package]] 863 + name = "convert_case" 864 + version = "0.10.0" 865 + source = "registry+https://github.com/rust-lang/crates.io-index" 866 + checksum = "633458d4ef8c78b72454de2d54fd6ab2e60f9e02be22f3c6104cdc8a4e0fceb9" 867 + dependencies = [ 868 + "unicode-segmentation", 869 + ] 870 + 871 + [[package]] 872 + name = "core-foundation" 873 + version = "0.9.4" 874 + source = "registry+https://github.com/rust-lang/crates.io-index" 875 + checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" 876 + dependencies = [ 877 + "core-foundation-sys", 878 + "libc", 879 + ] 880 + 881 + [[package]] 882 + name = "core-foundation" 883 + version = "0.10.1" 884 + source = "registry+https://github.com/rust-lang/crates.io-index" 885 + checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" 886 + dependencies = [ 887 + "core-foundation-sys", 888 + "libc", 889 + ] 890 + 891 + [[package]] 892 + name = "core-foundation-sys" 893 + version = "0.8.7" 894 + source = "registry+https://github.com/rust-lang/crates.io-index" 895 + checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" 896 + 897 + [[package]] 898 + name = "cpufeatures" 899 + version = "0.2.17" 900 + source = "registry+https://github.com/rust-lang/crates.io-index" 901 + checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" 902 + dependencies = [ 903 + "libc", 904 + ] 905 + 906 + [[package]] 907 + name = "cpufeatures" 908 + version = "0.3.0" 909 + source = "registry+https://github.com/rust-lang/crates.io-index" 910 + checksum = "8b2a41393f66f16b0823bb79094d54ac5fbd34ab292ddafb9a0456ac9f87d201" 911 + dependencies = [ 912 + "libc", 913 + ] 914 + 915 + [[package]] 916 + name = "crc" 917 + version = "3.4.0" 918 + source = "registry+https://github.com/rust-lang/crates.io-index" 919 + checksum = "5eb8a2a1cd12ab0d987a5d5e825195d372001a4094a0376319d5a0ad71c1ba0d" 920 + dependencies = [ 921 + "crc-catalog", 922 + ] 923 + 924 + [[package]] 925 + name = "crc-catalog" 926 + version = "2.5.0" 927 + source = "registry+https://github.com/rust-lang/crates.io-index" 928 + checksum = "217698eaf96b4a3f0bc4f3662aaa55bdf913cd54d7204591faa790070c6d0853" 929 + 930 + [[package]] 931 + name = "crc-fast" 932 + version = "1.6.0" 933 + source = "registry+https://github.com/rust-lang/crates.io-index" 934 + checksum = "6ddc2d09feefeee8bd78101665bd8645637828fa9317f9f292496dbbd8c65ff3" 935 + dependencies = [ 936 + "crc", 937 + "digest 0.10.7", 938 + "rand 0.9.4", 939 + "regex", 940 + "rustversion", 941 + ] 942 + 943 + [[package]] 944 + name = "crc32fast" 945 + version = "1.5.0" 946 + source = "registry+https://github.com/rust-lang/crates.io-index" 947 + checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" 948 + dependencies = [ 949 + "cfg-if", 950 + ] 951 + 952 + [[package]] 953 + name = "crossbeam-deque" 954 + version = "0.8.6" 955 + source = "registry+https://github.com/rust-lang/crates.io-index" 956 + checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" 957 + dependencies = [ 958 + "crossbeam-epoch", 959 + "crossbeam-utils", 960 + ] 961 + 962 + [[package]] 963 + name = "crossbeam-epoch" 964 + version = "0.9.18" 965 + source = "registry+https://github.com/rust-lang/crates.io-index" 966 + checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" 967 + dependencies = [ 968 + "crossbeam-utils", 969 + ] 970 + 971 + [[package]] 972 + name = "crossbeam-queue" 973 + version = "0.3.12" 974 + source = "registry+https://github.com/rust-lang/crates.io-index" 975 + checksum = "0f58bbc28f91df819d0aa2a2c00cd19754769c2fad90579b3592b1c9ba7a3115" 976 + dependencies = [ 977 + "crossbeam-utils", 978 + ] 979 + 980 + [[package]] 981 + name = "crossbeam-utils" 982 + version = "0.8.21" 983 + source = "registry+https://github.com/rust-lang/crates.io-index" 984 + checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" 985 + 986 + [[package]] 987 + name = "crunchy" 988 + version = "0.2.4" 989 + source = "registry+https://github.com/rust-lang/crates.io-index" 990 + checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" 991 + 992 + [[package]] 993 + name = "crypto-bigint" 994 + version = "0.4.9" 995 + source = "registry+https://github.com/rust-lang/crates.io-index" 996 + checksum = "ef2b4b23cddf68b89b8f8069890e8c270d54e2d5fe1b143820234805e4cb17ef" 997 + dependencies = [ 998 + "generic-array", 999 + "rand_core 0.6.4", 1000 + "subtle", 1001 + "zeroize", 1002 + ] 1003 + 1004 + [[package]] 1005 + name = "crypto-bigint" 1006 + version = "0.5.5" 1007 + source = "registry+https://github.com/rust-lang/crates.io-index" 1008 + checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" 1009 + dependencies = [ 1010 + "rand_core 0.6.4", 1011 + "subtle", 1012 + ] 1013 + 1014 + [[package]] 1015 + name = "crypto-common" 1016 + version = "0.1.7" 1017 + source = "registry+https://github.com/rust-lang/crates.io-index" 1018 + checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" 1019 + dependencies = [ 1020 + "generic-array", 1021 + "typenum", 1022 + ] 1023 + 1024 + [[package]] 1025 + name = "crypto-common" 1026 + version = "0.2.1" 1027 + source = "registry+https://github.com/rust-lang/crates.io-index" 1028 + checksum = "77727bb15fa921304124b128af125e7e3b968275d1b108b379190264f4423710" 1029 + dependencies = [ 1030 + "hybrid-array", 1031 + ] 1032 + 1033 + [[package]] 1034 + name = "ctutils" 1035 + version = "0.4.2" 1036 + source = "registry+https://github.com/rust-lang/crates.io-index" 1037 + checksum = "7d5515a3834141de9eafb9717ad39eea8247b5674e6066c404e8c4b365d2a29e" 1038 + dependencies = [ 1039 + "cmov", 1040 + ] 1041 + 1042 + [[package]] 1043 + name = "darling" 1044 + version = "0.20.11" 1045 + source = "registry+https://github.com/rust-lang/crates.io-index" 1046 + checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee" 1047 + dependencies = [ 1048 + "darling_core", 1049 + "darling_macro", 1050 + ] 1051 + 1052 + [[package]] 1053 + name = "darling_core" 1054 + version = "0.20.11" 1055 + source = "registry+https://github.com/rust-lang/crates.io-index" 1056 + checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e" 1057 + dependencies = [ 1058 + "fnv", 1059 + "ident_case", 1060 + "proc-macro2", 1061 + "quote", 1062 + "strsim", 1063 + "syn", 1064 + ] 1065 + 1066 + [[package]] 1067 + name = "darling_macro" 1068 + version = "0.20.11" 1069 + source = "registry+https://github.com/rust-lang/crates.io-index" 1070 + checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" 1071 + dependencies = [ 1072 + "darling_core", 1073 + "quote", 1074 + "syn", 1075 + ] 1076 + 1077 + [[package]] 1078 + name = "dashmap" 1079 + version = "6.1.0" 1080 + source = "registry+https://github.com/rust-lang/crates.io-index" 1081 + checksum = "5041cc499144891f3790297212f32a74fb938e5136a14943f338ef9e0ae276cf" 1082 + dependencies = [ 1083 + "cfg-if", 1084 + "crossbeam-utils", 1085 + "hashbrown 0.14.5", 1086 + "lock_api", 1087 + "once_cell", 1088 + "parking_lot_core 0.9.12", 1089 + ] 1090 + 1091 + [[package]] 1092 + name = "der" 1093 + version = "0.6.1" 1094 + source = "registry+https://github.com/rust-lang/crates.io-index" 1095 + checksum = "f1a467a65c5e759bce6e65eaf91cc29f466cdc57cb65777bd646872a8a1fd4de" 1096 + dependencies = [ 1097 + "const-oid 0.9.6", 1098 + "zeroize", 1099 + ] 1100 + 1101 + [[package]] 1102 + name = "der" 1103 + version = "0.7.10" 1104 + source = "registry+https://github.com/rust-lang/crates.io-index" 1105 + checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" 1106 + dependencies = [ 1107 + "const-oid 0.9.6", 1108 + "pem-rfc7468", 1109 + "zeroize", 1110 + ] 1111 + 1112 + [[package]] 1113 + name = "deranged" 1114 + version = "0.5.8" 1115 + source = "registry+https://github.com/rust-lang/crates.io-index" 1116 + checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c" 1117 + dependencies = [ 1118 + "powerfmt", 1119 + ] 1120 + 1121 + [[package]] 1122 + name = "derive_more" 1123 + version = "2.1.1" 1124 + source = "registry+https://github.com/rust-lang/crates.io-index" 1125 + checksum = "d751e9e49156b02b44f9c1815bcb94b984cdcc4396ecc32521c739452808b134" 1126 + dependencies = [ 1127 + "derive_more-impl", 1128 + ] 1129 + 1130 + [[package]] 1131 + name = "derive_more-impl" 1132 + version = "2.1.1" 1133 + source = "registry+https://github.com/rust-lang/crates.io-index" 1134 + checksum = "799a97264921d8623a957f6c3b9011f3b5492f557bbb7a5a19b7fa6d06ba8dcb" 1135 + dependencies = [ 1136 + "convert_case 0.10.0", 1137 + "proc-macro2", 1138 + "quote", 1139 + "rustc_version", 1140 + "syn", 1141 + "unicode-xid", 1142 + ] 1143 + 1144 + [[package]] 1145 + name = "digest" 1146 + version = "0.10.7" 1147 + source = "registry+https://github.com/rust-lang/crates.io-index" 1148 + checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" 1149 + dependencies = [ 1150 + "block-buffer 0.10.4", 1151 + "const-oid 0.9.6", 1152 + "crypto-common 0.1.7", 1153 + "subtle", 1154 + ] 1155 + 1156 + [[package]] 1157 + name = "digest" 1158 + version = "0.11.2" 1159 + source = "registry+https://github.com/rust-lang/crates.io-index" 1160 + checksum = "4850db49bf08e663084f7fb5c87d202ef91a3907271aff24a94eb97ff039153c" 1161 + dependencies = [ 1162 + "block-buffer 0.12.0", 1163 + "const-oid 0.10.2", 1164 + "crypto-common 0.2.1", 1165 + "ctutils", 1166 + ] 1167 + 1168 + [[package]] 1169 + name = "displaydoc" 1170 + version = "0.2.5" 1171 + source = "registry+https://github.com/rust-lang/crates.io-index" 1172 + checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" 1173 + dependencies = [ 1174 + "proc-macro2", 1175 + "quote", 1176 + "syn", 1177 + ] 1178 + 1179 + [[package]] 1180 + name = "dlv-list" 1181 + version = "0.5.2" 1182 + source = "registry+https://github.com/rust-lang/crates.io-index" 1183 + checksum = "442039f5147480ba31067cb00ada1adae6892028e40e45fc5de7b7df6dcc1b5f" 1184 + dependencies = [ 1185 + "const-random", 1186 + ] 1187 + 1188 + [[package]] 1189 + name = "dotenvy" 1190 + version = "0.15.7" 1191 + source = "registry+https://github.com/rust-lang/crates.io-index" 1192 + checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" 1193 + 1194 + [[package]] 1195 + name = "dunce" 1196 + version = "1.0.5" 1197 + source = "registry+https://github.com/rust-lang/crates.io-index" 1198 + checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" 1199 + 1200 + [[package]] 1201 + name = "ecdsa" 1202 + version = "0.14.8" 1203 + source = "registry+https://github.com/rust-lang/crates.io-index" 1204 + checksum = "413301934810f597c1d19ca71c8710e99a3f1ba28a0d2ebc01551a2daeea3c5c" 1205 + dependencies = [ 1206 + "der 0.6.1", 1207 + "elliptic-curve", 1208 + "rfc6979", 1209 + "signature 1.6.4", 1210 + ] 1211 + 1212 + [[package]] 1213 + name = "either" 1214 + version = "1.15.0" 1215 + source = "registry+https://github.com/rust-lang/crates.io-index" 1216 + checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" 1217 + dependencies = [ 1218 + "serde", 1219 + ] 1220 + 1221 + [[package]] 1222 + name = "elliptic-curve" 1223 + version = "0.12.3" 1224 + source = "registry+https://github.com/rust-lang/crates.io-index" 1225 + checksum = "e7bb888ab5300a19b8e5bceef25ac745ad065f3c9f7efc6de1b91958110891d3" 1226 + dependencies = [ 1227 + "base16ct", 1228 + "crypto-bigint 0.4.9", 1229 + "der 0.6.1", 1230 + "digest 0.10.7", 1231 + "ff", 1232 + "generic-array", 1233 + "group", 1234 + "pkcs8 0.9.0", 1235 + "rand_core 0.6.4", 1236 + "sec1", 1237 + "subtle", 1238 + "zeroize", 1239 + ] 1240 + 1241 + [[package]] 1242 + name = "encoding_rs" 1243 + version = "0.8.35" 1244 + source = "registry+https://github.com/rust-lang/crates.io-index" 1245 + checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" 1246 + dependencies = [ 1247 + "cfg-if", 1248 + ] 1249 + 1250 + [[package]] 1251 + name = "equivalent" 1252 + version = "1.0.2" 1253 + source = "registry+https://github.com/rust-lang/crates.io-index" 1254 + checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" 1255 + 1256 + [[package]] 1257 + name = "errno" 1258 + version = "0.3.14" 1259 + source = "registry+https://github.com/rust-lang/crates.io-index" 1260 + checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" 1261 + dependencies = [ 1262 + "libc", 1263 + "windows-sys 0.61.2", 1264 + ] 1265 + 1266 + [[package]] 1267 + name = "etcetera" 1268 + version = "0.8.0" 1269 + source = "registry+https://github.com/rust-lang/crates.io-index" 1270 + checksum = "136d1b5283a1ab77bd9257427ffd09d8667ced0570b6f938942bc7568ed5b943" 1271 + dependencies = [ 1272 + "cfg-if", 1273 + "home", 1274 + "windows-sys 0.48.0", 1275 + ] 1276 + 1277 + [[package]] 1278 + name = "event-listener" 1279 + version = "5.4.1" 1280 + source = "registry+https://github.com/rust-lang/crates.io-index" 1281 + checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab" 1282 + dependencies = [ 1283 + "concurrent-queue", 1284 + "parking", 1285 + "pin-project-lite", 1286 + ] 1287 + 1288 + [[package]] 1289 + name = "fallible-iterator" 1290 + version = "0.3.0" 1291 + source = "registry+https://github.com/rust-lang/crates.io-index" 1292 + checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649" 1293 + 1294 + [[package]] 1295 + name = "fallible-streaming-iterator" 1296 + version = "0.1.9" 1297 + source = "registry+https://github.com/rust-lang/crates.io-index" 1298 + checksum = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a" 1299 + 1300 + [[package]] 1301 + name = "fastrand" 1302 + version = "2.4.1" 1303 + source = "registry+https://github.com/rust-lang/crates.io-index" 1304 + checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6" 1305 + 1306 + [[package]] 1307 + name = "ff" 1308 + version = "0.12.1" 1309 + source = "registry+https://github.com/rust-lang/crates.io-index" 1310 + checksum = "d013fc25338cc558c5c2cfbad646908fb23591e2404481826742b651c9af7160" 1311 + dependencies = [ 1312 + "rand_core 0.6.4", 1313 + "subtle", 1314 + ] 1315 + 1316 + [[package]] 1317 + name = "find-msvc-tools" 1318 + version = "0.1.9" 1319 + source = "registry+https://github.com/rust-lang/crates.io-index" 1320 + checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" 1321 + 1322 + [[package]] 1323 + name = "flume" 1324 + version = "0.11.1" 1325 + source = "registry+https://github.com/rust-lang/crates.io-index" 1326 + checksum = "da0e4dd2a88388a1f4ccc7c9ce104604dab68d9f408dc34cd45823d5a9069095" 1327 + dependencies = [ 1328 + "futures-core", 1329 + "futures-sink", 1330 + "spin", 1331 + ] 1332 + 1333 + [[package]] 1334 + name = "fnv" 1335 + version = "1.0.7" 1336 + source = "registry+https://github.com/rust-lang/crates.io-index" 1337 + checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" 1338 + 1339 + [[package]] 1340 + name = "foldhash" 1341 + version = "0.1.5" 1342 + source = "registry+https://github.com/rust-lang/crates.io-index" 1343 + checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" 1344 + 1345 + [[package]] 1346 + name = "foreign-types" 1347 + version = "0.3.2" 1348 + source = "registry+https://github.com/rust-lang/crates.io-index" 1349 + checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" 1350 + dependencies = [ 1351 + "foreign-types-shared", 1352 + ] 1353 + 1354 + [[package]] 1355 + name = "foreign-types-shared" 1356 + version = "0.1.1" 1357 + source = "registry+https://github.com/rust-lang/crates.io-index" 1358 + checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" 1359 + 1360 + [[package]] 1361 + name = "form_urlencoded" 1362 + version = "1.2.2" 1363 + source = "registry+https://github.com/rust-lang/crates.io-index" 1364 + checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" 1365 + dependencies = [ 1366 + "percent-encoding", 1367 + ] 1368 + 1369 + [[package]] 1370 + name = "fs_extra" 1371 + version = "1.3.0" 1372 + source = "registry+https://github.com/rust-lang/crates.io-index" 1373 + checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" 1374 + 1375 + [[package]] 1376 + name = "futures" 1377 + version = "0.3.32" 1378 + source = "registry+https://github.com/rust-lang/crates.io-index" 1379 + checksum = "8b147ee9d1f6d097cef9ce628cd2ee62288d963e16fb287bd9286455b241382d" 1380 + dependencies = [ 1381 + "futures-channel", 1382 + "futures-core", 1383 + "futures-executor", 1384 + "futures-io", 1385 + "futures-sink", 1386 + "futures-task", 1387 + "futures-util", 1388 + ] 1389 + 1390 + [[package]] 1391 + name = "futures-channel" 1392 + version = "0.3.32" 1393 + source = "registry+https://github.com/rust-lang/crates.io-index" 1394 + checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d" 1395 + dependencies = [ 1396 + "futures-core", 1397 + "futures-sink", 1398 + ] 1399 + 1400 + [[package]] 1401 + name = "futures-core" 1402 + version = "0.3.32" 1403 + source = "registry+https://github.com/rust-lang/crates.io-index" 1404 + checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" 1405 + 1406 + [[package]] 1407 + name = "futures-executor" 1408 + version = "0.3.32" 1409 + source = "registry+https://github.com/rust-lang/crates.io-index" 1410 + checksum = "baf29c38818342a3b26b5b923639e7b1f4a61fc5e76102d4b1981c6dc7a7579d" 1411 + dependencies = [ 1412 + "futures-core", 1413 + "futures-task", 1414 + "futures-util", 1415 + ] 1416 + 1417 + [[package]] 1418 + name = "futures-intrusive" 1419 + version = "0.5.0" 1420 + source = "registry+https://github.com/rust-lang/crates.io-index" 1421 + checksum = "1d930c203dd0b6ff06e0201a4a2fe9149b43c684fd4420555b26d21b1a02956f" 1422 + dependencies = [ 1423 + "futures-core", 1424 + "lock_api", 1425 + "parking_lot 0.12.5", 1426 + ] 1427 + 1428 + [[package]] 1429 + name = "futures-io" 1430 + version = "0.3.32" 1431 + source = "registry+https://github.com/rust-lang/crates.io-index" 1432 + checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718" 1433 + 1434 + [[package]] 1435 + name = "futures-macro" 1436 + version = "0.3.32" 1437 + source = "registry+https://github.com/rust-lang/crates.io-index" 1438 + checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" 1439 + dependencies = [ 1440 + "proc-macro2", 1441 + "quote", 1442 + "syn", 1443 + ] 1444 + 1445 + [[package]] 1446 + name = "futures-sink" 1447 + version = "0.3.32" 1448 + source = "registry+https://github.com/rust-lang/crates.io-index" 1449 + checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893" 1450 + 1451 + [[package]] 1452 + name = "futures-task" 1453 + version = "0.3.32" 1454 + source = "registry+https://github.com/rust-lang/crates.io-index" 1455 + checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" 1456 + 1457 + [[package]] 1458 + name = "futures-util" 1459 + version = "0.3.32" 1460 + source = "registry+https://github.com/rust-lang/crates.io-index" 1461 + checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" 1462 + dependencies = [ 1463 + "futures-channel", 1464 + "futures-core", 1465 + "futures-io", 1466 + "futures-macro", 1467 + "futures-sink", 1468 + "futures-task", 1469 + "memchr", 1470 + "pin-project-lite", 1471 + "slab", 1472 + ] 1473 + 1474 + [[package]] 1475 + name = "generic-array" 1476 + version = "0.14.7" 1477 + source = "registry+https://github.com/rust-lang/crates.io-index" 1478 + checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" 1479 + dependencies = [ 1480 + "typenum", 1481 + "version_check", 1482 + ] 1483 + 1484 + [[package]] 1485 + name = "getrandom" 1486 + version = "0.2.17" 1487 + source = "registry+https://github.com/rust-lang/crates.io-index" 1488 + checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" 1489 + dependencies = [ 1490 + "cfg-if", 1491 + "js-sys", 1492 + "libc", 1493 + "wasi", 1494 + "wasm-bindgen", 1495 + ] 1496 + 1497 + [[package]] 1498 + name = "getrandom" 1499 + version = "0.3.4" 1500 + source = "registry+https://github.com/rust-lang/crates.io-index" 1501 + checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" 1502 + dependencies = [ 1503 + "cfg-if", 1504 + "libc", 1505 + "r-efi 5.3.0", 1506 + "wasip2", 1507 + ] 1508 + 1509 + [[package]] 1510 + name = "getrandom" 1511 + version = "0.4.2" 1512 + source = "registry+https://github.com/rust-lang/crates.io-index" 1513 + checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555" 1514 + dependencies = [ 1515 + "cfg-if", 1516 + "libc", 1517 + "r-efi 6.0.0", 1518 + "wasip2", 1519 + "wasip3", 1520 + ] 1521 + 1522 + [[package]] 1523 + name = "group" 1524 + version = "0.12.1" 1525 + source = "registry+https://github.com/rust-lang/crates.io-index" 1526 + checksum = "5dfbfb3a6cfbd390d5c9564ab283a0349b9b9fcd46a706c1eb10e0db70bfbac7" 1527 + dependencies = [ 1528 + "ff", 1529 + "rand_core 0.6.4", 1530 + "subtle", 1531 + ] 1532 + 1533 + [[package]] 1534 + name = "h2" 1535 + version = "0.3.27" 1536 + source = "registry+https://github.com/rust-lang/crates.io-index" 1537 + checksum = "0beca50380b1fc32983fc1cb4587bfa4bb9e78fc259aad4a0032d2080309222d" 1538 + dependencies = [ 1539 + "bytes", 1540 + "fnv", 1541 + "futures-core", 1542 + "futures-sink", 1543 + "futures-util", 1544 + "http 0.2.12", 1545 + "indexmap", 1546 + "slab", 1547 + "tokio", 1548 + "tokio-util", 1549 + "tracing", 1550 + ] 1551 + 1552 + [[package]] 1553 + name = "h2" 1554 + version = "0.4.13" 1555 + source = "registry+https://github.com/rust-lang/crates.io-index" 1556 + checksum = "2f44da3a8150a6703ed5d34e164b875fd14c2cdab9af1252a9a1020bde2bdc54" 1557 + dependencies = [ 1558 + "atomic-waker", 1559 + "bytes", 1560 + "fnv", 1561 + "futures-core", 1562 + "futures-sink", 1563 + "http 1.4.0", 1564 + "indexmap", 1565 + "slab", 1566 + "tokio", 1567 + "tokio-util", 1568 + "tracing", 1569 + ] 1570 + 1571 + [[package]] 1572 + name = "hashbrown" 1573 + version = "0.14.5" 1574 + source = "registry+https://github.com/rust-lang/crates.io-index" 1575 + checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" 1576 + dependencies = [ 1577 + "ahash", 1578 + "allocator-api2", 1579 + ] 1580 + 1581 + [[package]] 1582 + name = "hashbrown" 1583 + version = "0.15.5" 1584 + source = "registry+https://github.com/rust-lang/crates.io-index" 1585 + checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" 1586 + dependencies = [ 1587 + "allocator-api2", 1588 + "equivalent", 1589 + "foldhash", 1590 + ] 1591 + 1592 + [[package]] 1593 + name = "hashbrown" 1594 + version = "0.17.0" 1595 + source = "registry+https://github.com/rust-lang/crates.io-index" 1596 + checksum = "4f467dd6dccf739c208452f8014c75c18bb8301b050ad1cfb27153803edb0f51" 1597 + 1598 + [[package]] 1599 + name = "hashlink" 1600 + version = "0.8.4" 1601 + source = "registry+https://github.com/rust-lang/crates.io-index" 1602 + checksum = "e8094feaf31ff591f651a2664fb9cfd92bba7a60ce3197265e9482ebe753c8f7" 1603 + dependencies = [ 1604 + "hashbrown 0.14.5", 1605 + ] 1606 + 1607 + [[package]] 1608 + name = "hashlink" 1609 + version = "0.9.1" 1610 + source = "registry+https://github.com/rust-lang/crates.io-index" 1611 + checksum = "6ba4ff7128dee98c7dc9794b6a411377e1404dba1c97deb8d1a55297bd25d8af" 1612 + dependencies = [ 1613 + "hashbrown 0.14.5", 1614 + ] 1615 + 1616 + [[package]] 1617 + name = "hashlink" 1618 + version = "0.10.0" 1619 + source = "registry+https://github.com/rust-lang/crates.io-index" 1620 + checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1" 1621 + dependencies = [ 1622 + "hashbrown 0.15.5", 1623 + ] 1624 + 1625 + [[package]] 1626 + name = "hdrhistogram" 1627 + version = "7.5.4" 1628 + source = "registry+https://github.com/rust-lang/crates.io-index" 1629 + checksum = "765c9198f173dd59ce26ff9f95ef0aafd0a0fe01fb9d72841bc5066a4c06511d" 1630 + dependencies = [ 1631 + "byteorder", 1632 + "num-traits", 1633 + ] 1634 + 1635 + [[package]] 1636 + name = "headers" 1637 + version = "0.4.1" 1638 + source = "registry+https://github.com/rust-lang/crates.io-index" 1639 + checksum = "b3314d5adb5d94bcdf56771f2e50dbbc80bb4bdf88967526706205ac9eff24eb" 1640 + dependencies = [ 1641 + "base64 0.22.1", 1642 + "bytes", 1643 + "headers-core", 1644 + "http 1.4.0", 1645 + "httpdate", 1646 + "mime", 1647 + "sha1", 1648 + ] 1649 + 1650 + [[package]] 1651 + name = "headers-core" 1652 + version = "0.3.0" 1653 + source = "registry+https://github.com/rust-lang/crates.io-index" 1654 + checksum = "54b4a22553d4242c49fddb9ba998a99962b5cc6f22cb5a3482bec22522403ce4" 1655 + dependencies = [ 1656 + "http 1.4.0", 1657 + ] 1658 + 1659 + [[package]] 1660 + name = "heck" 1661 + version = "0.5.0" 1662 + source = "registry+https://github.com/rust-lang/crates.io-index" 1663 + checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" 1664 + 1665 + [[package]] 1666 + name = "hex" 1667 + version = "0.4.3" 1668 + source = "registry+https://github.com/rust-lang/crates.io-index" 1669 + checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" 1670 + 1671 + [[package]] 1672 + name = "hkdf" 1673 + version = "0.12.4" 1674 + source = "registry+https://github.com/rust-lang/crates.io-index" 1675 + checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" 1676 + dependencies = [ 1677 + "hmac 0.12.1", 1678 + ] 1679 + 1680 + [[package]] 1681 + name = "hmac" 1682 + version = "0.12.1" 1683 + source = "registry+https://github.com/rust-lang/crates.io-index" 1684 + checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" 1685 + dependencies = [ 1686 + "digest 0.10.7", 1687 + ] 1688 + 1689 + [[package]] 1690 + name = "hmac" 1691 + version = "0.13.0" 1692 + source = "registry+https://github.com/rust-lang/crates.io-index" 1693 + checksum = "6303bc9732ae41b04cb554b844a762b4115a61bfaa81e3e83050991eeb56863f" 1694 + dependencies = [ 1695 + "digest 0.11.2", 1696 + ] 1697 + 1698 + [[package]] 1699 + name = "home" 1700 + version = "0.5.12" 1701 + source = "registry+https://github.com/rust-lang/crates.io-index" 1702 + checksum = "cc627f471c528ff0c4a49e1d5e60450c8f6461dd6d10ba9dcd3a61d3dff7728d" 1703 + dependencies = [ 1704 + "windows-sys 0.61.2", 1705 + ] 1706 + 1707 + [[package]] 1708 + name = "http" 1709 + version = "0.2.12" 1710 + source = "registry+https://github.com/rust-lang/crates.io-index" 1711 + checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" 1712 + dependencies = [ 1713 + "bytes", 1714 + "fnv", 1715 + "itoa", 1716 + ] 1717 + 1718 + [[package]] 1719 + name = "http" 1720 + version = "1.4.0" 1721 + source = "registry+https://github.com/rust-lang/crates.io-index" 1722 + checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a" 1723 + dependencies = [ 1724 + "bytes", 1725 + "itoa", 1726 + ] 1727 + 1728 + [[package]] 1729 + name = "http-body" 1730 + version = "0.4.6" 1731 + source = "registry+https://github.com/rust-lang/crates.io-index" 1732 + checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" 1733 + dependencies = [ 1734 + "bytes", 1735 + "http 0.2.12", 1736 + "pin-project-lite", 1737 + ] 1738 + 1739 + [[package]] 1740 + name = "http-body" 1741 + version = "1.0.1" 1742 + source = "registry+https://github.com/rust-lang/crates.io-index" 1743 + checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" 1744 + dependencies = [ 1745 + "bytes", 1746 + "http 1.4.0", 1747 + ] 1748 + 1749 + [[package]] 1750 + name = "http-body-util" 1751 + version = "0.1.3" 1752 + source = "registry+https://github.com/rust-lang/crates.io-index" 1753 + checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" 1754 + dependencies = [ 1755 + "bytes", 1756 + "futures-core", 1757 + "http 1.4.0", 1758 + "http-body 1.0.1", 1759 + "pin-project-lite", 1760 + ] 1761 + 1762 + [[package]] 1763 + name = "httparse" 1764 + version = "1.10.1" 1765 + source = "registry+https://github.com/rust-lang/crates.io-index" 1766 + checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" 1767 + 1768 + [[package]] 1769 + name = "httpdate" 1770 + version = "1.0.3" 1771 + source = "registry+https://github.com/rust-lang/crates.io-index" 1772 + checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" 1773 + 1774 + [[package]] 1775 + name = "hybrid-array" 1776 + version = "0.4.11" 1777 + source = "registry+https://github.com/rust-lang/crates.io-index" 1778 + checksum = "08d46837a0ed51fe95bd3b05de33cd64a1ee88fc797477ca48446872504507c5" 1779 + dependencies = [ 1780 + "typenum", 1781 + ] 1782 + 1783 + [[package]] 1784 + name = "hyper" 1785 + version = "0.14.32" 1786 + source = "registry+https://github.com/rust-lang/crates.io-index" 1787 + checksum = "41dfc780fdec9373c01bae43289ea34c972e40ee3c9f6b3c8801a35f35586ce7" 1788 + dependencies = [ 1789 + "bytes", 1790 + "futures-channel", 1791 + "futures-core", 1792 + "futures-util", 1793 + "h2 0.3.27", 1794 + "http 0.2.12", 1795 + "http-body 0.4.6", 1796 + "httparse", 1797 + "httpdate", 1798 + "itoa", 1799 + "pin-project-lite", 1800 + "socket2 0.5.10", 1801 + "tokio", 1802 + "tower-service", 1803 + "tracing", 1804 + "want", 1805 + ] 1806 + 1807 + [[package]] 1808 + name = "hyper" 1809 + version = "1.9.0" 1810 + source = "registry+https://github.com/rust-lang/crates.io-index" 1811 + checksum = "6299f016b246a94207e63da54dbe807655bf9e00044f73ded42c3ac5305fbcca" 1812 + dependencies = [ 1813 + "atomic-waker", 1814 + "bytes", 1815 + "futures-channel", 1816 + "futures-core", 1817 + "h2 0.4.13", 1818 + "http 1.4.0", 1819 + "http-body 1.0.1", 1820 + "httparse", 1821 + "httpdate", 1822 + "itoa", 1823 + "pin-project-lite", 1824 + "smallvec", 1825 + "tokio", 1826 + "want", 1827 + ] 1828 + 1829 + [[package]] 1830 + name = "hyper-rustls" 1831 + version = "0.24.2" 1832 + source = "registry+https://github.com/rust-lang/crates.io-index" 1833 + checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" 1834 + dependencies = [ 1835 + "futures-util", 1836 + "http 0.2.12", 1837 + "hyper 0.14.32", 1838 + "log", 1839 + "rustls 0.21.12", 1840 + "tokio", 1841 + "tokio-rustls 0.24.1", 1842 + ] 1843 + 1844 + [[package]] 1845 + name = "hyper-rustls" 1846 + version = "0.27.9" 1847 + source = "registry+https://github.com/rust-lang/crates.io-index" 1848 + checksum = "33ca68d021ef39cf6463ab54c1d0f5daf03377b70561305bb89a8f83aab66e0f" 1849 + dependencies = [ 1850 + "http 1.4.0", 1851 + "hyper 1.9.0", 1852 + "hyper-util", 1853 + "rustls 0.23.40", 1854 + "rustls-native-certs", 1855 + "tokio", 1856 + "tokio-rustls 0.26.4", 1857 + "tower-service", 1858 + ] 1859 + 1860 + [[package]] 1861 + name = "hyper-tls" 1862 + version = "0.6.0" 1863 + source = "registry+https://github.com/rust-lang/crates.io-index" 1864 + checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" 1865 + dependencies = [ 1866 + "bytes", 1867 + "http-body-util", 1868 + "hyper 1.9.0", 1869 + "hyper-util", 1870 + "native-tls", 1871 + "tokio", 1872 + "tokio-native-tls", 1873 + "tower-service", 1874 + ] 1875 + 1876 + [[package]] 1877 + name = "hyper-util" 1878 + version = "0.1.20" 1879 + source = "registry+https://github.com/rust-lang/crates.io-index" 1880 + checksum = "96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0" 1881 + dependencies = [ 1882 + "base64 0.22.1", 1883 + "bytes", 1884 + "futures-channel", 1885 + "futures-util", 1886 + "http 1.4.0", 1887 + "http-body 1.0.1", 1888 + "hyper 1.9.0", 1889 + "ipnet", 1890 + "libc", 1891 + "percent-encoding", 1892 + "pin-project-lite", 1893 + "socket2 0.6.3", 1894 + "system-configuration", 1895 + "tokio", 1896 + "tower-service", 1897 + "tracing", 1898 + "windows-registry", 1899 + ] 1900 + 1901 + [[package]] 1902 + name = "iana-time-zone" 1903 + version = "0.1.65" 1904 + source = "registry+https://github.com/rust-lang/crates.io-index" 1905 + checksum = "e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470" 1906 + dependencies = [ 1907 + "android_system_properties", 1908 + "core-foundation-sys", 1909 + "iana-time-zone-haiku", 1910 + "js-sys", 1911 + "log", 1912 + "wasm-bindgen", 1913 + "windows-core", 1914 + ] 1915 + 1916 + [[package]] 1917 + name = "iana-time-zone-haiku" 1918 + version = "0.1.2" 1919 + source = "registry+https://github.com/rust-lang/crates.io-index" 1920 + checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" 1921 + dependencies = [ 1922 + "cc", 1923 + ] 1924 + 1925 + [[package]] 1926 + name = "icu_collections" 1927 + version = "2.2.0" 1928 + source = "registry+https://github.com/rust-lang/crates.io-index" 1929 + checksum = "2984d1cd16c883d7935b9e07e44071dca8d917fd52ecc02c04d5fa0b5a3f191c" 1930 + dependencies = [ 1931 + "displaydoc", 1932 + "potential_utf", 1933 + "utf8_iter", 1934 + "yoke", 1935 + "zerofrom", 1936 + "zerovec", 1937 + ] 1938 + 1939 + [[package]] 1940 + name = "icu_locale_core" 1941 + version = "2.2.0" 1942 + source = "registry+https://github.com/rust-lang/crates.io-index" 1943 + checksum = "92219b62b3e2b4d88ac5119f8904c10f8f61bf7e95b640d25ba3075e6cac2c29" 1944 + dependencies = [ 1945 + "displaydoc", 1946 + "litemap", 1947 + "tinystr", 1948 + "writeable", 1949 + "zerovec", 1950 + ] 1951 + 1952 + [[package]] 1953 + name = "icu_normalizer" 1954 + version = "2.2.0" 1955 + source = "registry+https://github.com/rust-lang/crates.io-index" 1956 + checksum = "c56e5ee99d6e3d33bd91c5d85458b6005a22140021cc324cea84dd0e72cff3b4" 1957 + dependencies = [ 1958 + "icu_collections", 1959 + "icu_normalizer_data", 1960 + "icu_properties", 1961 + "icu_provider", 1962 + "smallvec", 1963 + "zerovec", 1964 + ] 1965 + 1966 + [[package]] 1967 + name = "icu_normalizer_data" 1968 + version = "2.2.0" 1969 + source = "registry+https://github.com/rust-lang/crates.io-index" 1970 + checksum = "da3be0ae77ea334f4da67c12f149704f19f81d1adf7c51cf482943e84a2bad38" 1971 + 1972 + [[package]] 1973 + name = "icu_properties" 1974 + version = "2.2.0" 1975 + source = "registry+https://github.com/rust-lang/crates.io-index" 1976 + checksum = "bee3b67d0ea5c2cca5003417989af8996f8604e34fb9ddf96208a033901e70de" 1977 + dependencies = [ 1978 + "icu_collections", 1979 + "icu_locale_core", 1980 + "icu_properties_data", 1981 + "icu_provider", 1982 + "zerotrie", 1983 + "zerovec", 1984 + ] 1985 + 1986 + [[package]] 1987 + name = "icu_properties_data" 1988 + version = "2.2.0" 1989 + source = "registry+https://github.com/rust-lang/crates.io-index" 1990 + checksum = "8e2bbb201e0c04f7b4b3e14382af113e17ba4f63e2c9d2ee626b720cbce54a14" 1991 + 1992 + [[package]] 1993 + name = "icu_provider" 1994 + version = "2.2.0" 1995 + source = "registry+https://github.com/rust-lang/crates.io-index" 1996 + checksum = "139c4cf31c8b5f33d7e199446eff9c1e02decfc2f0eec2c8d71f65befa45b421" 1997 + dependencies = [ 1998 + "displaydoc", 1999 + "icu_locale_core", 2000 + "writeable", 2001 + "yoke", 2002 + "zerofrom", 2003 + "zerotrie", 2004 + "zerovec", 2005 + ] 2006 + 2007 + [[package]] 2008 + name = "id-arena" 2009 + version = "2.3.0" 2010 + source = "registry+https://github.com/rust-lang/crates.io-index" 2011 + checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954" 2012 + 2013 + [[package]] 2014 + name = "ident_case" 2015 + version = "1.0.1" 2016 + source = "registry+https://github.com/rust-lang/crates.io-index" 2017 + checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" 2018 + 2019 + [[package]] 2020 + name = "idna" 2021 + version = "1.1.0" 2022 + source = "registry+https://github.com/rust-lang/crates.io-index" 2023 + checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" 2024 + dependencies = [ 2025 + "idna_adapter", 2026 + "smallvec", 2027 + "utf8_iter", 2028 + ] 2029 + 2030 + [[package]] 2031 + name = "idna_adapter" 2032 + version = "1.2.2" 2033 + source = "registry+https://github.com/rust-lang/crates.io-index" 2034 + checksum = "cb68373c0d6620ef8105e855e7745e18b0d00d3bdb07fb532e434244cdb9a714" 2035 + dependencies = [ 2036 + "icu_normalizer", 2037 + "icu_properties", 2038 + ] 2039 + 2040 + [[package]] 2041 + name = "indexmap" 2042 + version = "2.14.0" 2043 + source = "registry+https://github.com/rust-lang/crates.io-index" 2044 + checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" 2045 + dependencies = [ 2046 + "equivalent", 2047 + "hashbrown 0.17.0", 2048 + "serde", 2049 + "serde_core", 2050 + ] 2051 + 2052 + [[package]] 2053 + name = "instant" 2054 + version = "0.1.13" 2055 + source = "registry+https://github.com/rust-lang/crates.io-index" 2056 + checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" 2057 + dependencies = [ 2058 + "cfg-if", 2059 + "js-sys", 2060 + "wasm-bindgen", 2061 + "web-sys", 2062 + ] 2063 + 2064 + [[package]] 2065 + name = "ipnet" 2066 + version = "2.12.0" 2067 + source = "registry+https://github.com/rust-lang/crates.io-index" 2068 + checksum = "d98f6fed1fde3f8c21bc40a1abb88dd75e67924f9cffc3ef95607bad8017f8e2" 2069 + 2070 + [[package]] 2071 + name = "iri-string" 2072 + version = "0.7.12" 2073 + source = "registry+https://github.com/rust-lang/crates.io-index" 2074 + checksum = "25e659a4bb38e810ebc252e53b5814ff908a8c58c2a9ce2fae1bbec24cbf4e20" 2075 + dependencies = [ 2076 + "memchr", 2077 + "serde", 2078 + ] 2079 + 2080 + [[package]] 2081 + name = "is_terminal_polyfill" 2082 + version = "1.70.2" 2083 + source = "registry+https://github.com/rust-lang/crates.io-index" 2084 + checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" 2085 + 2086 + [[package]] 2087 + name = "itertools" 2088 + version = "0.14.0" 2089 + source = "registry+https://github.com/rust-lang/crates.io-index" 2090 + checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" 2091 + dependencies = [ 2092 + "either", 2093 + ] 2094 + 2095 + [[package]] 2096 + name = "itoa" 2097 + version = "1.0.18" 2098 + source = "registry+https://github.com/rust-lang/crates.io-index" 2099 + checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" 2100 + 2101 + [[package]] 2102 + name = "jobserver" 2103 + version = "0.1.34" 2104 + source = "registry+https://github.com/rust-lang/crates.io-index" 2105 + checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" 2106 + dependencies = [ 2107 + "getrandom 0.3.4", 2108 + "libc", 2109 + ] 2110 + 2111 + [[package]] 2112 + name = "js-sys" 2113 + version = "0.3.97" 2114 + source = "registry+https://github.com/rust-lang/crates.io-index" 2115 + checksum = "a1840c94c045fbcf8ba2812c95db44499f7c64910a912551aaaa541decebcacf" 2116 + dependencies = [ 2117 + "cfg-if", 2118 + "futures-util", 2119 + "once_cell", 2120 + "wasm-bindgen", 2121 + ] 2122 + 2123 + [[package]] 2124 + name = "json5" 2125 + version = "0.4.1" 2126 + source = "registry+https://github.com/rust-lang/crates.io-index" 2127 + checksum = "96b0db21af676c1ce64250b5f40f3ce2cf27e4e47cb91ed91eb6fe9350b430c1" 2128 + dependencies = [ 2129 + "pest", 2130 + "pest_derive", 2131 + "serde", 2132 + ] 2133 + 2134 + [[package]] 2135 + name = "jsonwebtoken" 2136 + version = "9.3.1" 2137 + source = "registry+https://github.com/rust-lang/crates.io-index" 2138 + checksum = "5a87cc7a48537badeae96744432de36f4be2b4a34a05a5ef32e9dd8a1c169dde" 2139 + dependencies = [ 2140 + "base64 0.22.1", 2141 + "js-sys", 2142 + "pem", 2143 + "ring", 2144 + "serde", 2145 + "serde_json", 2146 + "simple_asn1", 2147 + ] 2148 + 2149 + [[package]] 2150 + name = "lazy_static" 2151 + version = "1.5.0" 2152 + source = "registry+https://github.com/rust-lang/crates.io-index" 2153 + checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" 2154 + dependencies = [ 2155 + "spin", 2156 + ] 2157 + 2158 + [[package]] 2159 + name = "leb128fmt" 2160 + version = "0.1.0" 2161 + source = "registry+https://github.com/rust-lang/crates.io-index" 2162 + checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" 2163 + 2164 + [[package]] 2165 + name = "libbz2-rs-sys" 2166 + version = "0.2.3" 2167 + source = "registry+https://github.com/rust-lang/crates.io-index" 2168 + checksum = "b3a6a8c165077efc8f3a971534c50ea6a1a18b329ef4a66e897a7e3a1494565f" 2169 + 2170 + [[package]] 2171 + name = "libc" 2172 + version = "0.2.186" 2173 + source = "registry+https://github.com/rust-lang/crates.io-index" 2174 + checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" 2175 + 2176 + [[package]] 2177 + name = "libm" 2178 + version = "0.2.16" 2179 + source = "registry+https://github.com/rust-lang/crates.io-index" 2180 + checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" 2181 + 2182 + [[package]] 2183 + name = "libredox" 2184 + version = "0.1.16" 2185 + source = "registry+https://github.com/rust-lang/crates.io-index" 2186 + checksum = "e02f3bb43d335493c96bf3fd3a321600bf6bd07ed34bc64118e9293bdffea46c" 2187 + dependencies = [ 2188 + "bitflags 2.11.1", 2189 + "libc", 2190 + "plain", 2191 + "redox_syscall 0.7.4", 2192 + ] 2193 + 2194 + [[package]] 2195 + name = "libsqlite3-sys" 2196 + version = "0.30.1" 2197 + source = "registry+https://github.com/rust-lang/crates.io-index" 2198 + checksum = "2e99fb7a497b1e3339bc746195567ed8d3e24945ecd636e3619d20b9de9e9149" 2199 + dependencies = [ 2200 + "cc", 2201 + "pkg-config", 2202 + "vcpkg", 2203 + ] 2204 + 2205 + [[package]] 2206 + name = "linux-raw-sys" 2207 + version = "0.12.1" 2208 + source = "registry+https://github.com/rust-lang/crates.io-index" 2209 + checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" 2210 + 2211 + [[package]] 2212 + name = "litemap" 2213 + version = "0.8.2" 2214 + source = "registry+https://github.com/rust-lang/crates.io-index" 2215 + checksum = "92daf443525c4cce67b150400bc2316076100ce0b3686209eb8cf3c31612e6f0" 2216 + 2217 + [[package]] 2218 + name = "lock_api" 2219 + version = "0.4.14" 2220 + source = "registry+https://github.com/rust-lang/crates.io-index" 2221 + checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" 2222 + dependencies = [ 2223 + "scopeguard", 2224 + ] 2225 + 2226 + [[package]] 2227 + name = "log" 2228 + version = "0.4.29" 2229 + source = "registry+https://github.com/rust-lang/crates.io-index" 2230 + checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" 2231 + 2232 + [[package]] 2233 + name = "lru" 2234 + version = "0.12.5" 2235 + source = "registry+https://github.com/rust-lang/crates.io-index" 2236 + checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" 2237 + dependencies = [ 2238 + "hashbrown 0.15.5", 2239 + ] 2240 + 2241 + [[package]] 2242 + name = "matchers" 2243 + version = "0.2.0" 2244 + source = "registry+https://github.com/rust-lang/crates.io-index" 2245 + checksum = "d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9" 2246 + dependencies = [ 2247 + "regex-automata", 2248 + ] 2249 + 2250 + [[package]] 2251 + name = "md-5" 2252 + version = "0.10.6" 2253 + source = "registry+https://github.com/rust-lang/crates.io-index" 2254 + checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" 2255 + dependencies = [ 2256 + "cfg-if", 2257 + "digest 0.10.7", 2258 + ] 2259 + 2260 + [[package]] 2261 + name = "memchr" 2262 + version = "2.8.0" 2263 + source = "registry+https://github.com/rust-lang/crates.io-index" 2264 + checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" 2265 + 2266 + [[package]] 2267 + name = "mime" 2268 + version = "0.3.17" 2269 + source = "registry+https://github.com/rust-lang/crates.io-index" 2270 + checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" 2271 + 2272 + [[package]] 2273 + name = "mime_guess" 2274 + version = "2.0.5" 2275 + source = "registry+https://github.com/rust-lang/crates.io-index" 2276 + checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" 2277 + dependencies = [ 2278 + "mime", 2279 + "unicase", 2280 + ] 2281 + 2282 + [[package]] 2283 + name = "minimal-lexical" 2284 + version = "0.2.1" 2285 + source = "registry+https://github.com/rust-lang/crates.io-index" 2286 + checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" 2287 + 2288 + [[package]] 2289 + name = "mio" 2290 + version = "1.2.0" 2291 + source = "registry+https://github.com/rust-lang/crates.io-index" 2292 + checksum = "50b7e5b27aa02a74bac8c3f23f448f8d87ff11f92d3aac1a6ed369ee08cc56c1" 2293 + dependencies = [ 2294 + "libc", 2295 + "wasi", 2296 + "windows-sys 0.61.2", 2297 + ] 2298 + 2299 + [[package]] 2300 + name = "multer" 2301 + version = "3.1.0" 2302 + source = "registry+https://github.com/rust-lang/crates.io-index" 2303 + checksum = "83e87776546dc87511aa5ee218730c92b666d7264ab6ed41f9d215af9cd5224b" 2304 + dependencies = [ 2305 + "bytes", 2306 + "encoding_rs", 2307 + "futures-util", 2308 + "http 1.4.0", 2309 + "httparse", 2310 + "memchr", 2311 + "mime", 2312 + "spin", 2313 + "tokio", 2314 + "version_check", 2315 + ] 2316 + 2317 + [[package]] 2318 + name = "native-tls" 2319 + version = "0.2.18" 2320 + source = "registry+https://github.com/rust-lang/crates.io-index" 2321 + checksum = "465500e14ea162429d264d44189adc38b199b62b1c21eea9f69e4b73cb03bbf2" 2322 + dependencies = [ 2323 + "libc", 2324 + "log", 2325 + "openssl", 2326 + "openssl-probe", 2327 + "openssl-sys", 2328 + "schannel", 2329 + "security-framework", 2330 + "security-framework-sys", 2331 + "tempfile", 2332 + ] 2333 + 2334 + [[package]] 2335 + name = "nix" 2336 + version = "0.30.1" 2337 + source = "registry+https://github.com/rust-lang/crates.io-index" 2338 + checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6" 2339 + dependencies = [ 2340 + "bitflags 2.11.1", 2341 + "cfg-if", 2342 + "cfg_aliases", 2343 + "libc", 2344 + ] 2345 + 2346 + [[package]] 2347 + name = "nom" 2348 + version = "7.1.3" 2349 + source = "registry+https://github.com/rust-lang/crates.io-index" 2350 + checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" 2351 + dependencies = [ 2352 + "memchr", 2353 + "minimal-lexical", 2354 + ] 2355 + 2356 + [[package]] 2357 + name = "nu-ansi-term" 2358 + version = "0.50.3" 2359 + source = "registry+https://github.com/rust-lang/crates.io-index" 2360 + checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" 2361 + dependencies = [ 2362 + "windows-sys 0.61.2", 2363 + ] 2364 + 2365 + [[package]] 2366 + name = "num-bigint" 2367 + version = "0.4.6" 2368 + source = "registry+https://github.com/rust-lang/crates.io-index" 2369 + checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" 2370 + dependencies = [ 2371 + "num-integer", 2372 + "num-traits", 2373 + ] 2374 + 2375 + [[package]] 2376 + name = "num-bigint-dig" 2377 + version = "0.8.6" 2378 + source = "registry+https://github.com/rust-lang/crates.io-index" 2379 + checksum = "e661dda6640fad38e827a6d4a310ff4763082116fe217f279885c97f511bb0b7" 2380 + dependencies = [ 2381 + "lazy_static", 2382 + "libm", 2383 + "num-integer", 2384 + "num-iter", 2385 + "num-traits", 2386 + "rand 0.8.6", 2387 + "smallvec", 2388 + "zeroize", 2389 + ] 2390 + 2391 + [[package]] 2392 + name = "num-conv" 2393 + version = "0.2.1" 2394 + source = "registry+https://github.com/rust-lang/crates.io-index" 2395 + checksum = "c6673768db2d862beb9b39a78fdcb1a69439615d5794a1be50caa9bc92c81967" 2396 + 2397 + [[package]] 2398 + name = "num-integer" 2399 + version = "0.1.46" 2400 + source = "registry+https://github.com/rust-lang/crates.io-index" 2401 + checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" 2402 + dependencies = [ 2403 + "num-traits", 2404 + ] 2405 + 2406 + [[package]] 2407 + name = "num-iter" 2408 + version = "0.1.45" 2409 + source = "registry+https://github.com/rust-lang/crates.io-index" 2410 + checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" 2411 + dependencies = [ 2412 + "autocfg", 2413 + "num-integer", 2414 + "num-traits", 2415 + ] 2416 + 2417 + [[package]] 2418 + name = "num-traits" 2419 + version = "0.2.19" 2420 + source = "registry+https://github.com/rust-lang/crates.io-index" 2421 + checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" 2422 + dependencies = [ 2423 + "autocfg", 2424 + "libm", 2425 + ] 2426 + 2427 + [[package]] 2428 + name = "once_cell" 2429 + version = "1.21.4" 2430 + source = "registry+https://github.com/rust-lang/crates.io-index" 2431 + checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" 2432 + 2433 + [[package]] 2434 + name = "once_cell_polyfill" 2435 + version = "1.70.2" 2436 + source = "registry+https://github.com/rust-lang/crates.io-index" 2437 + checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" 2438 + 2439 + [[package]] 2440 + name = "openssl" 2441 + version = "0.10.78" 2442 + source = "registry+https://github.com/rust-lang/crates.io-index" 2443 + checksum = "f38c4372413cdaaf3cc79dd92d29d7d9f5ab09b51b10dded508fb90bb70b9222" 2444 + dependencies = [ 2445 + "bitflags 2.11.1", 2446 + "cfg-if", 2447 + "foreign-types", 2448 + "libc", 2449 + "once_cell", 2450 + "openssl-macros", 2451 + "openssl-sys", 2452 + ] 2453 + 2454 + [[package]] 2455 + name = "openssl-macros" 2456 + version = "0.1.1" 2457 + source = "registry+https://github.com/rust-lang/crates.io-index" 2458 + checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" 2459 + dependencies = [ 2460 + "proc-macro2", 2461 + "quote", 2462 + "syn", 2463 + ] 2464 + 2465 + [[package]] 2466 + name = "openssl-probe" 2467 + version = "0.2.1" 2468 + source = "registry+https://github.com/rust-lang/crates.io-index" 2469 + checksum = "7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe" 2470 + 2471 + [[package]] 2472 + name = "openssl-sys" 2473 + version = "0.9.114" 2474 + source = "registry+https://github.com/rust-lang/crates.io-index" 2475 + checksum = "13ce1245cd07fcc4cfdb438f7507b0c7e4f3849a69fd84d52374c66d83741bb6" 2476 + dependencies = [ 2477 + "cc", 2478 + "libc", 2479 + "pkg-config", 2480 + "vcpkg", 2481 + ] 2482 + 2483 + [[package]] 2484 + name = "ordered-multimap" 2485 + version = "0.7.3" 2486 + source = "registry+https://github.com/rust-lang/crates.io-index" 2487 + checksum = "49203cdcae0030493bad186b28da2fa25645fa276a51b6fec8010d281e02ef79" 2488 + dependencies = [ 2489 + "dlv-list", 2490 + "hashbrown 0.14.5", 2491 + ] 2492 + 2493 + [[package]] 2494 + name = "outref" 2495 + version = "0.5.2" 2496 + source = "registry+https://github.com/rust-lang/crates.io-index" 2497 + checksum = "1a80800c0488c3a21695ea981a54918fbb37abf04f4d0720c453632255e2ff0e" 2498 + 2499 + [[package]] 2500 + name = "p256" 2501 + version = "0.11.1" 2502 + source = "registry+https://github.com/rust-lang/crates.io-index" 2503 + checksum = "51f44edd08f51e2ade572f141051021c5af22677e42b7dd28a88155151c33594" 2504 + dependencies = [ 2505 + "ecdsa", 2506 + "elliptic-curve", 2507 + "sha2 0.10.9", 2508 + ] 2509 + 2510 + [[package]] 2511 + name = "parking" 2512 + version = "2.2.1" 2513 + source = "registry+https://github.com/rust-lang/crates.io-index" 2514 + checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" 2515 + 2516 + [[package]] 2517 + name = "parking_lot" 2518 + version = "0.11.2" 2519 + source = "registry+https://github.com/rust-lang/crates.io-index" 2520 + checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" 2521 + dependencies = [ 2522 + "instant", 2523 + "lock_api", 2524 + "parking_lot_core 0.8.6", 2525 + ] 2526 + 2527 + [[package]] 2528 + name = "parking_lot" 2529 + version = "0.12.5" 2530 + source = "registry+https://github.com/rust-lang/crates.io-index" 2531 + checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" 2532 + dependencies = [ 2533 + "lock_api", 2534 + "parking_lot_core 0.9.12", 2535 + ] 2536 + 2537 + [[package]] 2538 + name = "parking_lot_core" 2539 + version = "0.8.6" 2540 + source = "registry+https://github.com/rust-lang/crates.io-index" 2541 + checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc" 2542 + dependencies = [ 2543 + "cfg-if", 2544 + "instant", 2545 + "libc", 2546 + "redox_syscall 0.2.16", 2547 + "smallvec", 2548 + "winapi", 2549 + ] 2550 + 2551 + [[package]] 2552 + name = "parking_lot_core" 2553 + version = "0.9.12" 2554 + source = "registry+https://github.com/rust-lang/crates.io-index" 2555 + checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" 2556 + dependencies = [ 2557 + "cfg-if", 2558 + "libc", 2559 + "redox_syscall 0.5.18", 2560 + "smallvec", 2561 + "windows-link", 2562 + ] 2563 + 2564 + [[package]] 2565 + name = "password-hash" 2566 + version = "0.5.0" 2567 + source = "registry+https://github.com/rust-lang/crates.io-index" 2568 + checksum = "346f04948ba92c43e8469c1ee6736c7563d71012b17d40745260fe106aac2166" 2569 + dependencies = [ 2570 + "base64ct", 2571 + "rand_core 0.6.4", 2572 + "subtle", 2573 + ] 2574 + 2575 + [[package]] 2576 + name = "pathdiff" 2577 + version = "0.2.3" 2578 + source = "registry+https://github.com/rust-lang/crates.io-index" 2579 + checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" 2580 + 2581 + [[package]] 2582 + name = "pem" 2583 + version = "3.0.6" 2584 + source = "registry+https://github.com/rust-lang/crates.io-index" 2585 + checksum = "1d30c53c26bc5b31a98cd02d20f25a7c8567146caf63ed593a9d87b2775291be" 2586 + dependencies = [ 2587 + "base64 0.22.1", 2588 + "serde_core", 2589 + ] 2590 + 2591 + [[package]] 2592 + name = "pem-rfc7468" 2593 + version = "0.7.0" 2594 + source = "registry+https://github.com/rust-lang/crates.io-index" 2595 + checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" 2596 + dependencies = [ 2597 + "base64ct", 2598 + ] 2599 + 2600 + [[package]] 2601 + name = "percent-encoding" 2602 + version = "2.3.2" 2603 + source = "registry+https://github.com/rust-lang/crates.io-index" 2604 + checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" 2605 + 2606 + [[package]] 2607 + name = "pest" 2608 + version = "2.8.6" 2609 + source = "registry+https://github.com/rust-lang/crates.io-index" 2610 + checksum = "e0848c601009d37dfa3430c4666e147e49cdcf1b92ecd3e63657d8a5f19da662" 2611 + dependencies = [ 2612 + "memchr", 2613 + "ucd-trie", 2614 + ] 2615 + 2616 + [[package]] 2617 + name = "pest_derive" 2618 + version = "2.8.6" 2619 + source = "registry+https://github.com/rust-lang/crates.io-index" 2620 + checksum = "11f486f1ea21e6c10ed15d5a7c77165d0ee443402f0780849d1768e7d9d6fe77" 2621 + dependencies = [ 2622 + "pest", 2623 + "pest_generator", 2624 + ] 2625 + 2626 + [[package]] 2627 + name = "pest_generator" 2628 + version = "2.8.6" 2629 + source = "registry+https://github.com/rust-lang/crates.io-index" 2630 + checksum = "8040c4647b13b210a963c1ed407c1ff4fdfa01c31d6d2a098218702e6664f94f" 2631 + dependencies = [ 2632 + "pest", 2633 + "pest_meta", 2634 + "proc-macro2", 2635 + "quote", 2636 + "syn", 2637 + ] 2638 + 2639 + [[package]] 2640 + name = "pest_meta" 2641 + version = "2.8.6" 2642 + source = "registry+https://github.com/rust-lang/crates.io-index" 2643 + checksum = "89815c69d36021a140146f26659a81d6c2afa33d216d736dd4be5381a7362220" 2644 + dependencies = [ 2645 + "pest", 2646 + "sha2 0.10.9", 2647 + ] 2648 + 2649 + [[package]] 2650 + name = "pin-project-lite" 2651 + version = "0.2.17" 2652 + source = "registry+https://github.com/rust-lang/crates.io-index" 2653 + checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" 2654 + 2655 + [[package]] 2656 + name = "pin-utils" 2657 + version = "0.1.0" 2658 + source = "registry+https://github.com/rust-lang/crates.io-index" 2659 + checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" 2660 + 2661 + [[package]] 2662 + name = "pkcs1" 2663 + version = "0.7.5" 2664 + source = "registry+https://github.com/rust-lang/crates.io-index" 2665 + checksum = "c8ffb9f10fa047879315e6625af03c164b16962a5368d724ed16323b68ace47f" 2666 + dependencies = [ 2667 + "der 0.7.10", 2668 + "pkcs8 0.10.2", 2669 + "spki 0.7.3", 2670 + ] 2671 + 2672 + [[package]] 2673 + name = "pkcs8" 2674 + version = "0.9.0" 2675 + source = "registry+https://github.com/rust-lang/crates.io-index" 2676 + checksum = "9eca2c590a5f85da82668fa685c09ce2888b9430e83299debf1f34b65fd4a4ba" 2677 + dependencies = [ 2678 + "der 0.6.1", 2679 + "spki 0.6.0", 2680 + ] 2681 + 2682 + [[package]] 2683 + name = "pkcs8" 2684 + version = "0.10.2" 2685 + source = "registry+https://github.com/rust-lang/crates.io-index" 2686 + checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" 2687 + dependencies = [ 2688 + "der 0.7.10", 2689 + "spki 0.7.3", 2690 + ] 2691 + 2692 + [[package]] 2693 + name = "pkg-config" 2694 + version = "0.3.33" 2695 + source = "registry+https://github.com/rust-lang/crates.io-index" 2696 + checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" 2697 + 2698 + [[package]] 2699 + name = "plain" 2700 + version = "0.2.3" 2701 + source = "registry+https://github.com/rust-lang/crates.io-index" 2702 + checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" 2703 + 2704 + [[package]] 2705 + name = "poem" 2706 + version = "3.1.12" 2707 + source = "registry+https://github.com/rust-lang/crates.io-index" 2708 + checksum = "9f977080932c87287147dca052951c3e2696f8759863f6b4e4c0c9ffe7a4cc8b" 2709 + dependencies = [ 2710 + "bytes", 2711 + "futures-util", 2712 + "headers", 2713 + "http 1.4.0", 2714 + "http-body-util", 2715 + "httpdate", 2716 + "hyper 1.9.0", 2717 + "hyper-util", 2718 + "mime", 2719 + "mime_guess", 2720 + "multer", 2721 + "nix", 2722 + "parking_lot 0.12.5", 2723 + "percent-encoding", 2724 + "pin-project-lite", 2725 + "poem-derive", 2726 + "quick-xml", 2727 + "regex", 2728 + "rfc7239", 2729 + "serde", 2730 + "serde_json", 2731 + "serde_urlencoded", 2732 + "serde_yaml", 2733 + "smallvec", 2734 + "sync_wrapper", 2735 + "tempfile", 2736 + "thiserror 2.0.18", 2737 + "tokio", 2738 + "tokio-stream", 2739 + "tokio-util", 2740 + "tracing", 2741 + "wildmatch", 2742 + ] 2743 + 2744 + [[package]] 2745 + name = "poem-derive" 2746 + version = "3.1.12" 2747 + source = "registry+https://github.com/rust-lang/crates.io-index" 2748 + checksum = "056e2fea6de1cb240ffe23cfc4fc370b629f8be83b5f27e16b7acd5231a72de4" 2749 + dependencies = [ 2750 + "proc-macro-crate", 2751 + "proc-macro2", 2752 + "quote", 2753 + "syn", 2754 + ] 2755 + 2756 + [[package]] 2757 + name = "poem-openapi" 2758 + version = "5.1.16" 2759 + source = "registry+https://github.com/rust-lang/crates.io-index" 2760 + checksum = "1ccbcc395bf4dd03df1da32da351b6b6732e4074ce27ddec315650e52a2be44c" 2761 + dependencies = [ 2762 + "base64 0.22.1", 2763 + "bytes", 2764 + "derive_more", 2765 + "futures-util", 2766 + "indexmap", 2767 + "itertools", 2768 + "mime", 2769 + "num-traits", 2770 + "poem", 2771 + "poem-openapi-derive", 2772 + "quick-xml", 2773 + "regex", 2774 + "serde", 2775 + "serde_json", 2776 + "serde_urlencoded", 2777 + "serde_yaml", 2778 + "thiserror 2.0.18", 2779 + "tokio", 2780 + ] 2781 + 2782 + [[package]] 2783 + name = "poem-openapi-derive" 2784 + version = "5.1.16" 2785 + source = "registry+https://github.com/rust-lang/crates.io-index" 2786 + checksum = "41273b691a3d467a8c44d05506afba9f7b6bd56c9cdf80123de13fe52d7ec587" 2787 + dependencies = [ 2788 + "darling", 2789 + "http 1.4.0", 2790 + "indexmap", 2791 + "mime", 2792 + "proc-macro-crate", 2793 + "proc-macro2", 2794 + "quote", 2795 + "regex", 2796 + "syn", 2797 + "thiserror 2.0.18", 2798 + ] 2799 + 2800 + [[package]] 2801 + name = "potential_utf" 2802 + version = "0.1.5" 2803 + source = "registry+https://github.com/rust-lang/crates.io-index" 2804 + checksum = "0103b1cef7ec0cf76490e969665504990193874ea05c85ff9bab8b911d0a0564" 2805 + dependencies = [ 2806 + "zerovec", 2807 + ] 2808 + 2809 + [[package]] 2810 + name = "powerfmt" 2811 + version = "0.2.0" 2812 + source = "registry+https://github.com/rust-lang/crates.io-index" 2813 + checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" 2814 + 2815 + [[package]] 2816 + name = "ppv-lite86" 2817 + version = "0.2.21" 2818 + source = "registry+https://github.com/rust-lang/crates.io-index" 2819 + checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" 2820 + dependencies = [ 2821 + "zerocopy", 2822 + ] 2823 + 2824 + [[package]] 2825 + name = "prettyplease" 2826 + version = "0.2.37" 2827 + source = "registry+https://github.com/rust-lang/crates.io-index" 2828 + checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" 2829 + dependencies = [ 2830 + "proc-macro2", 2831 + "syn", 2832 + ] 2833 + 2834 + [[package]] 2835 + name = "proc-macro-crate" 2836 + version = "3.5.0" 2837 + source = "registry+https://github.com/rust-lang/crates.io-index" 2838 + checksum = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f" 2839 + dependencies = [ 2840 + "toml_edit 0.25.11+spec-1.1.0", 2841 + ] 2842 + 2843 + [[package]] 2844 + name = "proc-macro2" 2845 + version = "1.0.106" 2846 + source = "registry+https://github.com/rust-lang/crates.io-index" 2847 + checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" 2848 + dependencies = [ 2849 + "unicode-ident", 2850 + ] 2851 + 2852 + [[package]] 2853 + name = "qbsdiff" 2854 + version = "1.4.4" 2855 + source = "registry+https://github.com/rust-lang/crates.io-index" 2856 + checksum = "fdc7f24528be166f08f2c7becaca5618865499b6ded2565d5afcd795cc0d7596" 2857 + dependencies = [ 2858 + "byteorder", 2859 + "bzip2", 2860 + "rayon", 2861 + "suffix_array", 2862 + ] 2863 + 2864 + [[package]] 2865 + name = "quick-xml" 2866 + version = "0.36.2" 2867 + source = "registry+https://github.com/rust-lang/crates.io-index" 2868 + checksum = "f7649a7b4df05aed9ea7ec6f628c67c9953a43869b8bc50929569b2999d443fe" 2869 + dependencies = [ 2870 + "memchr", 2871 + "serde", 2872 + ] 2873 + 2874 + [[package]] 2875 + name = "quote" 2876 + version = "1.0.45" 2877 + source = "registry+https://github.com/rust-lang/crates.io-index" 2878 + checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" 2879 + dependencies = [ 2880 + "proc-macro2", 2881 + ] 2882 + 2883 + [[package]] 2884 + name = "r-efi" 2885 + version = "5.3.0" 2886 + source = "registry+https://github.com/rust-lang/crates.io-index" 2887 + checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" 2888 + 2889 + [[package]] 2890 + name = "r-efi" 2891 + version = "6.0.0" 2892 + source = "registry+https://github.com/rust-lang/crates.io-index" 2893 + checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" 2894 + 2895 + [[package]] 2896 + name = "rand" 2897 + version = "0.8.6" 2898 + source = "registry+https://github.com/rust-lang/crates.io-index" 2899 + checksum = "5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a" 2900 + dependencies = [ 2901 + "libc", 2902 + "rand_chacha 0.3.1", 2903 + "rand_core 0.6.4", 2904 + ] 2905 + 2906 + [[package]] 2907 + name = "rand" 2908 + version = "0.9.4" 2909 + source = "registry+https://github.com/rust-lang/crates.io-index" 2910 + checksum = "44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea" 2911 + dependencies = [ 2912 + "rand_chacha 0.9.0", 2913 + "rand_core 0.9.5", 2914 + ] 2915 + 2916 + [[package]] 2917 + name = "rand_chacha" 2918 + version = "0.3.1" 2919 + source = "registry+https://github.com/rust-lang/crates.io-index" 2920 + checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" 2921 + dependencies = [ 2922 + "ppv-lite86", 2923 + "rand_core 0.6.4", 2924 + ] 2925 + 2926 + [[package]] 2927 + name = "rand_chacha" 2928 + version = "0.9.0" 2929 + source = "registry+https://github.com/rust-lang/crates.io-index" 2930 + checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" 2931 + dependencies = [ 2932 + "ppv-lite86", 2933 + "rand_core 0.9.5", 2934 + ] 2935 + 2936 + [[package]] 2937 + name = "rand_core" 2938 + version = "0.6.4" 2939 + source = "registry+https://github.com/rust-lang/crates.io-index" 2940 + checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" 2941 + dependencies = [ 2942 + "getrandom 0.2.17", 2943 + ] 2944 + 2945 + [[package]] 2946 + name = "rand_core" 2947 + version = "0.9.5" 2948 + source = "registry+https://github.com/rust-lang/crates.io-index" 2949 + checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" 2950 + dependencies = [ 2951 + "getrandom 0.3.4", 2952 + ] 2953 + 2954 + [[package]] 2955 + name = "rayon" 2956 + version = "1.12.0" 2957 + source = "registry+https://github.com/rust-lang/crates.io-index" 2958 + checksum = "fb39b166781f92d482534ef4b4b1b2568f42613b53e5b6c160e24cfbfa30926d" 2959 + dependencies = [ 2960 + "either", 2961 + "rayon-core", 2962 + ] 2963 + 2964 + [[package]] 2965 + name = "rayon-core" 2966 + version = "1.13.0" 2967 + source = "registry+https://github.com/rust-lang/crates.io-index" 2968 + checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" 2969 + dependencies = [ 2970 + "crossbeam-deque", 2971 + "crossbeam-utils", 2972 + ] 2973 + 2974 + [[package]] 2975 + name = "redox_syscall" 2976 + version = "0.2.16" 2977 + source = "registry+https://github.com/rust-lang/crates.io-index" 2978 + checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" 2979 + dependencies = [ 2980 + "bitflags 1.3.2", 2981 + ] 2982 + 2983 + [[package]] 2984 + name = "redox_syscall" 2985 + version = "0.5.18" 2986 + source = "registry+https://github.com/rust-lang/crates.io-index" 2987 + checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" 2988 + dependencies = [ 2989 + "bitflags 2.11.1", 2990 + ] 2991 + 2992 + [[package]] 2993 + name = "redox_syscall" 2994 + version = "0.7.4" 2995 + source = "registry+https://github.com/rust-lang/crates.io-index" 2996 + checksum = "f450ad9c3b1da563fb6948a8e0fb0fb9269711c9c73d9ea1de5058c79c8d643a" 2997 + dependencies = [ 2998 + "bitflags 2.11.1", 2999 + ] 3000 + 3001 + [[package]] 3002 + name = "regex" 3003 + version = "1.12.3" 3004 + source = "registry+https://github.com/rust-lang/crates.io-index" 3005 + checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" 3006 + dependencies = [ 3007 + "aho-corasick", 3008 + "memchr", 3009 + "regex-automata", 3010 + "regex-syntax", 3011 + ] 3012 + 3013 + [[package]] 3014 + name = "regex-automata" 3015 + version = "0.4.14" 3016 + source = "registry+https://github.com/rust-lang/crates.io-index" 3017 + checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" 3018 + dependencies = [ 3019 + "aho-corasick", 3020 + "memchr", 3021 + "regex-syntax", 3022 + ] 3023 + 3024 + [[package]] 3025 + name = "regex-lite" 3026 + version = "0.1.9" 3027 + source = "registry+https://github.com/rust-lang/crates.io-index" 3028 + checksum = "cab834c73d247e67f4fae452806d17d3c7501756d98c8808d7c9c7aa7d18f973" 3029 + 3030 + [[package]] 3031 + name = "regex-syntax" 3032 + version = "0.8.10" 3033 + source = "registry+https://github.com/rust-lang/crates.io-index" 3034 + checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" 3035 + 3036 + [[package]] 3037 + name = "reqwest" 3038 + version = "0.12.28" 3039 + source = "registry+https://github.com/rust-lang/crates.io-index" 3040 + checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147" 3041 + dependencies = [ 3042 + "base64 0.22.1", 3043 + "bytes", 3044 + "encoding_rs", 3045 + "futures-core", 3046 + "futures-util", 3047 + "h2 0.4.13", 3048 + "http 1.4.0", 3049 + "http-body 1.0.1", 3050 + "http-body-util", 3051 + "hyper 1.9.0", 3052 + "hyper-rustls 0.27.9", 3053 + "hyper-tls", 3054 + "hyper-util", 3055 + "js-sys", 3056 + "log", 3057 + "mime", 3058 + "mime_guess", 3059 + "native-tls", 3060 + "percent-encoding", 3061 + "pin-project-lite", 3062 + "rustls-pki-types", 3063 + "serde", 3064 + "serde_json", 3065 + "serde_urlencoded", 3066 + "sync_wrapper", 3067 + "tokio", 3068 + "tokio-native-tls", 3069 + "tokio-util", 3070 + "tower", 3071 + "tower-http", 3072 + "tower-service", 3073 + "url", 3074 + "wasm-bindgen", 3075 + "wasm-bindgen-futures", 3076 + "wasm-streams", 3077 + "web-sys", 3078 + ] 3079 + 3080 + [[package]] 3081 + name = "reqwest-middleware" 3082 + version = "0.3.3" 3083 + source = "registry+https://github.com/rust-lang/crates.io-index" 3084 + checksum = "562ceb5a604d3f7c885a792d42c199fd8af239d0a51b2fa6a78aafa092452b04" 3085 + dependencies = [ 3086 + "anyhow", 3087 + "async-trait", 3088 + "http 1.4.0", 3089 + "reqwest", 3090 + "serde", 3091 + "thiserror 1.0.69", 3092 + "tower-service", 3093 + ] 3094 + 3095 + [[package]] 3096 + name = "reqwest-retry" 3097 + version = "0.5.0" 3098 + source = "registry+https://github.com/rust-lang/crates.io-index" 3099 + checksum = "40f342894422862af74c50e1e9601cf0931accc9c6981e5eb413c46603b616b5" 3100 + dependencies = [ 3101 + "anyhow", 3102 + "async-trait", 3103 + "chrono", 3104 + "futures", 3105 + "getrandom 0.2.17", 3106 + "http 1.4.0", 3107 + "hyper 1.9.0", 3108 + "parking_lot 0.11.2", 3109 + "reqwest", 3110 + "reqwest-middleware", 3111 + "retry-policies", 3112 + "tokio", 3113 + "tracing", 3114 + "wasm-timer", 3115 + ] 3116 + 3117 + [[package]] 3118 + name = "retry-policies" 3119 + version = "0.3.0" 3120 + source = "registry+https://github.com/rust-lang/crates.io-index" 3121 + checksum = "493b4243e32d6eedd29f9a398896e35c6943a123b55eec97dcaee98310d25810" 3122 + dependencies = [ 3123 + "anyhow", 3124 + "chrono", 3125 + "rand 0.8.6", 3126 + ] 3127 + 3128 + [[package]] 3129 + name = "rfc6979" 3130 + version = "0.3.1" 3131 + source = "registry+https://github.com/rust-lang/crates.io-index" 3132 + checksum = "7743f17af12fa0b03b803ba12cd6a8d9483a587e89c69445e3909655c0b9fabb" 3133 + dependencies = [ 3134 + "crypto-bigint 0.4.9", 3135 + "hmac 0.12.1", 3136 + "zeroize", 3137 + ] 3138 + 3139 + [[package]] 3140 + name = "rfc7239" 3141 + version = "0.1.3" 3142 + source = "registry+https://github.com/rust-lang/crates.io-index" 3143 + checksum = "4a82f1d1e38e9a85bb58ffcfadf22ed6f2c94e8cd8581ec2b0f80a2a6858350f" 3144 + dependencies = [ 3145 + "uncased", 3146 + ] 3147 + 3148 + [[package]] 3149 + name = "ring" 3150 + version = "0.17.14" 3151 + source = "registry+https://github.com/rust-lang/crates.io-index" 3152 + checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" 3153 + dependencies = [ 3154 + "cc", 3155 + "cfg-if", 3156 + "getrandom 0.2.17", 3157 + "libc", 3158 + "untrusted", 3159 + "windows-sys 0.52.0", 3160 + ] 3161 + 3162 + [[package]] 3163 + name = "ron" 3164 + version = "0.8.1" 3165 + source = "registry+https://github.com/rust-lang/crates.io-index" 3166 + checksum = "b91f7eff05f748767f183df4320a63d6936e9c6107d97c9e6bdd9784f4289c94" 3167 + dependencies = [ 3168 + "base64 0.21.7", 3169 + "bitflags 2.11.1", 3170 + "serde", 3171 + "serde_derive", 3172 + ] 3173 + 3174 + [[package]] 3175 + name = "rsa" 3176 + version = "0.9.10" 3177 + source = "registry+https://github.com/rust-lang/crates.io-index" 3178 + checksum = "b8573f03f5883dcaebdfcf4725caa1ecb9c15b2ef50c43a07b816e06799bb12d" 3179 + dependencies = [ 3180 + "const-oid 0.9.6", 3181 + "digest 0.10.7", 3182 + "num-bigint-dig", 3183 + "num-integer", 3184 + "num-traits", 3185 + "pkcs1", 3186 + "pkcs8 0.10.2", 3187 + "rand_core 0.6.4", 3188 + "signature 2.2.0", 3189 + "spki 0.7.3", 3190 + "subtle", 3191 + "zeroize", 3192 + ] 3193 + 3194 + [[package]] 3195 + name = "rusqlite" 3196 + version = "0.32.1" 3197 + source = "registry+https://github.com/rust-lang/crates.io-index" 3198 + checksum = "7753b721174eb8ff87a9a0e799e2d7bc3749323e773db92e0984debb00019d6e" 3199 + dependencies = [ 3200 + "bitflags 2.11.1", 3201 + "fallible-iterator", 3202 + "fallible-streaming-iterator", 3203 + "hashlink 0.9.1", 3204 + "libsqlite3-sys", 3205 + "smallvec", 3206 + ] 3207 + 3208 + [[package]] 3209 + name = "rust-embed" 3210 + version = "8.11.0" 3211 + source = "registry+https://github.com/rust-lang/crates.io-index" 3212 + checksum = "04113cb9355a377d83f06ef1f0a45b8ab8cd7d8b1288160717d66df5c7988d27" 3213 + dependencies = [ 3214 + "rust-embed-impl", 3215 + "rust-embed-utils", 3216 + "walkdir", 3217 + ] 3218 + 3219 + [[package]] 3220 + name = "rust-embed-impl" 3221 + version = "8.11.0" 3222 + source = "registry+https://github.com/rust-lang/crates.io-index" 3223 + checksum = "da0902e4c7c8e997159ab384e6d0fc91c221375f6894346ae107f47dd0f3ccaa" 3224 + dependencies = [ 3225 + "proc-macro2", 3226 + "quote", 3227 + "rust-embed-utils", 3228 + "syn", 3229 + "walkdir", 3230 + ] 3231 + 3232 + [[package]] 3233 + name = "rust-embed-utils" 3234 + version = "8.11.0" 3235 + source = "registry+https://github.com/rust-lang/crates.io-index" 3236 + checksum = "5bcdef0be6fe7f6fa333b1073c949729274b05f123a0ad7efcb8efd878e5c3b1" 3237 + dependencies = [ 3238 + "sha2 0.10.9", 3239 + "walkdir", 3240 + ] 3241 + 3242 + [[package]] 3243 + name = "rust-ini" 3244 + version = "0.20.0" 3245 + source = "registry+https://github.com/rust-lang/crates.io-index" 3246 + checksum = "3e0698206bcb8882bf2a9ecb4c1e7785db57ff052297085a6efd4fe42302068a" 3247 + dependencies = [ 3248 + "cfg-if", 3249 + "ordered-multimap", 3250 + ] 3251 + 3252 + [[package]] 3253 + name = "rustc_version" 3254 + version = "0.4.1" 3255 + source = "registry+https://github.com/rust-lang/crates.io-index" 3256 + checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" 3257 + dependencies = [ 3258 + "semver", 3259 + ] 3260 + 3261 + [[package]] 3262 + name = "rustix" 3263 + version = "1.1.4" 3264 + source = "registry+https://github.com/rust-lang/crates.io-index" 3265 + checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" 3266 + dependencies = [ 3267 + "bitflags 2.11.1", 3268 + "errno", 3269 + "libc", 3270 + "linux-raw-sys", 3271 + "windows-sys 0.61.2", 3272 + ] 3273 + 3274 + [[package]] 3275 + name = "rustls" 3276 + version = "0.21.12" 3277 + source = "registry+https://github.com/rust-lang/crates.io-index" 3278 + checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" 3279 + dependencies = [ 3280 + "log", 3281 + "ring", 3282 + "rustls-webpki 0.101.7", 3283 + "sct", 3284 + ] 3285 + 3286 + [[package]] 3287 + name = "rustls" 3288 + version = "0.23.40" 3289 + source = "registry+https://github.com/rust-lang/crates.io-index" 3290 + checksum = "ef86cd5876211988985292b91c96a8f2d298df24e75989a43a3c73f2d4d8168b" 3291 + dependencies = [ 3292 + "aws-lc-rs", 3293 + "once_cell", 3294 + "ring", 3295 + "rustls-pki-types", 3296 + "rustls-webpki 0.103.13", 3297 + "subtle", 3298 + "zeroize", 3299 + ] 3300 + 3301 + [[package]] 3302 + name = "rustls-native-certs" 3303 + version = "0.8.3" 3304 + source = "registry+https://github.com/rust-lang/crates.io-index" 3305 + checksum = "612460d5f7bea540c490b2b6395d8e34a953e52b491accd6c86c8164c5932a63" 3306 + dependencies = [ 3307 + "openssl-probe", 3308 + "rustls-pki-types", 3309 + "schannel", 3310 + "security-framework", 3311 + ] 3312 + 3313 + [[package]] 3314 + name = "rustls-pki-types" 3315 + version = "1.14.1" 3316 + source = "registry+https://github.com/rust-lang/crates.io-index" 3317 + checksum = "30a7197ae7eb376e574fe940d068c30fe0462554a3ddbe4eca7838e049c937a9" 3318 + dependencies = [ 3319 + "zeroize", 3320 + ] 3321 + 3322 + [[package]] 3323 + name = "rustls-webpki" 3324 + version = "0.101.7" 3325 + source = "registry+https://github.com/rust-lang/crates.io-index" 3326 + checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" 3327 + dependencies = [ 3328 + "ring", 3329 + "untrusted", 3330 + ] 3331 + 3332 + [[package]] 3333 + name = "rustls-webpki" 3334 + version = "0.103.13" 3335 + source = "registry+https://github.com/rust-lang/crates.io-index" 3336 + checksum = "61c429a8649f110dddef65e2a5ad240f747e85f7758a6bccc7e5777bd33f756e" 3337 + dependencies = [ 3338 + "aws-lc-rs", 3339 + "ring", 3340 + "rustls-pki-types", 3341 + "untrusted", 3342 + ] 3343 + 3344 + [[package]] 3345 + name = "rustversion" 3346 + version = "1.0.22" 3347 + source = "registry+https://github.com/rust-lang/crates.io-index" 3348 + checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" 3349 + 3350 + [[package]] 3351 + name = "ryu" 3352 + version = "1.0.23" 3353 + source = "registry+https://github.com/rust-lang/crates.io-index" 3354 + checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f" 3355 + 3356 + [[package]] 3357 + name = "sacabase" 3358 + version = "2.0.0" 3359 + source = "registry+https://github.com/rust-lang/crates.io-index" 3360 + checksum = "9883fc3d6ce3d78bb54d908602f8bc1f7b5f983afe601dabe083009d86267a84" 3361 + dependencies = [ 3362 + "num-traits", 3363 + ] 3364 + 3365 + [[package]] 3366 + name = "same-file" 3367 + version = "1.0.6" 3368 + source = "registry+https://github.com/rust-lang/crates.io-index" 3369 + checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" 3370 + dependencies = [ 3371 + "winapi-util", 3372 + ] 3373 + 3374 + [[package]] 3375 + name = "schannel" 3376 + version = "0.1.29" 3377 + source = "registry+https://github.com/rust-lang/crates.io-index" 3378 + checksum = "91c1b7e4904c873ef0710c1f407dde2e6287de2bebc1bbbf7d430bb7cbffd939" 3379 + dependencies = [ 3380 + "windows-sys 0.61.2", 3381 + ] 3382 + 3383 + [[package]] 3384 + name = "scopeguard" 3385 + version = "1.2.0" 3386 + source = "registry+https://github.com/rust-lang/crates.io-index" 3387 + checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" 3388 + 3389 + [[package]] 3390 + name = "scratchback-achievements" 3391 + version = "0.1.0" 3392 + 3393 + [[package]] 3394 + name = "scratchback-admin" 3395 + version = "0.1.0" 3396 + dependencies = [ 3397 + "anyhow", 3398 + "chrono", 3399 + "clap", 3400 + "rusqlite", 3401 + "tokio", 3402 + "tracing-subscriber", 3403 + "ulid", 3404 + ] 3405 + 3406 + [[package]] 3407 + name = "scratchback-api" 3408 + version = "0.1.0" 3409 + dependencies = [ 3410 + "anyhow", 3411 + "argon2", 3412 + "aws-sdk-s3", 3413 + "base64 0.22.1", 3414 + "chrono", 3415 + "clap", 3416 + "config", 3417 + "dashmap", 3418 + "hmac 0.12.1", 3419 + "jsonwebtoken", 3420 + "mime_guess", 3421 + "once_cell", 3422 + "poem", 3423 + "poem-openapi", 3424 + "qbsdiff", 3425 + "reqwest", 3426 + "reqwest-middleware", 3427 + "reqwest-retry", 3428 + "rust-embed", 3429 + "serde", 3430 + "serde_json", 3431 + "sha2 0.10.9", 3432 + "similar", 3433 + "sqlx", 3434 + "thiserror 1.0.69", 3435 + "tokio", 3436 + "tower", 3437 + "tower-http", 3438 + "tower-layer", 3439 + "tower-service", 3440 + "tracing", 3441 + "tracing-subscriber", 3442 + "ulid", 3443 + "url", 3444 + "uuid", 3445 + ] 3446 + 3447 + [[package]] 3448 + name = "scratchback-cli" 3449 + version = "0.1.0" 3450 + 3451 + [[package]] 3452 + name = "scratchback-events" 3453 + version = "0.1.0" 3454 + 3455 + [[package]] 3456 + name = "scratchback-leaderboards" 3457 + version = "0.1.0" 3458 + 3459 + [[package]] 3460 + name = "scratchback-sdk-be" 3461 + version = "0.1.0" 3462 + 3463 + [[package]] 3464 + name = "scratchback-sdk-godot" 3465 + version = "0.1.0" 3466 + 3467 + [[package]] 3468 + name = "scratchback-sync" 3469 + version = "0.1.0" 3470 + 3471 + [[package]] 3472 + name = "sct" 3473 + version = "0.7.1" 3474 + source = "registry+https://github.com/rust-lang/crates.io-index" 3475 + checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" 3476 + dependencies = [ 3477 + "ring", 3478 + "untrusted", 3479 + ] 3480 + 3481 + [[package]] 3482 + name = "sec1" 3483 + version = "0.3.0" 3484 + source = "registry+https://github.com/rust-lang/crates.io-index" 3485 + checksum = "3be24c1842290c45df0a7bf069e0c268a747ad05a192f2fd7dcfdbc1cba40928" 3486 + dependencies = [ 3487 + "base16ct", 3488 + "der 0.6.1", 3489 + "generic-array", 3490 + "pkcs8 0.9.0", 3491 + "subtle", 3492 + "zeroize", 3493 + ] 3494 + 3495 + [[package]] 3496 + name = "security-framework" 3497 + version = "3.7.0" 3498 + source = "registry+https://github.com/rust-lang/crates.io-index" 3499 + checksum = "b7f4bc775c73d9a02cde8bf7b2ec4c9d12743edf609006c7facc23998404cd1d" 3500 + dependencies = [ 3501 + "bitflags 2.11.1", 3502 + "core-foundation 0.10.1", 3503 + "core-foundation-sys", 3504 + "libc", 3505 + "security-framework-sys", 3506 + ] 3507 + 3508 + [[package]] 3509 + name = "security-framework-sys" 3510 + version = "2.17.0" 3511 + source = "registry+https://github.com/rust-lang/crates.io-index" 3512 + checksum = "6ce2691df843ecc5d231c0b14ece2acc3efb62c0a398c7e1d875f3983ce020e3" 3513 + dependencies = [ 3514 + "core-foundation-sys", 3515 + "libc", 3516 + ] 3517 + 3518 + [[package]] 3519 + name = "semver" 3520 + version = "1.0.28" 3521 + source = "registry+https://github.com/rust-lang/crates.io-index" 3522 + checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" 3523 + 3524 + [[package]] 3525 + name = "serde" 3526 + version = "1.0.228" 3527 + source = "registry+https://github.com/rust-lang/crates.io-index" 3528 + checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" 3529 + dependencies = [ 3530 + "serde_core", 3531 + "serde_derive", 3532 + ] 3533 + 3534 + [[package]] 3535 + name = "serde_core" 3536 + version = "1.0.228" 3537 + source = "registry+https://github.com/rust-lang/crates.io-index" 3538 + checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" 3539 + dependencies = [ 3540 + "serde_derive", 3541 + ] 3542 + 3543 + [[package]] 3544 + name = "serde_derive" 3545 + version = "1.0.228" 3546 + source = "registry+https://github.com/rust-lang/crates.io-index" 3547 + checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" 3548 + dependencies = [ 3549 + "proc-macro2", 3550 + "quote", 3551 + "syn", 3552 + ] 3553 + 3554 + [[package]] 3555 + name = "serde_json" 3556 + version = "1.0.149" 3557 + source = "registry+https://github.com/rust-lang/crates.io-index" 3558 + checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" 3559 + dependencies = [ 3560 + "itoa", 3561 + "memchr", 3562 + "serde", 3563 + "serde_core", 3564 + "zmij", 3565 + ] 3566 + 3567 + [[package]] 3568 + name = "serde_spanned" 3569 + version = "0.6.9" 3570 + source = "registry+https://github.com/rust-lang/crates.io-index" 3571 + checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" 3572 + dependencies = [ 3573 + "serde", 3574 + ] 3575 + 3576 + [[package]] 3577 + name = "serde_urlencoded" 3578 + version = "0.7.1" 3579 + source = "registry+https://github.com/rust-lang/crates.io-index" 3580 + checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" 3581 + dependencies = [ 3582 + "form_urlencoded", 3583 + "itoa", 3584 + "ryu", 3585 + "serde", 3586 + ] 3587 + 3588 + [[package]] 3589 + name = "serde_yaml" 3590 + version = "0.9.34+deprecated" 3591 + source = "registry+https://github.com/rust-lang/crates.io-index" 3592 + checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" 3593 + dependencies = [ 3594 + "indexmap", 3595 + "itoa", 3596 + "ryu", 3597 + "serde", 3598 + "unsafe-libyaml", 3599 + ] 3600 + 3601 + [[package]] 3602 + name = "sha1" 3603 + version = "0.10.6" 3604 + source = "registry+https://github.com/rust-lang/crates.io-index" 3605 + checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" 3606 + dependencies = [ 3607 + "cfg-if", 3608 + "cpufeatures 0.2.17", 3609 + "digest 0.10.7", 3610 + ] 3611 + 3612 + [[package]] 3613 + name = "sha2" 3614 + version = "0.10.9" 3615 + source = "registry+https://github.com/rust-lang/crates.io-index" 3616 + checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" 3617 + dependencies = [ 3618 + "cfg-if", 3619 + "cpufeatures 0.2.17", 3620 + "digest 0.10.7", 3621 + ] 3622 + 3623 + [[package]] 3624 + name = "sha2" 3625 + version = "0.11.0" 3626 + source = "registry+https://github.com/rust-lang/crates.io-index" 3627 + checksum = "446ba717509524cb3f22f17ecc096f10f4822d76ab5c0b9822c5f9c284e825f4" 3628 + dependencies = [ 3629 + "cfg-if", 3630 + "cpufeatures 0.3.0", 3631 + "digest 0.11.2", 3632 + ] 3633 + 3634 + [[package]] 3635 + name = "sharded-slab" 3636 + version = "0.1.7" 3637 + source = "registry+https://github.com/rust-lang/crates.io-index" 3638 + checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" 3639 + dependencies = [ 3640 + "lazy_static", 3641 + ] 3642 + 3643 + [[package]] 3644 + name = "shlex" 3645 + version = "1.3.0" 3646 + source = "registry+https://github.com/rust-lang/crates.io-index" 3647 + checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" 3648 + 3649 + [[package]] 3650 + name = "signal-hook-registry" 3651 + version = "1.4.8" 3652 + source = "registry+https://github.com/rust-lang/crates.io-index" 3653 + checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b" 3654 + dependencies = [ 3655 + "errno", 3656 + "libc", 3657 + ] 3658 + 3659 + [[package]] 3660 + name = "signature" 3661 + version = "1.6.4" 3662 + source = "registry+https://github.com/rust-lang/crates.io-index" 3663 + checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" 3664 + dependencies = [ 3665 + "digest 0.10.7", 3666 + "rand_core 0.6.4", 3667 + ] 3668 + 3669 + [[package]] 3670 + name = "signature" 3671 + version = "2.2.0" 3672 + source = "registry+https://github.com/rust-lang/crates.io-index" 3673 + checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" 3674 + dependencies = [ 3675 + "digest 0.10.7", 3676 + "rand_core 0.6.4", 3677 + ] 3678 + 3679 + [[package]] 3680 + name = "similar" 3681 + version = "2.7.0" 3682 + source = "registry+https://github.com/rust-lang/crates.io-index" 3683 + checksum = "bbbb5d9659141646ae647b42fe094daf6c6192d1620870b449d9557f748b2daa" 3684 + 3685 + [[package]] 3686 + name = "simple_asn1" 3687 + version = "0.6.4" 3688 + source = "registry+https://github.com/rust-lang/crates.io-index" 3689 + checksum = "0d585997b0ac10be3c5ee635f1bab02d512760d14b7c468801ac8a01d9ae5f1d" 3690 + dependencies = [ 3691 + "num-bigint", 3692 + "num-traits", 3693 + "thiserror 2.0.18", 3694 + "time", 3695 + ] 3696 + 3697 + [[package]] 3698 + name = "slab" 3699 + version = "0.4.12" 3700 + source = "registry+https://github.com/rust-lang/crates.io-index" 3701 + checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" 3702 + 3703 + [[package]] 3704 + name = "smallvec" 3705 + version = "1.15.1" 3706 + source = "registry+https://github.com/rust-lang/crates.io-index" 3707 + checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" 3708 + dependencies = [ 3709 + "serde", 3710 + ] 3711 + 3712 + [[package]] 3713 + name = "socket2" 3714 + version = "0.5.10" 3715 + source = "registry+https://github.com/rust-lang/crates.io-index" 3716 + checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" 3717 + dependencies = [ 3718 + "libc", 3719 + "windows-sys 0.52.0", 3720 + ] 3721 + 3722 + [[package]] 3723 + name = "socket2" 3724 + version = "0.6.3" 3725 + source = "registry+https://github.com/rust-lang/crates.io-index" 3726 + checksum = "3a766e1110788c36f4fa1c2b71b387a7815aa65f88ce0229841826633d93723e" 3727 + dependencies = [ 3728 + "libc", 3729 + "windows-sys 0.61.2", 3730 + ] 3731 + 3732 + [[package]] 3733 + name = "spin" 3734 + version = "0.9.8" 3735 + source = "registry+https://github.com/rust-lang/crates.io-index" 3736 + checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" 3737 + dependencies = [ 3738 + "lock_api", 3739 + ] 3740 + 3741 + [[package]] 3742 + name = "spki" 3743 + version = "0.6.0" 3744 + source = "registry+https://github.com/rust-lang/crates.io-index" 3745 + checksum = "67cf02bbac7a337dc36e4f5a693db6c21e7863f45070f7064577eb4367a3212b" 3746 + dependencies = [ 3747 + "base64ct", 3748 + "der 0.6.1", 3749 + ] 3750 + 3751 + [[package]] 3752 + name = "spki" 3753 + version = "0.7.3" 3754 + source = "registry+https://github.com/rust-lang/crates.io-index" 3755 + checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" 3756 + dependencies = [ 3757 + "base64ct", 3758 + "der 0.7.10", 3759 + ] 3760 + 3761 + [[package]] 3762 + name = "sqlx" 3763 + version = "0.8.6" 3764 + source = "registry+https://github.com/rust-lang/crates.io-index" 3765 + checksum = "1fefb893899429669dcdd979aff487bd78f4064e5e7907e4269081e0ef7d97dc" 3766 + dependencies = [ 3767 + "sqlx-core", 3768 + "sqlx-macros", 3769 + "sqlx-mysql", 3770 + "sqlx-postgres", 3771 + "sqlx-sqlite", 3772 + ] 3773 + 3774 + [[package]] 3775 + name = "sqlx-core" 3776 + version = "0.8.6" 3777 + source = "registry+https://github.com/rust-lang/crates.io-index" 3778 + checksum = "ee6798b1838b6a0f69c007c133b8df5866302197e404e8b6ee8ed3e3a5e68dc6" 3779 + dependencies = [ 3780 + "base64 0.22.1", 3781 + "bytes", 3782 + "chrono", 3783 + "crc", 3784 + "crossbeam-queue", 3785 + "either", 3786 + "event-listener", 3787 + "futures-core", 3788 + "futures-intrusive", 3789 + "futures-io", 3790 + "futures-util", 3791 + "hashbrown 0.15.5", 3792 + "hashlink 0.10.0", 3793 + "indexmap", 3794 + "log", 3795 + "memchr", 3796 + "once_cell", 3797 + "percent-encoding", 3798 + "rustls 0.23.40", 3799 + "serde", 3800 + "serde_json", 3801 + "sha2 0.10.9", 3802 + "smallvec", 3803 + "thiserror 2.0.18", 3804 + "tokio", 3805 + "tokio-stream", 3806 + "tracing", 3807 + "url", 3808 + "uuid", 3809 + "webpki-roots 0.26.11", 3810 + ] 3811 + 3812 + [[package]] 3813 + name = "sqlx-macros" 3814 + version = "0.8.6" 3815 + source = "registry+https://github.com/rust-lang/crates.io-index" 3816 + checksum = "a2d452988ccaacfbf5e0bdbc348fb91d7c8af5bee192173ac3636b5fb6e6715d" 3817 + dependencies = [ 3818 + "proc-macro2", 3819 + "quote", 3820 + "sqlx-core", 3821 + "sqlx-macros-core", 3822 + "syn", 3823 + ] 3824 + 3825 + [[package]] 3826 + name = "sqlx-macros-core" 3827 + version = "0.8.6" 3828 + source = "registry+https://github.com/rust-lang/crates.io-index" 3829 + checksum = "19a9c1841124ac5a61741f96e1d9e2ec77424bf323962dd894bdb93f37d5219b" 3830 + dependencies = [ 3831 + "dotenvy", 3832 + "either", 3833 + "heck", 3834 + "hex", 3835 + "once_cell", 3836 + "proc-macro2", 3837 + "quote", 3838 + "serde", 3839 + "serde_json", 3840 + "sha2 0.10.9", 3841 + "sqlx-core", 3842 + "sqlx-mysql", 3843 + "sqlx-postgres", 3844 + "sqlx-sqlite", 3845 + "syn", 3846 + "tokio", 3847 + "url", 3848 + ] 3849 + 3850 + [[package]] 3851 + name = "sqlx-mysql" 3852 + version = "0.8.6" 3853 + source = "registry+https://github.com/rust-lang/crates.io-index" 3854 + checksum = "aa003f0038df784eb8fecbbac13affe3da23b45194bd57dba231c8f48199c526" 3855 + dependencies = [ 3856 + "atoi", 3857 + "base64 0.22.1", 3858 + "bitflags 2.11.1", 3859 + "byteorder", 3860 + "bytes", 3861 + "chrono", 3862 + "crc", 3863 + "digest 0.10.7", 3864 + "dotenvy", 3865 + "either", 3866 + "futures-channel", 3867 + "futures-core", 3868 + "futures-io", 3869 + "futures-util", 3870 + "generic-array", 3871 + "hex", 3872 + "hkdf", 3873 + "hmac 0.12.1", 3874 + "itoa", 3875 + "log", 3876 + "md-5", 3877 + "memchr", 3878 + "once_cell", 3879 + "percent-encoding", 3880 + "rand 0.8.6", 3881 + "rsa", 3882 + "serde", 3883 + "sha1", 3884 + "sha2 0.10.9", 3885 + "smallvec", 3886 + "sqlx-core", 3887 + "stringprep", 3888 + "thiserror 2.0.18", 3889 + "tracing", 3890 + "uuid", 3891 + "whoami", 3892 + ] 3893 + 3894 + [[package]] 3895 + name = "sqlx-postgres" 3896 + version = "0.8.6" 3897 + source = "registry+https://github.com/rust-lang/crates.io-index" 3898 + checksum = "db58fcd5a53cf07c184b154801ff91347e4c30d17a3562a635ff028ad5deda46" 3899 + dependencies = [ 3900 + "atoi", 3901 + "base64 0.22.1", 3902 + "bitflags 2.11.1", 3903 + "byteorder", 3904 + "chrono", 3905 + "crc", 3906 + "dotenvy", 3907 + "etcetera", 3908 + "futures-channel", 3909 + "futures-core", 3910 + "futures-util", 3911 + "hex", 3912 + "hkdf", 3913 + "hmac 0.12.1", 3914 + "home", 3915 + "itoa", 3916 + "log", 3917 + "md-5", 3918 + "memchr", 3919 + "once_cell", 3920 + "rand 0.8.6", 3921 + "serde", 3922 + "serde_json", 3923 + "sha2 0.10.9", 3924 + "smallvec", 3925 + "sqlx-core", 3926 + "stringprep", 3927 + "thiserror 2.0.18", 3928 + "tracing", 3929 + "uuid", 3930 + "whoami", 3931 + ] 3932 + 3933 + [[package]] 3934 + name = "sqlx-sqlite" 3935 + version = "0.8.6" 3936 + source = "registry+https://github.com/rust-lang/crates.io-index" 3937 + checksum = "c2d12fe70b2c1b4401038055f90f151b78208de1f9f89a7dbfd41587a10c3eea" 3938 + dependencies = [ 3939 + "atoi", 3940 + "chrono", 3941 + "flume", 3942 + "futures-channel", 3943 + "futures-core", 3944 + "futures-executor", 3945 + "futures-intrusive", 3946 + "futures-util", 3947 + "libsqlite3-sys", 3948 + "log", 3949 + "percent-encoding", 3950 + "serde", 3951 + "serde_urlencoded", 3952 + "sqlx-core", 3953 + "thiserror 2.0.18", 3954 + "tracing", 3955 + "url", 3956 + "uuid", 3957 + ] 3958 + 3959 + [[package]] 3960 + name = "stable_deref_trait" 3961 + version = "1.2.1" 3962 + source = "registry+https://github.com/rust-lang/crates.io-index" 3963 + checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" 3964 + 3965 + [[package]] 3966 + name = "stringprep" 3967 + version = "0.1.5" 3968 + source = "registry+https://github.com/rust-lang/crates.io-index" 3969 + checksum = "7b4df3d392d81bd458a8a621b8bffbd2302a12ffe288a9d931670948749463b1" 3970 + dependencies = [ 3971 + "unicode-bidi", 3972 + "unicode-normalization", 3973 + "unicode-properties", 3974 + ] 3975 + 3976 + [[package]] 3977 + name = "strsim" 3978 + version = "0.11.1" 3979 + source = "registry+https://github.com/rust-lang/crates.io-index" 3980 + checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" 3981 + 3982 + [[package]] 3983 + name = "subtle" 3984 + version = "2.6.1" 3985 + source = "registry+https://github.com/rust-lang/crates.io-index" 3986 + checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" 3987 + 3988 + [[package]] 3989 + name = "suffix_array" 3990 + version = "0.5.0" 3991 + source = "registry+https://github.com/rust-lang/crates.io-index" 3992 + checksum = "907d9ca9637a22e3a7d7c7818f6105a7898857359e187ad3325d986684b9ec3f" 3993 + dependencies = [ 3994 + "cdivsufsort", 3995 + ] 3996 + 3997 + [[package]] 3998 + name = "syn" 3999 + version = "2.0.117" 4000 + source = "registry+https://github.com/rust-lang/crates.io-index" 4001 + checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" 4002 + dependencies = [ 4003 + "proc-macro2", 4004 + "quote", 4005 + "unicode-ident", 4006 + ] 4007 + 4008 + [[package]] 4009 + name = "sync_wrapper" 4010 + version = "1.0.2" 4011 + source = "registry+https://github.com/rust-lang/crates.io-index" 4012 + checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" 4013 + dependencies = [ 4014 + "futures-core", 4015 + ] 4016 + 4017 + [[package]] 4018 + name = "synstructure" 4019 + version = "0.13.2" 4020 + source = "registry+https://github.com/rust-lang/crates.io-index" 4021 + checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" 4022 + dependencies = [ 4023 + "proc-macro2", 4024 + "quote", 4025 + "syn", 4026 + ] 4027 + 4028 + [[package]] 4029 + name = "system-configuration" 4030 + version = "0.7.0" 4031 + source = "registry+https://github.com/rust-lang/crates.io-index" 4032 + checksum = "a13f3d0daba03132c0aa9767f98351b3488edc2c100cda2d2ec2b04f3d8d3c8b" 4033 + dependencies = [ 4034 + "bitflags 2.11.1", 4035 + "core-foundation 0.9.4", 4036 + "system-configuration-sys", 4037 + ] 4038 + 4039 + [[package]] 4040 + name = "system-configuration-sys" 4041 + version = "0.6.0" 4042 + source = "registry+https://github.com/rust-lang/crates.io-index" 4043 + checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" 4044 + dependencies = [ 4045 + "core-foundation-sys", 4046 + "libc", 4047 + ] 4048 + 4049 + [[package]] 4050 + name = "tempfile" 4051 + version = "3.27.0" 4052 + source = "registry+https://github.com/rust-lang/crates.io-index" 4053 + checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" 4054 + dependencies = [ 4055 + "fastrand", 4056 + "getrandom 0.4.2", 4057 + "once_cell", 4058 + "rustix", 4059 + "windows-sys 0.61.2", 4060 + ] 4061 + 4062 + [[package]] 4063 + name = "thiserror" 4064 + version = "1.0.69" 4065 + source = "registry+https://github.com/rust-lang/crates.io-index" 4066 + checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" 4067 + dependencies = [ 4068 + "thiserror-impl 1.0.69", 4069 + ] 4070 + 4071 + [[package]] 4072 + name = "thiserror" 4073 + version = "2.0.18" 4074 + source = "registry+https://github.com/rust-lang/crates.io-index" 4075 + checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" 4076 + dependencies = [ 4077 + "thiserror-impl 2.0.18", 4078 + ] 4079 + 4080 + [[package]] 4081 + name = "thiserror-impl" 4082 + version = "1.0.69" 4083 + source = "registry+https://github.com/rust-lang/crates.io-index" 4084 + checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" 4085 + dependencies = [ 4086 + "proc-macro2", 4087 + "quote", 4088 + "syn", 4089 + ] 4090 + 4091 + [[package]] 4092 + name = "thiserror-impl" 4093 + version = "2.0.18" 4094 + source = "registry+https://github.com/rust-lang/crates.io-index" 4095 + checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" 4096 + dependencies = [ 4097 + "proc-macro2", 4098 + "quote", 4099 + "syn", 4100 + ] 4101 + 4102 + [[package]] 4103 + name = "thread_local" 4104 + version = "1.1.9" 4105 + source = "registry+https://github.com/rust-lang/crates.io-index" 4106 + checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" 4107 + dependencies = [ 4108 + "cfg-if", 4109 + ] 4110 + 4111 + [[package]] 4112 + name = "time" 4113 + version = "0.3.47" 4114 + source = "registry+https://github.com/rust-lang/crates.io-index" 4115 + checksum = "743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c" 4116 + dependencies = [ 4117 + "deranged", 4118 + "itoa", 4119 + "num-conv", 4120 + "powerfmt", 4121 + "serde_core", 4122 + "time-core", 4123 + "time-macros", 4124 + ] 4125 + 4126 + [[package]] 4127 + name = "time-core" 4128 + version = "0.1.8" 4129 + source = "registry+https://github.com/rust-lang/crates.io-index" 4130 + checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca" 4131 + 4132 + [[package]] 4133 + name = "time-macros" 4134 + version = "0.2.27" 4135 + source = "registry+https://github.com/rust-lang/crates.io-index" 4136 + checksum = "2e70e4c5a0e0a8a4823ad65dfe1a6930e4f4d756dcd9dd7939022b5e8c501215" 4137 + dependencies = [ 4138 + "num-conv", 4139 + "time-core", 4140 + ] 4141 + 4142 + [[package]] 4143 + name = "tiny-keccak" 4144 + version = "2.0.2" 4145 + source = "registry+https://github.com/rust-lang/crates.io-index" 4146 + checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" 4147 + dependencies = [ 4148 + "crunchy", 4149 + ] 4150 + 4151 + [[package]] 4152 + name = "tinystr" 4153 + version = "0.8.3" 4154 + source = "registry+https://github.com/rust-lang/crates.io-index" 4155 + checksum = "c8323304221c2a851516f22236c5722a72eaa19749016521d6dff0824447d96d" 4156 + dependencies = [ 4157 + "displaydoc", 4158 + "zerovec", 4159 + ] 4160 + 4161 + [[package]] 4162 + name = "tinyvec" 4163 + version = "1.11.0" 4164 + source = "registry+https://github.com/rust-lang/crates.io-index" 4165 + checksum = "3e61e67053d25a4e82c844e8424039d9745781b3fc4f32b8d55ed50f5f667ef3" 4166 + dependencies = [ 4167 + "tinyvec_macros", 4168 + ] 4169 + 4170 + [[package]] 4171 + name = "tinyvec_macros" 4172 + version = "0.1.1" 4173 + source = "registry+https://github.com/rust-lang/crates.io-index" 4174 + checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" 4175 + 4176 + [[package]] 4177 + name = "tokio" 4178 + version = "1.52.1" 4179 + source = "registry+https://github.com/rust-lang/crates.io-index" 4180 + checksum = "b67dee974fe86fd92cc45b7a95fdd2f99a36a6d7b0d431a231178d3d670bbcc6" 4181 + dependencies = [ 4182 + "bytes", 4183 + "libc", 4184 + "mio", 4185 + "parking_lot 0.12.5", 4186 + "pin-project-lite", 4187 + "signal-hook-registry", 4188 + "socket2 0.6.3", 4189 + "tokio-macros", 4190 + "windows-sys 0.61.2", 4191 + ] 4192 + 4193 + [[package]] 4194 + name = "tokio-macros" 4195 + version = "2.7.0" 4196 + source = "registry+https://github.com/rust-lang/crates.io-index" 4197 + checksum = "385a6cb71ab9ab790c5fe8d67f1645e6c450a7ce006a33de03daa956cf70a496" 4198 + dependencies = [ 4199 + "proc-macro2", 4200 + "quote", 4201 + "syn", 4202 + ] 4203 + 4204 + [[package]] 4205 + name = "tokio-native-tls" 4206 + version = "0.3.1" 4207 + source = "registry+https://github.com/rust-lang/crates.io-index" 4208 + checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" 4209 + dependencies = [ 4210 + "native-tls", 4211 + "tokio", 4212 + ] 4213 + 4214 + [[package]] 4215 + name = "tokio-rustls" 4216 + version = "0.24.1" 4217 + source = "registry+https://github.com/rust-lang/crates.io-index" 4218 + checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" 4219 + dependencies = [ 4220 + "rustls 0.21.12", 4221 + "tokio", 4222 + ] 4223 + 4224 + [[package]] 4225 + name = "tokio-rustls" 4226 + version = "0.26.4" 4227 + source = "registry+https://github.com/rust-lang/crates.io-index" 4228 + checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" 4229 + dependencies = [ 4230 + "rustls 0.23.40", 4231 + "tokio", 4232 + ] 4233 + 4234 + [[package]] 4235 + name = "tokio-stream" 4236 + version = "0.1.18" 4237 + source = "registry+https://github.com/rust-lang/crates.io-index" 4238 + checksum = "32da49809aab5c3bc678af03902d4ccddea2a87d028d86392a4b1560c6906c70" 4239 + dependencies = [ 4240 + "futures-core", 4241 + "pin-project-lite", 4242 + "tokio", 4243 + ] 4244 + 4245 + [[package]] 4246 + name = "tokio-util" 4247 + version = "0.7.18" 4248 + source = "registry+https://github.com/rust-lang/crates.io-index" 4249 + checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098" 4250 + dependencies = [ 4251 + "bytes", 4252 + "futures-core", 4253 + "futures-sink", 4254 + "pin-project-lite", 4255 + "tokio", 4256 + ] 4257 + 4258 + [[package]] 4259 + name = "toml" 4260 + version = "0.8.2" 4261 + source = "registry+https://github.com/rust-lang/crates.io-index" 4262 + checksum = "185d8ab0dfbb35cf1399a6344d8484209c088f75f8f68230da55d48d95d43e3d" 4263 + dependencies = [ 4264 + "serde", 4265 + "serde_spanned", 4266 + "toml_datetime 0.6.3", 4267 + "toml_edit 0.20.2", 4268 + ] 4269 + 4270 + [[package]] 4271 + name = "toml_datetime" 4272 + version = "0.6.3" 4273 + source = "registry+https://github.com/rust-lang/crates.io-index" 4274 + checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" 4275 + dependencies = [ 4276 + "serde", 4277 + ] 4278 + 4279 + [[package]] 4280 + name = "toml_datetime" 4281 + version = "1.1.1+spec-1.1.0" 4282 + source = "registry+https://github.com/rust-lang/crates.io-index" 4283 + checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7" 4284 + dependencies = [ 4285 + "serde_core", 4286 + ] 4287 + 4288 + [[package]] 4289 + name = "toml_edit" 4290 + version = "0.20.2" 4291 + source = "registry+https://github.com/rust-lang/crates.io-index" 4292 + checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338" 4293 + dependencies = [ 4294 + "indexmap", 4295 + "serde", 4296 + "serde_spanned", 4297 + "toml_datetime 0.6.3", 4298 + "winnow 0.5.40", 4299 + ] 4300 + 4301 + [[package]] 4302 + name = "toml_edit" 4303 + version = "0.25.11+spec-1.1.0" 4304 + source = "registry+https://github.com/rust-lang/crates.io-index" 4305 + checksum = "0b59c4d22ed448339746c59b905d24568fcbb3ab65a500494f7b8c3e97739f2b" 4306 + dependencies = [ 4307 + "indexmap", 4308 + "toml_datetime 1.1.1+spec-1.1.0", 4309 + "toml_parser", 4310 + "winnow 1.0.2", 4311 + ] 4312 + 4313 + [[package]] 4314 + name = "toml_parser" 4315 + version = "1.1.2+spec-1.1.0" 4316 + source = "registry+https://github.com/rust-lang/crates.io-index" 4317 + checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" 4318 + dependencies = [ 4319 + "winnow 1.0.2", 4320 + ] 4321 + 4322 + [[package]] 4323 + name = "tower" 4324 + version = "0.5.3" 4325 + source = "registry+https://github.com/rust-lang/crates.io-index" 4326 + checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4" 4327 + dependencies = [ 4328 + "futures-core", 4329 + "futures-util", 4330 + "hdrhistogram", 4331 + "indexmap", 4332 + "pin-project-lite", 4333 + "slab", 4334 + "sync_wrapper", 4335 + "tokio", 4336 + "tokio-util", 4337 + "tower-layer", 4338 + "tower-service", 4339 + "tracing", 4340 + ] 4341 + 4342 + [[package]] 4343 + name = "tower-http" 4344 + version = "0.6.8" 4345 + source = "registry+https://github.com/rust-lang/crates.io-index" 4346 + checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8" 4347 + dependencies = [ 4348 + "async-compression", 4349 + "bitflags 2.11.1", 4350 + "bytes", 4351 + "futures-core", 4352 + "futures-util", 4353 + "http 1.4.0", 4354 + "http-body 1.0.1", 4355 + "iri-string", 4356 + "pin-project-lite", 4357 + "tokio", 4358 + "tokio-util", 4359 + "tower", 4360 + "tower-layer", 4361 + "tower-service", 4362 + "tracing", 4363 + ] 4364 + 4365 + [[package]] 4366 + name = "tower-layer" 4367 + version = "0.3.3" 4368 + source = "registry+https://github.com/rust-lang/crates.io-index" 4369 + checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" 4370 + 4371 + [[package]] 4372 + name = "tower-service" 4373 + version = "0.3.3" 4374 + source = "registry+https://github.com/rust-lang/crates.io-index" 4375 + checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" 4376 + 4377 + [[package]] 4378 + name = "tracing" 4379 + version = "0.1.44" 4380 + source = "registry+https://github.com/rust-lang/crates.io-index" 4381 + checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" 4382 + dependencies = [ 4383 + "log", 4384 + "pin-project-lite", 4385 + "tracing-attributes", 4386 + "tracing-core", 4387 + ] 4388 + 4389 + [[package]] 4390 + name = "tracing-attributes" 4391 + version = "0.1.31" 4392 + source = "registry+https://github.com/rust-lang/crates.io-index" 4393 + checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" 4394 + dependencies = [ 4395 + "proc-macro2", 4396 + "quote", 4397 + "syn", 4398 + ] 4399 + 4400 + [[package]] 4401 + name = "tracing-core" 4402 + version = "0.1.36" 4403 + source = "registry+https://github.com/rust-lang/crates.io-index" 4404 + checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" 4405 + dependencies = [ 4406 + "once_cell", 4407 + "valuable", 4408 + ] 4409 + 4410 + [[package]] 4411 + name = "tracing-log" 4412 + version = "0.2.0" 4413 + source = "registry+https://github.com/rust-lang/crates.io-index" 4414 + checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" 4415 + dependencies = [ 4416 + "log", 4417 + "once_cell", 4418 + "tracing-core", 4419 + ] 4420 + 4421 + [[package]] 4422 + name = "tracing-subscriber" 4423 + version = "0.3.23" 4424 + source = "registry+https://github.com/rust-lang/crates.io-index" 4425 + checksum = "cb7f578e5945fb242538965c2d0b04418d38ec25c79d160cd279bf0731c8d319" 4426 + dependencies = [ 4427 + "matchers", 4428 + "nu-ansi-term", 4429 + "once_cell", 4430 + "regex-automata", 4431 + "sharded-slab", 4432 + "smallvec", 4433 + "thread_local", 4434 + "tracing", 4435 + "tracing-core", 4436 + "tracing-log", 4437 + ] 4438 + 4439 + [[package]] 4440 + name = "try-lock" 4441 + version = "0.2.5" 4442 + source = "registry+https://github.com/rust-lang/crates.io-index" 4443 + checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" 4444 + 4445 + [[package]] 4446 + name = "typenum" 4447 + version = "1.20.0" 4448 + source = "registry+https://github.com/rust-lang/crates.io-index" 4449 + checksum = "40ce102ab67701b8526c123c1bab5cbe42d7040ccfd0f64af1a385808d2f43de" 4450 + 4451 + [[package]] 4452 + name = "ucd-trie" 4453 + version = "0.1.7" 4454 + source = "registry+https://github.com/rust-lang/crates.io-index" 4455 + checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" 4456 + 4457 + [[package]] 4458 + name = "ulid" 4459 + version = "1.2.1" 4460 + source = "registry+https://github.com/rust-lang/crates.io-index" 4461 + checksum = "470dbf6591da1b39d43c14523b2b469c86879a53e8b758c8e090a470fe7b1fbe" 4462 + dependencies = [ 4463 + "rand 0.9.4", 4464 + "serde", 4465 + "web-time", 4466 + ] 4467 + 4468 + [[package]] 4469 + name = "uncased" 4470 + version = "0.9.10" 4471 + source = "registry+https://github.com/rust-lang/crates.io-index" 4472 + checksum = "e1b88fcfe09e89d3866a5c11019378088af2d24c3fbd4f0543f96b479ec90697" 4473 + dependencies = [ 4474 + "version_check", 4475 + ] 4476 + 4477 + [[package]] 4478 + name = "unicase" 4479 + version = "2.9.0" 4480 + source = "registry+https://github.com/rust-lang/crates.io-index" 4481 + checksum = "dbc4bc3a9f746d862c45cb89d705aa10f187bb96c76001afab07a0d35ce60142" 4482 + 4483 + [[package]] 4484 + name = "unicode-bidi" 4485 + version = "0.3.18" 4486 + source = "registry+https://github.com/rust-lang/crates.io-index" 4487 + checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5" 4488 + 4489 + [[package]] 4490 + name = "unicode-ident" 4491 + version = "1.0.24" 4492 + source = "registry+https://github.com/rust-lang/crates.io-index" 4493 + checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" 4494 + 4495 + [[package]] 4496 + name = "unicode-normalization" 4497 + version = "0.1.25" 4498 + source = "registry+https://github.com/rust-lang/crates.io-index" 4499 + checksum = "5fd4f6878c9cb28d874b009da9e8d183b5abc80117c40bbd187a1fde336be6e8" 4500 + dependencies = [ 4501 + "tinyvec", 4502 + ] 4503 + 4504 + [[package]] 4505 + name = "unicode-properties" 4506 + version = "0.1.4" 4507 + source = "registry+https://github.com/rust-lang/crates.io-index" 4508 + checksum = "7df058c713841ad818f1dc5d3fd88063241cc61f49f5fbea4b951e8cf5a8d71d" 4509 + 4510 + [[package]] 4511 + name = "unicode-segmentation" 4512 + version = "1.13.2" 4513 + source = "registry+https://github.com/rust-lang/crates.io-index" 4514 + checksum = "9629274872b2bfaf8d66f5f15725007f635594914870f65218920345aa11aa8c" 4515 + 4516 + [[package]] 4517 + name = "unicode-xid" 4518 + version = "0.2.6" 4519 + source = "registry+https://github.com/rust-lang/crates.io-index" 4520 + checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" 4521 + 4522 + [[package]] 4523 + name = "unsafe-libyaml" 4524 + version = "0.2.11" 4525 + source = "registry+https://github.com/rust-lang/crates.io-index" 4526 + checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861" 4527 + 4528 + [[package]] 4529 + name = "untrusted" 4530 + version = "0.9.0" 4531 + source = "registry+https://github.com/rust-lang/crates.io-index" 4532 + checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" 4533 + 4534 + [[package]] 4535 + name = "url" 4536 + version = "2.5.8" 4537 + source = "registry+https://github.com/rust-lang/crates.io-index" 4538 + checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" 4539 + dependencies = [ 4540 + "form_urlencoded", 4541 + "idna", 4542 + "percent-encoding", 4543 + "serde", 4544 + ] 4545 + 4546 + [[package]] 4547 + name = "utf8_iter" 4548 + version = "1.0.4" 4549 + source = "registry+https://github.com/rust-lang/crates.io-index" 4550 + checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" 4551 + 4552 + [[package]] 4553 + name = "utf8parse" 4554 + version = "0.2.2" 4555 + source = "registry+https://github.com/rust-lang/crates.io-index" 4556 + checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" 4557 + 4558 + [[package]] 4559 + name = "uuid" 4560 + version = "1.23.1" 4561 + source = "registry+https://github.com/rust-lang/crates.io-index" 4562 + checksum = "ddd74a9687298c6858e9b88ec8935ec45d22e8fd5e6394fa1bd4e99a87789c76" 4563 + dependencies = [ 4564 + "getrandom 0.4.2", 4565 + "js-sys", 4566 + "serde_core", 4567 + "wasm-bindgen", 4568 + ] 4569 + 4570 + [[package]] 4571 + name = "valuable" 4572 + version = "0.1.1" 4573 + source = "registry+https://github.com/rust-lang/crates.io-index" 4574 + checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" 4575 + 4576 + [[package]] 4577 + name = "vcpkg" 4578 + version = "0.2.15" 4579 + source = "registry+https://github.com/rust-lang/crates.io-index" 4580 + checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" 4581 + 4582 + [[package]] 4583 + name = "version_check" 4584 + version = "0.9.5" 4585 + source = "registry+https://github.com/rust-lang/crates.io-index" 4586 + checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" 4587 + 4588 + [[package]] 4589 + name = "vsimd" 4590 + version = "0.8.0" 4591 + source = "registry+https://github.com/rust-lang/crates.io-index" 4592 + checksum = "5c3082ca00d5a5ef149bb8b555a72ae84c9c59f7250f013ac822ac2e49b19c64" 4593 + 4594 + [[package]] 4595 + name = "walkdir" 4596 + version = "2.5.0" 4597 + source = "registry+https://github.com/rust-lang/crates.io-index" 4598 + checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" 4599 + dependencies = [ 4600 + "same-file", 4601 + "winapi-util", 4602 + ] 4603 + 4604 + [[package]] 4605 + name = "want" 4606 + version = "0.3.1" 4607 + source = "registry+https://github.com/rust-lang/crates.io-index" 4608 + checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" 4609 + dependencies = [ 4610 + "try-lock", 4611 + ] 4612 + 4613 + [[package]] 4614 + name = "wasi" 4615 + version = "0.11.1+wasi-snapshot-preview1" 4616 + source = "registry+https://github.com/rust-lang/crates.io-index" 4617 + checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" 4618 + 4619 + [[package]] 4620 + name = "wasip2" 4621 + version = "1.0.3+wasi-0.2.9" 4622 + source = "registry+https://github.com/rust-lang/crates.io-index" 4623 + checksum = "20064672db26d7cdc89c7798c48a0fdfac8213434a1186e5ef29fd560ae223d6" 4624 + dependencies = [ 4625 + "wit-bindgen 0.57.1", 4626 + ] 4627 + 4628 + [[package]] 4629 + name = "wasip3" 4630 + version = "0.4.0+wasi-0.3.0-rc-2026-01-06" 4631 + source = "registry+https://github.com/rust-lang/crates.io-index" 4632 + checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5" 4633 + dependencies = [ 4634 + "wit-bindgen 0.51.0", 4635 + ] 4636 + 4637 + [[package]] 4638 + name = "wasite" 4639 + version = "0.1.0" 4640 + source = "registry+https://github.com/rust-lang/crates.io-index" 4641 + checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b" 4642 + 4643 + [[package]] 4644 + name = "wasm-bindgen" 4645 + version = "0.2.120" 4646 + source = "registry+https://github.com/rust-lang/crates.io-index" 4647 + checksum = "df52b6d9b87e0c74c9edfa1eb2d9bf85e5d63515474513aa50fa181b3c4f5db1" 4648 + dependencies = [ 4649 + "cfg-if", 4650 + "once_cell", 4651 + "rustversion", 4652 + "wasm-bindgen-macro", 4653 + "wasm-bindgen-shared", 4654 + ] 4655 + 4656 + [[package]] 4657 + name = "wasm-bindgen-futures" 4658 + version = "0.4.70" 4659 + source = "registry+https://github.com/rust-lang/crates.io-index" 4660 + checksum = "af934872acec734c2d80e6617bbb5ff4f12b052dd8e6332b0817bce889516084" 4661 + dependencies = [ 4662 + "js-sys", 4663 + "wasm-bindgen", 4664 + ] 4665 + 4666 + [[package]] 4667 + name = "wasm-bindgen-macro" 4668 + version = "0.2.120" 4669 + source = "registry+https://github.com/rust-lang/crates.io-index" 4670 + checksum = "78b1041f495fb322e64aca85f5756b2172e35cd459376e67f2a6c9dffcedb103" 4671 + dependencies = [ 4672 + "quote", 4673 + "wasm-bindgen-macro-support", 4674 + ] 4675 + 4676 + [[package]] 4677 + name = "wasm-bindgen-macro-support" 4678 + version = "0.2.120" 4679 + source = "registry+https://github.com/rust-lang/crates.io-index" 4680 + checksum = "9dcd0ff20416988a18ac686d4d4d0f6aae9ebf08a389ff5d29012b05af2a1b41" 4681 + dependencies = [ 4682 + "bumpalo", 4683 + "proc-macro2", 4684 + "quote", 4685 + "syn", 4686 + "wasm-bindgen-shared", 4687 + ] 4688 + 4689 + [[package]] 4690 + name = "wasm-bindgen-shared" 4691 + version = "0.2.120" 4692 + source = "registry+https://github.com/rust-lang/crates.io-index" 4693 + checksum = "49757b3c82ebf16c57d69365a142940b384176c24df52a087fb748e2085359ea" 4694 + dependencies = [ 4695 + "unicode-ident", 4696 + ] 4697 + 4698 + [[package]] 4699 + name = "wasm-encoder" 4700 + version = "0.244.0" 4701 + source = "registry+https://github.com/rust-lang/crates.io-index" 4702 + checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319" 4703 + dependencies = [ 4704 + "leb128fmt", 4705 + "wasmparser", 4706 + ] 4707 + 4708 + [[package]] 4709 + name = "wasm-metadata" 4710 + version = "0.244.0" 4711 + source = "registry+https://github.com/rust-lang/crates.io-index" 4712 + checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909" 4713 + dependencies = [ 4714 + "anyhow", 4715 + "indexmap", 4716 + "wasm-encoder", 4717 + "wasmparser", 4718 + ] 4719 + 4720 + [[package]] 4721 + name = "wasm-streams" 4722 + version = "0.4.2" 4723 + source = "registry+https://github.com/rust-lang/crates.io-index" 4724 + checksum = "15053d8d85c7eccdbefef60f06769760a563c7f0a9d6902a13d35c7800b0ad65" 4725 + dependencies = [ 4726 + "futures-util", 4727 + "js-sys", 4728 + "wasm-bindgen", 4729 + "wasm-bindgen-futures", 4730 + "web-sys", 4731 + ] 4732 + 4733 + [[package]] 4734 + name = "wasm-timer" 4735 + version = "0.2.5" 4736 + source = "registry+https://github.com/rust-lang/crates.io-index" 4737 + checksum = "be0ecb0db480561e9a7642b5d3e4187c128914e58aa84330b9493e3eb68c5e7f" 4738 + dependencies = [ 4739 + "futures", 4740 + "js-sys", 4741 + "parking_lot 0.11.2", 4742 + "pin-utils", 4743 + "wasm-bindgen", 4744 + "wasm-bindgen-futures", 4745 + "web-sys", 4746 + ] 4747 + 4748 + [[package]] 4749 + name = "wasmparser" 4750 + version = "0.244.0" 4751 + source = "registry+https://github.com/rust-lang/crates.io-index" 4752 + checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" 4753 + dependencies = [ 4754 + "bitflags 2.11.1", 4755 + "hashbrown 0.15.5", 4756 + "indexmap", 4757 + "semver", 4758 + ] 4759 + 4760 + [[package]] 4761 + name = "web-sys" 4762 + version = "0.3.97" 4763 + source = "registry+https://github.com/rust-lang/crates.io-index" 4764 + checksum = "2eadbac71025cd7b0834f20d1fe8472e8495821b4e9801eb0a60bd1f19827602" 4765 + dependencies = [ 4766 + "js-sys", 4767 + "wasm-bindgen", 4768 + ] 4769 + 4770 + [[package]] 4771 + name = "web-time" 4772 + version = "1.1.0" 4773 + source = "registry+https://github.com/rust-lang/crates.io-index" 4774 + checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" 4775 + dependencies = [ 4776 + "js-sys", 4777 + "wasm-bindgen", 4778 + ] 4779 + 4780 + [[package]] 4781 + name = "webpki-roots" 4782 + version = "0.26.11" 4783 + source = "registry+https://github.com/rust-lang/crates.io-index" 4784 + checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9" 4785 + dependencies = [ 4786 + "webpki-roots 1.0.7", 4787 + ] 4788 + 4789 + [[package]] 4790 + name = "webpki-roots" 4791 + version = "1.0.7" 4792 + source = "registry+https://github.com/rust-lang/crates.io-index" 4793 + checksum = "52f5ee44c96cf55f1b349600768e3ece3a8f26010c05265ab73f945bb1a2eb9d" 4794 + dependencies = [ 4795 + "rustls-pki-types", 4796 + ] 4797 + 4798 + [[package]] 4799 + name = "whoami" 4800 + version = "1.6.1" 4801 + source = "registry+https://github.com/rust-lang/crates.io-index" 4802 + checksum = "5d4a4db5077702ca3015d3d02d74974948aba2ad9e12ab7df718ee64ccd7e97d" 4803 + dependencies = [ 4804 + "libredox", 4805 + "wasite", 4806 + ] 4807 + 4808 + [[package]] 4809 + name = "wildmatch" 4810 + version = "2.6.1" 4811 + source = "registry+https://github.com/rust-lang/crates.io-index" 4812 + checksum = "29333c3ea1ba8b17211763463ff24ee84e41c78224c16b001cd907e663a38c68" 4813 + 4814 + [[package]] 4815 + name = "winapi" 4816 + version = "0.3.9" 4817 + source = "registry+https://github.com/rust-lang/crates.io-index" 4818 + checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" 4819 + dependencies = [ 4820 + "winapi-i686-pc-windows-gnu", 4821 + "winapi-x86_64-pc-windows-gnu", 4822 + ] 4823 + 4824 + [[package]] 4825 + name = "winapi-i686-pc-windows-gnu" 4826 + version = "0.4.0" 4827 + source = "registry+https://github.com/rust-lang/crates.io-index" 4828 + checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 4829 + 4830 + [[package]] 4831 + name = "winapi-util" 4832 + version = "0.1.11" 4833 + source = "registry+https://github.com/rust-lang/crates.io-index" 4834 + checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" 4835 + dependencies = [ 4836 + "windows-sys 0.61.2", 4837 + ] 4838 + 4839 + [[package]] 4840 + name = "winapi-x86_64-pc-windows-gnu" 4841 + version = "0.4.0" 4842 + source = "registry+https://github.com/rust-lang/crates.io-index" 4843 + checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 4844 + 4845 + [[package]] 4846 + name = "windows-core" 4847 + version = "0.62.2" 4848 + source = "registry+https://github.com/rust-lang/crates.io-index" 4849 + checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" 4850 + dependencies = [ 4851 + "windows-implement", 4852 + "windows-interface", 4853 + "windows-link", 4854 + "windows-result", 4855 + "windows-strings", 4856 + ] 4857 + 4858 + [[package]] 4859 + name = "windows-implement" 4860 + version = "0.60.2" 4861 + source = "registry+https://github.com/rust-lang/crates.io-index" 4862 + checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" 4863 + dependencies = [ 4864 + "proc-macro2", 4865 + "quote", 4866 + "syn", 4867 + ] 4868 + 4869 + [[package]] 4870 + name = "windows-interface" 4871 + version = "0.59.3" 4872 + source = "registry+https://github.com/rust-lang/crates.io-index" 4873 + checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" 4874 + dependencies = [ 4875 + "proc-macro2", 4876 + "quote", 4877 + "syn", 4878 + ] 4879 + 4880 + [[package]] 4881 + name = "windows-link" 4882 + version = "0.2.1" 4883 + source = "registry+https://github.com/rust-lang/crates.io-index" 4884 + checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" 4885 + 4886 + [[package]] 4887 + name = "windows-registry" 4888 + version = "0.6.1" 4889 + source = "registry+https://github.com/rust-lang/crates.io-index" 4890 + checksum = "02752bf7fbdcce7f2a27a742f798510f3e5ad88dbe84871e5168e2120c3d5720" 4891 + dependencies = [ 4892 + "windows-link", 4893 + "windows-result", 4894 + "windows-strings", 4895 + ] 4896 + 4897 + [[package]] 4898 + name = "windows-result" 4899 + version = "0.4.1" 4900 + source = "registry+https://github.com/rust-lang/crates.io-index" 4901 + checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" 4902 + dependencies = [ 4903 + "windows-link", 4904 + ] 4905 + 4906 + [[package]] 4907 + name = "windows-strings" 4908 + version = "0.5.1" 4909 + source = "registry+https://github.com/rust-lang/crates.io-index" 4910 + checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" 4911 + dependencies = [ 4912 + "windows-link", 4913 + ] 4914 + 4915 + [[package]] 4916 + name = "windows-sys" 4917 + version = "0.48.0" 4918 + source = "registry+https://github.com/rust-lang/crates.io-index" 4919 + checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" 4920 + dependencies = [ 4921 + "windows-targets 0.48.5", 4922 + ] 4923 + 4924 + [[package]] 4925 + name = "windows-sys" 4926 + version = "0.52.0" 4927 + source = "registry+https://github.com/rust-lang/crates.io-index" 4928 + checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" 4929 + dependencies = [ 4930 + "windows-targets 0.52.6", 4931 + ] 4932 + 4933 + [[package]] 4934 + name = "windows-sys" 4935 + version = "0.61.2" 4936 + source = "registry+https://github.com/rust-lang/crates.io-index" 4937 + checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" 4938 + dependencies = [ 4939 + "windows-link", 4940 + ] 4941 + 4942 + [[package]] 4943 + name = "windows-targets" 4944 + version = "0.48.5" 4945 + source = "registry+https://github.com/rust-lang/crates.io-index" 4946 + checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" 4947 + dependencies = [ 4948 + "windows_aarch64_gnullvm 0.48.5", 4949 + "windows_aarch64_msvc 0.48.5", 4950 + "windows_i686_gnu 0.48.5", 4951 + "windows_i686_msvc 0.48.5", 4952 + "windows_x86_64_gnu 0.48.5", 4953 + "windows_x86_64_gnullvm 0.48.5", 4954 + "windows_x86_64_msvc 0.48.5", 4955 + ] 4956 + 4957 + [[package]] 4958 + name = "windows-targets" 4959 + version = "0.52.6" 4960 + source = "registry+https://github.com/rust-lang/crates.io-index" 4961 + checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" 4962 + dependencies = [ 4963 + "windows_aarch64_gnullvm 0.52.6", 4964 + "windows_aarch64_msvc 0.52.6", 4965 + "windows_i686_gnu 0.52.6", 4966 + "windows_i686_gnullvm", 4967 + "windows_i686_msvc 0.52.6", 4968 + "windows_x86_64_gnu 0.52.6", 4969 + "windows_x86_64_gnullvm 0.52.6", 4970 + "windows_x86_64_msvc 0.52.6", 4971 + ] 4972 + 4973 + [[package]] 4974 + name = "windows_aarch64_gnullvm" 4975 + version = "0.48.5" 4976 + source = "registry+https://github.com/rust-lang/crates.io-index" 4977 + checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" 4978 + 4979 + [[package]] 4980 + name = "windows_aarch64_gnullvm" 4981 + version = "0.52.6" 4982 + source = "registry+https://github.com/rust-lang/crates.io-index" 4983 + checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" 4984 + 4985 + [[package]] 4986 + name = "windows_aarch64_msvc" 4987 + version = "0.48.5" 4988 + source = "registry+https://github.com/rust-lang/crates.io-index" 4989 + checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" 4990 + 4991 + [[package]] 4992 + name = "windows_aarch64_msvc" 4993 + version = "0.52.6" 4994 + source = "registry+https://github.com/rust-lang/crates.io-index" 4995 + checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" 4996 + 4997 + [[package]] 4998 + name = "windows_i686_gnu" 4999 + version = "0.48.5" 5000 + source = "registry+https://github.com/rust-lang/crates.io-index" 5001 + checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" 5002 + 5003 + [[package]] 5004 + name = "windows_i686_gnu" 5005 + version = "0.52.6" 5006 + source = "registry+https://github.com/rust-lang/crates.io-index" 5007 + checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" 5008 + 5009 + [[package]] 5010 + name = "windows_i686_gnullvm" 5011 + version = "0.52.6" 5012 + source = "registry+https://github.com/rust-lang/crates.io-index" 5013 + checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" 5014 + 5015 + [[package]] 5016 + name = "windows_i686_msvc" 5017 + version = "0.48.5" 5018 + source = "registry+https://github.com/rust-lang/crates.io-index" 5019 + checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" 5020 + 5021 + [[package]] 5022 + name = "windows_i686_msvc" 5023 + version = "0.52.6" 5024 + source = "registry+https://github.com/rust-lang/crates.io-index" 5025 + checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" 5026 + 5027 + [[package]] 5028 + name = "windows_x86_64_gnu" 5029 + version = "0.48.5" 5030 + source = "registry+https://github.com/rust-lang/crates.io-index" 5031 + checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" 5032 + 5033 + [[package]] 5034 + name = "windows_x86_64_gnu" 5035 + version = "0.52.6" 5036 + source = "registry+https://github.com/rust-lang/crates.io-index" 5037 + checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" 5038 + 5039 + [[package]] 5040 + name = "windows_x86_64_gnullvm" 5041 + version = "0.48.5" 5042 + source = "registry+https://github.com/rust-lang/crates.io-index" 5043 + checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" 5044 + 5045 + [[package]] 5046 + name = "windows_x86_64_gnullvm" 5047 + version = "0.52.6" 5048 + source = "registry+https://github.com/rust-lang/crates.io-index" 5049 + checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" 5050 + 5051 + [[package]] 5052 + name = "windows_x86_64_msvc" 5053 + version = "0.48.5" 5054 + source = "registry+https://github.com/rust-lang/crates.io-index" 5055 + checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" 5056 + 5057 + [[package]] 5058 + name = "windows_x86_64_msvc" 5059 + version = "0.52.6" 5060 + source = "registry+https://github.com/rust-lang/crates.io-index" 5061 + checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" 5062 + 5063 + [[package]] 5064 + name = "winnow" 5065 + version = "0.5.40" 5066 + source = "registry+https://github.com/rust-lang/crates.io-index" 5067 + checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" 5068 + dependencies = [ 5069 + "memchr", 5070 + ] 5071 + 5072 + [[package]] 5073 + name = "winnow" 5074 + version = "1.0.2" 5075 + source = "registry+https://github.com/rust-lang/crates.io-index" 5076 + checksum = "2ee1708bef14716a11bae175f579062d4554d95be2c6829f518df847b7b3fdd0" 5077 + dependencies = [ 5078 + "memchr", 5079 + ] 5080 + 5081 + [[package]] 5082 + name = "wit-bindgen" 5083 + version = "0.51.0" 5084 + source = "registry+https://github.com/rust-lang/crates.io-index" 5085 + checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" 5086 + dependencies = [ 5087 + "wit-bindgen-rust-macro", 5088 + ] 5089 + 5090 + [[package]] 5091 + name = "wit-bindgen" 5092 + version = "0.57.1" 5093 + source = "registry+https://github.com/rust-lang/crates.io-index" 5094 + checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e" 5095 + 5096 + [[package]] 5097 + name = "wit-bindgen-core" 5098 + version = "0.51.0" 5099 + source = "registry+https://github.com/rust-lang/crates.io-index" 5100 + checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc" 5101 + dependencies = [ 5102 + "anyhow", 5103 + "heck", 5104 + "wit-parser", 5105 + ] 5106 + 5107 + [[package]] 5108 + name = "wit-bindgen-rust" 5109 + version = "0.51.0" 5110 + source = "registry+https://github.com/rust-lang/crates.io-index" 5111 + checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" 5112 + dependencies = [ 5113 + "anyhow", 5114 + "heck", 5115 + "indexmap", 5116 + "prettyplease", 5117 + "syn", 5118 + "wasm-metadata", 5119 + "wit-bindgen-core", 5120 + "wit-component", 5121 + ] 5122 + 5123 + [[package]] 5124 + name = "wit-bindgen-rust-macro" 5125 + version = "0.51.0" 5126 + source = "registry+https://github.com/rust-lang/crates.io-index" 5127 + checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a" 5128 + dependencies = [ 5129 + "anyhow", 5130 + "prettyplease", 5131 + "proc-macro2", 5132 + "quote", 5133 + "syn", 5134 + "wit-bindgen-core", 5135 + "wit-bindgen-rust", 5136 + ] 5137 + 5138 + [[package]] 5139 + name = "wit-component" 5140 + version = "0.244.0" 5141 + source = "registry+https://github.com/rust-lang/crates.io-index" 5142 + checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" 5143 + dependencies = [ 5144 + "anyhow", 5145 + "bitflags 2.11.1", 5146 + "indexmap", 5147 + "log", 5148 + "serde", 5149 + "serde_derive", 5150 + "serde_json", 5151 + "wasm-encoder", 5152 + "wasm-metadata", 5153 + "wasmparser", 5154 + "wit-parser", 5155 + ] 5156 + 5157 + [[package]] 5158 + name = "wit-parser" 5159 + version = "0.244.0" 5160 + source = "registry+https://github.com/rust-lang/crates.io-index" 5161 + checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736" 5162 + dependencies = [ 5163 + "anyhow", 5164 + "id-arena", 5165 + "indexmap", 5166 + "log", 5167 + "semver", 5168 + "serde", 5169 + "serde_derive", 5170 + "serde_json", 5171 + "unicode-xid", 5172 + "wasmparser", 5173 + ] 5174 + 5175 + [[package]] 5176 + name = "writeable" 5177 + version = "0.6.3" 5178 + source = "registry+https://github.com/rust-lang/crates.io-index" 5179 + checksum = "1ffae5123b2d3fc086436f8834ae3ab053a283cfac8fe0a0b8eaae044768a4c4" 5180 + 5181 + [[package]] 5182 + name = "xmlparser" 5183 + version = "0.13.6" 5184 + source = "registry+https://github.com/rust-lang/crates.io-index" 5185 + checksum = "66fee0b777b0f5ac1c69bb06d361268faafa61cd4682ae064a171c16c433e9e4" 5186 + 5187 + [[package]] 5188 + name = "yaml-rust2" 5189 + version = "0.8.1" 5190 + source = "registry+https://github.com/rust-lang/crates.io-index" 5191 + checksum = "8902160c4e6f2fb145dbe9d6760a75e3c9522d8bf796ed7047c85919ac7115f8" 5192 + dependencies = [ 5193 + "arraydeque", 5194 + "encoding_rs", 5195 + "hashlink 0.8.4", 5196 + ] 5197 + 5198 + [[package]] 5199 + name = "yoke" 5200 + version = "0.8.2" 5201 + source = "registry+https://github.com/rust-lang/crates.io-index" 5202 + checksum = "abe8c5fda708d9ca3df187cae8bfb9ceda00dd96231bed36e445a1a48e66f9ca" 5203 + dependencies = [ 5204 + "stable_deref_trait", 5205 + "yoke-derive", 5206 + "zerofrom", 5207 + ] 5208 + 5209 + [[package]] 5210 + name = "yoke-derive" 5211 + version = "0.8.2" 5212 + source = "registry+https://github.com/rust-lang/crates.io-index" 5213 + checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e" 5214 + dependencies = [ 5215 + "proc-macro2", 5216 + "quote", 5217 + "syn", 5218 + "synstructure", 5219 + ] 5220 + 5221 + [[package]] 5222 + name = "zerocopy" 5223 + version = "0.8.48" 5224 + source = "registry+https://github.com/rust-lang/crates.io-index" 5225 + checksum = "eed437bf9d6692032087e337407a86f04cd8d6a16a37199ed57949d415bd68e9" 5226 + dependencies = [ 5227 + "zerocopy-derive", 5228 + ] 5229 + 5230 + [[package]] 5231 + name = "zerocopy-derive" 5232 + version = "0.8.48" 5233 + source = "registry+https://github.com/rust-lang/crates.io-index" 5234 + checksum = "70e3cd084b1788766f53af483dd21f93881ff30d7320490ec3ef7526d203bad4" 5235 + dependencies = [ 5236 + "proc-macro2", 5237 + "quote", 5238 + "syn", 5239 + ] 5240 + 5241 + [[package]] 5242 + name = "zerofrom" 5243 + version = "0.1.7" 5244 + source = "registry+https://github.com/rust-lang/crates.io-index" 5245 + checksum = "69faa1f2a1ea75661980b013019ed6687ed0e83d069bc1114e2cc74c6c04c4df" 5246 + dependencies = [ 5247 + "zerofrom-derive", 5248 + ] 5249 + 5250 + [[package]] 5251 + name = "zerofrom-derive" 5252 + version = "0.1.7" 5253 + source = "registry+https://github.com/rust-lang/crates.io-index" 5254 + checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1" 5255 + dependencies = [ 5256 + "proc-macro2", 5257 + "quote", 5258 + "syn", 5259 + "synstructure", 5260 + ] 5261 + 5262 + [[package]] 5263 + name = "zeroize" 5264 + version = "1.8.2" 5265 + source = "registry+https://github.com/rust-lang/crates.io-index" 5266 + checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" 5267 + 5268 + [[package]] 5269 + name = "zerotrie" 5270 + version = "0.2.4" 5271 + source = "registry+https://github.com/rust-lang/crates.io-index" 5272 + checksum = "0f9152d31db0792fa83f70fb2f83148effb5c1f5b8c7686c3459e361d9bc20bf" 5273 + dependencies = [ 5274 + "displaydoc", 5275 + "yoke", 5276 + "zerofrom", 5277 + ] 5278 + 5279 + [[package]] 5280 + name = "zerovec" 5281 + version = "0.11.6" 5282 + source = "registry+https://github.com/rust-lang/crates.io-index" 5283 + checksum = "90f911cbc359ab6af17377d242225f4d75119aec87ea711a880987b18cd7b239" 5284 + dependencies = [ 5285 + "yoke", 5286 + "zerofrom", 5287 + "zerovec-derive", 5288 + ] 5289 + 5290 + [[package]] 5291 + name = "zerovec-derive" 5292 + version = "0.11.3" 5293 + source = "registry+https://github.com/rust-lang/crates.io-index" 5294 + checksum = "625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555" 5295 + dependencies = [ 5296 + "proc-macro2", 5297 + "quote", 5298 + "syn", 5299 + ] 5300 + 5301 + [[package]] 5302 + name = "zmij" 5303 + version = "1.0.21" 5304 + source = "registry+https://github.com/rust-lang/crates.io-index" 5305 + checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa"
+20 -16
Cargo.toml
··· 1 1 [workspace] 2 2 members = [ 3 - "api", 4 - "admin", 5 - "crates/sync_engine", 6 - "crates/achievements", 7 - "crates/leaderboards", 8 - "crates/events", 9 - "crates/sdk_be", 10 - "crates/sdk_godot", 11 - "crates/cli" 3 + "api", 4 + "admin", 5 + "crates/sync_engine", 6 + "crates/achievements", 7 + "crates/leaderboards", 8 + "crates/events", 9 + "crates/sdk_be", 10 + "crates/sdk_godot", 11 + "crates/cli", 12 12 ] 13 13 resolver = "2" 14 14 ··· 24 24 tokio = { version = "1.40", features = ["full"] } 25 25 26 26 poem = "3" 27 - poem-openapi = "3" 27 + poem-openapi = "5" 28 28 poem-lambda = "3" 29 29 rust-embed = "8" 30 30 31 31 tower = { version = "0.5", features = ["full"] } 32 - tower-http = { version = "0.6", features = ["cors", "compression", "trace"] } 32 + tower-http = { version = "0.6", features = ["cors", "compression-br", "trace"] } 33 33 tower-layer = "0.3" 34 34 tower-service = "0.3" 35 35 36 - axum = { version = "0.7", features = ["json", "headers", "tokio"] } 37 - 38 - sqlx = { version = "0.8", features = ["sqlite", "runtime-tokio-rustls", "chrono", "uuid", "ulid"] } 36 + sqlx = { version = "0.8", features = [ 37 + "sqlite", 38 + "runtime-tokio-rustls", 39 + "chrono", 40 + "uuid", 41 + ] } 39 42 rusqlite = { version = "0.32", features = ["bundled"] } 40 43 41 44 serde = { version = "1.0", features = ["derive"] } ··· 73 76 clap = { version = "4.5", features = ["derive"] } 74 77 75 78 similar = "2.2" 76 - qbsdiff = "0.4" 79 + qbsdiff = "1.4" 77 80 78 81 bevy = "0.13" 79 82 gdnative = "0.11" ··· 85 88 version = "1.4" 86 89 87 90 [workspace.dependencies.tokio-test] 88 - version = "0.4" 91 + version = "0.4" 92 +
+10 -1
admin/Cargo.toml
··· 10 10 11 11 [[bin]] 12 12 name = "scratchback-admin" 13 - path = "src/main.rs" 13 + path = "src/main.rs" 14 + 15 + [dependencies] 16 + anyhow = "1.0" 17 + clap = { version = "4.5", features = ["derive"] } 18 + tokio = { version = "1.40", features = ["full"] } 19 + tracing-subscriber = { version = "0.3", features = ["env-filter"] } 20 + rusqlite = { version = "0.32", features = ["bundled"] } 21 + chrono = { version = "0.4", features = ["serde"] } 22 + ulid = { version = "1.1", features = ["serde"] }
+1 -2
api/Cargo.toml
··· 12 12 tokio = { workspace = true } 13 13 14 14 poem = { workspace = true } 15 - poem-openapi = { workspace = true } 15 + poem-openapi = { workspace = true, features = ["static-files"] } 16 16 17 17 tower = { workspace = true } 18 18 tower-http = { workspace = true } ··· 20 20 tower-service = { workspace = true } 21 21 22 22 sqlx = { workspace = true } 23 - rusqlite = { workspace = true } 24 23 serde = { workspace = true } 25 24 serde_json = { workspace = true } 26 25 chrono = { workspace = true }
+3 -35
api/src/api/docs.rs
··· 1 - use poem::OpenApi; 2 - 3 - pub mod games; 4 - pub mod saves; 5 - 6 - pub struct Api; 7 - 8 - impl OpenApi for Api { 9 - #[allow(unused)] 10 - fn components(&self) -> poem_openapi::registry::Components { 11 - poem_openapi::registry::Components::new() 12 - } 13 - 14 - #[allow(unused)] 15 - fn paths(&self) -> poem_openapi::registry::Paths { 16 - let mut paths = poem_openapi::registry::Paths::new(); 17 - paths.add_path("/api/v1/games", games::Games::endpoint(), poem::http::Method::POST); 18 - paths.add_path( 19 - "/api/v1/games/:game_id", 20 - games::GetGame::endpoint(), 21 - poem::http::Method::GET, 22 - ); 23 - paths.add_path( 24 - "/api/v1/saves/:game_id/:slot_id", 25 - saves::UploadSave::endpoint(), 26 - poem::http::Method::POST, 27 - ); 28 - paths.add_path( 29 - "/api/v1/saves/:game_id/:slot_id", 30 - saves::DownloadSave::endpoint(), 31 - poem::http::Method::GET, 32 - ); 33 - paths 34 - } 35 - } 1 + // OBSOLETE - This file is kept for reference but is no longer used. 2 + // The poem-openapi v5 pattern uses #[derive(OpenApi)] in api/mod.rs instead. 3 + // This old trait-based pattern is no longer supported in poem-openapi v5.
+1 -36
api/src/api/games.rs
··· 1 - use poem::Request; 2 - use serde::{Deserialize, Serialize}; 3 - 4 - #[derive(Debug, Serialize, Deserialize)] 5 - pub struct CreateGameRequest { 6 - pub name: String, 7 - } 8 - 9 - #[derive(Debug, Serialize, Deserialize)] 10 - pub struct GameResponse { 11 - pub id: String, 12 - pub name: String, 13 - pub created_at: String, 14 - } 15 - 16 - pub async fn create_game() -> impl poem::Endpoint { 17 - poem::endpoint::Handler::from(|_req: Request| async move { 18 - poem::Response::builder() 19 - .header("Content-Type", "application/json") 20 - .json(serde_json::json!({ 21 - "error": "not_implemented", 22 - "message": "Auth not implemented yet" 23 - })) 24 - }) 25 - } 26 - 27 - pub async fn get_game() -> impl poem::Endpoint { 28 - poem::endpoint::Handler::from(|_req: Request| async move { 29 - poem::Response::builder() 30 - .header("Content-Type", "application/json") 31 - .json(serde_json::json!({ 32 - "error": "not_implemented", 33 - "message": "Auth not implemented yet" 34 - })) 35 - }) 36 - } 1 + // Moved to mod.rs - keeping file for potential future module separation
+25 -3
api/src/api/mod.rs
··· 1 - pub mod games; 2 - pub mod saves; 3 - pub mod docs; 1 + use poem_openapi::OpenApi; 2 + use poem_openapi::payload::PlainText; 3 + 4 + pub struct Api; 5 + 6 + #[OpenApi] 7 + impl Api { 8 + #[oai(path = "/hello", method = "get")] 9 + async fn hello(&self, name: poem_openapi::param::Query<Option<String>>) -> PlainText<String> { 10 + match name.0 { 11 + Some(name) => PlainText(format!("hello, {}!", name)), 12 + None => PlainText("hello!".to_string()), 13 + } 14 + } 15 + 16 + #[oai(path = "/games/:game_id", method = "get")] 17 + async fn get_game(&self, game_id: poem_openapi::param::Path<String>) -> PlainText<String> { 18 + PlainText(format!("Game: {}", game_id.0)) 19 + } 20 + 21 + #[oai(path = "/health", method = "get")] 22 + async fn health(&self) -> PlainText<String> { 23 + PlainText("OK".to_string()) 24 + } 25 + }
+1 -45
api/src/api/saves.rs
··· 1 - use poem::Request; 2 - 3 - pub async fn upload_save() -> impl poem::Endpoint { 4 - poem::endpoint::Handler::from(|_req: Request| async move { 5 - poem::Response::builder() 6 - .header("Content-Type", "application/json") 7 - .json(serde_json::json!({ 8 - "error": "not_implemented", 9 - "message": "Auth not implemented yet" 10 - })) 11 - }) 12 - } 13 - 14 - pub async fn download_save() -> impl poem::Endpoint { 15 - poem::endpoint::Handler::from(|_req: Request| async move { 16 - poem::Response::builder() 17 - .header("Content-Type", "application/json") 18 - .json(serde_json::json!({ 19 - "error": "not_implemented", 20 - "message": "Auth not implemented yet" 21 - })) 22 - }) 23 - } 24 - 25 - pub async fn list_versions() -> impl poem::Endpoint { 26 - poem::endpoint::Handler::from(|_req: Request| async move { 27 - poem::Response::builder() 28 - .header("Content-Type", "application/json") 29 - .json(serde_json::json!({ 30 - "error": "not_implemented", 31 - "message": "Auth not implemented yet" 32 - })) 33 - }) 34 - } 35 - 36 - pub async fn rollback() -> impl poem::Endpoint { 37 - poem::endpoint::Handler::from(|_req: Request| async move { 38 - poem::Response::builder() 39 - .header("Content-Type", "application/json") 40 - .json(serde_json::json!({ 41 - "error": "not_implemented", 42 - "message": "Auth not implemented yet" 43 - })) 44 - }) 45 - } 1 + // Moved to mod.rs - keeping file for potential future module separation
+1 -34
api/src/auth/mod.rs
··· 1 - use poem::Request; 2 - 3 - pub async fn itchio_callback() -> impl poem::Endpoint { 4 - poem::endpoint::Handler::from(|_req: Request| async move { 5 - poem::Response::builder() 6 - .header("Content-Type", "application/json") 7 - .json(serde_json::json!({ 8 - "error": "not_implemented", 9 - "message": "Auth not implemented yet" 10 - })) 11 - }) 12 - } 13 - 14 - pub async fn device_code() -> impl poem::Endpoint { 15 - poem::endpoint::Handler::from(|_req: Request| async move { 16 - poem::Response::builder() 17 - .header("Content-Type", "application/json") 18 - .json(serde_json::json!({ 19 - "error": "not_implemented", 20 - "message": "Auth not implemented yet" 21 - })) 22 - }) 23 - } 24 - 25 - pub async fn device_verify() -> impl poem::Endpoint { 26 - poem::endpoint::Handler::from(|_req: Request| async move { 27 - poem::Response::builder() 28 - .header("Content-Type", "application/json") 29 - .json(serde_json::json!({ 30 - "error": "not_implemented", 31 - "message": "Auth not implemented yet" 32 - })) 33 - }) 34 - } 1 + // Moved to api/mod.rs - keeping file for potential future module separation
+13 -28
api/src/config.rs
··· 1 - use anyhow::Result; 2 - use config::{Config, File}; 1 + use config::{Config as ConfigLoader, File}; 3 2 use serde::Deserialize; 3 + use std::net::SocketAddr; 4 4 5 5 #[derive(Debug, Deserialize, Clone)] 6 6 pub struct AppConfig { ··· 38 38 pub itchio_oauth_url: String, 39 39 } 40 40 41 - impl Config { 42 - pub fn load() -> Result<AppConfig> { 43 - let config = Config::builder() 41 + impl AppConfig { 42 + pub fn load() -> anyhow::Result<Self> { 43 + let config = ConfigLoader::builder() 44 44 .add_source(File::with_name("config").required(false)) 45 45 .add_source(File::with_name("/etc/scratchback/config").required(false)) 46 46 .add_source(config::Environment::default()) 47 47 .build()?; 48 48 49 - let mut app_config = AppConfig { 50 - server: ServerConfig { 51 - host: "0.0.0.0".to_string(), 52 - port: 3000, 53 - }, 54 - database: DatabaseConfig { 55 - path: "/var/data/scratchback/scratchback.db".to_string(), 56 - }, 57 - storage: StorageConfig { 58 - provider: "local".to_string(), 59 - do_spaces_endpoint: None, 60 - do_spaces_bucket: None, 61 - do_spaces_access_key: None, 62 - do_spaces_secret_key: None, 63 - }, 64 - auth: AuthConfig { 65 - jwt_secret: "dev-secret-change-in-production".to_string(), 66 - itchio_client_id: "".to_string(), 67 - itchio_oauth_url: "https://itch.io/user/oauth".to_string(), 68 - }, 69 - log_level: "info".to_string(), 70 - }; 49 + let mut app_config: AppConfig = config.try_deserialize()?; 71 50 72 51 if let Ok(server_host) = std::env::var("SCRATCHBACK_HOST") { 73 52 app_config.server.host = server_host; ··· 79 58 } 80 59 81 60 Ok(app_config) 61 + } 62 + 63 + pub fn server_addr(&self) -> SocketAddr { 64 + format!("{}:{}", self.server.host, self.server.port) 65 + .parse() 66 + .unwrap_or_else(|_| SocketAddr::from(([0, 0, 0, 0], 3000))) 82 67 } 83 68 } 84 69 ··· 117 102 self.server.host, self.server.port, self.database.path, self.storage.provider 118 103 ) 119 104 } 120 - } 105 + }
+14 -7
api/src/db/mod.rs
··· 1 1 use anyhow::Result; 2 - use rusqlite::Connection; 2 + use sqlx::{Pool, Sqlite}; 3 3 use std::path::Path; 4 4 5 - pub async fn init_database(db_path: &Path) -> Result<()> { 5 + pub type DbPool = Pool<Sqlite>; 6 + 7 + pub async fn init_database(db_path: &Path) -> Result<DbPool> { 6 8 if let Some(parent) = db_path.parent() { 7 9 std::fs::create_dir_all(parent)?; 8 10 } 9 11 10 - let conn = Connection::open(db_path)?; 12 + let database_url = format!("sqlite:{}?mode=rwc", db_path.display()); 13 + let pool = sqlx::sqlite::SqlitePoolOptions::new() 14 + .connect(&database_url) 15 + .await?; 11 16 12 - conn.execute_batch( 17 + sqlx::query( 13 18 r#" 14 19 CREATE TABLE IF NOT EXISTS developers ( 15 20 id TEXT PRIMARY KEY, ··· 92 97 CREATE INDEX IF NOT EXISTS idx_saves_game ON saves(game_id); 93 98 CREATE INDEX IF NOT EXISTS idx_save_versions_save ON save_versions(save_id); 94 99 "#, 95 - )?; 100 + ) 101 + .execute(&pool) 102 + .await?; 96 103 97 - Ok(()) 98 - } 104 + Ok(pool) 105 + }
+18 -29
api/src/main.rs
··· 1 1 use anyhow::Result; 2 2 use poem::middleware::Cors; 3 - use poem::{Endpoint, EndpointExt, Route}; 3 + use poem::{EndpointExt, Route}; 4 + use poem_openapi::OpenApiService; 4 5 use std::net::SocketAddr; 5 6 use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt}; 6 7 ··· 13 14 14 15 #[tokio::main] 15 16 async fn main() -> Result<()> { 16 - let config = config::Config::load()?; 17 + let app_config = config::AppConfig::load()?; 17 18 18 19 tracing_subscriber::registry() 19 20 .with(tracing_subscriber::EnvFilter::new( 20 - config.log_level.clone(), 21 + app_config.log_level.clone(), 21 22 )) 22 23 .with(tracing_subscriber::fmt::layer()) 23 24 .init(); 24 25 25 - let app = create_app().await?; 26 + // Initialize database 27 + let _db_pool = db::init_database(std::path::Path::new(&app_config.database.path)).await?; 26 28 27 - let addr: SocketAddr = config.server.parse()?; 29 + // Initialize OpenAPI service 30 + let api_service = OpenApiService::new(api::Api, "Scratchback API", "1.0") 31 + .server(format!("http://{}/api", app_config.server_addr())); 32 + 33 + let app = Route::new() 34 + .nest("/api", api_service) 35 + .at("/", web::StaticAssets::new()) 36 + .at("/*", web::StaticAssets::new()) 37 + .with(Cors::new()); 38 + 39 + let addr: SocketAddr = app_config.server_addr(); 28 40 tracing::info!("Starting server on {}", addr); 29 41 30 - poem::Server::new(poem::listener::TcpSocket::bind(addr)) 42 + poem::Server::new(poem::listener::TcpListener::bind(addr)) 31 43 .run(app) 32 44 .await?; 33 45 34 46 Ok(()) 35 47 } 36 - 37 - async fn create_app() -> Result<impl Endpoint> { 38 - let static_assets = web::StaticAssets::new()?; 39 - let cors = Cors::new(); 40 - 41 - let route = Route::new() 42 - .at("/", static_assets.clone()) 43 - .at("/index.html", static_assets.clone()) 44 - .at("/api/v1/games", api::games::create_game()) 45 - .at("/api/v1/games/:game_id", api::games::get_game()) 46 - .at("/api/v1/saves/:game_id/:slot_id", api::saves::upload_save()) 47 - .at("/api/v1/saves/:game_id/:slot_id", api::saves::download_save()) 48 - .at("/api/v1/saves/:game_id/:slot_id/versions", api::saves::list_versions()) 49 - .at("/api/v1/saves/:game_id/:slot_id/rollback", api::saves::rollback()) 50 - .at("/api/v1/auth/itchio/callback", auth::itchio_callback()) 51 - .at("/api/v1/auth/device/code", auth::device_code()) 52 - .at("/api/v1/auth/device/verify", auth::device_verify()) 53 - .at("/api/v1/docs", api::docs()) 54 - .get("/", static_assets) 55 - .with(cors); 56 - 57 - Ok(route) 58 - }
+1 -3
api/src/storage/digitalocean.rs
··· 49 49 } 50 50 51 51 pub async fn download_object(&self, key: &str) -> Result<Vec<u8>> { 52 - use aws_sdk_s3::primitives::ByteStream; 53 - 54 52 let resp = self 55 53 .client 56 54 .get_object() ··· 67 65 use std::time::Duration; 68 66 69 67 let presigning_config = aws_sdk_s3::presigning::PresigningConfig::builder() 70 - .expires(Duration::from_secs(expires_secs as u64)) 68 + .expires_in(Duration::from_secs(expires_secs as u64)) 71 69 .build()?; 72 70 73 71 let presigned = self
+5 -4
api/src/storage/mod.rs
··· 1 1 pub mod digitalocean; 2 2 3 3 use anyhow::Result; 4 + use std::sync::Arc; 4 5 5 - #[derive(Debug, Clone)] 6 + #[derive(Clone)] 6 7 pub enum StorageProvider { 7 8 Local, 8 - DigitalOcean(digitalocean::SpacesClient), 9 + DigitalOcean(Arc<digitalocean::SpacesClient>), 9 10 } 10 11 11 12 impl StorageProvider { ··· 19 20 config.do_spaces_secret_key.as_ref().unwrap(), 20 21 ) 21 22 .await?; 22 - Ok(StorageProvider::DigitalOcean(client)) 23 + Ok(StorageProvider::DigitalOcean(Arc::new(client))) 23 24 } 24 25 _ => Ok(StorageProvider::Local), 25 26 } ··· 63 64 } 64 65 } 65 66 66 - use std::path::Path; 67 + use std::path::Path;
+17 -46
api/src/web/mod.rs
··· 1 - use poem::endpoint::StaticFilesEndpoint; 1 + use poem::http::StatusCode; 2 + use poem::{Endpoint, Request, Response, Result}; 2 3 use rust_embed::Embed; 3 - use std::path::Path; 4 4 5 5 #[derive(Embed)] 6 6 #[folder = "../../landing/build"] ··· 9 9 pub struct StaticAssets; 10 10 11 11 impl StaticAssets { 12 - pub fn new() -> anyhow::Result<Self> { 13 - Ok(Self) 12 + pub fn new() -> Self { 13 + Self 14 14 } 15 15 } 16 16 17 - impl poem::Endpoint for StaticAssets { 18 - type Output = poem::Response; 17 + impl Endpoint for StaticAssets { 18 + type Output = Response; 19 19 20 - async fn call(&self, req: poem::Request) -> Self::Output { 20 + async fn call(&self, req: Request) -> Result<Self::Output> { 21 21 let path = req.uri().path().trim_start_matches('/'); 22 22 23 - if path.is_empty() || path == "index.html" { 24 - return Self::serve_file("index.html").await; 25 - } 26 - 27 23 if let Some(file) = Assets::get(path) { 28 24 let mime = mime_guess::from_path(path) 29 25 .first_or_octet_stream() 30 26 .to_string(); 31 27 32 - return poem::Response::builder() 33 - .header("Content-Type", mime) 28 + Ok(Response::builder() 29 + .header("Content-Type", &mime) 34 30 .header("Cache-Control", "public, max-age=31536000, immutable") 35 - .body(file.data.into_owned()) 36 - .unwrap() 37 - .into(); 38 - } 39 - 40 - Self::serve_file("index.html").await 41 - } 42 - } 43 - 44 - impl StaticAssets { 45 - async fn serve_file(path: &str) -> poem::Response { 46 - if let Some(file) = Assets::get(path) { 47 - let mime = mime_guess::from_path(path) 48 - .first_or_octet_stream() 49 - .to_string(); 50 - 51 - poem::Response::builder() 52 - .header("Content-Type", mime) 53 - .body(file.data.into_owned()) 54 - .unwrap() 55 - .into() 56 - } else if let Some(index) = Assets::get("index.html") { 57 - poem::Response::builder() 31 + .body(file.data.into_owned())) 32 + } else if let Some(file) = Assets::get("index.html") { 33 + Ok(Response::builder() 58 34 .header("Content-Type", "text/html") 59 - .status(poem::http::StatusCode::NOT_FOUND) 60 - .body(index.data.into_owned()) 61 - .unwrap() 62 - .into() 35 + .body(file.data.into_owned())) 63 36 } else { 64 - poem::Response::builder() 65 - .status(poem::http::StatusCode::NOT_FOUND) 66 - .body(Vec::new()) 67 - .unwrap() 68 - .into() 37 + Ok(Response::builder() 38 + .status(StatusCode::NOT_FOUND) 39 + .body(Vec::new())) 69 40 } 70 41 } 71 - } 42 + }