Files
boc/rust-service/target/debug/deps/libtower_http-1a1573799a34a516.rmeta
T

2688 lines
854 KiB
Plaintext
Raw Normal View History

rust
ºV
#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ÁtracingÁMÌCy·ì•UEôG¹æû-354d082df53f9d4fÁ tracing_coreÁ ×Üç2cà‡&AfR˜-e3485af10456d858Á once_cellÁ6ÿ]Ô¯q4c]kÂÓ‹-a47cd60ec4e2e104Átracing_attributesÁ®n!µ@lÖ`çÑß
ï~Õ-b41a1a5fb582e21fÁpin_project_liteÁ·x¼+Ä`·á¨›t—¸Íœ-2dc344ecc91b59efÁlogÁ’@ž®LäÏë´©†l¶æÞ-d2ed4e8c2a586cf8Á http_bodyÁë×Lry|bSò?žçCq-db37162dcd37cf91ÁhttpÁÿSdÆ=³öîÝ,9ÅÛïU-784715a8774637a2ÁbytesÁz"ˆ9äš
2s÷ "X"“-f60c5f60586b21edÁitoaÁrLpèòÐ
ݽ‚AéGT'-7ba5a7b63f68a66bÁ tower_layerÁX*ø6êWHNᕈf§-ee72e88a461fccddÁ
tower_serviceÁ:`¡{¶aÛ¬í"aô-3b2010b03e380b78ÁbitflagsÁŽ¡mMÇ3@…EDZqTL-10ed8b3efd511271Áhttp_body_utilÁ¦1¼òl¨É©÷?ÿá¾-cb1e2f22d29abdd8Á futures_coreÁÍ©û4ù†ŽNx¼ -a28fb4b6ab5a68eeÁ test_helpersÁdë@$à@authÁ$A»Ü
„€A
set_headerÁTÉA»
set-headerÁ´¨Apropagate_headerÁ„ƒB»propagate-headerÁäÜA compressionÁ\¶C»compression-brÁÔ¥B»compression-deflateÁüÅB»compression-gzipÁäêB»compression-zstdÁäŒCüŸBŒ
add_extensionÁlîC»
add-extensionÁÌÊCsensitive_headersÁŒ¬D»sensitive-headersÁì„D
decompressionÁlèE»decompression-brÁäÏD»decompression-deflateÁüñD!»decompression-gzipÁô˜E»decompression-zstdÁô¼EüÉD”content_encodingÁ„ïH »ïÔ‡F»ü§F»©äÌF»ÅäîF»èäG»ü²G!»¦ôÙG»ÄôýG»fsÁt¡Hücompression_utilsÁŒ¯K»ïÔ‘I»ü±I»©äÖI»ÅäøI»èäšJ»ü¼J!»¦ôãJ»Äô‡Kü‹ICompressionLevelÁ„‡N»ïÔÒK»üòK»©ä—L»Åä¹L»èäÛL»üýL!»¦ô¤M»ÄôÈMüÌKmap_response_bodyÁŒÈN»map-response-bodyÁì Nmap_request_bodyÁ„‰O»map-request-bodyÁäâNtestsÁ,¤$™follow_redirectÁ|òO»follow-redirectÁÜÌOlimitÁ,¦P»½ŒŠPmetricsÁ<ÒP»Øœ´PÇï¤ï
request_idÁT«Q»
request-idÁ´ŠQ catch_panicÁ\àQ» catch-panicÁ¼¾Q
set_statusÁT•R»
set-statusÁ´ôQtimeoutÁ<ÆR»œ¨Rnormalize_pathÁtûR»normalize-pathÁÔÖRï,®Q$£QÔï,•ÿusable_for_retriesÁ”Ôe$Ée°redirectÁDÿ»»¤à°RedirectÁD뻤°æø»æ°ServeDirÁD¶»æ° ServeFileÁLÀ»æ "builderÁ<ÎS»utilÁ„·SServiceBuilderExtÁŒ—T»ß„ÞSvalidate_requestÁ„ØT»validate-requestÁä±TÀmacrosÁdefine_inner_service_accessorsÁ opaque_bodyÁ
opaque_futureÁtraceÁ 
  
 HttpMakeClassifierÁGrpcMakeClassifierÁevent_dynamic_lvlÁbodyÁ,,,,,,,,,, ,
, , ,
,,,,,,,,BBB OnBodyChunkTÁBOnEosTÁB
OnFailureTÁBDataÁBErrorÁB
poll_frameÁB
is_end_streamÁB size_hintÁfutureÁMMMMMMMMMM M
M M M
MMMMMMMMMMMMgFutÁgResBodyÁggg OnResponseTÁgýggg°gŠ q q layerÁtttttttttt t
t t t
tttžæ tˆžˆMakeSpanÁˆ OnRequestÁˆ
OnResponseÁˆ OnBodyChunkÁˆOnEosÁˆ OnFailureÁˆ
on_requestÁ NewOnRequestÁˆ on_responseÁ
NewOnResponseÁˆ
on_body_chunkÁNewOnBodyChunkÁˆon_eosÁNewOnEosÁˆ
on_failureÁ˜ NewOnFailureÁˆmake_span_withÁš NewMakeSpanÁtœ new_for_httpÁtž new_for_grpcÁt ¤ ž ¿" Ï" à" ò" …# # ServiceÁ Ò! make_spanÁ««««««¿"±±“&«´´“&«···“&«»æ »levelÁ»include_headersÁ«¿>«ÁÁ“&Ó&ñ#ÅÅÅò"ÈÈñ#ÅËËËñ#ÅÏÏñ#ÅÒæ ÅÔÔñ#œ$×××××××××× ×
×…#ãœ$×åœ$×ççœ$×ê>×ìæ ì”'ì latency_unitÁ×ðœ$ñ º$óóóóóóóóóó ó#þ FailureClassÁþº$óÖ*º$óÖ*º$óˆ>óŠæ Š”'Šï)óŽÖ*Žº$£#Ï"£#£#œœœ£# >¢æ ¢”'¥¥£#É#¨¨¨¨¨¨¨¨¨à"±±É#¨´´É#¨···É#¨»>¨½æ ½”'½ï)½¡'¨ÂÂÉ#Ä ¨statusÁÆÆÆ serviceÁÊÊÊÊÊÊÊÊÊÊ Ê
Ê Ê Ê
ÊÊÊÊÊÊÊÊÊÊÊÊÊÊÊÊÊÊÊ Ê!Êí¤ížíæ íÒ!Êò¤òžò¿"òÏ"òà"òò"ò…#ò’#ò£#ûµ#òÉ#ýÜ#òñ#ÿ†$òœ$ª$òº$ƒÌ$òà$ö$ʤ%ÊŠ¤Š¥%ʤReqBodyÁù ž
OnRequestTÁ•!ý MakeSpanTÁResponseÁ¹FutureÁ
poll_readyÁÑDEFAULT_MESSAGE_LEVELÁDEFAULT_ERROR_LEVELÁLatencyÁŸøŸdurationÁ¢×corsÁ¤¤¤¤¤¤¤¤¤¤ ¤
¤ ¤ ¤
¤¤¤¤¤¤¤¤¤¤¤allow_credentialsÁ½½½½½½½½½½ÇÿÇ predicateÁÉÇis_trueÁÇ to_headerÁÌTRUEÁ½Î÷½Ð×½Ò>¤
allow_headersÁÔÔÔÔÔÔÔÔÔÔ Ô
Ô Ô ÔâºâlistÁäšâmirror_requestÁâ is_wildcardÁâ¢6Ôé×Ôë÷ÔíŸí í÷ð Ôò÷Ôô>¤
allow_methodsÁöööööööööö ö
ö ö ö
öºexactÁÈ7ˆšˆ Ü7ò7¢6öŽ×ö÷ö÷öŸ ÷ ö÷ö>¤ allow_originÁ 
  «º«Ç9«È7®š«ú5°«Ü7² «ò7«¢6µ µ ¸×º÷¼÷¾Ÿ¾ ¾÷Á Ã÷Å>¤allow_private_networkÁÇÇÇÇÇÇÇÇÇÐÿÐú5ÒТ6ÔREQUEST_PRIVATE_NETWORKÁÔALLOW_PRIVATE_NETWORKÁÔ³6ÇØ÷ÇÚ×ÇÜ>¤expose_headersÁÞÞÞÞÞÞÞÞÞÞ Þ
Þ Þ ÞìºìÈ7îšìò7ì¢6Þò×Þô÷ÞöŸö ö÷ù Þû÷Þý>¤max_ageÁÿÿÿÿÿÿÿÿÿÿ ÿŠÇ9ŠdynamicÁŒŠ¢6ÿ×ÿ÷ÿ>¤varyÁœÈ7šœ¢6 >¢Ÿ¢ ¢÷¥ §÷¤¤¤¤¤¤¤¤¤ ¤WILDCARDÁ¤³æ ³
permissiveÁ³very_permissiveÁ³§5·¥³å6¹¥³š@»¥³ß8½¥³à:¿¥³Ä>Á¥³ð<Ã¥³­AÅ¥¤º¤separated_by_commasÁÈš¤Ê>¤Ì¤Ìý%ÌÒ!¤Ð¤Ðæ ÐöBЈCÐÒ!Ч5Ö¥Ö Ðå6٥٠К@Ü¥Ü Ðß8ß¥ß Ðà:â¥â ÐÄ>å¥å Ðð<è¥è Ð map_layerÁë¤í¤íš2íù íü2í¹í”3í¢3íѤöööö°öŠ ¤ensure_usable_cors_rulesÁ¤preflight_request_headersÁýclassifyÁÿÿÿÿÿÿÿÿÿÿgrpc_errors_as_failuresÁ 
  into_bitmaskÁ˜ try_from_u32Áš>œæ œ with_successÁœmake_classifierÁ Ö*  ClassifyEosÁ classify_responseÁ£ classify_errorÁ¥§Ö*§ classify_eosÁ§ÒJª¬×classify_grpc_metadataÁ®or_elseÁ® ÿmap_failure_classÁ±±±±±±±±±ºººæ ±¾¾¾×±ÂÂÂNewClassÁÂÖ*žJ±JÈÂÒJʱÌÌÌðLÌÖ*ÌýJÌÒJÒÿstatus_in_range_is_errorÁÔÔÔÔÔÔÔÔÔÔÞæ Þ new_for_client_and_server_errorsÁÞinto_make_classifierÁÔâÖ*âžJâ±JåâÒJçÔé×ÿ ÿ
ÿ ÿ ÿ
ÿÿÿÿÿÿMakeClassifierÁõ
ClassifierÁõÖ*õžJõúIùÿûûæ ÿþþÖ*þžJþ•PþúIƒÿClassifyResponseÁÖ*žJ±JˆÒJŠàKŒŒðLÿžJÖ*ýJÒJàKðLÿNeverClassifyEosÁ¥
_output_tyÁ_neverÁÿ¥Ö*ýJÒJŸÿ¡¥¡×ÿ¤æ ¤úIÿ§Ö*§žJ§±Jª§ÒJ¬ÿ®×servicesÁŒ±±±±±±±± body_methodsÁ±ºæ ±¼®¼¹±¿¿æ ±Â®¹±ÆÆÆ>±ÊÊÊæ ±ÎÎήιBoxErrorÁsealedÁÔSealedÁÕ¥, ResponseBodyÁ×××ò"×…#×#×innerÁ×ýJל$×ñ#׺$×¹×spanÁ,äåååò"å…#å#ä__assert_not_repr_packedÁëëëò"ë…#ë#ä
ProjectionÁñ'__pinÁñññò"ñ…#ñ’#ñöVñýJñœ$ññ#ñº$ñ¹ñ«Wä
ProjectionRefÁÿÄXÿÿÿò"ÿ…#ÿ’#ÿöVÿýJÿœ$ÿñ#ÿº$ÿ¹ÿ«WåprojectÁÄXå project_refÁÄXä__OriginÁÄXò"…##__dummy_lifetimeÁöVýJœ$ñ#º$¹«Wä ÄX   ò" …# #äMustNotImplDropÁ䨥䪪ªò"ª…#ª#MResponseFutureÁ°°°à"°ò"°…#°’#°öV°«W°
classifierÁ°É#°ñ#°œ$°º$°¹M¿ÀÀÀà"Àò"À…#À’#¿êWÇÇÇà"Çò"Ç…#Ç’#¿²XÎÄXÎÎÎà"Îò"Î…#Î’#ÎöVΫWÎÌ]ÎÉ#Îñ#Μ$κ$ι¿²YÞÄXÞÞÞà"Þò"Þ…#Þ’#ÞöVÞ«WÞÌ]ÞÉ#Þñ#Þœ$Þº$Þ¹À¯ZîÄXÀÆZðÄX¿áZòÄXòòòà"òò"ò…#ò’#ò¡[òöVò«WòÌ]òÉ#òñ#òœ$òº$ò¹¿ƒ ÄXƒ ƒ ƒ à"ƒ ò"ƒ …#ƒ #¿¦\¿Œ ¥¿Ž Ž Ž à"Ž ò"Ž …#Ž #t
TraceLayerÁž¿"Ï"à"ò"…##úI“&£#É#ñ#œ$º$t¤ ž¤ ¿"¤ Ï"¤ à"¤ ò"¤ …#¤ #¤ ×t­ ž­ ¿"­ Ï"­ à"­ ò"­ …#­ #tµ žµ ¿"µ Ï"µ à"µ ò"µ …#µ #µ ƒ«DefaultMakeSpanÁ¾ ”'¾ ¡'«Á ×«à ƒÃÃ
__CALLSITEÁÆ METAÁÇ NAMEÁÈ Ç ÑfÊ Ç ÑfÌ Ç ÑfÎ ÃÃÃÃÃÃÃÃà ófÙ ÅfÚ ÑfÛ Ú ÑfÝ Ú Ñfß Ã
à à Ã
ÃÃÃÃÃófê Åfë Ñfì ë Ñfî ë Ñfð ë Ñfò ÃÃÃÃÃÃÃÃÃófý Åfþ Ñfÿ þ Ñf
þ Ñfƒ
ÃÃÃÃà Ã!Ã"Ã#Ã$ófŽ
Åf
Ñf

Ñf

Ñf

Ñf
Ã%Ã&Ã'Ã(Ã)Ã*Ã+Ã,Ã-óf¡
Åf¢
Ñf£
¢
Ñf¥
¢
Ñf§
Ã.Ã/Ã0Ã1Ã2Ã3Ã4Ã5Ã6óf²
Åf³
Ñf´
³
Ñf
³
Ñf¸
³
Ñfº
Ã7Ã8Ã9Ã:Ã;Ã<Ã=Ã>Ã?ófÅ
ÅfÆ
ÑfÇ
Æ
ÑfÉ
Æ
ÑfË
Ã@ÃAÃBÃCÃDÃEÃFÃGÃHófÖ
Åf×
ÑfØ
×
ÑfÚ
×
ÑfÜ
×
ÑfÞ
ÃIÃJÃKÃLÃMÃNÃOÃPÃQóf é
Åfê
Ñfë
ê
Ñfí
ê
Ñfï
ÃRÃSÃTÃUÃVÃWÃXÃYÅDefaultOnBodyChunkÁù
_privÁÅû
×Åý
>Åÿ
ƒ× DefaultOnEosÁ ”' ï)× ƒ× ×ññ³fñ  Åf ÑfŒ  ÑfŽ Š ñññññññññ ñ
ñ³fñ  Åf Ñfž  Ñf  œ ñ ñ ñ
ññññññññ³fñ ­ Åf¯ Ñf° ¯ Ñf² ® ñññññññññññ³fñ ¿ ÅfÁ Ñf Á ÑfÄ À ññ ñ!ñ"ñ#ñ$ñ%ñ&ñ'ñ(ñ³fñ Ñ ÅfÓ ÑfÔ Ó ÑfÖ Ò ñ)ñ*ñ+ñ,ñ-ñ.ñ/ñ0ñ1óDefaultOnFailureÁâ ”'â ï)óå ƒóç ׳f ê Åfì Ñfí ì Ñfï ë  
³f ü Åfþ Ñfÿ þ Ñf ý   
³f Ž Åf Ñf  Ñf  ³f   Åf¢ Ñf£ ¢ Ñf¥ ¡  !"#$%&'(³f ² Åf´ Ñfµ ´ Ñf· ³ )*+,-./01DefaultOnRequestÁà ”'Å ƒÇ ×§§³f§ Ê ÅfË §§§§§§§§§ §
§³f§ Ø ÅfÙ § § §
§§§§§§§§³f§ æ Åfç §§§§§§§§§§§³f§ ô Åfõ §§ §!§"§#§$§%§&§'§(§³f§ 
Åfƒ
§)§*§+§,§-§.§/§0§1¨DefaultOnResponseÁ
”'
ï)
¡'¨
Ĭ
×ÄijfÄ ˜
Åfš
Ñf
š
Ñf
š
ÑfŸ

ÄÄÄÄÄÄÄÄÄ Ä
ijfÄ ¬
Åf®
Ñf¯
®
Ñf±
®
Ñf³
­
Ä Ä Ä
ÄÄÄÄÄÄÄijfÄ À
ÅfÂ
ÑfÃ
Â
ÑfÅ
Â
ÑfÇ
Á
ÄÄÄÄÄÄÄÄÄÄijfÄ Ô
ÅfÖ
Ñf×
Ö
ÑfÙ
Ö
ÑfÛ
Õ
ÄÄ Ä!Ä"Ä#Ä$Ä%Ä&Ä'Ä(ijfÄ è
Åfê
Ñfë
ê
Ñfí
ê
Ñfï
é
Ä)Ä*Ä+Ä,Ä-Ä.Ä/Ä0Ä1ÊTraceÁû
¤û
žû
¿"û
Ï"û
à"û
ò"û
…#û
#û
öVû
úIû
“&û
£#û
É#û
ñ#û
œ$û
º$ÊŒ¤ŒžŒ¿"ŒÏ"Œà"Œò"Œ…#Œ’#Œ×ʤž¿"Ï"à"ò"…#’#ƒÊ ¤ ž ¿" Ï" à" ò" …# #òget_refÁòget_mutÁò
into_innerÁ½AllowCredentialsÁ¬
¬ˆ½¯ƒ½±>½AllowCredentialsInnerÁ³YesÁ´
³NoÁ
³ PredicateÁ¸
¸ˆº'aÁ½¼ƒÔ AllowHeadersÁ¾
¾ˆÔÁƒÔÃ>ÔAllowHeadersInnerÁÅhÆ
ƈÅ
MirrorRequestÁÉ
Ô˃ö AllowMethodsÁÍ
͈öЃöÒ>öAllowMethodsInnerÁÔhÕ
ÕˆÔ¤†Ø
ö Úƒ AllowOriginÁÜ
܈߃á> OriginInnerÁãhä
äˆãListÁç
çˆãˆ…ê
êˆì¦… îƒÇAllowPrivateNetworkÁð
ðˆÇóƒÇõ>ÇAllowPrivateNetworkInnerÁ÷鄸
÷ù„ú
÷ˆ…ü
üˆþ¦…ǃÞ
ExposeHeadersÁ
ˆÞƒÞ>ÞExposeHeadersInnerÁhŠ
ŠˆÞƒÿMaxAgeÁ
ˆÿƒÿ>ÿ MaxAgeInnerÁExactÁ
ˆš
šˆœ¦…ÿžƒVaryÁ 
 ˆ£ƒ¥×¤ CorsLayerÁ§§5§å6§ß8§à:§ð<§Ä>§š@§­A¤°×¤²ƒ¤AnyÁ´
