Files
boc/aamos-ledger-rust/target/debug/deps/libbase64-fa0f9dc35dac2996.rmeta
T

662 lines
215 KiB
Plaintext
Raw Normal View History

rust
þZ#rustc 1.96.0 (ac68faa20 2026-05-25)ÁÀ뉊]!ÜÛê(¹Þ—šên-5be7b69c3ff7b5b8ÁíàÄTËŸ ÜJîÄ)'ß\¥!-3d1337db07d0b3aeÁ¤²XctÔ'ÐÓ©z¨ɽÓ-a4945860e1c53b00Á¤°ð ¾ä-±($²ï=©Ã-7e98a21bfd32b0edÁòÖÀH•‘PIÓHã#£-055f30b747f859b6Árustc_std_workspace_coreÁ­Cçß^ò½èÝ$­Çÿ+Cé-c4878ee60b2242c9ÁŸÃï+Ñ]ŠqB<ÏïW#-8dd1dd90e70d0b6aÁ miniz_oxideÁ€š»J(P>àö÷g\K-1eb618da2918ab7fÁadler2ÁÆ;+Þ®5¥Ìýݰ¦ÛLˆ-f7919172d268e069Á hashbrownÁPäV9ÒÆèÜ"ÊÖVŽ\-0fc2184a5da6723aÁrustc_std_workspace_allocÁs&ØòØy¯s•bæ!‰ýŠ-97e4bf30be240674Á
std_detectÁhŠBîÙºÌI®ËÅš-9dbbf8346ba7ac8bÁrustc_demangleÁûë9´Ç×@Œ’ùXFº-f33013f239bf9f14Ácfg_ifÁÜLhž§Œaã¯>­-0a71c8f33a838301Á addr2lineÁ׎Þ!]8V$É@@-e618e6be60e87ba2ÁgimliÁ¸
°µ~Î1‹Ñt ðÁ€w-1f7768a68858f670ÁobjectÁ
áPÃ?­À¶¼QHJ¥-914cd6a4dbe590d1ÁmemchrÁ›º«8Ór­2Ù $¨ûib-cf21ca6f2bb15dcdÁë
‹ás«LÖ€îâƒ×ɯŒ-ee6f3747e38367f0Á rstest_reuseÁd¿L$´LtestsÁ,¢$“&ä,„
H
decoder_testsÁl‡$|ºä
encoder_testsÁlìýä,°K$¥KænaiveÁ,®æäúä,º5$¯5ä,…( $ú' µä,·)
$¬)
µcoverage_gamingÁ|ÖZ
$ËZ
ä,¨R$RÀ¤chunked_encoderÁSinkÁ ErrorÁ write_encoded_bytesÁChunkedEncoderÁ'eÁengineÁ¥ æ encodeÁ¤BUF_SIZEÁ
CHUNK_SIZEÁ 
StringSinkÁ'aÁstringÁ¤ æ "¤ "ê
"ö
displayÁ&&&&&&&&&
Base64DisplayÁ/¤ /¥ //bytesÁ/­
&5¤ 5¥ 55æ &:¤ :¥ ::×&
FormatterSinkÁ?¤ ?'bÁ?±&C¤ CªCê
Cö
readÁHdecoderÁIIIIIIIIIIï IBASE64_CHUNK_SIZEÁIDECODED_CHUNK_SIZEÁI
DecoderReaderÁV¥ VV£Vµ VinnerÁV
b64_bufferÁ\ V
b64_offsetÁVb64_lenÁVdecoded_chunk_bufferÁ` Vdecoded_offsetÁV decoded_lenÁVinput_consumed_lenÁVpadding_offsetÁIf¥ ff£f×Ik¥ kk£kæ o o kflush_decoded_bufÁkread_from_delegateÁk
decode_to_bufÁt t t k
into_innerÁIy¥ yy£yÚ} HwriteÁencoderÁï 
MAX_INPUT_LENÁMIN_ENCODE_CHUNK_SIZEÁ
EncoderWriterÁ¥ ¨µ delegateÁ extra_inputÁ extra_input_occupied_lenÁ»
 output_occupied_lenÁpanickedÁš¥ šš¨š×Ÿ¥ ŸŸ¨Ÿæ £ £ ŸfinishÁŸwrite_final_leftoversÁŸwrite_to_delegateÁ¨ Ÿwrite_all_encoded_outputÁŸÌ¬¥ ¬¬¨¬° ° ° ¬flushÁµ¥ µµ¨µãencoder_string_writerÁººººEncoderStringWriterÁ¾¥ ¾¾¤¾ºÃ¥ ÃäÃ
from_consumerÁÃ̺ɥ ÉÉæ ºÍ¥ ÍͤÍͱº StrConsumerÁÓconsumeÁºÕ¤ÕáºØáºUtf8SingleCodeUnitWriterÁÚ¤Ú str_consumerÁºÝ¤Ýݱµ ææææææææææ æ
æ ægeneral_purposeÁóóóóóóóóóódecodeÁýýýýýýýýýýGeneralPurposeEstimateÁƒ conservative_decoded_lenÁýŠæ ýŒdecoded_len_estimateÁý
decode_helperÁŽ ŽUNROLLED_INPUT_CHUNK_SIZEÁŽUNROLLED_OUTPUT_CHUNK_SIZEÁýcomplete_quads_lenÁ ýdecode_chunk_8Á ýdecode_chunk_4Á ó
decode_suffixÁ˜˜˜˜˜˜˜˜˜ì¡ ¡ ó ó
INVALID_VALUEÁó¦æ ó¨ConfigÁ¨DecodeEstimateÁ¨internal_encodeÁ«BLOCKS_PER_FAST_LOOPÁ« LOW_SIX_BITSÁ«LOW_SIX_BITS_U8Á¨internal_decoded_len_estimateÁ¨internal_decodeÁ¨configÁó encode_tableÁ² ² ó decode_tableÁµ µ óread_u64Áó¹æ ¹with_encode_paddingÁ¹with_decode_allow_trailing_bitsÁ¹with_decode_padding_modeÁó¾>óÀencode_paddingÁóSTANDARDÁóSTANDARD_NO_PADÁóURL_SAFEÁóURL_SAFE_NO_PADÁóPADÁóNO_PADÁæ æ
ææEngineÁËçËõËËé ËŽ!Ë¥!ËÛ Ò¥ÒÿÔË
encode_stringÁÖ¥ÖÿØË encode_sliceÁÚ¥ÚÿÜËÞ¥Þÿàà Ë
decode_vecÁã¥ãÿåå Ë decode_sliceÁè¥èÿêê Ëdecode_slice_uncheckedÁí¥íÿïï ï æçóÿ"æõõžæ÷æ alphabetÁúúúúúú
ALPHABET_SIZEÁúfrom_str_uncheckedÁ æ as_strÁúê
ªú×úú•#ú¼#úCRYPTÁúBCRYPTÁú
IMAP_MUTF7ÁúBIN_HEXÁÛ Û ¥
encode_engineÁ¥encode_engine_stringÁ  ¥encode_engine_sliceÁ££¥encode_with_paddingÁ¦ encoded_lenÁ add_paddingÁª× µµµµµµµµ½×µµÀ×µÂsourceÁµÄ÷µÆ¥µ
decode_engineÁÈÈ¥µdecode_engine_vecÁËË¥µdecode_engine_sliceÁÎÎ¥µž
  
¥ ÛÛÛÛÛPAD_BYTEÁóGeneralPurposeÁâ³!ã âÑ!å â¥!óè×óêƒóGeneralPurposeConfigÁìÿ"ìdecode_allow_trailing_bitsÁìdecode_padding_modeÁóóñƒó ó
ô׿DecodePaddingModeÁö IndifferentÁ÷
öRequireCanonicalÁù
ö RequireNoneÁû
ææþƒææ×æææÖæDecodeMetadataÁˆóˆžææ Œæ
ŽÖæ ×úAlphabetÁsymbolsÁ úƒú×úÖš úúúParseAlphabetErrorÁŸ
InvalidLengthÁ 
ŸDuplicatedByteÁ¢
¢ˆŸUnprintableByteÁ¥
¥ˆŸ ReservedByteÁ¨
¨ˆú «×ú
­Öú ú °EncodeSliceErrorÁ²OutputSliceTooSmallÁ³
µƒ·×º¼Öµ DecodeErrorÁ¾ InvalidByteÁ¿
¿ˆ¿¾ó2Ã
ȾInvalidLastSymbolÁÆ
ƈƾInvalidPaddingÁÊ
µÌƒµÎ×µµÑµ ÓÖµDecodeSliceErrorÁÕ5Ö
ÖˆÕ¹4Ù
µ
Ûƒµ Ý×µ µ
àµâÖ




!
%
%
>
>
>
G
G
j
j
j
r
r
s
t
t
}
}
ž
ž
ž
¦
§
¨
ª
°
°
´
¹
Ñ
Ñ
Ò
Ô
Ô
Õ
×
×
Ù
Ù
ß
ß
à

Ž
Ž
Ž








¡
¡
¡
§
«
«
«
¯
°
°
°
±
²
µ
¸
Á
Î
Î
Î
Ï
Ð
Ð
Ð
Ñ
Ò
Ô
Ô
Ö
Ö
Ø
Ø
Ø
Ú
Ú
Ü
Ü
Ü
Þ
à
à
ã
ã
å
å
å
è
è
ê
ê
ê
í
í
ï
ï
ï
ô
ö




ˆ
Š
Š
Š

 
 
£
£
¦
¦
¦
©
«
«
«
¾
¾
¾
Á
Á
Á
Ã
È
Ë
Ë
Î
Î
é
é
é
ë
ò
õ
õ
õ
ÿ













˜
˜
˜
š
ž
ž
¬
¬
¬
®
±
±

¸
¸
¸
»
»
½
Í
Ï
Ï
Ï
Ò
Ò
Ô
Ü
Þ
Þ
Þ
á
á
ã
ÓËóõ  ­ ¸ðEεŽ¤ Äc//
3¼
&4­
&—°E¨Råʤ ¥  ??B±&´1„tüéÈ;¤ ª¿cVVÏ
Zµ I[ÿI\I^ I_±I`¿IbÞIcóIdIežIŽ@ßl©¯É¥ £à ÿA¿cƒµ ¸Èà»
˜¨`øètšOôõ¥ ‰C¨Ÿ!¦CŒ"¦CŸ!¾¾ÂºØÇ}àXVI¥ ‰C¤Ó 8¤ÓúHúHßûHÁ‘4Ý­f‰úM÷Ÿ!ÚÚܺº*ÁäÚ©t!„¤õƈƒ ýìýàó„'²‰¿ï¿cââ¥.ã³!óåÑ!óç¥!ó*“KS¾ûxØÎFËÎFÛìì÷.íÿ"óî›/óï½/óŽè¡`œöدGŠ ¯G¿c¯G³¯Gó¯GÛö÷ø•0ùú­0ûüÊ0f¨à:Þ-‡®Ø®HŠ ®H¿c®HÐì®Hµß®H®H®HÐ숈¥1óŠžVSŒå:
çµß½I½I½I¿c½IØ÷1‡2l¾ø#¿cžJžJÐìžJµßžJžJðžJ 8¿cŸ ¡ó2¢£3¤ˆ¥¦°3§ˆ¨©Ô3ªˆÓMø%²‘KÐì‘Kµß‘K‘KÄc‘K¾‘Kز³´¹4ã5½’¥Ú¡(¿cÀLÐìÀLµßÀLÀLÀLÄcÀL¾ÀLؾ¿À¥5ÁˆÂÃÄó2ňÆÇâ5ȈÉÊË6ŽR81ën “¿c®MÐì®Mµß®M®M®MÄc®M¾®MØÕÖ×’5؈ÙÚ¹4Œ)ÔúëM´„¿cùNÐìùNµßùNùNùNÄcùN¾ùNéùN®M"C?:/‰Ÿª²½¾ÀÕfèâôìöˆ«Ÿ·²Î¾ÝÕy;ÝÚµÕ
ØúHŒêâñìþöµ²Ì¾ÛÕ¨âðìýöóìö¾ìÀìƒöˆœ¯Ÿ¹²Ð¾ßÕöŒˆ°Ÿº²Ñ¾àÕöŽˆ­Ÿ¼²Ó¾âÕŸ¬²¿¾ÂÕÄÕ ÉÄc
¿c !à KŸ!Œ"Óõ ØË1ÛŠ ³óÐìµß11ð1¾é1024Ád ŒÂT%ÂT9 DÂTS ÂTVÂT ÂT$ 'ÂTJÂTKüç+ÂTÂTþÂT<×ÂTáÂTÂTBUF_SIZEÁÂT1024ÁÂTÂTÂTBUF_SIZEÁÂTDECODED_CHUNK_SIZEÁÂTBUF_SIZEÁÂTDECODED_CHUNK_SIZEÁÂTDECODED_CHUNK_SIZEÁÂT1024Á  ã ÂT%ÂT9  ŠÂTT ŠÂTXÂT„Ø  ç ÂT$ 'ÂTJÂTKü». ÂT ÂTÙV;ØŠÂTãŠÂTÂTÂTMIN_ENCODE_CHUNK_SIZEÁÂTBUF_SIZEÁÂTMIN_ENCODE_CHUNK_SIZEÁÂTBUF_SIZEÁÂT256Á ÂT32Áìº  Ö ÂT%ÂT9 ̺ ÂTT ÂTXÂTüº ! Ú ÂT% 'ÂTKÂTKü LÂT ÂT ÙV;ÙÂTäÂTÂT256ÁÂT256ÁÂT256ÁÂT256ÁÂTÿ255Á@ÂT64ÁÂT256Á´¹  
$ 
²1A Î ´ë  
$ 
µ1A
4
ü˜ ˆ â Ÿ
¦
§üÂä ÎF$‰ žJ ¯G Ú`ÂT@,˜c,Ú`ÂTý˜cü¯G¾·'V¥!ZˆÂT?0x3FÁ?Ú`0x3FÁ„©H T¼H $½H Ú`ÂT@üÌHš LÚH  æH 
ÂTüñHo T÷H ,÷H ÿH @ÂT= €I ¼¦I ,·I   
 'ÂTÂT@= 
