📄 libunicode_ident-26c381d35a46f9b0.rlib
/home/palash/git/iron_learn/target/debug/deps/libunicode_ident-26c381d35a46f9b0.rlib
Language: rlib • Lines: 353
!<arch>
/               0           0     0     0       576       `
��������������_ZN13unicode_ident12is_xid_start17h957d19cbd65cf80cE_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$3get17h4d59a045c3d90135E_ZN4core6option15Option$LT$T$GT$9unwrap_or17hc518149e45503467E_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$13get_unchecked17h762c2e6c7abda319E_ZN13unicode_ident15is_xid_continue17ha891d783998f321eE_ZN75_$LT$usize$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$13get_unchecked17h1f62a28310705a98E_ZN75_$LT$usize$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$3get17h5de45312b55c4f19E//                                              76        `
unicode_ident-26c381d35a46f9b0.unicode_ident.a6b40a3e03fc13d1-cgu.0.rcgu.o/
lib.rmeta/      0           0     0     644     34376     `
ELF>Ȅ@@GNU�rust
��#rustc 1.92.0 (ded5c06cf 2025-12-08)��١�	�T�6a��D�
-5080178c80bf7a93��**�٭T��HО�9�-3e2e950d4bac10b5���is_xid_start�is_xid_continue�tables��F�Align8�
��Align64�
��ASCII_START�ASCII_CONTINUE�CHUNK�
TRIE_START�
TRIE_CONTINUE�LEAF� $�
��
$�"true�,�
��$�"false��
�+�6=128��
��+�6=128��

@���
#�,�
$64��
��+�6=402�$�
�+�6=1793�$�w
��!+�6=7584�ܨ
�)���-L�\��	a�	ho}
�	���	��	����
�	&�����
�Y�	^�	elz
�	�����	��
��t�\�\�\�,�\�$�\ �l�\�T�\	��b��� [![github]](https://github.com/dtolnay/unicode-ident)&ensp;[![crates-io]](https://crates.io/crates/unicode-ident)&ensp;[![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� <br>�����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���MJ ASCII and non-ASCII codepoints with better performance, 2&ndash;10&times;��� 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.1 K | 0.96 ns | 0.95 ns | 1.09 ns | 1.55 ns |���KH | **`unicode-xid`** | 11.5 K | 1.88 ns | 2.14 ns | 3.48 ns | 15.63 ns |���GD | **`ucd-trie`** | 10.2 K | 1.29 ns | 1.28 ns | 1.36 ns | 2.15 ns |���A> | **`fst`** | 139 K | 55.1 ns | 54.9 ns | 53.2 ns | 28.5 ns |���FC | **`roaring`** | 66.1 K | 2.78 ns | 3.09 ns | 3.37 ns | 4.70 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 &ndash; 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.�����NK Overall, the crate ends up being about 10&times; 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���6NK 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��8���8LI 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���<KH not specialize for the fact that only 21 of the 32 bits in a `char` are���<NK meaningful. There are some dense arrays in the structure with large ranges���=&# that could never possibly be used.��=���=
 #### roaring��=���=HE This crate is a pure-Rust implementation of [Roaring Bitmap], a data���>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&times; 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���GOL 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.���IEB - 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 <table>���L41 <tr><th>XID_Start</th><th>XID_Continue</th></tr>�D�L <tr>���L�� <td><img alt="XID_Start bitmap" width="256" src="https://user-images.githubusercontent.com/1940490/168647353-c6eeb922-afec-49b2-9ef5-c03e9d1e0760.png"></td>���M�� <td><img alt="XID_Continue bitmap" width="256" src="https://user-images.githubusercontent.com/1940490/168647367-f447cca7-2362-4d7d-8cd7-d21c011d329b.png"></td>�L�O </tr>�d�O	 </table>��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�X�Q���QNK This crate stores one 512-bit "row" of the above bitmaps in the leaf level���QNK of a trie, and a single additional level to index into the leafs. It turns���RPM out there are 124 unique 512-bit chunks across the two bitmaps so 7 bits are��S sufficient to index them.��S���SOL The chunk size of 512 bits is selected as the size that minimizes the total���TLI 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���UIF would increase redundancy in the leaf bitmaps. 512 bit chunks are the���U:7 optimum for total size of the index plus leaf bitmaps.��V���VMJ In fact since there are only 124 unique chunks, we can use an 8-bit index���VGD with a spare bit to index at the half-chunk level. This achieves an���WNK additional 8.5% compression by eliminating redundancies between the second���XNK half of any chunk and the first half of any other chunk. Note that this is���XMJ not the same as using chunks which are half the size, because it does not���Y;8 necessitate 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.���[�[�[8�l�[�[7$https://docs.rs/unicode-ident/1.0.12���[&��[?
��������# �8�M	�����\T����##88MM��]%d�]

ch��]��_(|�_
�x�_T�\�<�\�$�\l�\��\4�\
 l��l��F4�����	��	�-L�\��	�	FR�	�	
�	^`d��	<���z�����
�Y�	�I�	�
�	^`d��	��3\������
�Y����N���6t��}������
,�
���
/T�
���-L�\����#'-148<@EIMQTX\	`dfjnr(vx|���������+������2��C�������ּ���R���������������������������������������������������������������K���3l����-L�\���
!%*/16:>BGKOQVZ^	bdhlpt(vz~���������+������2��C�����������ؼ����R����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������w+$�w�����
�Y���;����������������������������������??����??�����?�������_���� �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������P߸@�����������������������������������������P��������������߸����������������������������������������������������������������������������������������������������������������������������������������������/`�����������������?����0������������������������������������������������������?$��?�������~������������#���������#@������?�������~������������������������������������y����P������m^������#�������#���=��������mӇ9^��?�������;����������9�����=�����=����������#'�������#`�������'@p��������/���������=`'�����������=``�����������}�����������/�_��������������� _����������������������?_�������������������@������?<b���@����� ����������������������������������������������?��������������������������?����� ������������������������������������������������������������������==�����=����==��������=��������������������??���������==�����=����==��������=����������������������??�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������?�������
�����������0�������������������������?������?����������������������������������?����������?�����������������������������������?������������������������������������������������������?��������o��������������������������������������?������������������������������������������������'�����������������������/?P����C�����0��������/?P����C���������������������������������x����� �������������������������������������������� �����������������>�������������������������������������������������>��������������������������������������������������������������������?���������������������������������������������������������������������������?��������������������������������������������������������������������������������������������������������h���?��������������|�������������������?����������?�����������������������������������b>8�~~~����������������������������?������������8��|~~~����������������������7��������������?�����������������_���������������������������������?�����������������_�������������������������������?���������������������������?����������������������������������������������?����������������������������������������������������������?�?�����������������������������?�?��������������������� ���������������������?���?�����>�������������������������?�����>�������������������?�����������������������������������������������?�����������������������������?���������?�������7��?���������������?����������������?��?����o�����?�����������������?��?�������������������������������������������������������������������?����������������������?�����������&������������������G����������������?�������������������������O��������������������������������#�����������������������������9��������������������������������������������������?�?����������������������������������������������������o����������
������������������o������������������������� ��������������������������������������#����������o��������������@��������������������������������������������������������������������������������������������������~�����?����������?����<����������������������������������?������������������������������������?��������������������������������������������������������������������������������������?��������������������������������o����������������������������������c��������������������������������������������������d������������������{_�������������������������������������������?������������������������������������������������������?����������������������������������������������������� ����������?������?@�����������?�������?�C���?������������������������������������������������������������������������������������������������
�ꖪ���^���������������������������������������������������������������������������������������������������?������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������?���?x���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������;��K https://roaringbitmap.org/about/�croaring�!https://crates.io/crates/croaring�github�(https://github.com/dtolnay/unicode-ident�roaring�+https://github.com/RoaringBitmap/roaring-rs�rust-lang/rust#33098�https://docs.rs/unicode-ident�Unicode Standard Annex #31�%https://www.unicode.org/reports/tr31/�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�����ucd-generate�����^https://img.shields.io/badge/docs.rs-66c2a5?style=for-the-badge&labelColor=555555&logo=docs.rs���&https://crates.io/crates/unicode-ident�����finite state transducer�����)https://github.com/unicode-rs/unicode-xid�����]https://img.shields.io/badge/crates.io-fc8d62?style=for-the-badge&labelColor=555555&logo=rust���	crates-io�������,https://github.com/rust-lang/rust/pull/33098�����unicode-xid�������������������������������������������������������>
���i�$NA�JWNxr�NBz�O��^�b��8@����N9'���I[o��,.���n��V�j��,��sD���l��r��N������e"���Ar��yU�AsOm�E���@Fs@�a/P�6�1�n��r��	g�q%�!�f
��S��d ?��ߊ@b�0�
���`�?Kʷ�
��;տ��X�-�d��3���K"ˍ\>��~�8�R�P�O�\}�J�B��Wb>����_�<Lf��6g��S�F�:��eρ�/����];d�<R<�<�<�<�<w=�=>3>)?�?�?@B�JZ;�<%=�=

%%
Y;/<g<�<�<�<�<E=y=�=�=>H>>?�?@UB�J_�;�;�;�;�;�;<	<<<M<�<�<�<�</=f=s=�=�=>>.>?$?�?�?�?-B;B�J�J�l�;�;�;<<<<<R<�<�<�<�<2=h=w=�=�=
>>3>)?�?�?@B�J=<u<�<�<�<Y=p=�=�=�=>(>P>?F?�?�?@6B]B�J�J�l7<o<�<�<�<Q=j={=�=�=> >J>?@?�?�?@0BWB�J�J�l?<w<�<�<=_=�=�=>,>R>!?H?�?�?@8B_B�J�J�l0<h<�<G=�=�=0<h<&=H=�=�=<V<4=�=7>-?�?DB�Jr=>D����L��I�����K���H��C]=>�@��@��9�D��D��=C<{<�>J?U@�BKW;�<�<�==�==�=����������������$(/6HLaeq�����=�=�l#?�?:B�J�l
�o��o��P�f�f"%���>
����Z�`*�
rustfmt::skip��<[��>
����.��	%z�y�y�y�y�y�yz�ODHT "@���X�-�d����/����!�F�:��e� z�O��^��@Fs@�g�q%�!�fˍ\>��~b�0�
����i�$NA�J�r��N

��S��dr��yU�A
`�?Kʷ�I[o��,.3���K"B��Wb>����_�<LfsOm�E�� ?��ߊ@��N9'��"���A�j��,��sD���l�	���n��V�8�R�P�WNxr�NBn��r��	a/P�6�1�b��8@��������e�
��;տ�O�\}�J���>
����6g��S�tx��gXZ3?g���%����'2[[3��������l ��~���I+��!��X�F�2t�BS�tx��gXZ3?g���%�d/home/palash/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/unicode-ident-1.0.12/src/tables.rs� ���F0����/)���-����QC3+,@ddddCdddd$;ddddddddddddddddddddddddd?dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
8ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddw����L����7耣a/home/palash/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/unicode-ident-1.0.12/src/lib.rs� �
��J����mO"���b��kon	OA2OMN	!K%JD>Q>KHN?A=BMLHBGO;	%PC#7&&$	MMMJLNMM;OGO2O#OPMNQLOQ4LAI**&*%&QLONPJQ3OPGON,PQ'QMQONP
MKN#-?NNLO'IE7QQJJJPQNQ#4PP(QFFPP95	��

QNEOOQPMLJ;NHOON<PJ@<Z(+JGQ+.MGQ����60Ÿ������i���}ـx86_64-unknown-linux-gnu�Q�#OV��3���Xw2
unicode_ident�-26c381d35a46f9b0���>
��ڄR��"�!
c'"<!"B"!DB""D"DD?!*B,"*D*"D*""DD$!B(("(D("D��rust-end-file.note.gnu.property.shstrtab.strtab.symtab.rmeta@ .�`�&x�����5/0              0           0     0     644     20528     `
ELF>0D@@0H��(�|$ H�|$ ��uG�D$ ��H��H��H�=���H��H�5���@H��H�D$��pD��D$ H�D$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�L$H��$�D$'��H�|$��H��H��(�|$ H�|$ ��uG�D$ ��H��H��H�=��H��H�5���@H��H�D$��pD��D$ H�D$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�L$H��$�D$'��H�|$��H��H��HH�4$��rdH�$H�H�D$8H�D$@�H�D$8H�D$H�D$H�
H�H�L$(H�D$0�H�D$H�D$ H�|$1��H��H��?��$�PH�$H��H��H�<$�Y�PH�$H��H��H�<$�Y�H�t$�H�|$�H�T$�1�H��HD�H�tH�D$�H�D$��
H�D$�H�D$�H�D$��H��(H�|$H�t$H�T$H�L$ �H�T$ H�t$H�|$�H�L$H�D$H�H��(�H��HH�$H9�rdH�$H�H�D$8H�D$@�H�D$8H�D$H�D$H�
H�H�L$(H�D$0�H�D$H�D$ H�|$1��H��H�H�|$�H�t$�H9�rH�D$��H�L$�H�D$�H�H�D$�H�D$��/home/palash/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/unicode-ident-1.0.12/src/lib.rs/home/palash/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/num/mod.rsaaa�aaa#'-148<@EIMQTX\	`dfjnr(vx|���������+������2��C�������ּ���R�������
!%*/16:>BGKOQVZ^	bdhlpt(vz~���������+������2��C�����������ؼ����R������������������������������������������??����??�����?�������_���� �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������P߸@�����������������������������������������P��������������߸����������������������������������������������������������������������������������������������������������������������������������������������/`�����������������?����0������������������������������������������������������?$��?�������~������������#���������#@������?�������~������������������������������������y����P������m^������#�������#���=��������mӇ9^��?�������;����������9�����=�����=����������#'�������#`�������'@p��������/���������=`'�����������=``�����������}�����������/�_��������������� _����������������������?_�������������������@������?<b���@����� ����������������������������������������������?��������������������������?����� ������������������������������������������������������������������==�����=����==��������=��������������������??���������==�����=����==��������=����������������������??�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������?�������
�����������0�������������������������?������?����������������������������������?����������?�����������������������������������?������������������������������������������������������?��������o��������������������������������������?������������������������������������������������'�����������������������/?P����C�����0��������/?P����C���������������������������������x����� �������������������������������������������� �����������������>�������������������������������������������������>��������������������������������������������������������������������?���������������������������������������������������������������������������?��������������������������������������������������������������������������������������������������������h���?��������������|�������������������?����������?�����������������������������������b>8�~~~����������������������������?������������8��|~~~����������������������7��������������?�����������������_���������������������������������?�����������������_�������������������������������?���������������������������?����������������������������������������������?����������������������������������������������������������?�?�����������������������������?�?��������������������� ���������������������?���?�����>�������������������������?�����>�������������������?�����������������������������������������������?�����������������������������?���������?�������7��?���������������?����������������?��?����o�����?�����������������?��?�������������������������������������������������������������������?����������������������?�����������&������������������G����������������?�������������������������O��������������������������������#�����������������������������9��������������������������������������������������?�?����������������������������������������������������o����������
������������������o������������������������� ��������������������������������������#����������o��������������@��������������������������������������������������������������������������������������������������~�����?����������?����<����������������������������������?������������������������������������?��������������������������������������������������������������������������������������?��������������������������������o����������������������������������c��������������������������������������������������d������������������{_�������������������������������������������?������������������������������������������������������?����������������������������������������������������� ����������?������?@�����������?�������?�C���?������������������������������������������������������������������������������������������������
�ꖪ���^���������������������������������������������������������������������������������������������������?������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������?���?p�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.92.0 (ded5c06cf 2025-12-08)zRx�GD0A08GD0A0TvDPql	�AU�AU�B�@D0{�vDPq�2����		�!��/%��v�"�\#�$�-)	
1v!"#$%&(*�Gr�B��
�,JGb�@2��������'��������2	&��������<��������B	'������������������	(���������!������������������	)���������"�������������������������
	*��������!��������=��������C	+����������������'��������2	&��������<��������B	'������������������	(���������!������������������	)���������"�������������������������
	*��������! ��������=��������C	+��������#��������<
��������C
m	-��������	.��������	/��������*��������$��������<
��������C
m	-��������c <	Xp������.text.comment.note.GNU-stack.rela.eh_frame.strtab.symtab.rela.text._ZN13unicode_ident15is_xid_continue17ha891d783998f321eE.rela.text._ZN4core3num20_$LT$impl$u20$u8$GT$13unchecked_shr18precondition_check17h129c9be5c6b39b0eE.rela.text._ZN13unicode_ident12is_xid_start17h957d19cbd65cf80cE.rodata._ZN13unicode_ident6tables4LEAF17h910c776c11a876ebE_ZN4core9panicking18panic_nounwind_fmt17h12c54097655c17dbE.rodata._ZN13unicode_ident6tables14ASCII_CONTINUE17h332e539e5e94eb7bE.rodata._ZN13unicode_ident6tables11ASCII_START17h07f41c88cdafba0bE.rela.text._ZN75_$LT$usize$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$13get_unchecked18precondition_check17haddd2dc2efa4adb9E.text._ZN4core4char7methods22_$LT$impl$u20$char$GT$8is_ascii17h836ddae420ae6329E.text._ZN75_$LT$usize$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$3get17h5de45312b55c4f19E.rela.text._ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$13get_unchecked17h762c2e6c7abda319E.rela.text._ZN75_$LT$usize$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$13get_unchecked17h1f62a28310705a98E.rodata._ZN13unicode_ident6tables13TRIE_CONTINUE17h3b87c2a51d70c508E.text._ZN4core6option15Option$LT$T$GT$9unwrap_or17hc518149e45503467E_ZN4core9panicking11panic_const24panic_const_mul_overflow17h76dabb0b98d49336E_ZN4core9panicking18panic_bounds_check17h91fb439f93b2e326E.rela.text._ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$3get17h4d59a045c3d90135E.rodata._ZN13unicode_ident6tables10TRIE_START17he20ece55e88b3015E_ZN4core9panicking11panic_const24panic_const_add_overflow17h64bf461031f028e0E.rela.data.rel.ro..Lanon.e963529e6d1bdd956c4eba4b733e9e56.9.rela.data.rel.ro..Lanon.e963529e6d1bdd956c4eba4b733e9e56.7.rodata.cst16.rela.data.rel.ro..Lanon.e963529e6d1bdd956c4eba4b733e9e56.6.rela.data.rel.ro..Lanon.e963529e6d1bdd956c4eba4b733e9e56.5.rela.data.rel.ro..Lanon.e963529e6d1bdd956c4eba4b733e9e56.4.rela.data.rel.ro..Lanon.e963529e6d1bdd956c4eba4b733e9e56.3.rodata..Lanon.e963529e6d1bdd956c4eba4b733e9e56.12.rela.data.rel.ro..Lanon.e963529e6d1bdd956c4eba4b733e9e56.2.Lanon.e963529e6d1bdd956c4eba4b733e9e56.11.rodata.str1.1.rodata..Lanon.e963529e6d1bdd956c4eba4b733e9e56.10unicode_ident.a6b40a3e03fc13d1-cgu.0.Lanon.e963529e6d1bdd956c4eba4b733e9e56.0/@;�@�@G�@p5�/D�G?@7�/��v�@�8`/�`	~py@9/
l�g@9/��B�@�@09/+@v&@H9`/
�2X2�����@�9/���@�9/K�F@�9/
@�9/�(�@:/�@�@ :/�X���@T����@'@�@M.H@8:/&g.���.��.�0�/-�/%p�/ @P:�/-7�0�%