Commit b449da897c0f
tarball7 files changed+5228-0
@@ -0,0 +1,6 @@
1
+/target2
+/result3
+**/*.rs.bk4
+Cargo.lock.bak5
+.direnv/6
+.envrc@@ -0,0 +1,4646 @@
1
+# This file is automatically @generated by Cargo.2
+# It is not intended for manual editing.3
+version = 44
+5
+[[package]]6
+name = "ab_glyph"7
+version = "0.2.32"8
+source = "registry+https://github.com/rust-lang/crates.io-index"9
+checksum = "01c0457472c38ea5bd1c3b5ada5e368271cb550be7a4ca4a0b4634e9913f6cc2"10
+dependencies = [11
+ "ab_glyph_rasterizer",12
+ "owned_ttf_parser",13
+]14
+15
+[[package]]16
+name = "ab_glyph_rasterizer"17
+version = "0.1.10"18
+source = "registry+https://github.com/rust-lang/crates.io-index"19
+checksum = "366ffbaa4442f4684d91e2cd7c5ea7c4ed8add41959a31447066e279e432b618"20
+21
+[[package]]22
+name = "ahash"23
+version = "0.8.12"24
+source = "registry+https://github.com/rust-lang/crates.io-index"25
+checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75"26
+dependencies = [27
+ "cfg-if",28
+ "getrandom",29
+ "once_cell",30
+ "version_check",31
+ "zerocopy",32
+]33
+34
+[[package]]35
+name = "aho-corasick"36
+version = "1.1.4"37
+source = "registry+https://github.com/rust-lang/crates.io-index"38
+checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301"39
+dependencies = [40
+ "memchr",41
+]42
+43
+[[package]]44
+name = "allocator-api2"45
+version = "0.2.21"46
+source = "registry+https://github.com/rust-lang/crates.io-index"47
+checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923"48
+49
+[[package]]50
+name = "android-activity"51
+version = "0.6.1"52
+source = "registry+https://github.com/rust-lang/crates.io-index"53
+checksum = "0f2a1bb052857d5dd49572219344a7332b31b76405648eabac5bc68978251bcd"54
+dependencies = [55
+ "android-properties",56
+ "bitflags 2.11.1",57
+ "cc",58
+ "jni",59
+ "libc",60
+ "log",61
+ "ndk",62
+ "ndk-context",63
+ "ndk-sys",64
+ "num_enum",65
+ "thiserror 2.0.18",66
+]67
+68
+[[package]]69
+name = "android-properties"70
+version = "0.2.2"71
+source = "registry+https://github.com/rust-lang/crates.io-index"72
+checksum = "fc7eb209b1518d6bb87b283c20095f5228ecda460da70b44f0802523dea6da04"73
+74
+[[package]]75
+name = "android_system_properties"76
+version = "0.1.5"77
+source = "registry+https://github.com/rust-lang/crates.io-index"78
+checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311"79
+dependencies = [80
+ "libc",81
+]82
+83
+[[package]]84
+name = "anes"85
+version = "0.1.6"86
+source = "registry+https://github.com/rust-lang/crates.io-index"87
+checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299"88
+89
+[[package]]90
+name = "annotate-snippets"91
+version = "0.9.2"92
+source = "registry+https://github.com/rust-lang/crates.io-index"93
+checksum = "ccaf7e9dfbb6ab22c82e473cd1a8a7bd313c19a5b7e40970f3d89ef5a5c9e81e"94
+dependencies = [95
+ "unicode-width 0.1.14",96
+ "yansi-term",97
+]98
+99
+[[package]]100
+name = "anstream"101
+version = "1.0.0"102
+source = "registry+https://github.com/rust-lang/crates.io-index"103
+checksum = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d"104
+dependencies = [105
+ "anstyle",106
+ "anstyle-parse",107
+ "anstyle-query",108
+ "anstyle-wincon",109
+ "colorchoice",110
+ "is_terminal_polyfill",111
+ "utf8parse",112
+]113
+114
+[[package]]115
+name = "anstyle"116
+version = "1.0.14"117
+source = "registry+https://github.com/rust-lang/crates.io-index"118
+checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000"119
+120
+[[package]]121
+name = "anstyle-parse"122
+version = "1.0.0"123
+source = "registry+https://github.com/rust-lang/crates.io-index"124
+checksum = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e"125
+dependencies = [126
+ "utf8parse",127
+]128
+129
+[[package]]130
+name = "anstyle-query"131
+version = "1.1.5"132
+source = "registry+https://github.com/rust-lang/crates.io-index"133
+checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc"134
+dependencies = [135
+ "windows-sys 0.61.2",136
+]137
+138
+[[package]]139
+name = "anstyle-wincon"140
+version = "3.0.11"141
+source = "registry+https://github.com/rust-lang/crates.io-index"142
+checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d"143
+dependencies = [144
+ "anstyle",145
+ "once_cell_polyfill",146
+ "windows-sys 0.61.2",147
+]148
+149
+[[package]]150
+name = "anyhow"151
+version = "1.0.102"152
+source = "registry+https://github.com/rust-lang/crates.io-index"153
+checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c"154
+155
+[[package]]156
+name = "arrayref"157
+version = "0.3.9"158
+source = "registry+https://github.com/rust-lang/crates.io-index"159
+checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb"160
+161
+[[package]]162
+name = "arrayvec"163
+version = "0.7.6"164
+source = "registry+https://github.com/rust-lang/crates.io-index"165
+checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50"166
+167
+[[package]]168
+name = "ash"169
+version = "0.38.0+1.3.281"170
+source = "registry+https://github.com/rust-lang/crates.io-index"171
+checksum = "0bb44936d800fea8f016d7f2311c6a4f97aebd5dc86f09906139ec848cf3a46f"172
+dependencies = [173
+ "libloading",174
+]175
+176
+[[package]]177
+name = "assert_no_alloc"178
+version = "1.1.2"179
+source = "registry+https://github.com/rust-lang/crates.io-index"180
+checksum = "55ca83137a482d61d916ceb1eba52a684f98004f18e0cafea230fe5579c178a3"181
+182
+[[package]]183
+name = "async-channel"184
+version = "2.5.0"185
+source = "registry+https://github.com/rust-lang/crates.io-index"186
+checksum = "924ed96dd52d1b75e9c1a3e6275715fd320f5f9439fb5a4a11fa51f4221158d2"187
+dependencies = [188
+ "concurrent-queue",189
+ "event-listener-strategy",190
+ "futures-core",191
+ "pin-project-lite",192
+]193
+194
+[[package]]195
+name = "async-executor"196
+version = "1.14.0"197
+source = "registry+https://github.com/rust-lang/crates.io-index"198
+checksum = "c96bf972d85afc50bf5ab8fe2d54d1586b4e0b46c97c50a0c9e71e2f7bcd812a"199
+dependencies = [200
+ "async-task",201
+ "concurrent-queue",202
+ "fastrand",203
+ "futures-lite",204
+ "pin-project-lite",205
+ "slab",206
+]207
+208
+[[package]]209
+name = "async-fs"210
+version = "2.2.0"211
+source = "registry+https://github.com/rust-lang/crates.io-index"212
+checksum = "8034a681df4aed8b8edbd7fbe472401ecf009251c8b40556b304567052e294c5"213
+dependencies = [214
+ "async-lock",215
+ "blocking",216
+ "futures-lite",217
+]218
+219
+[[package]]220
+name = "async-io"221
+version = "2.6.0"222
+source = "registry+https://github.com/rust-lang/crates.io-index"223
+checksum = "456b8a8feb6f42d237746d4b3e9a178494627745c3c56c6ea55d92ba50d026fc"224
+dependencies = [225
+ "autocfg",226
+ "cfg-if",227
+ "concurrent-queue",228
+ "futures-io",229
+ "futures-lite",230
+ "parking",231
+ "polling",232
+ "rustix 1.1.4",233
+ "slab",234
+ "windows-sys 0.61.2",235
+]236
+237
+[[package]]238
+name = "async-lock"239
+version = "3.4.2"240
+source = "registry+https://github.com/rust-lang/crates.io-index"241
+checksum = "290f7f2596bd5b78a9fec8088ccd89180d7f9f55b94b0576823bbbdc72ee8311"242
+dependencies = [243
+ "event-listener",244
+ "event-listener-strategy",245
+ "pin-project-lite",246
+]247
+248
+[[package]]249
+name = "async-net"250
+version = "2.0.0"251
+source = "registry+https://github.com/rust-lang/crates.io-index"252
+checksum = "b948000fad4873c1c9339d60f2623323a0cfd3816e5181033c6a5cb68b2accf7"253
+dependencies = [254
+ "async-io",255
+ "blocking",256
+ "futures-lite",257
+]258
+259
+[[package]]260
+name = "async-process"261
+version = "2.5.0"262
+source = "registry+https://github.com/rust-lang/crates.io-index"263
+checksum = "fc50921ec0055cdd8a16de48773bfeec5c972598674347252c0399676be7da75"264
+dependencies = [265
+ "async-channel",266
+ "async-io",267
+ "async-lock",268
+ "async-signal",269
+ "async-task",270
+ "blocking",271
+ "cfg-if",272
+ "event-listener",273
+ "futures-lite",274
+ "rustix 1.1.4",275
+]276
+277
+[[package]]278
+name = "async-signal"279
+version = "0.2.14"280
+source = "registry+https://github.com/rust-lang/crates.io-index"281
+checksum = "52b5aaafa020cf5053a01f2a60e8ff5dccf550f0f77ec54a4e47285ac2bab485"282
+dependencies = [283
+ "async-io",284
+ "async-lock",285
+ "atomic-waker",286
+ "cfg-if",287
+ "futures-core",288
+ "futures-io",289
+ "rustix 1.1.4",290
+ "signal-hook-registry",291
+ "slab",292
+ "windows-sys 0.61.2",293
+]294
+295
+[[package]]296
+name = "async-task"297
+version = "4.7.1"298
+source = "registry+https://github.com/rust-lang/crates.io-index"299
+checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de"300
+301
+[[package]]302
+name = "atomic-waker"303
+version = "1.1.2"304
+source = "registry+https://github.com/rust-lang/crates.io-index"305
+checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0"306
+307
+[[package]]308
+name = "autocfg"309
+version = "1.5.1"310
+source = "registry+https://github.com/rust-lang/crates.io-index"311
+checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53"312
+313
+[[package]]314
+name = "bindgen"315
+version = "0.69.5"316
+source = "registry+https://github.com/rust-lang/crates.io-index"317
+checksum = "271383c67ccabffb7381723dea0672a673f292304fcb45c01cc648c7a8d58088"318
+dependencies = [319
+ "annotate-snippets",320
+ "bitflags 2.11.1",321
+ "cexpr",322
+ "clang-sys",323
+ "itertools 0.12.1",324
+ "lazy_static",325
+ "lazycell",326
+ "proc-macro2",327
+ "quote",328
+ "regex",329
+ "rustc-hash 1.1.0",330
+ "shlex",331
+ "syn",332
+]333
+334
+[[package]]335
+name = "bit-set"336
+version = "0.8.0"337
+source = "registry+https://github.com/rust-lang/crates.io-index"338
+checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3"339
+dependencies = [340
+ "bit-vec",341
+]342
+343
+[[package]]344
+name = "bit-vec"345
+version = "0.8.0"346
+source = "registry+https://github.com/rust-lang/crates.io-index"347
+checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7"348
+349
+[[package]]350
+name = "bitflags"351
+version = "1.3.2"352
+source = "registry+https://github.com/rust-lang/crates.io-index"353
+checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"354
+355
+[[package]]356
+name = "bitflags"357
+version = "2.11.1"358
+source = "registry+https://github.com/rust-lang/crates.io-index"359
+checksum = "c4512299f36f043ab09a583e57bceb5a5aab7a73db1805848e8fef3c9e8c78b3"360
+361
+[[package]]362
+name = "block"363
+version = "0.1.6"364
+source = "registry+https://github.com/rust-lang/crates.io-index"365
+checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a"366
+367
+[[package]]368
+name = "block2"369
+version = "0.5.1"370
+source = "registry+https://github.com/rust-lang/crates.io-index"371
+checksum = "2c132eebf10f5cad5289222520a4a058514204aed6d791f1cf4fe8088b82d15f"372
+dependencies = [373
+ "objc2 0.5.2",374
+]375
+376
+[[package]]377
+name = "blocking"378
+version = "1.6.2"379
+source = "registry+https://github.com/rust-lang/crates.io-index"380
+checksum = "e83f8d02be6967315521be875afa792a316e28d57b5a2d401897e2a7921b7f21"381
+dependencies = [382
+ "async-channel",383
+ "async-task",384
+ "futures-io",385
+ "futures-lite",386
+ "piper",387
+]388
+389
+[[package]]390
+name = "bumpalo"391
+version = "3.20.3"392
+source = "registry+https://github.com/rust-lang/crates.io-index"393
+checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649"394
+395
+[[package]]396
+name = "bytemuck"397
+version = "1.25.0"398
+source = "registry+https://github.com/rust-lang/crates.io-index"399
+checksum = "c8efb64bd706a16a1bdde310ae86b351e4d21550d98d056f22f8a7f7a2183fec"400
+dependencies = [401
+ "bytemuck_derive",402
+]403
+404
+[[package]]405
+name = "bytemuck_derive"406
+version = "1.10.2"407
+source = "registry+https://github.com/rust-lang/crates.io-index"408
+checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff"409
+dependencies = [410
+ "proc-macro2",411
+ "quote",412
+ "syn",413
+]414
+415
+[[package]]416
+name = "bytes"417
+version = "1.11.1"418
+source = "registry+https://github.com/rust-lang/crates.io-index"419
+checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33"420
+421
+[[package]]422
+name = "calloop"423
+version = "0.13.0"424
+source = "registry+https://github.com/rust-lang/crates.io-index"425
+checksum = "b99da2f8558ca23c71f4fd15dc57c906239752dd27ff3c00a1d56b685b7cbfec"426
+dependencies = [427
+ "bitflags 2.11.1",428
+ "log",429
+ "polling",430
+ "rustix 0.38.44",431
+ "slab",432
+ "thiserror 1.0.69",433
+]434
+435
+[[package]]436
+name = "calloop"437
+version = "0.14.4"438
+source = "registry+https://github.com/rust-lang/crates.io-index"439
+checksum = "4dbf9978365bac10f54d1d4b04f7ce4427e51f71d61f2fe15e3fed5166474df7"440
+dependencies = [441
+ "bitflags 2.11.1",442
+ "polling",443
+ "rustix 1.1.4",444
+ "slab",445
+ "tracing",446
+]447
+448
+[[package]]449
+name = "calloop-wayland-source"450
+version = "0.3.0"451
+source = "registry+https://github.com/rust-lang/crates.io-index"452
+checksum = "95a66a987056935f7efce4ab5668920b5d0dac4a7c99991a67395f13702ddd20"453
+dependencies = [454
+ "calloop 0.13.0",455
+ "rustix 0.38.44",456
+ "wayland-backend",457
+ "wayland-client",458
+]459
+460
+[[package]]461
+name = "calloop-wayland-source"462
+version = "0.4.1"463
+source = "registry+https://github.com/rust-lang/crates.io-index"464
+checksum = "138efcf0940a02ebf0cc8d1eff41a1682a46b431630f4c52450d6265876021fa"465
+dependencies = [466
+ "calloop 0.14.4",467
+ "rustix 1.1.4",468
+ "wayland-backend",469
+ "wayland-client",470
+]471
+472
+[[package]]473
+name = "cassowary"474
+version = "0.3.0"475
+source = "registry+https://github.com/rust-lang/crates.io-index"476
+checksum = "df8670b8c7b9dae1793364eafadf7239c40d669904660c5960d74cfd80b46a53"477
+478
+[[package]]479
+name = "cast"480
+version = "0.3.0"481
+source = "registry+https://github.com/rust-lang/crates.io-index"482
+checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"483
+484
+[[package]]485
+name = "castaway"486
+version = "0.2.4"487
+source = "registry+https://github.com/rust-lang/crates.io-index"488
+checksum = "dec551ab6e7578819132c713a93c022a05d60159dc86e7a7050223577484c55a"489
+dependencies = [490
+ "rustversion",491
+]492
+493
+[[package]]494
+name = "cc"495
+version = "1.2.62"496
+source = "registry+https://github.com/rust-lang/crates.io-index"497
+checksum = "a1dce859f0832a7d088c4f1119888ab94ef4b5d6795d1ce05afb7fe159d79f98"498
+dependencies = [499
+ "find-msvc-tools",500
+ "jobserver",501
+ "libc",502
+ "shlex",503
+]504
+505
+[[package]]506
+name = "cexpr"507
+version = "0.6.0"508
+source = "registry+https://github.com/rust-lang/crates.io-index"509
+checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766"510
+dependencies = [511
+ "nom",512
+]513
+514
+[[package]]515
+name = "cfg-expr"516
+version = "0.15.8"517
+source = "registry+https://github.com/rust-lang/crates.io-index"518
+checksum = "d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02"519
+dependencies = [520
+ "smallvec",521
+ "target-lexicon",522
+]523
+524
+[[package]]525
+name = "cfg-if"526
+version = "1.0.4"527
+source = "registry+https://github.com/rust-lang/crates.io-index"528
+checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"529
+530
+[[package]]531
+name = "cfg_aliases"532
+version = "0.2.1"533
+source = "registry+https://github.com/rust-lang/crates.io-index"534
+checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724"535
+536
+[[package]]537
+name = "ciborium"538
+version = "0.2.2"539
+source = "registry+https://github.com/rust-lang/crates.io-index"540
+checksum = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e"541
+dependencies = [542
+ "ciborium-io",543
+ "ciborium-ll",544
+ "serde",545
+]546
+547
+[[package]]548
+name = "ciborium-io"549
+version = "0.2.2"550
+source = "registry+https://github.com/rust-lang/crates.io-index"551
+checksum = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757"552
+553
+[[package]]554
+name = "ciborium-ll"555
+version = "0.2.2"556
+source = "registry+https://github.com/rust-lang/crates.io-index"557
+checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9"558
+dependencies = [559
+ "ciborium-io",560
+ "half",561
+]562
+563
+[[package]]564
+name = "clang-sys"565
+version = "1.8.1"566
+source = "registry+https://github.com/rust-lang/crates.io-index"567
+checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4"568
+dependencies = [569
+ "glob",570
+ "libc",571
+ "libloading",572
+]573
+574
+[[package]]575
+name = "clap"576
+version = "4.6.1"577
+source = "registry+https://github.com/rust-lang/crates.io-index"578
+checksum = "1ddb117e43bbf7dacf0a4190fef4d345b9bad68dfc649cb349e7d17d28428e51"579
+dependencies = [580
+ "clap_builder",581
+ "clap_derive",582
+]583
+584
+[[package]]585
+name = "clap_builder"586
+version = "4.6.0"587
+source = "registry+https://github.com/rust-lang/crates.io-index"588
+checksum = "714a53001bf66416adb0e2ef5ac857140e7dc3a0c48fb28b2f10762fc4b5069f"589
+dependencies = [590
+ "anstream",591
+ "anstyle",592
+ "clap_lex",593
+ "strsim",594
+]595
+596
+[[package]]597
+name = "clap_derive"598
+version = "4.6.1"599
+source = "registry+https://github.com/rust-lang/crates.io-index"600
+checksum = "f2ce8604710f6733aa641a2b3731eaa1e8b3d9973d5e3565da11800813f997a9"601
+dependencies = [602
+ "heck",603
+ "proc-macro2",604
+ "quote",605
+ "syn",606
+]607
+608
+[[package]]609
+name = "clap_lex"610
+version = "1.1.0"611
+source = "registry+https://github.com/rust-lang/crates.io-index"612
+checksum = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9"613
+614
+[[package]]615
+name = "clipboard-win"616
+version = "5.4.1"617
+source = "registry+https://github.com/rust-lang/crates.io-index"618
+checksum = "bde03770d3df201d4fb868f2c9c59e66a3e4e2bd06692a0fe701e7103c7e84d4"619
+dependencies = [620
+ "error-code",621
+]622
+623
+[[package]]624
+name = "clipboard_macos"625
+version = "0.1.1"626
+source = "registry+https://github.com/rust-lang/crates.io-index"627
+checksum = "9b7f4aaa047ba3c3630b080bb9860894732ff23e2aee290a418909aa6d5df38f"628
+dependencies = [629
+ "objc2 0.5.2",630
+ "objc2-app-kit",631
+ "objc2-foundation 0.2.2",632
+]633
+634
+[[package]]635
+name = "clipboard_wayland"636
+version = "0.2.2"637
+source = "registry+https://github.com/rust-lang/crates.io-index"638
+checksum = "003f886bc4e2987729d10c1db3424e7f80809f3fc22dbc16c685738887cb37b8"639
+dependencies = [640
+ "smithay-clipboard",641
+]642
+643
+[[package]]644
+name = "codespan-reporting"645
+version = "0.12.0"646
+source = "registry+https://github.com/rust-lang/crates.io-index"647
+checksum = "fe6d2e5af09e8c8ad56c969f2157a3d4238cebc7c55f0a517728c38f7b200f81"648
+dependencies = [649
+ "serde",650
+ "termcolor",651
+ "unicode-width 0.2.2",652
+]653
+654
+[[package]]655
+name = "colorchoice"656
+version = "1.0.5"657
+source = "registry+https://github.com/rust-lang/crates.io-index"658
+checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570"659
+660
+[[package]]661
+name = "combine"662
+version = "4.6.7"663
+source = "registry+https://github.com/rust-lang/crates.io-index"664
+checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd"665
+dependencies = [666
+ "bytes",667
+ "memchr",668
+]669
+670
+[[package]]671
+name = "compact_str"672
+version = "0.8.1"673
+source = "registry+https://github.com/rust-lang/crates.io-index"674
+checksum = "3b79c4069c6cad78e2e0cdfcbd26275770669fb39fd308a752dc110e83b9af32"675
+dependencies = [676
+ "castaway",677
+ "cfg-if",678
+ "itoa",679
+ "rustversion",680
+ "ryu",681
+ "static_assertions",682
+]683
+684
+[[package]]685
+name = "concurrent-queue"686
+version = "2.5.0"687
+source = "registry+https://github.com/rust-lang/crates.io-index"688
+checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973"689
+dependencies = [690
+ "crossbeam-utils",691
+]692
+693
+[[package]]694
+name = "convert_case"695
+version = "0.6.0"696
+source = "registry+https://github.com/rust-lang/crates.io-index"697
+checksum = "ec182b0ca2f35d8fc196cf3404988fd8b8c739a4d270ff118a398feb0cbec1ca"698
+dependencies = [699
+ "unicode-segmentation",700
+]701
+702
+[[package]]703
+name = "cookie-factory"704
+version = "0.3.3"705
+source = "registry+https://github.com/rust-lang/crates.io-index"706
+checksum = "9885fa71e26b8ab7855e2ec7cae6e9b380edff76cd052e07c683a0319d51b3a2"707
+dependencies = [708
+ "futures",709
+]710
+711
+[[package]]712
+name = "core-foundation"713
+version = "0.9.4"714
+source = "registry+https://github.com/rust-lang/crates.io-index"715
+checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f"716
+dependencies = [717
+ "core-foundation-sys",718
+ "libc",719
+]720
+721
+[[package]]722
+name = "core-foundation"723
+version = "0.10.1"724
+source = "registry+https://github.com/rust-lang/crates.io-index"725
+checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6"726
+dependencies = [727
+ "core-foundation-sys",728
+ "libc",729
+]730
+731
+[[package]]732
+name = "core-foundation-sys"733
+version = "0.8.7"734
+source = "registry+https://github.com/rust-lang/crates.io-index"735
+checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"736
+737
+[[package]]738
+name = "core-graphics"739
+version = "0.23.2"740
+source = "registry+https://github.com/rust-lang/crates.io-index"741
+checksum = "c07782be35f9e1140080c6b96f0d44b739e2278479f64e02fdab4e32dfd8b081"742
+dependencies = [743
+ "bitflags 1.3.2",744
+ "core-foundation 0.9.4",745
+ "core-graphics-types 0.1.3",746
+ "foreign-types",747
+ "libc",748
+]749
+750
+[[package]]751
+name = "core-graphics-types"752
+version = "0.1.3"753
+source = "registry+https://github.com/rust-lang/crates.io-index"754
+checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf"755
+dependencies = [756
+ "bitflags 1.3.2",757
+ "core-foundation 0.9.4",758
+ "libc",759
+]760
+761
+[[package]]762
+name = "core-graphics-types"763
+version = "0.2.0"764
+source = "registry+https://github.com/rust-lang/crates.io-index"765
+checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb"766
+dependencies = [767
+ "bitflags 2.11.1",768
+ "core-foundation 0.10.1",769
+ "libc",770
+]771
+772
+[[package]]773
+name = "core_maths"774
+version = "0.1.1"775
+source = "registry+https://github.com/rust-lang/crates.io-index"776
+checksum = "77745e017f5edba1a9c1d854f6f3a52dac8a12dd5af5d2f54aecf61e43d80d30"777
+dependencies = [778
+ "libm",779
+]780
+781
+[[package]]782
+name = "cosmic-text"783
+version = "0.15.0"784
+source = "registry+https://github.com/rust-lang/crates.io-index"785
+checksum = "173852283a9a57a3cbe365d86e74dc428a09c50421477d5ad6fe9d9509e37737"786
+dependencies = [787
+ "bitflags 2.11.1",788
+ "fontdb",789
+ "harfrust",790
+ "linebender_resource_handle",791
+ "log",792
+ "rangemap",793
+ "rustc-hash 1.1.0",794
+ "self_cell",795
+ "skrifa 0.37.0",796
+ "smol_str",797
+ "swash",798
+ "sys-locale",799
+ "unicode-bidi",800
+ "unicode-linebreak",801
+ "unicode-script",802
+ "unicode-segmentation",803
+]804
+805
+[[package]]806
+name = "criterion"807
+version = "0.5.1"808
+source = "registry+https://github.com/rust-lang/crates.io-index"809
+checksum = "f2b12d017a929603d80db1831cd3a24082f8137ce19c69e6447f54f5fc8d692f"810
+dependencies = [811
+ "anes",812
+ "cast",813
+ "ciborium",814
+ "clap",815
+ "criterion-plot",816
+ "is-terminal",817
+ "itertools 0.10.5",818
+ "num-traits",819
+ "once_cell",820
+ "oorandom",821
+ "regex",822
+ "serde",823
+ "serde_derive",824
+ "serde_json",825
+ "tinytemplate",826
+ "walkdir",827
+]828
+829
+[[package]]830
+name = "criterion-plot"831
+version = "0.5.0"832
+source = "registry+https://github.com/rust-lang/crates.io-index"833
+checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1"834
+dependencies = [835
+ "cast",836
+ "itertools 0.10.5",837
+]838
+839
+[[package]]840
+name = "crossbeam-channel"841
+version = "0.5.15"842
+source = "registry+https://github.com/rust-lang/crates.io-index"843
+checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2"844
+dependencies = [845
+ "crossbeam-utils",846
+]847
+848
+[[package]]849
+name = "crossbeam-utils"850
+version = "0.8.21"851
+source = "registry+https://github.com/rust-lang/crates.io-index"852
+checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28"853
+854
+[[package]]855
+name = "crossterm"856
+version = "0.28.1"857
+source = "registry+https://github.com/rust-lang/crates.io-index"858
+checksum = "829d955a0bb380ef178a640b91779e3987da38c9aea133b20614cfed8cdea9c6"859
+dependencies = [860
+ "bitflags 2.11.1",861
+ "crossterm_winapi",862
+ "mio 1.2.0",863
+ "parking_lot",864
+ "rustix 0.38.44",865
+ "signal-hook",866
+ "signal-hook-mio",867
+ "winapi",868
+]869
+870
+[[package]]871
+name = "crossterm_winapi"872
+version = "0.9.1"873
+source = "registry+https://github.com/rust-lang/crates.io-index"874
+checksum = "acdd7c62a3665c7f6830a51635d9ac9b23ed385797f70a83bb8bafe9c572ab2b"875
+dependencies = [876
+ "winapi",877
+]878
+879
+[[package]]880
+name = "crunchy"881
+version = "0.2.4"882
+source = "registry+https://github.com/rust-lang/crates.io-index"883
+checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5"884
+885
+[[package]]886
+name = "cryoglyph"887
+version = "0.1.0"888
+source = "registry+https://github.com/rust-lang/crates.io-index"889
+checksum = "08bc795bdbccdbd461736fb163930a009da6597b226d6f6fce33e7a8eb6ec519"890
+dependencies = [891
+ "cosmic-text",892
+ "etagere",893
+ "lru 0.16.4",894
+ "rustc-hash 2.1.2",895
+ "wgpu",896
+]897
+898
+[[package]]899
+name = "cursor-icon"900
+version = "1.2.0"901
+source = "registry+https://github.com/rust-lang/crates.io-index"902
+checksum = "f27ae1dd37df86211c42e150270f82743308803d90a6f6e6651cd730d5e1732f"903
+904
+[[package]]905
+name = "darling"906
+version = "0.23.0"907
+source = "registry+https://github.com/rust-lang/crates.io-index"908
+checksum = "25ae13da2f202d56bd7f91c25fba009e7717a1e4a1cc98a76d844b65ae912e9d"909
+dependencies = [910
+ "darling_core",911
+ "darling_macro",912
+]913
+914
+[[package]]915
+name = "darling_core"916
+version = "0.23.0"917
+source = "registry+https://github.com/rust-lang/crates.io-index"918
+checksum = "9865a50f7c335f53564bb694ef660825eb8610e0a53d3e11bf1b0d3df31e03b0"919
+dependencies = [920
+ "ident_case",921
+ "proc-macro2",922
+ "quote",923
+ "strsim",924
+ "syn",925
+]926
+927
+[[package]]928
+name = "darling_macro"929
+version = "0.23.0"930
+source = "registry+https://github.com/rust-lang/crates.io-index"931
+checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d"932
+dependencies = [933
+ "darling_core",934
+ "quote",935
+ "syn",936
+]937
+938
+[[package]]939
+name = "dasp_frame"940
+version = "0.11.0"941
+source = "registry+https://github.com/rust-lang/crates.io-index"942
+checksum = "b2a3937f5fe2135702897535c8d4a5553f8b116f76c1529088797f2eee7c5cd6"943
+dependencies = [944
+ "dasp_sample",945
+]946
+947
+[[package]]948
+name = "dasp_sample"949
+version = "0.11.0"950
+source = "registry+https://github.com/rust-lang/crates.io-index"951
+checksum = "0c87e182de0887fd5361989c677c4e8f5000cd9491d6d563161a8f3a5519fc7f"952
+953
+[[package]]954
+name = "dispatch"955
+version = "0.2.0"956
+source = "registry+https://github.com/rust-lang/crates.io-index"957
+checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b"958
+959
+[[package]]960
+name = "dispatch2"961
+version = "0.3.1"962
+source = "registry+https://github.com/rust-lang/crates.io-index"963
+checksum = "1e0e367e4e7da84520dedcac1901e4da967309406d1e51017ae1abfb97adbd38"964
+dependencies = [965
+ "bitflags 2.11.1",966
+ "objc2 0.6.4",967
+]968
+969
+[[package]]970
+name = "dlib"971
+version = "0.5.3"972
+source = "registry+https://github.com/rust-lang/crates.io-index"973
+checksum = "ab8ecd87370524b461f8557c119c405552c396ed91fc0a8eec68679eab26f94a"974
+dependencies = [975
+ "libloading",976
+]977
+978
+[[package]]979
+name = "document-features"980
+version = "0.2.12"981
+source = "registry+https://github.com/rust-lang/crates.io-index"982
+checksum = "d4b8a88685455ed29a21542a33abd9cb6510b6b129abadabdcef0f4c55bc8f61"983
+dependencies = [984
+ "litrs",985
+]986
+987
+[[package]]988
+name = "downcast-rs"989
+version = "1.2.1"990
+source = "registry+https://github.com/rust-lang/crates.io-index"991
+checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2"992
+993
+[[package]]994
+name = "dpi"995
+version = "0.1.2"996
+source = "registry+https://github.com/rust-lang/crates.io-index"997
+checksum = "d8b14ccef22fc6f5a8f4d7d768562a182c04ce9a3b3157b91390b52ddfdf1a76"998
+999
+[[package]]1000
+name = "ebur128"1001
+version = "0.1.10"1002
+source = "registry+https://github.com/rust-lang/crates.io-index"1003
+checksum = "e227cc62d64d6fe01abbef48134b9c1f17d470cef1e7a56337ad05b1f81df7f9"1004
+dependencies = [1005
+ "bitflags 1.3.2",1006
+ "dasp_frame",1007
+ "dasp_sample",1008
+ "smallvec",1009
+]1010
+1011
+[[package]]1012
+name = "either"1013
+version = "1.16.0"1014
+source = "registry+https://github.com/rust-lang/crates.io-index"1015
+checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e"1016
+1017
+[[package]]1018
+name = "equivalent"1019
+version = "1.0.2"1020
+source = "registry+https://github.com/rust-lang/crates.io-index"1021
+checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"1022
+1023
+[[package]]1024
+name = "errno"1025
+version = "0.3.14"1026
+source = "registry+https://github.com/rust-lang/crates.io-index"1027
+checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"1028
+dependencies = [1029
+ "libc",1030
+ "windows-sys 0.61.2",1031
+]1032
+1033
+[[package]]1034
+name = "error-code"1035
+version = "3.3.2"1036
+source = "registry+https://github.com/rust-lang/crates.io-index"1037
+checksum = "dea2df4cf52843e0452895c455a1a2cfbb842a1e7329671acf418fdc53ed4c59"1038
+1039
+[[package]]1040
+name = "etagere"1041
+version = "0.2.15"1042
+source = "registry+https://github.com/rust-lang/crates.io-index"1043
+checksum = "fc89bf99e5dc15954a60f707c1e09d7540e5cd9af85fa75caa0b510bc08c5342"1044
+dependencies = [1045
+ "euclid",1046
+ "svg_fmt",1047
+]1048
+1049
+[[package]]1050
+name = "euclid"1051
+version = "0.22.14"1052
+source = "registry+https://github.com/rust-lang/crates.io-index"1053
+checksum = "f1a05365e3b1c6d1650318537c7460c6923f1abdd272ad6842baa2b509957a06"1054
+dependencies = [1055
+ "num-traits",1056
+]1057
+1058
+[[package]]1059
+name = "event-listener"1060
+version = "5.4.1"1061
+source = "registry+https://github.com/rust-lang/crates.io-index"1062
+checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab"1063
+dependencies = [1064
+ "concurrent-queue",1065
+ "parking",1066
+ "pin-project-lite",1067
+]1068
+1069
+[[package]]1070
+name = "event-listener-strategy"1071
+version = "0.5.4"1072
+source = "registry+https://github.com/rust-lang/crates.io-index"1073
+checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93"1074
+dependencies = [1075
+ "event-listener",1076
+ "pin-project-lite",1077
+]1078
+1079
+[[package]]1080
+name = "fastrand"1081
+version = "2.4.1"1082
+source = "registry+https://github.com/rust-lang/crates.io-index"1083
+checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6"1084
+1085
+[[package]]1086
+name = "filetime"1087
+version = "0.2.29"1088
+source = "registry+https://github.com/rust-lang/crates.io-index"1089
+checksum = "5c287a33c7f0a620c38e641e7f60827713987b3c0f26e8ddc9462cc69cf75759"1090
+dependencies = [1091
+ "cfg-if",1092
+ "libc",1093
+]1094
+1095
+[[package]]1096
+name = "find-msvc-tools"1097
+version = "0.1.9"1098
+source = "registry+https://github.com/rust-lang/crates.io-index"1099
+checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582"1100
+1101
+[[package]]1102
+name = "foldhash"1103
+version = "0.1.5"1104
+source = "registry+https://github.com/rust-lang/crates.io-index"1105
+checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2"1106
+1107
+[[package]]1108
+name = "foldhash"1109
+version = "0.2.0"1110
+source = "registry+https://github.com/rust-lang/crates.io-index"1111
+checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb"1112
+1113
+[[package]]1114
+name = "font-types"1115
+version = "0.10.1"1116
+source = "registry+https://github.com/rust-lang/crates.io-index"1117
+checksum = "39a654f404bbcbd48ea58c617c2993ee91d1cb63727a37bf2323a4edeed1b8c5"1118
+dependencies = [1119
+ "bytemuck",1120
+]1121
+1122
+[[package]]1123
+name = "font-types"1124
+version = "0.11.3"1125
+source = "registry+https://github.com/rust-lang/crates.io-index"1126
+checksum = "5b38ad915f6dadd993ced50848a8291a543bd41ca62bc10740d5e64e2ab4cfd7"1127
+dependencies = [1128
+ "bytemuck",1129
+]1130
+1131
+[[package]]1132
+name = "fontconfig-parser"1133
+version = "0.5.8"1134
+source = "registry+https://github.com/rust-lang/crates.io-index"1135
+checksum = "bbc773e24e02d4ddd8395fd30dc147524273a83e54e0f312d986ea30de5f5646"1136
+dependencies = [1137
+ "roxmltree",1138
+]1139
+1140
+[[package]]1141
+name = "fontdb"1142
+version = "0.23.0"1143
+source = "registry+https://github.com/rust-lang/crates.io-index"1144
+checksum = "457e789b3d1202543297a350643cf459f836cade38934e7a4cf6a39e7cde2905"1145
+dependencies = [1146
+ "fontconfig-parser",1147
+ "log",1148
+ "memmap2",1149
+ "slotmap",1150
+ "tinyvec",1151
+ "ttf-parser",1152
+]1153
+1154
+[[package]]1155
+name = "foreign-types"1156
+version = "0.5.0"1157
+source = "registry+https://github.com/rust-lang/crates.io-index"1158
+checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965"1159
+dependencies = [1160
+ "foreign-types-macros",1161
+ "foreign-types-shared",1162
+]1163
+1164
+[[package]]1165
+name = "foreign-types-macros"1166
+version = "0.2.3"1167
+source = "registry+https://github.com/rust-lang/crates.io-index"1168
+checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742"1169
+dependencies = [1170
+ "proc-macro2",1171
+ "quote",1172
+ "syn",1173
+]1174
+1175
+[[package]]1176
+name = "foreign-types-shared"1177
+version = "0.3.1"1178
+source = "registry+https://github.com/rust-lang/crates.io-index"1179
+checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b"1180
+1181
+[[package]]1182
+name = "fsevent-sys"1183
+version = "4.1.0"1184
+source = "registry+https://github.com/rust-lang/crates.io-index"1185
+checksum = "76ee7a02da4d231650c7cea31349b889be2f45ddb3ef3032d2ec8185f6313fd2"1186
+dependencies = [1187
+ "libc",1188
+]1189
+1190
+[[package]]1191
+name = "futures"1192
+version = "0.3.32"1193
+source = "registry+https://github.com/rust-lang/crates.io-index"1194
+checksum = "8b147ee9d1f6d097cef9ce628cd2ee62288d963e16fb287bd9286455b241382d"1195
+dependencies = [1196
+ "futures-channel",1197
+ "futures-core",1198
+ "futures-executor",1199
+ "futures-io",1200
+ "futures-sink",1201
+ "futures-task",1202
+ "futures-util",1203
+]1204
+1205
+[[package]]1206
+name = "futures-channel"1207
+version = "0.3.32"1208
+source = "registry+https://github.com/rust-lang/crates.io-index"1209
+checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d"1210
+dependencies = [1211
+ "futures-core",1212
+ "futures-sink",1213
+]1214
+1215
+[[package]]1216
+name = "futures-core"1217
+version = "0.3.32"1218
+source = "registry+https://github.com/rust-lang/crates.io-index"1219
+checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d"1220
+1221
+[[package]]1222
+name = "futures-executor"1223
+version = "0.3.32"1224
+source = "registry+https://github.com/rust-lang/crates.io-index"1225
+checksum = "baf29c38818342a3b26b5b923639e7b1f4a61fc5e76102d4b1981c6dc7a7579d"1226
+dependencies = [1227
+ "futures-core",1228
+ "futures-task",1229
+ "futures-util",1230
+]1231
+1232
+[[package]]1233
+name = "futures-io"1234
+version = "0.3.32"1235
+source = "registry+https://github.com/rust-lang/crates.io-index"1236
+checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718"1237
+1238
+[[package]]1239
+name = "futures-lite"1240
+version = "2.6.1"1241
+source = "registry+https://github.com/rust-lang/crates.io-index"1242
+checksum = "f78e10609fe0e0b3f4157ffab1876319b5b0db102a2c60dc4626306dc46b44ad"1243
+dependencies = [1244
+ "fastrand",1245
+ "futures-core",1246
+ "futures-io",1247
+ "parking",1248
+ "pin-project-lite",1249
+]1250
+1251
+[[package]]1252
+name = "futures-macro"1253
+version = "0.3.32"1254
+source = "registry+https://github.com/rust-lang/crates.io-index"1255
+checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b"1256
+dependencies = [1257
+ "proc-macro2",1258
+ "quote",1259
+ "syn",1260
+]1261
+1262
+[[package]]1263
+name = "futures-sink"1264
+version = "0.3.32"1265
+source = "registry+https://github.com/rust-lang/crates.io-index"1266
+checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893"1267
+1268
+[[package]]1269
+name = "futures-task"1270
+version = "0.3.32"1271
+source = "registry+https://github.com/rust-lang/crates.io-index"1272
+checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393"1273
+1274
+[[package]]1275
+name = "futures-util"1276
+version = "0.3.32"1277
+source = "registry+https://github.com/rust-lang/crates.io-index"1278
+checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6"1279
+dependencies = [1280
+ "futures-channel",1281
+ "futures-core",1282
+ "futures-io",1283
+ "futures-macro",1284
+ "futures-sink",1285
+ "futures-task",1286
+ "memchr",1287
+ "pin-project-lite",1288
+ "slab",1289
+]1290
+1291
+[[package]]1292
+name = "getrandom"1293
+version = "0.3.4"1294
+source = "registry+https://github.com/rust-lang/crates.io-index"1295
+checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd"1296
+dependencies = [1297
+ "cfg-if",1298
+ "libc",1299
+ "r-efi",1300
+ "wasip2",1301
+]1302
+1303
+[[package]]1304
+name = "gl_generator"1305
+version = "0.14.0"1306
+source = "registry+https://github.com/rust-lang/crates.io-index"1307
+checksum = "1a95dfc23a2b4a9a2f5ab41d194f8bfda3cabec42af4e39f08c339eb2a0c124d"1308
+dependencies = [1309
+ "khronos_api",1310
+ "log",1311
+ "xml-rs",1312
+]1313
+1314
+[[package]]1315
+name = "glam"1316
+version = "0.25.0"1317
+source = "registry+https://github.com/rust-lang/crates.io-index"1318
+checksum = "151665d9be52f9bb40fc7966565d39666f2d1e69233571b71b87791c7e0528b3"1319
+1320
+[[package]]1321
+name = "glob"1322
+version = "0.3.3"1323
+source = "registry+https://github.com/rust-lang/crates.io-index"1324
+checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280"1325
+1326
+[[package]]1327
+name = "glow"1328
+version = "0.16.0"1329
+source = "registry+https://github.com/rust-lang/crates.io-index"1330
+checksum = "c5e5ea60d70410161c8bf5da3fdfeaa1c72ed2c15f8bbb9d19fe3a4fad085f08"1331
+dependencies = [1332
+ "js-sys",1333
+ "slotmap",1334
+ "wasm-bindgen",1335
+ "web-sys",1336
+]1337
+1338
+[[package]]1339
+name = "glutin_wgl_sys"1340
+version = "0.6.1"1341
+source = "registry+https://github.com/rust-lang/crates.io-index"1342
+checksum = "2c4ee00b289aba7a9e5306d57c2d05499b2e5dc427f84ac708bd2c090212cf3e"1343
+dependencies = [1344
+ "gl_generator",1345
+]1346
+1347
+[[package]]1348
+name = "gpu-alloc"1349
+version = "0.6.0"1350
+source = "registry+https://github.com/rust-lang/crates.io-index"1351
+checksum = "fbcd2dba93594b227a1f57ee09b8b9da8892c34d55aa332e034a228d0fe6a171"1352
+dependencies = [1353
+ "bitflags 2.11.1",1354
+ "gpu-alloc-types",1355
+]1356
+1357
+[[package]]1358
+name = "gpu-alloc-types"1359
+version = "0.3.0"1360
+source = "registry+https://github.com/rust-lang/crates.io-index"1361
+checksum = "98ff03b468aa837d70984d55f5d3f846f6ec31fe34bbb97c4f85219caeee1ca4"1362
+dependencies = [1363
+ "bitflags 2.11.1",1364
+]1365
+1366
+[[package]]1367
+name = "gpu-allocator"1368
+version = "0.27.0"1369
+source = "registry+https://github.com/rust-lang/crates.io-index"1370
+checksum = "c151a2a5ef800297b4e79efa4f4bec035c5f51d5ae587287c9b952bdf734cacd"1371
+dependencies = [1372
+ "log",1373
+ "presser",1374
+ "thiserror 1.0.69",1375
+ "windows",1376
+]1377
+1378
+[[package]]1379
+name = "gpu-descriptor"1380
+version = "0.3.2"1381
+source = "registry+https://github.com/rust-lang/crates.io-index"1382
+checksum = "b89c83349105e3732062a895becfc71a8f921bb71ecbbdd8ff99263e3b53a0ca"1383
+dependencies = [1384
+ "bitflags 2.11.1",1385
+ "gpu-descriptor-types",1386
+ "hashbrown 0.15.5",1387
+]1388
+1389
+[[package]]1390
+name = "gpu-descriptor-types"1391
+version = "0.2.0"1392
+source = "registry+https://github.com/rust-lang/crates.io-index"1393
+checksum = "fdf242682df893b86f33a73828fb09ca4b2d3bb6cc95249707fc684d27484b91"1394
+dependencies = [1395
+ "bitflags 2.11.1",1396
+]1397
+1398
+[[package]]1399
+name = "guillotiere"1400
+version = "0.6.2"1401
+source = "registry+https://github.com/rust-lang/crates.io-index"1402
+checksum = "b62d5865c036cb1393e23c50693df631d3f5d7bcca4c04fe4cc0fd592e74a782"1403
+dependencies = [1404
+ "euclid",1405
+ "svg_fmt",1406
+]1407
+1408
+[[package]]1409
+name = "half"1410
+version = "2.7.1"1411
+source = "registry+https://github.com/rust-lang/crates.io-index"1412
+checksum = "6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b"1413
+dependencies = [1414
+ "cfg-if",1415
+ "crunchy",1416
+ "num-traits",1417
+ "zerocopy",1418
+]1419
+1420
+[[package]]1421
+name = "harfrust"1422
+version = "0.3.2"1423
+source = "registry+https://github.com/rust-lang/crates.io-index"1424
+checksum = "92c020db12c71d8a12a3fe7607873cade3a01a6287e29d540c8723276221b9d8"1425
+dependencies = [1426
+ "bitflags 2.11.1",1427
+ "bytemuck",1428
+ "core_maths",1429
+ "read-fonts 0.35.0",1430
+ "smallvec",1431
+]1432
+1433
+[[package]]1434
+name = "hashbrown"1435
+version = "0.15.5"1436
+source = "registry+https://github.com/rust-lang/crates.io-index"1437
+checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1"1438
+dependencies = [1439
+ "allocator-api2",1440
+ "equivalent",1441
+ "foldhash 0.1.5",1442
+]1443
+1444
+[[package]]1445
+name = "hashbrown"1446
+version = "0.16.1"1447
+source = "registry+https://github.com/rust-lang/crates.io-index"1448
+checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100"1449
+dependencies = [1450
+ "foldhash 0.2.0",1451
+]1452
+1453
+[[package]]1454
+name = "hashbrown"1455
+version = "0.17.1"1456
+source = "registry+https://github.com/rust-lang/crates.io-index"1457
+checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a"1458
+1459
+[[package]]1460
+name = "headroom-cli"1461
+version = "0.1.0"1462
+dependencies = [1463
+ "assert_no_alloc",1464
+ "clap",1465
+ "crossbeam-channel",1466
+ "crossterm",1467
+ "headroom-client",1468
+ "headroom-core",1469
+ "headroom-ipc",1470
+ "ratatui",1471
+ "serde_json",1472
+ "thiserror 2.0.18",1473
+ "tracing",1474
+ "tracing-subscriber",1475
+]1476
+1477
+[[package]]1478
+name = "headroom-client"1479
+version = "0.1.0"1480
+dependencies = [1481
+ "headroom-ipc",1482
+ "serde",1483
+ "serde_json",1484
+ "thiserror 2.0.18",1485
+]1486
+1487
+[[package]]1488
+name = "headroom-core"1489
+version = "0.1.0"1490
+dependencies = [1491
+ "assert_no_alloc",1492
+ "bytemuck",1493
+ "criterion",1494
+ "crossbeam-channel",1495
+ "ebur128",1496
+ "headroom-client",1497
+ "headroom-dsp",1498
+ "headroom-ipc",1499
+ "libspa",1500
+ "libspa-sys",1501
+ "nix",1502
+ "notify",1503
+ "notify-debouncer-mini",1504
+ "parking_lot",1505
+ "pipewire",1506
+ "pipewire-filter",1507
+ "rtrb",1508
+ "serde",1509
+ "serde_json",1510
+ "signal-hook",1511
+ "thiserror 2.0.18",1512
+ "toml",1513
+ "tracing",1514
+ "tracing-subscriber",1515
+]1516
+1517
+[[package]]1518
+name = "headroom-dsp"1519
+version = "0.1.0"1520
+dependencies = [1521
+ "criterion",1522
+]1523
+1524
+[[package]]1525
+name = "headroom-gui"1526
+version = "0.1.0"1527
+dependencies = [1528
+ "anyhow",1529
+ "crossbeam-channel",1530
+ "headroom-client",1531
+ "headroom-ipc",1532
+ "iced",1533
+ "serde_json",1534
+ "tracing",1535
+ "tracing-subscriber",1536
+]1537
+1538
+[[package]]1539
+name = "headroom-ipc"1540
+version = "0.1.0"1541
+dependencies = [1542
+ "serde",1543
+ "serde_json",1544
+ "thiserror 2.0.18",1545
+]1546
+1547
+[[package]]1548
+name = "heck"1549
+version = "0.5.0"1550
+source = "registry+https://github.com/rust-lang/crates.io-index"1551
+checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"1552
+1553
+[[package]]1554
+name = "hermit-abi"1555
+version = "0.5.2"1556
+source = "registry+https://github.com/rust-lang/crates.io-index"1557
+checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c"1558
+1559
+[[package]]1560
+name = "hexf-parse"1561
+version = "0.2.1"1562
+source = "registry+https://github.com/rust-lang/crates.io-index"1563
+checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df"1564
+1565
+[[package]]1566
+name = "iced"1567
+version = "0.14.0"1568
+source = "registry+https://github.com/rust-lang/crates.io-index"1569
+checksum = "000e01026c93ba643f8357a3db3ada0e6555265a377f6f9291c472f6dd701fb3"1570
+dependencies = [1571
+ "iced_core",1572
+ "iced_debug",1573
+ "iced_futures",1574
+ "iced_renderer",1575
+ "iced_runtime",1576
+ "iced_widget",1577
+ "iced_winit",1578
+ "thiserror 2.0.18",1579
+]1580
+1581
+[[package]]1582
+name = "iced_core"1583
+version = "0.14.0"1584
+source = "registry+https://github.com/rust-lang/crates.io-index"1585
+checksum = "91ab1937d699403e7e69252ae743a902bcee9f4ab2052cc4c9a46fcf34729d85"1586
+dependencies = [1587
+ "bitflags 2.11.1",1588
+ "bytes",1589
+ "glam",1590
+ "lilt",1591
+ "log",1592
+ "num-traits",1593
+ "rustc-hash 2.1.2",1594
+ "smol_str",1595
+ "thiserror 2.0.18",1596
+ "web-time",1597
+]1598
+1599
+[[package]]1600
+name = "iced_debug"1601
+version = "0.14.0"1602
+source = "registry+https://github.com/rust-lang/crates.io-index"1603
+checksum = "25035ab0215a620e53f4103e36fc4e59a1fb2817e4bfc38a30ad27b4202ea0be"1604
+dependencies = [1605
+ "iced_core",1606
+ "iced_futures",1607
+ "log",1608
+]1609
+1610
+[[package]]1611
+name = "iced_futures"1612
+version = "0.14.0"1613
+source = "registry+https://github.com/rust-lang/crates.io-index"1614
+checksum = "8c0c85ccad42dfbec7293c36c018af0ea0dbcc52d137a4a9a0b0f6822a3fdf0a"1615
+dependencies = [1616
+ "futures",1617
+ "iced_core",1618
+ "log",1619
+ "rustc-hash 2.1.2",1620
+ "smol",1621
+ "wasm-bindgen-futures",1622
+ "wasmtimer",1623
+]1624
+1625
+[[package]]1626
+name = "iced_graphics"1627
+version = "0.14.0"1628
+source = "registry+https://github.com/rust-lang/crates.io-index"1629
+checksum = "234ca1c2cec4155055f68fa5fad1b5242c496ac8238d80a259bca382fb44a102"1630
+dependencies = [1631
+ "bitflags 2.11.1",1632
+ "bytemuck",1633
+ "cosmic-text",1634
+ "half",1635
+ "iced_core",1636
+ "iced_futures",1637
+ "log",1638
+ "raw-window-handle",1639
+ "rustc-hash 2.1.2",1640
+ "thiserror 2.0.18",1641
+ "unicode-segmentation",1642
+]1643
+1644
+[[package]]1645
+name = "iced_program"1646
+version = "0.14.0"1647
+source = "registry+https://github.com/rust-lang/crates.io-index"1648
+checksum = "6dfafec2947cda688d8eb00dac337ba11aa60f9ef6335aed343e189d26e4a673"1649
+dependencies = [1650
+ "iced_graphics",1651
+ "iced_runtime",1652
+]1653
+1654
+[[package]]1655
+name = "iced_renderer"1656
+version = "0.14.0"1657
+source = "registry+https://github.com/rust-lang/crates.io-index"1658
+checksum = "250cc0802408e8c077986ec56c7d07c65f423ee658a4b9fd795a1f2aae5dac05"1659
+dependencies = [1660
+ "iced_graphics",1661
+ "iced_tiny_skia",1662
+ "iced_wgpu",1663
+ "log",1664
+ "thiserror 2.0.18",1665
+]1666
+1667
+[[package]]1668
+name = "iced_runtime"1669
+version = "0.14.0"1670
+source = "registry+https://github.com/rust-lang/crates.io-index"1671
+checksum = "d1889b819ce4c06674183242e336c8d49465665441396914dc07cc86f44fa8d4"1672
+dependencies = [1673
+ "bytes",1674
+ "iced_core",1675
+ "iced_futures",1676
+ "raw-window-handle",1677
+ "thiserror 2.0.18",1678
+]1679
+1680
+[[package]]1681
+name = "iced_tiny_skia"1682
+version = "0.14.0"1683
+source = "registry+https://github.com/rust-lang/crates.io-index"1684
+checksum = "fe0acf8b75a3bc914aff5f2329fdffc1b36eeaea29dda0e4bd232f1c62e9cc3d"1685
+dependencies = [1686
+ "bytemuck",1687
+ "cosmic-text",1688
+ "iced_debug",1689
+ "iced_graphics",1690
+ "kurbo",1691
+ "log",1692
+ "rustc-hash 2.1.2",1693
+ "softbuffer",1694
+ "tiny-skia",1695
+]1696
+1697
+[[package]]1698
+name = "iced_wgpu"1699
+version = "0.14.0"1700
+source = "registry+https://github.com/rust-lang/crates.io-index"1701
+checksum = "ff144a999b0ca0f8a10257934500060240825c42e950ec0ebee9c8ae30561c13"1702
+dependencies = [1703
+ "bitflags 2.11.1",1704
+ "bytemuck",1705
+ "cryoglyph",1706
+ "futures",1707
+ "glam",1708
+ "guillotiere",1709
+ "iced_debug",1710
+ "iced_graphics",1711
+ "log",1712
+ "rustc-hash 2.1.2",1713
+ "thiserror 2.0.18",1714
+ "wgpu",1715
+]1716
+1717
+[[package]]1718
+name = "iced_widget"1719
+version = "0.14.2"1720
+source = "registry+https://github.com/rust-lang/crates.io-index"1721
+checksum = "b1596afa0d3109c2618e8bc12bae6c11d3064df8f95c42dfce570397dbe957ab"1722
+dependencies = [1723
+ "iced_renderer",1724
+ "log",1725
+ "num-traits",1726
+ "rustc-hash 2.1.2",1727
+ "thiserror 2.0.18",1728
+ "unicode-segmentation",1729
+]1730
+1731
+[[package]]1732
+name = "iced_winit"1733
+version = "0.14.0"1734
+source = "registry+https://github.com/rust-lang/crates.io-index"1735
+checksum = "8b7dbedc47562d1de3b9707d939f678b88c382004b7ab5a18f7a7dd723162d75"1736
+dependencies = [1737
+ "iced_debug",1738
+ "iced_program",1739
+ "log",1740
+ "rustc-hash 2.1.2",1741
+ "thiserror 2.0.18",1742
+ "tracing",1743
+ "wasm-bindgen-futures",1744
+ "web-sys",1745
+ "window_clipboard",1746
+ "winit",1747
+]1748
+1749
+[[package]]1750
+name = "ident_case"1751
+version = "1.0.1"1752
+source = "registry+https://github.com/rust-lang/crates.io-index"1753
+checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"1754
+1755
+[[package]]1756
+name = "indexmap"1757
+version = "2.14.0"1758
+source = "registry+https://github.com/rust-lang/crates.io-index"1759
+checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9"1760
+dependencies = [1761
+ "equivalent",1762
+ "hashbrown 0.17.1",1763
+]1764
+1765
+[[package]]1766
+name = "indoc"1767
+version = "2.0.7"1768
+source = "registry+https://github.com/rust-lang/crates.io-index"1769
+checksum = "79cf5c93f93228cf8efb3ba362535fb11199ac548a09ce117c9b1adc3030d706"1770
+dependencies = [1771
+ "rustversion",1772
+]1773
+1774
+[[package]]1775
+name = "inotify"1776
+version = "0.9.6"1777
+source = "registry+https://github.com/rust-lang/crates.io-index"1778
+checksum = "f8069d3ec154eb856955c1c0fbffefbf5f3c40a104ec912d4797314c1801abff"1779
+dependencies = [1780
+ "bitflags 1.3.2",1781
+ "inotify-sys",1782
+ "libc",1783
+]1784
+1785
+[[package]]1786
+name = "inotify-sys"1787
+version = "0.1.5"1788
+source = "registry+https://github.com/rust-lang/crates.io-index"1789
+checksum = "e05c02b5e89bff3b946cedeca278abc628fe811e604f027c45a8aa3cf793d0eb"1790
+dependencies = [1791
+ "libc",1792
+]1793
+1794
+[[package]]1795
+name = "instability"1796
+version = "0.3.12"1797
+source = "registry+https://github.com/rust-lang/crates.io-index"1798
+checksum = "5eb2d60ef19920a3a9193c3e371f726ec1dafc045dac788d0fb3704272458971"1799
+dependencies = [1800
+ "darling",1801
+ "indoc",1802
+ "proc-macro2",1803
+ "quote",1804
+ "syn",1805
+]1806
+1807
+[[package]]1808
+name = "is-terminal"1809
+version = "0.4.17"1810
+source = "registry+https://github.com/rust-lang/crates.io-index"1811
+checksum = "3640c1c38b8e4e43584d8df18be5fc6b0aa314ce6ebf51b53313d4306cca8e46"1812
+dependencies = [1813
+ "hermit-abi",1814
+ "libc",1815
+ "windows-sys 0.61.2",1816
+]1817
+1818
+[[package]]1819
+name = "is_terminal_polyfill"1820
+version = "1.70.2"1821
+source = "registry+https://github.com/rust-lang/crates.io-index"1822
+checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695"1823
+1824
+[[package]]1825
+name = "itertools"1826
+version = "0.10.5"1827
+source = "registry+https://github.com/rust-lang/crates.io-index"1828
+checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"1829
+dependencies = [1830
+ "either",1831
+]1832
+1833
+[[package]]1834
+name = "itertools"1835
+version = "0.12.1"1836
+source = "registry+https://github.com/rust-lang/crates.io-index"1837
+checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569"1838
+dependencies = [1839
+ "either",1840
+]1841
+1842
+[[package]]1843
+name = "itertools"1844
+version = "0.13.0"1845
+source = "registry+https://github.com/rust-lang/crates.io-index"1846
+checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186"1847
+dependencies = [1848
+ "either",1849
+]1850
+1851
+[[package]]1852
+name = "itoa"1853
+version = "1.0.18"1854
+source = "registry+https://github.com/rust-lang/crates.io-index"1855
+checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682"1856
+1857
+[[package]]1858
+name = "jni"1859
+version = "0.22.4"1860
+source = "registry+https://github.com/rust-lang/crates.io-index"1861
+checksum = "5efd9a482cf3a427f00d6b35f14332adc7902ce91efb778580e180ff90fa3498"1862
+dependencies = [1863
+ "cfg-if",1864
+ "combine",1865
+ "jni-macros",1866
+ "jni-sys 0.4.1",1867
+ "log",1868
+ "simd_cesu8",1869
+ "thiserror 2.0.18",1870
+ "walkdir",1871
+ "windows-link",1872
+]1873
+1874
+[[package]]1875
+name = "jni-macros"1876
+version = "0.22.4"1877
+source = "registry+https://github.com/rust-lang/crates.io-index"1878
+checksum = "a00109accc170f0bdb141fed3e393c565b6f5e072365c3bd58f5b062591560a3"1879
+dependencies = [1880
+ "proc-macro2",1881
+ "quote",1882
+ "rustc_version",1883
+ "simd_cesu8",1884
+ "syn",1885
+]1886
+1887
+[[package]]1888
+name = "jni-sys"1889
+version = "0.3.1"1890
+source = "registry+https://github.com/rust-lang/crates.io-index"1891
+checksum = "41a652e1f9b6e0275df1f15b32661cf0d4b78d4d87ddec5e0c3c20f097433258"1892
+dependencies = [1893
+ "jni-sys 0.4.1",1894
+]1895
+1896
+[[package]]1897
+name = "jni-sys"1898
+version = "0.4.1"1899
+source = "registry+https://github.com/rust-lang/crates.io-index"1900
+checksum = "c6377a88cb3910bee9b0fa88d4f42e1d2da8e79915598f65fb0c7ee14c878af2"1901
+dependencies = [1902
+ "jni-sys-macros",1903
+]1904
+1905
+[[package]]1906
+name = "jni-sys-macros"1907
+version = "0.4.1"1908
+source = "registry+https://github.com/rust-lang/crates.io-index"1909
+checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264"1910
+dependencies = [1911
+ "quote",1912
+ "syn",1913
+]1914
+1915
+[[package]]1916
+name = "jobserver"1917
+version = "0.1.34"1918
+source = "registry+https://github.com/rust-lang/crates.io-index"1919
+checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33"1920
+dependencies = [1921
+ "getrandom",1922
+ "libc",1923
+]1924
+1925
+[[package]]1926
+name = "js-sys"1927
+version = "0.3.99"1928
+source = "registry+https://github.com/rust-lang/crates.io-index"1929
+checksum = "142bc4740e452c1e57ade0cbc129f139c9093e354346f0872ef985f4f5cf5f11"1930
+dependencies = [1931
+ "cfg-if",1932
+ "futures-util",1933
+ "once_cell",1934
+ "wasm-bindgen",1935
+]1936
+1937
+[[package]]1938
+name = "khronos-egl"1939
+version = "6.0.0"1940
+source = "registry+https://github.com/rust-lang/crates.io-index"1941
+checksum = "6aae1df220ece3c0ada96b8153459b67eebe9ae9212258bb0134ae60416fdf76"1942
+dependencies = [1943
+ "libc",1944
+ "libloading",1945
+ "pkg-config",1946
+]1947
+1948
+[[package]]1949
+name = "khronos_api"1950
+version = "3.1.0"1951
+source = "registry+https://github.com/rust-lang/crates.io-index"1952
+checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc"1953
+1954
+[[package]]1955
+name = "kqueue"1956
+version = "1.1.1"1957
+source = "registry+https://github.com/rust-lang/crates.io-index"1958
+checksum = "eac30106d7dce88daf4a3fcb4879ea939476d5074a9b7ddd0fb97fa4bed5596a"1959
+dependencies = [1960
+ "kqueue-sys",1961
+ "libc",1962
+]1963
+1964
+[[package]]1965
+name = "kqueue-sys"1966
+version = "1.1.2"1967
+source = "registry+https://github.com/rust-lang/crates.io-index"1968
+checksum = "07293a4e297ac234359b510362495713f75ea345d5307140414f20c69ffeb087"1969
+dependencies = [1970
+ "bitflags 2.11.1",1971
+ "libc",1972
+]1973
+1974
+[[package]]1975
+name = "kurbo"1976
+version = "0.10.4"1977
+source = "registry+https://github.com/rust-lang/crates.io-index"1978
+checksum = "1618d4ebd923e97d67e7cd363d80aef35fe961005cbbbb3d2dad8bdd1bc63440"1979
+dependencies = [1980
+ "arrayvec",1981
+ "smallvec",1982
+]1983
+1984
+[[package]]1985
+name = "lazy_static"1986
+version = "1.5.0"1987
+source = "registry+https://github.com/rust-lang/crates.io-index"1988
+checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"1989
+1990
+[[package]]1991
+name = "lazycell"1992
+version = "1.3.0"1993
+source = "registry+https://github.com/rust-lang/crates.io-index"1994
+checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55"1995
+1996
+[[package]]1997
+name = "libc"1998
+version = "0.2.186"1999
+source = "registry+https://github.com/rust-lang/crates.io-index"2000
+checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66"2001
+2002
+[[package]]2003
+name = "libloading"2004
+version = "0.8.9"2005
+source = "registry+https://github.com/rust-lang/crates.io-index"2006
+checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55"2007
+dependencies = [2008
+ "cfg-if",2009
+ "windows-link",2010
+]2011
+2012
+[[package]]2013
+name = "libm"2014
+version = "0.2.16"2015
+source = "registry+https://github.com/rust-lang/crates.io-index"2016
+checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981"2017
+2018
+[[package]]2019
+name = "libredox"2020
+version = "0.1.16"2021
+source = "registry+https://github.com/rust-lang/crates.io-index"2022
+checksum = "e02f3bb43d335493c96bf3fd3a321600bf6bd07ed34bc64118e9293bdffea46c"2023
+dependencies = [2024
+ "bitflags 2.11.1",2025
+ "libc",2026
+ "plain",2027
+ "redox_syscall 0.7.5",2028
+]2029
+2030
+[[package]]2031
+name = "libspa"2032
+version = "0.8.0"2033
+source = "registry+https://github.com/rust-lang/crates.io-index"2034
+checksum = "65f3a4b81b2a2d8c7f300643676202debd1b7c929dbf5c9bb89402ea11d19810"2035
+dependencies = [2036
+ "bitflags 2.11.1",2037
+ "cc",2038
+ "convert_case",2039
+ "cookie-factory",2040
+ "libc",2041
+ "libspa-sys",2042
+ "nix",2043
+ "nom",2044
+ "system-deps",2045
+]2046
+2047
+[[package]]2048
+name = "libspa-sys"2049
+version = "0.8.0"2050
+source = "registry+https://github.com/rust-lang/crates.io-index"2051
+checksum = "bf0d9716420364790e85cbb9d3ac2c950bde16a7dd36f3209b7dfdfc4a24d01f"2052
+dependencies = [2053
+ "bindgen",2054
+ "cc",2055
+ "system-deps",2056
+]2057
+2058
+[[package]]2059
+name = "lilt"2060
+version = "0.8.1"2061
+source = "registry+https://github.com/rust-lang/crates.io-index"2062
+checksum = "f67562e5eff6b20553fa9be1c503356768420994e28f67e3eafe6f41910e57ad"2063
+dependencies = [2064
+ "web-time",2065
+]2066
+2067
+[[package]]2068
+name = "linebender_resource_handle"2069
+version = "0.1.1"2070
+source = "registry+https://github.com/rust-lang/crates.io-index"2071
+checksum = "d4a5ff6bcca6c4867b1c4fd4ef63e4db7436ef363e0ad7531d1558856bae64f4"2072
+2073
+[[package]]2074
+name = "linux-raw-sys"2075
+version = "0.4.15"2076
+source = "registry+https://github.com/rust-lang/crates.io-index"2077
+checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab"2078
+2079
+[[package]]2080
+name = "linux-raw-sys"2081
+version = "0.12.1"2082
+source = "registry+https://github.com/rust-lang/crates.io-index"2083
+checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53"2084
+2085
+[[package]]2086
+name = "litrs"2087
+version = "1.0.0"2088
+source = "registry+https://github.com/rust-lang/crates.io-index"2089
+checksum = "11d3d7f243d5c5a8b9bb5d6dd2b1602c0cb0b9db1621bafc7ed66e35ff9fe092"2090
+2091
+[[package]]2092
+name = "lock_api"2093
+version = "0.4.14"2094
+source = "registry+https://github.com/rust-lang/crates.io-index"2095
+checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965"2096
+dependencies = [2097
+ "scopeguard",2098
+]2099
+2100
+[[package]]2101
+name = "log"2102
+version = "0.4.30"2103
+source = "registry+https://github.com/rust-lang/crates.io-index"2104
+checksum = "616ec5685824bcc94416c6d4a7a446eea774a31efd7062c8480ba6fd06d7a6e5"2105
+2106
+[[package]]2107
+name = "lru"2108
+version = "0.12.5"2109
+source = "registry+https://github.com/rust-lang/crates.io-index"2110
+checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38"2111
+dependencies = [2112
+ "hashbrown 0.15.5",2113
+]2114
+2115
+[[package]]2116
+name = "lru"2117
+version = "0.16.4"2118
+source = "registry+https://github.com/rust-lang/crates.io-index"2119
+checksum = "7f66e8d5d03f609abc3a39e6f08e4164ebf1447a732906d39eb9b99b7919ef39"2120
+2121
+[[package]]2122
+name = "malloc_buf"2123
+version = "0.0.6"2124
+source = "registry+https://github.com/rust-lang/crates.io-index"2125
+checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb"2126
+dependencies = [2127
+ "libc",2128
+]2129
+2130
+[[package]]2131
+name = "matchers"2132
+version = "0.2.0"2133
+source = "registry+https://github.com/rust-lang/crates.io-index"2134
+checksum = "d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9"2135
+dependencies = [2136
+ "regex-automata",2137
+]2138
+2139
+[[package]]2140
+name = "memchr"2141
+version = "2.8.0"2142
+source = "registry+https://github.com/rust-lang/crates.io-index"2143
+checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79"2144
+2145
+[[package]]2146
+name = "memmap2"2147
+version = "0.9.10"2148
+source = "registry+https://github.com/rust-lang/crates.io-index"2149
+checksum = "714098028fe011992e1c3962653c96b2d578c4b4bce9036e15ff220319b1e0e3"2150
+dependencies = [2151
+ "libc",2152
+]2153
+2154
+[[package]]2155
+name = "metal"2156
+version = "0.32.0"2157
+source = "registry+https://github.com/rust-lang/crates.io-index"2158
+checksum = "00c15a6f673ff72ddcc22394663290f870fb224c1bfce55734a75c414150e605"2159
+dependencies = [2160
+ "bitflags 2.11.1",2161
+ "block",2162
+ "core-graphics-types 0.2.0",2163
+ "foreign-types",2164
+ "log",2165
+ "objc",2166
+ "paste",2167
+]2168
+2169
+[[package]]2170
+name = "minimal-lexical"2171
+version = "0.2.1"2172
+source = "registry+https://github.com/rust-lang/crates.io-index"2173
+checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"2174
+2175
+[[package]]2176
+name = "mio"2177
+version = "0.8.11"2178
+source = "registry+https://github.com/rust-lang/crates.io-index"2179
+checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c"2180
+dependencies = [2181
+ "libc",2182
+ "log",2183
+ "wasi",2184
+ "windows-sys 0.48.0",2185
+]2186
+2187
+[[package]]2188
+name = "mio"2189
+version = "1.2.0"2190
+source = "registry+https://github.com/rust-lang/crates.io-index"2191
+checksum = "50b7e5b27aa02a74bac8c3f23f448f8d87ff11f92d3aac1a6ed369ee08cc56c1"2192
+dependencies = [2193
+ "libc",2194
+ "log",2195
+ "wasi",2196
+ "windows-sys 0.61.2",2197
+]2198
+2199
+[[package]]2200
+name = "naga"2201
+version = "27.0.3"2202
+source = "registry+https://github.com/rust-lang/crates.io-index"2203
+checksum = "066cf25f0e8b11ee0df221219010f213ad429855f57c494f995590c861a9a7d8"2204
+dependencies = [2205
+ "arrayvec",2206
+ "bit-set",2207
+ "bitflags 2.11.1",2208
+ "cfg-if",2209
+ "cfg_aliases",2210
+ "codespan-reporting",2211
+ "half",2212
+ "hashbrown 0.16.1",2213
+ "hexf-parse",2214
+ "indexmap",2215
+ "libm",2216
+ "log",2217
+ "num-traits",2218
+ "once_cell",2219
+ "rustc-hash 1.1.0",2220
+ "spirv",2221
+ "thiserror 2.0.18",2222
+ "unicode-ident",2223
+]2224
+2225
+[[package]]2226
+name = "ndk"2227
+version = "0.9.0"2228
+source = "registry+https://github.com/rust-lang/crates.io-index"2229
+checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4"2230
+dependencies = [2231
+ "bitflags 2.11.1",2232
+ "jni-sys 0.3.1",2233
+ "log",2234
+ "ndk-sys",2235
+ "num_enum",2236
+ "raw-window-handle",2237
+ "thiserror 1.0.69",2238
+]2239
+2240
+[[package]]2241
+name = "ndk-context"2242
+version = "0.1.1"2243
+source = "registry+https://github.com/rust-lang/crates.io-index"2244
+checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b"2245
+2246
+[[package]]2247
+name = "ndk-sys"2248
+version = "0.6.0+11769913"2249
+source = "registry+https://github.com/rust-lang/crates.io-index"2250
+checksum = "ee6cda3051665f1fb8d9e08fc35c96d5a244fb1be711a03b71118828afc9a873"2251
+dependencies = [2252
+ "jni-sys 0.3.1",2253
+]2254
+2255
+[[package]]2256
+name = "nix"2257
+version = "0.27.1"2258
+source = "registry+https://github.com/rust-lang/crates.io-index"2259
+checksum = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053"2260
+dependencies = [2261
+ "bitflags 2.11.1",2262
+ "cfg-if",2263
+ "libc",2264
+]2265
+2266
+[[package]]2267
+name = "nom"2268
+version = "7.1.3"2269
+source = "registry+https://github.com/rust-lang/crates.io-index"2270
+checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"2271
+dependencies = [2272
+ "memchr",2273
+ "minimal-lexical",2274
+]2275
+2276
+[[package]]2277
+name = "notify"2278
+version = "6.1.1"2279
+source = "registry+https://github.com/rust-lang/crates.io-index"2280
+checksum = "6205bd8bb1e454ad2e27422015fb5e4f2bcc7e08fa8f27058670d208324a4d2d"2281
+dependencies = [2282
+ "bitflags 2.11.1",2283
+ "crossbeam-channel",2284
+ "filetime",2285
+ "fsevent-sys",2286
+ "inotify",2287
+ "kqueue",2288
+ "libc",2289
+ "log",2290
+ "mio 0.8.11",2291
+ "walkdir",2292
+ "windows-sys 0.48.0",2293
+]2294
+2295
+[[package]]2296
+name = "notify-debouncer-mini"2297
+version = "0.4.1"2298
+source = "registry+https://github.com/rust-lang/crates.io-index"2299
+checksum = "5d40b221972a1fc5ef4d858a2f671fb34c75983eb385463dff3780eeff6a9d43"2300
+dependencies = [2301
+ "crossbeam-channel",2302
+ "log",2303
+ "notify",2304
+]2305
+2306
+[[package]]2307
+name = "nu-ansi-term"2308
+version = "0.50.3"2309
+source = "registry+https://github.com/rust-lang/crates.io-index"2310
+checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5"2311
+dependencies = [2312
+ "windows-sys 0.61.2",2313
+]2314
+2315
+[[package]]2316
+name = "num-traits"2317
+version = "0.2.19"2318
+source = "registry+https://github.com/rust-lang/crates.io-index"2319
+checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"2320
+dependencies = [2321
+ "autocfg",2322
+ "libm",2323
+]2324
+2325
+[[package]]2326
+name = "num_enum"2327
+version = "0.7.6"2328
+source = "registry+https://github.com/rust-lang/crates.io-index"2329
+checksum = "5d0bca838442ec211fa11de3a8b0e0e8f3a4522575b5c4c06ed722e005036f26"2330
+dependencies = [2331
+ "num_enum_derive",2332
+ "rustversion",2333
+]2334
+2335
+[[package]]2336
+name = "num_enum_derive"2337
+version = "0.7.6"2338
+source = "registry+https://github.com/rust-lang/crates.io-index"2339
+checksum = "680998035259dcfcafe653688bf2aa6d3e2dc05e98be6ab46afb089dc84f1df8"2340
+dependencies = [2341
+ "proc-macro-crate",2342
+ "proc-macro2",2343
+ "quote",2344
+ "syn",2345
+]2346
+2347
+[[package]]2348
+name = "objc"2349
+version = "0.2.7"2350
+source = "registry+https://github.com/rust-lang/crates.io-index"2351
+checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1"2352
+dependencies = [2353
+ "malloc_buf",2354
+]2355
+2356
+[[package]]2357
+name = "objc-sys"2358
+version = "0.3.5"2359
+source = "registry+https://github.com/rust-lang/crates.io-index"2360
+checksum = "cdb91bdd390c7ce1a8607f35f3ca7151b65afc0ff5ff3b34fa350f7d7c7e4310"2361
+2362
+[[package]]2363
+name = "objc2"2364
+version = "0.5.2"2365
+source = "registry+https://github.com/rust-lang/crates.io-index"2366
+checksum = "46a785d4eeff09c14c487497c162e92766fbb3e4059a71840cecc03d9a50b804"2367
+dependencies = [2368
+ "objc-sys",2369
+ "objc2-encode",2370
+]2371
+2372
+[[package]]2373
+name = "objc2"2374
+version = "0.6.4"2375
+source = "registry+https://github.com/rust-lang/crates.io-index"2376
+checksum = "3a12a8ed07aefc768292f076dc3ac8c48f3781c8f2d5851dd3d98950e8c5a89f"2377
+dependencies = [2378
+ "objc2-encode",2379
+]2380
+2381
+[[package]]2382
+name = "objc2-app-kit"2383
+version = "0.2.2"2384
+source = "registry+https://github.com/rust-lang/crates.io-index"2385
+checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff"2386
+dependencies = [2387
+ "bitflags 2.11.1",2388
+ "block2",2389
+ "libc",2390
+ "objc2 0.5.2",2391
+ "objc2-core-data",2392
+ "objc2-core-image",2393
+ "objc2-foundation 0.2.2",2394
+ "objc2-quartz-core 0.2.2",2395
+]2396
+2397
+[[package]]2398
+name = "objc2-cloud-kit"2399
+version = "0.2.2"2400
+source = "registry+https://github.com/rust-lang/crates.io-index"2401
+checksum = "74dd3b56391c7a0596a295029734d3c1c5e7e510a4cb30245f8221ccea96b009"2402
+dependencies = [2403
+ "bitflags 2.11.1",2404
+ "block2",2405
+ "objc2 0.5.2",2406
+ "objc2-core-location",2407
+ "objc2-foundation 0.2.2",2408
+]2409
+2410
+[[package]]2411
+name = "objc2-contacts"2412
+version = "0.2.2"2413
+source = "registry+https://github.com/rust-lang/crates.io-index"2414
+checksum = "a5ff520e9c33812fd374d8deecef01d4a840e7b41862d849513de77e44aa4889"2415
+dependencies = [2416
+ "block2",2417
+ "objc2 0.5.2",2418
+ "objc2-foundation 0.2.2",2419
+]2420
+2421
+[[package]]2422
+name = "objc2-core-data"2423
+version = "0.2.2"2424
+source = "registry+https://github.com/rust-lang/crates.io-index"2425
+checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef"2426
+dependencies = [2427
+ "bitflags 2.11.1",2428
+ "block2",2429
+ "objc2 0.5.2",2430
+ "objc2-foundation 0.2.2",2431
+]2432
+2433
+[[package]]2434
+name = "objc2-core-foundation"2435
+version = "0.3.2"2436
+source = "registry+https://github.com/rust-lang/crates.io-index"2437
+checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536"2438
+dependencies = [2439
+ "bitflags 2.11.1",2440
+ "dispatch2",2441
+ "objc2 0.6.4",2442
+]2443
+2444
+[[package]]2445
+name = "objc2-core-graphics"2446
+version = "0.3.2"2447
+source = "registry+https://github.com/rust-lang/crates.io-index"2448
+checksum = "e022c9d066895efa1345f8e33e584b9f958da2fd4cd116792e15e07e4720a807"2449
+dependencies = [2450
+ "bitflags 2.11.1",2451
+ "dispatch2",2452
+ "objc2 0.6.4",2453
+ "objc2-core-foundation",2454
+ "objc2-io-surface",2455
+]2456
+2457
+[[package]]2458
+name = "objc2-core-image"2459
+version = "0.2.2"2460
+source = "registry+https://github.com/rust-lang/crates.io-index"2461
+checksum = "55260963a527c99f1819c4f8e3b47fe04f9650694ef348ffd2227e8196d34c80"2462
+dependencies = [2463
+ "block2",2464
+ "objc2 0.5.2",2465
+ "objc2-foundation 0.2.2",2466
+ "objc2-metal",2467
+]2468
+2469
+[[package]]2470
+name = "objc2-core-location"2471
+version = "0.2.2"2472
+source = "registry+https://github.com/rust-lang/crates.io-index"2473
+checksum = "000cfee34e683244f284252ee206a27953279d370e309649dc3ee317b37e5781"2474
+dependencies = [2475
+ "block2",2476
+ "objc2 0.5.2",2477
+ "objc2-contacts",2478
+ "objc2-foundation 0.2.2",2479
+]2480
+2481
+[[package]]2482
+name = "objc2-encode"2483
+version = "4.1.0"2484
+source = "registry+https://github.com/rust-lang/crates.io-index"2485
+checksum = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33"2486
+2487
+[[package]]2488
+name = "objc2-foundation"2489
+version = "0.2.2"2490
+source = "registry+https://github.com/rust-lang/crates.io-index"2491
+checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8"2492
+dependencies = [2493
+ "bitflags 2.11.1",2494
+ "block2",2495
+ "dispatch",2496
+ "libc",2497
+ "objc2 0.5.2",2498
+]2499
+2500
+[[package]]2501
+name = "objc2-foundation"2502
+version = "0.3.2"2503
+source = "registry+https://github.com/rust-lang/crates.io-index"2504
+checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272"2505
+dependencies = [2506
+ "bitflags 2.11.1",2507
+ "objc2 0.6.4",2508
+ "objc2-core-foundation",2509
+]2510
+2511
+[[package]]2512
+name = "objc2-io-surface"2513
+version = "0.3.2"2514
+source = "registry+https://github.com/rust-lang/crates.io-index"2515
+checksum = "180788110936d59bab6bd83b6060ffdfffb3b922ba1396b312ae795e1de9d81d"2516
+dependencies = [2517
+ "bitflags 2.11.1",2518
+ "objc2 0.6.4",2519
+ "objc2-core-foundation",2520
+]2521
+2522
+[[package]]2523
+name = "objc2-link-presentation"2524
+version = "0.2.2"2525
+source = "registry+https://github.com/rust-lang/crates.io-index"2526
+checksum = "a1a1ae721c5e35be65f01a03b6d2ac13a54cb4fa70d8a5da293d7b0020261398"2527
+dependencies = [2528
+ "block2",2529
+ "objc2 0.5.2",2530
+ "objc2-app-kit",2531
+ "objc2-foundation 0.2.2",2532
+]2533
+2534
+[[package]]2535
+name = "objc2-metal"2536
+version = "0.2.2"2537
+source = "registry+https://github.com/rust-lang/crates.io-index"2538
+checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6"2539
+dependencies = [2540
+ "bitflags 2.11.1",2541
+ "block2",2542
+ "objc2 0.5.2",2543
+ "objc2-foundation 0.2.2",2544
+]2545
+2546
+[[package]]2547
+name = "objc2-quartz-core"2548
+version = "0.2.2"2549
+source = "registry+https://github.com/rust-lang/crates.io-index"2550
+checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a"2551
+dependencies = [2552
+ "bitflags 2.11.1",2553
+ "block2",2554
+ "objc2 0.5.2",2555
+ "objc2-foundation 0.2.2",2556
+ "objc2-metal",2557
+]2558
+2559
+[[package]]2560
+name = "objc2-quartz-core"2561
+version = "0.3.2"2562
+source = "registry+https://github.com/rust-lang/crates.io-index"2563
+checksum = "96c1358452b371bf9f104e21ec536d37a650eb10f7ee379fff67d2e08d537f1f"2564
+dependencies = [2565
+ "bitflags 2.11.1",2566
+ "objc2 0.6.4",2567
+ "objc2-core-foundation",2568
+ "objc2-foundation 0.3.2",2569
+]2570
+2571
+[[package]]2572
+name = "objc2-symbols"2573
+version = "0.2.2"2574
+source = "registry+https://github.com/rust-lang/crates.io-index"2575
+checksum = "0a684efe3dec1b305badae1a28f6555f6ddd3bb2c2267896782858d5a78404dc"2576
+dependencies = [2577
+ "objc2 0.5.2",2578
+ "objc2-foundation 0.2.2",2579
+]2580
+2581
+[[package]]2582
+name = "objc2-ui-kit"2583
+version = "0.2.2"2584
+source = "registry+https://github.com/rust-lang/crates.io-index"2585
+checksum = "b8bb46798b20cd6b91cbd113524c490f1686f4c4e8f49502431415f3512e2b6f"2586
+dependencies = [2587
+ "bitflags 2.11.1",2588
+ "block2",2589
+ "objc2 0.5.2",2590
+ "objc2-cloud-kit",2591
+ "objc2-core-data",2592
+ "objc2-core-image",2593
+ "objc2-core-location",2594
+ "objc2-foundation 0.2.2",2595
+ "objc2-link-presentation",2596
+ "objc2-quartz-core 0.2.2",2597
+ "objc2-symbols",2598
+ "objc2-uniform-type-identifiers",2599
+ "objc2-user-notifications",2600
+]2601
+2602
+[[package]]2603
+name = "objc2-uniform-type-identifiers"2604
+version = "0.2.2"2605
+source = "registry+https://github.com/rust-lang/crates.io-index"2606
+checksum = "44fa5f9748dbfe1ca6c0b79ad20725a11eca7c2218bceb4b005cb1be26273bfe"2607
+dependencies = [2608
+ "block2",2609
+ "objc2 0.5.2",2610
+ "objc2-foundation 0.2.2",2611
+]2612
+2613
+[[package]]2614
+name = "objc2-user-notifications"2615
+version = "0.2.2"2616
+source = "registry+https://github.com/rust-lang/crates.io-index"2617
+checksum = "76cfcbf642358e8689af64cee815d139339f3ed8ad05103ed5eaf73db8d84cb3"2618
+dependencies = [2619
+ "bitflags 2.11.1",2620
+ "block2",2621
+ "objc2 0.5.2",2622
+ "objc2-core-location",2623
+ "objc2-foundation 0.2.2",2624
+]2625
+2626
+[[package]]2627
+name = "once_cell"2628
+version = "1.21.4"2629
+source = "registry+https://github.com/rust-lang/crates.io-index"2630
+checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"2631
+2632
+[[package]]2633
+name = "once_cell_polyfill"2634
+version = "1.70.2"2635
+source = "registry+https://github.com/rust-lang/crates.io-index"2636
+checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe"2637
+2638
+[[package]]2639
+name = "oorandom"2640
+version = "11.1.5"2641
+source = "registry+https://github.com/rust-lang/crates.io-index"2642
+checksum = "d6790f58c7ff633d8771f42965289203411a5e5c68388703c06e14f24770b41e"2643
+2644
+[[package]]2645
+name = "orbclient"2646
+version = "0.3.55"2647
+source = "registry+https://github.com/rust-lang/crates.io-index"2648
+checksum = "5df339f526ea9a60e371768d50efc2f2508c7203290731565d1f7a6f71d21747"2649
+dependencies = [2650
+ "libc",2651
+ "libredox",2652
+]2653
+2654
+[[package]]2655
+name = "ordered-float"2656
+version = "5.3.0"2657
+source = "registry+https://github.com/rust-lang/crates.io-index"2658
+checksum = "b7d950ca161dc355eaf28f82b11345ed76c6e1f6eb1f4f4479e0323b9e2fbd0e"2659
+dependencies = [2660
+ "num-traits",2661
+]2662
+2663
+[[package]]2664
+name = "owned_ttf_parser"2665
+version = "0.25.1"2666
+source = "registry+https://github.com/rust-lang/crates.io-index"2667
+checksum = "36820e9051aca1014ddc75770aab4d68bc1e9e632f0f5627c4086bc216fb583b"2668
+dependencies = [2669
+ "ttf-parser",2670
+]2671
+2672
+[[package]]2673
+name = "parking"2674
+version = "2.2.1"2675
+source = "registry+https://github.com/rust-lang/crates.io-index"2676
+checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba"2677
+2678
+[[package]]2679
+name = "parking_lot"2680
+version = "0.12.5"2681
+source = "registry+https://github.com/rust-lang/crates.io-index"2682
+checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a"2683
+dependencies = [2684
+ "lock_api",2685
+ "parking_lot_core",2686
+]2687
+2688
+[[package]]2689
+name = "parking_lot_core"2690
+version = "0.9.12"2691
+source = "registry+https://github.com/rust-lang/crates.io-index"2692
+checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1"2693
+dependencies = [2694
+ "cfg-if",2695
+ "libc",2696
+ "redox_syscall 0.5.18",2697
+ "smallvec",2698
+ "windows-link",2699
+]2700
+2701
+[[package]]2702
+name = "paste"2703
+version = "1.0.15"2704
+source = "registry+https://github.com/rust-lang/crates.io-index"2705
+checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a"2706
+2707
+[[package]]2708
+name = "pin-project"2709
+version = "1.1.13"2710
+source = "registry+https://github.com/rust-lang/crates.io-index"2711
+checksum = "2466b2336ed02bcdca6b294417127b90ec92038d1d5c4fbeac971a922e0e0924"2712
+dependencies = [2713
+ "pin-project-internal",2714
+]2715
+2716
+[[package]]2717
+name = "pin-project-internal"2718
+version = "1.1.13"2719
+source = "registry+https://github.com/rust-lang/crates.io-index"2720
+checksum = "c96395f0a926bc13b1c17622aaddda1ecb55d49c8f1bf9777e4d877800a43f8b"2721
+dependencies = [2722
+ "proc-macro2",2723
+ "quote",2724
+ "syn",2725
+]2726
+2727
+[[package]]2728
+name = "pin-project-lite"2729
+version = "0.2.17"2730
+source = "registry+https://github.com/rust-lang/crates.io-index"2731
+checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd"2732
+2733
+[[package]]2734
+name = "pin-utils"2735
+version = "0.1.0"2736
+source = "registry+https://github.com/rust-lang/crates.io-index"2737
+checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"2738
+2739
+[[package]]2740
+name = "piper"2741
+version = "0.2.5"2742
+source = "registry+https://github.com/rust-lang/crates.io-index"2743
+checksum = "c835479a4443ded371d6c535cbfd8d31ad92c5d23ae9770a61bc155e4992a3c1"2744
+dependencies = [2745
+ "atomic-waker",2746
+ "fastrand",2747
+ "futures-io",2748
+]2749
+2750
+[[package]]2751
+name = "pipewire"2752
+version = "0.8.0"2753
+source = "registry+https://github.com/rust-lang/crates.io-index"2754
+checksum = "08e645ba5c45109106d56610b3ee60eb13a6f2beb8b74f8dc8186cf261788dda"2755
+dependencies = [2756
+ "anyhow",2757
+ "bitflags 2.11.1",2758
+ "libc",2759
+ "libspa",2760
+ "libspa-sys",2761
+ "nix",2762
+ "once_cell",2763
+ "pipewire-sys",2764
+ "thiserror 1.0.69",2765
+]2766
+2767
+[[package]]2768
+name = "pipewire-filter"2769
+version = "0.1.0"2770
+dependencies = [2771
+ "libspa",2772
+ "libspa-sys",2773
+ "pipewire",2774
+ "pipewire-sys",2775
+ "thiserror 2.0.18",2776
+]2777
+2778
+[[package]]2779
+name = "pipewire-sys"2780
+version = "0.8.0"2781
+source = "registry+https://github.com/rust-lang/crates.io-index"2782
+checksum = "849e188f90b1dda88fe2bfe1ad31fe5f158af2c98f80fb5d13726c44f3f01112"2783
+dependencies = [2784
+ "bindgen",2785
+ "libspa-sys",2786
+ "system-deps",2787
+]2788
+2789
+[[package]]2790
+name = "pkg-config"2791
+version = "0.3.33"2792
+source = "registry+https://github.com/rust-lang/crates.io-index"2793
+checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e"2794
+2795
+[[package]]2796
+name = "plain"2797
+version = "0.2.3"2798
+source = "registry+https://github.com/rust-lang/crates.io-index"2799
+checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6"2800
+2801
+[[package]]2802
+name = "polling"2803
+version = "3.11.0"2804
+source = "registry+https://github.com/rust-lang/crates.io-index"2805
+checksum = "5d0e4f59085d47d8241c88ead0f274e8a0cb551f3625263c05eb8dd897c34218"2806
+dependencies = [2807
+ "cfg-if",2808
+ "concurrent-queue",2809
+ "hermit-abi",2810
+ "pin-project-lite",2811
+ "rustix 1.1.4",2812
+ "windows-sys 0.61.2",2813
+]2814
+2815
+[[package]]2816
+name = "portable-atomic"2817
+version = "1.13.1"2818
+source = "registry+https://github.com/rust-lang/crates.io-index"2819
+checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49"2820
+2821
+[[package]]2822
+name = "portable-atomic-util"2823
+version = "0.2.7"2824
+source = "registry+https://github.com/rust-lang/crates.io-index"2825
+checksum = "c2a106d1259c23fac8e543272398ae0e3c0b8d33c88ed73d0cc71b0f1d902618"2826
+dependencies = [2827
+ "portable-atomic",2828
+]2829
+2830
+[[package]]2831
+name = "presser"2832
+version = "0.3.1"2833
+source = "registry+https://github.com/rust-lang/crates.io-index"2834
+checksum = "e8cf8e6a8aa66ce33f63993ffc4ea4271eb5b0530a9002db8455ea6050c77bfa"2835
+2836
+[[package]]2837
+name = "proc-macro-crate"2838
+version = "3.5.0"2839
+source = "registry+https://github.com/rust-lang/crates.io-index"2840
+checksum = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f"2841
+dependencies = [2842
+ "toml_edit 0.25.11+spec-1.1.0",2843
+]2844
+2845
+[[package]]2846
+name = "proc-macro2"2847
+version = "1.0.106"2848
+source = "registry+https://github.com/rust-lang/crates.io-index"2849
+checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934"2850
+dependencies = [2851
+ "unicode-ident",2852
+]2853
+2854
+[[package]]2855
+name = "profiling"2856
+version = "1.0.18"2857
+source = "registry+https://github.com/rust-lang/crates.io-index"2858
+checksum = "3d595e54a326bc53c1c197b32d295e14b169e3cfeaa8dc82b529f947fba6bcf5"2859
+2860
+[[package]]2861
+name = "quick-xml"2862
+version = "0.39.4"2863
+source = "registry+https://github.com/rust-lang/crates.io-index"2864
+checksum = "cdcc8dd4e2f670d309a5f0e83fe36dfdc05af317008fea29144da1a2ac858e5e"2865
+dependencies = [2866
+ "memchr",2867
+]2868
+2869
+[[package]]2870
+name = "quote"2871
+version = "1.0.45"2872
+source = "registry+https://github.com/rust-lang/crates.io-index"2873
+checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924"2874
+dependencies = [2875
+ "proc-macro2",2876
+]2877
+2878
+[[package]]2879
+name = "r-efi"2880
+version = "5.3.0"2881
+source = "registry+https://github.com/rust-lang/crates.io-index"2882
+checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f"2883
+2884
+[[package]]2885
+name = "range-alloc"2886
+version = "0.1.5"2887
+source = "registry+https://github.com/rust-lang/crates.io-index"2888
+checksum = "ca45419789ae5a7899559e9512e58ca889e41f04f1f2445e9f4b290ceccd1d08"2889
+2890
+[[package]]2891
+name = "rangemap"2892
+version = "1.7.1"2893
+source = "registry+https://github.com/rust-lang/crates.io-index"2894
+checksum = "973443cf09a9c8656b574a866ab68dfa19f0867d0340648c7d2f6a71b8a8ea68"2895
+2896
+[[package]]2897
+name = "ratatui"2898
+version = "0.28.1"2899
+source = "registry+https://github.com/rust-lang/crates.io-index"2900
+checksum = "fdef7f9be5c0122f890d58bdf4d964349ba6a6161f705907526d891efabba57d"2901
+dependencies = [2902
+ "bitflags 2.11.1",2903
+ "cassowary",2904
+ "compact_str",2905
+ "crossterm",2906
+ "instability",2907
+ "itertools 0.13.0",2908
+ "lru 0.12.5",2909
+ "paste",2910
+ "strum",2911
+ "strum_macros",2912
+ "unicode-segmentation",2913
+ "unicode-truncate",2914
+ "unicode-width 0.1.14",2915
+]2916
+2917
+[[package]]2918
+name = "raw-window-handle"2919
+version = "0.6.2"2920
+source = "registry+https://github.com/rust-lang/crates.io-index"2921
+checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539"2922
+2923
+[[package]]2924
+name = "read-fonts"2925
+version = "0.35.0"2926
+source = "registry+https://github.com/rust-lang/crates.io-index"2927
+checksum = "6717cf23b488adf64b9d711329542ba34de147df262370221940dfabc2c91358"2928
+dependencies = [2929
+ "bytemuck",2930
+ "core_maths",2931
+ "font-types 0.10.1",2932
+]2933
+2934
+[[package]]2935
+name = "read-fonts"2936
+version = "0.37.0"2937
+source = "registry+https://github.com/rust-lang/crates.io-index"2938
+checksum = "7b634fabf032fab15307ffd272149b622260f55974d9fad689292a5d33df02e5"2939
+dependencies = [2940
+ "bytemuck",2941
+ "font-types 0.11.3",2942
+]2943
+2944
+[[package]]2945
+name = "redox_syscall"2946
+version = "0.4.1"2947
+source = "registry+https://github.com/rust-lang/crates.io-index"2948
+checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa"2949
+dependencies = [2950
+ "bitflags 1.3.2",2951
+]2952
+2953
+[[package]]2954
+name = "redox_syscall"2955
+version = "0.5.18"2956
+source = "registry+https://github.com/rust-lang/crates.io-index"2957
+checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d"2958
+dependencies = [2959
+ "bitflags 2.11.1",2960
+]2961
+2962
+[[package]]2963
+name = "redox_syscall"2964
+version = "0.7.5"2965
+source = "registry+https://github.com/rust-lang/crates.io-index"2966
+checksum = "4666a1a60d8412eab19d94f6d13dcc9cea0a5ef4fdf6a5db306537413c661b1b"2967
+dependencies = [2968
+ "bitflags 2.11.1",2969
+]2970
+2971
+[[package]]2972
+name = "regex"2973
+version = "1.12.3"2974
+source = "registry+https://github.com/rust-lang/crates.io-index"2975
+checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276"2976
+dependencies = [2977
+ "aho-corasick",2978
+ "memchr",2979
+ "regex-automata",2980
+ "regex-syntax",2981
+]2982
+2983
+[[package]]2984
+name = "regex-automata"2985
+version = "0.4.14"2986
+source = "registry+https://github.com/rust-lang/crates.io-index"2987
+checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f"2988
+dependencies = [2989
+ "aho-corasick",2990
+ "memchr",2991
+ "regex-syntax",2992
+]2993
+2994
+[[package]]2995
+name = "regex-syntax"2996
+version = "0.8.10"2997
+source = "registry+https://github.com/rust-lang/crates.io-index"2998
+checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a"2999
+3000
+[[package]]3001
+name = "renderdoc-sys"3002
+version = "1.1.0"3003
+source = "registry+https://github.com/rust-lang/crates.io-index"3004
+checksum = "19b30a45b0cd0bcca8037f3d0dc3421eaf95327a17cad11964fb8179b4fc4832"3005
+3006
+[[package]]3007
+name = "roxmltree"3008
+version = "0.20.0"3009
+source = "registry+https://github.com/rust-lang/crates.io-index"3010
+checksum = "6c20b6793b5c2fa6553b250154b78d6d0db37e72700ae35fad9387a46f487c97"3011
+3012
+[[package]]3013
+name = "rtrb"3014
+version = "0.3.4"3015
+source = "registry+https://github.com/rust-lang/crates.io-index"3016
+checksum = "4ade083ccbb4bf536df69d1f6432cc23deb7acccff86b183f3923a6fd56a1153"3017
+3018
+[[package]]3019
+name = "rustc-hash"3020
+version = "1.1.0"3021
+source = "registry+https://github.com/rust-lang/crates.io-index"3022
+checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"3023
+3024
+[[package]]3025
+name = "rustc-hash"3026
+version = "2.1.2"3027
+source = "registry+https://github.com/rust-lang/crates.io-index"3028
+checksum = "94300abf3f1ae2e2b8ffb7b58043de3d399c73fa6f4b73826402a5c457614dbe"3029
+3030
+[[package]]3031
+name = "rustc_version"3032
+version = "0.4.1"3033
+source = "registry+https://github.com/rust-lang/crates.io-index"3034
+checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92"3035
+dependencies = [3036
+ "semver",3037
+]3038
+3039
+[[package]]3040
+name = "rustix"3041
+version = "0.38.44"3042
+source = "registry+https://github.com/rust-lang/crates.io-index"3043
+checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154"3044
+dependencies = [3045
+ "bitflags 2.11.1",3046
+ "errno",3047
+ "libc",3048
+ "linux-raw-sys 0.4.15",3049
+ "windows-sys 0.59.0",3050
+]3051
+3052
+[[package]]3053
+name = "rustix"3054
+version = "1.1.4"3055
+source = "registry+https://github.com/rust-lang/crates.io-index"3056
+checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190"3057
+dependencies = [3058
+ "bitflags 2.11.1",3059
+ "errno",3060
+ "libc",3061
+ "linux-raw-sys 0.12.1",3062
+ "windows-sys 0.61.2",3063
+]3064
+3065
+[[package]]3066
+name = "rustversion"3067
+version = "1.0.22"3068
+source = "registry+https://github.com/rust-lang/crates.io-index"3069
+checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d"3070
+3071
+[[package]]3072
+name = "ryu"3073
+version = "1.0.23"3074
+source = "registry+https://github.com/rust-lang/crates.io-index"3075
+checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f"3076
+3077
+[[package]]3078
+name = "same-file"3079
+version = "1.0.6"3080
+source = "registry+https://github.com/rust-lang/crates.io-index"3081
+checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"3082
+dependencies = [3083
+ "winapi-util",3084
+]3085
+3086
+[[package]]3087
+name = "scoped-tls"3088
+version = "1.0.1"3089
+source = "registry+https://github.com/rust-lang/crates.io-index"3090
+checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294"3091
+3092
+[[package]]3093
+name = "scopeguard"3094
+version = "1.2.0"3095
+source = "registry+https://github.com/rust-lang/crates.io-index"3096
+checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"3097
+3098
+[[package]]3099
+name = "sctk-adwaita"3100
+version = "0.10.1"3101
+source = "registry+https://github.com/rust-lang/crates.io-index"3102
+checksum = "b6277f0217056f77f1d8f49f2950ac6c278c0d607c45f5ee99328d792ede24ec"3103
+dependencies = [3104
+ "ab_glyph",3105
+ "log",3106
+ "memmap2",3107
+ "smithay-client-toolkit 0.19.2",3108
+ "tiny-skia",3109
+]3110
+3111
+[[package]]3112
+name = "self_cell"3113
+version = "1.2.2"3114
+source = "registry+https://github.com/rust-lang/crates.io-index"3115
+checksum = "b12e76d157a900eb52e81bc6e9f3069344290341720e9178cde2407113ac8d89"3116
+3117
+[[package]]3118
+name = "semver"3119
+version = "1.0.28"3120
+source = "registry+https://github.com/rust-lang/crates.io-index"3121
+checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd"3122
+3123
+[[package]]3124
+name = "serde"3125
+version = "1.0.228"3126
+source = "registry+https://github.com/rust-lang/crates.io-index"3127
+checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e"3128
+dependencies = [3129
+ "serde_core",3130
+ "serde_derive",3131
+]3132
+3133
+[[package]]3134
+name = "serde_core"3135
+version = "1.0.228"3136
+source = "registry+https://github.com/rust-lang/crates.io-index"3137
+checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad"3138
+dependencies = [3139
+ "serde_derive",3140
+]3141
+3142
+[[package]]3143
+name = "serde_derive"3144
+version = "1.0.228"3145
+source = "registry+https://github.com/rust-lang/crates.io-index"3146
+checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79"3147
+dependencies = [3148
+ "proc-macro2",3149
+ "quote",3150
+ "syn",3151
+]3152
+3153
+[[package]]3154
+name = "serde_json"3155
+version = "1.0.150"3156
+source = "registry+https://github.com/rust-lang/crates.io-index"3157
+checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9"3158
+dependencies = [3159
+ "itoa",3160
+ "memchr",3161
+ "serde",3162
+ "serde_core",3163
+ "zmij",3164
+]3165
+3166
+[[package]]3167
+name = "serde_spanned"3168
+version = "0.6.9"3169
+source = "registry+https://github.com/rust-lang/crates.io-index"3170
+checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3"3171
+dependencies = [3172
+ "serde",3173
+]3174
+3175
+[[package]]3176
+name = "sharded-slab"3177
+version = "0.1.7"3178
+source = "registry+https://github.com/rust-lang/crates.io-index"3179
+checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6"3180
+dependencies = [3181
+ "lazy_static",3182
+]3183
+3184
+[[package]]3185
+name = "shlex"3186
+version = "1.3.0"3187
+source = "registry+https://github.com/rust-lang/crates.io-index"3188
+checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"3189
+3190
+[[package]]3191
+name = "signal-hook"3192
+version = "0.3.18"3193
+source = "registry+https://github.com/rust-lang/crates.io-index"3194
+checksum = "d881a16cf4426aa584979d30bd82cb33429027e42122b169753d6ef1085ed6e2"3195
+dependencies = [3196
+ "libc",3197
+ "signal-hook-registry",3198
+]3199
+3200
+[[package]]3201
+name = "signal-hook-mio"3202
+version = "0.2.5"3203
+source = "registry+https://github.com/rust-lang/crates.io-index"3204
+checksum = "b75a19a7a740b25bc7944bdee6172368f988763b744e3d4dfe753f6b4ece40cc"3205
+dependencies = [3206
+ "libc",3207
+ "mio 1.2.0",3208
+ "signal-hook",3209
+]3210
+3211
+[[package]]3212
+name = "signal-hook-registry"3213
+version = "1.4.8"3214
+source = "registry+https://github.com/rust-lang/crates.io-index"3215
+checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b"3216
+dependencies = [3217
+ "errno",3218
+ "libc",3219
+]3220
+3221
+[[package]]3222
+name = "simd_cesu8"3223
+version = "1.1.1"3224
+source = "registry+https://github.com/rust-lang/crates.io-index"3225
+checksum = "94f90157bb87cddf702797c5dadfa0be7d266cdf49e22da2fcaa32eff75b2c33"3226
+dependencies = [3227
+ "rustc_version",3228
+ "simdutf8",3229
+]3230
+3231
+[[package]]3232
+name = "simdutf8"3233
+version = "0.1.5"3234
+source = "registry+https://github.com/rust-lang/crates.io-index"3235
+checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e"3236
+3237
+[[package]]3238
+name = "skrifa"3239
+version = "0.37.0"3240
+source = "registry+https://github.com/rust-lang/crates.io-index"3241
+checksum = "8c31071dedf532758ecf3fed987cdb4bd9509f900e026ab684b4ecb81ea49841"3242
+dependencies = [3243
+ "bytemuck",3244
+ "read-fonts 0.35.0",3245
+]3246
+3247
+[[package]]3248
+name = "skrifa"3249
+version = "0.40.0"3250
+source = "registry+https://github.com/rust-lang/crates.io-index"3251
+checksum = "7fbdfe3d2475fbd7ddd1f3e5cf8288a30eb3e5f95832829570cd88115a7434ac"3252
+dependencies = [3253
+ "bytemuck",3254
+ "read-fonts 0.37.0",3255
+]3256
+3257
+[[package]]3258
+name = "slab"3259
+version = "0.4.12"3260
+source = "registry+https://github.com/rust-lang/crates.io-index"3261
+checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5"3262
+3263
+[[package]]3264
+name = "slotmap"3265
+version = "1.1.1"3266
+source = "registry+https://github.com/rust-lang/crates.io-index"3267
+checksum = "bdd58c3c93c3d278ca835519292445cb4b0d4dc59ccfdf7ceadaab3f8aeb4038"3268
+dependencies = [3269
+ "version_check",3270
+]3271
+3272
+[[package]]3273
+name = "smallvec"3274
+version = "1.15.1"3275
+source = "registry+https://github.com/rust-lang/crates.io-index"3276
+checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03"3277
+3278
+[[package]]3279
+name = "smithay-client-toolkit"3280
+version = "0.19.2"3281
+source = "registry+https://github.com/rust-lang/crates.io-index"3282
+checksum = "3457dea1f0eb631b4034d61d4d8c32074caa6cd1ab2d59f2327bd8461e2c0016"3283
+dependencies = [3284
+ "bitflags 2.11.1",3285
+ "calloop 0.13.0",3286
+ "calloop-wayland-source 0.3.0",3287
+ "cursor-icon",3288
+ "libc",3289
+ "log",3290
+ "memmap2",3291
+ "rustix 0.38.44",3292
+ "thiserror 1.0.69",3293
+ "wayland-backend",3294
+ "wayland-client",3295
+ "wayland-csd-frame",3296
+ "wayland-cursor",3297
+ "wayland-protocols",3298
+ "wayland-protocols-wlr",3299
+ "wayland-scanner",3300
+ "xkeysym",3301
+]3302
+3303
+[[package]]3304
+name = "smithay-client-toolkit"3305
+version = "0.20.0"3306
+source = "registry+https://github.com/rust-lang/crates.io-index"3307
+checksum = "0512da38f5e2b31201a93524adb8d3136276fa4fe4aafab4e1f727a82b534cc0"3308
+dependencies = [3309
+ "bitflags 2.11.1",3310
+ "calloop 0.14.4",3311
+ "calloop-wayland-source 0.4.1",3312
+ "cursor-icon",3313
+ "libc",3314
+ "log",3315
+ "memmap2",3316
+ "rustix 1.1.4",3317
+ "thiserror 2.0.18",3318
+ "wayland-backend",3319
+ "wayland-client",3320
+ "wayland-csd-frame",3321
+ "wayland-cursor",3322
+ "wayland-protocols",3323
+ "wayland-protocols-experimental",3324
+ "wayland-protocols-misc",3325
+ "wayland-protocols-wlr",3326
+ "wayland-scanner",3327
+ "xkeysym",3328
+]3329
+3330
+[[package]]3331
+name = "smithay-clipboard"3332
+version = "0.7.3"3333
+source = "registry+https://github.com/rust-lang/crates.io-index"3334
+checksum = "71704c03f739f7745053bde45fa203a46c58d25bc5c4efba1d9a60e9dba81226"3335
+dependencies = [3336
+ "libc",3337
+ "smithay-client-toolkit 0.20.0",3338
+ "wayland-backend",3339
+]3340
+3341
+[[package]]3342
+name = "smol"3343
+version = "2.0.2"3344
+source = "registry+https://github.com/rust-lang/crates.io-index"3345
+checksum = "a33bd3e260892199c3ccfc487c88b2da2265080acb316cd920da72fdfd7c599f"3346
+dependencies = [3347
+ "async-channel",3348
+ "async-executor",3349
+ "async-fs",3350
+ "async-io",3351
+ "async-lock",3352
+ "async-net",3353
+ "async-process",3354
+ "blocking",3355
+ "futures-lite",3356
+]3357
+3358
+[[package]]3359
+name = "smol_str"3360
+version = "0.2.2"3361
+source = "registry+https://github.com/rust-lang/crates.io-index"3362
+checksum = "dd538fb6910ac1099850255cf94a94df6551fbdd602454387d0adb2d1ca6dead"3363
+dependencies = [3364
+ "serde",3365
+]3366
+3367
+[[package]]3368
+name = "softbuffer"3369
+version = "0.4.8"3370
+source = "registry+https://github.com/rust-lang/crates.io-index"3371
+checksum = "aac18da81ebbf05109ab275b157c22a653bb3c12cf884450179942f81bcbf6c3"3372
+dependencies = [3373
+ "bytemuck",3374
+ "fastrand",3375
+ "js-sys",3376
+ "memmap2",3377
+ "ndk",3378
+ "objc2 0.6.4",3379
+ "objc2-core-foundation",3380
+ "objc2-core-graphics",3381
+ "objc2-foundation 0.3.2",3382
+ "objc2-quartz-core 0.3.2",3383
+ "raw-window-handle",3384
+ "redox_syscall 0.5.18",3385
+ "rustix 1.1.4",3386
+ "tracing",3387
+ "wasm-bindgen",3388
+ "wayland-backend",3389
+ "wayland-client",3390
+ "wayland-sys",3391
+ "web-sys",3392
+ "windows-sys 0.61.2",3393
+]3394
+3395
+[[package]]3396
+name = "spirv"3397
+version = "0.3.0+sdk-1.3.268.0"3398
+source = "registry+https://github.com/rust-lang/crates.io-index"3399
+checksum = "eda41003dc44290527a59b13432d4a0379379fa074b70174882adfbdfd917844"3400
+dependencies = [3401
+ "bitflags 2.11.1",3402
+]3403
+3404
+[[package]]3405
+name = "static_assertions"3406
+version = "1.1.0"3407
+source = "registry+https://github.com/rust-lang/crates.io-index"3408
+checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"3409
+3410
+[[package]]3411
+name = "strict-num"3412
+version = "0.1.1"3413
+source = "registry+https://github.com/rust-lang/crates.io-index"3414
+checksum = "6637bab7722d379c8b41ba849228d680cc12d0a45ba1fa2b48f2a30577a06731"3415
+3416
+[[package]]3417
+name = "strsim"3418
+version = "0.11.1"3419
+source = "registry+https://github.com/rust-lang/crates.io-index"3420
+checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"3421
+3422
+[[package]]3423
+name = "strum"3424
+version = "0.26.3"3425
+source = "registry+https://github.com/rust-lang/crates.io-index"3426
+checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06"3427
+dependencies = [3428
+ "strum_macros",3429
+]3430
+3431
+[[package]]3432
+name = "strum_macros"3433
+version = "0.26.4"3434
+source = "registry+https://github.com/rust-lang/crates.io-index"3435
+checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be"3436
+dependencies = [3437
+ "heck",3438
+ "proc-macro2",3439
+ "quote",3440
+ "rustversion",3441
+ "syn",3442
+]3443
+3444
+[[package]]3445
+name = "svg_fmt"3446
+version = "0.4.5"3447
+source = "registry+https://github.com/rust-lang/crates.io-index"3448
+checksum = "0193cc4331cfd2f3d2011ef287590868599a2f33c3e69bc22c1a3d3acf9e02fb"3449
+3450
+[[package]]3451
+name = "swash"3452
+version = "0.2.7"3453
+source = "registry+https://github.com/rust-lang/crates.io-index"3454
+checksum = "842f3cd369c2ba38966204f983eaa5e54a8e84a7d7159ed36ade2b6c335aae64"3455
+dependencies = [3456
+ "skrifa 0.40.0",3457
+ "yazi",3458
+ "zeno",3459
+]3460
+3461
+[[package]]3462
+name = "syn"3463
+version = "2.0.117"3464
+source = "registry+https://github.com/rust-lang/crates.io-index"3465
+checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99"3466
+dependencies = [3467
+ "proc-macro2",3468
+ "quote",3469
+ "unicode-ident",3470
+]3471
+3472
+[[package]]3473
+name = "sys-locale"3474
+version = "0.3.2"3475
+source = "registry+https://github.com/rust-lang/crates.io-index"3476
+checksum = "8eab9a99a024a169fe8a903cf9d4a3b3601109bcc13bd9e3c6fff259138626c4"3477
+dependencies = [3478
+ "libc",3479
+]3480
+3481
+[[package]]3482
+name = "system-deps"3483
+version = "6.2.2"3484
+source = "registry+https://github.com/rust-lang/crates.io-index"3485
+checksum = "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349"3486
+dependencies = [3487
+ "cfg-expr",3488
+ "heck",3489
+ "pkg-config",3490
+ "toml",3491
+ "version-compare",3492
+]3493
+3494
+[[package]]3495
+name = "target-lexicon"3496
+version = "0.12.16"3497
+source = "registry+https://github.com/rust-lang/crates.io-index"3498
+checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1"3499
+3500
+[[package]]3501
+name = "termcolor"3502
+version = "1.4.1"3503
+source = "registry+https://github.com/rust-lang/crates.io-index"3504
+checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755"3505
+dependencies = [3506
+ "winapi-util",3507
+]3508
+3509
+[[package]]3510
+name = "thiserror"3511
+version = "1.0.69"3512
+source = "registry+https://github.com/rust-lang/crates.io-index"3513
+checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52"3514
+dependencies = [3515
+ "thiserror-impl 1.0.69",3516
+]3517
+3518
+[[package]]3519
+name = "thiserror"3520
+version = "2.0.18"3521
+source = "registry+https://github.com/rust-lang/crates.io-index"3522
+checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4"3523
+dependencies = [3524
+ "thiserror-impl 2.0.18",3525
+]3526
+3527
+[[package]]3528
+name = "thiserror-impl"3529
+version = "1.0.69"3530
+source = "registry+https://github.com/rust-lang/crates.io-index"3531
+checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"3532
+dependencies = [3533
+ "proc-macro2",3534
+ "quote",3535
+ "syn",3536
+]3537
+3538
+[[package]]3539
+name = "thiserror-impl"3540
+version = "2.0.18"3541
+source = "registry+https://github.com/rust-lang/crates.io-index"3542
+checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5"3543
+dependencies = [3544
+ "proc-macro2",3545
+ "quote",3546
+ "syn",3547
+]3548
+3549
+[[package]]3550
+name = "thread_local"3551
+version = "1.1.9"3552
+source = "registry+https://github.com/rust-lang/crates.io-index"3553
+checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185"3554
+dependencies = [3555
+ "cfg-if",3556
+]3557
+3558
+[[package]]3559
+name = "tiny-skia"3560
+version = "0.11.4"3561
+source = "registry+https://github.com/rust-lang/crates.io-index"3562
+checksum = "83d13394d44dae3207b52a326c0c85a8bf87f1541f23b0d143811088497b09ab"3563
+dependencies = [3564
+ "arrayref",3565
+ "arrayvec",3566
+ "bytemuck",3567
+ "cfg-if",3568
+ "log",3569
+ "tiny-skia-path",3570
+]3571
+3572
+[[package]]3573
+name = "tiny-skia-path"3574
+version = "0.11.4"3575
+source = "registry+https://github.com/rust-lang/crates.io-index"3576
+checksum = "9c9e7fc0c2e86a30b117d0462aa261b72b7a99b7ebd7deb3a14ceda95c5bdc93"3577
+dependencies = [3578
+ "arrayref",3579
+ "bytemuck",3580
+ "strict-num",3581
+]3582
+3583
+[[package]]3584
+name = "tinytemplate"3585
+version = "1.2.1"3586
+source = "registry+https://github.com/rust-lang/crates.io-index"3587
+checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc"3588
+dependencies = [3589
+ "serde",3590
+ "serde_json",3591
+]3592
+3593
+[[package]]3594
+name = "tinyvec"3595
+version = "1.11.0"3596
+source = "registry+https://github.com/rust-lang/crates.io-index"3597
+checksum = "3e61e67053d25a4e82c844e8424039d9745781b3fc4f32b8d55ed50f5f667ef3"3598
+dependencies = [3599
+ "tinyvec_macros",3600
+]3601
+3602
+[[package]]3603
+name = "tinyvec_macros"3604
+version = "0.1.1"3605
+source = "registry+https://github.com/rust-lang/crates.io-index"3606
+checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"3607
+3608
+[[package]]3609
+name = "toml"3610
+version = "0.8.23"3611
+source = "registry+https://github.com/rust-lang/crates.io-index"3612
+checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362"3613
+dependencies = [3614
+ "serde",3615
+ "serde_spanned",3616
+ "toml_datetime 0.6.11",3617
+ "toml_edit 0.22.27",3618
+]3619
+3620
+[[package]]3621
+name = "toml_datetime"3622
+version = "0.6.11"3623
+source = "registry+https://github.com/rust-lang/crates.io-index"3624
+checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c"3625
+dependencies = [3626
+ "serde",3627
+]3628
+3629
+[[package]]3630
+name = "toml_datetime"3631
+version = "1.1.1+spec-1.1.0"3632
+source = "registry+https://github.com/rust-lang/crates.io-index"3633
+checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7"3634
+dependencies = [3635
+ "serde_core",3636
+]3637
+3638
+[[package]]3639
+name = "toml_edit"3640
+version = "0.22.27"3641
+source = "registry+https://github.com/rust-lang/crates.io-index"3642
+checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a"3643
+dependencies = [3644
+ "indexmap",3645
+ "serde",3646
+ "serde_spanned",3647
+ "toml_datetime 0.6.11",3648
+ "toml_write",3649
+ "winnow 0.7.15",3650
+]3651
+3652
+[[package]]3653
+name = "toml_edit"3654
+version = "0.25.11+spec-1.1.0"3655
+source = "registry+https://github.com/rust-lang/crates.io-index"3656
+checksum = "0b59c4d22ed448339746c59b905d24568fcbb3ab65a500494f7b8c3e97739f2b"3657
+dependencies = [3658
+ "indexmap",3659
+ "toml_datetime 1.1.1+spec-1.1.0",3660
+ "toml_parser",3661
+ "winnow 1.0.3",3662
+]3663
+3664
+[[package]]3665
+name = "toml_parser"3666
+version = "1.1.2+spec-1.1.0"3667
+source = "registry+https://github.com/rust-lang/crates.io-index"3668
+checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526"3669
+dependencies = [3670
+ "winnow 1.0.3",3671
+]3672
+3673
+[[package]]3674
+name = "toml_write"3675
+version = "0.1.2"3676
+source = "registry+https://github.com/rust-lang/crates.io-index"3677
+checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801"3678
+3679
+[[package]]3680
+name = "tracing"3681
+version = "0.1.44"3682
+source = "registry+https://github.com/rust-lang/crates.io-index"3683
+checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100"3684
+dependencies = [3685
+ "log",3686
+ "pin-project-lite",3687
+ "tracing-attributes",3688
+ "tracing-core",3689
+]3690
+3691
+[[package]]3692
+name = "tracing-attributes"3693
+version = "0.1.31"3694
+source = "registry+https://github.com/rust-lang/crates.io-index"3695
+checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da"3696
+dependencies = [3697
+ "proc-macro2",3698
+ "quote",3699
+ "syn",3700
+]3701
+3702
+[[package]]3703
+name = "tracing-core"3704
+version = "0.1.36"3705
+source = "registry+https://github.com/rust-lang/crates.io-index"3706
+checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a"3707
+dependencies = [3708
+ "once_cell",3709
+ "valuable",3710
+]3711
+3712
+[[package]]3713
+name = "tracing-log"3714
+version = "0.2.0"3715
+source = "registry+https://github.com/rust-lang/crates.io-index"3716
+checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3"3717
+dependencies = [3718
+ "log",3719
+ "once_cell",3720
+ "tracing-core",3721
+]3722
+3723
+[[package]]3724
+name = "tracing-subscriber"3725
+version = "0.3.23"3726
+source = "registry+https://github.com/rust-lang/crates.io-index"3727
+checksum = "cb7f578e5945fb242538965c2d0b04418d38ec25c79d160cd279bf0731c8d319"3728
+dependencies = [3729
+ "matchers",3730
+ "nu-ansi-term",3731
+ "once_cell",3732
+ "regex-automata",3733
+ "sharded-slab",3734
+ "smallvec",3735
+ "thread_local",3736
+ "tracing",3737
+ "tracing-core",3738
+ "tracing-log",3739
+]3740
+3741
+[[package]]3742
+name = "ttf-parser"3743
+version = "0.25.1"3744
+source = "registry+https://github.com/rust-lang/crates.io-index"3745
+checksum = "d2df906b07856748fa3f6e0ad0cbaa047052d4a7dd609e231c4f72cee8c36f31"3746
+dependencies = [3747
+ "core_maths",3748
+]3749
+3750
+[[package]]3751
+name = "unicode-bidi"3752
+version = "0.3.18"3753
+source = "registry+https://github.com/rust-lang/crates.io-index"3754
+checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5"3755
+3756
+[[package]]3757
+name = "unicode-ident"3758
+version = "1.0.24"3759
+source = "registry+https://github.com/rust-lang/crates.io-index"3760
+checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75"3761
+3762
+[[package]]3763
+name = "unicode-linebreak"3764
+version = "0.1.5"3765
+source = "registry+https://github.com/rust-lang/crates.io-index"3766
+checksum = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f"3767
+3768
+[[package]]3769
+name = "unicode-script"3770
+version = "0.5.8"3771
+source = "registry+https://github.com/rust-lang/crates.io-index"3772
+checksum = "383ad40bb927465ec0ce7720e033cb4ca06912855fc35db31b5755d0de75b1ee"3773
+3774
+[[package]]3775
+name = "unicode-segmentation"3776
+version = "1.13.2"3777
+source = "registry+https://github.com/rust-lang/crates.io-index"3778
+checksum = "9629274872b2bfaf8d66f5f15725007f635594914870f65218920345aa11aa8c"3779
+3780
+[[package]]3781
+name = "unicode-truncate"3782
+version = "1.1.0"3783
+source = "registry+https://github.com/rust-lang/crates.io-index"3784
+checksum = "b3644627a5af5fa321c95b9b235a72fd24cd29c648c2c379431e6628655627bf"3785
+dependencies = [3786
+ "itertools 0.13.0",3787
+ "unicode-segmentation",3788
+ "unicode-width 0.1.14",3789
+]3790
+3791
+[[package]]3792
+name = "unicode-width"3793
+version = "0.1.14"3794
+source = "registry+https://github.com/rust-lang/crates.io-index"3795
+checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af"3796
+3797
+[[package]]3798
+name = "unicode-width"3799
+version = "0.2.2"3800
+source = "registry+https://github.com/rust-lang/crates.io-index"3801
+checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254"3802
+3803
+[[package]]3804
+name = "utf8parse"3805
+version = "0.2.2"3806
+source = "registry+https://github.com/rust-lang/crates.io-index"3807
+checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"3808
+3809
+[[package]]3810
+name = "valuable"3811
+version = "0.1.1"3812
+source = "registry+https://github.com/rust-lang/crates.io-index"3813
+checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65"3814
+3815
+[[package]]3816
+name = "version-compare"3817
+version = "0.2.1"3818
+source = "registry+https://github.com/rust-lang/crates.io-index"3819
+checksum = "03c2856837ef78f57382f06b2b8563a2f512f7185d732608fd9176cb3b8edf0e"3820
+3821
+[[package]]3822
+name = "version_check"3823
+version = "0.9.5"3824
+source = "registry+https://github.com/rust-lang/crates.io-index"3825
+checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"3826
+3827
+[[package]]3828
+name = "walkdir"3829
+version = "2.5.0"3830
+source = "registry+https://github.com/rust-lang/crates.io-index"3831
+checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b"3832
+dependencies = [3833
+ "same-file",3834
+ "winapi-util",3835
+]3836
+3837
+[[package]]3838
+name = "wasi"3839
+version = "0.11.1+wasi-snapshot-preview1"3840
+source = "registry+https://github.com/rust-lang/crates.io-index"3841
+checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"3842
+3843
+[[package]]3844
+name = "wasip2"3845
+version = "1.0.3+wasi-0.2.9"3846
+source = "registry+https://github.com/rust-lang/crates.io-index"3847
+checksum = "20064672db26d7cdc89c7798c48a0fdfac8213434a1186e5ef29fd560ae223d6"3848
+dependencies = [3849
+ "wit-bindgen",3850
+]3851
+3852
+[[package]]3853
+name = "wasm-bindgen"3854
+version = "0.2.122"3855
+source = "registry+https://github.com/rust-lang/crates.io-index"3856
+checksum = "3ed04576f974d2b2fba0f38c51dbc5518011e38c36bf1143164be765528fd409"3857
+dependencies = [3858
+ "cfg-if",3859
+ "once_cell",3860
+ "rustversion",3861
+ "wasm-bindgen-macro",3862
+ "wasm-bindgen-shared",3863
+]3864
+3865
+[[package]]3866
+name = "wasm-bindgen-futures"3867
+version = "0.4.72"3868
+source = "registry+https://github.com/rust-lang/crates.io-index"3869
+checksum = "9473dbd2991ae90b6291c3c32c30c6187ac49aa32f9905d1cce280ec1e110b0f"3870
+dependencies = [3871
+ "js-sys",3872
+ "wasm-bindgen",3873
+]3874
+3875
+[[package]]3876
+name = "wasm-bindgen-macro"3877
+version = "0.2.122"3878
+source = "registry+https://github.com/rust-lang/crates.io-index"3879
+checksum = "916151b09da36bd82f6615cbf3a419e2f0ba23a03c6160e8e92eb6bd4aa1dec6"3880
+dependencies = [3881
+ "quote",3882
+ "wasm-bindgen-macro-support",3883
+]3884
+3885
+[[package]]3886
+name = "wasm-bindgen-macro-support"3887
+version = "0.2.122"3888
+source = "registry+https://github.com/rust-lang/crates.io-index"3889
+checksum = "299047362ccbfce148b67ab7e73349f77748e00c8296f9542adfad2ad82c5c5e"3890
+dependencies = [3891
+ "bumpalo",3892
+ "proc-macro2",3893
+ "quote",3894
+ "syn",3895
+ "wasm-bindgen-shared",3896
+]3897
+3898
+[[package]]3899
+name = "wasm-bindgen-shared"3900
+version = "0.2.122"3901
+source = "registry+https://github.com/rust-lang/crates.io-index"3902
+checksum = "9a929b2c61f11ba3e9bc35b50c1f25cb38e0e892c0c231ae2b8cf78d5dad4437"3903
+dependencies = [3904
+ "unicode-ident",3905
+]3906
+3907
+[[package]]3908
+name = "wasmtimer"3909
+version = "0.4.3"3910
+source = "registry+https://github.com/rust-lang/crates.io-index"3911
+checksum = "1c598d6b99ea013e35844697fc4670d08339d5cda15588f193c6beedd12f644b"3912
+dependencies = [3913
+ "futures",3914
+ "js-sys",3915
+ "parking_lot",3916
+ "pin-utils",3917
+ "slab",3918
+ "wasm-bindgen",3919
+]3920
+3921
+[[package]]3922
+name = "wayland-backend"3923
+version = "0.3.15"3924
+source = "registry+https://github.com/rust-lang/crates.io-index"3925
+checksum = "2857dd20b54e916ec7253b3d6b4d5c4d7d4ca2c33c2e11c6c76a99bd8744755d"3926
+dependencies = [3927
+ "cc",3928
+ "downcast-rs",3929
+ "rustix 1.1.4",3930
+ "scoped-tls",3931
+ "smallvec",3932
+ "wayland-sys",3933
+]3934
+3935
+[[package]]3936
+name = "wayland-client"3937
+version = "0.31.14"3938
+source = "registry+https://github.com/rust-lang/crates.io-index"3939
+checksum = "645c7c96bb74690c3189b5c9cb4ca1627062bb23693a4fad9d8c3de958260144"3940
+dependencies = [3941
+ "bitflags 2.11.1",3942
+ "rustix 1.1.4",3943
+ "wayland-backend",3944
+ "wayland-scanner",3945
+]3946
+3947
+[[package]]3948
+name = "wayland-csd-frame"3949
+version = "0.3.0"3950
+source = "registry+https://github.com/rust-lang/crates.io-index"3951
+checksum = "625c5029dbd43d25e6aa9615e88b829a5cad13b2819c4ae129fdbb7c31ab4c7e"3952
+dependencies = [3953
+ "bitflags 2.11.1",3954
+ "cursor-icon",3955
+ "wayland-backend",3956
+]3957
+3958
+[[package]]3959
+name = "wayland-cursor"3960
+version = "0.31.14"3961
+source = "registry+https://github.com/rust-lang/crates.io-index"3962
+checksum = "4a52d18780be9b1314328a3de5f930b73d2200112e3849ca6cb11822793fb34d"3963
+dependencies = [3964
+ "rustix 1.1.4",3965
+ "wayland-client",3966
+ "xcursor",3967
+]3968
+3969
+[[package]]3970
+name = "wayland-protocols"3971
+version = "0.32.12"3972
+source = "registry+https://github.com/rust-lang/crates.io-index"3973
+checksum = "563a85523cade2429938e790815fd7319062103b9f4a2dc806e9b53b95982d8f"3974
+dependencies = [3975
+ "bitflags 2.11.1",3976
+ "wayland-backend",3977
+ "wayland-client",3978
+ "wayland-scanner",3979
+]3980
+3981
+[[package]]3982
+name = "wayland-protocols-experimental"3983
+version = "20250721.0.1"3984
+source = "registry+https://github.com/rust-lang/crates.io-index"3985
+checksum = "40a1f863128dcaaec790d7b4b396cc9b9a7a079e878e18c47e6c2d2c5a8dcbb1"3986
+dependencies = [3987
+ "bitflags 2.11.1",3988
+ "wayland-backend",3989
+ "wayland-client",3990
+ "wayland-protocols",3991
+ "wayland-scanner",3992
+]3993
+3994
+[[package]]3995
+name = "wayland-protocols-misc"3996
+version = "0.3.12"3997
+source = "registry+https://github.com/rust-lang/crates.io-index"3998
+checksum = "6e9567599ef23e09b8dad6e429e5738d4509dfc46b3b21f32841a304d16b29c8"3999
+dependencies = [4000
+ "bitflags 2.11.1",4001
+ "wayland-backend",4002
+ "wayland-client",4003
+ "wayland-protocols",4004
+ "wayland-scanner",4005
+]4006
+4007
+[[package]]4008
+name = "wayland-protocols-plasma"4009
+version = "0.3.12"4010
+source = "registry+https://github.com/rust-lang/crates.io-index"4011
+checksum = "2b6d8cf1eb2c1c31ed1f5643c88a6e53538129d4af80030c8cabd1f9fa884d91"4012
+dependencies = [4013
+ "bitflags 2.11.1",4014
+ "wayland-backend",4015
+ "wayland-client",4016
+ "wayland-protocols",4017
+ "wayland-scanner",4018
+]4019
+4020
+[[package]]4021
+name = "wayland-protocols-wlr"4022
+version = "0.3.12"4023
+source = "registry+https://github.com/rust-lang/crates.io-index"4024
+checksum = "eb04e52f7836d7c7976c78ca0250d61e33873c34156a2a1fc9474828ec268234"4025
+dependencies = [4026
+ "bitflags 2.11.1",4027
+ "wayland-backend",4028
+ "wayland-client",4029
+ "wayland-protocols",4030
+ "wayland-scanner",4031
+]4032
+4033
+[[package]]4034
+name = "wayland-scanner"4035
+version = "0.31.10"4036
+source = "registry+https://github.com/rust-lang/crates.io-index"4037
+checksum = "9c324a910fd86ebdc364a3e61ec1f11737d3b1d6c273c0239ee8ff4bc0d24b4a"4038
+dependencies = [4039
+ "proc-macro2",4040
+ "quick-xml",4041
+ "quote",4042
+]4043
+4044
+[[package]]4045
+name = "wayland-sys"4046
+version = "0.31.11"4047
+source = "registry+https://github.com/rust-lang/crates.io-index"4048
+checksum = "d8eab23fefc9e41f8e841df4a9c707e8a8c4ed26e944ef69297184de2785e3be"4049
+dependencies = [4050
+ "dlib",4051
+ "log",4052
+ "once_cell",4053
+ "pkg-config",4054
+]4055
+4056
+[[package]]4057
+name = "web-sys"4058
+version = "0.3.99"4059
+source = "registry+https://github.com/rust-lang/crates.io-index"4060
+checksum = "6d621441cfc37b84979402712047321980c178f299193a3589d05b99e8763436"4061
+dependencies = [4062
+ "js-sys",4063
+ "wasm-bindgen",4064
+]4065
+4066
+[[package]]4067
+name = "web-time"4068
+version = "1.1.0"4069
+source = "registry+https://github.com/rust-lang/crates.io-index"4070
+checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb"4071
+dependencies = [4072
+ "js-sys",4073
+ "wasm-bindgen",4074
+]4075
+4076
+[[package]]4077
+name = "wgpu"4078
+version = "27.0.1"4079
+source = "registry+https://github.com/rust-lang/crates.io-index"4080
+checksum = "bfe68bac7cde125de7a731c3400723cadaaf1703795ad3f4805f187459cd7a77"4081
+dependencies = [4082
+ "arrayvec",4083
+ "bitflags 2.11.1",4084
+ "cfg-if",4085
+ "cfg_aliases",4086
+ "document-features",4087
+ "hashbrown 0.16.1",4088
+ "js-sys",4089
+ "log",4090
+ "naga",4091
+ "parking_lot",4092
+ "portable-atomic",4093
+ "profiling",4094
+ "raw-window-handle",4095
+ "smallvec",4096
+ "static_assertions",4097
+ "wasm-bindgen",4098
+ "wasm-bindgen-futures",4099
+ "web-sys",4100
+ "wgpu-core",4101
+ "wgpu-hal",4102
+ "wgpu-types",4103
+]4104
+4105
+[[package]]4106
+name = "wgpu-core"4107
+version = "27.0.3"4108
+source = "registry+https://github.com/rust-lang/crates.io-index"4109
+checksum = "27a75de515543b1897b26119f93731b385a19aea165a1ec5f0e3acecc229cae7"4110
+dependencies = [4111
+ "arrayvec",4112
+ "bit-set",4113
+ "bit-vec",4114
+ "bitflags 2.11.1",4115
+ "bytemuck",4116
+ "cfg_aliases",4117
+ "document-features",4118
+ "hashbrown 0.16.1",4119
+ "indexmap",4120
+ "log",4121
+ "naga",4122
+ "once_cell",4123
+ "parking_lot",4124
+ "portable-atomic",4125
+ "profiling",4126
+ "raw-window-handle",4127
+ "rustc-hash 1.1.0",4128
+ "smallvec",4129
+ "thiserror 2.0.18",4130
+ "wgpu-core-deps-apple",4131
+ "wgpu-core-deps-emscripten",4132
+ "wgpu-core-deps-windows-linux-android",4133
+ "wgpu-hal",4134
+ "wgpu-types",4135
+]4136
+4137
+[[package]]4138
+name = "wgpu-core-deps-apple"4139
+version = "27.0.0"4140
+source = "registry+https://github.com/rust-lang/crates.io-index"4141
+checksum = "0772ae958e9be0c729561d5e3fd9a19679bcdfb945b8b1a1969d9bfe8056d233"4142
+dependencies = [4143
+ "wgpu-hal",4144
+]4145
+4146
+[[package]]4147
+name = "wgpu-core-deps-emscripten"4148
+version = "27.0.0"4149
+source = "registry+https://github.com/rust-lang/crates.io-index"4150
+checksum = "b06ac3444a95b0813ecfd81ddb2774b66220b264b3e2031152a4a29fda4da6b5"4151
+dependencies = [4152
+ "wgpu-hal",4153
+]4154
+4155
+[[package]]4156
+name = "wgpu-core-deps-windows-linux-android"4157
+version = "27.0.0"4158
+source = "registry+https://github.com/rust-lang/crates.io-index"4159
+checksum = "71197027d61a71748e4120f05a9242b2ad142e3c01f8c1b47707945a879a03c3"4160
+dependencies = [4161
+ "wgpu-hal",4162
+]4163
+4164
+[[package]]4165
+name = "wgpu-hal"4166
+version = "27.0.4"4167
+source = "registry+https://github.com/rust-lang/crates.io-index"4168
+checksum = "5b21cb61c57ee198bc4aff71aeadff4cbb80b927beb912506af9c780d64313ce"4169
+dependencies = [4170
+ "android_system_properties",4171
+ "arrayvec",4172
+ "ash",4173
+ "bit-set",4174
+ "bitflags 2.11.1",4175
+ "block",4176
+ "bytemuck",4177
+ "cfg-if",4178
+ "cfg_aliases",4179
+ "core-graphics-types 0.2.0",4180
+ "glow",4181
+ "glutin_wgl_sys",4182
+ "gpu-alloc",4183
+ "gpu-allocator",4184
+ "gpu-descriptor",4185
+ "hashbrown 0.16.1",4186
+ "js-sys",4187
+ "khronos-egl",4188
+ "libc",4189
+ "libloading",4190
+ "log",4191
+ "metal",4192
+ "naga",4193
+ "ndk-sys",4194
+ "objc",4195
+ "once_cell",4196
+ "ordered-float",4197
+ "parking_lot",4198
+ "portable-atomic",4199
+ "portable-atomic-util",4200
+ "profiling",4201
+ "range-alloc",4202
+ "raw-window-handle",4203
+ "renderdoc-sys",4204
+ "smallvec",4205
+ "thiserror 2.0.18",4206
+ "wasm-bindgen",4207
+ "web-sys",4208
+ "wgpu-types",4209
+ "windows",4210
+ "windows-core",4211
+]4212
+4213
+[[package]]4214
+name = "wgpu-types"4215
+version = "27.0.1"4216
+source = "registry+https://github.com/rust-lang/crates.io-index"4217
+checksum = "afdcf84c395990db737f2dd91628706cb31e86d72e53482320d368e52b5da5eb"4218
+dependencies = [4219
+ "bitflags 2.11.1",4220
+ "bytemuck",4221
+ "js-sys",4222
+ "log",4223
+ "thiserror 2.0.18",4224
+ "web-sys",4225
+]4226
+4227
+[[package]]4228
+name = "winapi"4229
+version = "0.3.9"4230
+source = "registry+https://github.com/rust-lang/crates.io-index"4231
+checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"4232
+dependencies = [4233
+ "winapi-i686-pc-windows-gnu",4234
+ "winapi-x86_64-pc-windows-gnu",4235
+]4236
+4237
+[[package]]4238
+name = "winapi-i686-pc-windows-gnu"4239
+version = "0.4.0"4240
+source = "registry+https://github.com/rust-lang/crates.io-index"4241
+checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"4242
+4243
+[[package]]4244
+name = "winapi-util"4245
+version = "0.1.11"4246
+source = "registry+https://github.com/rust-lang/crates.io-index"4247
+checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22"4248
+dependencies = [4249
+ "windows-sys 0.61.2",4250
+]4251
+4252
+[[package]]4253
+name = "winapi-x86_64-pc-windows-gnu"4254
+version = "0.4.0"4255
+source = "registry+https://github.com/rust-lang/crates.io-index"4256
+checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"4257
+4258
+[[package]]4259
+name = "window_clipboard"4260
+version = "0.5.1"4261
+source = "registry+https://github.com/rust-lang/crates.io-index"4262
+checksum = "d5654226305eaf2dde8853fb482861d28e5dcecbbd40cb88e8393d94bb80d733"4263
+dependencies = [4264
+ "clipboard-win",4265
+ "clipboard_macos",4266
+ "clipboard_wayland",4267
+ "raw-window-handle",4268
+ "thiserror 2.0.18",4269
+]4270
+4271
+[[package]]4272
+name = "windows"4273
+version = "0.58.0"4274
+source = "registry+https://github.com/rust-lang/crates.io-index"4275
+checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6"4276
+dependencies = [4277
+ "windows-core",4278
+ "windows-targets 0.52.6",4279
+]4280
+4281
+[[package]]4282
+name = "windows-core"4283
+version = "0.58.0"4284
+source = "registry+https://github.com/rust-lang/crates.io-index"4285
+checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99"4286
+dependencies = [4287
+ "windows-implement",4288
+ "windows-interface",4289
+ "windows-result",4290
+ "windows-strings",4291
+ "windows-targets 0.52.6",4292
+]4293
+4294
+[[package]]4295
+name = "windows-implement"4296
+version = "0.58.0"4297
+source = "registry+https://github.com/rust-lang/crates.io-index"4298
+checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b"4299
+dependencies = [4300
+ "proc-macro2",4301
+ "quote",4302
+ "syn",4303
+]4304
+4305
+[[package]]4306
+name = "windows-interface"4307
+version = "0.58.0"4308
+source = "registry+https://github.com/rust-lang/crates.io-index"4309
+checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515"4310
+dependencies = [4311
+ "proc-macro2",4312
+ "quote",4313
+ "syn",4314
+]4315
+4316
+[[package]]4317
+name = "windows-link"4318
+version = "0.2.1"4319
+source = "registry+https://github.com/rust-lang/crates.io-index"4320
+checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5"4321
+4322
+[[package]]4323
+name = "windows-result"4324
+version = "0.2.0"4325
+source = "registry+https://github.com/rust-lang/crates.io-index"4326
+checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e"4327
+dependencies = [4328
+ "windows-targets 0.52.6",4329
+]4330
+4331
+[[package]]4332
+name = "windows-strings"4333
+version = "0.1.0"4334
+source = "registry+https://github.com/rust-lang/crates.io-index"4335
+checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10"4336
+dependencies = [4337
+ "windows-result",4338
+ "windows-targets 0.52.6",4339
+]4340
+4341
+[[package]]4342
+name = "windows-sys"4343
+version = "0.48.0"4344
+source = "registry+https://github.com/rust-lang/crates.io-index"4345
+checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"4346
+dependencies = [4347
+ "windows-targets 0.48.5",4348
+]4349
+4350
+[[package]]4351
+name = "windows-sys"4352
+version = "0.52.0"4353
+source = "registry+https://github.com/rust-lang/crates.io-index"4354
+checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"4355
+dependencies = [4356
+ "windows-targets 0.52.6",4357
+]4358
+4359
+[[package]]4360
+name = "windows-sys"4361
+version = "0.59.0"4362
+source = "registry+https://github.com/rust-lang/crates.io-index"4363
+checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"4364
+dependencies = [4365
+ "windows-targets 0.52.6",4366
+]4367
+4368
+[[package]]4369
+name = "windows-sys"4370
+version = "0.61.2"4371
+source = "registry+https://github.com/rust-lang/crates.io-index"4372
+checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc"4373
+dependencies = [4374
+ "windows-link",4375
+]4376
+4377
+[[package]]4378
+name = "windows-targets"4379
+version = "0.48.5"4380
+source = "registry+https://github.com/rust-lang/crates.io-index"4381
+checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"4382
+dependencies = [4383
+ "windows_aarch64_gnullvm 0.48.5",4384
+ "windows_aarch64_msvc 0.48.5",4385
+ "windows_i686_gnu 0.48.5",4386
+ "windows_i686_msvc 0.48.5",4387
+ "windows_x86_64_gnu 0.48.5",4388
+ "windows_x86_64_gnullvm 0.48.5",4389
+ "windows_x86_64_msvc 0.48.5",4390
+]4391
+4392
+[[package]]4393
+name = "windows-targets"4394
+version = "0.52.6"4395
+source = "registry+https://github.com/rust-lang/crates.io-index"4396
+checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"4397
+dependencies = [4398
+ "windows_aarch64_gnullvm 0.52.6",4399
+ "windows_aarch64_msvc 0.52.6",4400
+ "windows_i686_gnu 0.52.6",4401
+ "windows_i686_gnullvm",4402
+ "windows_i686_msvc 0.52.6",4403
+ "windows_x86_64_gnu 0.52.6",4404
+ "windows_x86_64_gnullvm 0.52.6",4405
+ "windows_x86_64_msvc 0.52.6",4406
+]4407
+4408
+[[package]]4409
+name = "windows_aarch64_gnullvm"4410
+version = "0.48.5"4411
+source = "registry+https://github.com/rust-lang/crates.io-index"4412
+checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"4413
+4414
+[[package]]4415
+name = "windows_aarch64_gnullvm"4416
+version = "0.52.6"4417
+source = "registry+https://github.com/rust-lang/crates.io-index"4418
+checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"4419
+4420
+[[package]]4421
+name = "windows_aarch64_msvc"4422
+version = "0.48.5"4423
+source = "registry+https://github.com/rust-lang/crates.io-index"4424
+checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"4425
+4426
+[[package]]4427
+name = "windows_aarch64_msvc"4428
+version = "0.52.6"4429
+source = "registry+https://github.com/rust-lang/crates.io-index"4430
+checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"4431
+4432
+[[package]]4433
+name = "windows_i686_gnu"4434
+version = "0.48.5"4435
+source = "registry+https://github.com/rust-lang/crates.io-index"4436
+checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"4437
+4438
+[[package]]4439
+name = "windows_i686_gnu"4440
+version = "0.52.6"4441
+source = "registry+https://github.com/rust-lang/crates.io-index"4442
+checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"4443
+4444
+[[package]]4445
+name = "windows_i686_gnullvm"4446
+version = "0.52.6"4447
+source = "registry+https://github.com/rust-lang/crates.io-index"4448
+checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"4449
+4450
+[[package]]4451
+name = "windows_i686_msvc"4452
+version = "0.48.5"4453
+source = "registry+https://github.com/rust-lang/crates.io-index"4454
+checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"4455
+4456
+[[package]]4457
+name = "windows_i686_msvc"4458
+version = "0.52.6"4459
+source = "registry+https://github.com/rust-lang/crates.io-index"4460
+checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"4461
+4462
+[[package]]4463
+name = "windows_x86_64_gnu"4464
+version = "0.48.5"4465
+source = "registry+https://github.com/rust-lang/crates.io-index"4466
+checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"4467
+4468
+[[package]]4469
+name = "windows_x86_64_gnu"4470
+version = "0.52.6"4471
+source = "registry+https://github.com/rust-lang/crates.io-index"4472
+checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"4473
+4474
+[[package]]4475
+name = "windows_x86_64_gnullvm"4476
+version = "0.48.5"4477
+source = "registry+https://github.com/rust-lang/crates.io-index"4478
+checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"4479
+4480
+[[package]]4481
+name = "windows_x86_64_gnullvm"4482
+version = "0.52.6"4483
+source = "registry+https://github.com/rust-lang/crates.io-index"4484
+checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"4485
+4486
+[[package]]4487
+name = "windows_x86_64_msvc"4488
+version = "0.48.5"4489
+source = "registry+https://github.com/rust-lang/crates.io-index"4490
+checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"4491
+4492
+[[package]]4493
+name = "windows_x86_64_msvc"4494
+version = "0.52.6"4495
+source = "registry+https://github.com/rust-lang/crates.io-index"4496
+checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"4497
+4498
+[[package]]4499
+name = "winit"4500
+version = "0.30.13"4501
+source = "registry+https://github.com/rust-lang/crates.io-index"4502
+checksum = "a6755fa58a9f8350bd1e472d4c3fcc25f824ec358933bba33306d0b63df5978d"4503
+dependencies = [4504
+ "ahash",4505
+ "android-activity",4506
+ "atomic-waker",4507
+ "bitflags 2.11.1",4508
+ "block2",4509
+ "calloop 0.13.0",4510
+ "cfg_aliases",4511
+ "concurrent-queue",4512
+ "core-foundation 0.9.4",4513
+ "core-graphics",4514
+ "cursor-icon",4515
+ "dpi",4516
+ "js-sys",4517
+ "libc",4518
+ "memmap2",4519
+ "ndk",4520
+ "objc2 0.5.2",4521
+ "objc2-app-kit",4522
+ "objc2-foundation 0.2.2",4523
+ "objc2-ui-kit",4524
+ "orbclient",4525
+ "pin-project",4526
+ "raw-window-handle",4527
+ "redox_syscall 0.4.1",4528
+ "rustix 0.38.44",4529
+ "sctk-adwaita",4530
+ "smithay-client-toolkit 0.19.2",4531
+ "smol_str",4532
+ "tracing",4533
+ "unicode-segmentation",4534
+ "wasm-bindgen",4535
+ "wasm-bindgen-futures",4536
+ "wayland-backend",4537
+ "wayland-client",4538
+ "wayland-protocols",4539
+ "wayland-protocols-plasma",4540
+ "web-sys",4541
+ "web-time",4542
+ "windows-sys 0.52.0",4543
+ "xkbcommon-dl",4544
+]4545
+4546
+[[package]]4547
+name = "winnow"4548
+version = "0.7.15"4549
+source = "registry+https://github.com/rust-lang/crates.io-index"4550
+checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945"4551
+dependencies = [4552
+ "memchr",4553
+]4554
+4555
+[[package]]4556
+name = "winnow"4557
+version = "1.0.3"4558
+source = "registry+https://github.com/rust-lang/crates.io-index"4559
+checksum = "0592e1c9d151f854e6fd382574c3a0855250e1d9b2f99d9281c6e6391af352f1"4560
+dependencies = [4561
+ "memchr",4562
+]4563
+4564
+[[package]]4565
+name = "wit-bindgen"4566
+version = "0.57.1"4567
+source = "registry+https://github.com/rust-lang/crates.io-index"4568
+checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e"4569
+4570
+[[package]]4571
+name = "xcursor"4572
+version = "0.3.10"4573
+source = "registry+https://github.com/rust-lang/crates.io-index"4574
+checksum = "bec9e4a500ca8864c5b47b8b482a73d62e4237670e5b5f1d6b9e3cae50f28f2b"4575
+4576
+[[package]]4577
+name = "xkbcommon-dl"4578
+version = "0.4.2"4579
+source = "registry+https://github.com/rust-lang/crates.io-index"4580
+checksum = "d039de8032a9a8856a6be89cea3e5d12fdd82306ab7c94d74e6deab2460651c5"4581
+dependencies = [4582
+ "bitflags 2.11.1",4583
+ "dlib",4584
+ "log",4585
+ "once_cell",4586
+ "xkeysym",4587
+]4588
+4589
+[[package]]4590
+name = "xkeysym"4591
+version = "0.2.1"4592
+source = "registry+https://github.com/rust-lang/crates.io-index"4593
+checksum = "b9cc00251562a284751c9973bace760d86c0276c471b4be569fe6b068ee97a56"4594
+4595
+[[package]]4596
+name = "xml-rs"4597
+version = "0.8.28"4598
+source = "registry+https://github.com/rust-lang/crates.io-index"4599
+checksum = "3ae8337f8a065cfc972643663ea4279e04e7256de865aa66fe25cec5fb912d3f"4600
+4601
+[[package]]4602
+name = "yansi-term"4603
+version = "0.1.2"4604
+source = "registry+https://github.com/rust-lang/crates.io-index"4605
+checksum = "fe5c30ade05e61656247b2e334a031dfd0cc466fadef865bdcdea8d537951bf1"4606
+dependencies = [4607
+ "winapi",4608
+]4609
+4610
+[[package]]4611
+name = "yazi"4612
+version = "0.2.1"4613
+source = "registry+https://github.com/rust-lang/crates.io-index"4614
+checksum = "e01738255b5a16e78bbb83e7fbba0a1e7dd506905cfc53f4622d89015a03fbb5"4615
+4616
+[[package]]4617
+name = "zeno"4618
+version = "0.3.3"4619
+source = "registry+https://github.com/rust-lang/crates.io-index"4620
+checksum = "6df3dc4292935e51816d896edcd52aa30bc297907c26167fec31e2b0c6a32524"4621
+4622
+[[package]]4623
+name = "zerocopy"4624
+version = "0.8.48"4625
+source = "registry+https://github.com/rust-lang/crates.io-index"4626
+checksum = "eed437bf9d6692032087e337407a86f04cd8d6a16a37199ed57949d415bd68e9"4627
+dependencies = [4628
+ "zerocopy-derive",4629
+]4630
+4631
+[[package]]4632
+name = "zerocopy-derive"4633
+version = "0.8.48"4634
+source = "registry+https://github.com/rust-lang/crates.io-index"4635
+checksum = "70e3cd084b1788766f53af483dd21f93881ff30d7320490ec3ef7526d203bad4"4636
+dependencies = [4637
+ "proc-macro2",4638
+ "quote",4639
+ "syn",4640
+]4641
+4642
+[[package]]4643
+name = "zmij"4644
+version = "1.0.21"4645
+source = "registry+https://github.com/rust-lang/crates.io-index"4646
+checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa"@@ -0,0 +1,95 @@
1
+[workspace]2
+resolver = "2"3
+members = [4
+ "crates/headroom-dsp",5
+ "crates/headroom-ipc",6
+ "crates/headroom-client",7
+ "crates/headroom-core",8
+ "crates/headroom-cli",9
+ "crates/headroom-gui",10
+ "crates/pipewire-filter",11
+]12
+13
+[workspace.package]14
+version = "0.1.0"15
+edition = "2021"16
+license = "EUPL-1.2"17
+homepage = "https://github.com/manic-systems/headroom"18
+repository = "https://github.com/manic-systems/headroom"19
+authors = ["Headroom contributors"]20
+21
+[workspace.dependencies]22
+# internal crates23
+headroom-dsp = { path = "crates/headroom-dsp", version = "0.1.0" }24
+headroom-ipc = { path = "crates/headroom-ipc", version = "0.1.0" }25
+headroom-client = { path = "crates/headroom-client", version = "0.1.0" }26
+headroom-core = { path = "crates/headroom-core", version = "0.1.0" }27
+pipewire-filter = { path = "crates/pipewire-filter", version = "0.1.0" }28
+29
+# serde / json / toml30
+serde = { version = "1.0", features = ["derive"] }31
+serde_json = "1.0"32
+toml = "0.8"33
+34
+# errors / logging35
+thiserror = "2.0"36
+tracing = "0.1"37
+tracing-subscriber = { version = "0.3", features = ["env-filter", "fmt"] }38
+39
+# cli40
+clap = { version = "4.5", features = ["derive"] }41
+42
+# held at 0.28 — 0.29 has block/style api churn needing a tui.rs migration. not a toolchain constraint43
+ratatui = "=0.28.1"44
+crossterm = "=0.28.1"45
+46
+# concurrency / control plane47
+crossbeam-channel = "0.5"48
+parking_lot = "0.12"49
+signal-hook = "0.3"50
+nix = { version = "0.27", features = ["signal"] }51
+52
+# realtime audio53
+rtrb = "0.3"54
+basedrop = "0.1"55
+assert_no_alloc = "1.1"56
+57
+# dsp58
+ebur128 = "0.1"59
+fundsp = "0.20"60
+61
+# v0_3_44 exposes target.object key + modern apis62
+pipewire = { version = "0.8", features = ["v0_3_44"] }63
+pipewire-sys = "0.8"64
+libspa = "0.8"65
+libspa-sys = "0.8"66
+67
+# safe byte<->pod casts for audio buffers68
+bytemuck = "1.18"69
+70
+# profile hot-reload71
+notify = "6.1"72
+notify-debouncer-mini = "0.4"73
+74
+# benchmarking — dev-dep only75
+criterion = { version = "0.5", default-features = false, features = ["cargo_bench_support"] }76
+77
+# journald logging, optional78
+tracing-journald = "0.3"79
+80
+[profile.release]81
+opt-level = 382
+lto = "thin"83
+codegen-units = 184
+debug = "line-tables-only"85
+overflow-checks = false86
+panic = "abort"87
+88
+[profile.dev]89
+opt-level = 1 # audio code unusable at -O090
+debug = true91
+overflow-checks = true92
+93
+[profile.bench]94
+inherits = "release"95
+debug = "full"@@ -0,0 +1,190 @@
1
+EUROPEAN UNION PUBLIC LICENCE v. 1.22
+EUPL © the European Union 2007, 20163
+4
+This European Union Public Licence (the ‘EUPL’) applies to the Work (as defined below) which is provided under the5
+terms of this Licence. Any use of the Work, other than as authorised under this Licence is prohibited (to the extent such6
+use is covered by a right of the copyright holder of the Work).7
+The Work is provided under the terms of this Licence when the Licensor (as defined below) has placed the following8
+notice immediately following the copyright notice for the Work:9
+ Licensed under the EUPL10
+or has expressed by any other means his willingness to license under the EUPL.11
+12
+1.Definitions13
+In this Licence, the following terms have the following meaning:14
+— ‘The Licence’:this Licence.15
+— ‘The Original Work’:the work or software distributed or communicated by the Licensor under this Licence, available16
+as Source Code and also as Executable Code as the case may be.17
+— ‘Derivative Works’:the works or software that could be created by the Licensee, based upon the Original Work or18
+modifications thereof. This Licence does not define the extent of modification or dependence on the Original Work19
+required in order to classify a work as a Derivative Work; this extent is determined by copyright law applicable in20
+the country mentioned in Article 15.21
+— ‘The Work’:the Original Work or its Derivative Works.22
+— ‘The Source Code’:the human-readable form of the Work which is the most convenient for people to study and23
+modify.24
+— ‘The Executable Code’:any code which has generally been compiled and which is meant to be interpreted by25
+a computer as a program.26
+— ‘The Licensor’:the natural or legal person that distributes or communicates the Work under the Licence.27
+— ‘Contributor(s)’:any natural or legal person who modifies the Work under the Licence, or otherwise contributes to28
+the creation of a Derivative Work.29
+— ‘The Licensee’ or ‘You’:any natural or legal person who makes any usage of the Work under the terms of the30
+Licence.31
+— ‘Distribution’ or ‘Communication’:any act of selling, giving, lending, renting, distributing, communicating,32
+transmitting, or otherwise making available, online or offline, copies of the Work or providing access to its essential33
+functionalities at the disposal of any other natural or legal person.34
+35
+2.Scope of the rights granted by the Licence36
+The Licensor hereby grants You a worldwide, royalty-free, non-exclusive, sublicensable licence to do the following, for37
+the duration of copyright vested in the Original Work:38
+— use the Work in any circumstance and for all usage,39
+— reproduce the Work,40
+— modify the Work, and make Derivative Works based upon the Work,41
+— communicate to the public, including the right to make available or display the Work or copies thereof to the public42
+and perform publicly, as the case may be, the Work,43
+— distribute the Work or copies thereof,44
+— lend and rent the Work or copies thereof,45
+— sublicense rights in the Work or copies thereof.46
+Those rights can be exercised on any media, supports and formats, whether now known or later invented, as far as the47
+applicable law permits so.48
+In the countries where moral rights apply, the Licensor waives his right to exercise his moral right to the extent allowed49
+by law in order to make effective the licence of the economic rights here above listed.50
+The Licensor grants to the Licensee royalty-free, non-exclusive usage rights to any patents held by the Licensor, to the51
+extent necessary to make use of the rights granted on the Work under this Licence.52
+53
+3.Communication of the Source Code54
+The Licensor may provide the Work either in its Source Code form, or as Executable Code. If the Work is provided as55
+Executable Code, the Licensor provides in addition a machine-readable copy of the Source Code of the Work along with56
+each copy of the Work that the Licensor distributes or indicates, in a notice following the copyright notice attached to57
+the Work, a repository where the Source Code is easily and freely accessible for as long as the Licensor continues to58
+distribute or communicate the Work.59
+60
+4.Limitations on copyright61
+Nothing in this Licence is intended to deprive the Licensee of the benefits from any exception or limitation to the62
+exclusive rights of the rights owners in the Work, of the exhaustion of those rights or of other applicable limitations63
+thereto.64
+65
+5.Obligations of the Licensee66
+The grant of the rights mentioned above is subject to some restrictions and obligations imposed on the Licensee. Those67
+obligations are the following:68
+69
+Attribution right: The Licensee shall keep intact all copyright, patent or trademarks notices and all notices that refer to70
+the Licence and to the disclaimer of warranties. The Licensee must include a copy of such notices and a copy of the71
+Licence with every copy of the Work he/she distributes or communicates. The Licensee must cause any Derivative Work72
+to carry prominent notices stating that the Work has been modified and the date of modification.73
+74
+Copyleft clause: If the Licensee distributes or communicates copies of the Original Works or Derivative Works, this75
+Distribution or Communication will be done under the terms of this Licence or of a later version of this Licence unless76
+the Original Work is expressly distributed only under this version of the Licence — for example by communicating77
+‘EUPL v. 1.2 only’. The Licensee (becoming Licensor) cannot offer or impose any additional terms or conditions on the78
+Work or Derivative Work that alter or restrict the terms of the Licence.79
+80
+Compatibility clause: If the Licensee Distributes or Communicates Derivative Works or copies thereof based upon both81
+the Work and another work licensed under a Compatible Licence, this Distribution or Communication can be done82
+under the terms of this Compatible Licence. For the sake of this clause, ‘Compatible Licence’ refers to the licences listed83
+in the appendix attached to this Licence. Should the Licensee's obligations under the Compatible Licence conflict with84
+his/her obligations under this Licence, the obligations of the Compatible Licence shall prevail.85
+86
+Provision of Source Code: When distributing or communicating copies of the Work, the Licensee will provide87
+a machine-readable copy of the Source Code or indicate a repository where this Source will be easily and freely available88
+for as long as the Licensee continues to distribute or communicate the Work.89
+Legal Protection: This Licence does not grant permission to use the trade names, trademarks, service marks, or names90
+of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and91
+reproducing the content of the copyright notice.92
+93
+6.Chain of Authorship94
+The original Licensor warrants that the copyright in the Original Work granted hereunder is owned by him/her or95
+licensed to him/her and that he/she has the power and authority to grant the Licence.96
+Each Contributor warrants that the copyright in the modifications he/she brings to the Work are owned by him/her or97
+licensed to him/her and that he/she has the power and authority to grant the Licence.98
+Each time You accept the Licence, the original Licensor and subsequent Contributors grant You a licence to their contributions99
+to the Work, under the terms of this Licence.100
+101
+7.Disclaimer of Warranty102
+The Work is a work in progress, which is continuously improved by numerous Contributors. It is not a finished work103
+and may therefore contain defects or ‘bugs’ inherent to this type of development.104
+For the above reason, the Work is provided under the Licence on an ‘as is’ basis and without warranties of any kind105
+concerning the Work, including without limitation merchantability, fitness for a particular purpose, absence of defects or106
+errors, accuracy, non-infringement of intellectual property rights other than copyright as stated in Article 6 of this107
+Licence.108
+This disclaimer of warranty is an essential part of the Licence and a condition for the grant of any rights to the Work.109
+110
+8.Disclaimer of Liability111
+Except in the cases of wilful misconduct or damages directly caused to natural persons, the Licensor will in no event be112
+liable for any direct or indirect, material or moral, damages of any kind, arising out of the Licence or of the use of the113
+Work, including without limitation, damages for loss of goodwill, work stoppage, computer failure or malfunction, loss114
+of data or any commercial damage, even if the Licensor has been advised of the possibility of such damage. However,115
+the Licensor will be liable under statutory product liability laws as far such laws apply to the Work.116
+117
+9.Additional agreements118
+While distributing the Work, You may choose to conclude an additional agreement, defining obligations or services119
+consistent with this Licence. However, if accepting obligations, You may act only on your own behalf and on your sole120
+responsibility, not on behalf of the original Licensor or any other Contributor, and only if You agree to indemnify,121
+defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against such Contributor by122
+the fact You have accepted any warranty or additional liability.123
+124
+10.Acceptance of the Licence125
+The provisions of this Licence can be accepted by clicking on an icon ‘I agree’ placed under the bottom of a window126
+displaying the text of this Licence or by affirming consent in any other similar way, in accordance with the rules of127
+applicable law. Clicking on that icon indicates your clear and irrevocable acceptance of this Licence and all of its terms128
+and conditions.129
+Similarly, you irrevocably accept this Licence and all of its terms and conditions by exercising any rights granted to You130
+by Article 2 of this Licence, such as the use of the Work, the creation by You of a Derivative Work or the Distribution131
+or Communication by You of the Work or copies thereof.132
+133
+11.Information to the public134
+In case of any Distribution or Communication of the Work by means of electronic communication by You (for example,135
+by offering to download the Work from a remote location) the distribution channel or media (for example, a website)136
+must at least provide to the public the information requested by the applicable law regarding the Licensor, the Licence137
+and the way it may be accessible, concluded, stored and reproduced by the Licensee.138
+139
+12.Termination of the Licence140
+The Licence and the rights granted hereunder will terminate automatically upon any breach by the Licensee of the terms141
+of the Licence.142
+Such a termination will not terminate the licences of any person who has received the Work from the Licensee under143
+the Licence, provided such persons remain in full compliance with the Licence.144
+145
+13.Miscellaneous146
+Without prejudice of Article 9 above, the Licence represents the complete agreement between the Parties as to the147
+Work.148
+If any provision of the Licence is invalid or unenforceable under applicable law, this will not affect the validity or149
+enforceability of the Licence as a whole. Such provision will be construed or reformed so as necessary to make it valid150
+and enforceable.151
+The European Commission may publish other linguistic versions or new versions of this Licence or updated versions of152
+the Appendix, so far this is required and reasonable, without reducing the scope of the rights granted by the Licence.153
+New versions of the Licence will be published with a unique version number.154
+All linguistic versions of this Licence, approved by the European Commission, have identical value. Parties can take155
+advantage of the linguistic version of their choice.156
+157
+14.Jurisdiction158
+Without prejudice to specific agreement between parties,159
+— any litigation resulting from the interpretation of this License, arising between the European Union institutions,160
+bodies, offices or agencies, as a Licensor, and any Licensee, will be subject to the jurisdiction of the Court of Justice161
+of the European Union, as laid down in article 272 of the Treaty on the Functioning of the European Union,162
+— any litigation arising between other parties and resulting from the interpretation of this License, will be subject to163
+the exclusive jurisdiction of the competent court where the Licensor resides or conducts its primary business.164
+165
+15.Applicable Law166
+Without prejudice to specific agreement between parties,167
+— this Licence shall be governed by the law of the European Union Member State where the Licensor has his seat,168
+resides or has his registered office,169
+— this licence shall be governed by Belgian law if the Licensor has no seat, residence or registered office inside170
+a European Union Member State.171
+172
+173
+ Appendix174
+175
+‘Compatible Licences’ according to Article 5 EUPL are:176
+— GNU General Public License (GPL) v. 2, v. 3177
+— GNU Affero General Public License (AGPL) v. 3178
+— Open Software License (OSL) v. 2.1, v. 3.0179
+— Eclipse Public License (EPL) v. 1.0180
+— CeCILL v. 2.0, v. 2.1181
+— Mozilla Public Licence (MPL) v. 2182
+— GNU Lesser General Public Licence (LGPL) v. 2.1, v. 3183
+— Creative Commons Attribution-ShareAlike v. 3.0 Unported (CC BY-SA 3.0) for works other than software184
+— European Union Public Licence (EUPL) v. 1.1, v. 1.2185
+— Québec Free and Open-Source Licence — Reciprocity (LiLiQ-R) or Strong Reciprocity (LiLiQ-R+).186
+187
+The European Commission may update this Appendix to later versions of the above licences without producing188
+a new version of the EUPL, as long as they provide the rights granted in Article 2 of this Licence and protect the189
+covered Source Code from exclusive appropriation.190
+All other changes or additions to this Appendix require the production of a new EUPL version.@@ -0,0 +1,27 @@
1
+{2
+ "nodes": {3
+ "nixpkgs": {4
+ "locked": {5
+ "lastModified": 1778869304,6
+ "narHash": "sha256-30sZNZoA1cqF5JNO9fVX+wgiQYjB7HJqqJ4ztCDeBZE=",7
+ "owner": "NixOS",8
+ "repo": "nixpkgs",9
+ "rev": "d233902339c02a9c334e7e593de68855ad26c4cb",10
+ "type": "github"11
+ },12
+ "original": {13
+ "owner": "NixOS",14
+ "ref": "nixos-unstable",15
+ "repo": "nixpkgs",16
+ "type": "github"17
+ }18
+ },19
+ "root": {20
+ "inputs": {21
+ "nixpkgs": "nixpkgs"22
+ }23
+ }24
+ },25
+ "root": "root",26
+ "version": 727
+}@@ -0,0 +1,229 @@
1
+{2
+ description = "automatic loudness and per-app volume control (pipewire)";3
+4
+ inputs = {5
+ nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";6
+ };7
+8
+ outputs =9
+ {10
+ self,11
+ nixpkgs,12
+ }:13
+ let14
+ systems = [15
+ "x86_64-linux"16
+ "aarch64-linux"17
+ ];18
+ forAllSystems = nixpkgs.lib.genAttrs systems;19
+20
+ pkgsFor =21
+ system:22
+ import nixpkgs {23
+ inherit system;24
+ };25
+26
+ perSystem =27
+ system:28
+ let29
+ pkgs = pkgsFor system;30
+31
+ # native libs the audio crates link against32
+ nativeAudioBuildInputs = with pkgs; [33
+ pipewire34
+ pipewire.dev35
+ ];36
+37
+ nativeBuildTools = with pkgs; [38
+ pkg-config39
+ clang40
+ ];41
+42
+ # system libs iced (wgpu/winit/cosmic-text) compiles + dlopens at runtime.43
+ # wayland-only (x11 feature off); re-add libx11/libxcursor/libxi/libxrandr/libxcb if x11 re-enabled44
+ guiLibs = with pkgs; [45
+ vulkan-loader46
+ libxkbcommon47
+ wayland48
+ libGL49
+ fontconfig50
+ ];51
+52
+ commonEnv = {53
+ LIBCLANG_PATH = "${pkgs.libclang.lib}/lib";54
+ PKG_CONFIG_PATH = "${pkgs.pipewire.dev}/lib/pkgconfig";55
+ };56
+ in57
+ {58
+ # nix develop — dev environment59
+ devShell = pkgs.mkShell (60
+ {61
+ name = "headroom-dev";62
+63
+ nativeBuildInputs = nativeBuildTools ++ [64
+ pkgs.cargo65
+ pkgs.clippy66
+ pkgs.rust-analyzer67
+ pkgs.rustc68
+ pkgs.rustfmt69
+ ];70
+71
+ buildInputs =72
+ nativeAudioBuildInputs73
+ ++ guiLibs74
+ ++ (with pkgs; [75
+ socat # poke the ipc socket76
+ jq # pretty-print json77
+ pipewire # pw-cli, pw-cat, etc.78
+ wireplumber79
+ ]);80
+81
+ shellHook = ''82
+ echo "headroom dev shell — rustc $(rustc --version | cut -d' ' -f2)"83
+ echo " cargo build / cargo test for iteration."84
+ echo " nix build .#headroom for the packaged binary."85
+ echo " cargo run -p headroom-gui for the GUI (needs a display)."86
+ export RUST_BACKTRACE=187
+ export RUST_LOG=headroom=debug,info88
+ # iced/wgpu dlopen vulkan/wayland/xkbcommon at runtime89
+ export LD_LIBRARY_PATH="${pkgs.lib.makeLibraryPath guiLibs}''${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"90
+ '';91
+ }92
+ // commonEnv93
+ );94
+95
+ # nix build — packaged daemon + cli96
+ headroom = pkgs.rustPlatform.buildRustPackage (97
+ {98
+ pname = "headroom";99
+ # workspace version (per-crate manifests use version.workspace = true)100
+ version =101
+ (builtins.fromTOML (builtins.readFile ./Cargo.toml)).workspace.package.version102
+ + "-"103
+ + (toString self.lastModifiedDate);104
+105
+ src = ./.;106
+107
+ cargoLock = {108
+ lockFile = ./Cargo.lock;109
+ # allowBuiltinFetchGit = true;110
+ };111
+112
+ nativeBuildInputs = nativeBuildTools;113
+ buildInputs = nativeAudioBuildInputs;114
+115
+ # one binary: `headroom` (cli + daemon)116
+ cargoBuildFlags = [117
+ "-p"118
+ "headroom-cli"119
+ ];120
+ doCheck = true;121
+ # exclude headroom-gui from the test sweep — pulls iced's gpu stack, not part of the daemon122
+ cargoTestFlags = [123
+ "--workspace"124
+ "--exclude"125
+ "headroom-gui"126
+ ];127
+128
+ # systemd user unit (@bindir@ templated to this derivation's bin, not PATH)129
+ # + canonical profiles under share/headroom/profiles (daemon finds via $XDG_DATA_DIRS)130
+ postInstall = ''131
+ install -Dm644 contrib/systemd/headroom.service \132
+ "$out/lib/systemd/user/headroom.service"133
+ substituteInPlace "$out/lib/systemd/user/headroom.service" \134
+ --replace-fail '@bindir@' "$out/bin"135
+136
+ mkdir -p "$out/share/headroom/profiles"137
+ cp -r profiles/. "$out/share/headroom/profiles/"138
+ '';139
+140
+ meta = with pkgs.lib; {141
+ description = "automatic loudness and per-app volume control (pipewire)";142
+ license = licenses.gpl3Plus;143
+ platforms = platforms.linux;144
+ mainProgram = "headroom";145
+ };146
+ }147
+ // commonEnv148
+ );149
+150
+ # `nix build .#headroom-gui` — optional iced GUI monitor.151
+ # separate package so the default build stays graphics-free. iced/wgpu152
+ # dlopen vulkan/libGL/wayland/xkbcommon at runtime → wrap with LD_LIBRARY_PATH.153
+ # also ships the .desktop entry.154
+ headroom-gui = pkgs.rustPlatform.buildRustPackage (155
+ {156
+ pname = "headroom-gui";157
+ version =158
+ (builtins.fromTOML (builtins.readFile ./Cargo.toml)).workspace.package.version159
+ + "-"160
+ + (toString self.lastModifiedDate);161
+162
+ src = ./.;163
+164
+ cargoLock = {165
+ lockFile = ./Cargo.lock;166
+ };167
+168
+ # makeWrapper for the LD_LIBRARY_PATH wrap. gui doesn't link pipewire169
+ # (talks to the daemon over the socket via headroom-client) → no pipewire/clang170
+ nativeBuildInputs = [171
+ pkgs.pkg-config172
+ pkgs.makeWrapper173
+ ];174
+ buildInputs = guiLibs;175
+176
+ cargoBuildFlags = [177
+ "-p"178
+ "headroom-gui"179
+ ];180
+ # gui tests drive iced view/update; no display in the sandbox.181
+ # run them via `cargo test -p headroom-gui` in the dev shell instead182
+ doCheck = false;183
+184
+ postInstall = ''185
+ install -Dm644 contrib/desktop/headroom-gui.desktop \186
+ "$out/share/applications/headroom-gui.desktop"187
+ substituteInPlace "$out/share/applications/headroom-gui.desktop" \188
+ --replace-fail '@bindir@' "$out/bin"189
+ '';190
+191
+ postFixup = ''192
+ wrapProgram "$out/bin/headroom-gui" \193
+ --prefix LD_LIBRARY_PATH : "${pkgs.lib.makeLibraryPath guiLibs}"194
+ '';195
+196
+ meta = with pkgs.lib; {197
+ description = "automatic loudness and per-app volume control (pipewire)";198
+ license = licenses.eupl12;199
+ platforms = platforms.linux;200
+ mainProgram = "headroom-gui";201
+ };202
+ }203
+ // commonEnv204
+ );205
+ };206
+ in207
+ {208
+ devShells = forAllSystems (system: {209
+ default = (perSystem system).devShell;210
+ });211
+212
+ packages = forAllSystems (213
+ system:214
+ let215
+ ps = perSystem system;216
+ in217
+ rec {218
+ default = headroom;219
+ headroom = ps.headroom;220
+ headroom-gui = ps.headroom-gui;221
+ }222
+ );223
+224
+ formatter = forAllSystems (system: (pkgsFor system).nixpkgs-fmt);225
+226
+ # System-independent outputs — modules.227
+ nixosModules.default = import ./nix/nixos-module.nix self;228
+ };229
+}@@ -0,0 +1,35 @@
1
+#!/usr/bin/env bash2
+set -euo pipefail3
+4
+threshold="${1:-1000}"5
+6
+allowed='7
+crates/headroom-core/src/pw/registry.rs8
+crates/headroom-gui/src/app.rs9
+crates/headroom-core/src/profile_store.rs10
+crates/headroom-cli/src/tui.rs11
+crates/headroom-core/src/ipc/ops.rs12
+crates/headroom-dsp/src/limiter.rs13
+crates/headroom-core/src/app_level.rs14
+'15
+16
+is_allowed() {17
+ local file="$1"18
+ grep -qxF "$file" <<<"$allowed"19
+}20
+21
+status=022
+while IFS= read -r -d '' file; do23
+ lines="$(wc -l <"$file")"24
+ if (( lines <= threshold )); then25
+ continue26
+ fi27
+ if is_allowed "$file"; then28
+ printf 'warn: %s has %s lines allowed over %s\n' "$file" "$lines" "$threshold"29
+ else30
+ printf 'error: %s has %s lines over %s\n' "$file" "$lines" "$threshold" >&231
+ status=132
+ fi33
+done < <(find crates -type f -name '*.rs' -print0 | sort -z)34
+35
+exit "$status"