GÂTÂT@ a­c ,I   œI   ÂTÂT@$  .ÂTÂT@ üI-   ¼I  ½I   TËI 
 ÔI ÂT$ 
'ÂTJ
ÂTü‚I^  ßI Ç
Ï ø“ñHo  éh<B åI dìI  ùI úI ²üƒG÷ ü¥HÕ üÖH ­cD¼G ˜cD¤G ­cËéhwÂT¥éhMƒÂTƒÚ`@ÂT@OÂTäØÙVrìéhóù·'{³!JÖ É@ÂT64Á@ÂT64Á„¨L ¤»L l¼L ¥Ú`ÂTLÐM  ÜM 
ÂTüãMú  TéM ,éM ñM @ÂT= òM ,·O ü“O  ¼“O 
,¤O     'ÂTÂT@=  GÂTÂT@ a
­c | 
ÂT ²O 
ü†O. 
 ÂTÂT% 
/ÂTÂT ü†O<  Ú` ÁO  ÂO   TÌO  ÕO ÂT$ 'ÂTJÂTüôMé  éhÜO ô
ü ¦ø”ãMú  éh=C ÜO dãO  ðO ñO µüÛK– ü¤LÍ üÌM¥ ËcL”L ˜cDüK ËcîÂTÉéh­éhM¨ÂT¨ÂTeÂTZÚ`YÂTYhæÙV|õéhü·'Ñ!vÖUÒ}¥Ú`ÂT256ÁÂT256ÁüŠZ#   öüÏXé ì$´Y ,âY  ·Z ¾Z ºüªX” ¯G$ÀX ®H|<é_ üÆ_H ì®H ` ”` »üþ^– ¯G$·_ ¯G$Ÿ_ <¥_ ypaddingÁ%O,Ðe ü¡eR ì®H òe ùe ¼üÏdª ¯G$’e ¯G$üd ,e y«H$Üm ü´mJ ì ým „n ½üÝl§ ¯G$¥m ¯G$ƒm ®H$‰m ®HzmodeÁ#Nœ¥q ˜c#0ü‘q-

