rust äì#rustc 1.98.1 (48a229cea 2026-09-01)ÁûÊÆÍRLñ.åSÛAúwjL-df1bddb45adbe94bÁ«ª1Úë• ¢›ºXÝÓrŽ*-1ad4f876c768bda9Á±ò‰<å%Z‰>¸64‡ËV`-2d2ab9fb0fe1def5Á‰m6GÞ­n6ÇèÆ2-64f5f36fb0927694Á»ÄóG Øg{ë(3íi«F×-06449a08aaab5e30Árustc_std_workspace_coreÁ€û{ù`ä"Ei¥€ÞÏ%G-cb0d4d77988d81b5Áó"Æ)ΉÉðÛÕpEÍ—E-3ec41d3a5a80a4a4Á miniz_oxideÁÐ8°ø‚ðbž Lƨ°J-e44eaef1807e5fc0Áadler2Á9lí©yA6P/D$UBŸ-dca52f01a59c33e7Á hashbrownÁ™¸ÈXó®÷ …ùý{e-143c77bb957d9940Árustc_std_workspace_allocÁð…¨À �¶÷Üúò·_z%í-145a318e0772276cÁ std_detectÁK(ƒ0ì*ãÛ8²D?-f99feda5ce9e492aÁrustc_demangleÁµ%jŽeårVŠÕÓ•-cfd0ab54bb33760eÁcfg_ifÁÍ}λ—©ŒÕž§C•×o-360da4ba13154744Á addr2lineÁ‹c²ŽúY\ÈGÞö÷ö--09755979c57b7e64ÁgimliÁ¢±QÄÍ`ª§DÞåù¬y-9a1fede77fbbf2f0ÁobjectÁö‚F λâËvú.zËí-7ff85ea729a864ffÁmemchrÁž˜]²1<õ¶=U�ý�Où-0e3477fb2664a277Á  ÿŽ—jl‹®¾To–K™G-549498e8b2e4d924Á†ƒ4ÊÓportable-atomicÁÜ•û«‰futureÁ BoxFutureÁ 'aÁ �LocalBoxFutureÁ¾� FusedFutureÁ is_terminatedÁ‚ƒ Œƒ private_try_futureÁSealedÁ‚�� TryFutureÁ!¯!ErrorÁ!try_pollÁ%‚%�%�%¯%• %¡ if_allocÁ,,,/‚/ƒ ,2‚2ƒ streamÁ999999 BoxStreamÁ?¾?�9LocalBoxStreamÁB¾B�9StreamÁEŸE poll_nextÁE size_hintÁ9I�IŸIŸ I¯ 9NŒNŸNŸ N¯ 9 FusedStreamÁSƒ 9U‚Uƒ 9XŒXƒ 9private_try_streamÁ[[Ø [^�^�^�9 TryStreamÁb¯b• b try_poll_nextÁ9f�f�f�f¯f• f—9Þ mmmp�pŸpŸ p¯ mu�uŸuŸ x u¯ m{�{ƒ taskÁ‚À ƒreadyÁ‚ __internalÁ… atomic_wakerÁ†††††††††† AtomicWakerÁ�ƒ�wakerÁ†WAITINGÁ† REGISTERINGÁ†WAKINGÁ†–˜ — AssertSyncÁ—–registerÁš –wakeÁ–takeÁ†ž>† ñ††…‚‚‚‚‚‚8888$8$8$8+8+8+81848G8G8G8H8I8L8L8L8M8Q8Q8Q8R8T8U8W8Z8e8e8e8l8l8l8s8s8s8t8x8x8x8z8}8š8š8œ8�8¡8¡8¡8!ES]b˜ 8‚îšîšPinÁðš¿ ð[$²òVá=µ•4Œ‚!ÄŸŸ BoxÁ£ó‹¤ô‹ljô²ßk#ÄÅFÅFÆFGlobalÁ Ä› +ÉÑÖZÖZ×ZAssertUnwindSafeÁÙZó *µfKLª×BÄE 8�E„SòS„]�bÄEŸŸ ç£ó‹¤ô‹ljô²ßk#Ä�EÖZÖZ×ZÝÙZó *µfKLª×BÄSÙ˜´…´…WakerÁµ…݉…­3‹e]éö��‘ƒ†’݆0ûËß*õŠ�Ÿg£ýÆ£ÿ £ îš/Ÿ2ÖZ%I NîšpŸuÖZU Xîš{Ÿ^f™´…ž� �¢�£�k!ES]b˜öŸgýÆÿ <ùü×*ü×! ÷:$‡ü­Z$È  ÷,¾ ÷��BІ4À Þ"„,Á"ü•2ü•) Ý"¸<¿.Íüëb$† „,ü ‘“8Þ¯Œ‹ló$ø Á´Ä$óýDø†+ü›kÙ´Û´Ü´ËÝ´óÞ´ß´¸±Ýæó}rÑ÷ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw��”Öîšîš�ðš¿ ð[$²òVá=µ•4 Ä$§ �…�…lŸ…݉… … local_wakerÁ‰…¡…extÁ‰…¢…_markerÁ‰…£…_marker2Á‰…8íœ}©½œcxÁ�¡ì<ü ÀÀUniqueÁ¿ µÃ•!µ´]8"»OÿÄ®®«°¿ ”3¯f*²Û�Ä Ä•üÚ*üÚ! ÄÀ$Ž1ü¬b$Ç Ù,½ ÄÙ›$$GÀ$‹4Ö Þ"Ï,×"ü³*ü³!À$<Õ!ç4ü…b$  Ï,–‰%ƒ5Ó%ŸÀ${$¯& Å™L«&  ¬&‡'º&Hüó%G‡'řǙș­É™Ê™àË™óG*¤�R{9 ‡'´Š& ,€&Ñ'º�$‘(,�( ê"îšîš�ðš¿ ð[$²òVá=µ•4  œ`W\Š(¬�(D�( Ê\¨),#üô''dô' GœE˜(*¡(Lü‘'�Ù´Û´Ü´ËÝ´óÞ´ß´¸±Ýæó}rÑ÷řǙș­É™Ê™àË™óG*¤�R{9 FœÄÑ'õ(Dž'Æ!¸'îšîš�ðš¿ ð[$²òVá=µ•4¨)W¦)Ì õ(è¨)ßhç!l(ï( ß)£Š*Dß(¤ß(Lè( Hœ7\è(ù(Mü§(RÍ'´¾( ¨),´( œ~¨)@±-ƒtà*<å* ã\„$à*Lå*¼à*4ï* Ò\¸IDï*üà*%Lø* G‘E‚+lø*‹+Qü�*ŠÙ´Û´Ü´ËÝ´óÞ´ß´¸±Ýæó}rÑ÷řǙș­É™Ê™àË™óG*¤�R{9 F‘Ľ*îšîš�ðš¿ ð[$²òVá=µ•4 „$Ž*Æ!¤*îšîš�ðš¿ ð[$²òVá=µ•4 ‘�¦1ÇXç!\LÁ.òð.Éœ/¤DÉ+Þ,Ë+¤É+LÒ+ H‘<\Ò+ã+Rü‘+RÍ'´¨+Ó,ž+ß}3Þ™ð2{<Ò1ü°1*ü°1! T÷:$à1Wü†1Z$¡1�,—1œx�9—4}4™3Þ,š3üî22üî2) T‘<˜3&¦3ZüÄ2b$ß2Ó,Õ2ß2Þ›Ä5}”“<L˜< GÄ$“<¢<l˜<«<lü†;¥Ù´Û´Ü´ËÝ´óÞ´ß´¸±Ýæó}rÑ÷řǙș­É™Ê™àË™óG*¤�R{9 ¨ üÝ;+îšîš�ðš¿ ð[$²òVá=µ•4 Ä$ ;Æ!¾;ç!Ë6O$Ü>,Û> ê"îšîš�ðš¿ ð[$²òVá=µ•4 Ù]T\Õ> ÀÀ±"¿ µÃ•!µ´]8"»OÿÄ®®«°¿ ”3¯f*²Û�Ä Ä�¬Ì>DÌ> Ê\Ñ8º#üÌ>#Lâ>Ë6?ì>lâ>ù>süå=” Ù´Û´Ü´ËÝ´óÞ´ß´¸±Ýæó}rÑ÷řǙș­É™Ê™àË™óG*¤�R{9 FÄÄ¥>»9Dò=Æ!Œ> 8"Ñ8Éì9* »9FÙ=Œ;EGç!Kµ9p°;~Ë6ZD¿? ž:Ü:Œ;%¤¿?LÈ? HÄM\È?Ý?tüƒ?ZÍ'´š? Ù,�? Ĕٌ;#Gó>ŠüÑA$ŒÖA å\£ÄyÄ £ ÄUÿ$ÑA™@dèAüÖAüÈA=LøAË6üÈA/‚BløA�Bxüè@§”<¬¤Aîšîš�ðš¿ ð[$²òVá=µ•4 £$õ@Æ!‹A 8‰ç!~‹@0Ë6ÍDìAÄôAyÑ8ëA™@'ëA éA® E4ÕBÄ”ÕBLÜBó>)\ÜBñBzü™BXÍ'´°B £,¦B¿?m6ó>t<”D ž:Ü:Œ;%üòC*üòC! TÄP$¦D}üÄCb$ßC³?,ÕC¿?ŽÙŒ; @ÿD„‡'0Á‡'0b01Á‡'0b10ÁÌÉ@ „É@ • <Ú@“‡' 8¬ë@$û@ Å™å% ,|ë@ š2řǙș­É™Ê™àË™óG*¤�R{9 å‚“ ÿ@ü»@G � �AˆAü‹?ý—£$¡?ÿ`ÿ`V�a¬â`½68ŸœRt‡'f“2“2 UnsafeCellÁ•2�ñ.ç–\*=°"�»Gi»Gi¤—“‡'9‚û«,Љ¶ñ\õ6FutureÁ4‚¿´7 þ LŠ!8ÿ \ÐS‹ 4ÝE€ù Låb�â,«„üŒü>; Core traits and types for asynchronous operations in Rust.ÁüK´ü6ü¿6|\9‚û,«-‰,ñ+6ÕI$¿´7 þ #!8ÿ "S‹ !E€ù  b�â„ÌÏÒ”ýÉ„©¾t¼d Futures.Á4Ä !,DerefMutÁDé"�6îšl; A future which tracks whether or not the underlying futureÁüÐ  should no longer be polled.Áð �üô NK `is_terminated` will return `true` if a future should no longer be polled.Áüà DA Usually, this state occurs after `poll` (or `try_poll`) returnedÁüˆ NK `Poll::Ready`. However, `is_terminated` may also return `true` if a futureÁü× MJ has become inactive and can no longer make progress and should be ignoredÁü¥ 0- or dropped rather than being `poll`ed again.Á\à ÿÆ¡(üÖ ’¿´¡(4í ð]*‚^ð]4‚^'üÆ üú GD Returns `true` if the underlying future should no longer be polled.ÁlÉ « «¡(Bÿ ×  ¡($Ø üê <8¬‚¬ÿÆ÷4€÷\ò ÈÇ÷,‰ò ï ü­l°­ ­òBÿ ¾ 8÷$¿ü‹YŒþƸ �é"¸D·ÈǸ,‘\Ø„<>üëlî® ®„Bÿ ü ¸$ý´Ñ”ÕÕI4ù¿´ lò„†4�ð]œ†ð]ð]üŸJ‚��  À´Ä¨ ¬ÓãS §þÆý ª¿´ÄìÌÿÆÄ4ÃÄ ¤FHCEüì8üðGD A convenience for futures that return `Result` values that includesÁü¸30 a variety of adapters tailored to such futures.ÁLö!!ð]üì ‚^4�¡(ÔŠ!ð]/‚^+Åf"ð]>‚^:Åf1"#$"#$þÆ"¡(Dè‰gþÆ#¡(\ª¦g$<èü«85 The type of successful values yielded by this futureÁí!!Tªüö/, The type of failures yielded by this futureÁ,¯!!ü«_ü»30 Poll this `TryFuture` as if it were a `Future`.Áó�üûLI This method is a stopgap for a compiler limitation that prevents us fromÁüÌJG directly inheriting from the `Future` trait; in the future it won't beÁ\› needed.ÁD®¯°±îšîš�ðš¿ ð[$²òVá=µ•4 ¯¡( °�…�…lŸ…݉… …ë ‰…¡…„!‰…¢…•!‰…£…ª!‰…8íœ}©±Ù´Û´Ü´ËÝ´óÞ´ß´¸±Ýæó}rÑ÷ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw‘g®gBÿ! Á! $¡($·ç!ÍüŽR‚&�'�(('&‘d¬ÉãS –«d ™»dìÂËd4¹Ä)*+"#$+ “=?CE<çì%%÷ Tø,ý%%ý ü›MDž²³´îšîš�ðš¿ ð[$²òVá=µ•4 ²Ä ³�…�…lŸ…݉… …ë ‰…¡…„!‰…¢…•!‰…£…ª!‰…8íœ}©´Ù´Û´Ü´ËÝ´óÞ´ß´¸±Ýæó}rÑ÷À´ÄBÿ% ±% +Ä÷ ý @ç!Ñd¤Ó«Œ�ÌŠD¨çÛŸ,.œMUé",-�Xîš,-l[�…,- »^Ù´,- ÕIa¿´,- ®* ,-Îý ,-ñ3 ,-» ¦,-þ !,-Þ Ý,,-,»ŒÍéüå<‚00Ëd4ûÄ\íÈÇÄ,„Ù11 êü¬l¯µ µÙBÿ/ ½/ 1Ä$¾ü¶DÓ‰| ¼š‚33þÆÄ »÷t\¾Ï44ü…lˆ¶ ¶ÏBÿ2 –2 4Ä$—dæŒÌLÒ�#!®›ECº¨geÇt—Ì Asynchronous streams.Á4Ÿ?BES[bmœMD*é"9:�Cîš9;lœJt8=TL02!#̶üjJG An owned dynamically typed [`Stream`] for use in cases where you can'tÁüµ@šOö�üúhe This type is often created by the [`boxed`] method on [`StreamExt`]. See its documentation for more.Áã�üç^[ [`boxed`]: https://docs.rs/futures/latest/futures/stream/trait.StreamExt.html#method.boxedÁüÆUR [`StreamExt`]: https://docs.rs/futures/latest/futures/stream/trait.StreamExt.htmlÁÓ«Œ¢ÌœL¿¾@�AA@ãS Íîšîš�ðš¿ ð[$²òVá=µ•4ŸŸ ç£ó‹¤ô‹ljô²ßk#EF÷ ýƾ�É–˜ô”ü�41 `BoxStream`, but without the `Send` requirement.ÁÂ�üÆnk This type is often created by the [`boxed_local`] method on [`StreamExt`]. See its documentation for more.Áµ�ü¹jg [`boxed_local`]: https://docs.rs/futures/latest/futures/stream/trait.StreamExt.html#method.boxed_localÁü¤U¯{Ó«Œ€Ìút�¾C�DDCãS °îšîš�ðš¿ ð[$²òVá=µ•4ŸŸ ç£ó‹¤ô‹ljô²ßk#EF÷ ¾�¬�’„€ üé/, A stream of values produced asynchronously.Á™ �ü� PM If `Future` is an asynchronous version of `T`, then `Stream` is an asynchronous version of `Iterator`. A streamÁüµ PM represents a sequence of value-producing events that occur asynchronously toÁ|†  the caller.Á– �üš LI The trait is modeled after `Future`, but allows `poll_next` to be calledÁüç MJ even after a value has been produced, yielding `None` once the stream hasÁ̵  been fully exhausted.Á/üÏ 0 streams do nothing unless polledÁ4Š EEð]ü€ ¼Eð]ð]FGHFGHþÆF¡(T½ ¾ˆHGL½ ü— ! Values yielded by the stream.Á$ EEü�UüÍ FC Attempt to pull out the next value of this stream, registering theÁü˜LI current task for wakeup if the value is not yet available, and returningÁüé&# `None` if the stream is exhausted.Á”�”œ # Return valueÁ³�ü»HE There are several possible return values, each indicating a distinctÁŒˆ stream state:Áž�ü¦FC - `Poll::Pending` means that this stream's next value is not readyÁüñMJ yet. Implementations will ensure that the current task will be notifiedÁüÃ'$ when the next value may be ready.Áï�ü÷EB - `Poll::Ready(Some(val))` means that the stream has successfullyÁüÁKH produced a value, `val`, and may produce further values on subsequentÁÄ‘ `poll_next` calls.Á®�ü¶C@ - `Poll::Ready(None)` means that the stream has terminated, andÁüþ.+ `poll_next` should not be invoked again.Á±�d¹ # PanicsÁÊ�üÒUR Once a stream has finished (returned `Ready(None)` from `poll_next`), calling itsÁü¬NK `poll_next` method again may panic, block forever, or cause other kinds ofÁüÿIF problems; the `Stream` trait places no requirements on the effects ofÁüÍKH such a call. However, as the `poll_next` method is not marked `unsafe`,Áü�GD Rust's usual rules apply: calls must never cause undefined behaviorÁüéJG (memory corruption, incorrect use of `unsafe` functions, or the like),Áü¸%" regardless of the stream's state.Áâ�üêOL If this is difficult to guard against then the [`fuse`] adapter can be usedÁü¾IF to ensure that `poll_next` always returns `Ready(None)` in subsequentÁTŒ calls.Á›�ü£YV [`fuse`]: https://docs.rs/futures/0.3/futures/stream/trait.StreamExt.html#method.fuseÁL„·¸¹îšîš�ðš¿ ð[$²òVá=µ•4 ·¡( ¸�…�…lŸ…݉… …ë ‰…¡…„!‰…¢…•!‰…£…ª!‰…8íœ}©¹Ù´Û´Ü´ËÝ´óÞ´ß´¸±Ýæó}rÑ÷řǙș­É™Ê™àË™óG*¤�R{9 ƈBÿE ˜E G¡($Žç!¤üó%-üÜ=: Returns the bounds on the remaining length of the stream.Áž�ü¦GD Specifically, `size_hint()` returns a tuple where the first elementÁüòB? is the lower bound, and the second element is the upper bound.Á¹�üÁRO The second half of the tuple that is returned is an [`Option`]`<`[`usize`]`>`.Áü˜KH A [`None`] here means that either there is no known upper bound, or theÁüè)& upper bound is larger than [`usize`].Á–�Ôž # Implementation notesÁ½�üÅGD It is not enforced that a stream implementation yields the declaredÁü‘ JG number of elements. A buggy stream may yield less than the lower boundÁüà -* or more than the upper bound of elements.Á’!�üš!LI `size_hint()` is primarily intended to be used for optimizations such asÁüë!C@ reserving space for the elements of the stream, but must not beÁü³"DA trusted to e.g., omit bounds checks in unsafe code. An incorrectÁüü"DA implementation of `size_hint()` should not lead to memory safetyÁ|Å# violations.ÁÙ#�üá#FC That said, the implementation should provide a correct estimation,Áü¬$FC because otherwise it would be a violation of the trait's protocol.Á÷$�üÿ$QN The default implementation returns `(0, `[`None`]`)` which is correct for anyÁ\Õ% stream.ÁLö%º º¡(Í'BÿE €&E H¡($�&ü¾&28»�J»JÿÆœ4Æ&Eœ4Ï&ÈÇœ,Ø&—KLMFGHML Ã&L÷&$ü&IIÑ+ü‘'XL”'¼½¾îšîš�ðš¿ ð[$²òVá=µ•4 ¼— ½�…�…lŸ…݉… …ë ‰…¡…„!‰…¢…•!‰…£…ª!‰…8íœ}©¾Ù´Û´Ü´ËÝ´óÞ´ß´¸±Ýæó}rÑ÷řǙș­É™Ê™àË™óG*¤�R{9 F—BÿI ¬'I L8œ$¢'ç!mü§(-Lª(¿ ¿—Í'BÿI ´(I M8œ$µ(üý(OŒOOÇa ‚)×aD¤)æa,¯)E‘4Å)„PQRFGHQR8:LÓ)$Ø)NNå0ü�*TL„*ÀÁÂîšîš�ðš¿ ð[$²òVá=µ•4 À„ Á�…�…lŸ…݉… …ë ‰…¡…„!‰…¢…•!‰…£…ª!‰…8íœ}©ÂÙ´Û´Ü´ËÝ´óÞ´ß´¸±Ýæó}rÑ÷řǙș­É™Ê™àË™óG*¤�R{9 F„BÿN ˜*N Q¸,ç!5ü‘+-L”+à ÄÍ'BÿN ž+N R¸$Ÿ+ìº/üç+>; A stream which tracks whether or not the underlying streamÁü¦,›YÆ,�üÊ,NÐYü™-NK Usually, this state occurs after `poll_next` (or `try_poll_next`) returnedÁüè-MJ `Poll::Ready(None)`. However, `is_terminated` may also return `true` if aÁü¶.LI stream has become inactive and can no longer make progress and should beÁüƒ/63 ignored or dropped rather than being polled again.Á\Ä/SSð]üº/‡E¡(4Ñ/Sð](Ì´ð]3Ì´)TTTüŸ0 üÞ/<9 Returns `true` if the stream should no longer be polled.Ál¢0Ä Ä¡(BÿS °0S T¡($±0üÃ0<8Å‚VÅVŠ`4Ë0S÷\Ô0¨`,â0òWTW È0ü†1l‰1Æ ÆòBÿU —1U W8÷$˜1üä1YŒYYÇa é1×aD�2æa,›2S‘\±2„ZTZ+-üÄ2lÇ2Ç Ç„BÿX Õ2X Z¸$Ö2´ª3”®39]‹ 4Ò3E[\lË3„ß34é3]]ð]œß3]ð]ð]üø3H�_�`�a`a_FĨ œ¬4ãS €4«d ƒ4EÄÜ¥4ÿÆÄ4œ4Ä ý3;=ACüÃ58üÇ4GD A convenience for streams that return `Result` values that includesÁü�53çdLÍ5bbð]üÃ5ÄÌ´4Ø5]¡(Ôá5bð]0Ì´,—¼$ð]AÌ´=—¼5cdecdeþÆc¡(D¿6ß¼þÆd¡(\�7ý¼e<¿6ü‚68ÕfÄ6bbT�7üÍ6/¬g,†7bbü‚9ƒü’730 Poll this `TryStream` as if it were a `Stream`.ÁÊ7�üÒ7LÄhü£8JG directly inheriting from the `Stream` trait; in the future it won't beÁ\ò8íil…9ÈÉÊîšîš�ðš¿ ð[$²òVá=µ•4 È¡( É�…�…lŸ…݉… …ë ‰…¡…„!‰…¢…•!‰…£…ª!‰…8íœ}©ÊÙ´Û´Ü´ËÝ´óÞ´ß´¸±Ýæó}rÑ÷řǙș­É™Ê™àË™óG*¤�R{9 ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òwç¼…½Bÿb ¦9b e¡($œ9ç!º9ü‰:P�g�h�ighiŸºœÄ:ãS ‘:«d ”:¾ºܽ:̺4´:Äjklcdel Ž:?AEG<à:å:ff÷ Tñ:,ö:ffý ü†;‚l‰;ËÌÍîšîš�ðš¿ ð[$²òVá=µ•4 ËÄ Ì�…�…lŸ…݉… …ë ‰…¡…„!‰…¢…•!‰…£…ª!‰…8íœ}©ÍÙ´Û´Ü´ËÝ´óÞ´ß´¸±Ýæó}rÑ÷řǙș­É™Ê™àË™óG*¤�R{9 ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwcÄdÄBÿf ª;f lÄ÷ ý ×ç!àdÉ<Ó«Œµ<̯<DÍ<9ç€=ŸmoœM(é"mn:�(îšmn;l(�…mn=» (Ù´mn>Ê I&?mnè )$Bmn‹ !Emnÿ é Smn¼ œ[mnù HbmnÞ Ømmn,à<Œò<äüŠ=2�qq̺4’=¾º4›=ÈÇÄ,¤=ÙrstFGHst �=LÇ=$Ì=ppž=üå=XLè=ÎÏÐîšîš�ðš¿ ð[$²òVá=µ•4 ÎÙ Ï�…�…lŸ…݉… …ë ‰…¡…„!‰…¢…•!‰…£…ª!‰…8íœ}©ÐÙ´Û´Ü´ËÝ´óÞ´ß´¸±Ýæó}rÑ÷řǙș­É™Ê™àË™óG*¤�R{9 FÙBÿp €>p sÄ$ö=ç!:üƒ?-L†?Ñ ÑÙÍ'Bÿp �?p tÄ$‘?ü…@:Ó‰|ï?¼é?�vvþÆÄ Š@¾º4�@£wxzFGHzx$&LÊ@$Ï@uuž=üè@QLë@ÒÓÔîšîš�ðš¿ ð[$²òVá=µ•4 Ò£ Ó�…�…lŸ…݉… …ë ‰…¡…„!‰…¢…•!‰…£…ª!‰…8íœ}©Ô”`.Á/�ü3LI This macro bakes in propagation of `Pending` signals by returning early.Á€�ü„HE **Note:** Since Rust 1.64, this macro is soft-deprecated in favor ofÁüÍ@= [`ready!`](core::task::ready) macro in the standard library.Á)|Ž4% ± î · Å, ¸8› ¹& º8²$», À Á Ã$ Â- Ä*Ç Ê ë8,Ô, Ú8› Û Ý å, ë8,ì'ñ8Î$ó'÷8»$ù'ý8Ë,ÿ „ †8ª …*ˆ8ª ‹$ Œ, š8,›' 8Î$¢'¦8»$¨'¬8¸<®*¶84¹, À8,Á'Æ8Î$È'Ì8»$Î'Ò8¸<Ô$ Û% ì”?t046TG†Â\ü�¤„bdf…�“”•´HT“2†‡ñ&ûc†ˆñ,;´…†‰ AtomicUsizeÁ\O� †ŠF4sš�†ŒF›�†ŒG<{˜�†�G™�†�Ð<„–�†ŽÐ—�†Žƒ4Œâ`†�´ðL áŒ/ÒœG·„`¨ªƒ…]_”€ÓÒÜÝìÜüÓ(R´¹ü•0- A synchronization primitive for task wakeup.ÁÆ�üÊIF Sometimes the task interested in a given event will change over time.Áü”NK An `AtomicWaker` can coordinate concurrent notifications with the consumerÁüãLI potentially "updating" the underlying task to wake up. This is useful inÁü°JG scenarios where a computation completes in another thread and wants toÁüûPM notify the consumer, but the consumer is in the process of being migrated toÁ¼Ì a new logical task.Áä�üèPM Consumers should call `register` before checking the result of a computationÁü¹JG and producers should call `wake` after producing the computation (thisÁü„LI differs from the usual `thread::park` pattern). It is also permitted forÁüÑGD `wake` to be called **before** `register`. This results in a no-op.Á™�ü�QN A single `AtomicWaker` may be reused for any number of calls to `register` orÁ\ï `wake`.Áû�¬ÿ # Memory orderingÁ• �ü™ JG Calling `register` "acquires" all memory "released" by calls to `wake`Áüä GD before the call to `register`. Later calls to `wake` will wake theÁü¬ PM registered waker (on contention this wake might be triggered in `register`).Áý �ü� OL For concurrent calls to `register` (should be avoided) the ordering is onlyÁüÑ $! guaranteed for the winning call.Áö �tú # ExamplesÁ‰ �ü� NK Here is a simple example providing a `Flag` that can be signalled manuallyÁ¬Ü  when it is ready.Áò �<ö  ```Áüþ  use futures::future::Future;ÁüŸ 41 use futures::task::{Context, Poll, AtomicWaker};Á¼Ô  use std::sync::Arc;Áüì &# use std::sync::atomic::AtomicBool;Áü“-* use std::sync::atomic::Ordering::Relaxed;Á´Á use std::pin::Pin;ÁØ�”Ü struct Inner {ÁÜï waker: AtomicWaker,ÁÄ‹ set: AtomicBool,Á,¤ }Áª�¤® #[derive(Clone)]Áäà struct Flag(Arc);Áà�|ä impl Flag {Áôô pub fn new() -> Self {Áü“! Self(Arc::new(Inner {Áüµ*' waker: AtomicWaker::new(),Áüà,) set: AtomicBool::new(false),Á|� }))ÁL� }Á§�ô« pub fn signal(&self) {ÁüÊ,) self.0.set.store(true, Relaxed);Áü÷  self.0.waker.wake();ÁL˜ºò,¢æï¨�Ô¬ impl Future for Flag {ÁÌÇ type Output = ();Áá�üåIF fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<()> {Áü¯A> // quick check to avoid registration if already done.Áüñ)& if self.0.set.load(Relaxed) {Áü›'$ return Poll::Ready(());Álà }ÁÑ�üÕ.+ self.0.waker.register(cx.waker());Á„�üˆKH // Need to check condition **after** `register` to avoid a raceÁüÔA> // condition that would result in lost notifications.Áü–)õõüÀ Poll::Ready(())Á¤à } else {Áìõ Poll::PendingÁl“ØöL¡ºò,«æï<±Üì\Ä£0ûËß*õŠ�‘’”Ö,Ö†��õHüî ,î†��ªI¤ã<<é<†‡'ÄÅ=\Ë=†‡'œ¶>4¼>†‡'„Ó>£—šœ�Ô‹?äê> Create an `AtomicWaker`.Á˜?£Bÿ–– —´ó?Tù?†˜˜ð]Ìó?ÿ ¡($…@˜ð](Æýð]3Æý*Ì•@åüýP%üŽA:7 Registers the waker to be notified on calls to `wake`.ÁÍA�üÕAKH The new task will take place of any previous tasks that were registeredÁü¥BJG by previous calls to `register`. Any calls to `wake` that happen afterÁüôBHE a call to `register` (as defined by the memory ordering rules), willÁüÁCLI notify the `register` caller's task and deregister the waker from futureÁü’DIF notifications. Because of this, callers should ensure `register` getsÁüàDC@ invoked with a new `Waker` **each** time they require a wakeup.Á¨E�ü°EJG It is safe to call `register` with multiple other threads concurrentlyÁüÿEGD calling `wake`. This will result in the `register` caller's currentÁìËF task being notified once.ÁíF�üõFKH This function is safe to call concurrently, but this is generally a badÁüÅGKH idea. Concurrent calls to `register` will attempt to register differentÁü•HLI tasks to be notified. One of the callers will win and have its task set,ÁüæH>; but there is no guarantee as to which caller will succeed.Á©I�t±I·ëÄI�üÌI<9 Here is how `register` is used when implementing a flag.Á�J�<•JÜìü¡J íìüÆJ4—íüÿJ&õíüªK-¥î´ÜKÛî÷K�ŒÿK struct Flag {ÁÜ•L¡ïĵLÅï,ÒLæïÜL�ÔäL…ỗM¨ô¡M�ü©MI×ôü÷MKH // Register **before** checking `set` to avoid a race conditionÁüÇN74 // that would result in lost notifications.ÁüƒO,) self.waker.register(cx.waker());Á´O�ü¼O'$ if self.set.load(Relaxed) {ÁüèOíø¤ŒP•ùì¥P²ùlÇPØöLÙPºò,çPæï<ñPÜìD„Qר ×£ ØåÀ@Bÿ– �Q– š$ŽQÝ,”Q­Rš�›�›�››š›¡@‡'‡'UÿÀ@”Äwü¶v:7 Calls `wake` on the last `Waker` passed to `register`.Áõv�üývB? If `register` has not been called yet, then this does nothing.Á$ËwÙ Ù£À@Bÿ– Ðw– œ$Ñwü¸{#ü³xPM Returns the last `Waker` passed to `register`, so that the user can wake it.Áˆy��y�ü˜y[X Sometimes, just waking the AtomicWaker is not fine grained enough. This allows the userÁüøy[X to take the waker and then wake it separately, rather than performing both steps in oneÁ”Øz atomic action.Áïz�ü÷z<9 If a waker has not been registered, this returns `None`.Á$¿{Ú Ú£»GBÿ– Ä{– �$Å{䨄£Ÿ÷Ÿ¤û„<þ„£Bÿžž Ÿü¯…£¡ g¡üÕ…8Ø…ÛÜÝ Û£ Ü€g€gŠ‚gê ûcƒgbufÁûcØ«q¢1È¡ÝÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwÀ@ĤĤŤ•  Ñâó:½ÖàMBÿ  Ü…  ¡$Ý…œ ã…üº† £üÞ† £üè°TnŒTLZˆ ! § ˜ CB· Ÿ ed¾   ‡†¿ ¯ ©¨Î K/Ë  Ë0ËØ0Ë}6Ë ÑËÞˤ8Ë ÁËÎËk:Ë;Ëb?Ë ¨ËµË™9Ë ê&Ëv7Ë ¼'ËÉ'Ë)7Ë5Ë ¨*˵*ËÎ4Ë$2Ë ù0Ë1ËÖ0ËÜ+Ë ¾9ËË9Ë))Ë Â;ËÏ;Ë&Ë �>Ë�>ËÍ%ËF$Ë �AËœA˹#Ë#Ë%Ë ›QËÚËäËQË æ…Ëú…Ë–ÕIBhttps://docs.rs/futures/latest/futures/future/trait.FutureExt.htmlÁ FutureExtÁ boxed_localÁášÕIboxedÁ¨›¶›ÕI¿´Ñ›áš¨›¶›Ñ›€‹ E¶›fuseÁ­Bhttps://docs.rs/futures/latest/futures/stream/trait.StreamExt.htmlÁ StreamExtÁ?https://docs.rs/futures/0.3/futures/stream/trait.StreamExt.htmlÁ°Ñ›€¶›‹ ¨œ­¶œýœ°‹�Ñ›€¶›‹ ¨œ­Ç™¶œ°Å™ýœ‹�Ñ› core::taskÁûcore::task::readyÁö…מûready!ÁëžמÍ„—Ÿëžû—Ÿù ÿ …Ìí¦£¬©ö€#…#ˆ#‹#Î!Ñ!Ö!ÔPŽQ—PŽPÄQýÆþÆÈÇ÷±¯²ƒè‚¹p8+p~ž®Çæûä.»u39,ÚØjئá�ì.®™ˆ™He%ì’µlDj(€/’qe®Ç»‡M,ð:€ý0»ÀîÌ LÚ66ûý‹ösPFH6ŒÙ«(vç6¦¼M¨£ ™Ž“`¤Ø±]K2ÆËMûv5ÏÙ�½ ów–#>lñÀÃ5 ý„w£´VWժşÔ)ýúš)©K#‘Ðòê}ŸFÍþr3-ˆw¥iœ/ÛK>00Ç}¾Î€£ž–^ââ)#À •‘KM>ÁØGpåv"½mˆúârn”ë÷ƒÀ½,Áü{|/« �? Îºgå'­•îs‡@ÓÍ'ÁV<‘AׯYVߦhä’rˆÙ†­!?3Õá®èz®¤`×N®åèUÛ�Ë]ˆ»‡Z¸"˜DoáoX¯~úM·&%¿ðû¹2Y(hÒÀè×jÓ!ÎW†W6ä”Êd#‰{ “7Ç+±Lï®@‰Ê]³¢oaó$ ãÉ0£ŒiP?wÍYMÍ“L-Ô¾ÉÓ™£e œÇèÕKz(7Ê£KžM@oá4Ò«ì#>$ô‘°Œ,ý]"6æ'Øã)~ß”Rˆ²ÿï½_ô¨W…7‰™ YØuòe2vÑí@&|åR„ ëßD"¸$�S3Ç‹¼*žˆhF¾~¸hYá2ÅÒxSúõ_W7P0ç›?#X#-aÉI"ûÄÞ+NØkÁuo…3;Øœmôn!âÃÞ°,À ­pƒçAtOI6IÔ­´ó¬Ãj Á]šU[¨kñÈ3‡7D_Y^�Ò΄"ÉIäC¨©vfo&·šñ§ÎŽ}S#þµ³¡&¾>§ˆI½Ÿ÷çyAÏát.޽$KÍóvw¿!ö»6´ÚÌßMIDr9q&µ@±?S±³ì“ „s€ž:+7J%íåßï—&Aç(nmèë¸è O %‘~a÷Ükaã†^q |oìá®±ãCÉ;u†{¦~w Ú2g\_»•ñ]"iˆCæÆ<í:÷_N/™úHÀku69_kN“±ÜÏ1σ¼ž­87hD#úÒ›‰>¼{ËEõ¼ZIŸ4t¨.ݬŒ¹pÁ̬}TZ ×®¥•‰\Z~ä¡ÂhVýjë+]mv½y½žw”ì9>º*�”\®¥GèÖ°(Ž«�„îX_G­×²¼ëÖœ$ pɵ÷o9ûhKu{‚]ñµöJë'æœr—GY6ó¦úÇ™[O·ú1êùÙšö¤ˆ¯Á¤ \@XÞ÷gõÔÄÏaÖÿ‚T‚, $ ‚4Tl7ÛT~ާAC³Ý¤‰õ€|„šñUF¸i™ÌÝÊ[O s@YH„ênjT¼N<Ç^È{Ø®3¶–˜Ç-öÎ{ …|7Ÿÿö±âëׯ"VT†hÌ€"¹Õ)›rØZæ"Q‹é÷ƒ³l0¹‰ÿ‰v9ûr.œŸ‰Lø¸Z:ŠxxQ¾CÑ蜰 ãAÄ%ª‘^9š*!8`9�ƒ×)<´ÝÏ}æÿJ§®a¹§"¯i)Òð' š‡1œ%äÑD³3Gj¸,Ê^Ò…Gˆf^¨u(-ü›RH�øé™&Âíq-°Jÿ5ëkT²4ýü(…ö¼üµÙŠ÷#XJnOQb»Û™¹[gJÇ«¾¡2Î?–°Âû-`ö’ÑÙ@z¤]©¥8qÜÉþÍcß§z�€5h{pKðä�‰Üœ˜P±½Q…àAk*zbB$yh¸[¬RE}þ¥+­= ï•0ZÑdÝ|‰†íc xš^aóíé³éü±‚¸&nÇ–/8öÀ_m«®YK+GN·ðO›àNxÎæ¥uš×)BC”×êcŸ´*å.ÜdÁ�Gþú™ÿ7@�ô‘-§9~��Ñ˹ G5 ²C Sü²jc—÷U/Î�¦_¥ç~@µý•B°Ÿ“¢e:3É)öbp1nÔ;ƒU3Ø‚>©Öp!hû¸ Æ¡ Ä7î|¾4ÖLäÔõÓ‘ÂgvWõ_«:/@“h6¹Sõ6EÿHùÐËo¾à¨ÿñÀªbjW"ß„O(GsÑP:˜Èß6�dwV‡ôô¯}3Ó´Þ2̳V;|91oe’¤8?]È×ÎHæÙ‰Í¨’“¬›€#3%3½CÞ]ü]3<3ÔCõ]^¢.O1ã2¬CêY]\µ]f~¬.T1ò2±CõYb\Æ]q~X�¼ %›&û0å 8ï;\ó cØj‹n² nF%h&z&'' '''';'*H,Â.f/Ö//0 0ò011_1 2J3¡3ð3 667M7e7Ê8Í9Ñ9Ø93:†:ä:6;Y;{;�;À;< AçC(#DMïRkSƒS+U…UèUV¡WôW Z¥Z[\[³[\$\*\m\ ]"^D^h^a§a¾a×aØcÖdÚdádCe[eýfQg¼gÔgãh+iiÓi%jHjjjŒj¯jNkZkfn n¥oªo¯o´o¹o»o¿oÃoÉoèRo/}K}f}{}�}¥}Â}~�~“2~%†‡†v‡r‰�‰È‰æ‰‹*‹<‹D‹e‹‡‹©‹Ë‹í‹¸%•&¶.ú0Y13å8è;¶CZ \g\×]ócÔjVk‰nªn|~·.¹/…0Y1Ü13ö6:É:¹CBSÁUZæZ˜[g\Ý\Ú]gae•g¶i'}±}|~�~~‰Ô‰#‹6‹                      +·%”&A)+Z.+/î/¸0ø0"1Ÿ2�3Þ35:7Q7}7ã8K:ü:ç;>K@}CD•K³RoS›SCUìUV¹W­YjZ[Ë[ \0\p]3^U^6_«aÂaïañcGesegÀgìgCiëiÓjSk£lˆn§n}3}O}j}}”}ÿ}%~Ò…;‡7‰¨‰ÿ‰A%_&e&h&o&v&ÿ&' ' '''7'***1,7,D,½.a/Â/Ñ/*0Ž0›0î011Z1Ý1ì1ù12F3�3ë3›6 77%727I7`7Æ8É9Í9Ó9:.:�:Ò:ß:2;V;x;š;¼;9<>Ô>á>ù@ÿ@ AãC#DMêRXSgS~S&U€U×UäUûUœWðWZ ZïZþZW[¡[®[\ \&\h\Þ\í\ú\]^@^b^ aza‰a–a£aºaÑaÔcÒdÖdÜd0e?eVeøfLg«g¸gÏgßh&izi¿iÎi!jEjgj‰j«jKkVkcn�n¢o§o¬o±o¶o¹o½oÁoÅoäo+}F}b}w}Œ}¡}¾}~}~Ž~!†ƒ†q‡m‰Š‰Â‰à‰‹$‹7‹A‹b‹„‹¦‹È‹ê‹ ŒŒŒŒ%Œ+Œ2Œ9Œ?ŒFŒMŒSŒYŒ_ŒfŒmŒsŒzŒ€Œ‡ŒŽŒ”ŒšŒ¡Œ¨Œ®Œ´Œ»ŒÁŒÇŒÍŒÔŒÛŒáŒèŒïŒõŒüŒ� ����#�)�/�6�<�B�H�P�b&l&s&�&''''5'=)* *{+5,9,V./Æ/Ö/�0 0ô011á1î1û1›2Œ3Ú3÷4 77'767M7e7ß8Ñ9#:3:Ô:ä:u;—;¹;ã;<Ò>Ö>G@ý@AyCD}K›R\SkSƒS+UÙUèUV¡W©YRZóZ[£[³[\$\,\â\ï\ü\l]/^Q^_~a‹a˜a§a¾a×aícÚd4eCe[eýf­g¼gÔg+iÃiÓidj†j¨jÏjPk l…n¤n¥oªo¯o´o»o¿oÃoâo}/}K}f}{}�}ç}!~º…#‡‰�‰æ‰>‹�‹£‹Å‹ç‹ ŒŒŒŒ"Œ(Œ/Œ6Œ<ŒCŒJŒPŒVŒ\ŒcŒjŒpŒwŒ}Œ„Œ‹Œ‘Œ—ŒžŒ¥Œ«Œ±Œ¸Œ¾ŒÄŒÊŒÑŒØŒÞŒåŒìŒòŒùŒ�� ��� �&�,�3�9�?�E�M�U�`)*ž+A,m.O/‡/Î/0D0˜0Ü051Ž1é1ö12²2™3ç3�6Ï67"7/7C7Z7¨8í9+:o:®:Ü: ;9>Þ>j@ A�CDûLØRSdSxSUiUšUáUõU„WÞWÀYŽZÆZûZ@[q[«[ï[C\œ\ê\÷\]ƒ]<^^^ï`=a†a“a a´aËa¶cödØ>L@A~CDïLÌRñR^SpSüT]U‡UÛUíUxWÒW®Y‚Z§ZõZ4[^[¥[ã[1\o\ä\ñ\þ\q]4^V^ã`a€a�aša¬aÃaªcãd6eHeÓf.gfg¯gÁg»h÷h\i�iÅij }6}R}m}‚}—}§}~(~ƒ~û…9†S‡O‰t‰¯‰Ê‰èŠ‹,‹r)§+S/·/0ƒ0à0Ú1…6ô6G7^7¬8:s:Ç:$;B>s@ÿLÜR@S|S UmU¿UùUˆWâW’ZäZD[–[ó[Û\ó`ea¸aÏaºceTeãf>g“gÍgËh$ili´ij}D}`}u}Š}Ÿ}¯}~‹~ †l†e‡a‰|‰½‰Ò‰ûŠ!‹4‹,/ï/¹05~7L:ý:–K´RœSDUVºWkZ[Ì[7_ðategígDiìi }~Ó…<‡8‰©‰Š-/ñ/º05�7M:þ:—KµRžSFUV»WlZ[Í[8_óauegîgEiíi~Ó…<‡8‰©‰Š/Ú/¤0û4i77:è:�KŸR‡S/UV¥WVZ[·["_Ûa_egØgãh/i×ië}¾…%†'‡#‰”‰ë‰n € À Ì Õ K “ ¥ ® · À Ì Õ  W ` ž ß é ô *C,‘.Ð/š0>1ë1ø12Ò27$717-:Þ:à> A›CfSãUÙYýZ­[L\ì\ù\]¤]ˆa•a¢a>e·gÍiT~Ÿ N CôЯ»f ¹¯x» $!¸!½"{"�"¦"L Aòέ¹d ·­v¹ "!¶!y"MBóÏ®ºe ¸®wº #!·!z"‹$~ˆ"œ"³"Œ" "·"Z/#0ç0Œ6¹8z:+;MãRUyU�WéW™ZP[ú[ú`ÇcêfEgÒhsij~†j‡f‰Â‰‹’.?1Ó2œCÚYM\¥]U~µ%Ž&T.f//0ò01_1™2 6Ý8Ø9™:á;wCïR…U§Y¥Z\[\*\m\j]aëcáddgiÍjNkƒn¢n}¥}~�~r‰È‰‹*‹ }}éìó÷þ"&*:CJ_fm“—ž¥©°·ÐÔáåìóú ,07>ELSZimqu|ƒ‡Ž•™�¡¥²¶º¾ÂÆÖÝäù+;?FMT[_fmt{�”˜Ÿ¦ª±¸ÑÕÜàçîõ '+29@GNU\`dhov}„ˆ�–�¡¨¬³º¾ÂÆÊÕÝêü$).38=PXet‡•𢴹ÉÎÚæëò÷ÿ     " ' , 2 8 > D J P V \ b h n t z € † Œ ’ ˜ ž ¤ ª ° ¶ ¼ Â È Î Ô Ú à æ ì ò ø þ     " ( . 4 ; B I P W ^ "}¸.º/†03$3A3ù6ý67:Ê:¼CÚCÛCESISMSÄUÈUÌUZçZ™[Ý]û]^janarae!e%e˜gœg g·i¹}º}»}¼}€‰Ö‰¤lZ�ŽU�Ê�¹.¾/Š0Y1Ü1B37:Î:ÜCQSÐUZëZ�[g\Ý\^va)e¤g»i½}|~�~…‰Û‰#‹6‹—�œš¡Ÿ™»Gåõa‡'«Xå±À@ËËËËÜ ƒè‚¹p8šøZÃ`*”òÒ£Ò§ÒËÒ»ÒâÒ°ODHT Þ·Þe:3É)öbËp1nÔ;ƒUÌiœ/ÛK? Îºgå'¦f˜›xÞu¡&¾>§ˆINÔÄÏaÖÿ‚�ï•0ZÑdݹ.ÜdÁ�GþÃÀîÌ LÚ6T‚, $ ‚Žž­87hD#cz®¤`×N#Þ+NØkÁBmônDÊd#‰{++GN·ðO¿>00Ç}¾Î9�ƒ×)<¡ú™ÿ7@�ă肹p8VWժşÔ'ÁV<‘A’rˆÙ†­!û¹2Y(h(ä¦N+Üz{êcŸ´*åÂ…7‰™ YØu9äÔõÓЮa¹§"¯i£ÎŽ}S#þµ³M¢oaó$ ãÉ. ãAÄ%ª‘ŸúM·&%¿ð'ÎHæÙ‰ÜA£½(%nñ…)ýúš)©K#€"¹Õ)›rØ™Výjë+]mvjô‘°Œ,ý]"5Íþr3-ˆw¥Ÿ4t¨.ݬf9ûr.œŸ‰œ^9š*!8` ±ÜÏ1σ¼bر]K2ÆËM ¨kñÈ3‡7DI[O·ú1êùÙŠÈ{Ø®3¶–˜•ëkT²4ýü(«nÇ–/8öÀ½³V;|91oeÚæÆ<í:÷_N_uo…3;ØœCLø¸Z:Šx�ów–#>lñÀ’¤8?]È×Û­pƒçAtOFuš×)BC”×Á5 ²C SÇì’µlDj(€M>ÁØGpåv”\®¥GèÖm#-aÉI"ûÄA­üžIuC| s@YH„ên“„O(GsÑÖç6¦¼M¨£ Ê£KžM@o3¸è O %‘X0£ŒiP?w/jT¼N<Ç^”ׯ"VT†h̘ÎW†W6ä”*‘ÂgvWõ_«ÑªbjW"ßÕˆ»‡Z¸"˜%»Û™¹[gJÇ®ÐùÐ\šéõxÃj Á]šU[H_Y^�ÒÎJÿï½_ô¨W8 ™Ž“`¤ „îX_G­×oKu{‚]ñµö‡­¥JÎcyý’Ÿ2cÓç}Âû-`ö’ѰÙ@z¤]©¥±w Ú2g\_»]¾~¸hYá2>•ñ]"iˆC^ÒÀè×jÓ!)u69_kN“aD³3Gj¸,ʦs»o9ûh†IDr9q&µS#XJnOQb­$yh¸[¬RE·ûä.»u39,òe2vÑí@:KÍóvw¿!öQ›àNxÎæ¥À½Ÿ÷çyAÏOÇèÕKz(72Ç-öÎ{ …|–àAk*zbB¶‘Ðòê}ŸFM,ð:€ý0»D"¸$�S3< „s€ž:+U§z�€5h{³Ã5 ý„w£´&|åR„ ëß;CÉ;u†{¦~\­•îs‡@ÓÍ”Rˆ²7ï®@‰Ê]³-ã†^q Z6ûý‹ösP úÒ›‰>¼dšö¤ˆ¯Á¤‹át.޽$PZæ"Q‹é÷ƒš³l0¹‰ÿ‰v›^Ò…Gˆf^¨§éü±‚¸&¼ÍYMÍ“L-Ô0Ä É“#¤}s)#À •‘K€£ž–^ââü²jc—÷U/È:/@“h6¹Ò.®™ˆ™He%Jæ”ü™"% z7P0ç›?#X@Jë'æœr—ˆš‡1œ%äѥNj¼*žˆhF=½y½žw”ku(-ü›R¨pKðä�‰Üœ´dwV‡ôô¯Ø¾ÉÓ™£e œ1°Yúꤷ*‚Î�¦_¥ç~@ÉÚØjئá�ìGY6ó¦úÇ™‰ô‘-§9~Å3Ø‚>©Öp!ÍËo¾à¨ÿñÀÔü{|/« �°(Ž«�nI6IÔ­´ó¬G+p~ž®Çæ/’qe®Ç»‡!âÃÞ°,À E@±?S±³ì“TTZ ×®¥•‰h\�бa±wÀn˜®¯V»|7Ÿÿö±âë—íq-°Jÿ5ªvfo&·šñ§L…ö¼üµÙŠ÷¬}þ¥+­= ¸ì9>º*�l_m«®YK¾µý•B°Ÿ“¢Ê˜P±½Q…µ7î|¾4ÖLÏͨ’“¬›€#Ý”ë÷ƒÀ½,Á/™úHÀk`9ìNaÃˉ°ƒhû¸ Æ¡ ÄÎ “7Ç+±L,i™ÌÝÊ[O’��Ñ˹ GÆŒ¹pÁ̬}g„²XRÍFv«¾¡2Î?–°¯xQ¾CÑ蜰ž)Òð' ¤²¼ëÖœ$ pFH6ŒÙ«(v ûv5ÏÙ�½ ®åèUÛ�Ë]$»6´ÚÌßMR~a÷ÜkaY�eyôÚþ_ãtׯYVߦhä }tT“Ú‡¾z„!?3Õá®è"|oìá®±ã[6æ'Øã)~ß6„"ÉIäC¨©K7J%íåßï—V\Z~ä¡Âhi¦ñãµ)r \@XÞ÷gõŒ4Tl7ÛT~Ž�§AC³Ý¤‰õ�´ÝÏ}æÿJ§¢á4Ò«ì#>$4H�øé™&©|‰†íc ºP:˜Èß6�×}3Ó´Þ2ÌÙ€|„šñUF¸‘¨;�ó «��xš^aóíé³»{ËEõ¼ZIenr�ÒõQœ²~pɵ÷7h7H;/ÿÿfÿÿJUoLcz-g+Rk{Sh ]!Ie!u?41"ÿ {Rg>!#ÿÿ]=Zo?fYY(^RA;Tj>q\P, h#J)NWN vL`HVCIDX]uS{NQ &`5ÿXÿÿb&ÿÿ#>#XÿÿXÿÿÿÿÿ;.&0qr=tqoTK4zGzSaFf\ÿGY$YWÿÿ7+ÿÿohÿ1*o$AnÿAÿÿr/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/futures-core-0.3.34/src/task/__internal/atomic_waker.rsÁN/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/futures-core-0.3.34Ár/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/futures-core-0.3.34/src/task/__internal/atomic_waker.rsÁ 4}ò1; T<ÁA9ùZ‘\‚‡‚‡§2$)1JOMKQQKMHR KHQP%O!5'."+- -! JB*(/LB*  &NO:ICMKNQPL8QP*MQP4OQMON7PNOJQJG# MNQMP-PLMCKQPL+$8LMQOOQ9O5NO9G!O!!'"%P?POMQNHOL"PPQCA %9+2  NP<1,$" ,F# >[/MFNO1QQPOS#b #ONCM?)OHI)LT*MVRTT>NNN7RS*FLBBB+@C!%DLPQBP'V ?G+ U``A*OK846C$C4G$KQ] "?!$@¼›¼EÍ`Žvy„ÝÉ\/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/futures-core-0.3.34/src/future.rsÁN/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/futures-core-0.3.34Á\/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/futures-core-0.3.34/src/future.rsÁ ²K²„á ÊoŽâ‘Ôð��?  @?b88 Í—OÔÁÅ5¾§—$¯T/×~_/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/futures-core-0.3.34/src/task/poll.rsÁN/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/futures-core-0.3.34Á_/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/futures-core-0.3.34/src/task/poll.rsÁ ÖwÃGAÎaÆ(ÔåÇ�ðð/MIA/O ¸Äl ád"úù[ÃzÓÌ ^/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/futures-core-0.3.34/src/task/mod.rsÁN/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/futures-core-0.3.34Á^/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/futures-core-0.3.34/src/task/mod.rsÁ å`{¶ýÈ*·ÉlßÊb÷$¬¬  ÷)£ÌKøš2¶7¼ i/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/futures-core-0.3.34/src/task/__internal/mod.rsÁN/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/futures-core-0.3.34Ái/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/futures-core-0.3.34/src/task/__internal/mod.rsÁ ²ÁÞóa K˜ Î�`¦æá‰‰b Eè|—ùÿcTÖ%W®“7Ý94àTãåOç®è êeëx86_64-unknown-linux-gnuÁ.úúõÀü.¢ Å£¼…Z futures_coreÁ-b2e86d4a91990c16Áƒè‚¹p8¯ÙŽ¢ „·………†Þ†eð e¯¯™™ËË‘³‡•zz¢“¢f“«f™�¤ËÞì¢ÞÞÄÞ¼¼¤¤È¤È¢È¢æ¢Ä¤ÄÈ™~²˜ü–°~¬ü˜°˜°––¬¬¢æ™¤²È‘‘¢Þ¢¼‘¢¢…ÄŠ„„ˆŒ¤È0�Î3rust-end-file