¤×¤ ¤
¹ƒ¤ ¤CorsÁ¼¤¼öV¼Ò!¤ À¤Àפ
äÃÐÞƒÐíƒÐüƒ¤ö\ÉÉöV¤ÌÍÌêWÏ̲XÑÄXÑÑöV̲YÕÄXÕÕöVͯZÙÄXÍÆZÛÄXÌáZÝÄXÝÝ¡[ÝöVÌâÄXâ̦\Ìæ¥Ìè¤KindÁêêCorsCallÁìúìheadersÁê
PreflightCallÁïÿ¤KindProjÁñÄXññçôúôÿñŽ‘÷ÿ¤ùúú¯ZüÄXùáZþÄXþþ¡[þçþŽ‘ùÄXù¦\ùˆ¥ùŠGrpcCodeÁŒ«
Œ CancelledÁ
ŒUnknownÁ
ŒInvalidArgumentÁ
ŒDeadlineExceededÁ
ŒNotFoundÁ
Œ
AlreadyExistsÁ
ŒPermissionDeniedÁ
ŒResourceExhaustedÁ
ŒFailedPreconditionÁŸ
ŒAbortedÁ¡
Œ
OutOfRangeÁ£
Œ
UnimplementedÁ¥
ŒInternalÁ§
Œ UnavailableÁ©
ŒDataLossÁ«
ŒUnauthenticatedÁ­
°ƒ 
³×GrpcCodeBitmaskÁ
ˆ ¹× 
¼ƒµInternalBitFlagsÁ¿
¿ˆµµÃƒµµµÇµÉÖµËï
µÍµÏ§Ðùµ µ
ÓFLAGSÁÔ__bitflags_flag_namesÁÕÓBitsÁÓ´Ófrom_bits_retainÁÓ all_namedÁÚ ALL_NAMEDÁÒOKÁÒ CANCELLEDÁÒUNKNOWNÁÒINVALID_ARGUMENTÁÒDEADLINE_EXCEEDEDÁÒ NOT_FOUNDÁÒALREADY_EXISTSÁÒPERMISSION_DENIEDÁÒRESOURCE_EXHAUSTEDÁÒFAILED_PRECONDITIONÁÒABORTEDÁÒ OUT_OF_RANGEÁÒ
UNIMPLEMENTEDÁÒINTERNALÁÒ UNAVAILABLEÁÒ DATA_LOSSÁÒUNAUTHENTICATEDÁÕµ™Õ¿™ÕЙÕß™Õ÷™ÕšÕ¡šÕ·šÕКÕêšÕ…›Õ”›Õ¨›Õ½›ÕÍ›Õà›Õñ›µ þ PrimitiveÁþÓ•µ >µ
ƒ×µ×µþ µÉµ÷µbits_mutÁµemptyÁ£ALLÁ´ from_bitsÁfrom_bits_truncateÁû˜ from_nameÁŘšis_emptyÁis_allÁ
intersectsÁcontainsÁinsertÁremoveÁtoggleÁsetÁ intersectionÁC
differenceÁsymmetric_differenceÁ
complementÁšµ™š¿™šЙšß™š÷™ššš¡šš·ššКšêšš…›š”›š¨›š½›šÍ›šà›šñ›µº×µ¼×µ¾×µÀ׵°±µÅ²µÇ°ÇµµÊµÌ°Ì¯µÏ°µÑ°ÑÚµÔÛµ Ö°Ö
µ!ÙextendÁÚ¥µ"Üùݥݵ#àùà
iter_namesÁµ$ããIntoIterÁãêµ%糞ç£ç´çÛžçìžçû˜çŸç®Ÿç¾ŸçÌŸçÞŸçîŸçüŸçŠ ç˜ ç£ çCç¾ çРçì µ&ü×µ'þ×µ(×µ)×µ*°±µ+²µ,°µµ-Œµ.ްޝµ/°µ0°Úµ1Ûµ2˜°˜
µ3í£œ¥µ4žùŸ¥Ÿµ5¢ù¢ª¤µ6¥¥ɤ¥êGrpcErrorsAsFailuresÁ©
success_codesÁ«×­ƒGrpcEosErrorsAsFailuresÁ¯ç¨±×³ƒGrpcFailureClassÁµCodeÁ
ˆµ¹¹
¹ˆ¼×ParsedGrpcStatusÁ¾SuccessÁ¿
¾
NonSuccessÁÁ
Áˆ¾GrpcStatusHeaderMissingÁÄ
¾HeaderNotStringÁÆ
¾ HeaderNotIntÁÈ
Ê×ÍÏÖ±MapFailureClassÁÑÑÑöVѱ±ÖÖÖƒ±ÚÚÔStatusInRangeAsFailuresÁÝrangeÁÔß×ÔáƒÔStatusInRangeFailureClassÁã
StatusCodeÁä
äˆã¹ç
çˆÔê×ÿSharedClassifierÁììÌ]ÿïï×ÿòòƒÿClassifiedResponseÁõÖ*õžJõÈø
øˆõ RequiresEosÁû
ûˆÿ þÖ*þžJþ×ÿServerErrorsAsFailuresÁƒoÿ
ƒÿ ×ÿ ˆ>ÿServerErrorsFailureClassÁŠË­
ˆŠ¹Ž
Žˆÿ
×±FullÁöV±>±êW²XšÄXšöV²YÄXöV˜¯Z ÄX˜ÆZ¢ÄXáZ¤ÄX¤¡[¤öV¨ÄX¦\«¥¼Å¼Ö¼ê±LimitedÁ±±öV±´µ´êW·´²X¹ÄX¹¹öV´²Y½ÄX½½öVµ¯ZÁÄXµÆZÃÄX´áZÅÄXÅÅ¡[ÅöV´ÊÄXÊ´¦\´Î¥´ÐÂÅÂÖÂê±
UnsyncBoxBodyÁÕÕÕöV±ÙÚÚÙêWÝÝÙ²XàÄXàààöVÙ²YåÄXåååöVÚ¯ZêÄXÚÆZìÄXÙáZîÄXîîî¡[îöVÙôÄXôôÙ¦\Ùù¥ÙûûÎÅÎÖÎê LatencyUnitÁSecondsÁ
MillisÁ
MicrosÁ
NanosÁˆ
ŒƒŽ×J
J
J
K
L
q
q
q
ª
³
³


·
º
º
Ã
Ã
Ê
Ê
Ê
Ë
Ë
Î
Î
Î
Ñ
Ñ
Ñ
Ö
Ö
Ö
ä
ä
æ
æ
ç
ç
é
é
ñ
ñ
ñ
ñ
ñ
ñ
ñ


ƒ
ƒ










˜
˜
˜



œ
œ
Ÿ
Ÿ
Ÿ
§
§
§
§
§
§
§
§
³
³


·
·
º
º
Ä
Ä
Ä
Ä
Ä
Ä
Ä
Æ



œ
£
£
£
É
É
Ë
Ì
Ì
Ì
Ñ
Ñ
Ñ
ç
è
è
ê
ê
ê
Œ





°
°
´
µ
µ
µ
¹
¹
¹
Ò
Ò
Ô
Ô
Ô
Û
Û
Û
ð
ñ
ñ
ó
ó
ó
Œ
Œ
Ž
Ž
Ž



Ÿ
Ï
ô
ô
ô
õ
û
û
û
ü
£
¥
©
ª
­
­
­
®
Á
Á
Á
È
Ê
Ñ
Ò
å
ç
ê
ê
ê
ù
ù
ƒ
ƒ
ˆ
Š


ž
Ÿ
£
£
£
ª
¬
¯
¯
¯
ë
Ç
¬
¬
¬
½
Â
Â
Â
Ä
ü
ü
ü





æ
è
è
è
Æ
È
È
È







Ÿ
©
ª
°
½
Â
Ì
Ñ
Û
à
ï
ô


Ž

Ÿ
¤
¦
¦
¦
±
±
±
³
·
·
·
º
Â
Â
Â
Å
Æ
Ç
Ï
±
´
´
´
º
º
º
½
Ä
È
È
Ê
Ì
Ì
Î
Î
Ð
Ð
Ø







Œ



œ

ž
Ÿ
 
¡
¢
£
»
»
»
½
½
½
¿
¿
¿
Á
Á
Á
Æ
Ë
Ð
Õ
Ú
á
â
ê
î
ï
ð
ñ
ò
ó
ô
õ
ö
ý
ý
ý
ÿ
ÿ
ÿ



ƒ
ƒ
ƒ
ˆ



œ
£
¤
¬
¬
¬
®
²
²
²
´
½
½
½
Ë
Ë
Ë
Î
Î
Ð
Ù
à
à
à
â
ë
ë
ë
ñ
ñ
ñ
ô











®
®
®
¯
°
·
Ò
Ò
Ò
Ó
Ô
Ý
þ
þ
þ
ÿ





§‹ ±Èãþ±åõªÍøÕ“í×׺VÝöVÞýJßœ$àñ#áº$â¹ã«WeªdÖ*)¢ò"…##§¥§×׺VÝöVÞýJßœ$àñ#áº$â¹ã«WeªdÖ*)¢ò"…##.×׺VÝöVÞýJßœ$àñ#áº$â¹ã«WeªdÖ*)¢³Ì¹Ìý“í°°ö\·öV¸«W¹Ì]ºÉ#»ñ#¼œ$½º$¾¹k
~$H²˜Ëà"ò"…## ·Ë°°ö\·öV¸«W¹Ì]ºÉ#»ñ#¼œ$½º$¾¹k
~$H²¹Ìà"žË¤ËªË‚ذ°ö\·öV¸«W¹Ì]ºÉ#»ñ#¼œ$½º$¾¹k
~$H²ï •!ý¿c§c úIž “&Ÿ £#  É#¡ ñ#¢ œ$£ º$öüRj±Ý:ž¿"Ï"ìÎòÎøÎþΊ ÙÑØÙÑÚ§c úIž “&Ÿ £#  É#¡ ñ#¢ œ$£ º$öüRj±Ý:ž¿"Ï"à"ò"…##¤±©©SpanÁªöV«ûÇÝÏU³Ì±Ð’Ë¿c¾ ¾ íe¿ ”'«À ¡'«A=i¸¾QØ…Õ³…Õ±…Õ³ÌÈâγÌȳ̿cù
ù
énú
ƒoœגáîೈÖ؈ÖȈֳÌããÐØ  ¶o ”'׃ ï)×P)­Ã
b¿c÷Ö³÷Öã÷ÖþÖ*þÐÖ*Øâ â òsã ”'óä ï)ózhж@d´–¿cú׳ú×þú×Ü׳ÌâÎ³ÌØà à ²xÄ ”'rS†2
¿cýسýØýس̱³Ì±âÎ³ÌØ

è{
”'¨
ï)¨
¡'¨ˆ»­¢º%¿côÙ³ôÙ±ôٳ̿cû
û
ò€öVúI“&£#ˆÉ#ñ#Šœ$º$kYuÀ<AÀ¶ ÔöÓüÓ‚ÔˆÔŽÔ”ÔšÔØæÚŠ æÚû
û
ò€öVúI“&£#ˆÉ#ñ#Šœ$º$kYuÀ<AÀ¶ Ôž ë2¹2•!ýôôRequestÁöheadÁ¦÷Œ¦¯:ðû„࢚2ÄcŸŸñ3 ø¡ˆ4ÄÍÐyN§ ÊØ¬¬­Ž„®ˆ½ ðÐ1Þm; ³×Þé×Þ¿c×ÞØ³´µé„·ù„¸¹ˆ…ºˆ½
Ð1‰d³´ßؾ¾¿½…ÀˆÔ ÞòÅ:Œò³›à¿c›àé›à´´µ» J"¡åZw´é›àëë
HeaderNameÁìöVÇÀZ}}HÚŸé›àªBªBö­BbufÁ÷<®B÷<9)
-ÜnL¢áçEçEèEGlobalÁ ¿±‡§í#ØÅÆÇhȈÔÉʤ†".Q«|?×
³ÞâØÍÍΈψö ýˆžî p³²ã¿c²ãé²ãïàé²ã¥¥¦MethodÁ§ˆÔ "1éµsåvé²ã•äŸé²ãªBªBö­Býà÷<®B÷<9)
-ÜnL•ä«âØÔÕÖh׈öØÙ¤†64¢Ü›!Ë=³·åØÜÜÝ͇Þˆ ’íZÀœ P³‹æ¿c‹æé‹æïà鋿ºº HeaderValueÁ»öV¾¼ is_sensitiveÁ¾©¡yð<Ôcªé‹æîæŸé‹æªBªBö­Býà÷<®B÷<9)
-ÜnLîæ«âØãäåhæˆçè­ˆéˆêëˆ…ìˆøõöתÇZ³©èØððñòˆòˆÇ àýÉãáVn³¦éé¦é¿c¦éØ÷øùé„úûù„üýˆ…þˆÇä%gà÷îÞ=³ƒê؃›ŠˆÞ (˜ìé<‘sµ³êê¿cêêéêêïàéêê¡áéêêêáØŠhŒˆÞüdAÃHˆï5³çëØ‘‹ˆÿ TŸ„'³ªì¿cªìéªì­Ö­ÖDurationÁ®ÖsecsÁâ}¯ÖnanosÁâ}Zµ–²ªØ˜Ø‹ˆÿšœˆÿéo/ƒjùg³ÔíØ  ¡Œ¢ˆ é$ *òjVp¿cµî³µîéµî¡áéµîêá¿c§§ÐŒ¨§5¤©å6¤ªß8¤«à:¤¬ð<¤­Ä>¤®š@¤¯­A¤q°ÝÏÓ{Ø£ï¿cïàÛïàØïàŠ ïà³£ïÚ£ï Ô¿c¼¼ï¾öV¤¿Ò!¤[Š"kÜN ÔØþðþðÆÝ“íÉÉö\ËöV¤Ü#ÔPmìâÎå·ËåÉÉö\ËöV¤Ü#ÔPmìГíêìçíú¤îÿ¤ïŽ‘ðÿ¤æ{Ç
âηËêìçíú¤îÿ¤ïŽ‘ðÿ¤æ{Ç
ЂآòÛŒŽ«¢“¸“̓蓘…”šš”œ´”žÑ”Ÿ ï” ¡¢Ž•
£¤¢• ¥¦¹• §¨Ó•
©ªè•«¬€–­®•–ü­vBbægصôŠ µô¿cµô¿c·Ü–¸ˆ pä½rÛ“÷Ø“÷Š “÷Û¿¿À¤—Áˆ x¿Ö‡.
Øî÷Š î÷Ðìî÷µßî÷î÷î÷íßî÷î÷ºî÷šeî÷ {“÷ £“÷³î÷¿cî÷Äcî÷ïyî÷àî÷éî÷Ècî÷Æcî÷Êcî÷Ìcî÷–úî÷î÷•˜î÷î÷¶ûî÷î÷̘î÷î÷öøî÷î÷Þ—î÷î÷ïî÷î÷œöî÷î÷•!î÷ÐLî÷î÷ÃLî÷î÷ÇLî÷Èc“÷Æc“÷Êc“÷Ìc“÷–ú“÷“÷•˜“÷“÷¶û“÷“÷̘“÷“÷öø“÷“÷Þ—“÷“÷ï“÷“÷œö“÷“÷•!“÷ÐL“÷“÷ÃL“÷“÷ÇL“÷¿c©©˨ªç¨ß Mçߨ¨ý³¨ý¨ý¿c¯¯–©°ç¨Ød¸Œ>ªªmØ€þ€þ¿cµ·ð©¸ˆ¹º¹»ˆTýžò©ˆÄcÍþ¿c¾¿ÀêÁÂתÈÄÅöªÆÇš«Èɶ«ü3‰@#öxÐì¨ÿµß¨ÿ¨ÿ¨ÿØÑÑû«ÔöV±Õ±±újyâΊ Ì€¿c̀̀̀¿cÝÝä¬Þƒ­Ôø3±v?M+ØÄÄ¿cãäåË­æˆçè¹éˆ¾á¸ìúQ¯Äc‘‚¿cì쌮îÌ]ÿ'd|ÖǧÉaØì‚õì‚¿cõøùÈúˆûü¯ýˆùëÁ›Q·sÜמJ±RÑRÿšãRÿöŠ·ÿõ¼I·Ë¿c–„ØÚ¯ƒƒoÿI«|l¥ÊY±¿cæ„³æ„æ„¿cŠŒË­ˆŽ¹ˆ”Æ R›ªåÄc½…³þ°öVq2¯V¡ùSá“혆ª·Ëª˜†.˜†“í±±á²³öVí!lÍH…Þ’ËÍ·Ëͱ±á²³öVí!lÍH…Þ³Ì.¾‡“íÕÕû´ØöV‘òî
Á¯Åø·ËøÕÕû´ØöV‘òî
Á¯Å³Έ.ΈŠ ƒí·¸”¸ˆ§¸_tYT¸‚•GÛ¤‰Ø¤‰¿c¤‰ ×ƒ °âÉê¨Ê±ôÕ¨ª×B׼±ÎÕŒ Ž °g°öɤ • Á ¾ û
ù
 ç â Ç Ã

Ξ
Ь龎͸ÜÚðò¥ °§´À¼³Œ¹ƒ¿«©±¯¼µÊ¾¾ÑßÝêãïìþõ¡ŠŽ­ •  û
»´²Œ¾Å¿ÚÑŠµ • à ¾ ÿ
ù
 å â Å Ã

û
¯¬¼³Á¾ËÅÐÍÚÔßÜîãóð÷ž£ ²§¹´Ã¼°Œ¼Ã¿­©³¯ÖÑáÝò쌠• ̧´©·Á¾ ¿¾ ý
ù
ê ˆâ  Ã »
±¬Ò³Ã¾ôÅÒÍÔáÜÅãõðÜ÷ý  Ê§¿š©ˆÆÕËÏ
Ôù
å
çð 
Žâ 
œ¥à ´
·Â
û
í¼¢Ÿ¿¬µé㮊άë¾í¾ò¾ÍÍÍͺܼܾÜÃÜØðôöû¢ § ¿¸´¯Œ»Â¿æèɈŠêƿ̾ǿ;ɿϾ˿ͿϿÓþ¿¿º¿ü¼¿þ¾¿À¿Â¿Å¿Ç¿Ê¿ŒÌ¿ŽÏ¿Ñ¿Ô¿Ö¿˜Ù¿Ü¿žã¿¥ ©ÂÑâݧ§¯ÌÑþì«­ÎбùûÕ“í §1.
‚Ø
¿c#
Š õØ$8Úü±³È½ãþ±Äcé#ÛŒå#
Ðì
µßíߺše { £ïyàÈcÆcÊcÌc–ú•˜¶û̘öøÞ—ïœö•!ÐLÃLÇLõªÍ
ø
ù’›ô,
 'ùóóU
ùóó'
­j> Çô ùÓòöÈ ¦¦§ FieldNameÁ©ˆ »‘/ú .ùßò¸™¸™
ˆù‘¸ó,
¸™&ùóU
ùó'
²[0 äó îóù‚ómÉ  ¸™©¸™±7{ _ }Áù•›ô,
¸™&ù“óóU
ù“óó'
­i>Çô ù“ÓòöÊ ¦¦§Ì™©ˆ »‘/ú .ù“ßò¸™ø¸™ù”¸ó,
¸™&ù“óU
ù“ó'ŽœY.äóîóù“‚ómË  ¸™§¸™¯7{ _ }Áù˜›ô,
¸™&ù–óóU
ù–óó'
­i> Çô ù–ÓòöÌ ¦¦§Ì™©ˆ »‘/ú .ù–ßò¸™ø¸™ù—¸ó,
¸™&ù–óU
ù–ó'ŽœY.äóîóù–‚ómÍ  ¸™§¸™¯7{ _ }Áù››ô,
¸™&ù™óóU
ù™óó'È¡Y.Çô ù™ÓòöÎ ¢ù™ßò¸™«¸™³Aùš¸ó,
¸™&ù™óU
ù™ó'ŽœY.äóîóù™‚ómÏ  ¸™§¸™¯7{ _ }Áù¼›ô,
¸™&ùºóóU
ùºóó'é™Y. ºÇô ùºÓòöÛ ¾šùºßò¸™«¸™³Aù»¸ó,
¸™&ùºóU
ùºó'ŽœY. ºäó ºîóùº‚ómÜ  ¸™§¸™¯7{ _ }Áù¿›ô,
¸™&ù½óóU
ù½óó'ÞY. ½Çô ù½ÓòöÝ ³žù½ßò¸™«¸™³Aù¾¸ó,
¸™&ù½óU
ù½ó'ŽœY. ½äó ½îóù½‚ómÞ  ¸™§¸™¯7{ _ }Áù›ô,
¸™&ùÀóóU
ùÀóó'È¡Y. ÀÇô ùÀÓòöß ¢ùÀßò¸™«¸™³AùÁ¸ó,
¸™&ùÀóU
ùÀó'ŽœY. Àäó ÀîóùÀ‚ómà  ¸™§¸™¯7{ _ }Áùã›ô,
¸™&ùáóóU
ùáóó'é™Y. áÇô ùáÓòöì ¾šùáßò¸™«¸™³Aùâ¸ó,
¸™&ùáóU
ùáó'ŽœY. áäó áîóùá‚ómí  ¸™§¸™¯7{ _ }Áùæ›ô,
¸™&ùäóóU
ùäóó'ÞY. äÇô ùäÓòöî ³žùäßò¸™«¸™³Aùå¸ó,
¸™&ùäóU
ùäó'ŽœY. ääó äîóùä‚ómï  ¸™§¸™¯7{ _ }Áùé›ô,
¸™&ùçóóU
ùçóó'È¡Y. çÇô ùçÓòöð ¢ùçßò¸™«¸™³Aùè¸ó,
¸™&ùçóU
ùçó'ŽœY. çäó çîóùç‚ómñ  ¸™§¸™¯7{ _ }Áùì›ô,
¸™&ùêóóU
ùêóó'È¡Y. êÇô ùêÓòöò ¢ùêßò¸™«¸™³Aùë¸ó,
¸™&ùêóU
ùêó'ŽœY. êäó êîóùê‚ómó  ¸™§¸™¯7{ _ }Áù›ô,
¸™&ù‹óóU
ù‹óó'é™Y.Çô ù‹Óòöÿ ¾šù‹ßò¸™«¸™³AùŒ¸ó,
¸™&ù‹óU
ù‹ó'ŽœY.äóîóù‹‚óm
 ¸™§¸™¯7{ _ }Áù›ô,
¸™&ùŽóóU
ùŽóó'ÞY. ŽÇô ùŽÓòö
³žùŽßò¸™«¸™³Aù¸ó,
¸™&ùŽóU
ùŽó'ŽœY. Žäó ŽîóùŽ‚óm
 ¸™§¸™¯7{ _ }Áù“›ô,
¸™&ù‘óóU
ù‘óó'È¡Y.Çô ù‘Óòöƒ
¢ù‘ßò¸™«¸™³Aù’¸ó,
¸™&ù‘óU
ù‘ó'ŽœY.äóîóù‘‚óm
 ¸™§¸™¯7{ _ }Áù´›ô,
¸™&ù²óóU
ù²óó'é™Y. ²Çô ù²Óòö
¾šù²ßò¸™«¸™³Aù³¸ó,
¸™&ù²óU
ù²ó'ŽœY. ²äó ²îóù²‚óm
 ¸™§¸™¯7{ _ }Áù·›ô,
¸™&ùµóóU
ùµóó'ÞY. µÇô ùµÓòö
³žùµßò¸™«¸™³Aù¶¸ó,
¸™&ùµóU
ùµó'ŽœY. µäó µîóùµ‚óm
 ¸™§¸™¯7{ _ }Áùº›ô,
¸™&ù¸óóU
ù¸óó'È¡Y. ¸Çô ù¸Óòö
¢ù¸ßò¸™«¸™³Aù¹¸ó,
¸™&ù¸óU
ù¸ó'ŽœY. ¸äó ¸îóù¸‚óm
 ¸™§¸™¯7{ _ }Áù½›ô,
¸™&ù»óóU
ù»óó'È¡Y. »Çô ù»Óòö
¢ù»ßò¸™«¸™³Aù¼¸ó,
¸™&ù»óU
ù»ó'ŽœY. »äó »îóù»‚óm
 ¸™§¸™¯7{ _ }ÁùÞ›ô,
¸™&ùÜóóU
ùÜóó'é™Y. ÜÇô ùÜÓòö£
¾šùÜßò¸™«¸™³Aùݸó,
¸™&ùÜóU
ùÜó'ŽœY. Üäó ÜîóùÜ‚óm¤
 ¸™§¸™¯7{ _ }Áùá›ô,
¸™&ùßóóU
ùßóó'ÞY. ßÇô ùßÓòö¥
³žùßßò¸™«¸™³Aùà¸ó,
¸™&ùßóU
ùßó'ŽœY. ßäó ßîóùß‚óm¦
 ¸™§¸™¯7{ _ }Áùä›ô,
¸™&ùâóóU
ùâóó'È¡Y. âÇô ùâÓòö§
¢ùâßò¸™«¸™³Aùã¸ó,
¸™&ùâóU
ùâó'ŽœY. âäó âîóùâ‚óm¨
 ¸™§¸™¯7{ _ }Áù…›ô,
¸™&ùƒóóU
ùƒóó'é™Y. ƒÇô ùƒÓòö´
¾šùƒßò¸™«¸™³Aù„¸ó,
¸™&ùƒóU
ùƒó'ŽœY. ƒäó ƒîóùƒ‚ómµ
 ¸™§¸™¯7{ _ }Áùˆ›ô,
¸™&ù†óóU
ù†óó'ÞY.Çô ù†Óòö
³žù†ßò¸™«¸™³Aù‡¸ó,
¸™&ù†óU
ù†ó'ŽœY.äóîóù†‚óm·
 ¸™§¸™¯7{ _ }Áù‹›ô,
¸™&ù‰óóU
ù‰óó'È¡Y.Çô ù‰Óòö¸
¢ù‰ßò¸™«¸™³AùЏó,
¸™&ù‰óU
ù‰ó'ŽœY.äóîóù‰‚óm¹
 ¸™§¸™¯7{ _ }ÁùŽ›ô,
¸™&ùŒóóU
ùŒóó'È¡Y. ŒÇô ùŒÓòöº
¢ùŒßò¸™«¸™³Aù¸ó,
¸™&ùŒóU
ùŒó'ŽœY. Œäó ŒîóùŒ‚óm»
 ¸™§¸™¯7{ _ }Áù¯›ô,
¸™&ù­óóU
ù­óó'é™Y. ­Çô ù­ÓòöÇ
¾šù­ßò¸™«¸™³Aù®¸ó,
¸™&ù­óU
ù­ó'ŽœY. ­äó ­îóù­‚ómÈ
 ¸™§¸™¯7{ _ }Áù²›ô,
¸™&ù°óóU
ù°óó'ÞY. °Çô ù°ÓòöÉ
³žù°ßò¸™«¸™³Aù±¸ó,
¸™&ù°óU
ù°ó'ŽœY. °äó °îóù°‚ómÊ
 ¸™§¸™¯7{ _ }Áùµ›ô,
¸™&ù³óóU
ù³óó'È¡Y. ³Çô ù³ÓòöË
¢ù³ßò¸™«¸™³Aù´¸ó,
¸™&ù³óU
ù³ó'ŽœY. ³äó ³îóù³‚ómÌ
 ¸™§¸™¯7{ _ }ÁùÖ›ô,
¸™&ùÔóóU
ùÔóó'é™Y. ÔÇô ùÔÓòöØ
¾šùÔßò¸™«¸™³AùÕ¸ó,
¸™&ùÔóU
ùÔó'ŽœY. Ôäó ÔîóùÔ‚ómÙ
 ¸™§¸™¯7{ _ }ÁùÙ›ô,
¸™&ù×óóU
ù×óó'ÞY. ×Çô ù×ÓòöÚ
³žù×ßò¸™«¸™³Aùظó,
¸™&ù×óU
ù×ó'ŽœY. ×äó ×îóùׂómÛ
 ¸™§¸™¯7{ _ }ÁùÜ›ô,
¸™&ùÚóóU
ùÚóó'È¡Y. ÚÇô ùÚÓòöÜ
¢ùÚßò¸™«¸™³AùÛ¸ó,
¸™&ùÚóU
ùÚó'ŽœY. Úäó ÚîóùÚ‚ómÝ
 ¸™§¸™¯7{ _ }Áùß›ô,
¸™&ùÝóóU
ùÝóó'È¡Y. ÝÇô ùÝÓòöÞ
¢ùÝßò¸™«¸™³AùÞ¸ó,
¸™&ùÝóU
ùÝó'ŽœY. Ýäó ÝîóùÝ‚ómß
 ¸™§¸™¯7{ _ }Áù€›ô,
¸™&ùþóóU
ùþóó'é™Y. þÇô ùþÓòöë
¾šùþßò¸™«¸™³Aùÿ¸ó,
¸™&ùþóU
ùþó'ŽœY. þäó þîóùþ‚ómì
 ¸™§¸™¯7{ _ }Áùƒ›ô,
¸™&ùóóU
ùóó'ÞY. Çô ùÓòöí
³žùßò¸™«¸™³Aù‚¸ó,
¸™&ùóU
ùó'ŽœY. äó îóù‚ómî
 ¸™§¸™¯7{ _ }Áù†›ô,
¸™&ù„óóU
ù„óó'È¡Y.Çô ù„Óòöï
¢ù„ßò¸™«¸™³Aù…¸ó,
¸™&ù„óU
ù„ó'ŽœY.äóîóù„‚ómð
 ¸™§¸™¯7{ _ }Áù®›ô,
¸™&ù¬óóU
ù¬óó'
­i> ¬Çô ù¬ÓòöŒ ¦¦§Ì™©ˆ »‘/ú .ù¬ßò¸™ø¸™ù­¸ó,
¸™&ù¬óU
ù¬ó'ŽœY. ¬äó ¬îóù¬‚óm  ¸™§¸™¯7{ _ }Áù±›ô,
¸™&ù¯óóU
ù¯óó'é™Y. ¯Çô ù¯ÓòöŽ ¾šù¯ßò¸™«¸™³Aù°¸ó,
¸™&ù¯óU
ù¯ó'ŽœY. ¯äó ¯îóù¯‚óm  ¸™§¸™¯7{ _ }ÁùÜ›ô,
¸™&ùÚóóU
ùÚóó'²ŒY. ÚÇô ùÚÓòöž ùÚßò¸™«¸™³AùÛ¸ó,
¸™&ùÚóU
ùÚó'ŽœY. Úäó ÚîóùÚ‚ómŸ  ¸™§¸™¯7{ _ }Áùß›ô,
¸™&ùÝóóU
ùÝóó'é™Y. ÝÇô ùÝÓòö  ¾šùÝßò¸™«¸™³AùÞ¸ó,
¸™&ùÝóU
ùÝó'ŽœY. Ýäó ÝîóùÝ‚óm¡  ¸™§¸™¯7{ _ }ÁùŠ›ô,
¸™&ùˆóóU
ùˆóó'²ŒY. ˆÇô ùˆÓòö° ùˆßò¸™«¸™³Aù‰¸ó,
¸™&ùˆóU
ùˆó'ŽœY. ˆäó ˆîóùˆ‚óm±  ¸™§¸™¯7{ _ }Áù›ô,
¸™&ù‹óóU
ù‹óó'é™Y.Çô ù‹Óòö² ¾šù‹ßò¸™«¸™³AùŒ¸ó,
¸™&ù‹óU
ù‹ó'ŽœY.äóîóù‹‚óm³  ¸™§¸™¯7{ _ }Áù¸›ô,
¸™&ù¶óóU
ù¶óó'²ŒY.Çô ù¶Óòö ù¶ßò¸™«¸™³Aù·¸ó,
¸™&ù¶óU
ù¶ó'ŽœY.äóîóù¶‚ómà  ¸™§¸™¯7{ _ }Áù»›ô,
¸™&ù¹óóU
ù¹óó'é™Y. ¹Çô ù¹ÓòöÄ ¾šù¹ßò¸™«¸™³Aùº¸ó,
¸™&ù¹óU
ù¹ó'ŽœY. ¹äó ¹îóù¹‚ómÅ  ¸™§¸™¯7{ _ }Áùæ›ô,
¸™&ùäóóU
ùäóó'²ŒY. äÇô ùäÓòöÔ ùäßò¸™«¸™³Aùå¸ó,
¸™&ùäóU
ùäó'ŽœY. ääó äîóùä‚ómÕ  ¸™§¸™¯7{ _ }Áùé›ô,
¸™&ùçóóU
ùçóó'é™Y. çÇô ùçÓòöÖ ¾šùçßò¸™«¸™³Aùè¸ó,
¸™&ùçóU
ùçó'ŽœY. çäó çîóùç‚óm×  ¸™§¸™¯7{ _ }Áù—›ô,
¸™&ù•óóU
ù•óó'
­i>Çô ù•Óòöí ¦¦§Ì™©ˆ »‘/ú .ù•ßò¸™ø¸™ù–¸ó,
¸™&ù•óU
ù•ó'ŽœY.äóîóù•‚ómî  ¸™§¸™¯7{ _ }Áùš›ô,
¸™&ù˜óóU
ù˜óó'È¡Y. ˜Çô ù˜Óòöï ¢ù˜ßò¸™«¸™³Aù™¸ó,
¸™&ù˜óU
ù˜ó'ŽœY. ˜äó ˜îóù˜‚ómð  ¸™§¸™¯7{ _ }ÁùÅ›ô,
¸™&ùÃóóU
ùÃóó'˜­Y. ÃÇô ùÃÓòöÿ í­ùÃßò¸™«¸™³Aùĸó,
¸™&ùÃóU
ùÃó'ŽœY. Ãäó ÃîóùÂóm  ¸™§¸™¯7{ _ }ÁùÈ›ô,
¸™&ùÆóóU
ùÆóó'È¡Y. ÆÇô ùÆÓòö ¢ùÆßò¸™«¸™³AùǸó,
¸™&ùÆóU
ùÆó'ŽœY. Æäó ÆîóùÆ‚óm  ¸™§¸™¯7{ _ }Áùó›ô,
¸™&ùñóóU
ùñóó'˜­Y. ñÇô ùñÓòö í­ùñßò¸™«¸™³Aùò¸ó,
¸™&ùñóU
ùñó'ŽœY. ñäó ñîóùñ‚óm  ¸™§¸™¯7{ _ }Áùö›ô,
¸™&ùôóóU
ùôóó'È¡Y. ôÇô ùôÓòö ¢ùôßò¸™«¸™³Aùõ¸ó,
¸™&ùôóU
ùôó'ŽœY. ôäó ôîóùô‚óm  ¸™§¸™¯7{ _ }Áù¡›ô,
¸™&ùŸóóU
ùŸóó'˜­Y. ŸÇô ùŸÓòö£ í­ùŸßò¸™«¸™³Aù ¸ó,
¸™&ùŸóU
ùŸó'ŽœY. Ÿäó ŸîóùŸ‚óm¤  ¸™§¸™¯7{ _ }Áù¤›ô,
¸™&ù¢óóU
ù¢óó'È¡Y. ¢Çô ù¢Óòö¥ ¢ù¢ßò¸™«¸™³Aù£¸ó,
¸™&ù¢óU
ù¢ó'ŽœY. ¢äó ¢îóù¢‚óm¦  ¸™§¸™¯7{ _ }ÁùÏ›ô,
¸™&ùÍóóU
ùÍóó'˜­Y. ÍÇô ùÍÓòöµ í­ùÍßò¸™«¸™³Aùθó,
¸™&ùÍóU
ùÍó'ŽœY. Íäó ÍîóùÍ‚óm  ¸™§¸™¯7{ _ }ÁùÒ›ô,
¸™&ùÐóóU
ùÐóó'È¡Y. ÐÇô ùÐÓòö· ¢ùÐßò¸™«¸™³AùѸó,
¸™&ùÐóU
ùÐó'ŽœY. Ðäó ÐîóùЂóm¸  ¸™§¸™¯7{ _ }Áù® ›ô,
¸™&ù¬ óóU
ù¬ óó'È¡Y. ¬ Çô ù¬ Óòö
¢ù¬ ßò¸™«¸™³Aù­ ¸ó,
¸™&ù¬ óU
ù¬ ó'ŽœY. ¬ äó ¬ îóù¬ ‚ómœ
 ¸™§¸™¯7{ _ }Áù± ›ô,
¸™&ù¯ óóU
ù¯ óó'é™Y. ¯ Çô ù¯ Óòö
¾šù¯ ßò¸™«¸™³Aù° ¸ó,
¸™&ù¯ óU
ù¯ ó'ŽœY. ¯ äó ¯ îóù¯ ‚ómž
 ¸™§¸™¯7{ _ }Áù´ ›ô,
¸™&ù² óóU
ù² óó'
­i> ² Çô ù² ÓòöŸ
¦¦§Ì™©ˆ »‘/ú .ù² ßò¸™ø¸™ù³ ¸ó,
¸™&ù² óU
ù² ó'ŽœY. ² äó ² îóù² ‚óm 
 ¸™§¸™¯7{ _ }Áùâ ›ô,
¸™&ùà óóU
ùà óó'È¡Y. à Çô ùà Óòö¯
¢ùà ßò¸™«¸™³Aùá ¸ó,
¸™&ùà óU
ùà ó'ŽœY. à äó à îóùà ‚óm°
 ¸™§¸™¯7{ _ }Áùå ›ô,
¸™&ùã óóU
ùã óó'é™Y. ã Çô ùã Óòö±
¾šùã ßò¸™«¸™³Aùä ¸ó,
¸™&ùã óU
ùã ó'ŽœY. ã äó ã îóùã ‚óm²
 ¸™§¸™¯7{ _ }Áùè ›ô,
¸™&ùæ óóU
ùæ óó'¶ÔY. æ Çô ùæ Óòö³
‹Õùæ ßò¸™«¸™³Aùç ¸ó,
¸™&ùæ óU
ùæ ó'ŽœY. æ äó æ îóùæ ‚óm´
 ¸™§¸™¯7{ _ }Áù–
›ô,
¸™&ù”
óóU
ù”
óó'È¡Y.
Çô ù”
ÓòöÃ
¢ù”
ßò¸™«¸™³Aù•
¸ó,
¸™&ù”
óU
ù”
ó'ŽœY.
äó
îóù”
‚ómÄ
 ¸™§¸™¯7{ _ }Áù™
›ô,
¸™&ù—
óóU
ù—
óó'é™Y.
Çô ù—
ÓòöÅ
¾šù—
ßò¸™«¸™³Aù˜
¸ó,
¸™&ù—
óU
ù—
ó'ŽœY.
äó
îóù—
‚ómÆ
 ¸™§¸™¯7{ _ }Áùœ
›ô,
¸™&ùš
óóU
ùš
óó'¶ÔY. š
Çô ùš
ÓòöÇ
‹Õùš
ßò¸™«¸™³Aù›
¸ó,
¸™&ùš
óU
ùš
ó'ŽœY. š
äó š
îóùš
‚ómÈ
 ¸™§¸™¯7{ _ }ÁùÊ
›ô,
¸™&ùÈ
óóU
ùÈ
óó'È¡Y. È
Çô ùÈ
Óòö×
¢ùÈ
ßò¸™«¸™³AùÉ
¸ó,
¸™&ùÈ
óU
ùÈ
ó'ŽœY. È
äó È
îóùÈ
‚ómØ
 ¸™§¸™¯7{ _ }ÁùÍ
›ô,
¸™&ùË
óóU
ùË
óó'é™Y. Ë
Çô ùË
ÓòöÙ
¾šùË
ßò¸™«¸™³AùÌ
¸ó,
¸™&ùË
óU
ùË
ó'ŽœY. Ë
äó Ë
îóùË
‚ómÚ
 ¸™§¸™¯7{ _ }ÁùÐ
›ô,
¸™&ùÎ
óóU
ùÎ
óó'¶ÔY. Î
Çô ùÎ
ÓòöÛ
‹ÕùÎ
ßò¸™«¸™³AùÏ
¸ó,
¸™&ùÎ
óU
ùÎ
ó'ŽœY. Î
äó Î
îóùÎ
‚ómÜ
 ¸™§¸™¯7{ _ }Áùþ
›ô,
¸™&ùü
óóU
ùü
óó'È¡Y. ü
Çô ùü
Óòöë
¢ùü
ßò¸™«¸™³Aùý
¸ó,
¸™&ùü
óU
ùü
ó'ŽœY. ü
äó ü
îóùü
‚ómì
 ¸™§¸™¯7{ _ }Áù ›ô,
¸™&ùÿ
óóU
ùÿ
óó'é™Y. ÿ
Çô ùÿ
Óòöí
¾šùÿ
ßò¸™«¸™³Aù€ ¸ó,
¸™&ùÿ
óU
ùÿ
ó'ŽœY. ÿ
äó ÿ
îóùÿ
‚ómî
 ¸™§¸™¯7{ _ }Áù„ ›ô,
¸™&ù‚ óóU
ù‚ óó'¶ÔY. Çô ù‚ Óòöï
‹Õù‚ ßò¸™«¸™³Aùƒ ¸ó,
¸™&ù‚ óU
ù‚ ó'ŽœY. äó îóù‚ ‚ómð
 ¸™§¸™¯7{ _ }Ád»|
ªƒLevelÁˆï ’=·Ù)³…'ü–|2±þ,³|&vª±þ Level::DEBUGÁdì|
§±þüÉ|0ž±þ,ä|&C§±þ Level::ERRORÁü¨


Ĩ

Ñ
 ¸™ 1üŽ
;Íîæ
&ü–A

¼–
àü®(
&¸™
2üÞ
zÕ¢á
&üÑ?

¼Ñ¬üé& $¸™
0ü›vÖ¢áT¸&üµ 

ĵ»€ ¸™ /ü›;×îæ&ìº
 ĺ»€Ó ¸™ .üœ<²îæ&ñ Õ

± Õ 
íœÖ;ù ½7 Ü“÷! Î .ƒ
Š}œ°u݃“÷në
òåœÈÞÞì“÷×ÿT
\PœJßY“÷EnÄ
ÌÀœºôºàÉ“÷µÞ4
<0œó d*á9“÷%N¤
¬ œ¬@Ôšâ©“÷¾
όD
ã“÷.
Œœž´zä“÷užô
üðœ×$êåù“÷åd
l`œZæi“÷U~Ô
ÜМÉÊçÙ“÷ÅîD
L@œ‚t:èI“÷5^´
¼°œ» äªé¹“÷¥Î$
, œô@Tê)“÷>
œœ­ÄŠë“÷®
 œæ4úì “÷õù í’û Ô  á áFlagÁ ãÐ  f ä» fÐnÆù"kE“÷w 
 çš  õš ù ç  Ô…•ù ô( ñùù î’ú  šê  šê  šê  šê  šê  šê 1€
šê 1
šê 1„
šê 1†
šê 1ˆ
šê 
šê 
šê 
šê 1
šê 1
šê 1”
šê ÿG é• í¸™y ‡– Ü“÷$ݓ÷<︙6Þ“÷Tð¸™Nß“÷lñ¸™fà“÷ò¸™~á“÷œó¸™â“÷´ô¸™®ã“÷Ìõ¸™Æä“÷äö¸™Þå“÷ü÷¸™öæ“÷ø¸™ç“÷.ù¸™)è“÷Hú¸™Cé“÷bû¸™]ê“÷|ü¸™wë“÷ý¸™ì“÷¼Ôù וG  ו 
v“÷òí¸™ÿñÜ“÷þIOHÛ›/<.Ý“÷;ŒÛ›l︙ykÞ“÷xÃÉÂÛ›©ð¸™¨ß“÷µÛ›éñ¸™öèà“÷õ@GAÛ›)ò¸™6(á“÷5Û›ió¸™vhâ“÷uÀÇÁÛ›©ô¸™¨ã“÷µ Û›éõ¸™öèä“÷õ
 @GA Û›)ö¸™6(å“÷5 

Û›i÷¸™vhæ“÷u  ÀÇÁ Û›©ø¸™¨ç“÷µ
  Û›éù¸™öèè“÷õ
@GA
Û›)ú¸™6(é“÷5Û›iû¸™vhê“÷uÀÇÁÛ›©ü¸™¨ë“÷µÛ›éý¸™öèì“÷õ@   
  
bqÔÁŽŠ{vqlgb]XSNID?8 "1í¸™,Ü“÷KFÝ“÷e︙`Þ“÷ð¸™zß“÷ñ¸™à“÷³ò¸™®á“÷Íó¸™Èâ“÷çô¸™âã“÷õ¸™üä“÷ö¸™å“÷5÷¸™0æ“÷Oø¸™Jç“÷iù¸™dè“÷ƒú¸™~é“÷û¸™˜ê“÷·ü¸™²ë“÷Ñý¸™Ìì“÷
¸™"OK"Á ¸™ "CANCELLED"Á¸™ "UNKNOWN"Á¸™"INVALID_ARGUMENT"Á¸™"DEADLINE_EXCEEDED"Á ¸™ "NOT_FOUND"Á¸™"ALREADY_EXISTS"Á¸™"PERMISSION_DENIED"Á¸™"RESOURCE_EXHAUSTED"Á¸™"FAILED_PRECONDITION"Á¸™ "ABORTED"Á ¸™"OUT_OF_RANGE"Á
¸™"UNIMPLEMENTED"Á¸™
"INTERNAL"Á ¸™
"UNAVAILABLE"Á ¸™ "DATA_LOSS"Á¸™"UNAUTHENTICATED"Á‰ i ê Ù ú  Ÿ) ¯ž  ·ž 1
šê ! †  ù Ž ) 
 |“÷…• ¸   ù Ž , $ ù  -  º  ù Ý   y à  
! à     %
,A å  
y“÷ <
Q å  \
 î   I ¢¡     ®¡ 
a ®¡  ! ®¡  +
2) ³¡ 
x“÷<9 ³¡ ` ¹¡ 
Œ! »¡ 
ê
1 »¡  À¡ ù –¡+ 
 
"
( Á¡ ù ð t  ¥5  ä¡  Ì ã¡ 
  1 †¢  ‹¢ , +
Rù àŸË  ª¢  
Ÿê 1˜
šê *%,5 |“÷…•!(*<   #
+ì¯2
÷N óîõêåìáè
ß‹± Ö1ÒR
ZÏÙ±a
ÉÄ¿
Û⻿V決y­´© ¤Ë  Ë
ó ¢«œ£ ˜
Ÿê 
šê !Â"½#Ä#Í |“÷…•¹$À$µ%#Â&$%Ô &%$±"#$«$¦'Ÿ(š)¡)"»
Øì¯)Ê(æ( )**+},-y.." 
¨w‹±.©-nÉ,-j.ê
ògÙ±,ù+a\,W
*+s+z*S-N'Wî~)I'RE(L'A/<c /c
/:!C4#;" š
Ÿê !
šê 0Z1U2\2e |“÷…•Q3X3M42Z534l 543I123C3>67728981S
[0ì¯8b7'~7 #89%9:;<==18
@‹±=A<a;<=
ŠÿÙ±;:ùô;ï
9: :9ë<æ6ï 8á6ê© Ý7ä6Ù>Ôû >û
#>Ò0ÛÌ2Ó1 œ
Ÿê 0
šê ?ò
@í
Aô
Aý
 |“÷…•é
Bð
Bå
CAò
DBC  DCB!á
@ABÛ
BÖ
EÏ
FÊ
GÑ
G@ë

ó
È
ì¯Gú
F"¿
 F&# »
G
H½
H²
I­
J´
K©
L°
L@Ð

Ø
§
‹±LÙ
K$ž
ù
JKš
L 
" 
Ù±J) I%
Œ
J

HI£
Iª
Hƒ
K~
E
 '® Gy
E
A 'u
F|
Eq
Ml

 M
(
»
Mj
?s
d
Ak
@ ž
Ÿê ?1 
šê NŠ
O
PŒ
P
 |“÷…•
Qˆ
Q}
RPŠ
SQRœ
 SRQ)y
OPQs
Qn
Tg
Ub
Vi
VOƒ


`
ì¯V
U*W
®
U.+ S
VN
WU
WJ
XE
YL
ZA
[H
[Oh

p
?
‹±[q
Z,6

YZ2
[²

º
/
Ù±YÁ
X-)
$
Y

WX;
XB
W
Z
T
/FV
T
Ù/
U
T
\
+
 \+
0
S
\
N
ü P
O  
Ÿê N
šê ]"^_$_- |“÷…•` `a_"b`a4 ba`1^_` ` cÿ dú e e^
# øì¯e*d2ïF d63 ë eæ fí fâ gÝ hä iÙ jà j^
 ׋±j i4Î) hiÊ jJ
R ÇÙ±hYg5Á¼ h· 
fgÓ gÚ f³ i® c·N 7Þ e© c²q 7¥ d¬ c¡ kœÃ kÃ8
ë kš]£_^ ¢
Ÿê ]
šê lºmµn¼nÅ |“÷…•±o¸o­pnºqopÌ qpo9©mno£ož
r
s
t
tm³
»
ì¯tÂs:Þ
s>; ƒ
t~
u
uz
vu
w|
xq
yx
ym˜
 
