! / 0 0 0 0 582 ` П:П:П:П:П:П:П:_RINvMNtCsgxBkk5gSRhY_4core5sliceSh13get_uncheckedjECsjpeJfgJkMRa_13unicode_ident_RNvXs0_NtNtCsgxBkk5gSRhY_4core5slice5indexjINtB5_10SliceIndexShE13get_uncheckedCsjpeJfgJkMRa_13unicode_ident_RINvMNtCsgxBkk5gSRhY_4core5sliceSh3getjECsjpeJfgJkMRa_13unicode_ident_RNvXs0_NtNtCsgxBkk5gSRhY_4core5slice5indexjINtB5_10SliceIndexShE3getCsjpeJfgJkMRa_13unicode_ident_RNvCsjpeJfgJkMRa_13unicode_ident12is_xid_start_RNvMNtCsgxBkk5gSRhY_4core6optionINtB2_6OptionRhE9unwrap_orCsjpeJfgJkMRa_13unicode_ident_RNvCsjpeJfgJkMRa_13unicode_ident15is_xid_continue// 76 ` unicode_ident-76fddff3086055f2.unicode_ident.e20bc6f136aa2712-cgu.0.rcgu.o/ lib.rmeta/ 0 0 0 644 35096 ` ELF>ШЗ@@GNU└rust SЕ#rustc 1.98.1 (48a229cea 2026-09-01)┴√╩╞═RLё.хS█A·wjL-df1bddb45adbe94b┴▒ЄЙ<х%ZЙ>╕64З╦V`-2d2ab9fb0fe1def5┴К√   is_xid_start┴is_xid_continue┴tables┴Align8┴ РєAlign64┴ РєUNICODE_VERSION┴ ASCII_START┴ASCII_CONTINUE┴CHUNK┴ ZERO_START┴ ZERO_CONTINUE┴ TRIE_START┴  TRIE_CONTINUE┴ LEAF┴" TП Р Фї Чї№х5їїїdА+_┴■  ■  !0x7fffffe07fffffe0000000000000000┴ ■  З■  ф!0x7fffffe87fffffe03ff000000000000┴@64┴╘17┴╘17┴ ╘511┴╘1793┴ ╘7968┴▄ў Р+°є NAU°╜н┬▌d▌krф╕ ▌(Чє ·Я─Бj/▌a▌ho √╖|ч\ ▀tС] ═\б] Ї,о] ╥$╡]"║l╗]  еT╩] Сl╓]  АTх]  №еe№жг [![github]](https://github.com/dtolnay/unicode-ident) [![crates-io]](https://crates.io/crates/unicode-ident) [![docs-rs]](https://docs.rs/unicode-ident)┴зН№лjg [github]: https://img.shields.io/badge/github-8da0cb?style=for-the-badge&labelColor=555555&logo=github┴№Цnk [crates-io]: https://img.shields.io/badge/crates.io-fc8d62?style=for-the-badge&labelColor=555555&logo=rust┴№Еmj [docs-rs]: https://img.shields.io/badge/docs.rs-66c2a5?style=for-the-badge&labelColor=555555&logo=docs.rs┴єНDў
┴АН№ДNK Implementation of [Unicode Standard Annex #31][tr31] for determining which┴№╙@= `char` values are valid in programming language identifiers.┴ФН№Ш1. [tr31]: https://www.unicode.org/reports/tr31/┴╩Н№╬NK This crate is a better optimized implementation of the older `unicode-xid`┴№ЭLI crate. This crate uses less static storage, and is able to classify both┴№ъPM ASCII and non-ASCII codepoints with better performance, 6× faster than┴Ф╗ `unicode-xid`.┴╬НD╥╞█Н№▀  ## Comparison of performance┴АН№ДJG The following table shows a comparison between five Unicode identifier┴д╧ implementations.┴фН№ш$! - `unicode-ident` is this crate;┴№Н IF - [`unicode-xid`] is a widely used crate run by the "unicode-rs" org;┴№╫ C@ - `ucd-trie` and `fst` are two data structures supported by the┴фЫ  [`ucd-generate`] tool;┴№╕ =: - [`roaring`] is a Rust implementation of Roaring bitmap.┴Ў Н№· PM The *static storage* column shows the total size of `static` tables that the┴№╦ =: crate bakes into your binary, measured in 1000s of bytes.┴Й Н№Н JG The remaining columns show the **cost per call** to evaluate whether a┴№╪ GD single `char` has the XID\_Start or XID\_Continue Unicode property,┴№а MJ comparing across different ratios of ASCII to non-ASCII codepoints in the┴|ю  input data.┴■ Н№В>; [`unicode-xid`]: https://github.com/unicode-rs/unicode-xid┴№┴@= [`ucd-generate`]: https://github.com/BurntSushi/ucd-generate┴№В<9 [`roaring`]: https://github.com/RoaringBitmap/roaring-rs┴┐Н№├A> | | static storage | 0% nonascii | 1% | 10% | 100% nonascii |┴ьЕ |---|---|---|---|---|---|┴№гLI | **`unicode-ident`** | 10.3 K | 0.36 ns | 0.37 ns | 0.37 ns | 0.43 ns |┴№ЁJG | **`unicode-xid`** | 12.2 K | 1.63 ns | 1.70 ns | 1.82 ns | 4.56 ns |┴№╗GD | **`ucd-trie`** | 10.8 K | 1.01 ns | 0.73 ns | 0.97 ns | 1.09 ns |┴№ГA> | **`fst`** | 149 K | 22.0 ns | 21.9 ns | 20.9 ns | 10.5 ns |┴№┼FC | **`roaring`** | 66.1 K | 1.91 ns | 1.90 ns | 1.94 ns | 2.67 ns |┴МН№РNK Source code for the benchmark is provided in the *bench* directory of this┴№▀:7 repo and may be repeated by running `cargo criterion`.┴ЪНDЮ╞зН№л$! ## Comparison of data structures┴╨Нд╘ #### unicode-xid┴щН№эOL They use a sorted array of character ranges, and do a binary search to look┴№╜B? up whether a given character lands inside one of those ranges.┴АН\Д ```rust┴№Р" # const _: &str = stringify! {┴№│63 static XID_Continue_table: [(char, char); 763] = [┴№ъ%" ('\u{30}', '\u{39}'), // 0-9┴№Р%" ('\u{41}', '\u{5a}'), // A-Z┴<╢ # "┴\╛ тАж┴<╩О&№╥# ('\u{e0100}', '\u{e01ef}'),┴4Ў ];┴D¤ # };┴<Ж ```┴ОН№ТLI The static storage used by this data structure scales with the number of┴№▀LI contiguous ranges of identifier codepoints in Unicode. Every table entry┴№мLI consumes 8 bytes, because it consists of a pair of 32-bit `char` values.┴∙Н№¤IF In some ranges of the Unicode codepoint space, this is quite a sparse┴№╟KH representation – there are some ranges where tens of thousands of┴№УMJ adjacent codepoints are all valid identifier characters. In other places,┴№сLI the representation is quite inefficient. A characater like `┬╡` (U+00B5)┴№оLI which is surrounded by non-identifier codepoints consumes 64 bits in the┴№√:7 table, while it would be just 1 bit in a dense bitmap.┴╢Н№║NK On a system with 64-byte cache lines, binary searching the table touches 7┴№ЙFC cache lines on average. Each cache line fits only 8 table entries.┴№╨NK Additionally, the branching performed during the binary search is probably┴№Я1. mostly unpredictable to the branch predictor.┴╤Н№╒MJ Overall, the crate ends up being about 6× slower on non-ASCII input┴№г " compared to the fastest crate.┴╞ Н№╩ NK A potential improvement would be to pack the table entries more compactly.┴№Щ!OL Rust's `char` type is a 21-bit integer padded to 32 bits, which means every┴№щ!LI table entry is holding 22 bits of wasted space, adding up to 3.9 K. They┴№╢"MJ could instead fit every table entry into 6 bytes, leaving out some of the┴№Д#PM padding, for a 25% improvement in space used. With some cleverness it may be┴№╒#KH possible to fit in 5 bytes or even 4 bytes by storing a low char and an┴№б$NK extent, instead of low char and high char. I don't expect that performance┴№Ё$PM would improve much but this could be the most efficient for space across all┴№┴%30 the libraries, needing only about 7 K to store.┴ї%НМ∙% #### ucd-trie┴Л&Н№П&KH Their data structure is a compressed trie set specifically tailored for┴№█&@= Unicode codepoints. The design is credited to Raph Levien in┴▄Ь' [rust-lang/rust#33098].┴╕'Н№╝'HE [rust-lang/rust#33098]: https://github.com/rust-lang/rust/pull/33098┴Е(Н\Й(░$─Х( pub struct TrieSet {┴№о()& tree1_level1: &'static [u64; 32],┴№╪()& tree2_level1: &'static [u8; 992],┴№В)%" tree2_level2: &'static [u64],┴№и))& tree3_level1: &'static [u8; 256],┴№╥)$! tree3_level2: &'static [u8],┴№ў)%" tree3_level3: &'static [u64],┴,Э* }┴<г*Л'л*Н№п*PM It represents codepoint sets using a trie to achieve prefix compression. The┴№А+KH final states of the trie are embedded in leaves or "chunks", where each┴№╠+NK chunk is a 64-bit integer. Each bit position of the integer corresponds to┴№Ы,MJ whether a particular codepoint is in the set or not. These chunks are not┴№щ,OL just a compact representation of the final states of the trie, but are also┴№╣-IF a form of suffix compression. In particular, if multiple ranges of 64┴№Г.PM contiguous codepoints have the same Unicode properties, then they all map to┴№╘.2/ the same chunk in the final level of the trie.┴З/Н№Л/NK Being tailored for Unicode codepoints, this trie is partitioned into three┴№┌/OL disjoint sets: tree1, tree2, tree3. The first set corresponds to codepoints┴№к0FC \[0, 0x800), the second \[0x800, 0x10000) and the third \[0x10000,┴№ё0NK 0x110000). These partitions conveniently correspond to the space of 1 or 2┴№└1MJ byte UTF-8 encoded codepoints, 3 byte UTF-8 encoded codepoints and 4 byte┴№О2+( UTF-8 encoded codepoints, respectively.┴║2Н№╛2OL Lookups in this data structure are significantly more efficient than binary┴№О3PM search. A lookup touches either 1, 2, or 3 cache lines based on which of the┴№▀3&# trie partitions is being accessed.┴Ж4Н№К4PM One possible performance improvement would be for this crate to expose a way┴№█4LI to query based on a UTF-8 encoded string, returning the Unicode property┴№и5PM corresponding to the first character in the string. Without such an API, the┴№∙5NK caller is required to tokenize their UTF-8 encoded input data into `char`,┴№╚6MJ hand the `char` into `ucd-trie`, only for `ucd-trie` to undo that work by┴№Ц7OL converting back into the variable-length representation for trie traversal.┴ц7Нdъ7 #### fst┴ў7Н№√7LI Uses a [finite state transducer][fst]. This representation is built into┴№╚8JG [ucd-generate] but I am not aware of any advantage over the `ucd-trie`┴№У9MJ representation. In particular `ucd-trie` is optimized for storing Unicode┴№с9" properties while `fst` is not.┴Д:Н№И:,) [fst]: https://github.com/BurntSushi/fst┴№╡:>; [ucd-generate]: https://github.com/BurntSushi/ucd-generate┴Ї:Н№°:MJ As far as I can tell, the main thing that causes `fst` to have large size┴№╞;MJ and slow lookups for this use case relative to `ucd-trie` is that it does┴№ФDA structure designed for storing sets of 32-bit unsigned integers.┴¤>Н№Б?63 [Roaring Bitmap]: https://roaringbitmap.org/about/┴╕?Н№╝?PM Roaring bitmaps are compressed bitmaps which tend to outperform conventional┴№Н@PM compressed bitmaps such as WAH, EWAH or Concise. In some instances, they can┴№▐@IF be hundreds of times faster and they often offer significantly better┴ДиA compression.┴╣AН№╜AIF In this use case the performance was reasonably competitive but still┴№ЗBIF substantially slower than the Unicode-optimized crates. Meanwhile the┴№╤BOL compression was significantly worse, requiring 6× as much storage for┴╝бC the data structure.┴╣CН№╜CPM I also benchmarked the [`croaring`] crate which is an FFI wrapper around the┴№ОDMJ C reference implementation of Roaring Bitmap. This crate was consistently┴№▄DPM about 15% slower than pure-Rust `roaring`, which could just be FFI overhead.┴№нE" I did not investigate further.┴╨EН№╘E30 [`croaring`]: https://crates.io/crates/croaring┴ИFН┤МF #### unicode-ident┴гFН№зFOL This crate is most similar to the `ucd-trie` library, in that it's based on┴№ўFOL bitmaps stored in the leafs of a trie representation, achieving both prefix┴№╟G'$ compression and suffix compression.┴яGНфєG The key differences are:┴РHН№ФHPM - Uses a single 2-level trie, rather than 3 disjoint partitions of different┴МхH depth each.┴№ўHEB - Uses significantly larger chunks: 512 bits rather than 64 bits.┴№╜IEB - Compresses the XID\_Start and XID\_Continue properties together┴№ГJOL simultaneously, rather than duplicating identical trie leaf chunks across┴t╙J the two.┴тJН№цJOL The following diagram show the XID\_Start and XID\_Continue Unicode boolean┴№╢K85 properties in uncompressed form, in row-major order:┴яKН\єK ┴№ K41 ┴D┤L ┴№╜LаЭ ┴№▐Mга ┴LВO ┴dМO
XID_StartXID_Continue
XID_Start bitmapXID_Continue bitmap
┴ЩOН№ЭOPM Uncompressed, these would take 140 K to store, which is beyond what would be┴№юOMJ reasonable. However, as you can see there is a large degree of similarity┴№╝PDA between the two bitmaps and across the rows, which lends well to┴ДБQвWТQН№ЦQNK This crate stores one 512-bit "row" of the above bitmaps in the leaf level┴№хQOL of a trie, and a single additional level to index into the leafs. There are┴№╡R52 134 unique 512-bit chunks across the two bitmaps.┴ыRН№яROL The chunk size of 512 bits is selected as the size that minimizes the total┴№┐SLI size of the data structure. A smaller chunk, like 256 or 128 bits, would┴№МTKH achieve better deduplication but require a larger index. A larger chunk┴№╪TIF would increase redundancy in the leaf bitmaps. 512 bit chunks are the┴№вU:7 optimum for total size of the index plus leaf bitmaps.┴▌UН№сUQN The chunk data is compressed using the KuhnтАУMunkres algorithm for bipartite┴№│VOL matching to eliminate redundancies between the second half of any chunk and┴№ГWEB the first half of any other chunk. This achieves an additional 9%┴№╔WPM compression of the leaf level, leaving 122 chunks that can be indexed at the┴№ЪXLI half-chunk level using an 8-bit index. Note that this is not the same as┴№чXIF using chunks which are half the size, because it does not necessitate┴№▒Y/, raising the size of the trie's first level.┴сYН№хYOL In contrast to binary search or the `ucd-trie` crate, performing lookups in┴№╡ZIF this data structure is straight-line code with no need for branching.┴№Л[?$https://docs.rs/unicode-ident/1.0.26┴lТ[ √O╖_ ▀p ═Г ЇЦ ╥й"║╛  е╙ Сш  А√  OOOЇ╪\_l№\ppГГЦЦйй╛╛╙╙шш√√№┤^%№ї]>; Whether the character has the Unicode property XID\_Start.┴d╗^B  ch┴╚^№Зb(№┼aA> Whether the character has the Unicode property XID\_Continue.┴|ОbB  ╪xЮbT├\у skip┴l┤\Д▓\4╟\ "N4ЙР■╞▌ РБNAU°╜н┬▌БB NR▌БB  ▌`bdУ▌╬<╩Р┤{ ╥■·Я─Бj/▌■B ╬I▌■B  ▌`bd╒▌№х'|ян№Ь"\нф№ф%tїфь░,┴╘№Е"TЦ╘№о%l┐╘№█/Tэ°є NAU°╜н┬ї╘ А !%+/26:>оCGKккккккккккккыкккккккккккккккккккккккккккккккккккккккккккORVZкккккккккккккккккккккPъ^bdhlp0tvz~ВЖКОТЦЪЮклвд█ккйккккккAк░╫к│╟╖кккккккккккккк╗к)─&╜└╔╦▒╥╓▌схщкккккккккккккккккккккккккккккккккккккккккккккккккккккккккккккккккккккккккккккккккккэккккккккяккккккккккёккккккккккккккєк╪кккккккккккккккккккккккккїккккккккккккккккккккккў                                                                        АЕ╘№Х3lз°є NAU°╜н┬ї╘И #(-/48<@оEIMккккккккккккыкккккккккккккккккккккккккккккккккккккккккккOTX\кккккккккккккккккккккPъ`bfjnr0tx|АДИМРФШЬаклвд█ккнккккккAк░╨к╡з╣кккккккккккккк╗к)─&╜├ж┴╛╞╔═╧▒╘┌▀учщекккккккккккккккккккккккккккккккккккккккккккккккккккккккккккккккккккккккккккккккккккэккккккккяккккккккккёккккккккккккккєк╪кккккккккккккккккккккккккїккккккккккккккккккккккў                                                                                                                                                                                                                                       И$┬╘№гw+$╡wЧє ·Я─Бj/ї╘ └>                                                                                                    а                                                                                            ├ P▀╕@╫  √         ┐                         ├ P              ▀╕└╫  √         ┐                 №                    ■           З                √№                    ■        ■    ┐╢   З     └■           /`└Ь¤   р          ?№   0          ├            яЯ ¤ Я       ч                  ?$  ?       ■     Ё      # ■ сЯ∙  ¤┼#@░     ?       ■А         √               ╧ ■ яЯ∙  ¤┼єЯyА░╧ PрЗ∙  ¤m^р┐√  ¤э#рЯ∙  ¤э#░ш╟=╓╟ юЗ∙  ¤m╙З9^└ ?ю┐√  ¤эє┐;╧ ■юЯ∙  ¤эєЯ9°░╧ ь╟=╓╟ ├╟=Б└ р▀¤  ¤ #7с▀¤  ¤я#pЁ▀¤    '@pА№р №  √/ ▀¤  ¤ є▀=`7╧ я▀¤  ¤яє▀=`p╧  ▀¤     ▀}ЁА╧ №ю №  √/Д_ └  ■     ╓ў  п  _Ё ■   ■        ╓ў  п  ?_ є а┬ ■   ■ ▀  ■   @     А?■         р■          ўр     ■                р■ >■         ц■           р     ■                                      ?                                                      °              А   ?          А №            ∙         ?■           Ё┐              А №            ∙         ?■ ╗ў        №     №h№  ?     Ё     А▀ |                   ?    ш     ?               А         ў  ─      b>8 ~~~     ў 3                     ?   №        8  |~~~     ў 3               7              ?             °а ¤_█             °                  ?             °р ¤_█             °                ?Ё                          ?        №       Кк               ■  ■  └      ?   №№№    рКк                ■  З■  р          №№№ я    ╖ ? ?                      я    ╖ ? ?                                   р       ?   ?     >             р           ?     >                   ?                    ў ў╖ √ √                         ?                     ў ў╖ √ √      ?¤    ┐С  ?       7  ?             └я■  ?       ■        ?  ?    oЁя■  ?З       ■        ?  ?                             №  ?А  ?                               ?╛  ?     №■    А  ?           №°■      А      ?    °      &°        °   Р    G°             └ ?А                 ▀ Ё    O        ▐   √  А╜ ┐      рЯ∙  ¤э#р K    ┐   √    └╜ ┐         яЯ∙  ¤э√Я9Бр╧ K    ┐ еў      АА      ░               ├        ┐       ? ?                                    ч               АЄo   А №                     АЄo   ┐∙  №     №°    Ё                          А         #                ¤   №   √    @┐¤         ¤      №   №  ■√    ┤  ┐¤   √         Ї ¤       ¤    ╟               р                                                                            ~                                                                                                               ?                                                      ??    ?? к   ?      ▀_▄╧ ▄                        р                            ?      °  р                          ?       °  р             ∙           °  |           ∙           З       А                             А                                                 Ару°ч<                     ?                  cяoШ               ▀        ▀d▐ ыя       ┐ч▀▀   {_№¤                                            ¤  ў   ў  ▀   ▀        ¤   ¤  ў                       ¤  ў   ў  ▀   ▀        ¤   ¤  ў╧            °      °■               ?     А?@  ∙█       ?А      ? C   ?        ?                            ?             ╖?└o      ?└o                                                                   я   Ц■ў ДъЦкЦўў^ √ ю√                                                                                                                                                                                                         ?                                                     ?                       ~                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            └>$╚w╘K unicode-xid┴)https://github.com/unicode-rs/unicode-xid┴ ucd-generate┴!https://crates.io/crates/croaring┴]https://img.shields.io/badge/crates.io-fc8d62?style=for-the-badge&labelColor=555555&logo=rust┴(https://github.com/dtolnay/unicode-ident┴ crates-io┴&https://crates.io/crates/unicode-ident┴^https://img.shields.io/badge/docs.rs-66c2a5?style=for-the-badge&labelColor=555555&logo=docs.rs┴rust-lang/rust#33098┴,https://github.com/rust-lang/rust/pull/33098┴finite state transducer┴%https://www.unicode.org/reports/tr31/┴├█╙█croaring┴github┴Ъ▌╟▌Т▄╕▄+https://github.com/RoaringBitmap/roaring-rs┴у▐№▐Unicode Standard Annex #31┴╔▀├█ https://roaringbitmap.org/about/┴ ▀Т▄МрЪ▌roaring┴пру▐https://docs.rs/unicode-ident┴ыр╔▀Roaring Bitmap┴Цс ▀Мр*https://github.com/BurntSushi/ucd-generate┴╙спр\https://img.shields.io/badge/github-8da0cb?style=for-the-badge&labelColor=555555&logo=github┴docs-rs┴ысыр!https://github.com/BurntSushi/fst┴ЩтЦсБ▄╛т╙сА▐∙т╒▌┌уысн▀ЄуЩт╙█Б▄╛т╕▄А▐╟▌╒▌┌у∙т№▐н▀Єу'к6ё╞ тцА█┤zшXoоg0kЬ│щ╠Yк°\[╧ G|~*Э╚ЄjJn&и° яfї$Ё`Фjи'}╥В ┐╣O'P Ъ√ &Р¤'─Wxi╫}qLйZ╠Б░ф08ЮБq ХР╢з█+е╡У╖жп}═ОЧ ~├ЖС╕°╗Т╠VT5hКrFя@╔кOЩц'хЭ8P·Я└[шДб_Ё,GЙт< (Ф%·ё"~░a╠┐╢╥╘┼уx═┐I╣^<#D B+ШсКnсўC>╩Ж~ ▄▄ТYHQЮ╟MиUёЮZм╚╢МO Ц┐═Lе╤v7-Аx═ъk╕єиЇ&С#┼ф╛v╚╠QЗеС}▓eqл■OПМI^Dц9у :єг;з;о;▒;╖;╜;├;╔;╧;╒;█;у;e<ч<=░=┼=W>n>В>Ч>л>└>╒>ъ>оAJр: =]=> ' '    ▀:C<╚<===▓=╦=&>Y>r>Ж>Ы>п>─>┘>?╞A2J Ъ;а;г;к;о;┤;║;└;╞;╠;╥;╪;▐;`<у<=f=Я=м=┬= >F>S>i>}>Т>з>╗>╨>х>ЪAйAJJ▓mЭ;з;▒;╖;╜;├;╔;╧;╒;█;+<░< <=i=б=░=╟=>H>W>n>В>Ч>л>└>╒>ъ>оAJP<╒<1=Т=й=╝=с=9>P>c>y>О>г>╖>╠>с> ?дA╬AJ:J╝mJ<╧<=К=г=┤=╬=1>J>[>s>И>Э>▒>╞>█>?ЮA╚A J4J╢mR<╫<C=Ш=└=ъ=?>g>{>Р>е>╣>╬>у> ?жA╨AJD<╔<^=В=>)>/<┤<k=>ю>▓AJл=R>L╠▌QН╔▐є5╦HPЦ==>Ifв╓ы+BMjж┌я/FV<█<J?BzJ▌:¤<=┼=S=·=E=ь=ИЛТЦЪЮвжко▓╢║╛╤чЇ !%,3I[p|Нб▓╢╩╬┘V=¤=┴mиAJ└m ┘wї╘╒wї╘∙W ї√nї∙nї"%▄ 'к6ё╞ тлX┴ЄЩWвД rustfmt::skip┴∙<['к6ё╞ т#л9v═Х┌e{щzэz{3{■z#{U{ЁODHT $@╖▐┐╢╥╘┼уx═C>╩Ж~ ▄▄ТYHQЮ╟rFя@╔кOB+ШсКnсўqLйZ╠Б░ф жп}═ОЧ м╚╢МO Ц┐═Lе╤v7-v╚╠QЗеС!т< (Ф%·ёMиUёЮZ·Я└[╠Yк°\[╧ ПМI^Dц9#иЇ&С#┼ф╛ яfї$Ё`╢з█+е╡У╖ ЄjJn&и° Фjи'}╥В ┐╣O'P Ъ√ &Р¤ Щц'хЭ8Poоg0kЬ│щАx═ъk╕єшДб_Ё,GЙ'к6ё╞ т08ЮБq ХР "~░a╠цА█┤zшX╠VT5hК}▓eqл■O"'─Wxi╫} ~├ЖС╕°╗Т┐I╣^<#D G|~*Э╚     f c'{ r _ H x-   -       _[A~(ty   DqHf,' >I   d      f c'{ r _]/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/unicode-ident-1.0.26/src/tables.rs┴O/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/unicode-ident-1.0.26┴]/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/unicode-ident-1.0.26/src/tables.rs┴ ч╢║щ о|╛╒5│sZч№ч№бQ@3+,6HK$0),;ddddddddddddddddddddddddddddddd^?dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd 8ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddВ╤gс√╡ э┼ЗQFE^q>Z/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/unicode-ident-1.0.26/src/lib.rs┴O/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/unicode-ident-1.0.26┴Z/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/unicode-ident-1.0.26/src/lib.rs┴ !ЄЖx║U№Иь╕ЕН└¤жeжeЬзkon OA2OMQ !K%JD>Q>KHN?A=BMKHBGO; %PC #7&& $ MMMJLNMM;OGO2N#OPMNQLOQ4LAI **&*%&QLONPJQ3OPGON,PQ'QMQONP MKN#-?NNLO'IE7QQJJJPQNQ#4PP(QFFPP9 5 бд QNEOP6PMLJ;RPFQMJ0PJ @   (d?(5 &/GQB+8 &5GQ╞бРVМ┴╣╪жeVТsГj╘o┤cы~▄Вx86_64-unknown-linux-gnu┴2Р"ъєуЯ╦G╫)▒ныэн unicode_ident┴-76fddff3086055f2┴'к6ё╞ тЮКRжф$а#i0$?#$$F#HF$$H$HHB#,F.$2H2,$$HH-#F**$*H*$H┼╨rust-end-file.note.gnu.property.shstrtab.strtab.symtab.rmeta@ .А`фЖ&HЗ`ЗaЗ5lib.rmeta-link/ 0 0 0 644 664 ` ELF>@@GNU└Junicode_ident-76fddff3086055f2.unicode_ident.e20bc6f136aa2712-cgu.0.rcgu.o┴rust-end-file.note.gnu.property.rmeta-link.shstrtab.strtab.symtab@ А`Z2└*╪ ┘:/0 0 0 0 644 19856 ` ELF>PB@@-PHЙ$HЙЄHЙ■HЛ<$ Y├PHЙ$HЙЄHЙ■HЛ<$ Y├HГь(Й|$ HН|$ шиuKЛD$ Й┬H┴ъH┴ъHН=╛  HЙ╟HН5HГ╞ ╢╣@HўсHЙD$Р└pIыЛD$ Й┴HЙL$1└HБщАВзщ▌HЛL$H╤щЛD$ Й┬H┴ъHГт?HЙ╚H╨HЙD$H9╚rdы HН= HЛT$HН=╛ HН  КИD$Л|$ ГчГчЙ<$HН5шЛ $КD$╥ш$<Х└$ИD$'ы HН= КD$'$HГ─(├HЛD$И┬И╤Ас 1└H╛■  ■  HнЁHЛL$Ў┬@║■  HE┬г╚Т└$ИD$'ы║HН= HГь8Й|$0HН|$0шиuKЛD$0Й┬H┴ъH┴ъHН=╛ HЙ╟HН5HГ╞ ╢╣@HўсHЙD$(Р└pIыЛD$0Й┴HЙL$ 1└HБщАВйщЁHЛL$(H╤щЛD$0Й┬H┴ъHГт?HЙ╚H╨HЙD$H9╚rfы HН= HЛT$HН=╛ HН  КИD$Л|$0ГчГчЙ|$HН5шЛL$КD$╥ш$<Х└$ИD$7ы HН= КD$7$HГ─8├HЛD$ @И╞@ИёАс ИL$H║■  З■  H╕ Hн╨КL$H╙ъHЛL$ @Ў╞@HE┬г╚Т└$ИD$7ыйHН= HЙt$шHЙ|$ЁHЛT$Ё╕1╔HГ·HD┴Hйt HЛD$ЁHЙD$°ы HЛD$шHЙD$°HЛD$°├Г?Ц└$├PHЙ4$Г rHЛ $HН=╛o1╥ X├PHЙ$H9ўrHЛ $HН=╛н1╥ X├HГь(HЙ|$HЙt$HЙT$HЙL$ ыHЛT$ HЛt$HЛ|$шHЛL$HЛD$H╚HГ─(├HЙ|$шHЙt$ЁH9╫r H╟D$°ыHЛL$шHЛD$ЁH╚HЙD$°HЛD$°├/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/unicode-ident-1.0.26/src/lib.rs/rustc/48a229ceaefd4985c50990b14116b6d856af0985/library/core/src/num/mod.rsZ ZZZZZ!KG !%+/26:>оCGKккккккккккккыкккккккккккккккккккккккккккккккккккккккккккORVZкккккккккккккккккккккPъ^bdhlp0tvz~ВЖКОТЦЪЮклвд█ккйккккккAк░╫к│╟╖кккккккккккккк╗к)─&╜└╔╦▒╥╓▌схщкккккккккккккккккккккккккккккккккккккккккккккккккккккккккккккккккккккккккккккккккккэккккккккяккккккккккёккккккккккккккєк╪кккккккккккккккккккккккккїккккккккккккккккккккккў #(-/48<@оEIMккккккккккккыкккккккккккккккккккккккккккккккккккккккккккOTX\кккккккккккккккккккккPъ`bfjnr0tx|АДИМРФШЬаклвд█ккнккккккAк░╨к╡з╣кккккккккккккк╗к)─&╜├ж┴╛╞╔═╧▒╘┌▀учщекккккккккккккккккккккккккккккккккккккккккккккккккккккккккккккккккккккккккккккккккккэккккккккяккккккккккёккккккккккккккєк╪кккккккккккккккккккккккккїккккккккккккккккккккккў                                                                                                    а                                                                                            ├ P▀╕@╫  √         ┐                         ├ P              ▀╕└╫  √         ┐                 №                    ■           З                √№                    ■        ■    ┐╢   З     └■           /`└Ь¤   р          ?№   0          ├            яЯ ¤ Я       ч                  ?$  ?       ■     Ё      # ■ сЯ∙  ¤┼#@░     ?       ■А         √               ╧ ■ яЯ∙  ¤┼єЯyА░╧ PрЗ∙  ¤m^р┐√  ¤э#рЯ∙  ¤э#░ш╟=╓╟ юЗ∙  ¤m╙З9^└ ?ю┐√  ¤эє┐;╧ ■юЯ∙  ¤эєЯ9°░╧ ь╟=╓╟ ├╟=Б└ р▀¤  ¤ #7с▀¤  ¤я#pЁ▀¤    '@pА№р №  √/ ▀¤  ¤ є▀=`7╧ я▀¤  ¤яє▀=`p╧  ▀¤     ▀}ЁА╧ №ю №  √/Д_ └  ■     ╓ў  п  _Ё ■   ■        ╓ў  п  ?_ є а┬ ■   ■ ▀  ■   @     А?■         р■          ўр     ■                р■ >■         ц■           р     ■                                      ?                                                      °              А   ?          А №            ∙         ?■           Ё┐              А №            ∙         ?■ ╗ў        №     №h№  ?     Ё     А▀ |                   ?    ш     ?               А         ў  ─      b>8 ~~~     ў 3                     ?   №        8  |~~~     ў 3               7              ?             °а ¤_█             °                  ?             °р ¤_█             °                ?Ё                          ?        №       Кк               ■  ■  └      ?   №№№    рКк                ■  З■  р          №№№ я    ╖ ? ?                      я    ╖ ? ?                                   р       ?   ?     >             р           ?     >                   ?                    ў ў╖ √ √                         ?                     ў ў╖ √ √      ?¤    ┐С  ?       7  ?             └я■  ?       ■        ?  ?    oЁя■  ?З       ■        ?  ?                             №  ?А  ?                               ?╛  ?     №■    А  ?           №°■      А      ?    °      &°        °   Р    G°             └ ?А                 ▀ Ё    O        ▐   √  А╜ ┐      рЯ∙  ¤э#р K    ┐   √    └╜ ┐         яЯ∙  ¤э√Я9Бр╧ K    ┐ еў      АА      ░               ├        ┐       ? ?                                    ч               АЄo   А №                     АЄo   ┐∙  №     №°    Ё                          А         #                ¤   №   √    @┐¤         ¤      №   №  ■√    ┤  ┐¤   √         Ї ¤       ¤    ╟               р                                                                            ~                                                                                                               ?                                                      ??    ?? к   ?      ▀_▄╧ ▄                        р                            ?      °  р                          ?       °  р             ∙           °  |           ∙           З       А                             А                                                 Ару°ч<                     ?                  cяoШ               ▀        ▀d▐ ыя       ┐ч▀▀   {_№¤                                            ¤  ў   ў  ▀   ▀        ¤   ¤  ў                       ¤  ў   ў  ▀   ▀        ¤   ¤  ў╧            °      °■               ?     А?@  ∙█       ?А      ? C   ?        ?                            ?             ╖?└o      ?└o                                                                   я   Ц■ў ДъЦкЦўў^ √ ю√                                                                                                                                                                                                         ?                                                     ?                       unsafe precondition(s) violated: u8::unchecked_shr cannot overflow This indicates a bug in the program. This Undefined Behavior check is optional, and cannot be relied on for safety.unsafe precondition(s) violated: slice::get_unchecked requires that the index is within the slice This indicates a bug in the program. This Undefined Behavior check is optional, and cannot be relied on for safety.rustc version 1.98.1 (48a229cea 2026-09-01)zRx РAU4AULjD0A0h}D@A@ДBШ м$Ab─$Ab▄@D0{Ї2юё   %#d%@ $ Ь$   u$!#$%&'&[@╘82∙jб BЫN╦ }x №        "№        №       '№       2 !№       <№       F $№       л№       ▒ %№       ╜№       ╔№       ╧ №       щ№       ю №        №        &№       `№       f '№        №       '№       2 !№       <№       F $№       л№       ▒ %№       ╜№       ╔№       ╧ №       ъ№       я №       №        &№       s№       y '№       №        )№       №        )№       *№       [ 8Pl И Ь ░ ╚р°_RNvNtNtCsgxBkk5gSRhY_4core9panicking11panic_const24panic_const_mul_overflow_RNvNtNtCsgxBkk5gSRhY_4core9panicking11panic_const24panic_const_shl_overflow_RNvNtNtCsgxBkk5gSRhY_4core9panicking11panic_const24panic_const_add_overflow.text.rela.text._RNvCsjpeJfgJkMRa_13unicode_ident12is_xid_start.comment.text._RNvXs0_NtNtCsgxBkk5gSRhY_4core5slice5indexjINtB5_10SliceIndexShE3getCsjpeJfgJkMRa_13unicode_ident.text._RNvMNtCsgxBkk5gSRhY_4core6optionINtB2_6OptionRhE9unwrap_orCsjpeJfgJkMRa_13unicode_ident.rela.text._RNvNvMs4_NtCsgxBkk5gSRhY_4core3numh13unchecked_shr18precondition_checkCsjpeJfgJkMRa_13unicode_ident.rela.text._RNvNvXs0_NtNtCsgxBkk5gSRhY_4core5slice5indexjINtB7_10SliceIndexSpE13get_unchecked18precondition_checkCsjpeJfgJkMRa_13unicode_ident.text._RNvMNtNtCsgxBkk5gSRhY_4core4char7methodsc8is_asciiCsjpeJfgJkMRa_13unicode_ident.rela.text._RNvXs0_NtNtCsgxBkk5gSRhY_4core5slice5indexjINtB5_10SliceIndexShE13get_uncheckedCsjpeJfgJkMRa_13unicode_ident.rela.text._RINvMNtCsgxBkk5gSRhY_4core5sliceSh3getjECsjpeJfgJkMRa_13unicode_ident.rela.text._RINvMNtCsgxBkk5gSRhY_4core5sliceSh13get_uncheckedjECsjpeJfgJkMRa_13unicode_ident_RNvNtCsgxBkk5gSRhY_4core9panicking18panic_nounwind_fmt.note.GNU-stack.rela.text._RNvCsjpeJfgJkMRa_13unicode_ident15is_xid_continue.rela.eh_frame.strtab.symtab.rodata._RNvNtCsjpeJfgJkMRa_13unicode_ident6tables10TRIE_START.rodata._RNvNtCsjpeJfgJkMRa_13unicode_ident6tables4LEAF.rodata._RNvNtCsjpeJfgJkMRa_13unicode_ident6tables13TRIE_CONTINUE.rodata..Lanon.9d0fb112952b64a69e7c7241084befd6.9.rela.data.rel.ro..Lanon.9d0fb112952b64a69e7c7241084befd6.8.rela.data.rel.ro..Lanon.9d0fb112952b64a69e7c7241084befd6.6.rela.data.rel.ro..Lanon.9d0fb112952b64a69e7c7241084befd6.5.rela.data.rel.ro..Lanon.9d0fb112952b64a69e7c7241084befd6.4.rela.data.rel.ro..Lanon.9d0fb112952b64a69e7c7241084befd6.3.rela.data.rel.ro..Lanon.9d0fb112952b64a69e7c7241084befd6.2.rela.data.rel.ro..Lanon.9d0fb112952b64a69e7c7241084befd6.1.rodata.str1.1.rodata..Lanon.9d0fb112952b64a69e7c7241084befd6.10unicode_ident.e20bc6f136aa2712-cgu.0 8:ш@ @@°4,╬`╔@5,єАjю@(5А,┼Ё}└@и6А, ЫpB∙└  ╨$·@(80, o$j@X80,U0@P@И8,2p2м2взuPp@а8,9h4@╕8,¤А°@╨8,┴Ш╝@ш8,Е░А@9,I╚D@9, р@09,!°Ф°\@@╓@.╖╗ў.╓)0═/-░·/p0■@H9Ё,*1Ё