œ‘q 
§\ºq ƯG
7 ½q üìpS ÂÎFt€q ˜c­˜c´žJ”¦q ˜cÄCŒžJ{ƯG:BŒžJ  ˜c3žJBŒŒžJœãr Øc#0üÏr0

œÏr šyY4ør ǯG
4 þr ü£r] ÃÎFt¾r ˜cª˜c±žJ”är ˜cÁCŒžJ{ǯG:BŒžJà˜c0žJ?ŒŒžJœšt Ęc#0ü†t-

œ†t šyY¯t ƯG
4 ²t üásS ÄÎFtõs ˜cª˜c±žJ”›t ˜cÁCžJ{ƯG:BžJÄ ˜c0žJ?ŒžJœØu Řc#0üÄu0

œÄu šyY4íu ǯG
4 óu ü˜u] ÅÎFt³u ˜cª˜c±žJ”Ùu ˜cÁCžJ{ǯG:BžJÅ ˜c0žJ?ŒžJÜýw
 Ìýw 
º!ü×wB ƯG¤æw %üy; Üy 
Ìy »ƒ%2
9ϡy 
»E,Äy  Ô°y  Éy ôéy  öüyy

ÄÐy 
½ª=üÐy8  ‡z üæx£ ǯG¤øx ¯Gô¯Gò®H;@ÂT64Á@ÂT
ALPHABET_SIZEÁ@ÂT
ALPHABET_SIZEÁ\…¬“$”Ú`ÂT@œÅ
 
à|3 ×L› §
ÂTü²q ¬¸   ÂT7 Ì œí
   '
 8 
 K
 ÂTÂT@$ .ÂTÂT@üÜ$
ÿ
  ÂT$ 'ÂTJÂTüÎU éh¡¢¯
·
h ø¡²q éh<B ¢<´„­  ¼ ÂÃüÃ
üÂü²ü—¬žJ
 
­c. 
Ú`˜ÂTÎéh²éhn®ÂT®Ú`qÂTqÂTˆÂT7+ÙVÅ?éhGN­c'·'£‡2Õ source_bytesÁÁÖ|-ÂT@ÂT
ALPHABET_SIZEÁœº
 Ö‡1 Ìü×fäÚ
$à
ÚsÚ`4 äZÂTv õü!   ŸüŒ& Ö¿žJK ± ¼^½
éh.4üÇü

 å 
ÂTüôÅ
¬ú
 
l‚ÂT7
 Ž d­ 2 ¹üé Ú`6  útÿ$ÿ4‡~Ú`6
Β
éh ìüËo„ÎáÚ`7
|3 ØC
ü°) Ÿ Øü¬. Ö¿žJ‘K Ùàæì½
Ýü€&   Ÿ ¥ üü+ Ö¿žJ‘K ¦ ¹;~º
éh06! Ä!
ÂTü×·" ÜÝ#$$!#$ÂT7# ÷$ü{%¤’&\''!(( .&'(?& ¥('„Á*! ÐÂT$ *!'ÂTJ!*ÂT &%£#À
È
('Š%
éhF&L%+,,!”±-.,- .-, 2+, Ã,üÚ{/”Ý01122+.012?0 î21ü•(4$¸554 Ÿ5 ¼5ü‘- Ö¿žJ‘K4 ½4 Ô0/ +#" ¸!L¡2§1Õ/
éhS0Y/„ë6! úÂT$ 6!'ÂTJ!6ÂTüù  éh¾+;#m
u%$ø£×·8 "éhu8|# "T :  ©ÂT$ : 'ÂTJ :ÂTü©
  éhk!r¢¸
k
s +ø¢ôÅ
< 
éh=<C
 
üÐ">??
%ÄÐ
?1>B ñ?üÍ& Ö¿žJK> ò> øùWå
¢ ¨
´64=üßš
ü®Ë üÕî
ü¢
ü®ü î@Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
žJ‘Küƒ ˜«
˜·
éhx
v
ÂTv
«w
ü÷FK
éhj ÂT˜ éhùu ÂTu Ú`8 ÂT8 ÂT- 4 éhôñÚ`ñ´Ú`´ü^‘KíÚ`ìéhkiÚ`iüß[‘KÚ`šÂTéhõéÂTééh¬ªÂTªÂTŸü§cÙVpÚ`ÍÂTÍÂTÂÉéhÚ`Ú`|üðeKMÚ`LÙV éh%ÙVügéhovžJH˜H·'ö¼
° ÖT  byteÁæ
 probe_indexÁH!
probe_byteÁË+óI ÂTS ÂTÞ áÚ`2ÂTüÃ*B @˜"ü¡*g

ä¡*«¢L% ‡+ü‚*‡ŒžJD–*˜˜6üà,B @˜"ü¾,g

ä¾,«¢L% ¤-üŸ,‡žJD³,˜˜6ü˜/B @˜"üö.g

äö.«¢L% Ü/üÚ.„ŽžJDë.˜˜6ü¸0B @˜"ü–0g

ä–0«¢L% ü0üù/…žJD‹0˜˜6üÎ2B @˜"ü¬2g

ä¬2«¢L% ’3ü‹2‰žJD¡2˜˜6üà4C @˜"ü¾4h

ä¾4«¢L% ¥5ü 4‡žJD³4˜˜6 L l   ÂTÂT3 C
DÂTV¬§ L¿ l¿  Ë ÂTÂT3 C DÂTV¬Ö  ü›$ 
¬›   
# 
¿Õ 0 ½ ÂT
  ¾  e 
Üý   ¬‚ 

ÛÂT¬Î 
ì 
 
 ¡  § ÂT=$ˆ  Û¼ÂTj
ÿ   ` 
¬â  ÜÝ  Û¼ÂT ÷ üžà ¬Ì  üÌ$ 

 
´Õ3 î ÂT   ï ü³ \ L    ñ 
ÂT
 Á 
ÂT
¬   ü. 

 ˆ¸C5Ä¥  ¼  Æ ÝX ý í ôûîø¨ü´Ì ü…û ü£Ý üÒ® üÀ- ü޹ Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙÂT ÂT  ÂTëÂTëßÂTÂTtÂT©»ÂTµÂT­üó$ ƒÂTƒÂT¢ÂT>ÂTâÂT×ÂT bytes_lenÁ»ÖtÀƒ ¯complete_input_chunksÁNcomplete_chunk_outputÁí ú¼q
encoded_remÁêÒ=Ú`b'='Át§# Ÿ£%K0Ú`7>|ÿ# Ÿ¦%K0Ú`7>d³$ Ÿ©%K0Ú`7>
¾À(®M3ÂT:Ú`AHl€
¾Ä%®M0ÂT7>Œú
¾Ç(®M3ÂT:Ú`AH
Õ×%ùN0®M7>&H€æúµÛáÀ¤,ÐK‹$4øMËùÛ 4òN ®á)lúN ¯†*¤‰O  °²*œÍO £²€+\âO ¨³¡4„ïO²´4áP ÆÓÑ,léP ÈÔö,ŒøP ËÕŸ-œ¹Q Îמ¤ÎQ ÑØ’5\äQ¾Ùä6„ñQÕÚüÊRüLI Correct, fast, and configurable [base64][] decoding and encoding. Base64ÁüMKH transports binary data efficiently in contexts where only plain text isÁd™ allowed.Á¦úüªFC [base64]: https://developer.mozilla.org/en-US/docs/Glossary/Base64Áñú # UsageÁúü…LI Use an [`Engine`] to decode or encode base64, configured with the base64ÁüÒB? alphabet and padding behavior best suited to your application.Áúœ™ ## Engine setupÁ­úü±KH There is more than one way to encode a stream of bytes as “base64â€üý1. Different applications use different encodingÁü¯'$ [alphabets][alphabet::Alphabet] andÁü×GD [padding behaviors][engine::general_purpose::GeneralPurposeConfig].ÁŸúÌ£ ### Encoding alphabetÁ½úüÁKH Almost all base64 [alphabets][alphabet::Alphabet] use `A-Z`, `a-z`, andÁüPM `0-9`, which gives nearly 64 characters (26 + 26 + 10 = 62), but they differÁüÞ%" in their choice of their final 2.ÁúüˆOL Most applications use the [standard][alphabet::STANDARD] alphabet specifiedÁüØOL in [RFC 4648][rfc-alphabet]. If that’s all you need, you can get startedÁü¨'$ quickly by using the pre-configuredÁüÐSP [`STANDARD`][engine::general_purpose::STANDARD] engine, which is also availableÁü¤ JG in the [`prelude`] module as shown here, if you prefer a minimal `use`Á footprint.Áþ ú
```ÁÜç
 use base64::prelude::*;Áƒ úü‡ 41 # fn main() -> Result<(), base64::DecodeError> {Áü¼ LI assert_eq!(BASE64_STANDARD.decode(b"+uwgVQA=")?, b"\xFA\xEC\x20\x55\0");Áü‰ JG assert_eq!(BASE64_STANDARD.encode(b"\xFF\xEC\x20\x55\0"), "/+wgVQA=");Á # Ok(())Á  # }Á  ```Áñ úüõ KH [rfc-alphabet]: https://datatracker.ietf.org/doc/html/rfc4648#section-4ÁÁ
úüÅ
DA Other common alphabets are available in the [`alphabet`] module.ÁŠúÔŽ #### URL-safe alphabetÁ©úü­NK The standard alphabet uses `+` and `/` as its two non-alphanumeric tokens,ÁüüMJ which cannot be safely used in URL’s without encoding them as `%2B` andÁ `%2F`.ÁÕúüÙYV To avoid that, some applications use a [“URL-safe†alphabet][alphabet::URL_SAFE],Áü³MJ which uses `-` and `_` instead. To use that alternative alphabet, use theÁüPM [`URL_SAFE`][engine::general_purpose::URL_SAFE] engine. This example doesn'tÁüÒGD use [`prelude`] to show what a more explicit `use` would look like.ÁšúÌÐüƒA> use base64::{engine::general_purpose::URL_SAFE, Engine as _};ÁÅúüÉ4ŒÑüþEB assert_eq!(URL_SAFE.decode(b"-uwgVQA=")?, b"\xFA\xEC\x20\x55\0");ÁüÄC@ assert_eq!(URL_SAFE.encode(b"\xFF\xEC\x20\x55\0"), "_-wgVQA=");ÁdˆóÒ<•ˆÓ<˜Ó¥úÔ© ### Padding charactersÁÄúüÈNK Each base64 character represents 6 bits (2â¶ = 64) of the original binaryÁü—HE data, and every 3 bytes of input binary data will encode to 4 base64Áüà52 characters (8 bits × 3 = 6 bits × 4 = 24 bits).ÁúüšNK When the input is not an even multiple of 3 bytes in length, [canonical][]ÁüéLI base64 encoders insert padding characters at the end, so that the outputÁü¶%" length is always a multiple of 4:ÁÜúüàJG [canonical]: https://datatracker.ietf.org/doc/html/rfc4648#section-3.5Á«úÌÐü”A> use base64::{engine::general_purpose::STANDARD, Engine as _};ÁÖúüÚ,) assert_eq!(STANDARD.encode(b""), "");Áü‡0- assert_eq!(STANDARD.encode(b"f"), "Zg==");Áü¸0- assert_eq!(STANDARD.encode(b"fo"), "Zm8=");Áüé0- assert_eq!(STANDARD.encode(b"foo"), "Zm9v");Á˜Ó¢úü¦NK Canonical encoding ensures that base64 encodings will be exactly the same,ÁüõMJ byte-for-byte, regardless of input length. But the `=` padding charactersÁüÃGD aren’t necessary for decoding, and they may be omitted by using aÁü‹>; [`NO_PAD`][engine::general_purpose::NO_PAD] configuration:ÁÊúÌÐü³HE use base64::{engine::general_purpose::STANDARD_NO_PAD, Engine as _};Áüúü€ 30 assert_eq!(STANDARD_NO_PAD.encode(b""), "");Áü´ 52 assert_eq!(STANDARD_NO_PAD.encode(b"f"), "Zg");Áüê 63 assert_eq!(STANDARD_NO_PAD.encode(b"fo"), "Zm8");Áü¡!74 assert_eq!(STANDARD_NO_PAD.encode(b"foo"), "Zm9v");Á<Ù!˜Óá!úüå!MJ The pre-configured `NO_PAD` engines will reject inputs containing paddingÁü³"LI `=` characters. To encode without padding and still accept padding whileÁü€#NK decoding, create an [engine][engine::general_purpose::GeneralPurpose] withÁüÏ#30 that [padding mode][engine::DecodePaddingMode].Áƒ$ú,¬$\¦$ÌÐüì$JG # use base64::{engine::general_purpose::STANDARD_NO_PAD, Engine as _};Áü·%ZW assert_eq!(STANDARD_NO_PAD.decode(b"Zm8="), Err(base64::DecodeError::InvalidPadding));Á<&˜Óš&úìž& ### Further customizationÁ¼&úüÀ&C@ Decoding and encoding behavior can be customized by creating anÁü„'OL [engine][engine::GeneralPurpose] with an [alphabet][alphabet::Alphabet] andÁüÔ':7 [padding configuration][engine::GeneralPurposeConfig]:Á(ú,¸(\²(ÌÐüø(0- use base64::{engine, alphabet, Engin
ɯv ,œ,RTDF¬p9L°-tù  Îìüù´ …—…—

Íì
¹—,“  üÞMœáäå ä å­Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
éhÁ—  õ
encodedÁ<€ü€1t¥ Îì‰C žË‰C‰C¥  µ áy
D"¼+¬¥ ‰Cáy
D"¼+¬šoq_4¸ ¥ ‰CüÊ2¥ ç™ Ó÷™“šÏüƒ2Š‚›“š
¥ ‰Cµ üåQæçè æ“š ç­ èýDÖ¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
éhýD
¤ üÍìýD ó ýD
¥ ‰CýD¼
sinkÁ$=?¬ÁÂT¼çÂTD®ÂTü®
»¤Œ“

Ì’
ü‰
$
¤ ¿@¸ðEεŽË
´Õ

 ¤ E¼•»¤Œú
$Ìù
üð
$¤  ¿@!šü³/Áé éE ­ ¸ðEεŽé È
!¤ ¾ Åü´ »¤Œ™̘ü$¤ ##¿@$%
%¹""éhüñFœôêë ê¿@ ë­Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
éh¿@
" ˆ"
%¤ $¾ |ãLüda Enables base64'd output anywhere you might use a `Display` implementation, like a format string.Áeú<i˜ÓüqL§¾úüÂ(% let data = vec![0x0, 0x1, 0x2, 0x3];Áüë74 let wrapper = Base64Display::new(&data, &STANDARD);Á£úü§C@ assert_eq!("base64: AAECAw==", format!("base64: {}", wrapper));Á˜Ó<ëL/? t&'$4³Ë&(t<ËÄc&*ˆ c&+×ë `&-Éð¯v&.üø&r¬¤fL¿Z\KM$ä@B13üÔ+ü÷\Y A convenience wrapper for base64'ing bytes into a format string without heap allocation.Á¤ 0¥ 12120Íì¶A õ˶A¶A¥ Þö@—°E¨RåÊ34íñEG|†,†&// ¤ ­ü›&|&// µ áy
D"¼+¬¥ ¶AüÆ0¤ 6¥ 78867Å© ÓÕ©ö@9ËÏü¸Füý63 Create a `Base64Display` with the provided engine.Á¿¸ª ¥ ¶Aö@55
9¤ ¥ ¶A¼
µ üù<¤ ;¥ <=<=;Å© Õ©4‰ö@>Åc>þ$&ü¼B¿ìíî ìö@ í c cˆ¢cµ
 `£cbufÁ `àB¤GS
îÖ¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
éhŸÈŸÈ Èê
 O˜éBL: Ã:
>¤ ¥ ¶A formatterÁLÊüü 
&¤ @ªAA@ª¤ 
å°Ä£
ªªíù°ÂA´1„tüéÈ;B

; £
&?? ¤  c cˆ¢cµ
 `£cÙ­ `àB¤GS
ªüÀ
G¤ DªEDEå°Í
ÂAFG
GÅ
É
 ,“ CCѯü¬ Lœ¯ ïð ïÂA ð­Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
éhÂA
C Ã C
G¤ ª «˜ d—MüA> Implementations of `io::Read` to transparently decode base64.Á»À|þL$M¼ýLüôL"$ŸMIÏlfV\B<FHSTUV$4
ËIK5\
¾ILÙä6„)
ÕIMÚ•.D;
áINP
IP×U
¤,IQioÁZ
¦IR,
t
Œ|~jlXZJ
LN>@.0ü™

ÂTôŠ
Œ
IÂTü®
”´
IÂTüí4
üÔT
Q A `Read` implementation that decodes base64 data read from an underlying reader.Á©
út­
# ExamplesÁ¼
ú
˜Ó´È
 use std::io::Read;ÁÄß
 use std::io::Cursor;Áüø(
% use base64::engine::general_purpose;Á¡
úü¥a
^ // use a cursor as the simplest possible `Read` -- in real code this is probably a file, etc.Áü‡6
3 let mut wrapped_reader = Cursor::new(b"YXNkZg==");Áü¾7
4 let mut decoder = base64::read::DecoderReader::new(Áäö
 &mut wrapped_reader,Áü“$
! &general_purpose::STANDARD);Á¸
úü¼*
' // handle errors as you normally wouldÁüç
 let mut result = Vec::new();Áüˆ.
+ decoder.read_to_end(&mut result).unwrap();Á·
úü»%
" assert_eq!(b"asdf", &result[..]);Áá
ú
˜Ó
¥ WX£YXWYÍì‰C Š
ÍìC 
÷™4
à CD˜
†š
ÿAŽ@ßl©¯ÉZ[\^_`bcde
Z\WYE4¨
IVV‚›

IVVCÔ¤
IVVÚ`]
ÂTŒ„
T„
IVVÂTtä
IVVÂTüÉ.
¤É
IVVÚ`a”ä
ÂT¬¾

IVVÂT”©

IVVÂTÌš
”š
IVVÂTìë

IVV©»ü»G
¥ gh£ighiʾ Ä
Ú¾ Ï
÷™
ò¾
ÿAjÀcjÀ
.035ü‰4
Œ
ñòó ñÿA ò c cˆ¢cµ
 `£cÙ­ `àB¤GS
ó€¯f 
f
j¥ ‰CC$
± 
üœ8
¥ lm£nnmlʾ ¥
Ú¾ °
÷™
ò¾
ÿAorstx¡
/146ü¥,
üÛE
B Create a new decoder that will read from the provided reader `r`.Á¬
C‚›ÿAkk
o¥ ‰CCreaderÁ4°
µ 

ooÂT”›
ooÂTü¯D
Œ²
Iôõ ôÿA õ­Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
ÂTßßê
à ¬
ÑøÿËO Ÿk Ä
k
r¥ ‰CC
Ù­Ï
üì#5
ӕ#
Iö öÿA»Çk ‚$
k
s¥ ‰CC$‡$
ü²)Z
lµ)
I÷ø ÷ÿAÂT ø­»Çk Ã)
k
t¥ ‰CC$È)
b64_len_to_decodeÁŒÎ)
Ù­è)
,“.
t<closure_kind>Áu<closure_signature>Áu<upvars>Áuutu‰CCùN®M  VVÏ
Zµ I[ÿI\I^ I_±I`¿IbÞIcóIdIežIŽ@ßl©¯É‰CC½;
tÊv™Êv¶Êvvtv‰CC®MŒÈéhDž@
tÊw™Êw¶Êwwtw‰CCÂTÂTîËäçE
üÒBY
V Unwraps this `DecoderReader`, returning the base reader which it reads base64 encodedÁ|°C
input from.ÁÄC
úüÌCY
V Because `DecoderReader` performs internal buffering, the state of the inner reader is矻D[
X unspecified. This function is mainly provided because the inner reader type may provideÁüŠEX
U additional functionality beyond the `Read` implementation which may still be useful.ÁTîE
ÿACkk
x¥ ‰CC$ùE
ü¢FE
¥ z{£||z{ʾ «F
Ú¾ ¶F
÷™4®F
ò¾D¹F
ÿA}á }§F
.035üòJ7
üîF)
& Decode input from the wrapped reader.ÁœG
úü¤G]
Z Under non-error circumstances, this returns `Ok` with the value being the number of bytesÁ¬†H
 written in `buf`.Á H
úü¨H^
[ Where possible, this function buffers base64 to minimize the number of read() calls to theÁ¤‹I
 delegate reader.Á¤I
úd¬I
# ErrorsÁ½I
úüÅIZ
W Any errors emitted by the delegate reader are returned. Decoding errors due to invalidÁü¤JI
F base64 are also possible, and will have `io::ErrorKind::InvalidData`.Á$õJ
ùú ùÿA ú­»Çy úJ
y
}¥ ‰CC$ÿJ
Ù­…K
”€`
}}ÂTäWÙlÈMüB? Implementations of `io::Write` to transparently handle base64.Á»À|¯M$ÀM¼®Mü¥M",ÐMºƒl‰âœ´¾äÎÓå\C<GŠŒ‹$4 Ë* ×/ ¤,̵4 ¦ ErrorKindÁLA ËKˆÍ4L ݬ  suceR =?-/üY Dj ÂTÔ»  ÂTüÁ" ¬Ç ÂTüë5 üê^ [ A `Write` implementation that base64 encodes data before delegating to the wrapped writer.ÁÉ úüÍ_ \ Because base64 has special handling for the end of the input data (padding, etc), there's aÁü­\ Y `finish()` method on this type that encodes any leftover input bytes and adds padding ifÁüŠ` ] appropriate. It's called automatically when deallocated (see the `Drop` implementation), butÁüë` ] any error that occurs when invoking the underlying writer will be suppressed. If you want toÁüÌ1 . handle such errors, call `finish()` yourself.Áþ út‚ ¹· ú<• ˜Ó¼  use std::io::Write;Áüµ( ª¸Þ úüâ_ \ // use a vec as the simplest possible `Write` -- in real code this is probably a file, etc.ÁüÂ\ Y let mut enc = base64::write::EncoderWriter::new(Vec::new(), &general_purpose::STANDARD);ÁŸ úü£ * ³»üÎ $ ! enc.write_all(b"asdf").unwrap();Áó úü÷ C @ // could leave this out to be called by Drop, if you don't careÁü»
@ = // about handling errors or getting the delegate writer backÁüü
) & let delegate = enc.finish().unwrap();Á¦ úüª ' $ // base64 was written to the writerÁüÒ + ( assert_eq!(b"YXNkZg==", &delegate[..]);Áþ ú<‚ ˜ÓŠ ú ·‘ úüŸ _ \ Calling `write()` (or related methods) or `finish()` after `finish()` has completed withoutÁüÿ $ ! error is invalid and will panic.Á¤
ú
»Õµ
úü¹
_ \ Base64 encoding itself does not generate errors, but errors from the wrapped writer will beÁü™, ) returned as per the contract of `Write`.ÁÆ úŒÊ  # PerformanceÁÜ úüàV S It has some minor performance loss compared to encoding slices (a couple percent).Áü·' $ It does not do any heap allocation.Áß úŒã  # LimitationsÁõ úüù` ] Owing to the specification of the `write` and `flush` methods on the `Write` trait and theirÁüÚ] Z implications for a buffering implementation, these methods may not behave as expected. InÁü¸_ \ particular, calling `write_all` on this interface may fail with `io::ErrorKind::WriteZero`.Áü˜R O See the documentation of the `Write` trait implementation for further details.Á ¥ ލŽʾ ˆ Íì¥D  ÷™4‹ Ÿ!¥DL– †š ¦C`øètšOôõ˜¹ ac^`L4§ ‚›œž  Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ¥Düù(  Ú`¬‹ ÂTüñ Äñ ÂT´¬  Ú` ÂTÔ¦ œ¦ ÂTt«  ü¾H ¥ œ¨œʾ Ç Êï Ò ÷™ âï ¦CžÀcžÃ 0257ü4  ûüý û¦C ü c cˆ¢cµ
 `£cÙ­ `àB¤GS
ý€¯š  š
ž¥ ‰C¥D$• ±  üï9 ¥  ¡¨¢¢ ¡ʾ ø Êï ƒ ÷™ âïL† ¦C£¦§¨ª«ô 79<>üýA ü¯I F Create a new encoder that will write to the provided delegate writer.Á ¥D‚›¦CŸŸ
£¥ ‰C¥D¸ µ 4• ¬²! ££ÂTD" ££ÂTüÕ(% üî"\ Y Encode all remaining buffered data and write it, including any trailing incomplete inputÁüÏ## triples and associated padding.Á÷# úüÿ#N K Once this succeeds, no further writes or calls to this method are allowed.ÁÒ$ úüÚ$_ \ This may write to the delegate writer multiple times if the delegate writer does not acceptÁü¾%6 3 all input provided to its `write` each invocation.Áù% úü&] Z If you don't care about error handling, it is not necessary to call this function, as theÁüã&5 2 equivalent finalization is done by the Drop impl.Á' úü¥'8 5 Returns the writer that this was constructed around.Áâ' údê' »Õû' úüƒ(M J The first error that is not of `ErrorKind::Interrupted` will be returned.Á4Ü( þ þ¦CÖ¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
¥DŒÈŸ ã( Ÿ
¦¥ ‰C¥D$è( üø,1 ¬û, ÿ ÿ¦CÖ¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
éhŒÈŸ ‘- Ÿ
§¥ ‰C¥D$–- ü¾7H ŒÁ7  ¦CÂT®€Ÿ Ó7 Ÿ
¨¥ ‰C¥D$Ø7 current_output_lenÁ”Þ7 T€: ¨Ê©™Ê©¶Ê©©¨©‰C¥DÂÎéh ÂT  ƒµ ¸Èà»
˜¨`øètšOôõ‰C¥Dü­B4 İB  ¦C®€Ÿ ÉB Ÿ
ª¥ ‰C¥D$ÎB üM üªG[ X Unwraps this `EncoderWriter`, returning the base writer it writes base64 encoded outputÁ<ŠH  to.ÁH úüžH[ X Normally this method should not be needed, since `finish()` returns the inner writer ifÁüþHY V it completes successfully. That will also ensure all data has been flushed, which theÁüÜI* ' `into_inner()` function does *not* do.ÁJ úü“JY V Calling this method after `finish()` has completed successfully will panic, since theÁüñJ% " writer has already been returned.ÁK úü£KY V This method may be useful if the writer implements additional APIs beyond the `Write`ÁüLV S trait. Note that the inner writer might be in an error state or have an incompleteÁüÜL  base64 string written to it.ÁTˆM ¦C¥DŸŸ