o‹±y¡x<fÁ
wxb
yâ
ê
_Ù±wñv=YT
wO

uvk
vr
uK
xF
rOæ
?v
tA
rJ 
?=
sD
r9
z4[
z[@
ƒ
z2l;,n3m ¤
Ÿê l
šê {R|M}T}] |“÷…•I~P~E}R~e ~AC|}~=~8 2 . ƒ6 ƒ|Q
Y .쯃aB'~ FC $ ƒ  (   "  ˆ  ˆ|A
I ‹±ˆKDl  ˆ
˜ 
Ù± E   
 &  ü  G- ƒù Â Gö þ ô ð H
@ ð{ùê}ñ| ¦
Ÿê {
šê Š
ŒŒ |“÷…•  ŽŒŽ- ŽI
Œ
  ü   
( ýì¯0JöM NK ó ï ÷ í é ñ ç ï 
 英Lá< ß `
h ÝÙ±pMÙÔ Ð 
î ö Ð Ì Öm Oý É Ó OÆ Î Ä ˜Àç ˜èP
 ˜ÀŠÊ»ŒÃ ¨
Ÿê Š
šê åšáéó |“÷…•ßœçœÝìžœ žœQ᚜ޜÚ
ŸÔ
 Ð
¡Ø
¡šô
ü
Ñ쯡 RÊ!
 VS Ç
¡Ã
¢Ë
¢Á
£½
¤Å
¥»
¦Ã
¦šå
í
¼‹±¦ï¥Tµ
¤¥³
¦4
<
±Ù±¤D£U­¨
¤¤

¢£Â
£Ê
¢¤
¥ 
ٻA
WÑ
¡
٤f
Wš
 ¢
Ÿ˜
§»
§¼X
ä
§žš ª
Ÿê 
šê ¨¹©µª½ªÇ |“÷…•³«»«±¬ªÀ­«¬Õ ­¬«Yµ©ª«²«®®¨¯¤°¬°©È
Х쯰دZžõ¯^[ °±Ÿ±²³´µµ©¹
Á‹±µÃ´\ä³´µ
Ù±³²]|³x
±²²ž±x´t®~_¥°q®{:_n¯v®lh `
¸h¨rcªk© ¬
Ÿê ¨
šê · ¸¹¹ |“÷…•º º»¹¼º»©  ¼»ºa¸¹ºº½| ¾x ¿¿¸œ 
¤ y 쯿¬ ¾br É ¾fc o ¿k Às Ài Áe Âm Ãc Äk ĸ 
d ‹±Ä— Ãd] ¸ ÂÃ[ ÄÜ 
ä Y Ù±Âì ÁeU P ÂL 
ÀÁj Ár ÀL ÃH ½R é!gy!¿E ½O "gB ¾J ½@ Å< c  Åd h
Œ Å< ·F 7 ¹? ¸ ®
Ÿê ·
šê Æa#Ç]#Èe#Èo# |“÷…•[#Éc#ÉY#ÊÈh#ËÉÊ}# ËÊÉi]#ÇÈÉZ#ÉV#ÌP#ÍL#ÎT#ÎÇp#
x#M#ì¯Î€#ÍjF##Ínk C#Î?#ÏG#Ï=#Ð9#ÑA#Ò7#Ó?#ÓÇa#
i#8#‹±Ók#Òl1#Œ#ÑÒ/#Ó°#
¸#-#Ù±ÑÀ#Ðm)#$#Ñ #
ÏÐ>#ÐF#Ï #Ò#Ì&#½$oM$Î#Ì##â$o#Í#Ì#Ô#7# Ô8#p
`#Ô#Æ# #È#Ç °
Ÿê Æ
šê Õ5&Ö1&×9&×C& |“÷…•/&Ø7&Ø-&Ù×<&ÚØÙQ& ÚÙØq1&Öר.&Ø*&Û$&Ü &Ý(&ÝÖD&
L&!&ì¯ÝT&Ür&q&Üvs &Ý&Þ&Þ&ß
&à&á &â&âÖ5&
=& &‹±â?&át&`&àá&â„&
Œ&&Ù±à”&ßuý%ø%àô%
Þß&ß&Þô%áð%Ûú%'w!'Ýí%Û÷%¶'wê%Üò%Ûè%ãä% & ã &x
4&ãä%Õî%ß%×ç%Ö ²
Ÿê Õ1´
šê ä )å)æ
)æ) |“÷…•)ç )ç)èæ)éçè%) éèçy)åæç)çþ(êø(ëô(ìü(ìå)
 )õ(ì¯ì()ëzî(E)ë~{ ë(ìç(íï(íå(îá(ïé(ðß(ñç(ñå )
)à(‹±ñ|Ù(4)ïð×(ñX)
`)Õ(Ù±ïh)î}Ñ(Ì(ïÈ(
íîæ(îî(íÈ(ðÄ(êÎ(e*õ)ìÁ(êË(Š*¾(ëÆ(ê¼(ò¸(ß( òà(
 )ò¹(äÃ(´(æ¼(å ´
Ÿê ä
šê óÞ+ôÚ+õâ+õì+ |“÷…•Ø+öà+öÖ+÷õå+øö÷ú+ ø÷öÛ+ôõöØ+öÔ+ùÎ+úÊ+ûÒ+ûôî+
ö+Ë+ì¯ûþ+úÅ+,úƒ Ä+ûÀ+üÈ+ü¾+ýº+þÂ+ÿ¸+À+ôâ+
ê+¹+‹±ì+ÿ³+,þÿ±+2,
:,¯+Ù±þB,ý¬+§+þ£+
üýÁ+ýÉ+ü£+ÿŸ+ù©+@-Ñ,û+ù§+f-›+ú£+ù™+•+¼+ ½+ˆæ+–+ó +‘+õ™+ô
Ÿê óI “£  ­£  ù ºõ Ûù æÈ ù «žƒ ù ‚ ©  &,28>DJPV\bhù ô¢: ¬ö/Õ/½, ±/…•®/‘//‰/8/1/«./Ì.½. “÷½.ÿÆ.«½.-B-«30…•0000 0º/³/«°/N/?/ÿ</ÿE/«</Ž.¿-«°0…•­000ˆ07000«-0Ë/¼/ÿ¹/ÿÂ/«¹/Ž•.<.«-1…•*1
1þ01´0­0«ª0H090ÿ60ÿ?0«60Ž/¹.«ª1…•§1Š1{1111*1«'1Å0¶0ÿ³0ÿ¼0«³0Ž/6/«'2…•$22ø1ÿ1®1§1«¤1B131ÿ01ÿ91«01Ž 0³/«¤2…•¡2„2u2|2+2$2«!2¿1°1ÿ­1ÿ¶1«­1މ000«!3…•33ò2ù2¨2¡2«ž2<2-2ÿ*2ÿ32«*2Ž1­0«ž3…•3~3o3v3%33«3¹2ª2ÿ§2ÿ°2«§2Žƒ1*1«4…•4û3ì3ó3¢33«˜363'3ÿ$3ÿ-3«$3Ž2§1«˜4…••4x4i4p444«4³3¤3ÿ¡3ÿª3«¡3Ž}2$2«5…•5õ4æ4í4œ4•4«404!4ÿ4ÿ'4«4Žú2¡2«’5…•5r5c5j555«5­4ž4ÿ›4ÿ¤4«›4Žw33«6…• 6ï5à5ç5–55«Œ5*55ÿ5ÿ!5«5Žô3›3«Œ6…•‰6l6]6d66 6« 6§5˜5ÿ•5ÿž5«•5Žq44« 7…•7é6Ú6á66‰6«†6$66ÿ6ÿ6«6Žî4•4«†7…•ƒ7f7W7^7
77«7¡6’6ÿ6ÿ˜6«6Žk5 truncatedÁg8´J8flagÁ"8/8<8"I81V8@c8Op8 ^}8
mŠ8 |—8 ¥8
š³8©Á8¸Ï8ÇÝ8Öë8åù8ô0
]9 Ÿ 9 |“÷…•9 |“÷…•+9 |“÷…•;9 |“÷…•K9 |“÷…•[9 |“÷…•k9 |“÷…•{9 |“÷…•‹9 |“÷…•›9 |“÷…•«9 |“÷…•»9 |“÷…•Ë9 |“÷…•Û9 |“÷…•ë9 |“÷…•û9 |“÷…• : |“÷…•ùº
×$! ¿Ùº
Ü$  Ÿ»
ó’ ù»
»’8 î÷
Ó’  N Ÿº
ù* 
î÷»
†” ù»
Ò“4 î÷
è“  Tî÷E
ð% Ùº
€& 
 Ÿ
¹&  º
Â& 

šê ùº
®(e ùº
®(^  ùº
®(- ùº
®()   |“÷…•º
Ø(    F
R 
c  
v 
ž
…) ‹±¢
…) Å º
) é
ð
) Ù±ú
)  º
) ùº
¡(r 
  º
“)   
¹)   º
¿) *  *P ùº
û'è  ½
Ÿê 1¿
šê 
âÝäÙÔÛä |“÷…•ÑØ!3 Gi
qÔ‹±rÑγ
»ÌÙ±ÂÉÅÁ
ܽÄË»·Ý Þ
¿ ¿
Ÿê 
šê ŽŠŒ |“÷…•ÅÒä  ø
"‹±#
Cd
l}Ù±s zvr
nu|l hŽ    gp Á
Ÿê 
šê !D"?#F$;%6&=&F |“÷…•3':'v(&ƒ)'( )('
©%&'Ë
Ó6‹±%Ô$3ô#$0%
.Ù±#$"+'##
">"'&&-$*? *@g*!! Ã
Ÿê !
šê +õ,ð-÷.ì/ç0î0÷ |“÷…•ä1ë1'204312F 321Z/01|
狱/.ä¥-.á/Æ
ÎßÙ±-Õ,ÜØ-Ô
,ï,Ð1×0Þ.Î4Êð 4ñ4É+Ò Å
Ÿê +
šê 5¦6¡7¨89˜:Ÿ:¨ |“÷…•;œ;Ø<:å=;<÷ =<; 9:;- 
5 ˜‹±96 8V 789w 
 Ù±7† 67
6 6;ˆ:8>{¡ >¢É>z5ƒ Ç
Ÿê 5
šê ?W
@R
AY
BN
CI
DP
DY
 |“÷…•F
EM
E
FD
GEF¨
 GFE¼
CDEÞ

æ
I
‹±Cç
BF
 ABC
C( 
0 A
Ù±A7 @>
:
A6

@Q
@2
E9
D@
B0
H,
R
 HS
z
H+
?4
 É
Ÿê ?
šê I J K
Lÿ Mú N N
 |“÷…•÷ Oþ O: PNG QOPY  QPOm MNO 
 ú ‹±M˜ L÷ ¸ KLô MÙ 
á ò Ù±Kè Jï ë Kç 
J Jã Oê Nñ Lá RÝ   R  + RÜ Iå  Ë
Ÿê I
šê S¹
T´
U»
V°
W«
X²
X»
 |“÷…•¨
Y¯
Yë
ZXø
[YZ
 [ZY!WXY@
H«
‹±WIV"¨
iUV¥
WŠ
£
Ù±UT# 
œ
U˜

T³
T
Y
X¢
V
\Ž
´
 \µ
$Ü
\
S
 Í
Ÿê S
šê ]j^e_l`aa\bcbl |“÷…•Yc`cœdb©ecd» edc%Ïabcñ
ù\‹±aú`&Y_`Va;
CTÙ±_J^'QM_I
^d^EcLbS`Cf?e ff(f>]G Ï
Ÿê ]
šê ghijk
ll |“÷…•
mmMnlZomnl onm)klm¢
ª
‹±k«j*
Ëijkì
ôÙ±iûh+þiú
hhömýljôpð p,>pïgø Ñ
Ÿê g
šê qÌrÇsÎtÃu¾vÅvÎ |“÷…•»wÂwþxv ywx yxw-1uvwS
[¾‹±u\t.»|st¸u
¥Ù±s¬r/³¯s«
rÆr§w®vµt¥z¡Ç zÈ0ïz q© Ó
Ÿê q
šê {}|x}~tow |“÷…•nv³Âƒ× ƒ1î
}‹±~2z;}~w\
duÙ±}k|3rn}j
||fnv~fc 4²d{m Õ
Ÿê {1×
šê B>Fˆ<8Š@ŠJ |“÷…•7?|ŒŠŒ  Œ5·ŠÜ
äG‹±æˆ6FˆE+
3DÙ±;7C?<
X:BŠJˆ;Ž8^ Ž`8Ž9C ×
Ÿê 
šê ! |“÷…•Sbw 9޳
»‹±½:Þ

Ù±;
/!˜5 ˜7<^˜ Ù
Ÿê 
šê ðšìôœêæžîžø |“÷…•åŸíŸ* ž9¡Ÿ N ¡ Ÿ=ežŸŠ
õ‹±œ>ôµœóÙ
áòÙ±éš?ñíê
ššèŸðžøœé¢æ  ¢@5¢çñ Û
Ÿê 
šê £Ç¤Ã¥Ë¦Á§½¨Å¨Ï |“÷…•¼©Ä©ª¨«©ª% «ª©A<§¨©a
iÌ‹±§k¦BËŒ¥¦Ê§°
¸ÉÙ±¥À¤CÈÄ¥Á
¤Ý¤¿©Ç¨Ï¦À¬½ã ¬åD  ¬¾£È Ý
Ÿê £
Â* ­ ­¡º
¸*  ¿­ º
Ë* ­ º
á*  ùº
»%¨ ùº
ì%ö ùº
µ&­ ®î÷
Æ% hBÿ?ÿH«?…•< X_Ž2Ûÿÿœ«…•t¬³Ž/êÿçÿð«ç…•äÈŽÚƒ>ÿ;ÿD«;…•8T[Ž.×ÿÿ˜«…•Œp¨¯Ž+æÿãÿì«ã…•àÄü ŽÖ: ÿ7 ÿ@ «7 …•4  P W Ž*ÓŽ ÿÿ«…•ˆ l ¤ « Ž~'â ÿß ÿè «ß …•Ü À ø ÿ ŽÒ{6!ÿ3!ÿ<!«3!…•0!!L!S!Ž& ÏŠ!ÿ‡!ÿ!«‡!…•„!h! !§!Žz # Þ!ÿÛ!ÿä!«Û!…•Ø!¼!ô!û!ŽÎ w 2"ÿ/"ÿ8"«/"…•,""H"O"Ž"!Ë †"ÿƒ"ÿŒ"«ƒ"…•€"d"œ"£"Žv!!Ú"ÿ×"ÿà"«×"…•Ô"¸"ð"÷"ŽÊ!s!.#ÿ+#ÿ4#«+#…•(# #D#K#Ž"Ç!#ÿ#ÿˆ#«#…•|#`#˜#Ÿ#Žr"=üœ7$_iÁ$H$ ŸÛ# |“÷…•ë# |“÷…•û# |“÷…• $ |“÷…•$ |“÷…•+$ |“÷…•;$ |“÷…•K$ |“÷…•[$ |“÷…•k$ |“÷…•{$ |“÷…•‹$ |“÷…•›$ |“÷…•«$ |“÷…•»$ |“÷…•Ë$ |“÷…•Û$ |“÷…•
Å+ »
ó• ù»
¹•: O1 î÷
Ë• 7
œ, ñº
¨, 
Á,  !
(Áº
¨, 
5H º
Å, ùº
¨,   º
È, ‰º
â, 
â,  
ï,  7H º
ò,  
¼- 
Á-    ! ¿ º
Å-  ùº
Ž-9  Û¼î÷ º
Æ- ùº
ß,á ùº
ý--  Û¼î÷8 º
¿.  º
Ñ. »
˜ ù»
ž—r ùº
˜ 
Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙî÷ù»
×- 
µ— @î÷>;ÖÓÅî÷ˆ´QüœÛ¡º
/ 
/  
¢/ 
¢/ 

¢/ 
-<l  º
®/  Ѻ
–/ ¿ º
¯/  º
Á/ »
Ö™ ù»
û˜[ î÷
©™ 
›™ þúëî÷è´-W
‰0  
„0 ¿ º
0 »
„› ˜ù»
­šW î÷
Ùš 
Ëš }´A
¸™"OK"Á ¸™ "CANCELLED"Á¸™ "UNKNOWN"Á¸™"INVALID_ARGUMENT"Á¸™"DEADLINE_EXCEEDED"Á ¸™ "NOT_FOUND"Á¸™"ALREADY_EXISTS"Á¸™"PERMISSION_DENIED"Á¸™"RESOURCE_EXHAUSTED"Á¸™"FAILED_PRECONDITION"Á¸™ "ABORTED"Á ¸™"OUT_OF_RANGE"Á
¸™"UNIMPLEMENTED"Á¸™
"INTERNAL"Á ¸™
"UNAVAILABLE"Á ¸™ "DATA_LOSS"Á¸™"UNAUTHENTICATED"Á
ù:  ùº
ù:% Ùº
ƒ;  Ÿ º
; »
’Ÿ œù»
ΞD 
ïž áïù»
Ì•ž  Az Ÿ±º
ˆ= 
ˆ= 
ˆ= 

ˆ= ƒö+ :
˜=  o
 º
=  
¢=  ùº
ˆ=   º
§=   º
¹= »
º  ù»
úŸ@ 
™  áïù»
Ì•È
 î÷ä°8a
º
þ= 
þ=  
‡>  @  º
>  ùº
þ=/ Ùº
>  Ÿ º
¬> »
ü¡ žù»
¦¡V 
ס áïù»
Ì•ø  î÷
Æ¡ ãßË4¹
1j£ Ÿ
º
? 
?  
Š?  @  º
?  
•?  Ùº
?  º
?  »
º£ Ÿù»
è¢R 
—£ áïù»
Ì•¸
 î÷
†£ ñíÙ¦;¹
8q
º
ãD 
ãD  
ìD  ?  º
òD  ±º
ÞD ¿ º
óD »
Ƭ ¤ù»
í«Y î÷
Ÿ¬ î÷ù»
Ì•À î÷
ެ ×ÓÀ4¹
1l
º
ÉE 
ÉE  
ÒE  ?
 º
ØE  ±º
ÄE ¿ º
ÙE »
•® ¥ù»
Ê­K î÷
õ­ î÷ù»
Ì• î÷
ä­ ×ÓÀ4¹
1l
‰º
´F 
´F  
½F 
¾F  % º
ÄF a  ¹º
¯F ¿ º
ÅF »
¼± ¦ù»
ç°U î÷
—± î÷ù»
Ì•¸ î÷
†± ôðÝÙ;¹
8s
º
ªG 
ªG  
³G  ?  º
¹G  ±º
¥G ¿ º
ºG »
³³ §ù»
ʲi î÷
„³ î÷ù»
Ì•¥ î÷
ó² ×ÓÀ4¹
1l
¢H 
£H  % º
¨H ùº
‰H!

Áº
‰H Ðð_+ º
©H »
µ ¨ù»
È´G î÷
ê´ î÷ù»
Ì• ¼¸Jù´ØN. úN !´úN  #
*!´ÿN 
7ÿN  ´„O j
qù´ØN! | ´…O ù´œO. ¾O !´¾O  #
*!´ÃO Ò5ÃO  ´ÈO h
où´œO! zŽ ´ÉO ù´ÜM
ù´ÜM' 
“÷ù´™N)  |“÷…•æQ ´ÜO  ´ëO áù´ŠMá   IterÁ
öV  doneÁ a2²8ŸÓ“÷ù´¦M# áïœM “÷!áï“÷œ˜áïB©ÿ |“÷…•ù´T. ¯T !´¯T  #
*!´´T Ò5´T  ´¹T h
où´T! zŽ ´ºT ù´ÑT. óT !´óT  #
*!´øT Ò5øT  ´ýT h
où´ÑT! zŽ ´þT ù´ŒS†
ù´ŒS, 
$“÷ù´ÎS)  |“÷…•}æQ ´‘U  ´ U âù´¯Rñ    IterNamesÁ flagsÁ  idxÁ  sourceÁ   remainingÁ ^öÀšWc“÷ù´ÑR( áïÇR “÷KGáïE“÷ÈÄáïÂBÕ+ |“÷…•ѶÊ  
Á¶Ê  
-ù¶Å  ä  ·ó’ èù·»’8 “÷Ó’ î÷(Á¶­
 
±¶­
 ƒö+ñ¶¨
 Å
 ·†” éù·Ò“4 “÷è“ î÷Š(   î÷ 
   Ò?    ·ó• êù·¹•: eHÿË• áïš<ù¶ï " Œ   "
)á¶ï  
5I  Xù¶é ( |ù¶ç
- Û¼“÷
Ú   Ûî÷
 
  ! š
 ù¶ã 9  Û¼“÷
  ¼ ·˜ ëù·ž—r ù¶¬ p Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ“÷ù·×- µ— êóâÞù¶¬ 3 î÷Y“÷Aî÷?´I´ƒÑù¶+ ¬  "
)ù¶% Ðð4H° ù¶1 ± ·Ö™ ìù·û˜[ “÷©™ ›™ î÷À»´Iù¶) ¯  "
)ù¶# 
˜6J³ ù¶/ ´ ·„› íù·­šW “÷Ùš Ëš î÷½´I  î÷‰¶
 ˜ 
œA˜ ¡ ·’Ÿ ïù·ΞD ïž ÿù·Ì•ž  áï¢Bí  î÷í
 ô 
Aô û ·º  ðù·úŸ@ ™  ÿù·Ì•È
 áï¢BÒ  î÷ä  î÷ѶÒ
 Ù 
ž\D™¶Ù ë  ·ü¡ ñù·¦¡V ס ÿù·Ì•ø  “÷Æ¡ áïÖî÷Á/¹
,eÀ  î÷Ð  î÷Á¶À
 Ç 
Ÿ\D‰¶Ç ×  ·º£ òù·è¢R —£ ÿù·Ì•¸
 “÷†£ áïÖî÷Á/¹
,eá¶ì ì  î÷  î÷A
Hó 
¤U?©¶ó   ù¶ç" ˆ ·Ƭ ÷ù·í«Y “÷Ÿ¬ “÷ù·Ì•À “÷ެ î÷î÷ÿî÷ì8¹
5p©¶Þ Þ  î÷ë  î÷A
Hå 
¥U?å ò  Ù¶Ù ó ·•® øù·Ê­K “÷õ­ “÷ù·Ì• “÷ä­ î÷î÷þî÷ë8¹
5pѶÎ Î  î÷à  î÷A
HÕ 
¦U?™¶Õ ç  ù¶É  è ·¼± ùù·ç°U “÷—± “÷ù·Ì•¸ “÷†± î÷î÷ÿî÷ì8¹
5pù¶Í$ Í  î÷é  î÷B
I¡¶Ô 
§U?é¶Ô ð  ù¶È* ñ ·³³ úù·ʲi “÷„³ “÷ù·Ì•¥ “÷ó² î÷î÷ÿî÷ì8¹
5p™¶Å Å  î÷&
-Ì 
¨:Ì × ɶÀ Ø ·µ ûù·È´G “÷ê´ “÷ù·Ì• î÷Ìî÷É!Lù¹ØN. úN úN  #
*ÿN Ù±5ÿN  ¹„O h
où¹ØN! zŽ ¹…O ù¹œO. ¾O ¾O  #
*ÃO Ù±5ÃO  ¹ÈO h
où¹œO! zŽ ¹ÉO ù¹ÜM
ù¹ÜM' è’ù¹™N)  |“÷…•xáL ¹ÜO  ¹ëO £ù¹ŠMá Ó“ù¹¦M# ÿœM “÷ÞÚÿØ“÷[WÿUBmà |“÷…•ù¹T. ¯T ¯T  #
*´T Ù±5´T  ¹¹T h
où¹T! zŽ ¹ºT ù¹ÑT. óT óT  #
*øT Ù±5øT  ¹ýT h
où¹ÑT! zŽ ¹þT ù¹ŒS†
ù¹ŒS, â—ù¹ÎS)  |“÷…•xáL ¹‘U  ¹ U ¤ù¹¯Rñ ͘ù¹ÑR( ÿÇR “÷ÞÚÿØ“÷[WÿUBmà |“÷…•Üó ¬­%×Þ1´ß9@L ³¹%´ß1†J†JK‰Jµ 7ŠJphantomÁ7J¤7·0ØQdè" îæ ûûPartsÁümethodÁýuriÁþÄÿÿ
extensionsÁƒo¦¥*LjTu¨˜"¯Ä Ìì«â19¼ ¾¿%›à1Þâ9@ ÅÇ%Þâ1Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙîæ~¼™
ÍÎ%²ã1·å9@
ÔÖ%·å1îÆ9@´þ ÜÝ%‹æ1©è9@,Á! ãå%©è1îæ9@$Ù! ãè%©è1ßç9@Lõ! ãë%©è1ØÃ9@ôÓ ðñ%¦é1ƒê9@ ÷ý%ƒê1ØÃ9@Ä’ ƒ%êê1çë9@ %çë1îÆ9@Œ¶
%ªì1Ôí9@
˜%Ôí1îÆ9@þ
%Ôí1†J†JK‰Jµ 7ŠJöÂ7‹J¤7·0ØQdè"¯Ä˜"¯Äþì Ìì«âª±  ¡%µî1ßç9@ù‘ [ ·)“÷5î÷=Dù• Å" ¿À)î÷5<C$ÎE µ·%Íþ1ô ô õ ¨÷ ˆÐ  mjçítoéjq,ËF µº%Íþ1úHúHßûHÁ‘4Ý­f‰úM÷cjTöO ¾Â%¨ÿ1ÙÒ9@ ãå%‘‚1œË­ˆÖ =OzÇìï?xho ãè%‘‚1ØÓ9@,”L õÜ׉„ ù-¼ƒ9Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
Ü×\‡M õÜ׉„ ü-¼ƒ9‰„AHTÀa ŠŒ%½…1žÕ9@,´b Š%½…1ØÓ9@¤ÿ°±ÓÔÀüÁXü:7 `async fn(HttpRequest) -> Result<HttpResponse, Error>`Á;út? # OverviewÁNúüR`] tower-http is a library that provides HTTP-specific middleware and utilities built on top ofÁ [tower].ÁÀúüÄ^[ All middleware uses the [http] and [http-body] crates as the HTTP abstractions. That meansÁü£YV they're compatible with any library or framework that also uses those crates, such asÁüý! [hyper], [tonic], and [warp].ÁŸú¤£ # Example serverÁ¸úü¼\Y This example shows how to apply middleware from tower-http to a [`Service`] and then runÁü™ that service using [hyper].Á¹ú”½ ```rust,no_runÁ¬Ð use tower_http::{Áüæ)& add_extension::AddExtensionLayer,Áü&# compression::CompressionLayer,Áü·/, propagate_header::PropagateHeaderLayer,Áüç;8 sensitive_headers::SetSensitiveRequestHeadersLayer,Áü£+( set_header::SetResponseHeaderLayer,ÁÔÏ trace::TraceLayer,Áüê52 validate_request::ValidateRequestHeaderLayer,Á4  };Áü§63 use tower::{ServiceBuilder, service_fn, BoxError};ÁüÞUR use http::{Request, Response, header::{HeaderName, CONTENT_TYPE, AUTHORIZATION}};Áü´KH use std::{sync::Arc, net::SocketAddr, convert::Infallible, iter::once};Á¬€  use bytes::Bytes;Áì–  use http_body_util::Full;Áü´ $! # struct DatabaseConnectionPool;ÁüÙ # # impl DatabaseConnectionPool {Áüý GD # fn new() -> DatabaseConnectionPool { DatabaseConnectionPool }Á
 # }ÁüÍ
eb # fn content_length_from_response<B>(_: &http::Response<B>) -> Option<http::HeaderValue> { None }Áü³ @= # async fn update_in_flight_requests_metric(count: usize) {}Áô úüø RO // Our request handler. This is where we would implement the application logicÁüË )& // for responding to HTTP requests...Áüõ `] async fn handler(request: Request<Full<Bytes>>) -> Result<Response<Full<Bytes>>, BoxError> {Á
// ...ÁŒå
 # todo!()Á
ý
úüa^ // Shared state across all request handlers --- in this case, a pool of database connections.Á”ã struct State {Áüö%" pool: DatabaseConnectionPool,ÁÜé¢ú”¦ #[tokio::main]Á¬¹ async fn main() {ÁüÏ&# // Construct the shared state.ÁÜö let state = State {Áü’0- pool: DatabaseConnectionPool::new(),Á };ÁÎúüÒPM // Use tower's `ServiceBuilder` API to build a stack of tower middlewareÁü£(% // wrapping our request handler.ÁüÌ+( let service = ServiceBuilder::new()Áüø^[ // Mark the `Authorization` request header as sensitive so it doesn't show in logsÁü×MJ .layer(SetSensitiveRequestHeadersLayer::new(once(AUTHORIZATION)))Áü¥;8 // High level logging of requests and responsesÁüá.+ .layer(TraceLayer::new_for_http())Áü63 // Share an `Arc<State>` with all requestsÁüÇ;8 .layer(AddExtensionLayer::new(Arc::new(state)))Áüƒ! // Compress responsesÁü¥+( .layer(CompressionLayer::new())ÁüÑC@ // Propagate `X-Request-Id`s from requests to responsesÁü•VS .layer(PropagateHeaderLayer::new(HeaderName::from_static("x-request-id")))ÁüìOL // If the response has a known size set the `Content-Length` headerÁü¼b_ .layer(SetResponseHeaderLayer::overriding(CONTENT_TYPE, content_length_from_response))ÁüŸ/, // Authorize requests using a tokenÁüÏEB .layer(ValidateRequestHeaderLayer::bearer("passwordlol"))Áü•_\ // Accept only application/json, application/* and */* in a request's ACCEPT headerÁüõJG .layer(ValidateRequestHeaderLayer::accept("application/json"))ÁüÀ74 // Wrap a `Service` in our middleware stackÁüø! .service_fn(handler);Áüš$! # let mut service = service;Áü¿LI # tower::Service::call(&mut service, Request::new(Full::default()));ÁÜé< ```ÁšúüžSP Keep in mind that while this example uses [hyper], tower-http supports any HTTPÁüòMJ client/server implementation that uses the [http] and [http-body] crates.ÁÀú¤Ä # Example clientÁÙúüÝ>; tower-http middleware can also be applied to HTTP clients:Áœú” ¹Þ¬³ÔÞüÉ*' decompression::DecompressionLayer,Áüô*' set_header::SetRequestHeaderLayer,ÁÔŸˆáüº*' classify::StatusInRangeAsFailures,Áêáüì52 use tower::{ServiceBuilder, Service, ServiceExt};Áü¢ @= use hyper_util::{rt::TokioExecutor, client::legacy::Client};Áìã ‹ä¬!íãü—!96 use http::{Request, HeaderValue, header::USER_AGENT};ÁÑ!ú”Õ!Äë¬è!ßëüþ!DA let client = Client::builder(TokioExecutor::new()).build_http();ÁüÃ".+ let mut client = ServiceBuilder::new()Áüò"@= // Add tracing and consider server errors and clientÁü³#" // errors as failures.ÁüÖ## .layer(TraceLayer::new(Áüú#NK StatusInRangeAsFailures::new(400..=599).into_make_classifier()ÁtÉ$ ))ÁüØ$96 // Set a `User-Agent` header on all requests.Áü’%52 .layer(SetRequestHeaderLayer::overriding(ÁÜÈ% USER_AGENT,Áüä%;8 HeaderValue::from_static("tower-http dem
8¦ © ¯88öV& , ¸8˜¡8 å, æ ç î, è8̤$ ï
ð ñ, ó8Ð  ø, ù ú , û8̤$ 
ƒ   õ8  8,˜8 Ÿ8æ ¢ ¥ ´8öV& «, ­8˜¡(8 ¾ ë8 Õ Ý8öV,×8$€  ,   , 8̤,ˆ $ Ž 
 8û L ' 8BodyÁ$ 8
¢ , ¦ 8Ð  « , ¬  ­  ´ , ® 8̤$ µ 
 ·  ¹  M8!8® Ñ  Ó , Ô 8˜¡8Ü 8û 'è 8Ø« î 'ï 8®% õ 8!
8¹,ˆ
 Ž

,
8˜¡4
8
8û
'¥
8Ø«
 «
'¬
8¹
% ³
+ Â
 Ã
 Ê
8Ý
8 Ø
8Å
 å
 Ô 8
& û
8Àý
' 8ÿ
 ' 8PinÁ  Š  8Œ 8$  $ 8cxÁ§ & ©  « 8¬ 8À° '³ 8taskÁ '¹ 8k   :8à  Å $ Æ (Ö 8ÀÙ 'Ü 8º° 'â 8·  è 8¬  ï 8Í  ö 8û ' 8FrameÁ,  8$ˆ 'Œ 8®  $ 8$• ' 8¹,    ¢  ¤  æ  8  º 8¯Z    à  Ä 8öV  Ê 8Å  Õ  Ø 8ƒ°Ö + õ  ö  ý 8Ý 8 
8Ö

 ¡
 œ
8$
(£
8º
 «
 õ
8û
'Æ
8Ø«
'Ì
8Ö
 Û
 ç
 Ü
8
 á
8öV
+   Œ8Ý4†8 š8êL ¦ ¬ §8(®8û 'º8SizeHintÁ Å 8û L×'à8Ø«'æ8ê ñ ý ò8 ÷8öV% œÔ¹ Ô Ë Ú Ÿ, Û Ü ç+ Ý Þ æ, ß8¸ à& á8û
è8ê8!, ó8Ð & ø8¼ þ, ÿ  , 8̤,& 8¼,ˆ$ Ž   , 8˜¡4•& 8´œ% ž*¡ ¤ ÉK8 „®'¾8Ü¥ Ë Í Ý, Û Ü â+ Ý Þ á, ß8¸ à
ã8ñ8, ü8Ð  ,  ƒ Š, 8̤,…$  Œ   Ó+ ¡ ¢ ¦8ÿ
£8öV,¸& ½, ¿8˜¡8 ì, í î õ, ï8̤$ ö ÷ ø, ú8Ð  ÿ,   ˆ, 8̤$  Š    8 ž ¤88 ¦8æ © ¬ »8öV,­& ², ´8˜¡(½8 Å 8 Ü ˆ8öV8 ¯, ° ± ¸, ²8̤$ ¹ º »8À½'À8×Â'Å8p8
Í, Ñ8Ð  Ö, × Ø ß, Ù8̤$ à á â ä £
8 ò8×õ ø Ÿ ù8$ þ8± &  ƒ88Àˆ'8×'8ˆL :8œ ž(¡8À¤'§8ש'¬8Í µ 
8± Ç È8 debug_tupleÁ Ô æ8Ô Þ ß å, à8Ð  ç8Â í  î8ë ú û 7...Á ƒ8finishÁ4„ Š 8 ², ³ ´ », µ8̤$ ¼ ½ ¾8ÀÀ'Ã8ú'Ë8”38
Ô, Ø8Ð  Ý, Þ ß æ, à8̤$ ç è é8$, 8˜¡4†& Œ8ÀŽ'8ú4“'8”34$ ¡ « Ã!8!8° Å Ç, È8˜¡8Ð8ÀÓ'Ö8ú'Þ8”3 æ'ç8°% ï+ ý þ 8Ý4ÿ8 8Š $– š Ú8$& Ÿ8À¡'¤8ÿ
¦'©8ů« ® ¯8°8 ¸$ ¹8ƒ°»& ½ ¿8À8ÀÄ'Ç8º°'Í8k Ö:8× Ù(Ü8Àß'â8º°'è8· î8'ó8° û ý ¹ 8$ 8¯Z<”  œ 8öV £8Š  ¨ «8ƒ°©l¶Oü?< Middleware that adds high level [tracing] to a [`Service`].Á@úlD
# ExampleÁRúüV74 Adding tracing to your service can be as simple as:ÁŽú\ ```rustÁüž" use http::{Request, Response};ÁüÁ52 use tower::{ServiceBuilder, ServiceExt, Service};Áü÷&# use tower_http::trace::TraceLayer;Áüž! use std::convert::Infallible;ÁìÀ‹ä¬Þíãôúüøa^ async fn handle(request: Request<Full<Bytes>>) -> Result<Response<Full<Bytes>>, Infallible> {ÁüÚ*' Ok(Response::new(Full::default()))Á,…Üéú¤ # #[tokio::main]Áü¤A> # async fn main() -> Result<(), Box<dyn std::error::Error>> {Á¤æ // Setup tracingÁüû$! tracing_subscriber::fmt::init();Á úü¤+( let mut service = ServiceBuilder::new()ÁüÐ*' .layer(TraceLayer::new_for_http())Áäû .service_fn(handle);Á˜úüœ2/ let request = Request::new(Full::from("foo"));ÁÏúÔÓ let response = serviceÁ„î
.ready()Á|ÿ .await?Á´ .call(request)Á„¦
.await?;Á # Ok(())ÁÝåÀúÔúüØda If you run this application with `RUST_LOG=tower_http=trace cargo run` you should see logs like:Á½ú ```textÁüÍxu Mar 05 20:50:28.523 DEBUG request{method=GET path="/foo"}: tower_http::trace::on_request: started processing requestÁüÆ  Mar 05 20:50:28.524 DEBUG request{method=GET path="/foo"}: tower_http::trace::on_response: finished processing request latency=1 ms status=200Á
Àúá
úœå
 # CustomizationÁù
úüý
`] [`Trace`] comes with good defaults but also supports customizing many aspects of the output.ÁÞ úüâ 63 The default behaviour supports some customization:Á ú\ “Íü© 96 use http::{Request, Response, HeaderMap, StatusCode};Áìã ‹ä¬
íãô—
 use tower::ServiceBuilder;Á¼¶
 use tracing::Level;Á¬Î
ÔÞ¤ä
 LatencyUnit,Áüù
RO trace::{TraceLayer, DefaultMakeSpan, DefaultOnRequest, DefaultOnResponse},ÁêáäÓ use std::time::Duration;Áüð'$ # use tower::{ServiceExt, Service};Áü˜# # use std::convert::Infallible;Á¼úüÀc` # async fn handle(request: Request<Full<Bytes>>) -> Result<Response<Full<Bytes>>, Infallible> {Áü¤.+ # Ok(Response::new(Full::from("foo")))ÁÝå¤ÛËÐüðAéÐü²&# # tracing_subscriber::fmt::init();Áüß'$ let service = ServiceBuilder::new()Á|‡ .layer(Áü—&# TraceLayer::new_for_http()Áü¾  .make_span_with(Áüß@= DefaultMakeSpan::new().include_headers(true)ÁŒ ä² .on_request(ÁüÏ>; DefaultOnRequest::new().level(Level::INFO)ÁŒŽ¯âì  .on_response(Áü¾,) DefaultOnResponse::new()Áüë+( .level(Level::INFO)Áü—:7 .latency_unit(LatencyUnit::Micros)ÁŒÒ¯âüäKH // on so on for `on_eos`, `on_body_chunk`, and `on_failure`ÁäºóÒü×  # let mut service = service;Áäø # let response = serviceÁ”• # .ready()ÁŒ¨ # .await?Áüº0- # .call(Request::new(Full::from("foo")))Á”ë # .await?;ÁøÔ<Ýå<“ÀúúüŸ:7 However for maximum control you can provide callbacks:ÁÚú“Íüê9òÚ줋ä¬ÂíãôØÎÛü÷LI use tower_http::{classify::ServerErrorsFailureClass, trace::TraceLayer};ÁäĨݴá use tracing::Span;Áüø'ÎÝü #ÿÝÄúüÈc¸Þü¬.¥ßÝå¤ãËÐüøAéÐüº&…à´àüç'Ãà|óàüŸ&ŒáüÆB? .make_span_with(|request: &Request<Full<Bytes>>| {Áü‰85 tracing::debug_span!("http-request")Á” })ÁüÕLI .on_request(|request: &Request<Full<Bytes>>, _span: &Span| {Áü¢ \Y tracing::debug!("started {} {}", request.method(), request.uri().path())Á”ÿ ÷ìü’!b_ .on_response(|response: &Response<Full<Bytes>>, latency: Duration, _span: &Span| {Áüõ!JG tracing::debug!("response generated in {:?}", latency)Á”À"÷ìüÓ"QN .on_body_chunk(|chunk: &Bytes, latency: Duration, _span: &Span| {Áü¥#DA tracing::debug!("sending {} bytes", chunk.len())Á”ê#÷ìüý#a^ .on_eos(|trailers: Option<&HeaderMap>, stream_duration: Duration, _span: &Span| {Áüß$PM tracing::debug!("stream closed after {:?}", stream_duration)Á”°%÷ìüÃ%`] .on_failure(|error: ServerErrorsFailureClass, latency: Duration, _span: &Span| {Áü¤&;8 tracing::debug!("something went wrong")Á”à&÷ìLó&úåäý&óÒüš' šæä»'Ãæ”Ø'èæŒë'ƒçüý'0žç”®(×çdÁ(øÔ<Î(Ýå<Ö(ÀúÞ(úÔâ( ## Disabling somethingÁý(úü)GD Setting the behaviour to `()` will be disable that particular step:ÁÉ)ú\Í)“ÍÌÙ) use http::StatusCode;Áôó)ÎÛü’*L¸éäß*¨Ý´ü*šêü“+'ÎÝü»+ # use http_body_util::Full;Á¼Û+ # use bytes::Bytes;Áüó+$! # use http::{Response, Request};Áü˜,#ÿݼ,úüÀ,c¸Þ
L£]É ­]úü±]C@ fn classify_error<E>(self, error: &E) -> Self::FailureClassÁlõ]
whereÁüƒ^+( E: std::fmt::Display + 'static,ÁL¯^ü¹^%" "something went wrong..."ÁLß^É ,é^Üéï^úüó^'Ãàü›_96 // Create a trace layer that uses our classifier.ÁüÕ_/, .layer(TraceLayer::new(MyMakeClassify))Áä…`óÒ¢`úü¦`IF // Since `MyClassifier` is `Clone` we can also use `SharedClassifier`Áüð`=: // to avoid having to define a separate `MakeClassifier`.Áü®a'ÃàüÖaDA .layer(TraceLayer::new(SharedClassifier::new(MyClassifier)))Áä›bóÒd¸bøÔ<ÅbÝå<ÍbÀúÕbúüÙbOL [`TraceLayer`] comes with convenience methods for using common classifiers:Á©cúü­c[X - [`TraceLayer::new_for_http`] classifies based on the status code. It doesn't considerÁĉd streaming responses.Áü¢d_\ - [`TraceLayer::new_for_grpc`] classifies based on the gRPC protocol and supports streamingÁte responses.Áeúü•e/, [tracing]: https://crates.io/crates/tracingÁüÅe'$ [`Service`]: tower_service::ServiceÁüíe30 [`Service::call`]: tower_service::Service::callÁü¡f74 [`MakeClassifier`]: crate::classify::MakeClassifierÁüÙf;8 [`ClassifyResponse`]: crate::classify::ClassifyResponseÁü•gXU [record]: https://docs.rs/tracing/latest/tracing/span/struct.Span.html#method.recordÁüîgLI [`TraceLayer::make_span_with`]: crate::trace::TraceLayer::make_span_withÁÜ»h [`Span`]: tracing::SpanÁü×hGD [`ServerErrorsAsFailures`]: crate::classify::ServerErrorsAsFailuresÁüŸi52 [`Body::poll_frame`]: http_body::Body::poll_frameÁ»²Œ¢OÌœO,¾O)*,Mt«Å×ó¨ÊžŸ×ài¤, ŠìDëi­Ö
¿ý,„j ºVd¦j×
ö\tÀj°§cTÛjíe|÷j¾ ¿"Dˆk±én”§kù
ò"\»kȶodÖk …#,äkãòs„ýkâ ’#Llþ²x„¬là Ï"L¾lè{ŒÜl
 à"Tïl±!ò€,‰mû
"˨¤¯m©%ïÚ¯´Åm&Œ®„Ýmì'Ú·\ôm(Úi¢¥tåi˜tûiŠ$”j” j´¸jxŒÔjnü”j`ehZ]ü”jUXJMü”j¿EH:=ü”jæ58*-ü”j•%(ü”jÅ

t€m,—m¬—mûýçé×ÙÇÉÜ«nü…n%" MakeClassifier for HTTP requests.Á”´nì쌮îÌ]ÿ'd|ÖǧÉaæ„Üšoüôn%" MakeClassifier for gRPC requests.Á”£oì쌮îÌ]ÿ'd|ÖǧÉa¨ýôáoŒîo €p …{ †p Òp, ˆp ‰p Ÿp8ê4Šp& p, p8ê4“p& ™p8$šp$ žp-  p, ¢p £p ¹p8parentÁ4¤p& ªp, ¬p8ͼ4­p& ³p8$´p$ ¸p- ºp, ¼p8lvlÁ½p& Àp8$Áp$ Åp, Çp Èp Ïp, Ép8¯Êp& Ìp8¯Íp
Ðp*Ôp ×p {8,áp, çp8Ÿ½èp ìp üz#8Ä<úp'q8¿ý,ƒq'ˆq8ERRORÁ,Šq*q “q îr8Ä<¥q'¬q8eventÁ,®q ³q ´q ßr, Êq Ëq Üq8ê4Ìq& Òq, Ôq8ê4Õq$ Ûq- Ýq, óq ôq …r8ͼ4õq& ûq, ýq8ͼ4þq$ „r- †r8Ä<œr'£r8¿ý,¥r'ªr8è¾,¬r$ ±r, Çr Èr Ìr, Ér8¯Êr
Ír% àr8Ä<ür'ƒs8¿ý,…s'Šs8WARNÁ$Œs*s ”s ît8Ä<¦s'­s8ž¿,¯s ´s µs ßt, Ës Ìs Ýs8ê4Ís& Ós, Õs8ê4Ös$ Üs- Þs, ôs õs †t8ͼ4ös& üs, þs8ͼ4ÿs$ …t- ‡t8Ä<t'¤t8¿ý,¦t'«t8áÁ$­t$ ±t, Çt Èt Ìt, Ét8¯Êt
Ít% àt8Ä<üt'ƒu8¿ý,…u'Šu8INFOÁ$Œu*u ”u îv8Ä<¦u'­u8ž¿,¯u ´u µu ßv, Ëu Ìu Ýu8ê4Íu& Óu, Õu8ê4Öu$ Üu- Þu, ôu õu †v8ͼ4öu& üu, þu8ͼ4ÿu$ …v- ‡v8Ä<v'¤v8¿ý,¦v'«v8ÕÄ$­v$ ±v, Çv Èv Ìv, Év8¯Êv
Ív% àv8Ä<üv'ƒw8¿ý,…w'Šw8DEBUGÁ,Œw*w •w ðx8Ä<§w'®w8ž¿,°w µw ¶w áx, Ìw Íw Þw8ê4Îw& Ôw, Öw8ê4×w$ Ýw- ßw, õw öw ‡x8ͼ4÷w& ýw, ÿw8ͼ4€x$ †x- ˆx8Ä<žx'¥x8¿ý,§x'¬x8ÉÇ,®x$ ³x, Éx Êx Îx, Ëx8¯Ìx
Ïx% âx8Ä<þx'…y8¿ý,‡y'Œy8TRACEÁ,Žy*”y —y òz8Ä<©y'°y8ž¿,²y ·y ¸y ãz, Îy Ïy ày8ê4Ðy& Öy, Øy8ê4Ùy$ ßy- áy, ÷y øy ‰z8ͼ4ùy& ÿy, z8ͼ4z$ ˆz- Šz8Ä< z'§z8¿ý,©z'®z8¾Ê,°z$ µz, Ëz Ìz Ðz, Íz8¯Îz
Ñz% äz% ƒ{Dˆ{$Œ{×äén” ù
,.¶od  ,/òs„.â ,0ò"\@È,1…#,Mã,2#LTþ,3žJ\u,4Ø«$.,6í±,˜],7Ü¥,8×Ò¤,,:ůà„¾,;readyÁ,ð¥‚,=k<÷Ì,>·$€œØ,?InstantÁ<óT,@·Ó©,A,adRUCF47%(äd
L†þðòì¤åÇØÚDÛÌüÇ&º¼ª¬šœl‹‡l¡yüÀ¢CDýEFGDFGEC Íì³Ì ÅÍì¹Ì ÈÍìÎÍÍìÔÍÍìÚÍ.³ÌÄc³Ì0«Ó¹ÌãÔÍÈÎͳÌ/¤¡þÚ͹ÌÔÇ×ÌHIJKL/0123LJKóõïñëíçéãåBBðÓT ,‡ BB«Óüž “„¾„¾ů†¾ ˜X$]È=„kt• ×Ì ÌÌkÎwakerÁ¸Ï local_wakerÁ¸ÐextÁ¸Ñ_markerÁ¸Ò_marker2Á¸f'EwÚ]¾åœØžØŸØÈ Øˆ¡Ø¢Ø´‰‰Nµý¤ÃÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙÖ¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
]]í±_…(Ⱥ鮱Ú×Ì/×Ì0B ¿ B
J³Ì¹ÌÎÍÔÍÚ̓°Ó ü€ ×ÌB B
K³Ì¹ÌÎÍÔÍÚÍ$’üÐ* ×Ìnn‡¶olowerÁpupperÁk¥·ìÏ ¿„B ÝB
L³Ì¹ÌÎÍÔÍÚÍT’{4–{°¿én”ù
MO¶od% MPòs„3â MQè{ŒE
MR ò"\XÈMS…#,eãMT#LpþMUà"T{±MV!ºVd‡×MW
Þ®”®õMY‘Q„ÂMZü2D߈M[Ø«.M\Ü¥\”M]”34¸‚ØM_ůÉ„¾M`•Ï¥‚Mbk<àÌMc·œØMdÖÏóTMe·Ó$“©Mf,­°ž¡ƒqtbeSVDG58(+ì‚ù¥ðDÄáü¥1ÓÕÃųµlô¦lŠ˜üüîï hù ijk•!lýmnonjmilhok®ÑƒØÖ¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
ˆˆü2ŠàÜŒw­õÂ; µ8ù ¶ˆü¯ %Íìõâ<†Í춈 Íì´Ñ ÍìºÑ\•ÍìÀÑÍìÆÑÍìÌтخÑü¨ -Íì®Ñ.õâÄcõâ0Œþ ´ä<
Äc¶ˆŒ¢
¶ˆ
´Ñ„Æ
±ºÑõâœé
þÌÑ´ÑÔŽ ÈÀÑõâ/Ô¼ ãÆÑ ´ÐpqƒØ„ØqÍÏcfad_b]`[^Y\WZ  ggÖ¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
ˆˆü2ŠàÜŒw­õÂ; µ8×׺VÝöVÞýJßœ$àñ#áº$â¹ã«WeªdÖ*)¢õâ´ÑÀÑÆÑÌѶˆüù I „¾„¾ů†¾ ˜X$]È=„kt• ´Ð ÌÌkÎÁÕ¸ÏÔÕ¸ÐíÕ¸ÑþÕ¸Ò“Ö¸f'EwÚ]¾åœØžØŸØÈ Øˆ¡Ø¢Ø´‰‰Nµý¤Ã´ÐƒØg
g
q®Ñõⶈ´ÑºÑÀÑÆÑÌÑ$
ƒ°
q<closure_kind>Ár<closure_signature>Ár <upvars>Ár
r
qr ®Ñõⶈ´ÑºÑÀÑÆÑÌÑõâúçÀÑÌÑ óTóTôTÖÏõTˆA t( ¼Í¥Š­Ôq°ësÈës åës
s
qs ®Ñõⶈ´ÑºÑÀÑÆÑÌѨííèÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙÆÑÀÑÌÑ¿í­ÔLž{,¢{íe|¾ tvén”"ù
tw¶od6 txòs„Dâ ty²x„VÃ tzè{Œl
t{ Û*t|”“)t}ò€û
t~"˨¤Ì©tïÿOtâõtÚ¯´òtŒ®„ŠìtƒLayerÁ,°Út,(+

ûýêìÙÛÈÊ»½¬®|µŸxzgi”£V¬ÂžÍìÈÒ Ç§c úIž “&Ÿ £#  É#¡ ñ#¢ œ$£ º$öüRj±Ý:ÈÒ…ÕýØôÙˆÖ÷Öú×ü¦ KüÞC@ Create a new [`TraceLayer`] using the given [`MakeClassifier`].Á­ ÈÒîòõÈÒ
ÈÒúI|± üî ž¿"ŠÏ"à"Œò"…#Ž’#ŠŒŽÞò ó ÍìÎÒ ÍìÔÒL€
ÍììÎT
ÍìòÎ\—
ÍìøÎ
ÍìþÎ
Ùјš|~xztvprlnhjü¾®üŽ41 Customize what to do when a request is received.ÁÇúüÏ:7 `NewOnRequest` is expected to implement [`OnRequest`].ÁŽúü–# [`OnRequest`]: super::OnRequestÁTÅÙѵ#§c úIž “&Ÿ £#  É#¡ ñ#¢ œ$£ º$öüRj±Ý:ÈÒÎÒøùìÎòÎøÎþΈµ#ˆÍìøù
ÈÒÎÒÔÒìÎòÎøÎþÎøùnew_on_requestÁtõFHüú²ü¿;8 Customize what to do when a response has been produced.Áÿúü‡<9 `NewOnResponse` is expected to implement [`OnResponse`].ÁÈúüÐ%" [`OnResponse`]: super::OnResponseÁ\ÙÑÜ#§c úIž “&Ÿ £#  É#¡ ñ#¢ œ$£ º$öüRj±Ý:ÈÒÎÒÔÒ„þòÎøÎþΈÜ#ˆÍì„þl
ÈÒÎÒÔÒìÎòÎøÎþ΄þnew_on_responseÁ|³GIü¼¸üÿ96 Customize what to do when a body chunk has been sent.Á½úüÅ>; `NewOnBodyChunk` is expected to implement [`OnBodyChunk`].Áˆúü'$ [`OnBodyChunk`]: super::OnBodyChunkÁlÃÙц$§c úIž “&Ÿ £#  É#¡ ñ#¢ œ$£ º$öüRj±Ý:ÈÒÎÒÔÒìΓ‚ øÎþΈ†$ˆÍì“‚ 
ÈÒÎÒÔÒìÎòÎøÎþΓ‚ new_on_body_chunkÁŒøIKüñžüÇ>; Customize what to do when a streaming response has closed.ÁŠúü’2/ `NewOnEos` is expected to implement [`OnEos`].ÁÉúÜÑ [`OnEos`]: super::OnEosÁ4øÙѪ$§c úIž “&Ÿ £#  É#¡ ñ#¢ œ$£ º$öüRj±Ý:ÈÒÎÒÔÒìÎòÎþΈª$ˆÍìDÿ
ÈÒÎÒÔÒìÎòÎøÎþÎ$’ 
new_on_eosÁT  BDü¨%®üâ#JG Customize what to do when a response has been classified as a failure.Á±$úü¹$:7 `NewOnFailure` is expected to implement [`OnFailure`].Áø$úü€%# [`OnFailure`]: super::OnFailureÁT¯%ÙÑÌ$§c úIž “&Ÿ £#  É#¡ ñ#¢ œ$£ º$öüRj±Ý:ÈÒÎÒÔÒìÎòÎøÎ£Š ˆÌ$ˆÍ죊 dº%
˜ÈÒÎÒÔÒìÎòÎøÎþÎ£Š $Ñ%new_on_failureÁtß%FHü’+¯ü©)QN Customize how to make [`Span`]s that all request handling will be wrapped in.Áÿ)úü‡*85 `NewMakeSpan` is expected to implement [`MakeSpan`].ÁÄ*úüÌ*! [`MakeSpan`]: super::MakeSpanÁÜò* ³t™+ÙÑö$§c úIž “&Ÿ £#  É#¡ ñ#¢ œ$£ º$öüRj±Ý:ÈÒÊŽ ÔÒìÎòÎøÎþΈö$ˆÍìÊŽ \¨+
šÈÒÎÒÔÒìÎòÎøÎþÎÊŽ $¾+
new_make_spanÁlÌ+EGü’/#§c úIž “&Ÿ £#  É#¡ ñ#¢ œ$£ º$öüRj±Ý:™»…ÕýØôÙˆÖ÷Öú×ìÕ0ü¼/[X Create a new [`TraceLayer`] using [`ServerErrorsAsFailures`] which supports classifyingÁüœ041 regular HTTP responses based on the status code.ÁdÜ0ç œœ
ü¥4#§c úIž “&Ÿ £#  É#¡ ñ#¢ œ$£ º$öüRj±Ý:‹¼…ÕýØôÙˆÖ÷Öúןìó5üÏ4YV Create a new [`TraceLayer`] using [`GrpcErrorsAsFailures`] which supports classifyingÁü­5A> gRPC responses and streams based on the `grpc-status` header.Ádú5Þ“ žž
ŸüÁ9¿¤¡ž¢¿"£Ï"¤à"¥ò"¦…#§’#¨¢¥¡¨¤§£¦Íì Ô Æ9ÍìöÓ É9ÍìüÓDÌ9Íì‚ÔLÖ9ÍìˆÔTá9ÍìŽÔ\í9Íì”Ô,ú9ÍìšÔL:ØöÓ,ø:ØüÓ,;Ø‚Ô,£;؈Ô,º;Ø”Ô,Ì;ØŽÔ,ä;ØšÔ,ú;‡Ó©ªÜݪÿüþøúôöðòìîèêd‡<<Œ<  æÚüè<*,ë<˜ ˜‡Ó Ô‡Ó ÔÜ  ñ< 
ª ÔöÓüÓ‚ÔˆÔŽÔ”ÔšÔ$ò<öV,ø<l©{L­{±¾ ÐÜ<
ô«¬¿ý,!«®·Ó$(©«¯»3¬; «°lS<CE24ä4%¬úüS`] Trait used to generate [`Span`]s from requests. [`Trace`] wraps all request handling in thisÁL´ span.Á¾úÜ ³ÜÞ [`Trace`]: super::TraceÁD„±²²±ÎìüúxÍì’Ë ±áž *áž ³³*,üº6ü– Make a span from a request.ÁL½š éž  šôôÐÜöàܦ÷Œ¦¯:ðû„࢒˭Ա DZ
³éž ’ËrequestÁ<ÒäôµµÀÒ ù­Ô³ü—6œ ­Ô œôôÐÜöàܦ÷Œ¦¯:ðû„ࢳ̭Դ ¤´
³Ì_requestÁD¯üîE¸¹¹¸Ð ¡  ˜"­Ôôž ö“"ÐУ Ô˜ÍìÐ óк³ºJLüº5žŸ žÐ Ÿ¡  ­Ô· Ç·
ºÐ’Ë  <Ò¤ï…Õ¼½¾¤²üŠ# Create a new `DefaultMakeSpan`.Á¹…Õ»»
¼üî ,ü»2/ Set the [`Level`] used for the [tracing span].Áòúüú! Defaults to [`Level::DEBUG`].Á  úü¨ A> [tracing span]: https://docs.rs/tracing/latest/tracing/#spansÁ,õ …Õ±þ…Õ»»
½$ÿ ”',…
üß ?üÑ
,) Include request headers on the [`Span`].Á úüŠ (% By default headers are not included.Á· úÜ¿  ³ …Õ…Õ»»
¾ ¡'|€ üç …ÕÀ´À¤Ž
<
…Õ¿¿
ÀüÂ
'ÂÂÀÒ Ç
…ÕóÃüð
5
 ¡  …Õ ¡¢ ­ÔÁ ý
Á
óÌ$‚  <ˆ´ç þ ê Œ ˜, 8”'& 8$”*š  à8¯8 8¡' Ç ¤8Ä'ä8«W ê ë %, 8”',†$ 7  $ ®8ÙÃ Ï Ñ8   Ù8Ùà à á$ â8èÃü  8   Š8èÃ Ž $ 8Ä ²- ´8   ¼8Ä Ä Å$ Æ8ÿ è- ê8   ò8ÿ ú û$ ü8 « Ò8Ä'È8«W Î Ï À, é8”'$ ï7  L‰$ 8Ùà ³ µ8   ½8ÙÃ Ä Å$ Æ8èÃà ä æ8   î8èÃï ò ó$ ô8Ä - ˜8  <™  8Ä ¨ ©$ ªŒ¸{l¼{Èù
ŠìD­ÖÅÆ·Ó$&©ÅÇœ*lÄ£ü-LI Trait used to tell [`Trace`] what to do when a body chunk has been sent.Ázúü~\Y See the [module docs](../trace/index.html#on_body_chunk) for details on exactly when theÁüÛ'$ `on_body_chunk` callback is called.Áƒú܇š ÈÉÉÈáž ü£ôž ¹Èáž "áž ÊÊ*,ü GŒÂ Do the thing.ÁØúüà_\ `latency` is the duration since the response was sent or since the last body chunk as sent.ÁÄúüÌ\Y `span` is the `tracing` [`Span`], corresponding to this request, produced by the closureÁü­]Z passed to [`TraceLayer::make_span_with`]. It can be used to [record field values][record]Áü1. that weren't known when the span was created.ÁÅúüÍDA [`Span`]: https://docs.rs/tracing/latest/tracing/span/index.htmlÁü–Xé±óúüûMJ If you're using [hyper] as your server `B` will most likely be [`Bytes`].ÁÍúìÕ [hyper]: https://hyper.rsÁü÷C@ [`Bytes`]: https://docs.rs/bytes/latest/bytes/struct.Bytes.htmlÁü¿L˲l“ ¢£¤ ¢éž  £’Ëþì ¤­ÔÈ ¡ È
Êéž ’ËchunkÁ,¬ latencyÁ<· «W$Ê üÛ HÌÍÌÍ¥¦âÎ ¥³Ìþì ¦­Ô˜"Ôˆ
ÍìâÎ ã ¥¦“"âÎܾ /ÀÒ à âÎÎÊÎDFüª
Fl­
§¨© §âÎ ¨³Ìþì ©­ÔË »
Ë
γÌâÎ
ú¼ ,Æ
‡½ <Ñ
«W$ä
ìŸ ÐÐÀÒ ¤ ÑÊÑüÑ 9 ª«¬ ª «³Ìþì ¬­ÔÏ â Ï
Ñ³Ì  í  ô  ¼ã
ˆÖÓ¤¬ü&# Create a new `DefaultOnBodyChunk`.Á³ˆÖÒÒ
Óüç-ÕÕÀÒ ìˆÖÖÊÖü©9­®¯ ­ˆÖ ®³Ìþì ¯­ÔÔ ºÔ
Ö³Ì$¿ Å Ì ÙTË{4Ï{ã ñ3< Ÿ×Ù»3¬ ×Ú«ª„\¾×ÜÚ·\n×Ý HeaderMapÁLŽæ
×ÞŠì­Ö×ß¿ý×á·Ó©×â,´¤¦,1ü93ˆ¼€a<¶PR>@|¬üÏA> Trait used to tell [`Trace`] what to do when a stream closes.Áúü•^[ See the [module docs](../trace/index.html#on_eos) for details on exactly when the `on_eos`Á¼ô callback is called.ÁŒúÜš ããáž ü¬Óãáž áž  äääü§VŒÂ‡¶ ØúüàB? `stream_duration` is the duration since the response was sent.Á§úü¯\£· ü]‰¸ üò1𸠨úü°D·¹ üùXé±üÖL˲°±éž Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ °æ
æ
Å è
maskÁé
indicesÁê
entriesÁë
extra_valuesÁì
dangerÁ}º?*™
cîæþì ±­Ôã Èã
äéž trailersÁD·stream_durationÁ|Õ«W$ðŒ æäæü§ =²³Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ ²²Ì þì ³­Ôå Á å
æ ·  Î  Û üë Mèè´µÐÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ ´²Ì þì µ­Ô˜"üŒ
+´µ–"ЬРŒ¤ ð Ðéäéü¿
U
·ÐÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ ²Ì þì ·­Ôç à
ç
éÐ
íÌ DÏ
ýÌ |í
«W$ˆ ì
÷Öë´ë¤´

÷Öêê
ëŒÆ÷Öíî串üÞ" Create a new [`DefaultOnEos`].ÁŒ÷Öìì
íüß,ü¿0- Set the [`Level`] used for [tracing events].Áôúüü!–¦ ¢úüªDA [tracing events]: https://docs.rs/tracing/latest/tracing/#eventsÁüógd [`Level::DEBUG`]: https://docs.rs/tracing/latest/tracing/struct.Level.html#associatedconstant.DEBUGÁ,æ÷Ö±þ÷Öìì
î”',öü¶@üÂ:7 Set the [`LatencyUnit`] latencies will be reported in.Áúü‰(% Defaults to [`LatencyUnit::Millis`].Ád½÷Ö¤‰÷Öìì
ïï)dÔܹ÷ÖñäñüÛV½¾÷ÖÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ ½²Ì þì ¾­Ôð üð
ñíÌ DëýÌ |‰_spanÁ,¤ñ°ëòÈëòåëòòñò ²Ì Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙt×{TÛ{þâ ñ3< Ÿóõ×3œ žóöÚ·\6ó÷×M¤,óùŠìDX­Öóú¿ý,qóü·Ó$x©óý,„”/sGdftRV<gEG46üå!ü€A> Trait used to tell [`Trace`] what to do when a request fails.ÁÂúüÆYV See the [module docs](../trace/index.html#on_failure) for details on exactly when theÁü $! `on_failure` callback is called.ÁÅúÜÉš þÖ*ÿþÿáž üåéÍìí×þáž +áž 1€*,üí_Œ‡¶ £úü«=: `latency` is the duration since the request was received.Áíúüõ\£· üÖ]‰¸ ü¸1ð¸ îúüöD·¹ ü¿Xé±üœL˲¿À ¿éž í×þì À­Ôþ ûþ
éž í×$€failure_classificationÁ´†‡½ <¬«W$¿üÐ1Ö*ÍìÜ׃ƒü– @T™ Á ÁÜ×þì Â­Ô ¤ 
ƒÜ× ¯  À  Í üÝ fÖ*ÃÐí×þì íԘ"üž
$Ùà då Ó"Зæ "Œ¤ â Ð?AüÊ
^
ÄÅ ÄÐí×þì Å­Ô Ø

Ðí×
àâ ´ã
‡½ <‰ «W$œ ü²
!ú×´¤Ú

ú׈ˆ
¬êú׌¤¯ü†$! Create a new `DefaultOnFailure`.Áú׊Š
ü,üé0Ô žúü¦! Defaults to [`Level::ERROR`].ÁÌúüÔDíÔ ,¤ú×±þú׊Š
Œ”',´üô@ü€:ùÖ ¿úüÇ(É× dûúפ‰ú׊Š
ï)d’ü÷eÖ*¬ä düÄcÜ×ú×#%üã[ËÌ Ëú×Ü×þì Ì­ÔŽ ñŽ
Ü×àâ ´ü‡½ <¢ µtç{Të{à »3¬  ÐÜ<,ô¿ý,B·Ó$V©äTl&Ct93lM#´Èü]GD Trait used to tell [`Trace`] what to do when a request is received.Á¥úü©YV See the [module docs](../trace/index.html#on_request) for details on exactly when theÁüƒ$! `on_request` callback is called.Á¨úܬš áž üÈñôž Üáž "áž (˜˜˜*,üû<Œå‡¶ ûúüƒ\£· üä]‰¸ üÆ1ð¸ üúü„D·¹ üÍXé±üªL˲ÍÎÏ Íéž  Ρ  Ï­Ô 
˜éž ’Ë  <”«W$ªÜ»ššÀÒ À˜üë2ÐÑÒ Ð Ñ¢ Ò­Ô ù
³Ì  ü¤EžžÓÔâÎ Ó¢ Ô­Ô˜"Ìφ¿ ¬ÓÔ“"âÎòõ &ÀÒ ©âΟ˜ŸDFüð;ÕÖ× ÕâÎ Ö¢ ×­Ôœ þœ
Ÿ³ÌâΠ <‰ «W$Ÿ üþ
!ýØ¡´¡¤¦  ýØ  
¡¬‰ ýØ£¤¤Î ü¥ $! Create a new `DefaultOnRequest`.ÁÕ ýØ¢¢
£ü…,üˆ
0Ô ½
úüÅ
IF Please note that while this will set the level for the tracing eventsÁü“FC themselves, it might cause them to lack expected information, likeÁüÞ63 request method or path. You can address this usingÁü™ [`DefaultMakeSpan::level`].Á½úüÅ!–¦ ëúüóDíÔ ü¼DA [`DefaultMakeSpan::level`]: crate::trace::DefaultMakeSpan::levelÁ,ŒýرþýØ¢¢
¤$”',œüæ)¦¦ÀÒ ëýا˜§ü–2T™ÝÞß ÝýØ Þ¢ ß­Ô¥ ¤¥
§³Ì ¯ ¿|÷{\û{±Æ
ñ3< Ÿ¨ª»3¬ ¨«Ú·\8¨¬ü2DOˆ¨­ŠìDh­Ö¨®¿ý,¨¯·Ó$“©¨°,ƒ…”1ttIeœ]UtvDlŠ5¼ŽüšNK Trait used to tell [`Trace`] what to do when a response has been produced.ÁéúüíZW See the [module docs](../trace/index.html#on_response) for details on exactly when theÁüÈ%" `on_response` callback is called.ÁîúÜòš ±²±²áž üŽÍôž £±áž "áž ³³*,üŒMŒ¬‡¶ ÂúüÊ=Åà Œúü”\£· üõ]‰¸ ü×1ð¸ úü•D·¹ üÞXé±ü»L˲\àáéž àˆˆü2ŠàÜŒw­õÂ; µ8’Ëþì á­Ô± «±
³éž ’Ë$responseÁD¡‡½ <¹«W$ÌäݵµÀÒ â³üŽ <\ âã ∈ü2ŠàÜŒw­õÂ; µ8³Ìþì ã­Ô´ ¦ ´
³Ì$  £  ´  Á üÑ R¸¹¸¹äåâΠ佇
þì å­Ô˜"üý %†¿ Ù äå–"âΈ‰
'ÀÒ Ö âκ³ºDFüª
L\­
æçâΠ潇
þì ç­Ô· É
·
º³ÌâÎ
©…
D¿
‡½ <×
«W$ê
ü
"ôÙ¼´¼¤¸

ôÙ»»
¼´îôÙ¾¿ÀÁ¤µü‹%" Create a new `DefaultOnResponse`.Á¼ôÙ½½
¾üì,üï0Ô ¤úü¬Iüø üúFÏù üÅ6Ÿú ü€ßú ¤úü¬!–¦ ÒúüÚDíÔ ü£D¼û ,óôÙ±þôÙ½½
¿”',ƒüÃ@üÏ:ùÖ Žúü–(É× dÊôÙ¤‰ôÙ½½
Àï)dáüÚ?üÈ.+ Include response headers on the [`Event`].Áûúüƒ(§¨ °úì¸ [`Event`]: tracing::EventÁ|áôÙôÙ½½
Á¡'|ûüâ+ÃÃÀÒ çôÙijÄü”I\—íîôÙ í½‡
þì î­Ô ³Â
ij̩…
‡½ <Á ԢİëÅÈëÅåëÅÅÄųÌùùú
DebugValueÁüˆ 1±B,î€Ü   ½‡
üŸ.¨ï g
†Ü ÇÇ ±ÀÒ ©
ƳÌresÁ¬üØ:„‚<§#ưëÉÈëÉåëÉÉÆÉ³Ì îæ\ˆ|<Œ|û
íe|¾ ÊÌén”"ù
ÊͶod6 ÊÎòs„Dâ Êϲx„Và ÊÐè{Œl
ÊÑ Û*ÊÒ”“)ÊÓ¿"D§±ÊÔò"\±ÈÊÕ…#,¾ãÊÖ’#LÉþÊ×Ï"LÔÊØà"Tß±ÊÙ!ºVdë×ÊÚ
ö\tù°ÊÛ§cT‰ÊÜ˨¤³©ÊÞïÿOtÉõÊßÚ¯´ÙÊàŒ®„ñìÊáÐÜ<‘ôÊãü2DšˆÊ䨫.Êå×ɤ,Êçk<ÙÌÊé·œØÊêÖÏóTÊëý%<’Êì,Ž}lo[^JM9<(+
ûþéì×ÚÅȳ¡¤}nq[^KN;>/2 #¾
ľýÿëílíÜ´ƒÍ´ž
¤îžïïîÚ— £
ë— ¦
û
û
ò€öVúI“&£#ˆÉ#ñ#Šœ$º$kYuÀ<AÀ¶ ÔöÓ…ÕýØôÙˆÖ÷Öú×ðñ­¯²´üþ
Uü»
>; Create a new [`Trace`] using the given [`MakeClassifier`].Á  ÔöÓ
ííõöÓ 
ð ÔöÓöV,‰ úI|“ üéVüåQN Returns a new [`Layer`] that wraps services with a [`TraceLayer`] middleware.Á»úüÃ! [`Layer`]: tower_layer::LayerÁ,ðöÓ§c úIž “&Ÿ £#  É#¡ ñ#¢ œ$£ º$öüRj±Ý:öÓ…ÕýØôÙˆÖ÷Öú×ííÖŸ

ñ ÔöÓúI|öüøš¤óžô¿"õÏ"öà"÷ò"ø…#ù’#úô÷óúöùõøÚ— ýë— ü— Dƒ˜ Lž˜ T˜¯˜ \¤À˜ ,±ј L¸æÚ©ª«ûýÿƒ[]`begjloqtvy{~üñ¬üÁ4—÷úúü‚:á÷ÁúüÉ#±øæÚµ#û
û
ò€öVúI“&£#ˆÉ#ñ#Šœ$º$kYuÀ<AÀ¶ ÔöÓüÓ­¦
ˆÔŽÔ”ÔšÔòµ#üüòÍì­¦

û  ÔöÓüÓ‚ÔˆÔŽÔ”ÔšÔ­¦
æú=?üŰüŠ;˜ûÊúüÒ<éûúü›%»üæÚÜ#û
û
ò€öVúI“&£#ˆÉ#ñ#Šœ$º$kYuÀ<AÀ¶ ÔöÓüÓ‚Ô±©
ŽÔ”ÔšÔòÜ#þþòÍ챩

ý  ÔöÓüÓ‚ÔˆÔŽÔ”ÔšÔ±©
òþ=?üŸüâ9¥ÿ úü¨>ôÿëúüó'È€ l¦æÚ†$û
û
ò€öVúI“&£#ˆÉ#ñ#Šœ$º$kYuÀ<AÀ¶ ÔöÓüÓ‚ÔˆÔµ¬
”ÔšÔò†$òÍ쵬
t´
ÿ  ÔöÓüÓ‚ÔˆÔŽÔ”ÔšÔµ¬
ƒ ŒÛ=?üì$œüÂ#>¶ƒ …$úü$2Š„ Ä$úÜÌ$Ñ„ 4ó$æÚª$û
û
ò€öVúI“&£#ˆÉ#ñ#Šœ$º$kYuÀ<AÀ¶ ÔöÓüÓ‚ÔˆÔŽÔ¸¯
šÔòª$òÍ츯
Dú$
  ÔöÓüÓ‚ÔˆÔŽÔ”ÔšÔ¸¯
$%þ† T%=?ü»*¬üõ(J¬‡ Ä)úüÌ):Œˆ ‹*úü“*#܈ TÂ*æÚÌ$û
û
ò€öVúI“&£#ˆÉ#ñ#Šœ$º$kYuÀ<AÀ¶ ÔöÓüÓ‚ÔˆÔŽÔ”Ô¼²
òÌ$òÍì¼²
dÍ*
ƒ  ÔöÓüÓ‚ÔˆÔŽÔ”ÔšÔ¼²
$ä*‘‹ tò*=?ü½0­üÔ.QË ª/úü²/8ªŒ ï/úü÷/!øŒ Ü0 ³tÄ0æÚö$û
û
ò€öVúI“&£#ˆÉ#ñ#Šœ$º$kYuÀ<AÀ¶ ÔöÓ͵
‚ÔˆÔŽÔ”ÔšÔòö$òÍì͵
\Ó0
  ÔöÓüÓ‚ÔˆÔŽÔ”ÔšÔ͵
$é0¸ l÷0=?üÕ4Ù¤ˆˆÚ— Ú4û
û
ò€öVúI“&£#ˆÉ#ñ#Šœ$º$kYuÀ<AÀ¶ Ô™»…ÕýØôÙˆÖ÷Öú×¢¤üÉ7%üµ6VS Create a new [`Trace`] using [`ServerErrorsAsFailures`] which supports classifyingÁü74é‘ dÐ7 ÔЏ

 ÔöV,Ý7ü´;Ù¤Ú— ¹;û
û
ò€öVúI“&£#ˆÉ#ñ#Šœ$º$kYuÀ<AÀ¶ Ô‹¼…ÕýØôÙˆÖ÷Öú׌¢¤ü³>%ü”=TQ Create a new [`Trace`] using [`GrpcErrorsAsFailures`] which supports classifyingÁüí=AÞ” dº> Ô’»
ŠŠ
Œ ÔöV,Ç>üœB•
¤Žš2ù ž¹2•!ýë2 
Ž  ÔÆÝ ˆˆü2ŠàÜŒw­õÂ; µ8ù äñDÍì‹Þ<µBÍìá¿
<ÆBÍìœÝ ×BÍì¨ÝTâBÍì®Ý\öBÍìÀÝT‹CÍì´ÝdŸCÍìºÝ4µCÍì¢ÝLÅC ÔÆÝü×D7Ú— ªB.‹Þ$E.á¿
$°EÄcá¿
0dÊEÅÁ
<ÙEÄc ÔÆÝ
dðEæÁ
<ÿEõœÝtFØœÝö,²F±¢Ý‹ÞŒÈF¨Ý‹Þ”ëF±®Ýá¿
œGØ®Ý,¦GÈ´Ýá¿
/Ô¿GØ´Ý,ÜGãºÝ,ïGغÝ,÷GþÀÝœÝ÷ÔŽHØÀÝ,«Hܘšœ 
  
œz}-0+.),'*%(#&!$" l¸HD½H
ˆˆü2ŠàÜŒw­õÂ; µ8×׺VÝöVÞýJßœ$àñ#áº$â¹ã«WeªdÖ*)¢á¿
œÝø´ÝºÝÀÝT§I,¬I
æÁ
\ÂI4ÇI
°°ö\·öV¸«W¹Ì]ºÉ#»ñ#¼œ$½º$¾¹k
~$H² ÔÆÝ ›Â
®Ý´ÝºÝÀÝü¶JOT¹Jðñò ðÜ ñÌÌkÎÁÕ¸ÏÔÕ¸ÐíÕ¸ÑþÕ¸Ò“Ö¸f'EwÚ]¾åòœØžØŸØÈ Øˆ¡Ø¢Ø´‰‰Nµý¤ÃÖ¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
ÜÆÝ

 ÄJ

 Ô‹Þá¿
œÝ¨Ý®ÝÀݴݺݢÝ$ÉJƒ°ÏJüµK9$¸Kó óÜÆÝÜÆÝ 
 ½K
œ
 Ô‹Þá¿
œÝ¨Ý®ÝÀݴݺݢÝ$ÂKreqÁÈKü–|"¬œ|±þüÉ| œÏ|±þtû|<}˜ÞÄÍÐyN§ Ê ¡Œ}$}ŸŸ¤‰”§}D§}ŸŸþìì¾}˜Þ£Åc£üâ}8å}ôõö ô˜Þ õ c cˆ¢cµ
 `£cýà `àB¤GS
öÖ¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
ŸÈŸÈ È¹ éBL¢ é}¢
£$ê}± ð}dõPü2/ Middleware which adds headers for [CORS][mdn].Á3úl7¦ÌEú<IÀúüQ2/ use http::{Request, Response, Method, header};Á섋䬢íãü¸5ÔÍüî+( use tower_http::cors::{Any, CorsLayer};Áüš!ÃμúüÀa”Ïü¢*ÿÏÜéÓú¤×ËÐüìAéÐü® let cors = CorsLayer::new()ÁüÎ=: // allow `GET` and `POST` when accessing the resourceÁüŒ30 .allow_methods([Method::GET, Method::POST])ÁüÀ)& // allow requests from any originÁÜê .allow_origin(Any);ÁúüŠ+‹Ò¤¶ .layer(cors)ÁäËóÒèúüì$! let request = Request::builder()Áü‘63 .header(header::ORIGIN, "https://example.com")ÁôÈ .body(Full::default())Á”ç .unwrap();ÁúúÔþìÓ„™Ô¨Ô´ºÀÔ„ÑßÔâú assert_eq!(ÁüöMJ response.headers().get(header::ACCESS_CONTROL_ALLOW_ORIGIN).unwrap(),Á "*",Á );ÁøÔÝåÀúõ úüù A> [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTTP/CORSÁ»£4„âPÄÜP$ýP½ÔöÇÞÿ²ÇÈüý´µ§¼ÉÌêñùBufMutÁ4ï
¤¦BytesMutÁD÷
¤§headerÁ$› ¤ª¬à 뤫ŠL² æ
¤¬øå º¤­£ã ¥¤®ÐÜ ô¤¯ü2DÛ ˆ¤°Ü¥ ¤±Ç ¸&¤³”34­ ‚ؤ´í¹ 뤵ůÇ „¾¤•Ï ¥‚¤¸k<Þ Ì¤¹· œØ¤ºáð,‚
Ú¤»ý%<œ
¤¼Ž„„ü¬ª½…d¾«ˆÍ¬͇Ü­òˆœþ𮛊¯‘‹4¿°Œ ±
BE+.$† ”† 4’ ðóàãÐÓÁÄìì µ §ª œŒ }ü Enq^aNQ”õ A´
3¬¦
λ
¤¬­³×
¤,½¿K†J½ÀßÚ
$5½Ã¬àT;ë½Äøå\Gº½Å RequestPartsÁdkû½Æ‡Ly$ l4,]_LNtY3¬¨×ÞÈÉË̤ŒüÄ&# Allow credentials for all requestsÁïúü÷:7 See [`CorsLayer::allow_credentials`] for more details.Áúü¾IF [`CorsLayer::allow_credentials`]: super::CorsLayer::allow_credentialsÁ×ÞÇÇ
Èü‡ wü×C@ Allow credentials for some requests, based on a given predicateÁŸúü§>; The first argument to the predicate is the request origin.Áêúüò:Ÿâ
±úü¹Iïâ
Ð×ÞÇÊÊÇŒ¤ ˜ ÷ø"Ð ÷îæ øÁÄü¾ '÷øÐ£ç
˜"ÌìÐ ÐÐ
Éб ˜šüÌ
$
¤ù ù×ÞÇ â
Ç
Ë
ü´  ¤úûü ú×ÞÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ ûîæ üÁÄÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ¢áîæÇ Õ Ç
Ì originÁ4ä partsÁ,Š ¼Ž
$”
½îæü€$×ÞÏëÏÄ«×ÞÎÎ
ÏÁ ³ü×$×ÞÑÀcÑü‚8ýþÿ ý×Þ þ c cˆ¢cµ
 `£cýà `àB¤GS
ÿáÏ
Ð Ð
ѱ ü‡&´ßÓ´Ó¤´´ßÒÒ
ÓŒ½

¤¾¿ÅÇ,
¸&ÔÖ× ¤,Ô×ßÚ
$1 ÔÚ¬àT7 ëÔÛøå\C ºÔÜóà
dg ûÔݧDœ… ÈÔß»š ´Ô໵ÔàÙBDŸ ²Ôá ÒÔÂÄ$ ·4( ¨ª™tU ‰,} z|hjACŒº ›àãäæç褙 üÒ1 . Allow any headers by sending a wildcard (`*`)Áˆ úü6 3 See [`CorsLayer::allow_headers`] for more details.ÁË úüÓA > [`CorsLayer::allow_headers`]: super::CorsLayer::allow_headersÁ  ›àââ
ãü¨X üò  Set multiple allowed headersÁ úüŸ6 Òð
Ú úüâA žñ
 š›àâšååâÍìô
´ ÇLô
üà ô
ÈL¢áŒí
äô
ÿ :<üù  üŠ
Y V Allow any headers, by mirroring the preflight [`Access-Control-Request-Headers`][mdn]Á
 header.Áø
úü€ 6 Òð
» úüà A žñ
 úü‘ c ` [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Request-HeadersÁt€
›àââ
æü‰( \— ¤ ›àâ £ â
ç üY L ¤ ›à ÁÄ ê
â ¥ â
è žê
 üÌ ›àêÀcêüó8 ö ƒ ƒ›à  c cˆ¢cµ
 `£cýà `àB¤GS
áÏ
é ú é
ê ±  ü ›àìëì¼µ ïà›àëë
ì ½ üì; ŸîîŸ ›àðëð ÷ ü®% $± ¡á›àíí
ðŸarrÁ üÎ+ ›àóëóü€% $ƒ êá›àòò
óÁˆ ü©" Þâõ´õ¤Ò Þâôô
õŒÐ

¤ÍÎÔÇ,
¸&öø×
¤,öùßÚ
$1
öü¬àT7
ëöýøå\C
ºöþóà
dg
ûöÿ£ã4y
¥ö§Dœ‘
Èö»¦
´öƒ»µöƒÙBD«
²ö
çé×Ù$

Ì4(
½¿¬®tU
ž,‰
moFHή
²ãˆŒ¤¤
üÞ0
- Allow any method by sending a wildcard (`*`)Á
úü›6
3 See [`CorsLayer::allow_methods`] for more details.ÁÖ
úüÞA
> [`CorsLayer::allow_methods`]: super::CorsLayer::allow_methodsÁ«
²ã
ü²$
üý
 Set a single allowed methodÁ¡
úü©6
΀ ä
úüìA
š 
•ä²ã
ÙÃ4¿
ü T
üÙ
 Set multiple allowed methodsÁþ
úü†
6
΀ Á
úüÉ
A
š $
ô
²ãš¸ô
Éô
ÜÇ
ô
ÈL•ä
ˆô
methodsÁ<ž
79ë
ˆ°ëŠÈëŠå늊ˆŠô
•äîæüŸ
ü³
W
T Allow any method, by mirroring the preflight [`Access-Control-Request-Method`][mdn]Á\
ýô
Ÿ
úü§6
΀ â
úüêA
š °
úü¸b
_ [mdn]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Request-MethodÁt¦
²ã
ü¯(

¤ ²ã É

Œ
ü³Y

¤ˆ ²ã ˆÁÄ ê
 Ë


žê

üñ
²ãÀcü˜8

Š ²ã Š c cˆ¢cµ
 `£cýà `àB¤GS
áÏ
Ž Ÿ
Ž
$ 
± ¦
ü´
²ãë¼Ú

ïà²ã
 â
ü‘"
²ãëüº

•ä²ã
ÙÃ
ü7
Ÿýû
t†
²ãë Œ
ü¿!

Øä²ã
Ÿåû
Ç
üÛ'
²ãšëšü‰!

íä²ã
šÁ
ü®"
·åœ´œ¤×

·å
œ„ã

¤ÜÝãÇ,
¸&Ÿ× ¤, K †J¡ßÚ
$< ¤¬àTB ë¥øå\N º¦óà
dr û§» ´©»µ©ÙBD• ²ª ÐÒÀÂL ´$' ”' §43 ˜š‰t` y,ˆ jlCE„¤ ‹æ¬­®°²´µ¤þ ü»0 - Allow any origin by sending a wildcard (`*`)Áð úüø5 2 See [`CorsLayer::allow_origin`] for more details.Á² úüº? < [`CorsLayer::allow_origin`]: super::CorsLayer::allow_originÁ ‹æ««
¬üý) üË  Set a single allowed originÁï úü÷5  ± úü¹? Ì“ ,„ îæ‹æ««
­ê
 ü˜ Y üÝ  Set multiple allowed originsÁ úüŠ 5  Ä ú # PanicsÁÝ úüå . + If the iterator contains a wildcard (`*`).Á˜
úü 
? Ì“ ô
‹æ«š¯¯«¸ô
¤ Éô
üÐ ô
ÈLîæ”Ý
®ô
originsÁ<§ 8:ü†w üÇ, ) Set the allowed origins from a predicateÁø úü€5  º úüÂ? Ì“ L Ћ櫱±«Œ¤  Œ"Ð Œîæ ÁÄü½' ŒÐþš ˜" åç
 öç
 †è

°Ð± š üñ üÁ5 2 Allow any origin, by mirroring the request originÁû ú̃  This is equivalent toÁü¡= : [`AllowOrigin::predicate(|_, _| true)`][Self::predicate].Áã úüë5  ¥ úü­? Ì“  ‹æ««
² ²°ë³Èë³åë³³²³±Ä ÁÄü÷( \… ¤Ž Ž‹æ«  «
´$’ üï  ¤ ‹æÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ îæ ÁÄ ê
«  «
µ$ ê
 žê
  µ°ëÈëåëµ ô•
  ßç µ°ë·Èë·åë··µ·†¢   †J†JK‰Jµ 7ŠJöÂ7‹J¤7·0ØQdèí" íîæ íÁÄí˜"Û£  Ìì«â  ÁÄüå ‹æ¹Àc¹ü‹8 Ž  ‹æ  c cˆ¢cµ
 `£cýà `àB¤GS
áÏ
¸  ¸
¹$“ ±  ôë ‹æ»ë»¼ $“ ïà‹æºº
» ˜ üÇ& ‹æ½ë½üô!  îæ‹æ¼¼
½¹ü üº; Ÿ¿¿ýû
t¿ ‹æÁëÁ Å üü& $ÿ Êç‹æ¾¾
ÁŸåû
 ü + ‹æÄëÄüÏ & ßç‹æÃÃ
ÄÁ× äê" ©èƴƤ# <# ©èÅÅ
ÆÌõ
¬ù
¤ðñ÷×
¤,ÇÉK†JÇʬàT5ëÇÍøå\AºÇÎóà
deûÇÏfhLZ$ MO<>tS.ÄŽ¦éÑÒÔ¤¯ü­TQ Allow requests via a more private network than the one used to access the originÁúüŽ>; See [`CorsLayer::allow_private_network`] for more details.ÁÑúüÙQN [`CorsLayer::allow_private_network`]: super::CorsLayer::allow_private_networkÁ¦éÐÐ
ÑüÊ wüýTQ Allow requests via private network for some requests, based on a given predicateÁÖúüÞ>Óä
¡úü©>œ« ìúüôQð« ЦéÐÓÓÐŒ¤ Û "Ð îæ ÁÄü
'Ѓ° ˜"
åç
öç
†è

Òб Þ ü„ L’ ¤˜ ¦éÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ ˜îæ ÁÄ ê
Ð ¥ Ð
Ô ê
4´ žê
üÞ
)¼ä
Ç¢áü›'¬¡Ç¢á¼›Çîæüâ'¦éÙëÙÄ$“¦éØØ
ÙÁ ˜üÂ'¦éÛÀcÛüð8óšœ š¦é  c cˆ¢cµ
 `£cýà `àB¤GS
œáÏ
Ú ÷Ú
Û± þü)ƒêݴݤ±ƒêÜÜ
Ýt”¤ƒÇ,
¸&Þà× ¤,ÞáßÚ
$1 Þä¬àT7 ëÞåøå\C ºÞæóà
dg ûÞç§Dœ… ÈÞ黚 ´Þ껵ÞêÙBDŸ ²Þë ÒÔÂÄ$  ·4( ¨ª™tU ‰,} z|hjAC”Á êêíîðñ¤« üÚ8 5 Expose any / all headers by sending a wildcard (`*`)Á úüŸ7 4 See [`CorsLayer::expose_headers`] for more details.ÁÛ úüãC @ [`CorsLayer::expose_headers`]: super::CorsLayer::expose_headersÁ² êêìì
íüÃX ü…% " Set multiple exposed header namesÁ¯ úü·7 ¨¸ ó úüûC õ¸  ô
êêìšïïì¸ô
Ï Éô