rust ÕA#rustc 1.98.1 (48a229cea 2026-09-01)Á‰m6GÞ­n6ÇèÆ2-64f5f36fb0927694ÁûÊÆÍRLñ.åSÛAúwjL-df1bddb45adbe94bÁ«ª1Úë• ¢›ºXÝÓrŽ*-1ad4f876c768bda9Á±ò‰<å%Z‰>¸64‡ËV`-2d2ab9fb0fe1def5Á»Äó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Á»ˆ¥&ÎÓ¬i\”v’2®�-9cd8a66bfd45f04eÁSOCKADDR_IN6_0ÁtøÉ<ÁtestsÁ,Ð{Í$Å{U FromRawSocketÁl³É<ŽU IntoRawSocketÁlÂÉ "Uset_common_accept_flagsÁ¼Úó ÅandroidÁ¬åñÅ dragonflyÁ¼€òÅfreebsdÁ¬�òÅfuchsiaÁ¬¸òÅillumosÁ¬ÓòÅlinuxÁœîòÅnetbsdÁ¤‡óÅopenbsdÁ¬¡óÅcygwinÁ¤¼óüßñôüÛñù± AsRawSocketÁ\øÉ<Ó±AsSocketÁD…ɱ§l�É.0ÉIPPROTO_DIVERTÁtŸÅ¶ ¬ÙÅ— ¬ðüØ.É SO_LINGERÁLŠ2ÅiosÁŒå0ÅvisionosÁ´ü0ÅmacosÁœ˜1ÅtvosÁ”±1ÅwatchosÁ¬É1üß0‚ÉIPV6_ADD_MEMBERSHIPÁœ¶A Å  ¼˜>Ŷ ¬µ>ÅhaikuÁœÐ>ÅÞ ¬é>Åå Œ„?Åô ´›?ň œ·?Å„ ¤Ð?Å— ¬ê?ÅsolarisÁ¬…@Å™ ” @Å© ¬¸@ÅwasiÁ”×@¸p1ÁŒï@œî@üÖ@,ü’>óÉIPV6_DROP_MEMBERSHIPÁ¤ßA Å  íŶ ëÅú äÅÞ âÅå àÅô Þň ÜÅ„ ÚÅ— ØÅÓ ÏÅ™ ÍÅ© ËŀŸ‘Á¿½º¼ÉKEEPALIVE_TIMEÁt•JÅå Œ­HÅô ´ÄHň œàHÅntoÁŒýH¸nto70Á¤”I¸nto71Á¤ªIü“I,üüHEÅ™ ”ÇIÅ© ¬ßIü§HÐÉ MAX_BUF_LENÁ\÷VÅå ŒØUÅô ´ïUň œ‹VÅ™ ”¤VÅ© ¬¼VÅ« ¤×VüÒUœÉIovLenÁ4®`Åò œæZ¸muslÁœ”[¸ohosÁœµ[¸uclibcÁ¬Ú[Æ32ÁÜñ[üÙ[4ü†[‘üÜZÁÅaixÁŒ£\Å  ¼º\Å emscriptenÁÄ×\Ŷ ¬õ\ÅÊ ¬�]Åú œ«]ÅhurdÁ”Ä]ÅÞ ¬Ü]Åå Œ÷]Åô ´Ž^ň œª^Å„ ¤Ã^Å¥ŒÝ^Å— ¬ô^ÅÓ ¬�_Å™ ”ª_Å© ¬Â_ÅespidfÁ¤Ý_ÅvitaÁ”÷_Å« ¤�`üÓZÓÉå4ß`ÅnuttxÁœÄ`ɽ \�‹ÅË”ëŠÉset_nonblockingÁ|‘�Å˔   impl_debugÁ”sockaddrÁ      socklen_tÁ sa_family_tÁSockAddrStorageÁ(storageÁ*zeroedÁ*à*view_asÁ-�/ñ1˜ 1try_initÁ3‚3�3 STORAGE_SIZEÁ3 1Ì8Œ1 set_lengthÁ1familyÁ1domainÁ1¶1as_ptrÁ1 as_storageÁ1is_ipv4Á1is_ipv6Á1is_unixÁ1 as_socketÁ1as_socket_ipv4Á1as_socket_ipv6Á1as_bytesÁG”I”K”MñO• RÆS„socketÁUUUUUUUUUU U U U U UUUUUUUUUUUUUUUUUUU U!U"USocketÁyinnerÁU{from_rawÁ{as_rawÁ{into_rawÁ{˜ {new_rawÁ€ {pairÁ{pair_rawÁƒ ƒ {bindÁ{connectÁ{connect_timeoutÁ{listenÁ{acceptÁ{ accept_rawÁ‹ { local_addrÁ{ peer_addrÁ{!{ try_cloneÁ{½ {¡{shutdownÁ{recvÁ{recv_out_of_bandÁ{recv_with_flagsÁ{ recv_vectoredÁ{recv_vectored_with_flagsÁ{peekÁ{ recv_fromÁ{recv_from_with_flagsÁ{recv_from_vectoredÁ{recv_from_vectored_with_flagsÁ{ peek_fromÁ{ peek_senderÁ{recvmsgÁ{sendÁ{send_with_flagsÁ{ send_vectoredÁ{send_vectored_with_flagsÁ{send_out_of_bandÁ{send_toÁ{send_to_with_flagsÁ{send_to_vectoredÁ{send_to_vectored_with_flagsÁ{sendmsgÁUset_common_typeÁUset_common_flagsÁU­ broadcastÁ® ­ set_broadcastÁ­ take_errorÁ­ keepaliveÁ² ­ set_keepaliveÁ­lingerÁ­ set_lingerÁ­out_of_band_inlineÁ· ­set_out_of_band_inlineÁ­passcredÁº ­ set_passcredÁ­priorityÁ½ ­ set_priorityÁ­recv_buffer_sizeÁÀ ­set_recv_buffer_sizeÁ­ read_timeoutÁ­set_read_timeoutÁ­ reuse_addressÁÅ ­set_reuse_addressÁ­send_buffer_sizeÁÈ ­set_send_buffer_sizeÁ­ write_timeoutÁ­set_write_timeoutÁU from_lingerÁU into_lingerÁUÏheader_included_v4ÁÐ Ïset_header_included_v4ÁÏip_transparent_v4ÁÓ Ïset_ip_transparent_v4ÁÏjoin_multicast_v4ÁÏleave_multicast_v4ÁÏjoin_multicast_v4_nÁÏleave_multicast_v4_nÁÏ join_ssm_v4ÁÏ leave_ssm_v4ÁÏmulticast_all_v4ÁÜ Ïset_multicast_all_v4ÁÏmulticast_if_v4ÁÏset_multicast_if_v4ÁÏmulticast_loop_v4Áá Ïset_multicast_loop_v4ÁÏmulticast_ttl_v4Áä Ïset_multicast_ttl_v4ÁÏttl_v4Áç Ï set_ttl_v4ÁÏ set_tos_v4ÁÏtos_v4Áë Ïset_recv_tos_v4ÁÏ recv_tos_v4Áî Ïoriginal_dst_v4ÁUñheader_included_v6Áò ñset_header_included_v6Áñip_transparent_v6Áõ ñset_ip_transparent_v6Áñjoin_multicast_v6Áñleave_multicast_v6Áñmulticast_hops_v6Áú ñset_multicast_hops_v6Áñmulticast_all_v6Áý ñset_multicast_all_v6Áñmulticast_if_v6Á€ ñset_multicast_if_v6Áñmulticast_loop_v6Áƒ ñset_multicast_loop_v6Áñunicast_hops_v6Á† ñset_unicast_hops_v6Áñonly_v6Á‰ ñ set_only_v6Áñrecv_tclass_v6ÁŒ ñset_recv_tclass_v6Áñrecv_hoplimit_v6Á� ñset_recv_hoplimit_v6Áñoriginal_dst_v6ÁU“tcp_keepalive_timeÁ“tcp_keepalive_intervalÁ• “tcp_keepalive_retriesÁ— “set_tcp_keepaliveÁ“ tcp_nodelayÁš “set_tcp_nodelayÁU�readÁ� read_vectoredÁŸ U¡'aÁ¡¢2¡®2¤ U¦writeÁ¦write_vectoredÁ¦flushÁUªÌ2ªï2ªü2ª’3U ¯ñsockrefÁ±±±±±±±±±±SockRefÁ»'sÁ»Ú» _lifetimeÁ±¿™4¿ë¿Ã±Ã™4Ã�Ô±ÇñsysÁÉÉÉÉÉÉÉÉÉÉ É É É É ÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉ É!É"É#É$É%É&É'É(É)É*É+É,É-É.É/É0É1É2É3É4É5É6É7É8É9É:É;É<É=É>É?É@ÉAÉBÉCÉDÉEÉFÉGÉHÉIÉJÉKÉLÉMÉNÉOÉPÉQÉRÉSÉTÉUÉVÉWÉXÉYÉZÉ[É\É]É^É_É`ÉaÉbÉcÉdÉeÉfÉgÉhÉiÉjÉkÉlÉmÉnÉoÉpÉqÉrÉsÉtÉuÉvÉwÉxÉyÉzÉ{É|É}É~ÉÉ€É�ÉXÉ‚ÉsyscallÁÉÿÉTCP_CA_NAME_MAXÁÉåÉÒPACKETÁÒVSOCKÁÉÕ½ ÕcloexecÁÕ_cloexecÁÉÙis_end_of_recordÁÙis_out_of_bandÁÙ is_confirmÁÙ is_dontrouteÁÉÞñÉMaybeUninitSliceÁàÌ2à–à«4ÉäÌ2ÉæÌ2ÉèÌ2è˜ èas_sliceÁè as_mut_sliceÁÉoffset_of_pathÁÉ unix_sockaddrÁɃÉset_msghdr_nameÁÉset_msghdr_iovÁÉset_msghdr_controlÁÉset_msghdr_flagsÁÉ msghdr_flagsÁÉmsghdr_control_lenÁÉövsockÁöas_vsock_addressÁÉù is_unnamedÁú ùas_sockaddr_unÁü ùpath_lenÁù path_bytesÁùas_unixÁù as_pathnameÁ� ‚ ùas_abstract_namespaceÁ„ … ÉóÉ RawSocketÁÉsocket_from_rawÁÉ socket_as_rawÁÉsocket_into_rawÁÉÚÉ socketpairÁ� � Éù� É„’ É poll_connectÁɨ• ɵ— É getsocknameÁ™ ™ É getpeernameÁœ œ Éÿɽ É¡É�¢ ɬ¤ É¢¦ § Éš © ÉäÉͬ ɬ ® ɺ ° ÉÛ É¥!³ ÉÌ!É…"¶ É timeout_optÁÉ from_timevalÁÉset_timeout_optÁÉ into_timevalÁÉ÷0¼ ÉÖ1É into_secsÁÉ fcntl_getÁÉ fcntl_addÁÁ É fcntl_removeÁÃ É getsockoptÁÅ�Å É setsockoptÁÈ�È É to_in_addrÁÉ from_in_addrÁÉ to_in6_addrÁÉ from_in6_addrÁÉto_mreqnÁÉä+Ð Ð ÉÜ0Ó Ó É Öaccept4ÁÖ_accept4ÁØ Ö set_cloexecÁÖ _set_cloexecÁÖtcp_mssÁÜ Ö set_tcp_mssÁÖ is_listenerÁß ÖèÖprotocolÁâ ÖmarkÁä Öset_markÁÖtcp_corkÁç Ö set_tcp_corkÁÖ tcp_quickackÁê Öset_tcp_quickackÁÖtcp_thin_linear_timeoutsÁí Öset_tcp_thin_linear_timeoutsÁÖtcp_notsent_lowatÁð Öset_tcp_notsent_lowatÁÖdeviceÁó Ö bind_deviceÁõ Öbind_device_by_index_v4ÁÖbind_device_by_index_v6ÁÖdevice_index_v4ÁÖdevice_index_v6ÁÖ cpu_affinityÁû Öset_cpu_affinityÁÖ reuse_portÁþ Öset_reuse_portÁÖ freebind_v4Á� Öset_freebind_v4ÁÖ freebind_v6Á„ Öset_freebind_v6ÁÖsendfileÁ‡‚Ö _sendfileÁ‰ Öset_tcp_user_timeoutÁ‹ Ötcp_user_timeoutÁ� Ö attach_filterÁÖ detach_filterÁÖcookieÁÖ tclass_v6Á’ Ö set_tclass_v6ÁÖtcp_congestionÁ• • • Öset_tcp_congestionÁ™ Öset_dccp_serviceÁÖ dccp_serviceÁÖ set_dccp_ccidÁÖ dccp_tx_ccidÁÖ dccp_xx_ccidÁÖset_dccp_server_timewaitÁÖdccp_server_timewaitÁÖset_dccp_send_cscovÁÖdccp_send_cscovÁÖset_dccp_recv_cscovÁÖdccp_recv_cscovÁÖset_dccp_qpolicy_txqlenÁÖdccp_qpolicy_txqlenÁÖdccp_available_ccidsÁ¨Š¨ Ö dccp_cur_mpsÁÖ busy_pollÁÖ set_busy_pollÁÉ SockFilterÁ®filterÁÉ °˜ É ²ñÉ ´Š´ë´ÃÉ ¸as_fdÁɺ as_raw_fdÁɼ”ɾ into_raw_fdÁÉÀ”É from_raw_fdÁ   ÏIPV4ÁÏIPV6ÁÏUNIXÁÏ for_addressÁÔ”Ö”ØSTREAMÁØDGRAMÁØDCCPÁØ SEQPACKETÁØRAWÁÞ”à”âICMPV4ÁâICMPV6ÁâTCPÁâUDPÁâMPTCPÁâçTâSCTPÁâUDPLITEÁë”í” ï is_truncatedÁŽ<ñ ñÌ2ñó õÌ2õñ øÌ2ø˜  ûÌ2ûëûà ÿÌ2ÿÅ‚˜ ‚ with_timeÁ‚ with_intervalÁ‚ with_retriesÁMsgHdrÁ‡'addrÁ‡'bufsÁ‡'controlÁ‡€‡ _lifetimesÁ�„X�‘X�žX�˜ � with_addrÁ� with_buffersÁ� with_controlÁ� with_flagsÁ–'nameÁ–‘X–žX–ñ MsgHdrMutÁœ„Xœ‘XœžXœ€œ¶X¢„X¢‘X¢žX¢˜ ¢ìX¢ýX¢‘Y¢flagsÁ¢ control_lenÁ¬»Y¬‘X¬žX¬ñ man_linksÁSockAddrÁ³·³¶ ¶ŽUInterfaceIndexOrAddressÁ¸IndexÁ¹ ¹ó¸AddressÁ¼ ¼óU ¿ñU U U ÃŽUÅ”UÇ”UÉ”UË”UÍ”UÏ”ÉÑñÉÓñÉÕñÉ CcidEndpointsÁ×Š× endpointsÁÙ ×lengthÁÉÜŠÜ ÜñÉà”Éâ”Éä”Éæ”Éè”Éê”DomainÁì ìóñŽóÝö•øø øóýŽÿÝ ‚•ProtocolÁ„ „ó!"#‰Ž$‹Ý%&Ž• RecvFlagsÁ� �ó'()•Ž*—Ý+,š• TcpKeepaliveÁœÛœintervalÁœretriesÁ- ñ.¢Ž,8-8080808·8:8;8<8=8>8@8A8B8C8D8E8F8N8N8N8P8P8S8S8}8†8†8‡8‡8ˆ8ˆ8‰8Š8‹8�8Ž8�8�8‘8’8“8”8”8•8•8–8–8—8—8—8˜8˜8˜8™8™8š8š8›8›8œ8œ8œ8�8�8�8ž8ž8Ÿ8 8 8 8 8 8¡8¡8¢8¢8£8£8£8¤8¤8¤8¥8¥8¦8¦8¦8§8§8§8¨8¨8¨8¨8©8©8©8©8ª8ª8ª8ª8ª8À8À8À8Ä8®8°8±8²8´8µ8¶8·8¹8º8¼8½8¿8À8Â8Ã8Ä8Å8Ç8È8Ê8Ë8Ì8Ð8Ò8Ó8Õ8Ö8Ö8Ö8×8×8×8Ø8Ø8Ø8Ù8Ù8Ù8Ú8Ú8Ú8Ú8Û8Û8Û8Û8Ü8Þ8ß8à8à8á8ã8ä8æ8ç8é8ê8ë8í8î8ð8ò8ô8õ8÷8ø8ø8ù8ù8ú8ü8ý8ÿ8€8‚8ƒ8…8†8ˆ8‰8‹8Œ8Ž8�8‘8’8”8•8—8™8™8š8œ8ž8ž8Ÿ8Ÿ8Ÿ8£8£8¤8¤8¤8§8§8¨8¨8¨8©8¬8¬8­8­8­8®8°8°8°8Â8Ç8È8È8È8Ò8Ò8Ò8Ô8Ô8Ô8Ö8Ö8Ö8ß8ß8ß8ë8ì8í8î8ð8ð8ñ8ò8ó8ô8õ8ø8ú8ü8þ8þ8ÿ8ÿ8€8�8„8Š8�8’8”8¤8¦8«8«8¬8¬8®8®8®8®8°8²8²8³8³8µ8µ8µ8¶8¶8¶8¶8¾8Ë8Í8Ï8Ï8×8Ø8Ú8Û8Ü8Þ8ß8á8â8ä8æ8ç8é8ê8ì8í8ï8ð8ò8ó8õ8õ8÷8ø8ù8ú8û8ý8þ8€8�8ƒ8„8†8‡8‡8‰8‹8�8�8�8�8‘8’8”8•8™8™8›8œ8�8ž8Ÿ8 8¡8¢8£8¤8¥8¦8§8¨8«8¬8­8³8³8³8ß8ß8ß8·8¹8»8ò8ô8÷8÷8þ8€8ƒ8ƒ8Š8Œ8�8�8–8˜8›8›8÷8÷8÷8þ8�8¡8¡8¡8£8“8š8š8š8›8›8›8¨8ª8«8°8°8°8±8±8±8Ÿg((¡)·ÂL«Âij…³³¯[´·µ¶FV.*4_]¬Ãyý˜þ˜ÿ˜V4Á€™ó�™‚™V6Áƒ™ó¡*œŸ%?¬Ãy”™”™ SocketAddrV4Á•™ipÁ—W–™portÁ—W6?SAÚŽúd¬Ãy§™§™ SocketAddrV6Á¨™„z—W©™“z—Wª™flowinfoÁ—W«™scope_idÁ—Wê%H$;¡ŸgÃy÷±ÃyÃyÌÃyûhÃyŸg¸¹ºù[»ó¼½“\¾ó”Ùíš~YŸù ã|ˆã|…ã|çyyóz€U+t 7¹SL5ç Ì2Ð}� Ð}� �~ŸgÐ}¬Ð}â!â!ã! TcpStreamÁä!óÏ! · !©+€”¬Ð}å!å!æ! TcpListenerÁç!óÏ! t�+¼³-¬Ð}Í"Í"Î" UdpSocketÁÏ"ó½" êIÄ™ç…g¬³~Ð}¬ø~Ð}¬¿Ð}Ü"»»Š4½Ú±¾«4±rìúÇbþ6™4¬¨€ ™4�Ÿg»»Š4½Ú±¾«4±rìúÇbþ68Ÿgììíæ^îó µ'ïPâa‡—Ÿgøøùøúó ”-€òÙ‚ÏŸg„„…ô_†ó §�.â¹Q�Ÿg��‘À`’ó :�âaýÆààŽ<â–Éã«4É€ßt¦�'Ì2ÿ ®ƒŸg®®€R¯’RÉ)ý¿S’剟g××¾]ÙÛ]ÉÛñ]ɸ�=gk߉ŠÜ"µ„„$Ð}¢#Ð}¬í#í#OwnedFdÁî#fdÁÛ#¬ݶÑ÷˜ÌÐ}¦#Ð}¬Ð}›…¤#Ð}¬Ð}¤H¤H¥H UnixStreamÁ¦HóæE Dÿážö‚ЬÐ}ÛGÛGÜG UnixListenerÁÝGóÃG Jq¡«–=O¬Ð}‹G‹GŒG UnixDatagramÁ�GóëF K ˆ�ÕàÙ>¬�†Ð}¬džÐ}¬�‡Ð}ù Í�ˆÍ�…Í�ÌÍ��ÇÍ�÷±Í�Í�¬Í�¬Í�ù …‚ˆ…‚……‚Ì…‚�Ç…‚÷±…‚…‚¬…‚¬…‚ù ½‚ˆ½‚…½‚̽‚�ǽ‚÷±½‚½‚¬½‚¬½‚ù õ‚ˆõ‚…õ‚Ìõ‚�Çõ‚÷±õ‚õ‚ŸgññòŽ<ôó Vk]ï‡WÚÌ2Ü"òŠé"òŠŸgœœ�a�Ûž©aŸ¹aƒZÕ©l Æ…Æ‹Ÿg‡‡öW‹€Œ¶XÒ¤T­æ² ˜»Y‘XžXýƇ‡öW‹€Œ¶XÒ¤T­æ² ˜888ŸgœœãY €¡¶XLg'¤!ÍqP»Y‘XžXýÆœœãY €¡¶XLg'¤!ÍqP888/(M³¿¸¯yÇ»ÑìÓøÕ„Þ�²®Ü×õñ œ–‡¬œ¶³Ã¸ñìýø‰„•�¢œG³I³K³ÅyÇyÉyËâ!Íå!ÏÍ"û¼í#Àyàyâyäyæ¤HèÛGê‹GÔìÖÞøàë„íO³öì‚øŽ„š�Q³óìÿø‹„—�R³Á¸ïìûø‡„“�¸ðìüøˆ„”��y¡ ¦yª ¿»´×ûñäà›‡±œæà¸yºy¾yÂyõì�ø�„™�ÿñŸgÀ…e¬1÷±˜Ì"ûh"ù ˆ#ç#�  Ü" ýÆÿ „$¢#¦#¤#�Çé"l¢ \¢  ì’y· +ü u’y$Õ Œ”UŒ¢ |¢  Ù’yô¢ Æ ,üõ QLŽ ’y,„ g6t³d³ Ù�!ŒÅ|Åî”ü³#$€ìÿ †–üù#   ! *¨†–:L  [  g{ …¨†– ø«,  ¸[5  &É ˆ—Ø æò +  :¢-üó¯ †–4š ’yLŒÆóûô–´ ’yŒ€ˆ—µ½ÅÍÔˆ—Ýåìóúг€–¡î”€¦˜ˆÈ‡ÇÇsockaddr_storageÁÈ ss_familyÁÉ __ss_pad2ÁˆË __ss_alignÁˆE�¾ƒ|Ž!‚‡ †½›™¡p¦(å ³ê·.Ãy9 ÃyC½› ½›€ Šr|¸œM †³|�%½›„±%±%üï$] ³ Ë%Ò%2ü—$»ÃyDÜ$’y<¯$É$½›”‚·$¶(S\Á6   ÌÏ6¼Ï6 +d€7 6$–7  d›7D©7   ä–7  p Ž#‚ š Ž<Eü·7�  7³¡�ù¡ù¡ÃyUÿÖ�’y ü–7¯³7 º_ù¡�7�7ErrorÁž7½ Ù6wQ?mˆ!؆Š¢7³¡ù¡‚¢”¢ ¾ü³7’Ë8ü«2  Ê8 35ü½6Žüò6ÙÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwŠ¢¿¢ÌÔ2³¡$È2’y˜<ö6ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òwù¡¿¢G³¡§¹¡Y š˜î™¡¾¡� šö¢>Ö�GdinitÁηj¶Ö¡:6‘ j­¡åµ¢V³¡¿ìð3 Üð3 Ù½›+üð3* ™4üÐ3K6Lä3p,_Á ù×ST]    Ù7 Ö� œÙ7dà76ùŽ"`ùÿŽ"` –gÜî7³˜ 4ùñ@`áñ` ´[W$™8  <¬8 ’yµ8 Ö� Üž8lž8 2 J =$ü˜8" Ä8 ¹8Í Ã8 7ÿŠ¢¼7ö¢ù¡¸7œÄB‰¥‰¥ ArgumentsÁ‹¥templateÁûcŒ¥Çûcg‡@#éó Óù¡xÃy+’yg]Ö�¶Ö�¿ïresÁ´¶ú6Ö�·<Å6’ym6¨©^à©*Ùª³ù¡qù¡\ _ref__lenÁ·$‡;l‡;4Œ; ¥Œù'ù'PathÁú'€Ò%uÂHnìŽ M_DŒ;üí:(Ìí: îy! š;›;ü�:Ž8ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwÃy¿¢¤¨:Ë®$œ: Ñ®< Ë®Xª $¨Å®g§¯ Ë®ìË®ò´†>½›¢>;üÒ=P\ð=°�,æ= -ü‡?´‡?½›' ¥?ü€?' ì ¦?­?<üÑ>\Í�4ï>°�,å>�Ž<D•@£@=üæ?=L�@°�,÷? -ü–A(l–A½›ü–AB ’y ×A ÝAÞA>ü×@‡ô´´õ@°�,ë@ ½›ŠÃ�‰AdòB½›üËB> ( ˆC�C?ü�B’y|±BÃy$¨B½›j4´œD½›´¶D<¶DÔüœD0 ËDÒD@üîCd$�D°�,ƒD‘z:€Ô´èE½›¼‚FD‚FÜüèE1 ˜FŸFAüºEe$ÙE°�,ÏE‘z:€Ü|™{Dž{ F$™{Tž{Ü™{$©{ üh „J,®{\©{»{SüÛz`Ž{°�,ùz ¼º,€{w ¸º«*ƒ*Y‰ºÕ²º²¯æ´æ l´æ  D·æ Ø5T·æ Àæ§ç ªç«ç«üúâ±ü«æ€…‚$ ã…‚“ã…‚µ…‚´‚‚ÔY(áˆü%@á¥ý“\¨—¨—Ipv4AddrÁ©—octetsÁôTSŵ{»„ Œ³˜l x  ŸgÀÅ çgÖ Û ´èáæüù[ ³˜2>û¾>D•¿RXqfá�üÀ‚ˆ� ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwĤĤŤÉ¡ Ñâó:½ÖàM ã|  €g€gŠ‚gê ûcƒgbufÁûcØ«q¢1È¡goÖ�‹³˜�û¾� Ö�© �¾v³˜«û¾ˆ å”ʜØ__self_0Á®ÂσÃû¾æ•¿ÙÂû¾6•¿*(ã•üãšüÄ(-3ã|?äÁGPZœƒÖtƒÖ " •ÖA"$¡Ö Å™ȲȲDurationÁɲsecsÁ²�ʲnanosÁ²�u"ù(ùÐŒü€ÖrœüÀÖ+´ÔÖ|ÔÖ " éÖC JœÀÖ Ð�Wi êÖü»Ö1 Å™ÑÅ ëÖ± ñÖôÖÍü¼Õ¸Å™Ç™È™­É™Ê™àË™óG*¤�R{9 ÑÅ„éÕ��­#‚l_onoffÁƒl_lingerÁÆ—Øâo44ÑÕ=<ÑÅ~|{­#5ßDÂ×t¼×%üרH � úØ “Ù9DÚ× àÑż£Ø ”£ØD£Ø  %<¬Ø Ü�3L¬Ø ´Ødr ¹Øüç×^ � ŠØ ÄØ ¨ÙÎüöÖ²üÕ×pÚÈ\ª×ŠÈD‹×tÕ×ÑÅ>&.' ÑÅ*durationÁLÁ̃‰tÏ,Ö …$ù€4Ï<Ö,ÔÏLÞ £#®L®L BorrowedFdÁ°Lµ„Û#±L_phantomÁÛ#t4bE™ \Þ<û � ¼ÆœÆ ¥#Ð}Ú$€êó ¦˜â³˜í&ü«5Œ« ÆÐ}ü½"'ü�‚ »B„!„!…! PhantomDataÁo$z�é - Ð}•Æü�øüÆÏ »»Š4½Ú±¾«4±rìúÇbþ6$· ù€4¥Ê ¿ÎC¿ÎL¤Oï­ï­ ManuallyDropÁñ­�¶„Ÿ~ Á$Ð}gÐ}SÚ…µ„ŠúÿÍҹΟßϦ˜Ü¹Ð¶¬÷Qd÷QˆŸüÜQ1Ï,ïQ&=ˆŸ_Á16Á¼„c ì|‹cäüéb3ÓÍ�4ûb';ä_Á´Ùd ìtàdÐAü¿d1ÔÍ�4Ðd';ÐA_Áä«l4«l  œ´l³A Ælü¦l" ø ÇlÎlÖüõkY…‚$—l…‚$Žl–•<ˆ³A$µq|µq  Dºq–¼0Tºq ÃqÊq×üˆqB…‚$¦q…‚$�q…‚}6ܰu4°u  ”¹uÁ Êuü«u! ø ËuÒuØüöt\…‚$œu…‚$“u–•<ˆÁ´‡Š4‡Š " l�Š¥ œŠ܇Š ¡Š¨ŠÚüщW$ø‰õ‚$¡=“¥´ØŒ4ØŒ " lጟ íŒÜØŒ òŒùŒÛü¤ŒU$ÉŒõ‚$ÀŒ£¡=“ŸÔ§�4§� " Œ°�© À�ü§� Å�Ì�Üü÷�U$˜�õ‚$��¤¢=”©äÜ“4Ü“ " œå“¡ ÷“üÜ“! ü“ƒ”Ýüª“Y$Í“õ‚$Ä“¤¢=”¡2Á8Á ¤¦µ|¦µ " ¹µE&¬¾µ„¾µ " ÒµE&$Þµ Å™ÑÅü£µØT˜%¿©% üµ|‚¶ ´‚¶ —¶$¦¶Ì­¶ „®¶   "   Ŷ ü­¶   $ɶè#   $èF  ̶ Äܶ ê¶   $ï¶ 3 :lܶ Ï� H8 ^ ó¶  ô×¶ Å™ÑÅ ô¶ ú¶ ´ ý¶¹üÚ´£üøµƒü¢¶YŠÈ„Œµ©©timevalÁªtv_secÁ«tv_usecÁíW’°Ð�CbDð´*)ßÞKJøÑÅ¢¡”ÁÌxsecÁ«nsecÁü�ß!l°ß$°ß  &4µß �U3Dµß ¼ß_ f”�ß ³¤s… ½ßüƒßB ¯ ÄßÇßËüšÝ­¯¯in_addrÁ°s_addrÁt£Öä!×G <ÍÝåÂ$¹Ý".åÂ.addrÁ8’l—á$—á  &4œá òU3Dœá £áüûà0 » ªá­áÍü¸àu»»in6_addrÁ¼s6_addrÁUÑ•¼¤_Dìà ¶—¶—Ipv6AddrÁ·—­½ôTcÇ,3@ü$Øà-ðí-ûê- Lúå|ôå&L·è “\�¾¬ñèLüè  &Tñè Ë3DL¼æ ù[¬öæL�ç  &Töæòï1B Šçü¦ç"´±ç  ÏåÂ& 3 J QT¦çòï[m Çç|ãç   Tãç   %  3 ñç üÊæ³ À üç    !) …鬡éL¬é  &T¡éòï1B µéüÅè˜ À Ñé Üé æéÏüêäüüŽæïü‡èÖÀÀip_mreqnÁÁ imr_multiaddrÁ imr_addressÁà imr_ifindexÁÑð•瘌tßååÂLŒåäÁL¦åüŽæ8Ö�ó†ëÜåÂ܆ëžåÂ�å¦�¾¬²çHPI嶆ëžåž†ëÛåÂÛåÂÿ multiaddrÁ» interfaceÁÆ ö± ö(‹£›U�¾¸À›U�¾}ŒÏÑåª�¾»›U�¾libc::IFNAMSIZÁ„¢èL§è £#³¡$¢è\§è\´èü“è5L˜è ‰$“èe:4Áèü˜è0Îè‡üÚæôÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw¿¢ŒÕç¦Ñ,öæ ³¡$…ç4—çřǙș­É™Ê™àË™óG*¤�R{9 ù ù ú ¬ü óÕ  >¨WTÑp™Y4®ç¨€µå´Ñ ·ñ]CTŠùöÎùºTCP_CA_NAME_MAXÁTCP_CA_NAME_MAXÁ4†õ ‡õŠL§õŸ»|§õü§õ"lôõ4ùõ }$ôõ DùõLÛö  ¸º´ÛöTåö Þw B dåöìÛö$òö çè5é5ê5 __variant1Áë5ì5 __variant2Á>�Xß'ö« — 4òö\†÷¨ßÉNHßÉN ± 1t�öÌü«ö"ü+ Ûg QHßíN ßôNÿÿÿÿ$øß‰Oè߉O Šøß…O$ Àœ¿¢øßêNn8ßÇO Àœ¿¢ /ø²ÓõË  �%ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw¿¢øßŒNÒ ~ƒ� ¢üÓõËmL»÷4Æ÷ü«÷# ׊ü¨÷' Àœµ„¿¢Õ÷ ³�÷[ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw¸Ä¬©^—¯f¿¢³‰ �%ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òwµ„¿¢�…ò * ¨ ü•ôÀüòôãü–õ¿øß¶N¨þELSá�†äËô¦Ñ,ÁôŠlöôTšõ Ÿ»4 ó‡@ÊüÍüÎümÏüóÐüÑü[Òüó}µŒOƒDê^�…5à‚ÎߺNr Àÿþ 6ðþe ó‡q¾¡­ˆ¦¶I¿¢u�…~ µ„Þó‡þ7Û]5ñ]7§¬» Æ ÜŽoßÌ ü+ ³w�¸þq‰ÿ'·ÿЀpÜ�ìÚ‚s‡†zü·‡%$ˇ ч Õ‡  Ù‡  ^ € Û‡  ü–‡Q ® æ‡í‡±üʆ£ €„T�‡$Û†æ†î† ö†€€ sock_filterÁ�codeÁ‚jtÁƒjfÁ„¡#Ù ±¯uŠ�dbUH;øŒª…�®��²¡µø(à§‹  ³˜�àÞ‹  ³˜ó‡+û¾Xàö‹ ³˜ *  6 û¾ž£ Ûg´¹¥ªsxÕଋßð ãÀü µ„ïÁ³˜³˜ û¾žˆ³˜èû¾ðÙÂøÖ�_œmxžˆû¾mÙÂû¾;È�—tµ�ó‡\Ç�¤Ç�¸´Ä� ¶ý Ä�ÌÃ� ‘ýó‡¶ý¶ý¼¸ý‚¹ý’}£²ËJüü Ä�câ�·ü‘�QŸ»,¤�Ÿ‘,š�žˆÈ“ß÷,Q½“×(è®?è³?ò&+Í�8 Í�CLVé·?ôéµ? Ε&0(ê×?&êÂ?÷Hê¹?ΕΕov5î BL¤Î@ ìdÕ@Ôüµ@.ÐÍ�4Å@';Ô_Á¬ÆA ìlÍAÜü­A/ÑÍ�4½A';Ü_Á¤éB ìdðBÒüÐB.ÒÍ�4àB';Ò_Á<þCløC#dØD ÑÍ�d©D ÐÍ�õDÓü¶C¿Í�4çC…z<ÏCŒ”DŸ8qÐÍ�ŸÑÍ�(ìüIì�Jþ&+…‚8 …‚CLVí…J€íƒJ Åœ&0(î£J&î�JƒHî‡JŜŜov5î BL´²K ø„·KŸJü™K0Ù…‚$«K';ŸJ_Á¬ÃL ø|ÈL Jü«L.Ú…‚$¼L'; J_Á¤ƒN øtˆNËAüìM,Û…‚$üM';ËA_ÁÌìO øœñOÊAüÐO6Ü…‚$åO';ÊA_Áœ�R øl¢R²ü‡R*Ý…‚$–R';²_Á(ð®Vð³VŠ&+½‚8 ½‚CLVñ·VŒñµV °£&0(òÙV&òÂV�Hò¹V°£°£ov5î BLÜãW „ŒìW�üÆW9㽂DØW';�_ÁìòX „œûX‘üÕX;佂DçX';‘_ÁÔÙY „„âY’ü¿Y5彂DÎY';’_ÁÔ½Z „„ÆZ“ü£Z5潂D²Z';“_ÁäÅ[ „”Î[ûü©[9罂Dº[';û_ÁÜã\ „Œì\èüÈ\7轂DØ\';è_ÁÜœ^ „Œ¥^õü�^7齂D‘^';õ_ÁôÚ` „¤ã`÷ü¼`=꽂DÏ`';÷_Á(ô¿eôÄe–&+õ‚8 õ‚CLVõÈe˜õÆe Ö¬&0(öëe&öÓe›HöÊeÖ¬Ö¬ov5î BL¼Øi4Øi  tái£ îiäØi óiúiðü¦iT$Éiõ‚$Ài™˜:‹£ (÷Ìr  ³˜°÷ös  ³˜ŠÈ*û¾Ð÷™v  ³˜ ŠÈ* û¾ ÷Àx   ³˜ řǙș­É™Ê™àË™óG*¤�R{9 n  z  û¾! Ýg39'-øý Ç Ìb÷Ñr¡}ãÀŠ Æ‹–ïÁŸ³˜¨³˜™û¾¢ ŠÈ®³˜|û¾…‚´Ž³˜\û¾e  ÷±t½´}œ#.‚´û¾$‚´û¾ó»´û¾Âë²W°øösŠÈ †ŠÈ/7Ðø™vŠÈȵ)1 øÀx÷± †÷±/7(øÓr œøØr£3Æ‹?Ò³GŠÈý‚´ŠÈÒ‚´Ú÷±¬½´´�‹ȵCȵº¶ß $§z Å™ÑÅ$š} Å™ÑÅ$Œ€  Å™ü†z• œ š€ ¡€ƒüÙyÈÆ‹dïyŠÈ»ŠÈ¥÷±�1T”…$™…  Å™ÑÅ �…üû„A œŠÈ÷± »…Â…„ü¼„†Æ‹$ì„Æ‹$Ó„ÑÅ$Ù„ŠÈ·ÑŶ'Û)Zt³�D¸�  Å™ÑÅ À�ü–�I œŠÈ÷± Þ�å�…üÏŒ–Æ‹$‡�Æ‹$êŒÑÅDðŒŠÈ·ÑŶ'©a)ZlÈ•<Í•  Å™ Ô•ü¬•G œŠÈŠÈ ò•ù•†üì”�Æ‹$�•Æ‹$†•<Œ•÷±µ³%¹a(X,àü ¸º(ã|3:A<�ý ¸½(ã|3�¾;BŒÅ? ìí'Í�3:A|“J øù'…‚3:AœÅV „…'½‚3:A¤Öe �‘'õ‚3:Aü‹k ñò*ññòŽ<ôó Vk]ï‡WÚeààŽ<â–Éã«4É€ßt¦�'¥¬U±Éñò‡œìíøù„…�‘œ‰ñ²¾,IoSliceÁ<•Œ‰ƒÐ\€„!ƒÐ…!˜ çô MaybeUninitÁ\úý­ SocketAddrÁT•ý˜s,°Ü" DerefMutÁD·é" ÝÄDÑȲ c_intÁ,Ê7–‡Äü�\å7'ÆÿLò7&ǯ[Dý7³È¡|‡8(ÉÚ[¼×9¸Êó4€:yËŠ4<™:»Ì¾]lá:×Í€RTË;®Îüáè¾üˆ-* Utilities for creating and using sockets.Á¶�üºGD The goal of this crate is to create and use a socket using advancedÁü‚KH configuration options (those that are not available in the types in theÁüÎ41 standard library) without using any unsafe code.Áƒ�ü‡DA This crate provides as direct as possible access to the system'sÁüÌB? functionality for sockets, this means little effort to provideÁü�MJ cross-platform utilities. It is up to the user to know how to use socketsÁüÝJG when using this crate. *If you don't know how to create a socket usingÁü¨HE libc/system calls then this crate is not for you*. Most, if not all,ÁüñIF functions directly relate to the equivalent system call with no errorÁü»PM handling applied, so no handling errors such as [`EINTR`]. As a result usingÁüŒ PM this crate can be a little wordy, but it should give you maximal flexibilityÁüÝ " over configuration of sockets.Á€ �ü„ .+ [`EINTR`]: std::io::ErrorKind::InterruptedÁ³ �t·  # ExamplesÁÆ �lÊ  ```no_runÁüØ (% # fn main() -> std::io::Result<()> {Áü� ,) use std::net::{SocketAddr, TcpListener};Áü® (% use socket2::{Socket, Domain, Type};Á× �üÛ 41 // Create a TCP listener bound to two addresses.Áü� @= let socket = Socket::new(Domain::IPV6, Type::STREAM, None)?;ÁÑ �üÕ  socket.set_only_v6(false)?;Áüõ =: let address: SocketAddr = "[::1]:12345".parse().unwrap();Áü³ " socket.bind(&address.into())?;ÁÄÖ  socket.listen(128)?;Áï �üó .+ let listener: TcpListener = socket.into();ÁT¢ // ...Á¬­ # drop(listener);Átà # Ok(()) }Á<Ò ```ÁÚ�|Þ ## FeaturesÁî�üòPM This crate has a single feature `all`, which enables all functions even onesÁüÃ&# that are not available on all OSs.Áü„#t•U±Éñò‡œìíøù„…�‘œ‰Ó ñÔ ¾,ùÃÍ Œ‰ƒÐÌ „!ƒÐß …!˜ Ì ôÏÄÁ ý­îÄ· ý˜s¶ Ü" žÅ® é" ÝÄ­ Ȳ ÎŨ –‡Äü�§ 'Æÿ¦ &ǯ[¥ ³È¡¤ (ÉÚ[£ ¸Êó¢ yËŠ4¡ »Ì¾]  ×Í€RŸ ®ÎO R U D­L „ŒÅredoxÁœÅÅ€”ÚÅhorizonÁ¬îüÄ@üÀEü·P~ ÄóÅÇÚœ¬Å€”ÁÅäÚ¬Õü«@ü§EüžP« DâÅÇÚœ›Å€”°ÅäÚ¬Äüš@ü–Eü�PÆ ¬ð¯ ¤‹˜ D¥Œ � w z œÆm ¼ªT·  ä È � , Œ8!$�& ‘8ª $“$ —, ¡ ¢ � , ° ± Â+ ² ³ Á, ´8´4µ& »8ª $½ Ã, ê8»$ë& ï8Ý,ñ'÷, ú8flagÁ$û& ÿ8Ý,�$ � ‘, “ ” –$ • —*Ÿ ¢ á 8$¬8‰±'´8ñ¶'¹8q,»8 Á, Å8!$Æ Ë Û 8 Ù8ñÜ ß † à8$á$ å8œ ç& è ê8ë8‰ï'ò8ñô'÷8ŠLù ‚:8ƒ …(ˆ8‰‹'Ž8ñ�'“8Ñ4• œ Ñ 8®8stringÁ4² ¹8,»8$Á Å7ó Æ È ž , Þ ß Ù , ù ú …+ û ü „, ý8´4þ †,  8»$¡'¦, ©8“Þ$ª*¯8�L² » ¼ Â, ½8“Þ$¾$ à Ú8¤ ð*ò84õ8ï2,ü � ‚ ‹8œ ƒ$ „7{n}Á,†$ Œ% Ÿ8œ ± ²8ØL³ ¼ Ã8Éá4½% ⌞$« ° Ž" ¶ Ê , ·8”$¸& ¼8‚¾$ À, Â8 Ã& Æ8‚È*Ì Ï ‹" 8$Ù8�$Þ â, ã8”$ä è8 ê, î8 ï ó …"8 �8”$„ ˆ –8Ú4‰& �, ‘8”$’(˜, ›8 œ   û!+ ² ³ ó8ì´ · ò8Á¸ » ñ8Ì$¼$ À8ªÂ Å ð8ÅLÆ Ð7€4Ò$ Ø8Æ Ú Ý ï8¸TÞ é7‘$ë8"4…  Œ  Ü  ¢ , £ 8 ¤  § '¨ 8¶S\ª  µ  Ê 8Ú4¶  ¼ 8‘S\½  È  É + î  ï  ü 8ìð  ó  û 8É<ô 8"4Ž! •! í! «!, ¬!8 ­! °!'±!8from_raw_socketÁ|³! Â! Û!8Ú4Ã! É!8into_raw_socketÁ|Ê! Ù! Ú!% Œ"dé4Dí4&'(³‘$ûh‘�i˜ $$ôà<* ÙîÄTCý˜îydO”™Èzd]§™Û­$›ù'ñ«¾,ioÁ°‰í ´¸AF_UNIXÁ<¹ ÒýÎÅ,Ó–‡ü sockaddr_inÁ\Úß ” sockaddr_in6Ádçì!•Çš„õÇ"–AF_INETÁ<‡ Ô#ÿAF_INET6ÁD� Ü$€æ^4¦ì%æ^í%|ËD­¡¤D8—šŠ�}€|�Å€”v¤uül‰¥}€nqadœ­Å€”“¤’ü‰jTÆX[;>! ôöØÚlŸÈ”�ü¯>; The integer type used with `getsockname` on this platform.ÁL–¤šüº@= The integer type for the `ss_family` field on this platform.Á\£Ô¤üË2/ Rust version of the [`sockaddr_storage`] type.Áþ�ü‚a^ This type is intended to be used with with direct calls to the `getsockname` syscall. See theÁüä41 documentation of [`SockAddr::new`] for examples.Á™�ü�^[ This crate defines its own `sockaddr_storage` type to avoid semver concerns with upgradingÁ”ü `windows-sys`.Á|¯’yÂL«Âij)ÌÅ<Å((½›¤ã’y+,-¼Â üþ1. Construct a new storage containing all zeros.Á4É ’yBÿ**‘ üõ "ü½ %" Returns the size of this storage.Á<ü ¤ ¤’yBÿ* „ * ,$… üó-üÌ # View this type as another type.Áô �dü # SafetyÁ� �ü• PM The type `T` must be one of the `sockaddr_*` types defined by this platform.Áê �tò çÏ<… £ÕÌ‘  # #[allow(dead_code)]Áü¯ %" # #[cfg(unix)] mod unix_example {ÁìÙ  # use core::mem::size_of;Áüû  use libc::sockaddr_storage;ÁüŸ85 use socket2::{SockAddr, SockAddrStorage, socklen_t};ÁÜ�üäKH fn from_sockaddr_storage(recv_address: &sockaddr_storage) -> SockAddr {Áü´41 let mut storage = SockAddrStorage::zeroed();ÁüíLI let libc_address = unsafe { storage.view_as::() };Áü¾&# *libc_address = *recv_address;ÁüéUR unsafe { SockAddr::new(storage, size_of::() as socklen_t) }Á,à }Á<Í # }Á<Ù£Õ<�¥ ¥’y ¥†–ÿ*�.. Œ*þƆ– ‰ -†–$‘ü¦(’y0 g0üÕBئ§¨ ¦’y §€g€gŠ‚gê ûcƒg�ÁûcØ«q¢1È¡¨ãÀBÿ/ Ü/ 0$Ýœ ãlàÃy238:;<=>?@ABCDEFü—$MüôC@ Create a `SockAddr` from the underlying storage and its length.Á¼�dĸøÕ�üÝKH Caller must ensure that the address family and length match the type ofÁü­KH storage address. For example if `storage.ss_family` is set to `AF_INET`ÁüýKH the `storage` must be initialised as `sockaddr_in`, setting the contentÁìÍ and length appropriately.Áï�t÷çÏŠ�<’£Õüž(¡Ð¤Ë # #[cfg(unix)] {Á„ä use std::io;Áìù use std::os::fd::AsRawFd;Á›�ü£C@ use socket2::{SockAddr, SockAddrStorage, Socket, Domain, Type};Áë�üó@= let socket = Socket::new(Domain::IPV4, Type::STREAM, None)?;Á¸�üÀ=: // Initialise a `SocketAddr` by calling `getsockname(2)`.Áü‚52 let mut addr_storage = SockAddrStorage::zeroed();Áü¼)& let mut len = addr_storage.size_of();Áê�üòEB // The `getsockname(2)` system call will initialize `storage` forÁü¼ /, // us, setting `len` to the correct length.Á´ð  let res = unsafe {ÁÔ‹! libc::getsockname(Áüª! socket.as_raw_fd(),ÁüÎ!# addr_storage.view_as(),Á¬ö! &mut len,ÁL�" )Á4ž" };Á”©" if res == -1 {ÁüÀ"/, return Err(io::Error::last_os_error());Á,ô"¿þþ"�ü†#>; let address = unsafe { SockAddr::new(addr_storage, len) };Á¤É# # drop(address);Á<â#Íþdî# # Ok(())Á<ÿ#Íþ<‹$£Õ«$’yÃyÿ11Ùª·O¶Oü«2–üØ%;8 Initialise a `SockAddr` by calling the function `init`.Á˜&�ü &LI The type of the address storage and length passed to the function `init`Áüñ&  is OS/architecture specific.Á–'�üž'FC The address is zeroed before `init` is called and is thus valid toÁüé'KH dereference and read from. The length initialised to the maximum lengthÁœ¹( of the storage.ÁÑ(�dÙ(¸øê(�üò(Kä‚üÂ)K¹ƒü’*KŽ„ìâ*â„„+�tŒ+çÏŸ+�<§+£Õü³+(¡Ð¤à+È…„ù+å…ìŽ,þ…°,�ü¸,2/ use socket2::{SockAddr, Socket, Domain, Type};Áï,�ü÷,@Ї¼-�üÄ-=à‡ü†. let (_, address) = unsafe {Áüª.0- SockAddr::try_init(|addr_storage, len| {Áüß.MJ // The `getsockname(2)` system call will initialize `storage` forÁü±/74 // us, setting `len` to the correct length.Áüí/VS if libc::getsockname(socket.as_raw_fd(), addr_storage.cast(), len) == -1 {ÁüÈ0/, Err(io::Error::last_os_error())Á¤ü0 } else {Á´•1 Ok(())Ál°1 }ÁTÂ1 })Á<Ñ1 }?;Á¤Ý1¸�<ö1Íþd‚2â�<“2Íþ<Ÿ2£ÕD¹2³¡‡¤ÿ1‚4�5541þƳ¡ Â2þÆù¡ Å2‹#³¡¹¡üƒ3=�#³¡¹¡ÿ¤l³3 3³¡ù¡°¥èQVXRTìÐ3dÖ3,·73�7�7�773ö¢ü�:QüÑ8LI Constructs a `SockAddr` with the family `AF_UNIX` and the provided path.Á¢9�üª9:7 Returns an error if the path is longer than `SUN_LEN`.ÁÅ€”ó9¤ò9üé9$”:Ë®†°Bÿ1Œ991þÆË® ™:£Ë®Ñ®\Ò: 8Ë®ª æW')üÌ<6ü¡;" Set the length of the address.ÁÈ;�dÐ;¸øá;�üé;IF Caller must ensure that the address up to `length` bytes are properlyÁ„·< initialised.ÁTÚ<ª ªÃyÿ1 å<1 :$ê<ñ]4ð<üÒ=)ü«=" Returns this address's family.Á4ß=« «ÃyBÿ1 æ=1 ;$ç=üÑ>$ü¨>$! Returns this address's `Domain`.Á4Þ>¬ ¬ÃyÍ�Bÿ1 å>1 <$æ>üæ?$ü³?.+ Returns the size of this address in bytes.Áó?­ ­ÃyBÿ1 ÷?1 =$ø?ü×@4ü©@)& Returns a raw pointer to the address.Á4ä@® ®Ãyô´Bÿ1 ë@1 >$ì@ü�B0üäA'$ Returns the address as the storage.ÁT�BÃy’yBÿ11 ?ÉZüîC#ü•CTQ Returns true if this address is in the `AF_INET` (IPv4) family, false otherwise.Á<ûC¯ ¯ÃyBÿ1 ƒD1 @$„DüºE#üØDJG Returns true if this address is in the `AF_INET6` (IPv6) family, falseÁt§E otherwise.Á<ÇE° °ÃyBÿ1 ÏE1 A$ÐEìéGü¥F\Y Returns true if this address is of a unix socket (for local interprocess communication),Áü†G:7 i.e. it is from the `AF_UNIX` family, false otherwise.ÁÅ€”ÏG¤ÎGüÅG<ðG± ±ÃyBÿ1 øG1 B$ùGüÜI-üÍHKH Returns this address as a `SocketAddr` if it is in the `AF_INET` (IPv4)Áü�I:7 or `AF_INET6` (IPv6) family, otherwise returns `None`.ÁLãI² ²ÃyřǙș­É™Ê™àË™óG*¤�R{9 …zBÿ1 íI1 C$îIüçT4üŠTHE Returns this address as a [`SocketAddrV4`] if it is in the `AF_INET`Á\×T family.ÁtîT³ ³ÃyřǙș­É™Ê™àË™óG*¤�R{9 âzBÿ1 ýT1 D$þTüÿV4ü¡VIF Returns this address as a [`SocketAddrV6`] if it is in the `AF_INET6`Á\ïVü¬t†W´ ´ÃyřǙș­É™Ê™àË™óG*¤�R{9 ¼{Bÿ1 •W1 E$–WÜèXDëXµ µÃy µ¸ºBÿ1 ôX1‰º$õXü¬["ÃyH®HüÕ[%$Ø[…zÃyBÿGG Hûê$Ý[ü‡]$ÃyJ®Jü²]'$µ]âzÃyBÿII Jûê$º]üƒg$ÃyL®Lü®g'$±g¼{ÃyBÿKK Lûê$¶gä”sÃyN gNü·s:ºs¶·¸ ¶Ãy ·€g€gŠ‚gê ûcƒg�ÁûcØ«q¢1È¡¸ãÀBÿM ¾sM N$¿sñÅsÜ©yÃyPù±PüËy"Îy¹º ¹Ãy ºÃyBÿO ÑyO P$Òyî ,Øy¤¥zÃy´¾zÃySühSüÛz3$Þz»¼ »Ãy ¼¼ºBÿR„TT ùzRþƼº ãzƒi¼ºŒæz S¼º$úzƒ]*,T÷44û4y«¬Íθñê¾,UVªí$ý‰UXReadÁ$ƒçUYWriteÁ,‰� UZùÃ<ðŒ‰U\ IoSliceMutÁTùü7U]ÏÄ\”ý­U^þìDè¶—U_netÁ$�ù Ua›½D‡¨—UbShutdownÁD‘™DUc FromRawFdÁLñ¤#Ue IntoRawFdÁLü¦#UfÝÄDáȲUg‚5$ýÉUiÎÅ,ƒ–‡Ujü‰ETŠ ÅUk¨ET– ÈUlX$¢ÌUmãYLüœUnæ^4“ìUpæ^íUpô_D›„Uqô_…Uq¯[D¥³UrÈ�ad¯œUsø$½øUtøùUtŽ<„¡ ñUvŽ<òUvöW4³ ‡UwÀ`L» �UxÀ`‘UxDå¸<ó«ø›ž‰Œ<æÅÇÚœŸÅ€”´ÅäÚ¬Èüž@üšEü‘PºÅÇÚ>Å€<ÅäÚ:852éÎÅÇÚpÅ€nÅäÚljgdý¬Šð”ÞÅ¥Œ¯ÅøœÂü®(üª-ü¡8DöÿûòõÜß\ãÌ$¦Å€”°¸‘ŒÈœÇü¯,ü¥7üœBÌ?Å€=¸‘;97414ÌpÅ€n¸‘ljhebIœÖ<Tð/÷"%÷ú„õÌ$³ÅÇÚœÁÅäÚ¬ÖüÀ,ü¼1ü²<ü©G-,‹!$áäÐÓÃÆ,™ ÅÇÚœÒÅ€”çÅäÚ¬ûüÑ@üÍEüÄPâÅÇÚ>Å€<ÅäÚ:852îÅÇÚpÅ€nÅäÚljgd ÅÇڢŀ ÅäÚžœ™–<ŒúüÈ )& Owned wrapper around a system socket.Áò �üö MJ This type simply wraps an instance of a file descriptor (`c_int`) on UnixÁüÄ MJ and an instance of `SOCKET` on Windows. This is the main type exported byÁü’ HE this crate and is intended to mirror the raw semantics of sockets onÁüÛ FC platforms as closely as possible. Almost all methods correspond toÁü¢ IF precisely one libc or OS API call which is essentially just a "RusticÁüì ! translation" of what's below.ÁŽ �ü’ )& ## Converting to and from other typesÁ¼ �üÀ MJ This type can be freely converted into the network primitives provided byÁüŽKH the standard library, such as [`TcpStream`] or [`UdpSocket`], using theÁüÚ*' [`From`] trait, see the example below.Á…�ü‰&# [`TcpStream`]: std::net::TcpStreamÁü°&# [`UdpSocket`]: std::net::UdpSocketÁ×�\Û # NotesÁç�üëMJ Some methods that set options on `Socket` require two system calls to setÁü¹KH their options without overwriting previously set options. We do this byÁü…NK first getting the current settings, applying the desired changes, and thenÁüÔPM updating the settings. This means that the operation is **not** atomic. ThisÁü¥NK can lead to a data race when two threads are changing options in parallel.Áô�tøçÏl‡ŠÐü•(¡Ðü¾,ÓÐüë(‰Ñ”�ä˜ // create a TCP listenerÁüµ@…Òö�üú=„Óü¸! let address = address.into();ÁÜÚ socket.bind(&address)?;ÁÄööÓ��ü“.¤ÔTÂÛÔ¬ÍîÔtãŒÕ<ò£Õ4…Ð}+t 7¹SL5z”’,’Uyy›…\©Ð}|}~€‚ƒ†‡ˆ‰Š‹�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ªüà5DîÐ}Bÿ{{ |@÷ü¬-4º½ ½Ð}Bÿ{ Á{¸þ$Âü�.D�Ð}Bÿ{{ ~$¦üÛ"Vüô/, Creates a new socket and sets common flags.Á¨�ü°HE This function corresponds to `socket(2)` on Unix and `WSASocketW` onÁdý Windows.ÁŽ �ü– JG On Unix-like systems, the close-on-exec flag is set on the new socket.Áüå IF Additionally, on Apple platforms `SOCK_NOSIGPIPE` is set. On Windows,Áü³!'$ the socket is made non-inheritable.Áß!�üç!LI [`Socket::new_raw`] can be used if you don't want these flags to be set.Áø3Ç#Ÿô¸"  Additional documentation can be found in manual of the OS: * DragonFly BSD: * FreeBSD: * Linux: * macOS: (archived, actually for iOS) * NetBSD: * OpenBSD: * iOS: (archived) * illumos: * Windows: Áâ"Í�…‚řǙș­É™Ê™àË™óG*¤�R{9 ½‚ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwÐ}¿¢Bÿ{{ è4æ"‚ö"àGD€#ü‰&Zü®$0- Creates a new socket ready to be configured.Áã$�üë$HÉÔü¸%LI Windows and simply creates a new socket, no other configuration is done.Á<�&Í�…‚¿ß‡àBÿ{{ €è4˜&‚¨&àGD²&�'€�������€�½‚Uÿüá*€üé'@= Creates a pair of sockets which are connected to each other.Á®(�ü¶(1. This function corresponds to `socketpair(2)`.Áì(�üô(EB This function sets the same flags as in done for [`Socket::new`],Áü¾)JG [`Socket::pair_raw`] can be used if you don't want to set those flags.ÁøHÅ%hü�*(ã Additional documentation can be found in manual of the OS: * DragonFly BSD: * FreeBSD: * Linux: * macOS: (archived, actually for iOS) * NetBSD: * OpenBSD: * iOS: (archived) * illumos: ÁÓª|Ä*Ì$Õ*¼Ã*üº*"$è*Í�…‚¿ßÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwÐ}Ð}¿¢Bÿ{{ ‚è4ö*‚Ž+àGD +üÜ.„ü²-@ûâ÷-�üÿ-1ÑãÓª|¿.Ì$Ð.¼¾.üµ."Dã.Í�…‚¿ßíìBÿ{{ ƒè4õ.‚�/àGDŸ/�0ƒ�„�„�„„ƒ„ÛãDÚ0ƒ�…�…�……ƒ…¼íUÿüÙ28üš1/, Binds this socket to the specified address.ÁÎ1�üÖ1KH This function directly corresponds to the `bind(2)` function on WindowsÁl¦2 and Unix.Áø`Ç#Ÿä¸2Ž Additional documentation can be found in manual of the OS: * DragonFly BSD: * FreeBSD: * Linux: * macOS: (archived, actually for iOS) * NetBSD: * OpenBSD: * iOS: (archived) * illumos: * Windows: Á$à2¾¿ ¾Ð} ¿ÃyÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw¿¢Bÿ{ å2{ †$æ2Ÿ<ì2üä:;üÉ3B? Initiate a connection on this socket to the specified address.Á�4�ü˜4FC This function directly corresponds to the `connect(2)` function onÁ¬ã4 Windows and Unix.Áý4�ü…5GD An error will be returned if `listen` or `connect` has already beenÁÜÑ5 called on this builder.ÁøxÇ#Ÿüñ5© Additional documentation can be found in manual of the OS: * DragonFly BSD: * FreeBSD: * Linux: * macOS: (archived, actually for iOS) * NetBSD: * OpenBSD: * iOS: (archived) * illumos: * Windows: Á•6�\�6¼Ê­6�üµ6A> When using a non-blocking connect (by setting the socket intoÁüû6KH non-blocking mode before calling this function), socket option can't beÁüË7EB set *while connecting*. This will cause errors on Windows. SocketÁü•8EB options can be safely set before and after connecting the socket.Áß8�üç8KH On Cygwin, a Unix domain socket connect blocks until the server acceptsÁü·9HE it. If the behavior is not expected, try [`Socket::set_no_peercred`]Á”„: (Cygwin only).Á<ë:ÀÁ ÀÐ} ÁÃyòøBÿ{ ó:{ ‡$ô:Ÿ<ú:ü¬CSüÚ;GD Initiate a connection on this socket to the specified address, onlyÁü¦JG connect(2), and then waits for the connection to complete with poll(2)Áüü>GD on Unix and select on Windows. When the connection is complete, theÁüÈ?EB socket is set back to blocking mode. On Unix, this will loop overÁœ’@ `EINTR` errors.Áª@�t²@ # WarningsÁÅ@�üÍ@IF The non-blocking state of the socket is overridden by this function -Áü›ALI it will be returned in blocking mode on success, and in an indeterminateÁ¬ìA state on failure.Á†B�üŽBJG If the connection request times out, it may still be processing in theÁüÝBJG background - a second call to `connect` or `connect_timeout` may fail.Á|³CÂà ÂÐ} ÃÃyÑÅòøBÿ{ ÃC{ ˆ$ÄCûê$ÊCtimeoutÁ<ÛCüßJ6üòGGD Mark a socket as ready to accept incoming connection requests usingÁ̾H [`Socket::accept()`].ÁÜH�üäHEB This function directly corresponds to the `listen(2)` function onÁ¬®I¤úÈI�üÐIGÏúÜœJŸûø�Ç#Ÿô¼J  Additional documentation can be found in manual of the OS: * DragonFly BSD: * FreeBSD: * Linux: * macOS: (archived, actually for iOS) * NetBSD: * OpenBSD: * iOS: (archived) * illumos: * Windows: Á4æJÄ ÄÐ}òøBÿ{ íJ{ ‰$îJbacklogÁ<ôJüëP6üÏK85 Accept a new incoming connection from this listener.ÁŒL�ü”LDA This function uses `accept4(2)` on platforms that support it andÁüÝL&# `accept(2)` platforms that do not.ÁˆM�ü�ME˜äüÚMLI [`Socket::accept_raw`] can be used if you don't want to set those flags.Áø¨Ç#Ÿô«N  Additional documentation can be found in manual of the OS: * DragonFly BSD: * FreeBSD: * Linux: * macOS: (archived, actually for iOS) * NetBSD: * OpenBSD: * iOS: (archived) * illumos: * Windows: ÁÎN�\ÖN¼ÊæN�üîNKð„ü¾OHÅ…”‹P–†4òPÅ ÅÐ}ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwÐ}Ãy¿¢Bÿ{ ùP{ Š$úPüå\:ü¼[8Ý™ù[�ü�\EB This function directly corresponds to the `accept(2)` function onÁ¬Ë\¤úTì\Æ ÆÐ}¼¤Bÿ{ ÷\{ ‹$ø\|É]‹�Œ�Œ�ŒŒ‹ŒÃy‹¥Uÿü„a0ü…^@= Returns the socket address of the local half of this socket.ÁÊ^�üÒ^JG This function directly corresponds to the `getsockname(2)` function onÁ¬¡_¤úøÀÇ#Ÿü»_#Í Additional documentation can be found in manual of the OS: * DragonFly BSD: * FreeBSD: * Linux: * macOS: (archived, actually for iOS) * NetBSD: * OpenBSD: * iOS: (archived) * illumos: * Windows: Áã_�\ë_¼Êû_�üƒ`EB Depending on the OS this may return an error if the socket is notÁdÍ` [bound].ÁÞ`�Ìæ` [bound]: Socket::bindÁT‹aÇ ÇÐ}†°Bÿ{ –a{ �$—aüÚd/üêaA> Returns the socket address of the remote peer of this socket.Á°b�ü¸bJG This function directly corresponds to the `getpeername(2)` function onÁ¬‡c¤úøØÇ#Ÿü¡c#Í Additional documentation can be found in manual of the OS: * DragonFly BSD: * FreeBSD: * Linux: * macOS: (archived, actually for iOS) * NetBSD: * OpenBSD: * iOS: (archived) * illumos: * Windows: ÁÉc�\Ñc¼Êác�üéc=: This returns an error if the socket is not [`connect`ed].Á«d�ü³d" [`connect`ed]: Socket::connectÁLádÈ ÈÐ}†°Bÿ{ ëd{ Ž$ìdü¤f(ü¿eKH Returns the [`Type`] of this socket by checking the `SO_TYPE` option onÁ„�f this socket.Á4«fÉ ÉÐ}ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw…‚¿¢Bÿ{ ²f{ �$³füòk-ü¹gFC Creates a new independently owned handle to the underlying socket.Á„h�\Œh¼Êœh�ü¤hIF On Unix this uses `F_DUPFD_CLOEXEC` and thus sets the `FD_CLOEXEC` onÁÄòh the returned socket.Á�i�ü—iKH On Windows this uses `WSA_FLAG_NO_HANDLE_INHERIT` setting inheriting toÁTçi false.Áöi�üþiDA On Windows this can **not** be used function cannot be used on aÁÜÇj QOS-enabled socket, seeÁüçjb_ .ÁÅ€”Øk¤×küÎkLùkÊ ÊÐ}‡àBÿ{ ƒl{ �$„lü‚p-üélLI Returns true if this socket is set to nonblocking mode, false otherwise.Áºm�\Âm¼ÊÒm�üÚmFC On Unix this corresponds to calling `fcntl` returning the value ofÁŒ¥n `O_NONBLOCK`.Á»n�üÃnGD On Windows it is not possible retrieve the nonblocking mode status.ÁÓª|¢oÌ$¿oÅ€”Éo¸‘ŒáoœàoüÈo,ü¾o7ü˜ocü�on\‰pË ËÐ}ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw¿¢Bÿ{ •p{ ‘$–püòrBüåp63 Moves this socket into or out of nonblocking mode.Á q�\¨q¼Ê¸q�üÀqIF On Unix this corresponds to calling `fcntl` (un)setting `O_NONBLOCK`.ÁŽr�ü–rDA On Windows this corresponds to calling `ioctlsocket` (un)settingÁtßr `FIONBIO`.Á|ùrÌ ÌÐ}òøBÿ{ ‰s{ ’$Šs½ \�süþu7üûsB? Shuts down the read, write, or both halves of this connection.ÁÂt�üÊtHE This function will cause all pending and future I/O on the specifiedÁü—u=: portions to return immediately with an appropriate value.ÁøðÇ#ŸüÙu ² Additional documentation can be found in manual of the OS: * DragonFly BSD: * FreeBSD: * Linux: * macOS: (archived, actually for iOS) * NetBSD: * OpenBSD: * iOS: (archived) * illumos: * Windows: ÁD…vÍ ÍÐ}™DšD›DÓ·œD�Dê·žDŸDBothÁ•IÒ) «©òøBÿ{ Žv{ “$�vhowÁ•vüµ~DüívFC Receives data on the socket from the remote address to which it isÁt¸w connected.ÁËw�üÓwHE The [`connect`] method will connect this socket to a remote address.Áü x:7 This method might fail if the socket is not connected.ÁøˆÇ#ŸäßxŽ Additional documentation can be found in manual of the OS: * DragonFly BSD: * FreeBSD: * Linux: * macOS: (archived, actually for iOS) * NetBSD: * OpenBSD: * iOS: (archived) * illumos: * Windows: Á€y�üˆy  [`connect`]: Socket::connectÁ­y�dµy¸øÆy�üÎyGD Normally casting a `&mut [u8]` to `&mut [MaybeUninit]` would beÁüšzJG unsound, as that allows us to write uninitialised bytes to the buffer.ÁüézLI However this implementation promises to not write uninitialised bytes toÁüº{FC the `buf`fer and passes it directly to `recv(2)` system call. ThisÁü…|HE promise ensures that this function can be called using a `buf`fer ofÁ¬Ò| type `&mut [u8]`.Áì|�üô|LI Note that the [`io::Read::read`] implementation calls this function withÁüÅ}KH a `buf`fer of type `&mut [u8]`, allowing initialised buffers to be usedÁÜ•~ without using `unsafe`.Á$¼~ÎÏ ÎÐ} Ï ý­ý­ÏÄÿ­uninitÁ瀮�çÙW£Ÿì·œžúBÿ{ Á~{ ”$Â~�ÁÈ~üç‚Pü¬LI Receives out-of-band (OOB) data on the socket from the remote address toÁüýFC which it is connected by setting the `MSG_OOB` flag for this call.ÁÈ€�üЀ?< For more information, see [`recv`], [`out_of_band_inline`].Á”��Ôœ� [`recv`]: Socket::recvÁü»�63 [`out_of_band_inline`]: Socket::out_of_band_inlineÁÅ€”Í‚¤Ì‚ü„î‚ÐÑ ÐÐ} ÑÌãžúBÿ{ ÿ‚{ •$€ƒ�Á†ƒü‘…�üõƒLI Identical to [`recv`] but allows for specification of arbitrary flags toÁüÆ„ the underlying `recv` call.Áê„�Ôò„Úå|˜…ÒÓ ÒÐ} ÓÌãžúBÿ{ ±…{ –$²…�ÁÀ…ØZ,å…ü“‘wü͆F�Ôü˜‡DA connected. Unlike [`recv`] this allows passing multiple buffers.Áá‡�üé‡HôÔü¶ˆ:ÆÕõˆ�üýˆLI In addition to the number of bytes read, this function returns the flagsÁüΉJG for the received message. See [`RecvFlags`] for more information aboutÁ¼�Š the returned flags.Áø Ç#Ÿü¹Š© Additional documentation can be found in manual of the OS: * DragonFly BSD: * FreeBSD: * Linux: * macOS: (archived, actually for iOS) * NetBSD: * OpenBSD: * iOS: (archived) * illumos: * Windows: ÁÝŠ�ÔåŠÚåü„‹ ¸Ü©‹�d±‹¸ø‹�üÊ‹KH Normally casting a `IoSliceMut` to `MaybeUninitSlice` would be unsound,ÁüšŒIF as that allows us to write uninitialised bytes to the buffer. HoweverÁüèŒHE this implementation promises to not write uninitialised bytes to theÁüµ�KH `bufs` and passes it directly to `recvmsg(2)` system call. This promiseÁü…ŽGD ensures that this function can be called using `bufs` of type `&mutÁ”ÑŽ [IoSliceMut]`.ÁèŽ�üðŽGD Note that the [`io::Read::read_vectored`] implementation calls thisÁü¼�JG function with `buf`s of type `&mut [IoSliceMut]`, allowing initialisedÁü‹�.+ buffers to be used without using `unsafe`.ÁÅÇÚœÌ�Å€”á�ÅäÚ¬õ�üË�@üÇ�Eü¾�Plš‘ÔÕÖ ÔÐ} Õ ññòŽ<ôó Vk]ï‡WÚÖÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òwõ‚¿¢Bÿ{ ±‘{ —$²‘bufsÁ$À‘ü§–˜üÇ’LI Identical to [`recv_vectored`] but allows for specification of arbitraryÁü˜“52 flags to the underlying `recvmsg`/`WSARecv` call.ÁÒ“�üÚ“,) [`recv_vectored`]: Socket::recv_vectoredÁ‹”�d“”¸ø¤”�ü¬”JG `recv_from_vectored` makes the same safety guarantees regarding `bufs`ÁÌû” as [`recv_vectored`].Á™•�ü¡•,úüÅÇÚœà•Å€”õ•ÅäÚ¬‰–üß•@üÛ•EüÒ•PÄ®–×ØÙ ×Ð} Ø ññòŽ<ôó Vk]ï‡WÚÙ¼ûBÿ{ Ж{ ˜$Ñ–¸û$ß–ØZ,Š—üƒœDü„˜F�ÔüϘEB connected, without removing that data from the queue. On success,Áü™™'$ returns the number of bytes peeked.ÁÅ™�üÍ™JG Successive calls return the same data. This is accomplished by passingÁüœš>; `MSG_PEEK` as a flag to the underlying `recv` system call.Áßš�d皸øøš�ü€›EB `peek` makes the same safety guarantees regarding the `buf`fer asÁlÊ› [`recv`].ÁÜ›�Ôä›Úå$ŠœÚÛ ÚÐ} ÛÌãžúBÿ{ �œ{ ™$�œ�Á–œüÛŸUü†�JG Receives data from the socket. On success, returns the number of bytesÁüÕ�30 read and the address from whence the data came.Áø¸Ç#Ÿü�ž ² Additional documentation can be found in manual of the OS: * DragonFly BSD: * FreeBSD: * Linux: * macOS: (archived, actually for iOS) * NetBSD: * OpenBSD: * iOS: (archived) * illumos: * Windows: Á²ž�dºž¸øËž�üÓžJG `recv_from` makes the same safety guarantees regarding the `buf`fer asÁl¢Ÿš„´Ÿ�Ô¼ŸÚåLâŸÜÝ ÜÐ} ÝÌãÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwÃy¿¢Bÿ{ ìŸ{ š$íŸ�ÁóŸü—¢�üè HE Identical to [`recv_from`] but allows for specification of arbitraryÁüµ¡,) flags to the underlying `recvfrom` call.Áæ¡�üî¡$! [`recv_from`]: Socket::recv_fromÁ¤ž¢Þß ÞÐ} ßÌãó�Bÿ{ ¼¢{ ›$½¢�ÁË¢ØZ,ð¢ü«¨†üä£HE Receives data from the socket. Returns the amount of bytes read, theÁü±¤HE [`RecvFlags`] and the remote address from the data is coming. UnlikeÁüþ¤74 [`recv_from`] this allows passing multiple buffers.ÁøÐÇ#Ÿüº¥ÔìÞ¥�üæ¥$ ‘�¦�d—¦¸ø¨¦�ü°¦JÙýÌÿ¦­þ�§�ü¥§,úüÅÇÚœä§Å€”ù§ÅäÚ¬�¨üã§@üß§EüÖ§P”²¨àáâ àÐ} á ññòŽ<ôó Vk]ï‡WÚâÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òwõ‚Ãy¿¢Bÿ{ Ψ{ œ$Ϩ¸û$ݨüæ­§üó©GD Identical to [`recv_from_vectored`] but allows for specification ofÁü¿ªC@ arbitrary flags to the underlying `recvmsg`/`WSARecvFrom` call.Á‡«�ü�«63 [`recv_from_vectored`]: Socket::recv_from_vectoredÁÊ«�dÒ«¸øã«�üë«JÙý̺¬­þج�üà¬,úüÅÇÚœŸ­Å€”´­Åäڬȭüž­@üš­Eü‘­Pìí­ãäå ãÐ} ä ññòŽ<ôó Vk]ï‡WÚåø—Bÿ{ ”®{ �$•®¸û$£®ØZ,ήüç¹UüׯFC Receives data from the socket, without removing it from the queue.Á¢°�üª°J…‚üù°B? `MSG_PEEK` as a flag to the underlying `recvfrom` system call.ÁÀ±�üȱGD On success, returns the number of bytes peeked and the address fromÁÌ”² whence the data came.Á²²�dº²¸ø˲�üÓ²JG `peek_from` makes the same safety guarantees regarding the `buf`fer asÁl¢³š„´³�ä¼³ # Note: Datagram SocketsÁüݳPM For datagram sockets, the behavior of this method when `buf` is smaller thanÁü²´MJ the datagram at the head of the receive queue differs between Windows andÁü„µNK Unix-like platforms (Linux, macOS, BSDs, etc: colloquially termed "*nix").Á×µ�üßµHE On *nix platforms, the datagram is truncated to the length of `buf`.Á¬¶�ü´¶IF On Windows, an error corresponding to `WSAEMSGSIZE` will be returned.Á‚·�üŠ·^[ For consistency between platforms, be sure to provide a sufficiently large buffer to avoidÁüí·KH truncation; the exact size required depends on the underlying protocol.Á½¸�üŸIF If you just want to know the sender of the data, try [`peek_sender`].Á“¹�Ô›¹Úåüº¹(% [`peek_sender`]: Socket::peek_senderÁLî¹æç æÐ} çÌãó�Bÿ{ ø¹{ ž$ù¹�Áÿ¹ü�½1ü€»FC Retrieve the sender for the data at the head of the receive queue.ÁË»�üÓ»IF This is equivalent to calling [`peek_from`] with a zero-sized buffer,Áü¡¼63 but suppresses the `WSAEMSGSIZE` error on Windows.Áܼ�üä¼$! [`peek_from`]: Socket::peek_fromÁ\”½è èÐ}†°Bÿ{  ½{ Ÿ$¡½üüÁ^üô½>; Receive a message from a socket using a message structure.Á·¾�ü¿¾KH This is not supported on Windows as calling `WSARecvMsg` (the `recvmsg`Áü�¿74 equivalent) is not straight forward on Windows. SeeÁüË¿›˜ ÁäëÀ for an example (in C++).ÁøèÇ#ŸüŒÁÔìÌ$ºÁÅÇÚœÈÁÅäÚ¬ÝÁüÇÁ,üÃÁ1ü¹Á<ü°ÁG<ƒÂéêëìí éÐ} ꜜãY €¡¶XLg'¤!ÍqPëìížúBÿ{ ‹Â{  $ŒÂmsgÁ’ÂØZ,³Âü£Å3ü˜Ã1. Sends data on the socket to a connected peer.ÁÎÃ�üÖÃHE This is typically used on TCP sockets or datagram sockets which haveÁœ£Ä been connected.Á»Ä�üÃÄ:7 On success returns the number of bytes that were sent.Áø€Ç#Ÿä‚ÅŽ Additional documentation can be found in manual of the OS: * DragonFly BSD: * FreeBSD: * Linux: * macOS: (archived, actually for iOS) * NetBSD: * OpenBSD: * iOS: (archived) * illumos: * Windows: Á$ªÅîï îÐ} ︺žúBÿ{ ¯Å{ ¡$°Å�Á¶Åü¥ÇLü‰Æ[X Identical to [`send`] but allows for specification of arbitrary flags to the underlyingÁ„éÆ `send` call.ÁþÆ� [`send`]: Socket::sendÁ|¬Çðñ ðÐ} ñ¸ºžúBÿ{ ¼Ç{ ¢$½Ç�ÁÃÇØZ,ÏÇüÏÉFü¬ÈIF Send data to the connected peer. Returns the amount of bytes written.ÁÅÇÚœˆÉÅ€”�ÉÅäÚ¬±Éü‡É@üƒÉEüúÈPlÖÉòóô òÐ} ó Œ‰Œ‰�‰ùÃ�‰óö7 Å0ײ÷([OôžúBÿ{ äÉ{ £$åɸû$ëÉü�Í~üÒÊLI Identical to [`send_vectored`] but allows for specification of arbitraryÁü£Ë52 flags to the underlying `sendmsg`/`WSASend` call.Áø˜Ç#ŸüÝË© Additional documentation can be found in manual of the OS: * DragonFly BSD: * FreeBSD: * Linux: * macOS: (archived, actually for iOS) * NetBSD: * OpenBSD: * iOS: (archived) * illumos: * Windows: Á�Ì�ü‰Ì,) [`send_vectored`]: Socket::send_vectoredÁÅÇÚœÈÌÅ€”ÝÌÅäÚ¬ñÌüÇÌ@üÃÌEüºÌPÄ–Íõö÷ õÐ} ö Œ‰Œ‰�‰ùÃ�‰óö7 Å0ײ÷([O÷žúBÿ{ ¸Í{ ¤$¹Í¸û$ÇÍØZ,åÍüëÑ?üÒÎ@= Sends out-of-band (OOB) data on the socket to connected peerÁü—Ï0- by setting the `MSG_OOB` flag for this call.ÁÌÏ�üÔÏ?< For more information, see [`send`], [`out_of_band_inline`].Á˜Ð�Ԡд»ü¿Ð6ÿåÅ€”ÑѤÐÑüÇÑ„òÑøù øÐ} ù¸ºžúBÿ{ ƒÒ{ ¥$„Ò�ÁŠÒüÇÔGüèÒJG Sends data on the socket to the given address. On success, returns theÁä·Ó number of bytes written.ÁØÓ�üàÓ?< This is typically used on UDP or datagram-oriented sockets.Áø°Ç#Ÿô¤Ô  Additional documentation can be found in manual of the OS: * DragonFly BSD: * FreeBSD: * Linux: * macOS: (archived, actually for iOS) * NetBSD: * OpenBSD: * iOS: (archived) * illumos: * Windows: Á<ÎÔúûü úÐ} û¸º üÃyžúBÿ{ ÖÔ{ ¦$×Ô�ÁÝÔûê$éÔüñÖ‡üÊÕLI Identical to [`send_to`] but allows for specification of arbitrary flagsÁü›Ö$! to the underlying `sendto` call.ÁÄÖ�üÌÖ  [`send_to`]: Socket::send_toÁ”øÖýþÿ ýÐ} þ¸º ÿÃyžúBÿ{ ”×{ §$•×�Á£×ûê$·×ØZ,Ð×ü“ÚZü¼ØHE Send data to a peer listening on `addr`. Returns the amount of bytesÁd‰Ù written.ÁøÈÇ#ŸüšÙ½ÀÅÇÚœÌÙÅ€”áÙÅäÚ¬õÙüËÙ@üÇÙEü¾ÙP„šÚ€�‚ƒ €Ð} � Œ‰Œ‰�‰ùÃ�‰óö7 Å0ײ÷([O‚ ƒÃyžúBÿ{ «Ú{ ¨$¬Ú¸û$²Úûê$ÈÚü×Ýšü³ÛEB Identical to [`send_to_vectored`] but allows for specification ofÁüýÛA> arbitrary flags to the underlying `sendmsg`/`WSASendTo` call.ÁÃÜ�üËÜ2/ [`send_to_vectored`]: Socket::send_to_vectoredÁÅÇÚœ�ÝÅ€”¥ÝÅäÚ¬¹Ýü�Ý@ü‹ÝEü‚ÝPÜÞÝ„…†‡ „Ð} … Œ‰Œ‰�‰ùÃ�‰óö7 Å0ײ÷([O† ‡ÃyžúBÿ{ ƒÞ{ ©$„Þ¸û$’Þûê$°ÞØZ,ÉÞüöàWü¿ß96 Send a message on a socket using a message structure.ÁøàÇ#Ÿüýß½ÀÅÇÚœ¯àÅ€”ÄàÅäÚ¬Øàü®à@üªàEü¡àP<ýàˆ‰Š‹Œ ˆÐ} ‰‡‡öW‹€Œ¶XÒ¤T­æ² ˜Š‹ŒžúBÿ{ …á{ ª$†áã°ŒáØZ,¦áüúâ*|ƒãU…‚…‚Bÿ «‚ ^üÑè9„ÔèUÐ}‡àBÿ ¬Ú4åè\Ñÿü³ý.+ Socket options get/set using `SOL_SOCKET`.Áâý�üæýEB Additional documentation can be found in documentation of the OS.Áü¬þB? * Linux: Áüïþa^ * Windows: ÁÐ}®°±²´µ¶·¹º¼½¿ÀÂÃÄÅÇÈÊËÌü¯�+üãÿ?< Get the value of the `SO_BROADCAST` option for this socket.Á§€�ü¯€B? For more information about this option, see [`set_broadcast`].Áö€�üþ€,) [`set_broadcast`]: Socket::set_broadcastÁL¶�‘ ‘Ð}›ÇBÿ­ À�­ ®$Á�\Ö‚®�¯�¯�¯¯®¯Uÿü°„>ü‡ƒ?< Set the value of the `SO_BROADCAST` option for this socket.Á˃�üÓƒGD When enabled, this socket is allowed to send packets to a broadcastÁdŸ„ address.Ál·„’ ’Ð}òøBÿ­ Å„­ °$Æ„Å"LÌ„üºˆ9üĆ:7 Get the value of the `SO_ERROR` option on this socket.Áƒ‡�ü‹‡JG This will retrieve the stored error in the underlying socket, clearingÁüÚ‡LI the field in the process. This can be useful for checking errors betweenÁT«ˆ calls.ÁTÁˆ“ “Ð}ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwřǙș­É™Ê™àË™óG*¤�R{9 ¿¢¿¢Bÿ­ ̈­ ±$͈ü½Œ+üòŠ>; Get the value of the `SO_KEEPALIVE` option on this socket.Áµ‹�ü½‹B? For more information about this option, see [`set_keepalive`].Á„Œ�üŒŒ,) [`set_keepalive`]: Socket::set_keepaliveÁLÄŒ” ”Ð}›ÇBÿ­ ÎŒ­ ²$ÏŒ\ã�²�³�³�³³²³ìêüª�>ü”Ž;8 Set value for the `SO_KEEPALIVE` option on this socket.ÁÔŽ�üÜŽIF Enable sending of keep-alive messages on connection-oriented sockets.Ál±�• •Ð}òøBÿ­ ¿�­ ´$À�‚#LÆ�üý’4ü¾‘;8 Get the value of the `SO_LINGER` option on this socket.Áþ‘�ü†’?< For more information about this option, see [`set_linger`].ÁÊ’�üÒ’&# [`set_linger`]: Socket::set_lingerÁ4„“– –Ð}ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwŠÈ¿¢Bÿ­ ‹“­ µ$Œ“üõ™DüÒ”85 Set value for the `SO_LINGER` option on this socket.Á�•�ü—•HE If `linger` is not `None`, a close(2) or shutdown(2) will not returnÁüä•KH until all queued messages for the socket have been successfully sent orÁü´–DA the linger timeout has been reached. Otherwise, the call returnsÁüý–JG immediately and the closing is done in the background. When the socketÁüÌ—FC is closed as part of exit(2), it always lingers in the background.Á—˜�\Ÿ˜¼Ê¯˜�ü·˜HE On most OSs the duration only has a precision of seconds and will beÁ¼„™ silently truncated.Á ™�ü¨™HE On Apple platforms (e.g. macOS, iOS, etc) this uses `SO_LINGER_SEC`.ÁTü™— —Ð}ŠÈòøBÿ­ ‡š­ ¶$ˆš­#4Žšüè�4üÇ›;8 Get value for the `SO_OOBINLINE` option on this socket.Á‡œ�ü�œKH For more information about this option, see [`set_out_of_band_inline`].Áßœ�üçœ>; [`set_out_of_band_inline`]: Socket::set_out_of_band_inlineÁÅÇÚœ¸�Å€”Í�ü·�)ü³�.üª�9”ï�˜ ˜Ð}›ÇBÿ­ ‚ž­ ·$ƒžd˜Ÿ·�¸�¸�¸¸·¸ìêü‚£HüËŸ;8 Set value for the `SO_OOBINLINE` option on this socket.Á‹ �ü“ KH If this option is enabled, out-of-band data is directly placed into theÁüã LI receive data stream. Otherwise, out-of-band data is passed only when theÁü´¡GD `MSG_OOB` flag is set during receiving. As per RFC6093, TCP socketsÁü€¢?< using the Urgent mechanism are encouraged to set this flag.ÁÅÇڜҢŀ”ç¢üÑ¢)üÍ¢.üÄ¢9´‰£™ ™Ð}òøBÿ­  £­ ¹$¡£ oob_inlineÁT§£ü §*ü¡¥:7 Get value for the `SO_PASSCRED` option on this socket.Áà¥�üè¥A> For more information about this option, see [`set_passcred`].Á®¦�ü¶¦*' [`set_passcred`]: Socket::set_passcredÁÅò œï¦Å« ¤„§üî¦+üå¦6D§§š šÐ}›ÇBÿ­ °§­ º$±§TŨº�»�»�»»º»ìêüâª<üô¨:7 Set value for the `SO_PASSCRED` option on this socket.Á³©�ü»©MJ If this option is enabled, enables the receiving of the `SCM_CREDENTIALS`Á¬�ª control messages.ÁÅò œ±ªÅ« ¤Æªü°ª+ü§ª6d骛 ›Ð}òøBÿ­ öª­ ¼$÷ªŠ$Dýªüµ¯)üò¬:7 Get value for the `SO_PRIORITY` option on this socket.Á±­�ü¹­A> For more information about this option, see [`set_priority`].Áÿ­�ü‡®*' [`set_priority`]: Socket::set_priorityÁÓª|É®Åò œæ®ÅŒ ¬û®ÅÊ ¬’¯üå®Cü¿®oü¶®zD¼¯œ œÐ}ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw¿¢Bÿ­ ů­ ½$Ư4Ù°½�¾�¾�¾¾½¾ïêUÿüƳ;ü‚±:7 Set value for the `SO_PRIORITY` option on this socket.ÁÁ±�üɱ\Y Packets with a higher priority may be processed earlier depending on the selected deviceÁβ queueing discipline.ÁÓª|Ú²Åò œ÷²ÅŒ ¬Œ³ÅÊ ¬£³üö²CüвoüDzzdͳ� �Ð}òøBÿ­ Ú³­ ¿$Û³³$Dá³ü¯·3üÕµ85 Get value for the `SO_RCVBUF` option on this socket.Á’¶�üš¶IF For more information about this option, see [`set_recv_buffer_size`].Áè¶�üð¶:7 [`set_recv_buffer_size`]: Socket::set_recv_buffer_sizeÁ„¶·ž žÐ}žúBÿ­ Ç·­ À$È·4Û¸À�Á�Á�ÁÁÀÁïêUÿü±ºAü†¹85 Set value for the `SO_RCVBUF` option on this socket.Áù�ü˹HE Changes the size of the operating system's receive buffer associatedÁ¤˜º with the socket.Á¤¸ºŸ ŸÐ}òøBÿ­ ͺ­ Â$κß$Ôºüð½:üÀ¼:7 Get value for the `SO_RCVTIMEO` option on this socket.Áÿ¼�ü‡½HE If the returned timeout is `None`, then `read` and `recv` calls willÁ¼Ô½ block indefinitely.Ád÷½   Ð}ÍøBÿ­ „¾­ Ã$…¾ü¨ÀLüƒ¿:7 Set value for the `SO_RCVTIMEO` option on this socket.Á¿�üÊ¿C@ If `timeout` is `None`, then `read` and `recv` calls will blockÁŒ’À indefinitely.Á„¯À¡ ¡Ð}ŠÈòøBÿ­ ÀÀ­ Ä$ÁÀÁÌDÇÀü²Ã/üÛÁ>; Get the value of the `SO_REUSEADDR` option on this socket.ÁžÂ�ü¦ÂFC For more information about this option, see [`set_reuse_address`].ÁñÂ�üùÂ41 [`set_reuse_address`]: Socket::set_reuse_addressÁl¹Ã¢ ¢Ð}›ÇBÿ­ Çí Å$ÈÃ<ÝÄÅ�Æ�Æ�ÆÆÅÆìêü¤Ç>ü†Å;8 Set value for the `SO_REUSEADDR` option on this socket.ÁÆÅ�üÎÅHE This indicates that further calls to `bind` may allow reuse of localÁü›ÆKH addresses. For IPv4 sockets this means that a socket may bind even whenÁüëÆ41 there's a socket already listening on this port.ÁŒ«Ç£ £Ð}òøBÿ­ ½Ç­ Ç$¾ÇA,ÄÇü‘Ë3ü´É;8 Get the value of the `SO_SNDBUF` option on this socket.ÁôÉ�üüÉIF For more information about this option, see [`set_send_buffer_size`].ÁÊÊ�üÒÊ:7 [`set_send_buffer_size`]: Socket::set_send_buffer_sizeÁ„˜Ë¤ ¤Ð}žúBÿ­ ©Ë­ È$ªË4½ÌÈ�É�É�ÉÉÈÉ®™ü�ÎAüèÌ85 Set value for the `SO_SNDBUF` option on this socket.Á¥Í�ü­ÍJG Changes the size of the operating system's send buffer associated withÁ|üÍ the socket.Á¤—Î¥ ¥Ð}òøBÿ­ ¬Î­ Ê$­Îß$³ÎüÐÑ;üŸÐ:7 Get value for the `SO_SNDTIMEO` option on this socket.ÁÞÐ�üæÐIF If the returned timeout is `None`, then `write` and `send` calls willÁ¼´Ñ•œl×Ѧ ¦Ð}ÍøBÿ­ åÑ­ Ë$æÑüŠÔMüäÒ:7 Set value for the `SO_SNDTIMEO` option on this socket.Á£Ó�ü«ÓDA If `timeout` is `None`, then `write` and `send` calls will blockÁŒôÓ®žŒ‘Ô§ §Ð}ŠÈòøBÿ­ £Ô­ Ì$¤ÔÁÌDªÔü¼Õ=\ÅÕUÚÈŠÈBÿ Í­#düöÖ?\ÿÖUŠÈÚÈBÿ ÎÁÌÿe\âÛüªÙLI Socket options for IPv4 sockets, get/set using `IPPROTO_IP` or `SOL_IP`.Á÷Ù�üûÙEˆäüÁÚ>; * Linux: Áü€Ûa^ * Windows: ÁÐ}ÐÒÓÕÖרÙÚÛÜÞßàáãäæçéêëíîðüÊß4üôÛ<9 Get the value of the `IP_HDRINCL` option on this socket.ÁµÜ�ü½ÜKH For more information about this option, see [`set_header_included_v4`].Á�Ý�ü•Ý>; [`set_header_included_v4`]: Socket::set_header_included_v4ÁÓª|ëÝÅÇÚœ™ÞʤºÞÅøœÜÞÅ€”ýÞÅäÚ¬�ßü‹Þ±ü‡Þ¶üáÝâüØÝí”Ñߨ ¨Ð}›ÇBÿÏ äßÏ Ð$åßTøàÐ�Ñ�Ñ�ÑÑÐÑìêüÄèFü§á<9 Set the value of the `IP_HDRINCL` option on this socket.Áèá�üðáIF If enabled, the user supplies an IP header in front of the user data.Áü¾âKH Valid only for [`SOCK_RAW`] sockets; see [raw(7)] for more information.ÁüŽãJG When this flag is enabled, the values set by `IP_OPTIONS`, [`IP_TTL`],ÁüÝã and [`IP_TOS`] are ignored.Á�ä�܉ä [`SOCK_RAW`]: Type::RAWÁü©ä>; [raw(7)]: https://man7.org/linux/man-pages/man7/raw.7.htmlÁüìä" [`IP_TTL`]: Socket::set_ttl_v4Áü“å" [`IP_TOS`]: Socket::set_tos_v4ÁÓª|åæÅÇÚœ“珤´çÅøœÖçÅ€”÷çÅäÚ¬—èü…ç±ü�ç¶üÛæâüÒæí´Ëè© ©Ð}òøBÿÏ âèÏ Ò$ãèincludedÁDéèü”í3üÝê@= Get the value of the `IP_TRANSPARENT` option on this socket.Á¢ë�üªëJG For more information about this option, see [`set_ip_transparent_v4`].Áùë�ü�ì<9 [`set_ip_transparent_v4`]: Socket::set_ip_transparent_v4ÁÓª|ÌìÅò œáìÅŒ ¬öìüàì,üËìBüÂìMŒ›íª ªÐ}›ÇBÿÏ ­íÏ Ó$®ílÆîÓ�Ô�Ô�ÔÔÓÔìêü¤öHüûî@= Set the value of the `IP_TRANSPARENT` option on this socket.ÁÀï�üÈï<9 Setting this boolean option enables transparent proxyingÁü‰ð:7 on this socket. This socket option allows the callingÁüÈð<9 application to bind to a nonlocal IP address and operateÁü‰ñ=: both as a client and a server with the foreign address asÁüËñ<9 the local endpoint. NOTE: this requires that routing beÁüŒò=: set up in a way that packets going to the foreign addressÁüÎò74 are routed through the TProxy box (i.e., the systemÁüŠó;8 hosting the application that employs the IP_TRANSPARENTÁüÊó96 socket option). Enabling this socket option requiresÁüˆô:7 superuser privileges (the `CAP_NET_ADMIN` capability).ÁÇô�üÏô;8 TProxy redirection with the iptables TPROXY target alsoÁü�õ>; requires that this option be set on the redirected socket.ÁÓª|ÜõÅò œñõÅŒ ¬†öüðõ,üÛõBüÒõM¬«ö« «Ð}òøBÿÏ ÁöÏ Õ$Âöì\Èöü’ü]üÇøKH Join a multicast group using `IP_ADD_MEMBERSHIP` option on this socket.Á—ù�üŸùJG This function specifies a new multicast group for this socket to join.ÁüîùIF The address must be a valid multicast address, and `interface` is theÁü¼úHE address of the local interface with which the system should join theÁü‰ûJG multicast group. If it's [`Ipv4Addr::UNSPECIFIED`] (`INADDR_ANY`) thenÁüØû52 an appropriate interface is chosen by the system.ÁŒ™ü¬­® ¬Ð} ­�¾ ®�¾òøBÿÏ «üÏ Ö$¬üŠöL²ü öLÈüüÙ€^üóþMJ Leave a multicast group using `IP_DROP_MEMBERSHIP` option on this socket.ÁÅÿ�üÍÿFC For more information about this option, see [`join_multicast_v4`].Á˜€�ü €41 [`join_multicast_v4`]: Socket::join_multicast_v4Á”à€¯°± ¯Ð} °�¾ ±�¾òøBÿÏ ó€Ï ×$ô€ŠöLú€ öL��ü¬Š�üŸ„K„Ëï„�ü÷„JçËüÆ…LI The address must be a valid multicast address, and `interface` specifiesÁü—†GD the local interface with which the system should join the multicastÁüã†+( group. See [`InterfaceIndexOrAddress`].Á ÅÜŒª‡Åú œÅ‡ÅÞ ¬â‡Å„ ¤�ˆÅ— ¬ŸˆÅÇÚœ¾ˆÅÓ ¬ÛˆÅ¥ŒúˆÅ¹¤•‰ÅË”³‰Å« ¤Ï‰Å€”í‰ÅäÚ¬‰Šü ‡„üœ‡‰ü“‡”œ³Š²³´ ²Ð} ³�¾ ´ã|òøBÿÏ ЊÏ Ø$ÑŠŠöLߊ öLýŠüÅ’ŽüÀ�MˆÐ’Ž�üšŽHE For more information about this option, see [`join_multicast_v4_n`].ÁçŽ�üïŽ85 [`join_multicast_v4_n`]: Socket::join_multicast_v4_nÁ ÅÜŒÃ�Åú œÞ�ÅÞ ¬û�Å„ ¤š�Å— ¬¸�ÅÇÚœ×�ÅÓ ¬ô�Å¥Œ“‘ʤ®‘Å˔̑ū ¤è‘Å€”†’ÅäÚ¬¢’ü¹�„üµ�‰ü¬�”¤Ì’µ¶· µÐ} ¶�¾ ·ã|òøBÿÏ ê’Ï Ù$ë’ŠöLù’ öL—“üÞœ�üÛ•XU Join a multicast SSM channel using `IP_ADD_SOURCE_MEMBERSHIP` option on this socket.Á¸–�üÀ–LI This function specifies a new multicast channel for this socket to join.Áü‘—]Z The group must be a valid SSM group address, the source must be the address of the senderÁüó—_\ and `interface` is the address of the local interface with which the system should join theÁüטJãÍü¦™5¸Î Å  ¼÷™Åú œ˜šÅ±”µšÅ„ ¤ÑšÅ— ¬ïšÅÇÚœŽ›ÅÊ ¬«›Å¥ŒÊ›Å¹¤å›ÅË”ƒœÅ€”ŸœÅäÚ¬»œüí™éüé™îüà™ù\圸¹º» ¸Ð} ¹�¾ º�¾ »�¾òøBÿÏ úœÏ Ú$ûœsourceÁ4‰�groupÁ,¤� öL¾�ü륎ü’¡TQ Leave a multicast group using `IP_DROP_SOURCE_MEMBERSHIP` option on this socket.Áë¡�üó¡@= For more information about this option, see [`join_ssm_v4`].Á¸¢�üÀ¢(% [`join_ssm_v4`]: Socket::join_ssm_v4Á Å  ¼„£Åú œ¥£Å±”£Å„ ¤Þ£Å— ¬ü£ÅÇÚœ›¤ÅÊ ¬¸¤Å¥Œ×¤Å¹¤ò¤ÅË”�¥Å€”¬¥Åäڬȥüú¢éüö¢îüí¢ùdò¥¼½¾¿ ¼Ð} ½�¾ ¾�¾ ¿�¾òøBÿÏ ˆ¦Ï Û$‰¦þá4—¦�â,²¦ öL̦ü¼¬2ü¡ªC@ Get the value of the `IP_MULTICAST_ALL` option for this socket.Áéª�üñªIF For more information about this option, see [`set_multicast_all_v4`].Á¿«�üÇ«:7 [`set_multicast_all_v4`]: Socket::set_multicast_all_v4ÁÓª|�¬Åò œ¡¬ü�¬&ü†¬1„ìÀ ÀÐ}›ÇBÿÏ Ô¬Ï Ü$Õ¬,ï­Ü�Ý�Ý�ÝÝÜÝìêü÷²?ü”®C@ Set the value of the `IP_MULTICAST_ALL` option for this socket.ÁÜ®�üä®<9 This option can be used to modify the delivery policy ofÁü¥¯2/ multicast messages. The argument is a booleanÁüܯ@= (defaults to true). If set to true, the socket will receiveÁü¡°63 messages from all the groups that have been joinedÁüܰ=: globally on the whole system. Otherwise, it will deliverÁüž±;8 messages only from the groups that have been explicitlyÁüÞ±>; joined (for example via the `IP_ADD_MEMBERSHIP` option) onÁÜ¡² this particular socket.ÁÓª|˲Åò œÜ²üʲ&üÁ²1¤þ²Á ÁÐ}òøBÿÏ “³Ï Þ$”³ªš³ü�·5ü‹µB? Get the value of the `IP_MULTICAST_IF` option for this socket.ÁÒµ�üÚµHE For more information about this option, see [`set_multicast_if_v4`].Á§¶�ü¯¶85 [`set_multicast_if_v4`]: Socket::set_multicast_if_v4ÁÅ€”ö¶¤õ¶üì¶|—·Â ÂÐ}ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw�¾¿¢BÿÏ §·Ï ß$¨·ü‹ºIüÒ¸B? Set the value of the `IP_MULTICAST_IF` option for this socket.Á™¹�ü¡¹A> Specifies the interface to use for routing multicast packets.ÁÅ€”ñ¹¤ð¹ü繜’ºÃÄ ÃÐ} Ä�¾òøBÿÏ ¦ºÏ à$§º öL­ºüÁ¾3üؼDA Get the value of the `IP_MULTICAST_LOOP` option for this socket.Á¡½�ü©½JG For more information about this option, see [`set_multicast_loop_v4`].Áø½�ü€¾<9 [`set_multicast_loop_v4`]: Socket::set_multicast_loop_v4ÁŒÈ¾Å ÅÐ}›ÇBÿÏ Ú¾Ï á$Û¾Lõ¿á�â�â�ââáâìêü‚ÂDü¢ÀDA Set the value of the `IP_MULTICAST_LOOP` option for this socket.ÁëÀ�üóÀJG If enabled, multicast packets will be looped back to the local socket.ÁüÂÁ;8 Note that this may not have any affect on IPv6 sockets.Á¬‰ÂÆ ÆÐ}òøBÿÏ ŸÂÏ ã$ Âloop_v4Á<¦Âü„Æ1üŸÄC@ Get the value of the `IP_MULTICAST_TTL` option for this socket.ÁçÄ�üïÄIF For more information about this option, see [`set_multicast_ttl_v4`].Á½Å�üÅÅ:7 [`set_multicast_ttl_v4`]: Socket::set_multicast_ttl_v4Á„‹ÆÇ ÇÐ}§‘BÿÏ œÆÏ ä$�Æ,µÇä�å�å�ååäåó’üÑÊ>üÜÇC@ Set the value of the `IP_MULTICAST_TTL` option for this socket.Á¤È�ü¬ÈFC Indicates the time-to-live value of outgoing multicast packets forÁü÷ÈJG this socket. The default value is 1 which means that multicast packetsÁüÆÉ>; don't leave the local network unless explicitly requested.Á‰Ê�ü‘Ê;Èû¤ØÊÈ ÈÐ}òøBÿÏ íÊÏ æ$îÊttlÁôÊü Î'üãÌ96 Get the value of the `IP_TTL` option for this socket.Á¡Í�ü©Í?< For more information about this option, see [`set_ttl_v4`].ÁíÍ�üõÍ&# [`set_ttl_v4`]: Socket::set_ttl_v4Á4§ÎÉ ÉÐ}§‘BÿÏ ®ÎÏ ç$¯Î,¬Ïç�è�è�èèçèó’ü„Ñ4üÓÏ96 Set the value of the `IP_TTL` option for this socket.Á‘Ð�ü™ÐLI This value sets the time-to-live field that is used in every packet sentÁ¬êÐ from this socket.ÁT‹ÑÊ ÊÐ}òøBÿÏ –ÑÏ é$—ÑÛƒ�Ñü±Ö4üŸÒ96 Set the value of the `IP_TOS` option for this socket.ÁÝÒ�üåÒJG This value sets the type-of-service field that is used in every packetÁÔ´Ó sent from this socket.ÁÓÓ�üÛÓ\Y NOTE: Áü¼Ô@= documents that not all versions of windows support `IP_TOS`.ÁÅÊ ¬˜ÕÅÇÚœ·ÕÅÓ ¬ÔÕÅú œóÕÅ€”�ÖüŽÕ›üŠÕ ü�Õ«T¸ÖË ËÐ}òøBÿÏ ÃÖÏ ê$ÄÖtosÁÊÖüçÛ'üÌ×96 Get the value of the `IP_TOS` option for this socket.ÁŠØ�ü’Ø?< For more information about this option, see [`set_tos_v4`].ÁÖØ�üÞØ\…‹ü¿Ù@ì‹„Ú�üŒÚ&# [`set_tos_v4`]: Socket::set_tos_v4ÁÅÊ ¬ÎÚÅÇÚœíÚÅÓ ¬ŠÛÅú œ©ÛÅ€”ÆÛüÄÚ›üÀÚ ü·Ú«4îÛÌ ÌÐ}§‘BÿÏ õÛÏ ë$öÛ,óÜë�ì�ì�ììëìó’ü¸ã?üšÝ=: Set the value of the `IP_RECVTOS` option for this socket.ÁÜÝ�üäÝ=: If enabled, the `IP_TOS` ancillary message is passed withÁü¦Þ<9 incoming packets. It contains a byte which specifies theÁüçÞ:7 Type of Service/Precedence field of the packet header.ÁÅÜŒ½ßÅ  ¼ØßÅÊ ¬ùßű”˜àÅÞ ¬´àÅ„ ¤ÓàÅ— ¬ñàÅÇÚœ�áÅÓ ¬­áÅú œÌáÅ¥ŒéᏤ„âÅøœ¢âÅË”¿âÅ« ¤ÛâÅ€”ùâÅäÚ¬•ãü³ßýü¯ß‚ü¦ß�|¿ãÍ ÍÐ}òøBÿÏ ÏãÏ í$Ðãrecv_tosÁDÖãü¬ë-üÊå=: Get the value of the `IP_RECVTOS` option for this socket.ÁŒæ�ü”æDA For more information about this option, see [`set_recv_tos_v4`].ÁÝæ�üåæ0- [`set_recv_tos_v4`]: Socket::set_recv_tos_v4ÁÅÜŒ±çÅ  ¼ÌçÅÊ ¬íçű”ŒèÅÞ ¬¨èÅ„ ¤ÇèÅ— ¬åèÅÇÚœ„éÅÓ ¬¡éÅú œÀéÅ¥ŒÝ鏤øéÅøœ–êÅË”³êÅ« ¤ÏêÅ€”íêÅäÚ¬‰ëü§çýü£ç‚üšç�\³ëÎ ÎÐ}›ÇBÿÏ ¿ëÏ î$ÀëTÓìî�ï�ï�ïïîïìêü™ï5ü�íB? Get the value for the `SO_ORIGINAL_DST` option on this socket.ÁÓª|ÛíÅŒ ¬…îÅÊ ¬¨îÅò œËîÅɬìîü÷í•üÑíÁüÈíÌ| ïÏ ÏÐ}†°BÿÏ °ïÏ ð$±ï\Æòü†ðPM Socket options for IPv6 sockets, get/set using `IPPROTO_IPV6` or `SOL_IPV6`.Á×ð�üÛðEˆäü¡ñ@= * Linux: Áüâñc` * Windows: ÁÐ}òôõ÷øùúüýÿ€‚ƒ…†ˆ‰‹ŒŽ�‘’ü»÷4üØò<æ³™ó�ü¡óKH For more information about this option, see [`set_header_included_v6`].Áñó�üùó>; [`set_header_included_v6`]: Socket::set_header_included_v6ÁÓª|Ïô ÅÇÚœýôʤžõÅøœÀõÅ— ¬áõŶ ¬„öÅ  ¼§öÅ„ ¤ÌöÅ€”îöÅäÚ¬Ž÷üïô¾üëôÃüÅôïü¼ôú”Â÷Ð ÐÐ}›ÇBÿñ Õ÷ñ ò$Ö÷Tëøò�ó�ó�óóòóìêüÒ€Füšù<�¸Ûù�üãùIá¸ü±úKµ¹ü�ûJG When this flag is enabled, the values set by `IP_OPTIONS` are ignored.ÁÐû�ÜØû–»üøû>¼»Óª|æý ÅÇÚœ”þʤµþÅøœ×þÅ— ¬øþŶ ¬›ÿÅ  ¼¾ÿÅ„ ¤ãÿÅ€”…€ÅäÚ¬¥€ü†þ¾ü‚þÃüÜýïüÓýú´Ù€Ñ ÑÐ}òøBÿñ ð€ñ ô$ñ€ž¾D÷€ü¦†3üíƒB? Get the value of the `IPV6_TRANSPARENT` option on this socket.Á´„�ü¼„JG For more information about this option, see [`set_ip_transparent_v6`].Á‹…�ü“…<9 [`set_ip_transparent_v6`]: Socket::set_ip_transparent_v6ÁÓª|Þ…Åò œó…ÅŒ ¬ˆ†üò…,üÝ…BüÔ…MŒ­†Ò ÒÐ}›ÇBÿñ ¿†ñ õ$À†l܇õ�ö�ö�ööõöìêü¾�Hü‘ˆB? Set the value of the `IPV6_TRANSPARENT` option on this socket.Á؈�üàˆ<‹Ãü¡‰:ÒÃüà‰<—Äü¡Š=ÞÄüãŠ<¦Åü¤‹=íÅüæ‹7µÆü¢Œ=: hosting the application that employs the IPV6_TRANSPARENTÁüäŒ9½Çü¢�:�Èá��üé�;ÓÈü©Ž>™ÉÓª|öŽÅò œ‹�ÅŒ ¬ �üŠ�,üõŽBüìŽM¬Å�Ó ÓÐ}òøBÿñ Û�ñ ÷$Ü�ì\â�ü¨•Wüå‘MJ Join a multicast group using `IPV6_ADD_MEMBERSHIP` option on this socket.Á·’�ü¿’30 Some OSs use `IPV6_JOIN_GROUP` for this option.Á÷’�üÿ’JçËüΓI¼Ìüœ”JG index of the interface to join/leave (or 0 to indicate any interface).ÁÅ¥Œù”ÅøœŒ•üø”(üô”-üë”8Œ¯•ÔÕ ÔÐ} ÕòíòøBÿñ Á•ñ ø$•ŠöLÈ• öLÞ•ü�œXü§™OL Leave a multicast group using `IPV6_DROP_MEMBERSHIP` option on this socket.Áû™�üƒš41 Some OSs use `IPV6_LEAVE_GROUP` for this option.Á¼š�üÄšFC For more information about this option, see [`join_multicast_v6`].Á�›�ü—›41 [`join_multicast_v6`]: Socket::join_multicast_v6ÁÅ¥ŒÞ›Åøœñ›üÝ›(üÙ›-üЛ8””œÖ× ÖÐ} ×òíòøBÿñ §œñ ù$¨œŠöL®œ öLÄœüœ¢2üŽ EB Get the value of the `IPV6_MULTICAST_HOPS` option for this socketÁØ �üà JG For more information about this option, see [`set_multicast_hops_v6`].Á¯¡�ü·¡<9 [`set_multicast_hops_v6`]: Socket::set_multicast_hops_v6ÁÅ€”‚¢¤�¢üø¡Œ£¢Ø ØÐ}§‘Bÿñ µ¢ñ ú$¶¢4Ó£ú�û�û�ûûúûó’üѦ@üü£EB Set the value of the `IPV6_MULTICAST_HOPS` option for this socketÁƤ�üΤHE Indicates the number of "routers" multicast packets will transit forÁü›¥J×�üê¥>¬‚Å€”·¦¤¶¦ü­¦¬Ø¦Ù ÙÐ}òøBÿñ î¦ñ ü$ï¦hopsÁ$õ¦üˆ«2üë¨EB Get the value of the `IPV6_MULTICAST_ALL` option for this socket.Áµ©�ü½©IF For more information about this option, see [`set_multicast_all_v6`].Á‹ª�ü“ª:7 [`set_multicast_all_v6`]: Socket::set_multicast_all_v6ÁÓª|ܪÅò œíªüÛª&üÒª1„�«Ú ÚÐ}›ÇBÿñ  «ñ ý$¡«,¿¬ý�þ�þ�þþýþìêü˱?üä¬EB Set the value of the `IPV6_MULTICAST_ALL` option for this socket.Á®­�ü¶­<Ìëü÷­2“ìü®®@Ðìüó®6›íü®¯=Üíüð¯;¤îü°°@= joined (for example via the `IPV6_ADD_MEMBERSHIP` option) onÁÜõ°²ïÓª|Ÿ±Åò œ°±üž±&ü•±1¤Ò±Û ÛÐ}òøBÿñ ç±ñ ÿ$豪î±üêµ0üã³DA Get the value of the `IPV6_MULTICAST_IF` option for this socket.Á¬´�ü´´HE For more information about this option, see [`set_multicast_if_v6`].Á�µ�ü‰µ85 [`set_multicast_if_v6`]: Socket::set_multicast_if_v6ÁÅ€”е¤ÏµüƵ|ñµÜ ÜÐ}§‘Bÿñ �¶ñ €$‚¶\�·€�������€�ó’ü€ºCüзDA Set the value of the `IPV6_MULTICAST_IF` option for this socket.Á™¸�ü¡¸HE Specifies the interface to use for routing multicast packets. UnlikeÁüî¸KH ipv4, this is generally required in ipv6 contexts where network routingÁ̾¹ prefixes may overlap.ÁÅ€”湤å¹üܹœ‡ºÝ ÝÐ}òøBÿñ ›ºñ ‚$œº öL¢ºü‹¾3ü ¼FC Get the value of the `IPV6_MULTICAST_LOOP` option for this socket.Áë¼�üó¼JG For more information about this option, see [`set_multicast_loop_v6`].Á½�üʽ<9 [`set_multicast_loop_v6`]: Socket::set_multicast_loop_v6ÁŒ’¾Þ ÞÐ}›ÇBÿñ ¤¾ñ ƒ$¥¾Lÿƒ�„�„�„„ƒ„ìêüÔÁDüð¿FC Set the value of the `IPV6_MULTICAST_LOOP` option for this socket.Á»À�üÃÀLI Controls whether this socket sees the multicast packets it sends itself.Áü”Á;8 Note that this may not have any affect on IPv4 sockets.Á¬ÛÁß ßÐ}òøBÿñ ñÁñ …$òÁloop_v6Á<øÁüÿÄ0üõÃDA Get the value of the `IPV6_UNICAST_HOPS` option for this socket.Á¾Ä�üÆÄ41 Specifies the hop limit for ipv6 unicast packetsÁ|†Åà àÐ}§‘Bÿñ –Åñ †$—Å4²Æ†�‡�‡�‡‡†‡ó’üåÇ>üÛÆDA Set the value for the `IPV6_UNICAST_HOPS` option on this socket.Á¤Ç�ü¬Ç4ýÓœìÇá áÐ}òøBÿñ €Èñ ˆ$�Èò¾$‡ÈüÀË)üûÉ>; Get the value of the `IPV6_V6ONLY` option for this socket.Á¾Ê�üÆÊ@= For more information about this option, see [`set_only_v6`].Á‹Ë�ü“Ë(% [`set_only_v6`]: Socket::set_only_v6Á<ÇËâ âÐ}›ÇBÿñ ÏËñ ‰$ÐËLå̉�Š�Š�ŠŠ‰Šìêü¹Ð:ü’Í>; Set the value for the `IPV6_V6ONLY` option on this socket.ÁÕÍ�üÝÍIF If this is set to `true` then the socket is restricted to sending andÁü«ÎLI receiving IPv6 packets only. In this case two IPv4 and IPv6 applicationsÁüüÎ,) can bind the same port at the same time.Á­Ï�üµÏEB If this is set to `false` then the socket can be used to send andÁüÿÏ52 receive packets from an IPv4-mapped IPv6 address.Á\ÀÐã ãÐ}òøBÿñ ÌÐñ ‹$ÍÐÇ/<ÓÐüä×0üÈÒB? Get the value of the `IPV6_RECVTCLASS` option for this socket.Á�Ó�ü—ÓGD For more information about this option, see [`set_recv_tclass_v6`].ÁãÓ�üëÓ63 [`set_recv_tclass_v6`]: Socket::set_recv_tclass_v6ÁÅ  ¼½ÔÅÊ ¬ÞÔÅÞ ¬ýÔÅ„ ¤œÕÅ— ¬ºÕÅÇÚœÙÕÅÓ ¬öÕÅú œ•Öű”²ÖʤÎÖÅøœìÖÅË”‰×Å€”¥×ÅäÚ¬Á×ü³Ô©ü¯Ô®ü¦Ô¹të×ä äÐ}›ÇBÿñ ú×ñ Œ$û×l•ÙŒ�������Œ�ìêü�ßEüÉÙB? Set the value of the `IPV6_RECVTCLASS` option for this socket.Á�Ú�ü˜ÚKH If enabled, the `IPV6_TCLASS` ancillary message is passed with incomingÁüèÚJG packets. It contains a byte which specifies the traffic class field ofÁ´·Û the packet header.ÁÅ  ¼éÛÅÊ ¬ŠÜÅÞ ¬©ÜÅ„ ¤ÈÜÅ— ¬æÜÅÇÚœ…ÝÅÓ ¬¢ÝÅú œÁÝű”ÞÝŹ¤úÝÅøœ˜ÞÅË”µÞÅ€”ÑÞÅäÚ¬íÞüßÛ©üÛÛ®üÒÛ¹”—ßå åÐ}òøBÿñ ªßñ Ž$«ß recv_tclassÁ\±ßüÔç2ü²áDA Get the value of the `IPV6_RECVHOPLIMIT` option for this socket.Áûá�üƒâIF For more information about this option, see [`set_recv_hoplimit_v6`].ÁÑâ�üÙâ:7 [`set_recv_hoplimit_v6`]: Socket::set_recv_hoplimit_v6ÁÓª|«ãÉ<ÙãÅ  ¼îãÅÊ ¬“äÅÞ ¬¶äÅ„ ¤ÙäÅ— ¬ûäÅÇÚœžåÅÓ ¬¿åÅú œâåű”ƒæÅ¹¤£æÅË”ÅæÅ« ¤åæÅ€”‡çÅäÚ¬§çüËãûüÇã€ü¡ã¬ü˜ã·„Ûçæ æÐ}›ÇBÿñ ìçñ �$íç|‰é����������ìêüðïIüÀéDA Set the value of the `IPV6_RECVHOPLIMIT` option for this socket.Á‰ê�ü‘êEB The received hop limit is returned as ancillary data by recvmsg()ÁüÛêDA only if the application has enabled the IPV6_RECVHOPLIMIT socketÁ\¤ë option:ÁÓª|ÇëÉ<õëÅ  ¼ŠìÅÊ ¬¯ìÅÞ ¬ÒìÅ„ ¤õìÅ— ¬—íÅÇÚœºíÅÓ ¬ÛíÅú œþíű”Ÿîʤ¿îÅË”áîÅ« ¤�ïÅ€”£ïÅäÚ¬Ãïüçëûüãë€ü½ë¬ü´ë·¤÷ïç çÐ}òøBÿñ Œðñ ‘$�ð recv_hoplimitÁl“ðüåó5üšòGD Get the value for the `IP6T_SO_ORIGINAL_DST` option on this socket.ÁÓª|ùòÅŒ ¬–óÅò œ­óÅɬÂóü•óCüïòoüæòz|ìóè èÐ}†°Bÿñ üóñ ’$ýó\€÷üÒô@= Socket options for TCP sockets, get/set using `IPPROTO_TCP`.Á“õ�ü—õEˆäüÝõ?< * Linux: Áü�öb_ * Windows: ÁÐ}”•—™šœü®ú8ü’÷>; Get the value of the `TCP_KEEPIDLE` option on this socket.ÁÕ÷�üÝ÷^[ This returns the value of `TCP_KEEPALIVE` on macOS and iOS and `TCP_KEEPIDLE` on all otherÁüÀø%" supported Unix operating systems.ÁÓª|ýøÉ<«ùÅú œÀùÅ— ¬áùÅË”„úü�ùƒü™ùˆüóø´üêø¿”µúé éÐ}ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwÑÅ¿¢Bÿ“ Èú“ ”$Éúüƒ‚<ü£û?< Get the value of the `TCP_KEEPINTVL` option on this socket.Áçû�üïûFC For more information about this option, see [`set_tcp_keepalive`].Áºü�üÂü41 [`set_tcp_keepalive`]: Socket::set_tcp_keepaliveÁÓª|ŽýÅŒ ¬¸ýÅ  ¼ÛýÅ÷Ä€þŶ ¬¦þÅÊ ¬ÉþÅÞ ¬ìþÅå Œ�ÿÅô ´®ÿÅò œÒÿň œóÿÅ„ ¤”€Å™ ”¶€Å© ¬Ö€Å« ¤ù€Åøœ›�Å€”À�¸‘ŒØ�œ×�ü¿�,üªýÌü„ýøüûüƒ´Š‚ê êÐ}³ûBÿ“ ¡‚“ •$¢‚4½ƒ•�–�–�––•–ïêÑÅUÿüüŠ6üûƒ=: Get the value of the `TCP_KEEPCNT` option on this socket.Á½„�üÅ„F”ü�…�ü˜…4òüÓª|ä…ÅŒ ¬Ž†Å  ¼±†Å÷ÄֆŶ ¬ü†ÅÊ ¬Ÿ‡ÅÞ ¬Â‡Åå Œå‡Åô ´„ˆÅò œ¨ˆÅˆ œÉˆÅ„ ¤êˆÅ™ ”Œ‰Å© ¬¬‰Å« ¤Ï‰Åɬñ‰Åøœ”ŠÅ€”¹Š¸‘ŒÑŠœÐŠü¸Š,ü€†ïüÚ…›üÑ…¦¬ƒ‹ë ëÐ}§‘Bÿ“ ™‹“ —$š‹L®Œ—�˜�˜�˜˜—˜ó’üˆ™HüÝŒDA Set parameters configuring TCP keepalive probes for this socket.Á¦��ü®�DA The supported parameters depend on the operating system, and areÁü÷�KH configured using the [`TcpKeepalive`] struct. At a minimum, all systemsÁüÇŽIF support configuring the [keepalive time]: the time after which the OSÁü•�@= will start sending keepalive messages on an idle connection.ÁÚ��üâ�-* [keepalive time]: TcpKeepalive::with_timeÁ”��\œ�¼Ê¬��ü´�JG * This will enable `SO_KEEPALIVE` on this socket, if it is not alreadyÁtƒ‘ enabled.Áü–‘HE * On some platforms, such as Windows, any keepalive parameters *not*Áüã‘LI configured by the `TcpKeepalive` struct passed to this function may beÁü´’LI overwritten with their default values. Therefore, this function shouldÁü…“JG either only be called once per socket, or the same parameters shouldÁüÔ“(% be passed every time it is called.Á�”�t‰”çÏœ”�<¤”£Õä°” use std::time::Duration;ÁÑ”�üÙ”63 use socket2::{Socket, TcpKeepalive, Domain, Type};Á”•�üœ•(¡ÐüÉ•@ЇüŽ–'$ let keepalive = TcpKeepalive::new()Áüº–+( .with_time(Duration::from_secs(4));Áüê–KH // Depending on the target operating system, we may also be able toÁüº—FC // configure the keepalive probe interval and/or the number ofÁü…˜  // retries here as well.Áª˜�ü²˜*' socket.set_tcp_keepalive(&keepalive)?;ÁtᘌÕ<ô˜£Õ€™�Œ�™ìí ìÐ} íÆ‹òøBÿ“ ¡™“ ™$¢™paramsÁ4¨™ü‡œ-ü·š=: Get the value of the `TCP_NODELAY` option on this socket.Áùš�ü�›DA For more information about this option, see [`set_tcp_nodelay`].ÁÊ›�üÒ›0- [`set_tcp_nodelay`]: Socket::set_tcp_nodelayÁ\Žœî îÐ}›ÇBÿ“ šœ“ š$›œL¯�š�›�›�››š›ìêüó >üÜ�=: Set the value of the `TCP_NODELAY` option on this socket.Ážž�ü¦žEB If set, this option disables the Nagle algorithm. This means thatÁüðžIF segments are always sent as soon as possible, even if there is only aÁü¾ŸIF small amount of data. When not set, data is buffered until there is aÁüŒ KH sufficient amount to send out, thereby avoiding the frequent sending ofÁ”Ü  small packets.Á|ú ï ïÐ}òøBÿ“ Š¡“ œ$‹¡nodelayÁ<‘¡¤ý¥Ð}žŸè鞟ü˜¦7$›¦ðñ ðÐ} ñ¸ºžúBÿ�  ¦� ž$¥¦�Á«¦ü¦©MÅÇڜߨŀ”ô¨ÅäÚ¬ˆ©üÞ¨@üÚ¨EüѨPl©©òóô òÐ} ó ü7ü7ý7—¸ÿ7óö7 ŽEøD²�<ôžúBÿ� ·©� Ÿ$¼©¸û$©D°­Ÿ� � �  Ÿ ‹üUÿäÅ­Ì2¢¢�~£¤è飤ʭüè­7$ë­õö õ�~ ö¸ºžúBÿ¡ ð­¡ £Ì2$õ­�Áû­üš°MÅÇڜӯŀ”è¯ÅäÚ¬ü¯üÒ¯@üίEüůPl�°÷øù ÷�~ ø ü7ü7ý7—¸ÿ7óö7 ŽEøD²�<ùžúBÿ¡ «°¡ ¤Ì2$°°¸û$¶°D£²¤�¥�¥�¥¥¤¥ãŸ¬¸²Ð}§¨©‚ ƒ † ¨©§üÔ²4,ײúû úÐ} û¸ºžúBÿ¦ ݲ¦ §$â²�Áè²ü‚´GÅÇÚœ»³Å€”гÅäÚ¬ä³üº³@ü¶³Eü­³Pt…´üýþ üÐ} ý Œ‰Œ‰�‰ùÃ�‰óö7 Å0ײ÷([OþžúBÿ¦ ”´¦ ¨$™´¸û$Ÿ´üø´%,û´ÿ ÿÐ}òøBÿ¦ �µ¦ ©$†µ층Ì2««�~¬­®‚ ƒ † ¬­®½µüܵ4,ßµ€ �  € �~ � ¸ºžúBÿª 嵪 ¬Ì2$êµ�ÁðµüŠ·GÅÇڜöŀ”ضÅäÚ¬ì¶ü¶@ü¾¶Eüµ¶Pt�·‚ ƒ „  ‚ �~ ƒ Œ‰Œ‰�‰ùÃ�‰óö7 Å0ײ÷([O„ žúBÿª œ·ª ­Ì2$¡·¸û$§·ü€¸%,ƒ¸…  … �~òøBÿª ‰¸ª ®Ì2$ޏÔÀ¸Ð}° g°üá¸8丆 ‡ ˆ  † Ð} ‡ €g€gŠ‚gê ûcƒg�ÁûcØ«q¢1È¡ˆ ãÀBÿ¯ 踯 °$鸜 ï¸\ƒ5<‡5»ñ ¾,±²ƒÐ\„!±³ƒÐ…!±³ÜÑd:ï­±´s,VÜ"±µAsFdÁ$²„$±·AsRawFdÁ<¸¢#±¸¤¹LÁ¤#±¹ó4«y±ºËDËÄ»´0•|L†\¤Ì$gÅ€”q¸‘Œ‰œˆüp,üf7ü]B«Ì9Å€8¸‘7531/ؾÌhÅ€g¸‘fdb`^ë×Ì—Å€–¸‘•“‘��l¤ö´Öü´PM A reference to a [`Socket`] that can be used to configure socket types otherÁü…" than the `Socket` type itself.Á¨�ü¬NK This allows for example a [`TcpStream`], found in the standard library, toÁüûOL be configured using all the additional methods found in the [`Socket`] API.ÁË�üÏJG `SockRef` can be created from any socket type that implements [`AsFd`]ÁüšGD (Unix) or [`AsSocket`] (Windows) using the [`From`] implementation.Áâ�üæ&ÑÉüÖHE [`AsFd`]: https://doc.rust-lang.org/stable/std/os/fd/trait.AsFd.htmlÁüŸXU [`AsSocket`]: https://doc.rust-lang.org/stable/std/os/windows/io/trait.AsSocket.htmlÁø�tüçÏ‹�ü�IF Below is an example of converting a [`TcpStream`] into a [`SockRef`].ÁÙ�<Ý£Õüå*' use std::net::{TcpStream, SocketAddr};Á� �Ì”  use socket2::SockRef;Á® �ü² ;8 # fn main() -> Result<(), Box> {Áüî 41 // Create `TcpStream` from the standard library.Áü£ 85 let address: SocketAddr = "127.0.0.1:1234".parse()?;ÁüÜ ?< # let b1 = std::sync::Arc::new(std::sync::Barrier::new(2));ÁÔœ  # let b2 = b1.clone();Áü· /, # let handle = std::thread::spawn(move || {Áüç FC # let listener = std::net::TcpListener::bind(address).unwrap();Áœ®  # b2.wait();Áü 63 # let (stream, _) = listener.accept().unwrap();Áüù B? # std::thread::sleep(std::time::Duration::from_millis(10));Á´¼  # drop(stream);ÁLÓ  # });Á„Ý  # b1.wait();Áüî .+ let stream = TcpStream::connect(address)?;Á��ü¡.+ // Create a `SockRef`erence to the stream.ÁüÐ,) let socket_ref = SockRef::from(&stream);Áüý30 // Use `Socket::set_tcp_nodelay` on the stream.Áü±&# socket_ref.set_tcp_nodelay(true)?;Á¬Ø drop(socket_ref);Áî�üò(% assert_eq!(stream.nodelay()?, true);Áì› # handle.join().unwrap();Ád¹â�<ÆÍþ<ΣÕ<á™4¼¼¨€rìúÇbþ6½¾éä«4«±»»ÐÒüê"Lê±»»„!„!…!ƒÐo$z�é - ™4Ð}ô‘™4ÀÀ¨€ÁÂÝ"Þ"–\¶4»¿¿Ð}üÑ ,Ô‰  ‰ ¨€ ‰ Ý"¨€Bÿ¿ Ú¿ ™4$Ûü£:ü’MJ On Windows, a corresponding `From<&impl AsSocket>` implementation exists.ÁÌ$êÅ€”ô¸‘ŒŒœ‹üó,üé7üàB™4Ä�ÅÄÅþÆù€ ¬„$ù€$ب€Æ®Æ¨)+ô�üä41 The caller must ensure `S` is actually a socket.Á$ ó€¨€BÿÃà ƙ4ù€Úžhü·8Š Š ‡�È gÈüÝ8à‹ Œ �  ‹ ‡� Œ €g€gŠ‚gê ûcƒg�ÁûcØ«q¢1È¡� ãÀBÿÇ äÇ È8$åœ ë<§6«6ÌÏÐÑàíîðñòóôõ‡ˆ‰Š‹Œ��’”•—™œŸ ¡¢¤¦©«¬®°²³µ¶¸¹º»¼¾¿ÀÁÃÅÈËÌÍÎÏÐÓ®×minÁï øÉÊOsStrÁ,¢úÉËùÃ<‡Œ‰É̃Ð\¡„!É̓Ѕ!É͘ $½ôÉÏà<à ÙÉÐÏÄ\Ìý­Éщ¹Dè™DÉÒ›½D�¨—ÉÔþìD‹¶—ÉÕ NonZeroU32ÁT䦿ÉÖ NonZeroUsizeÁdº ÈçÉ×á­$Ú „$ÉÙú­<à ¢#ÉÚÉÍTé ®LÉÛ¤¹Lõ ¤#ÉÜÀ¹L€ ¦#ÉÝ¥„<‹ í#ÉÞRawFdÁ,” ¡#ÉßOsStrExtÁDÔ ÍDÉà�†dš ‹GÉâÕ…d¨ ÛGÉã�…T¶ ¤HÉäÛ­$ò ù'Éåí � ¸ÉæÝÄD– ȲÉèInstantÁ<  ÑRÉéªí´ ‰Éëå,¸ ½2Éìssize_tÁ<øãÉí¸ìDŒ»Éï�ê<–¯Éð¡|Ì(ÉñÉæ^4éìÉóæ^íÉóô_Dñ„Éôô_…Éô¯[Dû³ÉõÈ�ad…œÉöø$“øÉ÷øùÉ÷öW4÷‡ÉùãYLÿœÉúÀ`LŠ�ÉûÀ`‘ÉûÎÅ,°–‡üÒí<‚ Òýçî<¡ Ôÿ†ïDª Ü€ SOCK_DCCPÁL� ËA�SOCK_RAWÁDÜ ²‚SOCK_SEQPACKETÁtí ÊAƒ SOCK_DGRAMÁT“  J… SOCK_STREAMÁ\Ÿ ŸJ† IPPROTO_DCCPÁd‹ è‡ IPPROTO_MPTCPÁlÊ ûˆ IPPROTO_SCTPÁd¼ õ‰IPPROTO_UDPLITEÁ|Œ ÷Š IPPROTO_ICMPÁdÓ �ŒIPPROTO_ICMPV6Átá ‘� IPPROTO_TCPÁ\ˆ ’� IPPROTO_UDPÁ\• “��\ÊŠ’˜D×Ô“Šî\áß”¬îdîì•Çš„üÇ–ÿL޲ — MSG_TRUNCÁL £˜ SO_OOBINLINEÁdœ ëR™Ipv6MreqÁDš Κ IPV6_HDRINCLÁdë  Ÿ›IPV6_RECVHOPLIMITÁŒé$ ¢œIPV6_RECVTCLASSÁ|�( ®� IP_HDRINCLÁTÿ) ¶ž IP_RECVTOSÁTæ- ÀŸIP_TOSÁ4›/ ´ Î LË0 îR¡ SO_PASSCREDÁ\á2 ñR¢ SO_PRIORITYÁ\ò3 íR£IpMreqÁ4¥4·¥­#4­4�¦ IPPROTO_IPÁTµ4 ”§ IPPROTO_IPV6ÁdÁ4 •¨IPV6_MULTICAST_LOOPÁœÏ4 “©IPV6_UNICAST_HOPSÁŒä4 �ª IPV6_V6ONLYÁ\û4 š«IP_ADD_MEMBERSHIPÁŒˆ5 ЬIP_DROP_MEMBERSHIPÁ”›5 Ñ­IP_MULTICAST_LOOPÁŒ¯5 Ï®IP_MULTICAST_TTLÁ„Â5 ίIP_TTLÁ4Ø5 µ°MSG_PEEKÁDà5  ± SOL_SOCKETÁTê5 âR² SO_BROADCASTÁdö5 çR³SO_ERRORÁD„6 åR´ SO_KEEPALIVEÁdŽ6 êRµ SO_RCVBUFÁLœ6 éR¶ SO_RCVTIMEOÁ\§6 ¨T· SO_REUSEADDRÁd¸6 ãR¸ SO_SNDBUFÁLÆ6 èR¹ SO_SNDTIMEOÁ\Ñ6 ©TºSO_TYPEÁ<Þ6 äR» TCP_NODELAYÁ\ç6 ¶¼ IpMreqSourceÁdê9ʾIP_ADD_SOURCE_MEMBERSHIPÁÄø9 Ô¿IP_DROP_SOURCE_MEMBERSHIPÁÌ’: ÕÀÁ œÝ= ”­¤ò= •ÃIPV6_MULTICAST_HOPSÁœ®B ’ÅIPV6_MULTICAST_IFÁŒÃB ‘ÆIP_MULTICAST_IFÁ|ÖB ÍÇMSG_OOBÁ<çB ŸÈ TCP_KEEPCNTÁ\»G »Ê TCP_KEEPINTVLÁlÈG ºËãtìL ¹ÉÍmsghdrÁ4÷±ÖDïlå¹ |˜Å€”þ¤ýüô¿ „þÅÇÚœ·Å€”ÌÅäÚ¬àü¶@ü²Eü©Pë Ä”Û D²· ·© ¬ ™ œ ”ÞŒ Dö} € l o ¤ÚÓª|¥ Åå ŒÇÅô ´âň œ‚Å™ ”ŸÅ© ¬»ÅÞ ¬ÚÅÓ ¬ùÅò œ˜ÅŒ ¬µü½”üŸ´ü–¿ç ´° Óª|ÿ ÅÜŒ¡ÅŒ ¬¼Å¶ ¬ÛÅå ŒúÅô ´• Åò œµ ň œÒ Å™ ”ï Å© ¬‹ ü—�üù°üð»] \Ì M P = @ - 0     ý  é ì äÀ Å€”¦ ¤¥ üœ ï ”… Óª|è Ì$ù ¼ç üÞ " Óª&Ì$"   ÓªFÌDB@*  ÓªfÌdb`4 |ç Å€”Í ¤Ì üà > Dü 0 LŠ ! $   ® þ  ï ò lòÅå ŒÔ Åô ´ë ň œ‡Å™ ” Å© ¬¸Å« ¤ÓüÎ œüÊ ¡üÁ ¬= $…. 1  ! ´ÅÅ€”«¤ªü¡, ,á  ÷ ú Ó Ö À à ± ´ ,ïÅÇÚœ¨Å€”½ÅäÚ¬Ñü§@ü£EüšPÌ ÅÇÚ>Å€<ÅäÚ:852û é ÅÇÚpÅ€nÅäÚljgd  ÅÇڢŀ ÅäÚžœ™–5 |¦ lüÅ€”פÖüÍ $š  ü ÿ |‰Óª|ÒÅò œãüÑ&üÈ1 tÖÓª|©ÅÇÚœÏŹ¤ìÅ€”ŠÅäÚ¬¦üÅ|üÁ�ü£¡üš¬V ¤çÓª|õʤ’Å€”¨ÅäÚ¬¼ü‘Aü�Füïfüæq‡ $Œo r U X ”…Óª|ÎÅò œßüÍ&üÄ1e œÄÅò œŸÜ™] ”¶Óª|ãŶ ¬øÅò œ�ü÷,üâBüÙM} ¬†Óª|ÙÅŒ ¬ûŶ ¬šÅÊ ¬¹Åò œØüñ�üÓ¡üʬµ $ÌÅ€”§¤¦ü�´ Å€É © Å€420¾ $�¥ ¨ ‹ Ž $¾€ ƒ r u c f T W E H 7 : |¼ÅÇÚœÇŹ¤àÅ€”úÅäÚ¬’üÁhü½mü´xk ”–ÅÇÚœÛÅ€”ðüÚ)üÖ.üÍ9 |‡ Å¥ŒÍÅøœàüÌ(üÈ-ü¿8– ”å Óª|® Åò œ¿ ü­ &ü¤ 1¤ ¼ã$Óª|ˆ!Å  ¼®!ÅÊ ¬Ï!ű”î!ÅÞ ¬Š"Å„ ¤©"Å— ¬Ç"ÅÇÚœæ"ÅÓ ¬ƒ#Åú œ¢#ʤ¿#ÅË”Ý#Å€”ù#Å« ¤•$ÅäÚ¬³$ü¤!ªü !¯ü‚!Ïüù Ú[¬‰(Å  ¼�%ÅÊ ¬¬%ű”Ç%ÅÞ ¬ß%Å„ ¤ú%Å— ¬”&ÅÇÚœ¯&ÅÓ ¬È&Åú œã&ʤü&Åøœ–'ÅË”¯'Å€”Ç'ÅäÚ¬ß'ü‰%íü…%òüü$ý„ù)Óª|¯(ÅÇÚœÕ(ʤò(Åøœ�)Å€”­)ÅäÚ¬É)üË(™üÇ(žü©(¾ü (ÉR„à-ÅÜŒž*Å  ¼µ*ÅÊ ¬Ò*ÅÞ ¬í*Å„ ¤ˆ+Å— ¬¢+ÅÇÚœ½+ÅÓ ¬Ö+Åú œñ+ű”Š,Å¥Œ¢,ʤ¹,ÅøœÓ,ÅË”ì,Å€”„-Å« ¤œ-ÅäÚ¬¶-ü˜*µü”*ºü‹*Å d•/ÅÊ ¬….ÅÇÚœ .ÅÓ ¬¹.Åú œÔ.Å€”í.üÿ-ƒüû-ˆüò-“a|Å0Åå Œ¶/Åô ´Í/ň œé/Å™ ”‚0Å© ¬š0ü°/‚ü¬/‡ü£/’§ŒÛ2Åò œŸ2Å« ¤´2üž2+ü•26µŒì3Óª|ý2Åò œ–3ÅŒ ¬«3ÅÊ ¬Â3ü•3Cü÷2cüî2nâ$Ž4<š4ÒÁÄ©¬Ž‘loLO25ñôÑÔ²µ� †‰mpRU;> # îñÓÖ»¾¡¤‹Žqt$Ì9 Å  ¼Š7Åú œ§7ű”À7Å„ ¤Ø7Å— ¬ò7ÅÇÚœ�8ÅÊ ¬¦8Å¥ŒÁ8ʤØ8ÅË”ò8Å€”Š9ÅäÚ¬¢9ü„7µü€7ºü÷6ÅtØ9 Å  ®Åú ¬Å±ªÅ„ ¨Å— ¦ÅÇÚ¤ÅÊ ¢Å¥ Å¹žÅ˜ŀšÅäÚ˜–’ŽŽe Å  :Åú 9ű8Å„ 7Å— 6ÅÇÚ5ÅÊ 4Å¥3Ź2ÅË1Å€0ÅäÚ/.+(ýÒ Å  ÕÅú ÔűÓÅ„ ÒÅ— ÑÅÇÚÐÅÊ ÏÅ¥ÎŹÍÅËÌÅ€ËÅäÚÊÉÆÃj$Ö=Å  ¼Ã:Ŷ ¬à:Åú œû:ÅÞ ¬”;Åå Œ¯;Åô ´Æ;ň œâ;Å„ ¤û;Å¥Œ•<Å— ¬¬<ÅÓ ¬Ç<Å™ ”â<Å© ¬ú<Åøœ•=Å€”®=ü½:†ü¹:‹ü°:–(Å  ÏŶ ÍÅú ËÅÞ ÉÅå ÇÅô Åň ÃÅ„ ÁÅ¥¿Å— ½ÅÓ »Å™ ¹Å© ·ÅøµÅ€³±­©Í»Å  wŶ vÅú uÅÞ tÅå sÅô rň qÅ„ pÅ¥oÅ— nÅÓ mÅ™ lÅ© kÅøjÅ€ihebr$§BÅ€”‚B¤�BüøAjÅ€\Å€420qPÅ€LJHeLÅ€db`a$´GÓª|€CÅŒ ¬¢CÅ  ¼ÁCÅ÷ÄâCŶ ¬„DÅÊ ¬£DÅÞ ¬ÂDÅå ŒáDÅô ´üDÅò œœEň œ¹EÅ„ ¤ÖEÅ™ ”ôEÅ© ¬�FÅ« ¤¯FÅøœÍFÅ€”îF¸‘Œ†Gœ…GüíF,ü˜CˆüúB¨üñB³EӪŌ ÿÅ  ýÅ÷ûŶ ùÅÊ ÷ÅÞ õÅå óÅô ñÅò ïň íÅ„ ëÅ™ éÅ© çÅ« åÅøãŀḑßÝÛØÔÐòÓªÏÅŒ ÎÅ  ÍÅ÷ÌŶ ËÅÊ ÊÅÞ ÉÅå ÈÅô ÇÅò ÆÅˆ ÅÅ„ ÄÅ™ ÃÅ© ÂÅ« ÁÅøÀÅ€¿¸‘¾½¼º·´Ô¤ÿG$�H”ÖL Åú œ¸JÅå ŒÑJÅô ´èJň œ„KÅ¥Œ¡K¸¶¤¸K¸Ç¤ÎKü·K,ü KEÅ— ¬ëKÅ™ ”†LÅ© ¬žLÅË”¹Lü²Jœü®J¡ü¥J¬„¤ÅM<ÒM ÚM áO àM †N, áM8 âM& äM8Ý,æM ìM „N, îM ïM úM, ðM8argÁñM& ôM8²$öM$ ûM üM, þM ÿM �N$ €N ‚N*ˆN ‹N ÞO ŒN ÝO+ –N —N ¬N8²,˜N �N «N8 unused_unsafeÁlžN8¶N8§¬ºN ¾N8"4ÀN ÇN ßN8»$ÉN'ÍN, ÏN8 ÐN ÒN ÝN, ÓN ÔN ÛN, ÕN8ÁŽ ÖN$ ÙN ÜN% àN8êN8§¬íNñN ôN7ô õN ÷N ²O8€…O ˆO ¨O8‰‰O'ŒO8ªíŽO'�O8É¡,’O'—O8 last_os_errorÁl™O ¦O §O8$´O ¹O ×O8¯ÇO ÉO ÍO8§¬ÊO% ßOÄÜQÅå ŒÂPÅô ´ÙPň œõPÅ™ ”ŽQÅ© ¬¦QÅ« ¤ÁQü¼Pœü¸P¡ü¯P¬\âQÉä¾XÓª|úWŶ ¬�XÅò œ¦XüŽX,üùWBüðWM|ÄXÉ\´ZÅò œþX¸gnuÁ”¬Y¸«¬ÐYÆ64ÁÜçYüÏY4üžYoüôXŸÅŒ ¬™ZüëXÆüâXÑ4¹ZÉ\‹a”ø` Unix only API.ÁÍ�ÓÔÄébü�aHE Domain for low-level packet interface, corresponding to `AF_PACKET`.ÁÓª|ýaÅŒ ¬šbÅÊ ¬±bÅò œÈbü™bCüóaoüêaz4óbÒÒÍ�¼¿dü¢cFC Domain for low-level VSOCK interface, corresponding to `AF_VSOCK`.ÁÓª|÷cÅŒ ¬ŒdÅò œ£dü‹d,üöcBüícM,ÉdÒÒÍ�L×g”ÄgÖ• …‚Öרüõk&üçg&# Set `SOCK_NONBLOCK` on the `Type`.ÁÓª|¥h ÅŒ ¬ÏhÅ  ¼òhÅ÷Ä—iŶ ¬½iÅÊ ¬àiÅÞ ¬ƒjÅò œ¦jÅ„ ¤ÇjÅ— ¬éjÅ« ¤ŒkÅ€”²k¸‘ŒÊkœÉkü±k,üÁh§ü›hÓü’hÞ\‚l…‚…‚BÿÕÕ ÖCküˆq"üÔl%" Set `SOCK_CLOEXEC` on the `Type`.ÁÓª|‘m ÅŒ ¬»mÅ  ¼ÞmÅ÷ănŶ ¬©nÅÊ ¬Ìnű”ïnÅÞ ¬�oÅò œ²oÅ„ ¤ÓoÅ— ¬õoÅÇÚœ˜pÅÓ ¬¹pÅ« ¤Üpü­mÎü‡múüþl…<•q…‚…‚BÿÕÕ ×ñküöt* ÅŒ ¬ãqÅ  ¼‚rÅ÷Ä£rŶ ¬ÅrÅÊ ¬ärű”ƒsÅÞ ¬ŸsÅò œ¾sÅ„ ¤ÛsÅ— ¬ùsÅÇÚœ˜tÅÓ ¬µtÅ« ¤ÔtüÙq–üÐq¡DŠu…‚…‚BÿÕÕ–¼¨ltû…”—… Unix-only API.ÁÅÇÚœ¸…Å€”Í…ÅäÚ¬á…ü·…@ü³…Eüª…Põ‚ÚÛÜÝüщ+ü�†-* Check if the message terminates a record.Á†�üʆHE Not all socket types support the notion of records. For socket typesÁü—‡IF that do support it (such as [`SEQPACKET`]), a record is terminated byÁüå‡63 sending a message with the end-of-record flag set.Á ˆ�ü¨ˆ30 On Unix this corresponds to the `MSG_EOR` flag.Áàˆ�üèˆ" [`SEQPACKET`]: Type::SEQPACKETÁʤ�‰ÅäÚ¬³‰üœ‰-ü˜‰2ü�‰=„Þ‰õ‚BÿÙÙ Ú|mü¤Œ)ü®Š30 Check if the message contains out-of-band data.ÁæŠ�üîŠC@ This is useful for protocols where you receive out-of-band dataÁü¶‹)& mixed in with the normal data stream.Áä‹�üì‹30 On Unix this corresponds to the `MSG_OOB` flag.Át±Œõ‚BÿÙÙ ÛQnü÷�%üÿŒ%" Check if the confirm flag is set.Á©��ü±�B? This is used by SocketCAN to indicate a frame was sent via theÁüø�?< socket it is received on. This flag can be interpreted as aÁü¼Ž  'transmission confirmation'.ÁáŽ�üéŽ74 On Unix this corresponds to the `MSG_CONFIRM` flag.ÁÓª|¯�ÅŒ ¬Ä�Åò œÛ�üÃ�,ü®�Bü¥�MT„�õ‚BÿÙÙ Ü'oüª“'üÒ�)& Check if the don't route flag is set.Á€‘�üˆ‘=: This is used by SocketCAN to indicate a frame was createdÁ´Ê‘ on the local host.Áå‘�üí‘96 On Unix this corresponds to the `MSG_DONTROUTE` flag.ÁÓª|¾’ÅŒ ¬Û’Åò œò’Å« ¤‡“üÚ’Bü´’oü«’zd·“õ‚BÿÙÙ ÝýoüØ”"ÅÇÚœ•”Å€”ª”ÅäÚ¬¾”ü””@ü�”Eü‡”Põ‚ß gßü�•B„•— ˜ ™  — õ‚ ˜ €g€gŠ‚gê ûcƒg�ÁûcØ«q¢1È¡™ ãÀBÿÞ ˆ•Þ ß$‰•œ �•ü˜›„£›Ì2áᮃ€ßt¦�'âã´›„¾›¾›ÉààããiovecÁäiov_baseÁåiov_lenÁ×  Õe®�üÔ›1LÔ›Éàà„!„!…!ƒÐo$z�é - Ì2ÌãüŠœ-Ì2å它–œü¼œ-Ì2ç箃ȜìîœÌ2é鮃êëìóœü’�I �°³ ®ƒBÿèè êÌ2�Á¤�ü·Ÿ3DÅŸš  š ®ƒ š ÌãBÿè Οè ëÌ2$ÏŸüÍ ?dÛ ›  › ®ƒ › ÌãBÿè è è ìÌ2$í üä¢BÅ€”΢¤Í¢üÄ¢tò¢œ  œ ¼¼ sockaddr_unÁ½ sun_familyÁ¾sun_pathÁÐпÃÚèBÿ Š£ í·<�£üã¤@Å€”¬¤¤«¤ü¢¤lñ¤�  � Ñ®†°Bÿ …¥§¯ª $ÿ¤dñ±ÅÇÚœŸ±Å€”´±Åäڬȱüž±@üš±Eü‘±Pê*üѲ@ÅÇÚœŽ²Å€”£²ÅäÚ¬·²ü�²@ü‰²Eü€²P|ß²ž Ÿ  ž ÖDÖDßâ×Dmsg_nameÁØD msg_namelenÁÙDmsg_iovÁÚD msg_iovlenÁÛD msg_controlÁÜDmsg_controllenÁÝD msg_flagsÁ–Fµ>XNî Ÿ ÃyBÿ ô² ðã°ï²‚ $�³üø´QÅÇÚœó³Å€”ˆ´ÅäÚ¬œ´üò³@üî³Eüå³Pt†µ     ˺  ¦² Bÿ šµ ñã°•µí §µ¶¾µüö¶VÅÇÚœ³¶Å€”ȶÅäڬܶü²¶@ü®¶Eü¥¶P”„·¡  ¡ ˺ Ÿ‰Bÿ œ· òã°—·í ©·¶Á·üá¸>ÅÇÚœž¸Å€”³¸ÅäڬǸü�¸@ü™¸Eü�¸P„︢  ¢ ˺ Bÿ …¹ óã°€¹ØZ,’¹ü‘º5ÅÇڜιŀ”ã¹ÅäÚ¬÷¹ü͹@üɹEüÀ¹PdŸº£  £ ˺ õ‚Bÿ ±º ôã°¬ºüº»7ÅÇÚœ÷ºÅ€”Œ»ÅäÚ¬ »üöº@üòºEüéºP”È»¤  ¤ ˺ Bÿ à» õã°Û»l¦¼”“¼Ö• Ãy÷øü–¿-üº¼QN Constructs a `SockAddr` with the family `AF_VSOCK` and the provided CID/port.Á�½�d˜½ # ErrorsÁ©½�ü±½UR This function can never fail. In a future version of this library it will be madeÁ|‹¾ infallible.ÁÓª|ξÅŒ ¬ã¾Åò œú¾üâ¾,ü;BüľM,�¿ÃyBÿöö ÷cidÁ£¿“z$­¿üéÄ4ü§ÃJG Returns this address VSOCK CID/port if it is in the `AF_VSOCK` family,Áäöà otherwise return `None`.ÁÓª|¡ÄÅŒ ¬¶ÄÅò œÍÄüµÄ,ü ÄBü—ÄM„ðÄ¥  ¥ ÃyřǙș­É™Ê™àË™óG*¤�R{9 Bÿö �Åö ø$‚Ål»ÈüðÇ*' Unix only API (not available on WASI).ÁÅ€”¥È¤¤Èü›ÈÃyúüþÿ€�„üåÉ üÏÈ[X Returns true if this address is an unnamed address from the `AF_UNIX` family (for localÁü¯É1. interprocess communication), false otherwise.ÁTìɦ  ¦ ÃyBÿù ÷Éù ú$øÉL·Êú�û�û�ûûúû ¬· Uÿ°�ü³ÐAtÁЧ  § ÃyřǙș­É™Ê™àË™óG*¤�R{9  § ¬· Bÿù ÐÐù ü$ÑГÑü�ý�ý�ýýüý´Ì Uÿ¾Ì üºÔ8D½Ôɨ ©  ¨ Ãy © ¬· Bÿù ÆÔù þ$ÇÔ·<ÍÔüçÖOTêÖɪ «  ª Ãy « ¬· ª ¸ºBÿù õÖù ÿ$öÖ·<üÖ abstract_nameÁl™×üØÞ?üÜÝLI Returns this address as Unix `SocketAddr` if it is an `AF_UNIX` pathnameÁü­Þ&# address, otherwise returns `None`.Á<ßÞ¬  ¬ ÃyřǙș­É™Ê™àË™óG*¤�R{9 ÚKÚKîÄÛKûêæEÜK¶æEç*™P“fBÿù çÞù €$èÞü€â*üƒáDA Returns this address as a `Path` reference if it is an `AF_UNIX`ÁüÌá/, pathname address, otherwise returns `None`.Á\‡â­  ­ ÃyřǙș­É™Ê™àË™óG*¤�R{9  ­ Ñ®Bÿù “âù �$”âLÔâ��‚�‚�‚‚�‚²Ì řǙș­É™Ê™àË™óG*¤�R{9 ì°Uÿ¾Ì ¹ã��ƒ�ƒ�ƒƒ�ƒì°Uÿ°�´Ì ü‚ç4üêäYV Returns this address as a slice of bytes representing an abstract address if it is anÁüÈå96 `AF_UNIX` abstract address, otherwise returns `None`.Á†æ�üŽæ\Y Abstract addresses are a Linux extension, so this method returns `None` on all non-LinuxÁtïæ platforms.Á¬‰ç®  ® ÃyřǙș­É™Ê™àË™óG*¤�R{9  ® ¸ºBÿù Ÿçù „$ çLïé„�…�…�……„…²Ì řǙș­É™Ê™àË™óG*¤�R{9 Ÿ»Uÿ¾Ì íê„�†�†�††„†Ÿ»Uÿî× ´šì4ªì›…ÌÉìLÙìüíìA|‚í›…ÿ ‰Ú4’íüÔí9lâí¯  ¯ ›…Bÿ øí ŠÚ4ðíüªî:|¸î›…Bÿ ‹Ú4ÈîüƒïX4‘ïà‚Bÿ ŒÛ4˜ï‚§ïàGD²ïü¯ðaÓª|–ðÌ$§ð¼•ðüŒð"T½ðÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwÇð¿¢Bÿ �Û4Èð‚×ðàGDâð �ñòñ����������ïêÇðUÿ ÇðüþñD$Œò°  ° ÃyòøBÿ ¦ò �µ„‘òûê$ ò“ó��‘�‘�‘‘�‘ïêUÿüžóG<¬ó±  ± ÃyòøBÿ Éó ’µ„´óûê$Ãó´ô’�“�“�““’“³ä ü¿ôWdÍô²  ² Ð}ÑÅòøBÿ âô ”Ú4Úô§�<òôü¨€E4¶€òøBÿ •µ„½€À™<Ì€–�•�–�–�––•–³ä ü¡�H4¯�ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwÔ§¿¢Bÿ —µ„¶�tÇ‚—�˜�˜�˜˜—˜¹¡à‚Uÿ ü†ƒ@\”ƒ†°Bÿ ™µ„ ƒt¤„™�š�š�šš™šîé úé \ò„™�›�›�››™›Ò§ÃyUÿü‡…@\•…†°Bÿ œµ„¡…t¥†œ�������œ�îé úé \ó†œ�ž�ž�žžœžóë ü¨‡?Å€”’‡¤‘‡üˆ‡L¶‡à‚Bÿ Ÿµ„À‡üŸ‰<Óª|®ˆÌ$LjÅ€”ш¸‘ŒéˆœèˆüЈ,üƈ7ÅË”‡‰¤†‰ü¨ˆtüŸˆ\­‰›ÇBÿ  µ„¹‰üÚŒQÅ˔Č¤ÃŒüºŒ|èŒòøBÿ ¡µ„øŒ½ \‡�üú�FDˆ‘úÓòøBÿ ¢µ„‘‘èÓ ‘†“¢�£�£�££¢£³ä ü‘“a$Ÿ“³  ³ ÌãžúBÿ ¸“ ¤µ„¤“�Á³“ØZ,Гù”¤�¥�¥�¥¥¤¥UÿüŒ•�Lš•´  ´ Ìãó�Bÿ Á• ¦µ„©•�Á¼•ØZ,Ý•|õ–¦�§�§�§§¦§¹¡žúUÿüé Ìãüé ü˜¦�¨�¨�¨¨¦¨Óó ü ™@\®™†°Bÿ ©µ„º™ Óœ©©üÆ�“ÅÇÚœƒ�Å€”˜�ÅäÚ¬¬�ü‚�@üþœEüõœPlÔ�µ ¶  µ ññòŽ<ôó Vk]ï‡WÚ¶ ¼ûBÿ €ž «µ„ç�¸û$ú�ØZ,¨žü« ¢ÅÇÚœèŸÅ€”ýŸÅäÚ¬‘ üçŸ@üãŸEüÚŸP”¹ · ¸  · ññòŽ<ôó Vk]ï‡WÚ¸ ø—Bÿ ê  ¬µ„Ñ ¸û$ä ØZ,’¡tŸ£¬�­�­�­­¬­¤õ  œœãY €¡¶XLg'¤!ÍqPüé üé ü¯¦wÅÇÚœì¥Å€”�¦ÅäÚ¬•¦üë¥@üç¥EüÞ¥P<½¦¹ º » ¼  ¹ œœãY €¡¶XLg'¤!ÍqPº » ¼ žúBÿ ⦠®µ„ʦã°ݦØZ,‚§Þ§®�¯�¯�¯¯®¯Óó üñ§P$ÿ§½  ½ ¸ºžúBÿ ˜¨ °µ„„¨�Á“¨ØZ,Ÿ¨Ä©°�±�±�±±°±Óó ü¨ªrÅÇÚœå©Å€”ú©ÅäÚ¬Žªüä©@üà©EüשPl¶ª¾ ¿  ¾ Œ‰Œ‰�‰ùÃ�‰óö7 Å0ײ÷([O¿ žúBÿ ⪠²µ„ɪ¸û$ܪØZ,öªüí«w<û«À Á  À ¸º Á ÃyžúBÿ  ¬ ³µ„ˆ¬�Á›¬ûê$«¬ØZ,À¬§®³�´�´�´´³´Óó ü‹¯ŠÅÇڜȮŀ”Ý®ÅäÚ¬ñ®üÇ®@üîEüº®P„™¯ à Ä   Œ‰Œ‰�‰ùÃ�‰óö7 Å0ײ÷([Oà Ä ÃyžúBÿ ȯ µµ„¯¯¸û$¯ûê$ܯØZ,ñ¯üɱaÅÇÚœ†±Å€”›±ÅäÚ¬¯±ü…±@ü�±Eüø°P<×±Å Æ Ç È  Å ‡‡öW‹€Œ¶XÒ¤T­æ² ˜Æ Ç È žúBÿ ó± ¶µ„ß±ã°î±ØZ,ˆ²Þ²¶�·�·�··¶·Óó üº³`\ȳÍøBÿ ¸µ„Ô³optÁ㳎ï³üÚ´Bdã´ÉºçŠÈBÿ ¹ÁÌ‚süÈ·…|Ö·ŠÈòøBÿ ºµ„ë·£ˆ þ·ŽޏÁÌDž¸ü°¹<d³¹ÉŠÈºçBÿ »ÁÌDÀ¹ü�¾GÓª|»½Åú œØ½Å— ¬í½ÅË”„¾ü×½@üÓ½Eüµ½eü¬½p”«¾³ûBÿ ¼µ„¾¾4¿¼�½�½�½½¼½à�ü�ÀZŒ�ÀÉ  É Æ‹òøBÿ ÉÀ ¾µ„¯À‚#L¾ÀüžÍ)Åú œ»ÌÅ— ¬ÔÌÅ¥ŒïÌÅË”†ÍüµÌeü±Ìjü¨ÌuL¡ÍÉÑÅBÿ ¿ÁÌD«ÍüÄÎ<ÅË”®Î¤­Îü¤ÎLÇÎÉà‚Bÿ Àµ„ÑÎcmdÁàÎüùÏZÅË”ãϤâÏüÙÏLüÏÉòøBÿ Áµ„†Ðget_cmdÁ<•Ðset_cmdÁ<¥Ð“Þ$µÐèÑÁ�Â�Â�ÂÂÁ³ä ü�Ó]ÅË”ùÒ¤øÒüïÒd’ÓÉòøBÿ õ„ŸÓÓ� <®Óã� <¾Ó“Þ$ÎÓ‚ÕÃ�Ä�Ä�ÄÄÃijä ü”ÖZT©ÖÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw†–¿¢ÿ�ÆÆº€ ´Ö ņ–µ„·Ö£ˆ ÆÖŽÒÖ+-éØÅ�Ç�Ç�ÇÇÅdž–ïꆖUÿÖ�ý­ý­ÏÄÿ­äâ瀮�çÙW£Ÿì·œ†–üÑÚzTæÚ†–òøÿ�Éɺ€ ñÚ È†–µ„ùÚ£ˆ ŒÛŽœÛpayloadÁ<¬Û;=�ÝÈ�Ê�Ê�ÊÊÈʆ–³ä üšÝ:T®ÝÊ  Ê �¾†ëBÿ ¿ÝòïûêIuüÉß8d×߆ë�¾Bÿ Ì�ê<äßü¸à<\ÌàË  Ë òí®íBÿ Þà Íûê­vü¯á7l½á®íòíBÿ Îûê$Ëáüêäƒ ÅÜŒ âÅú œ·âÅÞ ¬ÐâÅ„ ¤ëâÅ— ¬…ãÅÇÚœ ãÅÓ ¬¹ãÅ¥ŒÔãŹ¤ëãÅË”…äÅ« ¤�äÅ€”·äÅäÚ¬ÏäüšâÌü–âÑü�âÜDþäÌ Í  Ì �¾ Í ã|çôBÿ —å ÏŠöZz öezü×êDÓª|÷éÅŒ ¬�êÅÊ ¬§êÅò œ¾êü�êCüñécüèén|åꆰBÿ е„õêt…ìÐ�Ñ�Ñ�ÑÑÐÑîé úé \ííÐ�Ò�Ò�ÒÒÐÒóë ü¥ðDÓª|áïÅŒ ¬öïÅò œ�ðüõï,üàïBü×ïM|³ð†°Bÿ Óµ„ÃðtÓñÓ�Ô�Ô�ÔÔÓÔîé úé \ÂóÓ�Õ�Õ�ÕÕÓÕóë ”êó”×óÖ• Ð}רÚÛÜÞßáâäæçéêìíïðòóõ÷øùúûýþ€�ƒ„†‡‰‹���‘’”•™›œ�žŸ ¡¢£¤¥¦§¨«¬­ü‹úLüƒô8Ý™Àô�üÈôDA This function directly corresponds to the `accept4(2)` function.Á‘õ�ü™õIF This function will block the calling thread until a new connection isÁüçõLI established. When established, the corresponding `Socket` and the remoteÁü¸ö$! peer's address will be returned.ÁøÃÅ%hüáö%Ë Additional documentation can be found in manual of the OS: * DragonFly BSD: * FreeBSD: * Linux: * macOS: (archived, actually for iOS) * NetBSD: * OpenBSD: * iOS: (archived) * illumos: ÁÓª|ž÷ ÅŒ ¬È÷Å  ¼ë÷Ŷ ¬�øÅÊ ¬³øÅÞ ¬ÖøÅò œùøÅ„ ¤šùÅ— ¬¼ùÅ« ¤ßùüº÷Äü”÷ðü‹÷û<’úÎ  Î Ð}¼¤BÿÖ šúÖ ×$›úØZ,¡úü®ýT ÅŒ ¬•ûÅ  ¼´ûŶ ¬ÕûÅÊ ¬ôûÅÞ ¬“üÅò œ²üÅ„ ¤ÏüÅ— ¬íüÅ« ¤Œýü‹ûœü‚û§D¼ýÏ  Ï Ð}¼¤BÿÖ ÅýÖ Ø$ÆýØZ,ÌýtõþØ�Ù�Ù�ÙÙØÙ¹¡‡àUÿ¦Ñüé ü®„@ü©€! Sets `CLOEXEC` on the socket.ÁÏ€�\×€¼Êç€�üï€96 On supported platforms you can use [`Type::cloexec`].ÁÓª|þƒÅË”“„¤’„üýƒ*üôƒ5\µ„Ð  Ð Ð}òøBÿÖ Á„Ö Ú$„ close_on_execÁlÈ„üÉ…HÅË”¯…¤®…ü¥…d×…Ñ  Ñ Ð}òøBÿÖ ä…Ö Û$å…�² lë…üºš(ü›˜=: Gets the value of the `TCP_MAXSEG` option on this socket.Áݘ�üå˜@= For more information about this option, see [`set_tcp_mss`].Áª™�ü²™/, [`set_tcp_mss`]: crate::Socket::set_tcp_mssÁÓª|ð™ÅÇÚœ‰šÅ€”žšüˆš)ü„š.üï™Düæ™O<ÁšÒ  Ò Ð}§‘BÿÖ ÉšÖ Ü$Êš,ß›Ü�Ý�Ý�ÝÝÜÝó’ü—ž5ü†œ=: Sets the value of the `TCP_MAXSEG` option on this socket.ÁÈœ�üМLI The `TCP_MAXSEG` option denotes the TCP Maximum Segment Size and is onlyÁì¡� available on TCP sockets.ÁÓª|Í�ÅÇÚœæ�Å€”û�üå�)üá�.üÌ�DüÃ�O\žžÓ  Ó Ð}òøBÿÖ ªžÖ Þ$«žmssÁ±žü®£-ü� KH Returns `true` if `listen(2)` was called on this socket by checking theÁüí *' `SO_ACCEPTCONN` option on this socket.ÁÓª|¯¡Å܌١Ō ¬ø¡Å¶ ¬›¢ÅÊ ¬¾¢Åò œá¢Å« ¤‚£üË¡Öü¥¡‚üœ¡�\µ£Ô  Ô Ð}›ÇBÿÖ Á£Ö ß$£Ú¤ß�à�à�ààßàìêüÚ§*üû¤LI Returns the [`Domain`] of this socket by checking the `SO_DOMAIN` optionÁœÌ¥ on this socket.ÁÓª|÷¥ÅŒ ¬¡¦ÅÊ ¬Œ§Åò œ¯§ü“¦ºüí¥æüä¥ñ4á§Õ  Õ Ð}ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwÍ�¿¢BÿÖ è§Ö á$é§üµ«6ü÷¨IF Returns the [`Protocol`] of this socket by checking the `SO_PROTOCOL`ÁÔÅ© option on this socket.ÁÓª|÷©ÅŒ ¬¡ªÅ¶ ¬ÄªÅÊ ¬çªÅò œŠ«ü“ª•üí©Áüä©ÌD¼«Ö  Ö Ð}ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw¿ß¿¢BÿÖ Å«Ö â$Æ«׬â�ã�ã�ããâãïê¿ßUÿüϰ%üØ­;8 Gets the value for the `SO_MARK` option on this socket.Á˜®�ü ®FC This value gets the socket mark field for each packet sent throughÁ„ë®ø»€¯�üˆ¯C@ On Linux this function requires the `CAP_NET_ADMIN` capability.ÁÓª|ã¯ÅŒ ¬€°ÅÊ ¬—°Åò œ®°üÿ¯CüÙ¯oüЯz$Ö°×  × Ð}§‘BÿÖ Û°Ö ä$ܰ4í±ä�å�å�ååäåó’üõµ3ü–²;8 Sets the value for the `SO_MARK` option on this socket.ÁÖ²�üÞ²FC This value sets the socket mark field for each packet sent throughÁü©³EB this socket. Changing the mark can be used for mark-based routingÁüó³.+ without netfilter or for packet filtering.Á¦´�ü®´CÞÅ Óª|‰µÅŒ ¬¦µÅÊ ¬½µÅò œÔµü¥µCüÿ´oüö´zDüµØ  Ø Ð}òøBÿÖ …¶Ö æ$†¶õG$Œ¶üɺ*üÿ·:7 Get the value of the `TCP_CORK` option on this socket.Á¾¸�üƸA> For more information about this option, see [`set_tcp_cork`].ÁŒ¹�ü”¹1. [`set_tcp_cork`]: crate::Socket::set_tcp_corkÁÓª|ݹÅŒ ¬ú¹ÅÊ ¬‘ºÅò œ¨ºüù¹CüÓ¹oüʹzDкÙ  Ù Ð}›ÇBÿÖ ÙºÖ ç$Úº4í»ç�è�è�èèçèìêüŠÀ8ü”¼:7 Set the value of the `TCP_CORK` option on this socket.ÁÓ¼�üÛ¼HE If set, don't send out partial frames. All queued partial frames areÁü¨½PM sent when the option is cleared again. There is a 200 millisecond ceiling onÁüý½RO the time for which output is corked by `TCP_CORK`. If this ceiling is reached,ÁüÔ¾2/ then queued data is automatically transmitted.ÁÓª|ž¿ÅŒ ¬»¿ÅÊ ¬Ò¿Åò œé¿üº¿Cü”¿oü‹¿zd‘ÀÚ  Ú Ð}òøBÿÖ žÀÖ é$ŸÀcorkÁ$¥Àü½Å.ü’Â>; Get the value of the `TCP_QUICKACK` option on this socket.ÁÕÂ�üÝÂEB For more information about this option, see [`set_tcp_quickack`].Á§Ã�ü¯Ã96 [`set_tcp_quickack`]: crate::Socket::set_tcp_quickackÁÓª|€ÄÅŒ ¬ªÄÅÊ ¬ÍÄÅò œðÄÅ« ¤‘ÅüœÄ”üöÃÀüíÃËdÄÅÛ  Û Ð}›ÇBÿÖ ÑÅÖ ê$ÒÅTéÆê�ë�ë�ëëêëìêüÍÌ@ü˜Ç>; Set the value of the `TCP_QUICKACK` option on this socket.ÁÛÇ�üãÇ\Y If set, acks are sent immediately, rather than delayed if needed in accordance to normalÁüÄÈa^ TCP operation. This flag is not permanent, it only enables a switch to or from quickack mode.ÁüªÉc` Subsequent operation of the TCP protocol will once again enter/leave quickack mode depending onÁü’Êfc internal protocol processing and factors such as delayed ack timeouts occurring and data transfer.ÁÓª|�ËÅŒ ¬ºËÅÊ ¬ÝËÅò œ€ÌÅ« ¤¡Ìü¬Ë”ü†ËÀüýÊË„ÔÌÜ  Ü Ð}òøBÿÖ åÌÖ ì$æÌquickackÁDìÌüïÑ:üåÎJG Get the value of the `TCP_THIN_LINEAR_TIMEOUTS` option on this socket.Á´Ï�ü¼ÏQN For more information about this option, see [`set_tcp_thin_linear_timeouts`].Á’Ð�üšÐQN [`set_tcp_thin_linear_timeouts`]: crate::Socket::set_tcp_thin_linear_timeoutsÁÓª|ƒÑÅŒ ¬ ÑÅÊ ¬·ÑÅò œÎÑüŸÑCüùÐoüðÐzÄöÑÝ  Ý Ð}›ÇBÿÖ �ÒÖ í$�ÒTîÓí�î�î�îîíîìêüáØLü�ÔJG Set the value of the `TCP_THIN_LINEAR_TIMEOUTS` option on this socket.ÁìÔ�üôÔvs If set, the kernel will dynamically detect a thin-stream connection if there are less than four packets in flight.ÁüïÕc` With less than four packets in flight the normal TCP fast retransmission will not be effective.Áü×Ö†ƒ The kernel will modify the retransmission to avoid the very high latencies that thin stream suffer because of exponential backoff.ÁÓª|õ×ÅŒ ¬’ØÅÊ ¬©ØÅò œÀØü‘ØCüë×oüâ×zäèØÞ  Þ Ð}òøBÿÖ …ÙÖ ï$†ÙtimeoutsÁDŒÙüÒÝ2ü‘ÛC@ Get the value of the `TCP_NOTSENT_LOWAT` option on this socket.ÁÙÛ�üáÛJG For more information about this option, see [`set_tcp_notsent_lowat`].Á°Ü�ü¸ÜC@ [`set_tcp_notsent_lowat`]: crate::Socket::set_tcp_notsent_lowatÁÓª|ŠÝÅŒ ¬ŸÝÅò œ¶ÝüžÝ,ü‰ÝBü€ÝMŒÙÝß  ß Ð}§‘BÿÖ ëÝÖ ð$ìÝ<ˆßð�ñ�ñ�ññðñó’ü’âAü³ßC@ Set the value of the `TCP_NOTSENT_LOWAT` option on this socket.Áûß�üƒàOL If set the kernel will limit the amount of _unsent_ data in the sendbuffer.Áü×àda This differs from `set_send_buffer_size` which limits the sum of unsent and unacknowledged data.ÁÓª|ÊáÅŒ ¬ßáÅò œöáüÞá,üÉáBüÀáM¬™âà  à Ð}òøBÿÖ ¯âÖ ò$°âlowatÁ,¶âü¿æ3ü­äC@ Gets the value for the `SO_BINDTODEVICE` option on this socket.Áõä�üýä>; This value gets the socket binded device's interface name.ÁÓª|ÓåÅŒ ¬ðåÅÊ ¬‡æÅò œžæüïåCüÉåoüÀåz4Ææá  á Ð}ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwřǙș­É™Ê™àË™óG*¤�R{9 …C…CüˆC�ÁÐ=‰C¶Ð=ò¹ÚàÅÅFÅFÆFGlobalÁ Ä› +ÉÑ¿¢BÿÖ ÍæÖ ó$ÎætãçüÃðEü¿ìC@ Sets the value for the `SO_BINDTODEVICE` option on this socket.Á‡í�ü�íIF If a socket is bound to an interface, only packets received from thatÁüÝíIF particular interface are processed by the socket. Note that this onlyÁü«î@= works for some socket types, particularly `AF_INET` sockets.Áðî�üøîGD If `interface` is `None` or an empty string it removes the binding.ÁÓª|×ïÅŒ ¬ôïÅÊ ¬‹ðÅò œ¢ðüóïCüÍïoüÄïz\Êðâ ã  â Ð}řǙș­É™Ê™àË™óG*¤�R{9  ã ¸ºòøBÿÖ ÖðÖ õ$×ð öLÝð…ôõ�ö�ö�ööõö³ä üâþVü•øQN Sets the value for `IP_BOUND_IF` or `SO_BINDTOIFINDEX` option on this socket.Áëø�üóøIíô üÁù52 particular interface are processed by the socket.Áûù�üƒúHE If `interface` is `None`, the binding is removed. If the `interface`ÁüÐú-* index is not valid, an error is returned.Á‚û�üŠûLI One can use [`libc::if_nametoindex`] to convert an interface alias to anÁTÛû index.ÁÓª|ýû Åå Œ§üÅô ´Æüň œêüÅ™ ”‹ýÅ© ¬«ýÅÞ ¬ÎýÅÓ ¬ñýÅò œ”þÅŒ ¬µþü™ü¼üóûèüêûó¼éþä  ä Ð}řǙș­É™Ê™àË™óG*¤�R{9 ù ù ú ¬ü óÕ  >¨WTÑp™YòøBÿÖ �ÿÖ ÷$‚ÿ öLˆÿüÆ‹Vü÷„SP Sets the value for `IPV6_BOUND_IF` or `SO_BINDTOIFINDEX` option on this socket.ÁÏ…�ü×…Iíô ü¥†5˜û ߆�üç†Håû ü´‡-¸ü æ‡�üî‡Lýü T¿ˆÓý Óª|ሠÅå Œ‹‰Åô ´ª‰Åˆ œÎ‰Å™ ”ï‰Å© ¬�ŠÅÞ ¬²ŠÅÓ ¬ÕŠÅò œøŠÅŒ ¬™‹üýˆ¼ü׈èüΈó¼Í‹å  å Ð}§€ òøBÿÖ å‹Ö ø$æ‹ öLì‹üî–?üß‘IF Gets the value for `IP_BOUND_IF` or `SO_BINDTOIFINDEX` option on thisÁü­’JG socket, i.e. the index for the interface to which the socket is bound.Áü’�ü„“IF Returns `None` if the socket is not bound to any interface, otherwiseÁüÒ“ returns an interface index.ÁÓª|‰” Åå Œ³”Åô ´Ò”ň œö”Å™ ”—•Å© ¬·•ÅÞ ¬Ú•ÅÓ ¬ý•Åò œ –ÅŒ ¬Á–ü¥”¼üÿ“èüö“ó|õ–æ  æ Ð}ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw§€ ¿¢BÿÖ …—Ö ù$†—ü½¡?ü¬œKH Gets the value for `IPV6_BOUND_IF` or `SO_BINDTOIFINDEX` option on thisÁüüœJ–… Ë��üÓ�Iø… ü¡ž̆ Óª|Øž Åå Œ‚ŸÅô ´¡ŸÅˆ œÅŸÅ™ ”æŸÅ© ¬† ÅÞ ¬© ÅÓ ¬Ì Åò œï ÅŒ ¬�¡üôž¼üΞèüÅžó|Ä¡ç  ç Ð}µ‰ BÿÖ Ô¡Ö ú$Õ¡ü›©/ü‡§A> Get the value of the `SO_INCOMING_CPU` option on this socket.Áͧ�üÕ§EB For more information about this option, see [`set_cpu_affinity`].ÁŸ¨�ü§¨96 [`set_cpu_affinity`]: crate::Socket::set_cpu_affinityÁÓª|ï¨Åò œ€©üî¨&üå¨1d¢©è  è Ð}žúBÿÖ ¯©Ö û$°©,˪û�ü�ü�üüûü®™ü¢¬<üôª>; Set value for the `SO_INCOMING_CPU` option on this socket.Á·«�ü¿«(% Sets the CPU affinity of the socket.ÁÓª|ö«Åò œ‡¬üõ«&üì«1„©¬é  é Ð}òøBÿÖ º¬Ö ý$»¬cpuÁÁ¬üü±,ü³®>; Get the value of the `SO_REUSEPORT` option on this socket.Áö®�üþ®C@ For more information about this option, see [`set_reuse_port`].ÁƯ�üί52 [`set_reuse_port`]: crate::Socket::set_reuse_portÁÓª|›°ÅÓ ¬É°ÅÞ ¬ì°Å« ¤�±Åøœ±±Å€”Ò±ü»°³ü·°¸ü‘°äüˆ°ïTƒ²ê  ê Ð}›ÇBÿÖ ޲Ö þ$�²<¦³þ�ÿ�ÿ�ÿÿþÿìêüá·;üϳ;8 Set value for the `SO_REUSEPORT` option on this socket.Á�´�ü—´H¨£üä´Kû£ü´µ4ѤÓª|€¶ÅÓ ¬®¶ÅÞ ¬Ñ¶Å« ¤ô¶Åøœ–·Å€”··ü ¶³üœ¶¸üöµäüíµïtè·ë  ë Ð}òøBÿÖ ÷·Ö €$ø·A,þ·üèÄ-ü’Â=: Get the value of the `IP_FREEBIND` option on this socket.ÁÔÂ�üÜÂDA For more information about this option, see [`set_freebind_v4`].Á¥Ã�ü­Ã74 [`set_freebind_v4`]: crate::Socket::set_freebind_v4ÁÓª|üÃÅŒ ¬™ÄÅÊ ¬°ÄÅò œÇÄü˜ÄCüòÃoüéÃz\ïÄì  ì Ð}›ÇBÿÖ ûÄÖ �$üÄTŽÆ��‚�‚�‚‚�‚ìêüÔÊ?ü½Æ:7 Set value for the `IP_FREEBIND` option on this socket.ÁüÆ�ü„ÇKH If enabled, this boolean option allows binding to an IP address that isÁüÔÇJG nonlocal or does not (yet) exist. This permits listening on a socket,Áü£ÈGD without requiring the underlying network interface or the specifiedÁüïÈJG dynamic IP address to be up at the time that the application is tryingÁ”¾É to bind to it.ÁÓª|èÉÅŒ ¬…ÊÅÊ ¬œÊÅò œ³Êü„ÊCüÞÉoüÕÉz|ÛÊí  í Ð}òøBÿÖ ëÊÖ ƒ$ìÊfreebindÁDòÊüíÏ-üåÌ?< Get the value of the `IPV6_FREEBIND` option on this socket.Á©Í�ü±ÍA> This is an IPv6 counterpart of `IP_FREEBIND` socket option onÁü÷Í>; Android/Linux. For more information about this option, seeÁĺÎ [`set_freebind_v4`].Á×Î�üßÎ7Ñš Óª|¥ÏÅŒ ¬ºÏÅò œÑÏü¹Ï,ü¤ÏBü›ÏM\ôÏî  î Ð}›ÇBÿÖ €ÐÖ „$�ÐT—Ñ„�…�…�……„…ìêü–Ú?üÆÑ<9 Set value for the `IPV6_FREEBIND` option on this socket.Á‡Ò�ü�ÒAᢠüÕÒ>­£ ĘÓõ£ µÓ�ü½Ó7Ñš ùÓ�t�ÔçÏ”Ô�lœÔ On Linux:Á®Ô�<¶Ô£ÕüÂÔ(% use socket2::{Domain, Socket, Type};ÁüïÔ*' use std::io::{self, Error, ErrorKind};ÁžÕ�ü¦Õ;8 fn enable_freebind(socket: &Socket) -> io::Result<()> {ÁüæÕ  match socket.domain()? {Áü‹Ö:7 Domain::IPV4 => socket.set_freebind_v4(true)?,ÁüÊÖ:7 Domain::IPV6 => socket.set_freebind_v6(true)?,Áü‰×PM _ => return Err(Error::new(ErrorKind::Other, "unsupported domain")),ÁTÞ× };Átí× Ok(())Á,€Ø¿þŠØ�ü’Ø# # fn main() -> io::Result<()> {ÁüºØFC # let socket = Socket::new(Domain::IPV6, Type::STREAM, None)?;Áü…Ù" # enable_freebind(&socket)Á<¬ÙÍþ<¸Ù£ÕÓª|ÎÙÅŒ ¬ãÙÅò œúÙüâÙ,üÍÙBüÄÙM|�Úï  ï Ð}òøBÿÖ ­ÚÖ †$®Úé¡ D´ÚüÚæªü«ÜHE Copies data between a `file` and this socket using the `sendfile(2)`ÁüøÜ@= system call. Because this copying is done within the kernel,Áü½ÝHE `sendfile()` is more efficient than the combination of `read(2)` andÁüŠÞFC `write(2)`, which would require transferring data to and from userÁTÕÞ space.ÁäÞ�üìÞ@= Different OSs support different kinds of `file`s, see the OSÁü±ßKH documentation for what kind of files are supported. Generally *regular*Áü�à# files are supported by all OSs.ÁøÛÅ%hü©à&Ó Additional documentation can be found in manual of the OS: * DragonFly BSD: * FreeBSD: * Linux: * macOS: (archived, actually for iOS) * NetBSD: * OpenBSD: * iOS: (archived) * illumos: ÁÔà�üÜàJG The `offset` is the absolute offset into the `file` to use as startingÁT«á point.Áºá�üÂáLI Depending on the OS this function *may* change the offset of `file`. ForÁü“âHE the best results reset the offset of the file before using it again.Áàâ�üèâLI The `length` determines how many bytes to send, where a length of `None`Áü¹ã(% means it will try to send all bytes.ÁÓª|ùã ÅÜŒ£äÅŒ ¬ÂäŶ ¬åäÅå ŒˆåÅô ´§åÅò œËåň œìåÅ™ ”�æÅ© ¬­æü•ä¸üïãäüæãïDáæð ñ  ð Ð} ñ ³¡žûžúBÿÖ‚ˆˆ öæÖš êæ¢#³¡<üç ‡³¡$÷æå }Ñ }ñ]˜}<>üÃð�Óª|ûïÅŒ ¬�ðÅò œ§ðü�ð,üúïBüñïMLÆðÉò  ò Ð}žûžúBÿÖ ÙðÖÎù$Úðå$èðÑ 4ýðñ]4šñ�ô‰�Š�Š�ŠŠ‰ŠÓó üà‡Oü“�B? Set the value of the `TCP_USER_TIMEOUT` option on this socket.ÁÚ��üâ�VS If set, this specifies the maximum amount of time that transmitted data may remainÁü½‚_\ unacknowledged or buffered data may remain untransmitted before TCP will forcibly close theÁ졃 corresponding connection.ÁÃ�ü˃XU Setting `timeout` to `None` or a zero duration causes the system default timeouts toÁü¨„^[ be used. If `timeout` in milliseconds is larger than `c_uint::MAX`, the timeout is clampedÁü‹…^[ to `c_uint::MAX`. For example, when `c_uint` is a 32-bit value, this limits the timeout toÁìî… approximately 49.71 days.ÁÓª|£†ÅŒ ¬Í†ÅÊ ¬ð†Åò œ“‡Å« ¤´‡ü¿†”ü™†Àü�†Ë¤ç‡ó  ó Ð}ŠÈòøBÿÖ ü‡Ö ‹$ý‡§�<ƒˆ$Úˆ‹�Œ�Œ�ŒŒ‹ŒÑÅUÿüÂŽ>ü‡‹B? Get the value of the `TCP_USER_TIMEOUT` option on this socket.Á΋�üÖ‹IF For more information about this option, see [`set_tcp_user_timeout`].Á¤Œ�ü¬ŒA> [`set_tcp_user_timeout`]: crate::Socket::set_tcp_user_timeoutÁÓª|…�ÅŒ ¬¯�ÅÊ ¬Ò�Åò œõ�Å« ¤–Žü¡�”üûŒÀüòŒË„ÉŽô  ô Ð}ÍøBÿÖ ÚŽÖ �$ÛŽDŠ���Ž�Ž�ŽŽ�ŽŠÈUÿü©•Eüõ‘74 Attach Berkeley Packet Filter (BPF) on this socket.Á±’�ü¹’FC BPF allows a user-space program to attach a filter onto any socketÁü„“KH and allow or disallow certain types of data to come through the socket.ÁÔ“�üÜ“vs For more information about this option, see [filter](https://www.kernel.org/doc/html/v5.12/networking/filter.html)ÁÓª|á”Åò œö”ÅŒ ¬‹•üõ”,üà”Bü×”Ml°•õ ö  õ Ð} ö €„òøBÿÖ ¾•Ö �$¿•filtersÁ<Å•ü¢›-ü…™85 Detach Berkeley Packet Filter(BPF) from this socket.Á™�üÊ™A> For more information about this option, see [`attach_filter`]Á�š�ü˜š30 [`attach_filter`]: crate::Socket::attach_filterÁÓª|ÚšÅò œïšÅŒ ¬„›üîš,üÙšBüКMl©›÷  ÷ Ð}òøBÿÖ ·›Ö �$¸›üŠ 'ü·œ=: Gets the value for the `SO_COOKIE` option on this socket.Áùœ�ü��QN The socket cookie is a unique, kernel-managed identifier tied to each socket.Áü×�63 Therefore, there is no corresponding `set` helper.Á’ž�üšžµ² For more information about this option, see [Linux patch](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=5daab9db7b65df87da26fd8cfa695fb9546a1ddb)ÁÓª|ÞŸÅò œïŸüÝŸ&üÔŸ14‘ ø  ø Ð}ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw¿¢BÿÖ ˜ Ö ‘$™ ü—¦*ü¤¡>; Get the value of the `IPV6_TCLASS` option for this socket.Áç¡�üï¡B? For more information about this option, see [`set_tclass_v6`].Á¶¢�ü¾¢30 [`set_tclass_v6`]: crate::Socket::set_tclass_v6ÁÓª|‰£ ÅŒ ¬³£Å  ¼Ö£Å¶ ¬û£ÅÊ ¬ž¤Åò œÁ¤Åˆ œâ¤Å„ ¤ƒ¥Å— ¬¥¥Å« ¤È¥ÅÞ ¬ê¥ü¥£åüÿ¢‘üö¢œLž¦ù  ù Ð}§‘BÿÖ ¨¦Ö ’$©¦Dº§’�“�“�““’“ó’üº¬:üç§>; Set the value of the `IPV6_TCLASS` option for this socket.Áª¨�ü²¨C@ Specifies the traffic class field that is used in every packetsÁÔú¨ÓŠÓª|¬© ÅŒ ¬Ö©Å  ¼ù©Å¶ ¬žªÅÊ ¬ÁªÅò œäªÅˆ œ…«Å„ ¤¦«Å— ¬È«Å« ¤ë«ÅÞ ¬�¬üÈ©åü¢©‘ü™©œlÁ¬ú  ú Ð}òøBÿÖ ϬÖ ”$ЬtclassÁ4Ö¬üú°3üÄ®A> Get the value of the `TCP_CONGESTION` option for this socket.ÁН�ü’¯GD For more information about this option, see [`set_tcp_congestion`].ÁÞ¯�üæ¯=: [`set_tcp_congestion`]: crate::Socket::set_tcp_congestionÁÓª|²°Å¶ ¬Ç°Åò œÞ°üư,ü±°Bü¨°Mt�±û  û Ð}ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òwáó ¿¢BÿÖ �±Ö •$‘±|α|展•ù³•�˜�˜�˜˜•˜ïêáó Uÿ ´îÖ�ü³·Füª´A> Set the value of the `TCP_CONGESTION` option for this socket.Áð´�üø´JG Specifies the TCP congestion control algorithm to use for this socket.Áǵ�üϵJG The value must be a valid TCP congestion control algorithm name of theÁüž¶>; platform. For example, Linux may supports "reno", "cubic".ÁÓª|ë¶Å¶ ¬€·Åò œ—·üÿ¶,üê¶Büá¶M”º·ü ý  ü Ð} ý ¸ºòøBÿÖ Í·Ö ™$η tcp_ca_nameÁ\Ô·ç¹™�š�š�šš™š³ä üľ;üú¹C@ Set value for the `DCCP_SOCKOPT_SERVICE` option on this socket.Áº�üʺKH Sets the DCCP service. The specification mandates use of service codes.Áüš»KH If this socket option is not set, the socket will fall back to 0 (whichÁüê»HE means that no meaningful service code is present). On active socketsÁü·¼GD this is set before [`connect`]. On passive sockets up to 32 serviceÁüƒ½,) codes can be set before calling [`bind`]Á´½�ü¼½'$ [`connect`]: crate::Socket::connectÁüè½! [`bind`]: crate::Socket::bindÁÓª|˜¾Åò œ©¾ü—¾&ü޾1„˾þ  þ Ð}òøBÿÖ ܾÖ ›$ݾøŒ$ã¾üæÂ-üÏÀFC Get the value of the `DCCP_SOCKOPT_SERVICE` option on this socket.ÁšÁ�ü¢ÁC@ For more information about this option see [`set_dccp_service`]ÁêÁ�üòÁ96 [`set_dccp_service`]: crate::Socket::set_dccp_serviceÁÓª|ºÂÅò œËÂü¹Â&ü°Â1díÂÿ  ÿ Ð}§‘BÿÖ úÂÖ œ$ûÂüÁÅ7üúÃ@= Set value for the `DCCP_SOCKOPT_CCID` option on this socket.Á¿Ä�üÇÄ?< This option sets both the TX and RX CCIDs at the same time.ÁÓª|•ÅÅò œ¦Åü”Å&ü‹Å1lÈÅ€  € Ð}òøBÿÖ ÖÅÖ �$×ÅccidÁ$ÝÅüñÈ-üâÆFC Get the value of the `DCCP_SOCKOPT_TX_CCID` option on this socket.Á­Ç�üµÇA> For more information about this option see [`set_dccp_ccid`].ÁûÇ�üƒÈ30 [`set_dccp_ccid`]: crate::Socket::set_dccp_ccidÁÓª|ÅÈÅò œÖÈüÄÈ&ü»È1døÈ�  � Ð}§‘BÿÖ …ÉÖ ž$†Éü”Ì-ü…ÊFC Get the value of the `DCCP_SOCKOPT_RX_CCID` option on this socket.ÁÐÊ�üØÊA«ø žË�ü¦Ë3„ù Óª|èËÅò œùËüçË&üÞË1d›Ì‚  ‚ Ð}§‘BÿÖ ¨ÌÖ Ÿ$©ÌüÅÏMü¨ÍKH Set value for the `DCCP_SOCKOPT_SERVER_TIMEWAIT` option on this socket.ÁøÍ�ü€ÎFC Enables a listening socket to hold timewait state when closing theÁüËÎ?< connection. This option must be set after `accept` returns.ÁÓª|™ÏÅò œªÏü˜Ï&ü�Ï1ÄÌσ  ƒ Ð}òøBÿÖ åÏÖ  $æÏ hold_timewaitÁlìÏü¡Ô6üüÑNK Get the value of the `DCCP_SOCKOPT_SERVER_TIMEWAIT` option on this socket.ÁÏÒ�ü×Ò96 For more information see [`set_dccp_server_timewait`]Á•Ó�ü�ÓIF [`set_dccp_server_timewait`]: crate::Socket::set_dccp_server_timewaitÁÓª|õÓÅò œ†ÔüôÓ&üëÓ1¤¨Ô„  „ Ð}›ÇBÿÖ ½ÔÖ ¡$¾Ôü©Ú?ü™ÖFC Set value for the `DCCP_SOCKOPT_SEND_CSCOV` option on this socket.ÁäÖ�üìÖKH Both this option and `DCCP_SOCKOPT_RECV_CSCOV` are used for setting theÁü¼×IF partial checksum coverage. The default is that checksums always coverÁüŠØEB the entire packet and that only fully covered application data isÁüÔØKH accepted by the receiver. Hence, when using this feature on the sender,Áü¤ÙJG it must be enabled at the receiver too, with suitable choice of CsCov.ÁÓª|ýÙÅò œŽÚüüÙ&üóÙ1œ°Ú…  … Ð}òøBÿÖ ÄÚÖ ¢$ÅÚlevelÁ,ËÚüÝÞ0ü¼ÜIF Get the value of the `DCCP_SOCKOPT_SEND_CSCOV` option on this socket.ÁŠÝ�ü’ÝDA For more information on this option see [`set_dccp_send_cscov`].ÁÛÝ�üãÝ?< [`set_dccp_send_cscov`]: crate::Socket::set_dccp_send_cscovÁÓª|±ÞÅò œÂÞü°Þ&ü§Þ1|äÞ†  † Ð}§‘BÿÖ ôÞÖ £$õÞüžâ?ü÷ßIF Set the value of the `DCCP_SOCKOPT_RECV_CSCOV` option on this socket.ÁÅà�üÍàJG This option is only useful when combined with [`set_dccp_send_cscov`].Áœá�ü¤á?ʉ Óª|òáÅò œƒâüñá&üèá1œ¥â‡  ‡ Ð}òøBÿÖ ¹âÖ ¤$ºâï‡ ,ÀâüÒæ0ü±äIF Get the value of the `DCCP_SOCKOPT_RECV_CSCOV` option on this socket.Áÿä�ü‡åDA For more information on this option see [`set_dccp_recv_cscov`].ÁÐå�üØå?< [`set_dccp_recv_cscov`]: crate::Socket::set_dccp_recv_cscovÁÓª|¦æÅò œ·æü¥æ&üœæ1|Ùæˆ  ˆ Ð}§‘BÿÖ éæÖ ¥$êæüùéDüìçJG Set value for the `DCCP_SOCKOPT_QPOLICY_TXQLEN` option on this socket.Á»è�üÃèLI This option sets the maximum length of the output queue. A zero value isÁü”é*' interpreted as unbounded queue length.ÁÓª|ÍéÅò œÞéüÌé&üÃé1¼€ê‰  ‰ Ð}òøBÿÖ ˜êÖ ¦$™êñ]4ŸêüÀî4ü–ìFC Get the value of the `DCCP_SOCKOPT_QPOLICY_TXQLEN` on this socket.Ááì�üéìHE For more information on this option see [`set_dccp_qpolicy_txqlen`].Á¶í�ü¾íGD [`set_dccp_qpolicy_txqlen`]: crate::Socket::set_dccp_qpolicy_txqlenÁÓª|”îÅò œ¥îü“î&üŠî1œÇîŠ  Š Ð}§‘BÿÖ ÛîÖ §$Üîü•ôRüµðNK Get the value of the `DCCP_SOCKOPT_AVAILABLE_CCIDS` option on this socket.Áˆñ�ü�ñ85 Returns the list of CCIDs supported by the endpoint.ÁÍñ�üÕñDA The parameter `N` is used to get the maximum number of supportedÁüžòKH endpoints. The [documentation] recommends a minimum of four at the timeÁ|îò of writing.Á‚ó�üŠóPM [documentation]: https://www.kernel.org/doc/html/latest/networking/dccp.htmlÁÓª|éóÅò œúóüèó&üßó1¤œô‹  ‹ Ð}�†BÿÖŠ©© ÁôÖŠt±ô ¨Š$Âô ·ôüÓù-üÛ÷JG Get the value of the `DCCP_SOCKOPT_GET_CUR_MPS` option on this socket.Áªø�ü²øFC This option retrieves the current maximum packet size (applicationÁÜýø payload size) in bytes.ÁÓª|§ùÅò œ¸ùü¦ù&ü�ù1dÚùŒ  Œ Ð}§‘BÿÖ çùÖ «$èùüˆý*ü¾û?< Get the value for the `SO_BUSY_POLL` option on this socket.Á‚ü�üŠüCÞÅ Óª|ÜüÅò œíüüÛü&üÒü1L�ý�  � Ð}§‘BÿÖ ™ýÖ ¬$šýüÝÿ=ü“þ?< Set the value for the `SO_BUSY_POLL` option on this socket.Á×þ�üßþCÞÅ Óª|±ÿÅò œÂÿü°ÿ&ü§ÿ1läÿŽ  Ž Ð}òøBÿÖ òÿÖ ­$óÿÚQLùÿ¬Üƒüð�! Berkeley Packet Filter (BPF).Á’‚�ü–‚" See [`Socket::attach_filter`].Á¹‚�ü½‚;8 [`Socket::attach_filter`]: crate::Socket::attach_filterÁÓª|ƒƒÅò œ˜ƒÅŒ ¬­ƒü—ƒ,ü‚ƒBüù‚MT烀„)ý¿S’副̧…4§…É®®Ú�|“†Óª|Ï…Åò œä…ÅŒ ¬ù…üã…,üÎ…BüÅ…M€„±üʆA䩆 Create new `SockFilter`.Á׆€„Bÿ°° ±øŒ5†…�?†��I†¡S†ü¿ˆ#Óª|û‡Åò œ�ˆÅŒ ¬¥ˆü�ˆ,üú‡Büñ‡M€„³ g³üéˆBìˆ� � ‘  � €„ � €g€gŠ‚gê ûcƒg�ÁûcØ«q¢1È¡‘ ãÀBÿ² ðˆ² ³$ñˆœ ÷ˆü¸Œ9Óª|�ŒÅò œ¡Œü�Œ&ü†Œ1еµᜠt½Œµ„¶·Ý"Þ"· ÃŒ\øŒ4ýŒ´´¸ºÄ‘�,”�•  • µ„ • ¸ºBÿ´ š�´ ·Š$›�Üæ�Ð}¹…$¹üˆŽ!,‹Ž–  – Ð}®L®LÉͰLµ„Û#±LéÍÛ#t4bE™– Bÿ¸ ‘ޏ ¹$’Žôœ�Ð}»£#»äÁ�LÄ�—  — Ð}Bÿº Î�º »$Ï�üÿ�$›…½®½üª�'$­�Ð}›…Bÿ¼¼ ½sockÁ$²�üÔ‘ Ð}¿§#¿ìû‘\þ‘Ð}Bÿ¾¾ ¿$Š’ü¼’$Ð}Á®Áüç’%$ê’›…Ð}BÿÀÀ Áµ„ï’üŽ” Ð}Ã¥#Ãüµ”1\¿”Ð}ÿ õ„Ë”TÅ7Õ¢DÚ7î¢î¢ÿ¢ÿ¢££"£"£üÏ9Åú œ¬8ÅÞ ¬Å8Å„ ¤à8ÅÇÚœú8ÅÓ ¬“9Å€”®9ü¦8�ü¢8¢ü™8­3£tø9E£„�:V£”Ü:Óª|¬:Åò œ½:ü«:&ü¢:1h£|Æ;Óª|ú:Åò œ�;ÅŒ ¬¤;üŽ;,üù:Büð:Mz£\à?Í�ÐÑÒÓ´µ@üò?>; Domain for IPv4 communication, corresponding to `AF_INET`.Á$¿@ÏÏÍ�´­Aüé@?< Domain for IPv6 communication, corresponding to `AF_INET6`.Á$·AÏÏÍ�´ÐBüâAEB Domain for Unix socket communication, corresponding to `AF_UNIX`.ÁÅ€”¶B¤µBü¬B$ÚBÏÏÍ�ü¶C7ü„C-* Returns the correct domain for `address`.Á\ÃC…zÍ�BÿÏÏ ÓŸE�ÜùDÍ�Õ®ÕÜ›E$žEÍ�BÿÔÔ Õš £EÜÔE×®×ÜöE$ùEÍ�BÿÖÖ ×š þEL¬J…‚ÙÚÛÜÝ´™Kü¼J(% Type corresponding to `SOCK_STREAM`.ÁéJ�üñJ# Used for protocols such as TCP.Á4£KØØ…‚¬«LüÏK'$ Type corresponding to `SOCK_DGRAM`.ÁûK�üƒL# Used for protocols such as UDP.Á,µLØØ…‚¤ìMüßL&# Type corresponding to `SOCK_DCCP`.ÁŠM�ü’M Used for the DCCP protocol.ÁÓª|ÀMÅò œÑMü¿M&ü¶M1$öMØØ…‚ÌÐOüžN+( Type corresponding to `SOCK_SEQPACKET`.ÁÓª|áNʤ‚OÅ€”˜OÅäÚ¬¬Oü�OAüýNFü×NrüÎN}LÚOØØ…‚œ‡RüŒP%" Type corresponding to `SOCK_RAW`.ÁÓª|ÉPÅÇÚœ÷Pʤ˜QÅ€”ºQÅäÚ¬ÚQüéP�üåP•ü¿PÁü¶PÌ‘RØØ…‚̵R…‚ß®ßÌÕR$ØR…‚BÿÞÞ ßª ÝRÌŠSá®á̪S$­S…‚Bÿàà ᪠²SlâV½‚ãäåæçèéêÔÆWüöV'$ Protocol corresponding to `ICMPv4`.ÁÅ€”¬W¤«Wü¢W4ÐWâ⽂ÔÕXü…X'$ Protocol corresponding to `ICMPv6`.ÁÅ€”»X¤ºXü±X4ßXâ⽂¼¿Yü–Y$! Protocol corresponding to `TCP`.ÁÉYâ⽂¼£ZüúY$! Protocol corresponding to `UDP`.Á­Zâ⽂̩[üþZ&# Protocol corresponding to `MPTCP`.ÁÅò œäZÜÞZ,³[â⽂ÄÈ\üè[%" Protocol corresponding to `DCCP`.ÁÓª|œ\Åò œ­\ü›\&ü’\1$Ò\â⽂Ä�^ü…]%" Protocol corresponding to `SCTP`.ÁÓª|¹]Ŷ ¬Î]Åò œå]üÍ],ü¸]Bü¯]M$‹^â⽂ܼ`ü¾^(% Protocol corresponding to `UDPLITE`.ÁÓª|þ^ÅŒ ¬¨_Ŷ ¬Ë_ÅÊ ¬î_Åò œ‘`üš_•üô^Áüë^Ì<Æ`â⽂ì¾b½‚ì®ììâb$åb½‚Bÿëë ì¦ êbìŸcî®îìÃc$Æc½‚Bÿíí î¦ ËctÅfÅÇÚœ‚fÅ€”—fÅäÚ¬«fü�f@üýeEüôePõ‚ðü¦i'üÚf74 Check if the message contains a truncated datagram.Á–g�üžg63 This flag is only used for datagram-based sockets,ÁÜÙg not for stream sockets.Áùg�ü�h52 On Unix this corresponds to the `MSG_TRUNC` flag.Áü»h@= On Windows this corresponds to the `WSAEMSGSIZE` error code.ÁʤŠi´‰iü€i!d³iõ‚Bÿïï ðˆ—ý üþiKH A version of [`IoSliceMut`] that allows the buffer to be uninitialised.ÁÊj�üÎj'$ [`IoSliceMut`]: std::io::IoSliceMutÁ„–kÌ2óóòŠVk]ï‡WÚòô®ƒòŠBÿý E®ƒòŠBÿññ òÌ2§kÌ«kññ®ƒüÈk,Ì2ööòŠ÷ g÷Íküûk:þk¨ © ª  ¨ òŠ © €g€gŠ‚gê ûcƒg�ÁûcØ«q¢1È¡ª ãÀBÿõ ‚lõ ÷Ì2$ƒlñ‰lìñlÌ2ùùòŠúölü±nBü•m;8 Creates a new `MaybeUninitSlice` wrapping a byte slice.ÁÕm�dÝm # PanicsÁîm�üöm63 Panics on Windows if the slice is larger than 4GB.Á¸n°³ òŠBÿøø úÌ2�Á¼nü¹o'Ì2üüòŠýþÝ"Þ"þ¾o\ço4ìoûûÌãü�p%,�p«  « òŠ « ÌãBÿû –pû þÌ2$—püØp*Ì2€€òŠ�ê"�Ýpü‰q1LŒq¬  ¬ òŠ ¬ ÌãBÿÿ –qÿ �Ì2$›qŒÙxÆ‹ƒ„…†üÙy"üñx96 Returns a new, empty set of TCP keepalive parameters.ÁæyÆ‹Bÿ‚‚ ƒü¼„4ü§€KH Set the amount of time after which TCP keepalive probes will be sent onÁ¬÷€ idle connections.Á‘��ü™�74 This will set `TCP_KEEPALIVE` on macOS and iOS, andÁüÕ�>; `TCP_KEEPIDLE` on all other Unix operating systems, exceptÁü˜‚=: OpenBSD and Haiku which don't support any way to set thisÁüÚ‚B? option. On Windows, this sets the value of the `tcp_keepalive`Áü¡ƒ# struct's `keepalivetime` field.ÁɃ�üу?< Some platforms specify this value in seconds, so sub-secondÁü•„" specifications may be omitted.ÁLɄƋÑÅÆ‹Bÿ‚‚ „�Û �üÏŒ<üÈ…JG Set the value of the `TCP_KEEPINTVL` option. On Windows, this sets theÁü—†DA value of the `tcp_keepalive` struct's `keepaliveinterval` field.Áà†�üè†85 Sets the time interval between TCP keepalive probes.Á¥‡�ü­‡?àÙ üñ‡"ªÚ ÅŒ ¬«ˆÅ  ¼ÊˆÅ÷ÄëˆÅ¶ ¬�‰ÅÊ ¬¬‰ÅÞ ¬Ë‰Åå Œê‰Åô ´…ŠÅò œ¥ŠÅˆ œÂŠÅ„ ¤ßŠÅ™ ”ýŠÅ© ¬™‹Åɬ¸‹Å« ¤×‹Åøœõ‹Å€”–Œ¸‘Œ®Œœ­Œü•Œ,ü¡ˆ§ü˜ˆ²l܌ƋÑÅÆ‹Bÿ‚‚ …î�©aù�üì”5üë�.+ Set the value of the `TCP_KEEPCNT` option.ÁžŽ�ü¦ŽKH Set the maximum number of TCP keepalive probes that will be sent beforeÁüöŽFC dropping a connection, if TCP keepalive is enabled on this socket.ÁÓª|Ô�ÅŒ ¬þ�Å  ¼¡�Å÷ÄÆ�Ŷ ¬ì�ÅÊ ¬�‘ÅÞ ¬²‘Åå ŒÕ‘Åô ´ô‘Åò œ˜’ň œ¹’Å„ ¤Ú’Å™ ”ü’Å© ¬œ“Å« ¤¿“Åɬá“Åøœ„”Å€”©”¸‘ŒÁ”œÀ”ü¨”,üð�ïüÊ�›üÁ�¦dù”ƋƋBÿ‚‚ †Ùž¹aãžü’˜)üý•0- Configuration of a `sendmsg(2)` system call.Á®–�ü²–OL This wraps `msghdr` on Unix and `WSAMSG` on Windows. Also see [`MsgHdrMut`]Áü‚—)& for the variant used by `recvmsg(2)`.ÁÅÇÚœº—Å€”Ï—ÅäÚ¬ã—ü¹—@üµ—Eü¬—P4�˜„Xˆ‘X‰žXŠ‰Šˆ‘X‘Xü€™Q‡‡öW‹€Œ¶XÒ¤T­æ² ˜„X‘XžXÒ¤T­æ² ˜‹Œ,¤˜,«˜D²˜”˜,˜‡‡˺ šT€™‡‡„!„!…!ƒÐo$z�é - „XÃy ‘XŒ‰Œ‰�‰ùÃ�‰óö7 Å0ײ÷([O‘X žX¸ºü§š;ÅÇÚœä™Å€”ù™ÅäÚ¬�šüã™@üß™EüÖ™P„XŽ‘X�žX��Ž�Óè ‘’“”•,¬š,³šDºšüÍ›.üéš52 Create a new `MsgHdr` with all empty/zero fields.ÁÔ›Óè Bÿ�� ‘„X‘XžXüÞž9ü¶�*' Set the address (name) of the message.Áå��üí�JG Corresponds to setting `msg_name` and `msg_namelen` on Unix and `name`Á켞 and `namelen` on Windows.ÁLåžÓè §ê Óè Bÿ�� ’„X‘XžX$óžûê$ùžü“¡AüçŸ%" Set the buffer(s) of the message.Á‘ �ü™ MJ Corresponds to setting `msg_iov` and `msg_iovlen` on Unix and `lpBuffers`Áüë # and `dwBufferCount` on Windows.Ád𡱠Óè ‘X Œ‰Œ‰�‰ùÃ�‰óö7 Å0ײ÷([O± Óè Bÿ�Ç¡� “„X‘XžX$«¡¸û$±¡üü£:üÙ¢*' Set the control buffer of the message.Áˆ£�ü�£IF Corresponds to setting `msg_control` and `msg_controllen` on Unix andÁÌÞ£ `Control` on Windows.Ádƒ¤Óè óê Óè Bÿ�� ”„X‘XžX$”¤�Áš¤ü¸¦6ü½¥! Set the flags of the message.Áã¥�üë¥HE Corresponds to setting `msg_flags` on Unix and `dwFlags` on Windows.ÁT¿¦Óè Óè Bÿ�� •„X‘XžX$ΦØZ,Ô¦ü�¨JÅÇڜ̧ŀ”á§ÅäÚ¬õ§ü˧@üǧEü¾§P»Y—‘X˜žX™˜—™›Œš gš,”¨,›¨D¢¨üà¨:㨲 ³ ´  ² ›Œ ³ €g€gŠ‚gê ûcƒg�ÁûcØ«q¢1È¡´ ãÀBÿ– 稖 š»Y‘XžX$è¨ñî¨ü‘ª'ÅÇڜΩŀ”ã©ÅäÚ¬÷©üÍ©@üÉ©EüÀ©P8µ 8¶ 8· · µ ¶ íŒüϬ,ü½ª0- Configuration of a `recvmsg(2)` system call.Áîª�üòªPM This wraps `msghdr` on Unix and `WSAMSG` on Windows. Also see [`MsgHdr`] forÁüë%" the variant used by `sendmsg(2)`.ÁÅÇÚœ÷«Å€”Œ¬ÅäÚ¬ ¬üö«@üò«Eüé«PLÚ¬„X�‘XžžXŸ�ŸžÁè üÀ­…œœãY €¡¶XLg'¤!ÍqP„X‘XžXLg'¤!ÍqP ¡,ä¬,ë¬Dò¬”‚­,‚­œœ˺ ›TÀ­œœ„!„!…!ƒÐo$z�é - „XÃy ‘XññòŽ<ôó Vk]ï‡WÚ‘X žX¸ºü›¯>ÅÇڜخŀ”í®ÅäÚ¬�¯ü×®@üÓ®EüÊ®P„X£‘X¤žX¥¤£¥œý ¦§¨©ª«, ¯,§¯D®¯üǰ1üà¯85 Create a new `MsgHdrMut` with all empty/zero fields.Áΰœý Bÿ¢¢ ¦„X‘XžXü•´=ü¶²2/ Set the mutable address (name) of the message.Áí²�üõ²J€í ìijÔí Lœ´œý ðþ œý Bÿ¢¢ §„X‘XžX$ª´ûê$°´üÖ¶Nü¢µ-* Set the mutable buffer(s) of the message.ÁÔµ�üܵM ï ü®¶#øï dݶ¸ œý ‘X ññòŽ<ôó Vk]ï‡WÚ¸ œý Bÿ¢—·¢ ¨„X‘XžX$û$ô¶ü¾¹Kü“¸2/ Set the mutable control buffer of the message.Áʸ�üÒ¸I�ò Ì ¹ðò dŹœý žXÌãœý Bÿ¢¢ ©„X‘XžX$Ö¹�Áܹü¤» üúº%" Returns the flags of the message.Á,«»¹  ¹ œý õ‚Bÿ¢ ±»¢ ª„X‘XžX$²»üè½"üù»*' Gets the length of the control buffer.Á¨¼�ü°¼]Z Can be used to determine how much, if any, of the control buffer was filled by `recvmsg`.Á’½�üš½IF Corresponds to `msg_controllen` on Unix and `Control.len` on Windows.Á\コ  º œý Bÿ¢ û½¢ «„X‘XžX$ü½ü”¿MÅÇڜѾŀ”æ¾ÅäÚ¬ú¾üо@ü̾EüþP»Y­‘X®žX¯¯­®»�° g°,™¿, ¿D§¿üè¿:ë¿» ¼ ½  » »� ¼ €g€gŠ‚gê ûcƒg�ÁûcØ«q¢1È¡½ ãÀBÿ¬ ↓ °»Y‘XžX$ð¿ñö¿üœÁ*ÅÇÚœÙÀÅ€”îÀÅäÚ¬‚ÁüØÀ@üÔÀEüËÀP8¾ 8¿ 8À À ¾ ¿ �Ž´ã"ã skipÁlÔ"„Ò"Lð" ú" æ4 ™# ¸#, š#8¦:<›#& ¢#8ý¤# §# ¶#, ©#8ô <ª#& ±#8ý³#*º# ½# ë$8µ4Ç# Í# Î# å$ 8Ÿ[LÜ# å# æ# ï#8__Áç#8introÁ,ê#$ ð#8Ÿ[Lþ# ‡$ ˆ$ £$8„� ‰$8Ì$Œ$, ‘$8¦:<’$ ™$ ¢$, š$8ô <›$$ ¤$8Ÿ[L²$ »$ ¼$ Ú$8„� ½$8É<À$, È$8¦:<É$ Ð$ Ù$, Ñ$8ô <Ò$$ Û$% ì$ ‘% ¶%8Ì$’%& –%, ˜%8¦:<™%&  %8ý¢% ¥% ´%, §%8ô <¨%& ¯%8ý±%*¸% »% ²&8µ4Å% Ë% Ì% ¬&8Ÿ[LÚ% ã% ä% í%8„� å%8‘� ,è%$ î%8Ÿ[Lü% …& †& ¡&8„� ‡&8Ì$Š&, �&8¦:<�& —&  &, ˜&8ô <™&$ ¢&% ³& ×& ÿ&8É<Ø&& ß&, á&8¦:<â&& é&8ýë& î& ý&, ð&8ô <ñ&& ø&8ýú&*�' „' þ'8µ4Ž' ”' •' ø'8Ÿ[L£' ¬' ­' ¶'8„� ®'8‘� ,±'$ ·'8Ÿ[LÅ' Î' Ï' í'8„� Ð'8É<Ó', Û'8¦:<Ü' ã' ì', ä'8ô <å'$ î'% ÿ' —(  (8„� ˜(8‘� ,›(*¢( ¥( ø(7B\n\nAdditional documentation can be found in manual of the OS:\n\nÁü¯(D% ù( ž) Å)8„� Ÿ)8Ì$¢), §)8¦:<¨)& ¯)8ý±) ´) Ã), ¶)8ô <·)& ¾)8ýÀ)*Ç) Ê) à28µ4Ô) Ú) Û) Ú2p79 * DragonFly BSD: \nÁ,ß*$ ä*77 * FreeBSD: \nÁTø,$ ‚-7n * macOS: (archived, actually for iOS)\nÁü³.'$ Ú.7# * NetBSD: (archived)\nÁ¬á1$ ö17- * illumos: [`SocketAddr`], [`SocketAddrV4`], and [`SocketAddrV6`] types.ÁDøÃyFV.*4_]´µ̇<‡³³½›t¦¦³³óM]Ãy·†·óMóM© ©ÃyÃyBÿ¶å¶ ·óMü�ü üîøJG A local interface specified by its index or an address assigned to it.Á¹ù�ü½ùOL `Index(0)` and `Address(Ipv4Addr::UNSPECIFIED)` are equivalent and indicateÁü�úC@ that an appropriate interface should be selected by the system.ÁÅú œäúÅÞ ¬ýúÅ„ ¤˜ûÅÇÚœ²ûÅÓ ¬ËûÅ€”æûüÞú�üÚú¢üÑú­¼¦üã|”Ùíš~YŸ¹º¼½º»ã|Bÿ½¾�¾ã|Bÿ"Ÿ¼Äü An interface index.Á"Ÿ¸¸ º"Ÿ"Ÿã|Bÿ¸¸¥´ æü¸¸qŸüðü(% An address assigned to an interface.ÁqŸ¸¸ ½qŸqŸ�¾ã|Bÿ¸¸µ D¥ý¸¸�¾J^”ã|À gÀJ^J^�Ž� �ã| Ž€g€gŠ‚gê ûcƒg�ÁûcØ«q¢1È¡�ãÀBÿ¿áˆü¿ ÀJ^œJ^ â�ü•ã|€a€a€a–ã|€a–ã|ĆĀa€a� �ã|ã|BÿÃã•üà ĀaÈäÙÐ}Æ®Æðä� 䄳~Ð}BÿÅÅ ÆÚ0ä‰ÈåÙÐ}È®Èðå� 儸~Ð}BÿÇÇ ÈÚ0å‰ÈæÙ Ð}Ê®Êðæ� æ„¿Ð}BÿÉÉ ÊÚ0æ‰ÈçÙ!³~Ì®Ìðç� ç„Ð}³~BÿËË ÌÚ0ç‰ÈèÙ"ø~ήÎðè� è„Ð}ø~BÿÍÍ ÎÚ0è‰ÈéÙ#¿Ð®Ððé� é„Ð}¿BÿÏÏ ÐÚ0é‰ðì¬%Í�Ò gÒøìÙBìÜŽ � �  Ž Í� � €g€gŠ‚gê ûcƒg�ÁûcØ«q¢1È¡� ãÀBÿÑìàÑ Ò ìáœìçðõ¬&…‚Ô gÔøõÙBõÜ‘ ’ “  ‘ …‚ ’ €g€gŠ‚gê ûcƒg�ÁûcØ«q¢1È¡“ ãÀBÿÓõàÓ Ô õáœõçðþ¬'½‚Ö gÖøþÙBþÜ” • –  ” ½‚ • €g€gŠ‚gê ûcƒg�ÁûcØ«q¢1È¡– ãÀBÿÕþàÕ Ö þáœþçü¯‹(üô‰)& See [`Socket::dccp_available_ccids`].ÁžŠ�ü¢ŠIF [`Socket::dccp_available_ccids`]: crate::Socket::dccp_available_ccidsÁÓª|öŠÅò œ‡‹üõŠ&üìŠ1Olº‹ŠØØᜠtÈ‹µ„¸�=gk߉ÙÛ! ΋”Þ‹LÞ‹É××ó‡\ö‹4ö‹É×ׇߊÝÝᜠpàÈ‹µ„ß gß|‡‡’ “ ”  ’ µ„ “ €g€gŠ‚gê ûcƒg�ÁûcØ«q¢1È¡” ãÀBÿÜà§‹Ü ßŠ‡œ‡ÈáÙPÐ}á®áðá� á„�†Ð}Bÿàà áÚ0á‰ÈâÙQÐ}ã®ãðâ� â„džÐ}Bÿââ ãÚ0â‰ÈãÙRÐ}å®åðã� ã„�‡Ð}Bÿää åÚ0ã‰ÈäÙS�†ç®çðä� ä„Ð}�†Bÿææ çÚ0ä‰ÈåÙTdžé®éðå� å„Ð}džBÿèè éÚ0å‰ÈæÙU�‡ë®ëðæ� æ„Ð}�‡Bÿêê ëÚ0æ‰ÁŸüØ;;8 Specification of the communication domain for a socket.Á”<�ü˜$! into libc for various constants.Á«>�ü¯>OL This type is freely interconvertible with C's `int` type, however, if a rawÁüÿ> value needs to be provided.ÁX4Ð?Í�µ'ïPâa‡—íîÍ�BÿÁŸ5Í�Bÿìì í,×?ìì ç¨?àÍ�ŠŠŠáÍ�ŠáÍ�ò†òŠŠ˜  ˜ Í�Í�Bÿñè®?ñ òŠŒŠâÍ�ôÎôŒŠŒŠŒŠŒŠ™  ™ Í�Bÿóéµ?ó ôŒŠ‹ãÍ�‹ãÍ�÷ù±÷‹‹š ›  š Í� › Í�Bÿöê¹?ö ÷‹î ‹ ü©F96 Specification of communication semantics on a socket.ÁãF�üçFM‘Ì üµGPèÌ ü†HMJ as [`Type::STREAM`], [`Type::DGRAM`], etc, are provided to avoid reachingÁüÔH$šÎ ùH�üýHOÔÎ üÍI­Ï Y$žJ…‚”-€òÙ‚Ïùú…‚Bÿ 5…‚Bÿøø ù,£Jøø ëöIä…‚‰�‰�‰�å…‚‰�å…‚þ†þ‰�‰�œ  œ …‚…‚BÿýìüIý þ‰�Žæ…‚€Î€ŽŽŽŽ�  � …‚BÿÿíƒJÿ €ŽŒŽç…‚ŒŽç…‚ƒù±ƒŒŽŒŽž Ÿ  ž …‚ Ÿ …‚Bÿ‚î‡J‚ ƒŒŽî ŒŽ_ üÛSGD Protocol specification used for creating sockets via `Socket::new`.Á£T�ü§TM‘Ì üõT52 addition to an injection point for documentation.Á«U�ü¯UOÔÎ üÿU­Ï ZDÐV½‚§�.â¹Q�…†½‚Bÿ_ 5½‚Bÿ„„ …,ÙV„„ ï¨V轂ô�ô�ô�齂ô�齂ІŠô�ô�     ½‚½‚Bÿ‰ð®V‰ Šô�n‘꽂ŒÎŒn‘n‘n‘n‘¡  ¡ ½‚Bÿ‹ñµV‹ Œn‘÷‘뽂÷‘뽂�ù±�÷‘÷‘¢ £  ¢ ½‚ £ ½‚BÿŽò¹VŽ �÷‘î ÷‘® üøc  Flags for incoming messages.Á™d�ü�dA> Flags provide additional information about incoming messages.ÁÅÇÚœídÅ€”‚eÅäÚ¬–eüìd@üèdEüßdP[Láeõ‚:�âa‘’õ‚Bÿ® 5õ‚Bÿ�� ‘,ëe�� ó¹eìõ‚š•š•š•íõ‚š•íõ‚–†–š•š•¤  ¤ õ‚õ‚Bÿ•ô¿e• –š•–îõ‚˜Î˜––––¥  ¥ õ‚Bÿ—õÆe— ˜–�–ïõ‚�–ïõ‚›ù±›�–�–¦ §  ¦ õ‚ § õ‚BÿšöÊeš ›�–î �–¼Ûrüäq30 Configures a socket's TCP keepalive parameters.Á˜r�üœr&# See [`Socket::set_tcp_keepalive`].Á\dærÆ‹ƒZÕ©l Æ�žŸ´ös$ösœœŠÈÔ™vÅ— ¬©tÅÇÚœÈtÅÓ ¬åtÅ¥Œ„uʤŸuÅË”½uÅú œÙuÅäÚ¬öuüŸtòü›t÷ü’t‚D™vœœŠÈ¤ÀxÅ— ¬ÐvÅÇÚœïvÅÓ ¬ŒwÅ¥Œ«wʤÆwÅË”äwÅú œ€xÅäÚ¬�xüÆvòüÂv÷ü¹v‚<Àxœœ÷±×ðÆ‹¡ g¡××­ ® ¯  ­ Æ‹ ® €g€gŠ‚gê ûcƒg�ÁûcØ«q¢1È¡¯ ãÀBÿ ÷Ìr  ¡×œ×ÔšñÆ‹£†£ÔšÔš°  ° ƋƋBÿ¢øÓr¢ £ÔšÝ»­K±¿­K–À­K æ­Kÿ­KÈ­KØÏ­K\ЭKÝЭKgÑ­KíÑ­K Ó­KÇÓ­KÚÔ­KÖ­K×­Kø×­KSØ­K"Ú­K Ês­KÞs­K¥Ú­K ßy­KHÛ­K ‡{­K¤é­KQü­K õ2­Kq­K ƒ;­K­K ÐC­Kª ­K­Kç­Kp­K€­K“­KE!­Ky#­Kõ$­KÒ)­K¢1­K Í~­Kž3­K ‹ƒ­K¯4­K Å…­K =­K Æ‘­KÝ‘­K,@­K å–­Kü–­K�B­K ›œ­KÖG­K øŸ­KI­K Т­KÞK­K 㨭Kú¨­KN­K ©®­KÀ®­KÜS­K „º­KkU­KKX­K —­K¦Â­KªÂ­K®Â­Kö\­K »Å­K^­K ÈÇ­Km_­K ñÉ­KûÉ­K~d­K ÍÍ­K×Í­Kf­K �Ò­K¨j­K âÔ­K ïÔ­Kök­K ¨×­K ½×­KŽm­K ¸Ú­KÂÚ­K ÎÚ­K‡o­K ˜Þ­K¢Þ­K ¶Þ­Kq­K ‘á­K™á­K�á­K¡á­Ká­Kç­KJ^­K5­K€t­Kúu­Kx­KDy­KŸz­K.|­Ks­K�­K‰ƒ­Kÿ„­K§†­K‡ˆ­KkŠ­K‹­K?�­KfŽ­K|�­KÑ�­KÀ’­K”­KŒ•­K¡–­K«—­K‰›­KŸ­K¯ ­KR¥­K˧­K ½ü­K Óü­K]©­K …�­K ›�­K½«­K ꊭK ˆ‹­KÒ­­K „“­K ¢“­Kå°­K ‘�­K «�­K É�­KK³­K Ÿ¦­K ¹¦­K צ­Kí´­K3¸­Kº­K,»­K ¸º­K“¼­K…½­K#¼­Kº­KÙ¸­Kd·­K!µ­Kc³­K“°­KK®­Kõ¬­K­©­K�§­Kÿ¥­K¾£­Kû¡­K Ó•­K ­K ¹œ­K‰ž­Kñœ­Ke›­K}™­K˜­K–­K´”­K “­K’­K÷�­K»�­K9�­K‹­Kmˆ­K†­Kcƒ­K]‚­K&­KÍ|­Kxz­K=s­K °™­Kùq­K�o­Kòn­K °¦­Kn­K È©­KÙ©­Km­K €®­K%l­K ¼°­KͰ­K2k­K í²­KJj­K ¥´­K¯´­Kÿi­KTi­K õµ­Keh­K ­·­K··­Kh­KHg­K ò¸­K†¹­K\­KÓ­K§Y­K î­K‚­K�­Kìê­K샭KØ­Kõê­Kõƒ­K­Kþê­Kþƒ­Kð%­K ’•­K«•­KÔ#­Kp#­K²"­KH"­K¾ ­K ‡³­K' ­K�­KÞ­KE­K¶­K¦­K=­K3­Kl­K ÖÔ­Kû­K …×­KŽ­Ke­K€­K¸­KŠ ­KÎ ­K ­K­K>­K9­Kžž­K]­Kˆ¡­K¿­Kñ¦­Kõ¦­Kù¦­K­KÒþ­K쪭Kbþ­K ±¬­K ý­KÒ¯­K ⯭K ü­Kû±­Kÿ±­Kƒ²­K+ù­Kœó­K ó­K¢ñ­K ±å­K+é­KEè­Kµæ­K/æ­K¤ä­KÚâ­Kzá­K¶ß­K<Þ­K-Ü­KèÙ­KYØ­KÄÕ­KÔ­KþЭK'Ï­KHÌ­KšÊ­K‡È­K8Æ­K…íK ïð­K÷¿­K¾­K›»­Kº­K¤¸­KA·­K€µ­Kà³­KF²­K‹¯­K¾­­K©­K¡­K ‹ç­K, ­KQœ­K-š­K —­K Ε­K–­K�“­K¤‘­K˜�­K¤�­K‹­K á·­KᇭK]†­K<…­K½ƒ­K·‚­K;�­K�­K}­K‰{­K8z­Kªx­K=w­K§u­K?s­KÌq­Kép­Kp­KÎl­K úˆ­K“‰­K­K­K‡­Kýk­KFk­KÙj­Ks­Kë­KZ­K`­K%­K�­K ­K­Ký­Ku­Kä­Kê­Kë­Kc­KÒ ­KØ ­KZ­K Žl­K¢l­K7X­K¦W­K> ­KD ­K×­K× ­KiI­KóE­K ó¨­K‡©­K­ª­K±ª­Kµª­K@­Kš>­K(=­KÍ;­K û¿­K�À­K»Á­K¿Á­KÃÁ­K*1öù{­Ïñ“ÖÒÏÕØÙïè°âø‚�¢3std::io::ErrorKind::InterruptedÁˆ—¸æ^ó Domain::IPV4Á Domain::IPV6ÁãY‰EINTRÁ Type::STREAMÁ Type::DGRAMÁøøstd::io::IoSliceMutÁü7Socket::set_tcp_keepaliveÁstd::io::ErrorKindÁû‡öWstd::ioÁæ^ì …óÚ…—¸ãY‰ë…�†¡†؆††»†øöWö†˜‡óy …æ^—¸ãYœÚ…ë…�†؆‰††¡†ø»†öW‡ö†˜‡‰îyÈz SockAddr::newÁ¯[³ÇšÇîy”™îÄ‹‰Èz¯[ÇšîyîÄ‹‰Èz§™¯[îÄý˜Çšú÷,Socket::accept()Á¥! Type::RAWÁ�+áØio::ReadÁçSocket::set_multicast_ttl_v4ÁÀ` Socket::sendÁù$Socket::send_vectoredÁ»#®(•*Û/ž,Íì#keepalive timeÁSocket::set_send_buffer_sizeÁ÷,­Š�+Socket::set_multicast_if_v4ÁÛ/ØŠÀ`þŠ®(Socket::set_recv_hoplimit_v6Á»#•*º.Ñ‹Ï*Íì#ä‹ connectedÁ�+•Œµ+Socket::peek_senderÁÀ`�þŠ®(Û/�‰0º.ÐŒÛ%ÍSocket::set_recv_buffer_sizeÁä‹Ï*Ú,›�Socket::join_ssm_v4Á•Œµ+¹�Socket::set_only_v6Á‰0ÐŒ�º.Socket::pair_rawÁÛ%ŠŽÏ*Ÿ$Í~ Socket::bindÁ›�Ì!ÁŽSocket::recv_fromÁÚ,¹�µ+ꎉ0‡2�¬À0—�Socket::set_passcredÁÛ%ŠŽŸ$Í~Æ�Ì!Socket::join_multicast_v4ÁÁŽÚ,è�Socket::set_multicast_if_v6Áꎇ2×ÒÀ0‡2—�³�Á}Ÿ$þ*Æ�Í~Ì!Socket::recv_vectoredÁì�è�›‘×ÒSocket::set_lingerÁÛ"³�À0‘&Á}Socket::set_ip_transparent_v4Áþ*ì�Š �’Socket::set_multicast_hops_v6Á�astd::netÁ›‘›½Í#„×Ò�aÛ"³’‘&Á}ä’þ*Š �’œ“Ó›½Í#¢„Socket::set_broadcastÁ³’Û"�aœSocket::set_ttl_v4Á‘&ä’Š Socket::set_ip_transparent_v6ÁÜ)œ“Óù ¬›½¨—Í#¢„½”ÅÜÞ'ì” Socket::recvÁ“•Ü)Socket::send_toÁ¬¢Ú[½”ÅÜraw(7)ÁÞ'씂–Socket::set_recv_tos_v4Á“•Ü)‚.ž–TcpKeepalive::with_timeÁ¬Û Ú[ÅÜÍ–Þ'io::Read::readÁ‚–é–ž–‚.›—Û Ú[¸Socket::set_header_included_v4ÁÍ–×—èSocket::set_multicast_loop_v4Áé–؆‚.›—Û Socket::set_no_peercredÁ–˜Socket::connectÁ×—äʘSocket::peek_fromÁ؆øˆ™Socket::set_reuse_addressÁ–˜ª™˜#Socket::set_multicast_all_v4Áäš Ï™ʘSocket::set_recv_tclass_v6Á؆ªí¢'øˆ™ö™û'ª™˜#¥šäSocket::recv_from_vectoredÁš ϙܚªí¢'å(Socket::set_priorityÁøøö™Socket::join_multicast_v4_nÁû'©)˜#¸›š ¥šSocket::set_multicast_loop_v6Áº ÜšÖ1ªí‰ Socket::newÁ¢'å(ø›ó.boundÁ¡œû'©)¸›áœÖ1º å(ž�‰Socket::set_out_of_band_inlineÁø›ó.Ã�Ipv4Addr::UNSPECIFIEDÁ¡œ©)È-Socket::set_multicast_all_v6Ááœstd::net::UdpSocketÁÖ1º Socket::new_rawÁž�‰ƒžSocket::accept_rawÁó.Ã�·žÈ$io::Read::read_vectoredÁÈ-ឈŸªŸSocket::set_keepaliveÁ‰ƒžÏŸSocket::set_tos_v4Á·žÈ$üŸéSocket::join_multicast_v6Ástd::net::TcpStreamÁÈ-ˆŸÍ"ឪŸ¯ Socket::acceptÁÏŸÞ Socket::out_of_band_inlineÁÈ$üŸ‹¡©¡Socket::send_to_vectoredÁó¯ ã¡0https://man7.org/linux/man-pages/man7/raw.7.htmlÁÞ ‚¢Socket::set_header_included_v6Á‹¡©¡â!¸¢Socket::set_tcp_nodelayÁó“Š¥!ã¡æ¢ÆŠáØ‚¢§£ù$”‹¸¢á£ž,óy÷,“Š¥!­Šæ¢áØÆŠØŠ§£ù$”‹»#•*Ñ‹ž,á£ì#!á­Óù óŠ4ê ‰�Á}©¡â!:https://doc.rust-lang.org/stable/std/os/fd/trait.AsFd.htmlÁá­„$ÓFhttps://doc.rust-lang.org/stable/std/os/windows/io/trait.AsSocket.htmlÁóŠ4»ê ‰�¬Á}𥩡Óá­óyÀ¦Š4ê ‰�Á}©¡ð¥À¦´crate::Socket::connectÁcrate::Socket::bindÁcrate::Socket::set_dccp_serviceÁæ^�NØH Type::cloexecÁcrate::Socket::set_tcp_mssÁ•IõLù±P³M!crate::Socket::set_tcp_congestionÁ‹¨¦¨æ^ì#crate::Socket::dccp_available_ccidsÁ�N•Iñ¨±Pù �øcrate::Socket::set_tclass_v6Á»©‹¨Socket::dccp_available_ccidsÁ÷©­G»N•Iù»ô_øvhttps://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=5daab9db7b65df87da26fd8cfa695fb9546a1ddbÁ»©êSocket::attach_filterÁðª÷©­G»N×IÓKãP»ô_ Linux patchÁøøº«ê;https://www.kernel.org/doc/html/latest/networking/dccp.htmlÁÁ¬ðª­G»N×IÓKãPô_„»crate::Socket::attach_filterÁŠ­º« documentationÁ´­Á¬ÚN×IÓK() <= size_of::()5overflown address storageAddressIndexassertion failed: fd >= 0 CcidEndpoints endpoints length TcpKeepalive timeintervalretries§¼ã¼ƒ½‘½�½½½ѽá½î½�¾Œ¾›¾sµTY[DºK.ŒtG ß Q+¸üð ©O¾ÀÈy}5 JÍ._½½?ÄKP›1•sio>we·Ie#>ä!˜> ê³Æ‚ÿµù£~ìÏ ‹È�à=éò–e/ÏÈÆïü^Wf²�9üGœÎEÊÄ©@Ñl ]¿)—y£œØ´†O ³®zuâk§cÈPôfÑŽ“뎹rÇ‘jÔ�Ï ¯ÍiDjõìTÆÇnÒ†»âŠöªçf¨Ž ‡µk>ð�Í£TPã¢dÓ`¼µV' –—ŽÒwŽ¢‘(HóÀ(Ü‹‘vÝ•®hìð SUŚݳ­jïáWu[¢–I¤Â0c»`³Ø�ÖY•C&OµâK …=Õþ,�Í—óNÒœWøb×ëÌÛN+Ux1~–‘Zdε'wóŠÄ ÷„ïý�{+Um§®EâmBä3ïbI¯zv¨“a+©;çM*š Å¹q@'Í”�æì›�“·†˜~”—Tƒ–¨€çMï\dÁÌ»ÚÖv)ŸKÙ/õp×pý¾y/ÊîΛš3VÈrl"Ó* ¤±†Ìõ\¢Eª¹Ø Vp)Œö·PhC™ˆð;^¢‰+–GŒ­•ëdä½ ¸1jPJ@a›Ö"@š¬¤ÓÏ\Y�-UǨuzç�ƒç/Œ�Î#t¦Þ+à59;ˆfü DúòŠ2òPWì ãˈCÝÆÁ´‚Šâ;SjÉØ¶�ž§Êb™›Ì§³Õ`ü™.ʽä @ 5á{ç�L †¸Ô2Mz-§%O·*8#B& Ñ>š´õvªô�g‰"{—ì>þrL[Þ2É•¬) .ýØè-¨Ö@ ¡¿H†ª‹séŸqϹcñqãAáäÒr•s†WŠgÏÕ/Q_*ãñ瀶<'[Γ‹.Êe½�ì‚Ö&ûaì�Ws¢Ã'%û/Ô�üaO©®ÅB¾SAˆ=Ûíˆùe}Æ*kºÈ~R:j†[{°Û Ä$Iï k%+í%˜ è®6Œ”ðZÃ#XO1¤f?’fWíp@¯FÓÈÒ;éB#~àbW§ÃR«úúò�¿ül’3Clõf}—yý�‚#×Ó=ʸÐ"LZÙF ]ç@ARbeR9|Hà9­A âÖ]ó÷vဴ-$Ú¨w³k6=à˜©€Íf×O† ˜\Å@J�æt nrö÷š³\³¥UYîÊÒiæÆmчeÛ[p;¦žn4žIÀ7¸ï¡p¬èœ:ŒPQ±C‡%Hº^UÖ½"ôWÌÍÕºOQè/?¦é÷vþØ?бHLÒ…Ù4œq¶z`¨½¹Ã¤ð 8Øú›^�ƒi‡õþHYc¤OÕf‡¡ é‘�" X–È@èG+ä)Ó ¨RTât"okزbé)›|â)="¼d-)éªÕ¾}Â}Ë~Œî)d2ò)]âà@nR—nad:žP(T¤”WE²T ìç¦×#no4�Ïíþ7Ég…]íÄ)™m‹€(�#ƒþ— It¥É Ûª¾Æ:ÇZ3§%‚LjìKüïM~Bƒ„N›ë9¤H$€dù¤= Dý¼)¾·%¢HvM Õhnv‘5Ä+ÄÐôD¥ &v/3ªñB]ƒ.ZÀÛGª:K�Aè�‹æ 7fŠôid <ŸE)NBò¨tácÜ6üÕV™‘½ó4˜6×pÅ$æ¯÷Þ(Ò½íšvló>ª’ 4U�¡X7`Ö}…ƒÝž+·=¦] >·U¼ÚàkžÚϹ…œAšÎ½hQº¶¹ŒgéÂjnÓµ~½U]&ù¥:Å7XDµèÿ߸Ï߀Œ[õ=’ú"0°Ý'ŠÊ”Öâ8ñ4˜2q„K­#{Âåjï±aj”½ê_L�Ê%¡0RO“Ô$ªù²Ô÷�3 ›'¡'E!t 8߯�˃7 BSS ¥ü6Q|÷·%{, $ºSQúºÉõLäwѳ@ XüÉ?àv\+‚¦%Ô!8û²­‡2-…Q›ÂO!"$Ì·<ëaïÄpù�t9÷Ÿ…» "𭈯‡�¡ÖÝ]c­)¬ £³¶ §�çR™Æ \'ð}Q7Ò¹.> ݆›]0ÿíd%ov+qò*‡†‹)üÆz§ÕŽüÝ$4Xßi1L\ú¡óÈß•‘/…å`�höóT79ß’†â‹&-Y…‡Iy# �¡˜~ÛĨ'‚×M@¯ %[ê Ç{š2ŽYˆiþs™êoÏ_#MÑ‘a¡ JJñÔðhVhÎbPcÜæ–ð "{Ñ÷�4ð¯Jyêô�)Z¥®´8?ÖlrñnØ\ÕÄìÌM@Àê_HÕvÔvwþ «S�„§–Sm$QƺêÕç�ïwak³ñºÔf»f,’ìyˆY�,6²“UÝ¥�\¿·}6é¦Á2 ˆJ¼f™šEBAFJwæÓãA“@0Þb·¾N™QP‘â³êØ÷+>†ýï Ø yE&ìy§ÞTwÔBwY€�ãQ[òwg¥ªF\�}‘Q?€M�¶×W%ÄÔälèÞÉCžÐ#rX%—ö³[aH*!è­Ðþë8ËŒo¶d�{Ç÷›Ô0Ä�ÖÚÚ|¬Åg±Rqê“Q“x²¨µ<°lÇÇ kaCü×ó÷P#0^Î>¿–e½Z˜Þ˜iS6sââ˜b–Úð++ÍpºøÄ�@‘~Kå½…SA¨ýéî+Þ<5\L©såMØ»0Ë6šm¤œõçcs†�¥b‰QhàŒÛNXªÊF¬çì³ö¶)“RuÂÚë!ºp»éŸž7ypØÞ.™ªšð�€1T2S÷Õa“¨‡Ö‘ÞÙÜZ)[ÚvÍ¡‘äÎfZÛ+Sí£hà4ÍÑawÿ݇ôJé '“ÚÉVìM?§$ÐÃÞÝ¥ãÿ |+X çäRu.…Ámý…é I|é�@éx fð¦¿õ5[L¾}›‹+’© Pm€P–˜ Xй±®;»-6ªCôôV@QÊê±›0-S$gU%ã¬!�À<ž°ˆJY=âˆú|G9‚!}xañãŒßQÔCü $!â0Té/s ˆÂQ Í­gnÛ|»”pâeð&úÛ¯a7¤Ô�KŸÃ«̦¾½jªÊ‘7~Ÿäwë&õ;"A4#­v¡‡™Sfï8RÌkE¤�|ÏTÎV�0 ¿ßŠVþÿ€âÀêÕ¢%§Ô$¡MHoÖ4r¨„Ù"w¸È¿µÍëÿ¢#>ʼ_* áÅð8&¶qØðZÆäÙñv8{ˆpSkG&>ÙѸŠG·fFÎyãÏiy¸ì_Êx‘‹”× œvîg°|sÞL9ÓQ–õ ÷Ô& wƒë¡Gè©~5­CwUøºJy ZT=ᤀ磾Ú.;ï­‰š+œ9’/jL‡p—È'ªŽ�¹‰#€ Ò ºcØÚ½¾æÐÇÂ�[„kž§Öò‹TÚÎìÚuõ>(\×àÏÂylz/T{�Ó4M2>ä‰û6w¹|˜ 2ÃÃW¹”AÅz^Þ"f ‹”¶U…±N`-†�êÞy¦ùJÂlt˜˜Y“ªæ7çýÞ~³„,n*�„–r«püë;¢&i«î‹ Î)9mªghi1•¨ ”î^6$FVk7*¨›¨«úY¸ã�O.ŸHUm&ÉÉÝa‡£¼S0m#Á!wù�üÉÀ<ͽ¢ï2O³¿Ë‚•×·üÿ9‰GýÁ/‚ÞSMƒM…ˆÉM‰w½ãÖd�iÆ#Ô”ÃO“7��=µ×ædì§jV™¨í3xäKõœYíGŸ½*þ†g $¸Á]â &.•pGæ×ýrJ"£0·ß`¸f¿ùz-7žÛ¾V: ñg£P7ÁΙèÛŠ•Ö{ÿ”wEY_T#Ïn¹¸¾ÃÓÊ‘-,[�­¢ÊÜÉ”|Å÷£chM±43¬Št�7 Ê;ûp u@xôèwøm¾:ò0ÒNߨBÏÇ� ´’LC(úsDï܃lµM—ï!ÉÔ™ëêÒ%:‚¼Hæß´-?›ðw_6À¦ˆžE¸cľjŸ~’/çVú�$†ƒÑ .TW>4;]o…Øâ@§â»OÑša Œe-ýÞCsÂa¢œrÀemßÉè)9–¶¢‹)¬½•ÓÖ”l·|©èSy÷v‡(�ä—ÙÝ2oVÅÕÔžI ñ)§à£FOl×ùbëè©ö¯|µ ì"f1À´‰¹–£3ÛÒÔ�úMmÁj…rm`½yl-ë}Ì[ÌÉ‘pNßkž3à@Oè…?“—é€*sƒ0�<<¸âð ÛæF¨�û– ÷Í+s>ð܈ÀÅÀ]iÛž +Ì÷¹JÊ«,Ê�­cC~ £¹Sfâi­7Ë! ER¤�ÓŽ™·š—gçñ¼ÈÜ–´ö~ô4B» œ’I™µªg]yfHØFÇ�‰\/”Ê�]#Uý˜A¾ Ù©7f•·2>ëÇpԚΠ»lpÚž©�Í=]U…z˜fóÐYÿ.Mæ_FÄpT‘Ó•)ÞP¿²/÷ißÖzÞŽiXn Y!·þð±BšçãëðFìm4Jiïó ‚Ô F,ãüaõÄÍR´Ö %ê}X܉Xyƒ�§»¶‚ËAçÎÚš¿r]‰69£4?–G’QºÏHvuJ.lH²ë¤[„:ʧ!³@§÷aåé„á%ÀÓ1U„$xÇJWnTE(o›�µp…|´ Ç�¦„¿‚ö ”/ÉêGDJV¢ p)Ó�g •V³4‘K"O‹ä¬ð˜c‹ �v~ñnFUr…£EëžNÀïæ%Ú@†ŸpôŸÛ݈�•©:£‚ªK£°h¯pŸÖ¨0üŸ�ïØzXD¯}–8 §‰p·Ôegö’ícsGG-sìЬÏ×ïos– Ð0lðn·4Þ£ŸU†î[oùÈQgÖʼnø]Ó XŒbº®åÕ”L¬™¾Õ{ÈÑ (%…¤KØršÝÇ]Å´øŠ^Ý…q|¤Õߨ»÷÷�Cμh2P¡æ¨{³bCB †|V[Æt.öM LRO¼²É7O�|ð{ʈ´ó[ d€ö—îù3 +]"3Ž[ç"7¤Æÿ»ŒDs’Á§¹*AkJÉÌç£Cõ6ÎÿÊÁ¾5æä¢‡Ø rýÚj$�QLÛ¢®à>”‘O×Ä[ýÏ�#á˜ó #’<5Ñ@[ W.Ìn*& y`§§Õ—j²©bþtÀ g’Y&"3|ï3òfüPÁZÅÆeâDÏ�°U3‚6èuhäºÆx‰�”Û®`^—3¾xêPÿˆãËq‚O\Œ‰i'X v°Oè°Àô‘ Å8yÔ´€$±®¸õ$êù²#$}’Éý£ÖÇ-«@¬DDcÄ=LµËv˜Ûx³.FíJí `ýωöbЗ�>‰°…ô+‰u…ÿ¤YÅ­ð&®èv!~×âºOwœ‡E'¸MCÆ(pŠƒé»M(•Bê±Éëgüó6IÌܼïyzÂB‹e ö W¢‘`ì=UÝT“�°Æ²¾/n¢ü ¿Ò ï‡Ý5ÉØ[ò¬t…¿ÐòÙëo¡„”)áy§gFpè%›ó?GÝ^l†ÚÏñ¿ëã"ßÇMstÆ2U­Y =ñ{Š«™mtÝæÈâ6HàäLB&`+¯¬ÎÝs…©ÆÏOöðšB.^ÁKÜ 8]÷?~Âc�‹A·ðó Ë--»o·¦u¦)G„Gxì]ú¿eð+zß}}}|½êݪcV¸MMî|Ôˆí@µò \eWW˜X’wHk¡NCbî§•p­H)! 9J†Gœå×ÏBÄóÒ¬}Fˆ‚‰"_÷R²sS>}é¸åƇ‡K4¯Ú @ii�­Ä»F�S±3ÆO¾õŠÊ]ñÈ,‹×—ñäÀoJ ¾lôðƒßÉ»U þ 2úÀIÛX�©Ã�öfñE]—CBV2¿íô°–J Gæ8�HÜ> #+î›ÊuЇü±Ñ­ÎE��ü2ÌÃ%7Í«Gxfý"x1Ï~{Õ8]™¸5�Ó;ËqåC=v;[I¦ÍަŠóžÌÒíK«¦»¤!¬àØð—‰IËÖ3ÕKCó«Ðjœ—³ºEò•@y°P«¡ŸK¶âÕwðPdÎSôê ^ZßÞ?üî4ŸUðÃJ(úµjAêôéåh3YÙ{¢µUaÉ ~5�q_*1?³î>Pàó–LùêÀT–³¼;öè˜an7weoÔÍhoµá9>nεâ.î ;éäìJóa�ÀWÂ×”�¼�Ôœ£ hpPKÉ^m?[Y[¼’QÕƒ±Oâ¦�ëãlx†¯œòï~YDz©¢ïÿî=·£[ ™‚7 äXÔxG g&±j-h]jÛÈ’a?y4;ÇgÖŸ‚ÇCWU.Žbˆ}ƒ•¦€\ÇŸ»aK ®U'£�,U<~‡ˆäl1¶:䥼Þ¾"Õë.*n¢vJ´„êõÙ…O£ ¯d-'C¬#lcGî°œûÛæ}IaꮳU”jÎÎRÖOºhÁYáæP¥ÐéÝÃ&hžò4ø9àx„l^½–sæÄV–ºæžç+AV®R�ø³¿{½ Ô2}G” ÇqªHr°¸Ù İ�b.7vò»ÑgSÓ„Êÿá‰È: ‚æÇµ ñ<<¦Æâ-¼‘“Xó(>~Òß¾·Ù qâ½»$�>äª]…1^5]¬k`'N!Ó©_¯”W’¬@Û£¸vŠv•™êÛzó [t�%ÔÔŸ\7ä­õƒnÒáJgwTŵ]_‘UhíNë#Ë„}U/†#ër ŸªYÕ¨/K®,¥ö‚B¥o̬¼fã$¿óùŒÖ¡3ƒ–Ecª’Žƒz—\ý(ó…�>ž}Ë€«³ ­+µï3üãî:2õAˆ¦œ™|»˜© ,-íJŽ�ä\Øcu¯Ü šâ® ü s÷Þ.í%šÓ[¡pj‹[°““ºÑ1‚däÊU Vj¼ÈÊ £æGÍ5þù’åAn$s×—`H¥¯\»´«$,!Ó§�0¼³Ç²«C qÂu4ÿÄA*k�ùŠEþh¨” ªÊ¦d¤M¼{”ƒ‹ÝÏ!�ª3æZi�XfÁD‘'êg_­š¤ém!Ï,²[;z‚{Q›ÞÎ Jf׃µ³`Ù9=AfÂH#®öfO37˜ÊŽ`¥r¦µ9EfÔÜ«s1cñK]٢ו.^eå�™’ëÞx¤o¬?*I»X´[ø ë£=Í‚ñHB¿Écå�r¡UVNײ¤,ƒîq£ò,ûID¼-!béøtqE¢ò nFlc©j©Jzœ²‘œ 4¥¤ p\Ã/™ ÖmáB`n£å EÒ)aœæ£üYÜvtÅ+ ¾ýϺdz÷05ÊiE�­G¹Z¯SËtzñ+K„Ì�ПëA°M†5€qv“²¸OñB´!›¿º©5��\ô¢œ8ý±bsUòX‚i[QÏ#ˆÝw¡XxæzŒ2-Ю{~«\,³ü†ø|›¶_lh 3äkf� 4æÁ V°š÷I¶‹üIªX6tœ6R ¾75at>þ±ÒŽ]µ5Æcw!?U]Ë¿ªÞ*Å1„©f¹•ѵÇ=¼ú»*flF¦o!·á?ƒ.$¡F1Š ŽÀ¯¥òµdN¢vÕdìñwè> Wb7d †’”eiöÛ×uø‘j¶›d´SK„m�sOÇU ¯ÊE=3W£QM˜‘Ô-É–®æ÷AmbÙü í5ý>�Ô(ÕŠ«�æ#Ð=۪단þSÎlÇñ²Ä¯÷¼ íc‘³(«Ù¸­&Ö›r—Ë'yÐC‚1åÙuÐ[€?½Ü2‹:ŹAaȧú7¤ùŸ·C_{OÞrpàâþž!ä9þÅNeo†ä7éI$F ¡^c�Fóæ•J~¨ôS°Þ+ÚbHÌÔãÆ*éȶ~zVðc%ºâ8­§j'-¹ók|4¯¤ü¨®Ú'PFZžû¢¬l JZ¢ªš^r®æ¿Ÿ3f1Úø?¿m_uvxÖ&Šêÿ(¼màò¶X¤/¤]¯ç“jì÷Ä“sqq�4FkÄlÚ¬…͆„`™_èIi ap¡j}M’Ù 7¨ÑÙu±¿w…9òÝŠÐxßuĸٙ4,“BÇú0a¦‹UÃÈâ§j÷&€‡0Iþ¹L_Ú¼à^jÛ<GÝFÓdF|Âག[!Axªò‘_rÕV›!RzøÌøùËõ‰]ôðßN®Ñâ2Ò(»‡±ê é"® êÓsæ¬cZýM,0Àräܪ uì87í>qÎéŸL²Ö&s§x¥£éæªJãSòQódoë’À�õ&½ÔŸJÑÔýÞë :Ñ–+�?§tÍm±s¿„€ÀÖ(N ­(6E¦8á„3ù�Ÿ‹s>È^ãDFÛë Ÿ¹åÃ8WÂ^Û²Ê)4»?j@^šw›GÔ×kÝ<$vðAü=À‚ªˆ Ëêtë��s„ýîº$TžòÓCcÜu ܦ³Äx[üŸ{@‡3 A ïä›)}AÐï*¿¼Ç>èÒ-�ÍOÜOö{µHÛÿáЪS™/Ê(dZ�}E’À-æW×÷$½Ýbüaÿ;xÒgHòôL‡§»¤ýØ»àþ’`Jµ$2ÅmÏpÆã†w.7¥±*6­u{,ó‡‰x GáÍ× Ï7-ÿJ‹‚·ým’�šÐÕ/´óÖñ˜ü A¦ýµß;T�t”{wÎ\*)ÉbƒJñ„íÖNmøb 5¤É%J«!\,u›:}¦òXñƒ<*š)Ëvˆì÷Íñß1u ±Œ†êLÈ�º�Ï0« @ý$-!2‡„S2F°¾�^Ôûz³](€”…ù^qðhI(snàkr4ÿk>¡G¾ï•Kê¯?éã²5Bë8ßéÿå§ÞC+ D¹3;gÐzàêŒÔ(˜“VbFBw‘�l-7êøƒ&¶î¼_§7‚ä7/î]±›^ñ÷Á+HHu!1QÛ¾Ž1æê�Z pOŠÏй³ˆJÅ ^R˜¢ºÃË‹NѲ`¼O8p0Àÿ2JÌP#¯lдi‡ þé=¥é °²†éþâÇñGá€5IŠ…-ˆ~ÁÖ0]w5=ìšÆFö�îŽÞ}XÏrCUDÖ\‡(ú•EߨÇùLx!öxÿúÓ*[³í·£¦4•qÄi4“üƒ¿ºIA��y{ùùäiÉŠ|7b’/ˆaCÙ®uapË�±ýÖA¦›# ¹&¯Í Ž�âÙœ>ô°]?cçsÄÔJøÄ-h®Ÿí~RåøzbjƒU‹°zÞ¿Q^{y½‹Óˆ…ê®ËÓVV�Ý$ ¼�“WFÀÆy»2D=z‰ÒKÇÃÑØƒð##? £Ô¼W’{7£í®@ zötùÏÔP×ÉHZzi<^CÜÞ@¯$êâøEɲêÓ˸ø9qÚ­"?ìØ¡Èù९ êW¥š.Ðûñ{Hêþ)ª”�‡es-”Jìåëì>dw]n˜ÂMŸöÉ ܧ–ÍáUÁ€Ø$ª_GiîGŽ“ä/49XB{UvÂh(*K›Ìl˜Áî„´ôj;ÚC©ç†“À=Àõ4z—0 D[NùGl_2ÌŒ-ar©òv¤v!ÖÇœFÔ„Ëü…%µåÃÇ÷µ�ÕÿʽNæåu­Œeô› „á‘¿³Ö³¶.RÕµ±Æ‹¨îPÞ—Ù&U2ó¯Ó´†4ÂBºîy³%ñ2ôç˜àyéIµ–YyGÄ"G•«ÆK ˆÃ¦íšrÅÍkr0³:„$1VÃgsÌG :l�Åì1S†œåùÆ›£Ê×wSõ9°2y!ûðI”Æ�‘@$~¤ }s·•[Qƒ;|f¸íߊƒˆ�kS_ôÜåuÀNu4HØŸ¯B{Þ'¨…k #—¬I|E·X[3–ðÅA,jñ-#ÝC-ÎzÌpÒ¡Ø•pÛ�k9L]²˜}(Í¢ ¯¨Hñ;9ÓKœ†t»BöÞÖÎÿI’ÂÅc)[hŸÝóyÑN!P¤�»“1ñ¸ùeõkòÝú´ÖàïâñRGH0æšÑ'ÄÐõ§«f´ËP™Vp‰1 .„JIyeOaî€Åi¡¬.a–æu,ëm%½ƒ?zS¼å8ŒVL)óHtÛ¯Û¡g¿ô#€i·a•C”þìª@þ¨±.Gn_ß&GÕ ƒ_Yy=¸\ÀDÿü ¨¿ÜdÓž{ÀÉÎÞhº€�ki\ËÌÄç{ÿ‚³¸YojŸ¦6æÖ%oALÿª¢­X~g5i÷¾7 Æiëð¡|µ— óÉÏ[µâQ‚Æ”k¢ÿ¬Š…ç¼ÃoHgÅÛdl,y53(eøâš-:'Û¼N,¿†AvÛ#Ó©Fu½ÁÜ\Æ¡Àî¨tg¿v/\¼ÑáãÈÛàG>`¡ôк›#!<5Qs~Œ®÷zé}ÅOXFõ8„\çU�}ØÁFÖ7ñkÔt‹úÕw�åÛÍ�|'Ýœ’²`\¯œžih“8ã§(éP;†”`a†GGž"ù1ã¼;ôQQœ@Él.Ãî¸æç8ÁŽ«Ûíƒ 8¥X«�Bµ×�“8LêæJªk`1 ókDˆ¶ð‰|R:v,òÜQö˜¡6ÓmD„spo¿Z-¼ÜÙr¯­‰¦ç(šô û[]+Ø—XÌšÉz§ Êô�}uýq>ëŽ%€ÇH�ä†U?¾.—н? ´»ëþÐÕ*‹X/¦ Õ©|™I‹ŠgK²÷ü©Ù¼£ýiÜ×Ï[+0Óõ¿ôß;Ê/0±aÙp,ôJÊönS"m3†¦À‹÷d£ìñ]†©ï.rL”J }™ŸcH#�õÉþj/ÉåÜ­D;¼ lgbÔgmuœ�ïÛ\nÕƒÿguÐ¥'W%™¤]ù�ÔVvÊ# ÃP“ŒbÐV]íHÊu`Öà”×�öܯ´º‡ç6`£s¯Ðª—ÏðDb'åeEpÐðísŸÀVܧiïL îY{�HY¶RÇÒF´¬Hš‘Ö ü½68mÑ�vlKH@Û«¤­})Þ6ó[ÍI)?÷õ&¦M‘*ð0Üp¤ÙÀç2÷ U D¤Î^™–ÝQ•–N×½'Dõÿ$ÁX:–ñ_‡ÛTÊF¨eV;+V¶˜·,üÿ‚�ÑÖ‡!3_åÅaZe�€œAB§AØÉÞÜ94`Ï×פMJg‰¤Ï/0à\R¢•MˆÜ·eî±òÊI2ɪݰ|=²hê�‚Çk͉s�#n¤þäÀW¿Já`ºcÛ›tX”Ö8jÊ4NÀÛ��-¡¢/êÞÃ]tœþ»Xfìk˨ڭJ5ïp2b„ÁúÚ¥Y‡[†Ý.¹Ü4]t¡”-Š7ya+ÅTÀ3>s‚y‚�‚’‚–‚š‚œ‚t‚„‚ˆ‚”‚Œ‚˜‚¨«¶«!Ûx ¾v$�-£0­4­;­‡­É­ ®®®®"®)®0®…²óµÎ·Ô·×·Ý·ã·æ·ì·ò·ù·¸¸¸%¸,¸L¸O¸U¸[¸a¸f¸j¸p¸v¸Ñ¸.¹Øºñº»v»õ»ë¿ÀµÀç,ÀO-ÇBÍVÍŸÍáÎøÏvÐ÷Ð�ÑÒvÒ%ÓàÓòÔ ÖרjØ…ØÄØßØÙ9ÙwÙ’ÙAÚ]ÚÄÚÕÚðÚ˜ÛfÞmÞpÞwÞ}Þ„ÞÂÞôÞ'ß.ßbßeßlßrßy߸ßéßà"à%à,à2à8à>àEà‹àŽà”àšà à¦à­àëàáOá‚-á…èžè-éké»éù é ð ñpñwö÷r÷ä÷rü’9 Ò 8ÿg ‰ ™¬^ !’#%ö)Å 1Å3Þ4Ê =[ @³ BýGAI LNNT‡U|X]J^“_­ dDfÙj/l¿mÀo6qwq¶q]sœtÿt v"x`y¼yÅzK|™"�~�¹ƒ…w…͆£ˆ‰‘ŠÞ‹AŒe�ƒŽ£�í�I‘å’5”‘”²•¾–Ò—˜T˜Ú™¥› œ3ŸË '¡x¥ü§�©ï«®*±†³ µe µY¸ºS»¯¼ ½k¾ÿÀëÁÃwâÄî Æ¦ÈÉ�ËÌÍ(Î)ϱÐxÒÔ ÒšÔ4Ö�Ö†Ø[Ú]ÜÖÝ2Þƒßád áãsäÏäwæÕç1è•é‡êãê²ëêìFí}ï¡ñýñbô®ö ÷|ùrúµû±ýtlÈ&¾  ] „ ­ !w´/(…¹-${Ã><š¸nFKPU[”Ãò$*0¢ ¿ !?!Y!Ç!Ç"S#}#6$}1„1¤1æ1í1ð1÷1ý12 2222³2K3N3T3Z3`3f3l3r3y3™3¿3ß3ÿ3 4@4G4J4P4W4Z4`4g4Î4Ñ4×4Þ4þ455 555 5^5�5Â5õ5ü566%6,6Z6¾6777"7P7j7«78#8;8T8W8]8d8g8m8s8y88…8Œ8Ú89C9q9N:;ˆ;u<Ñ<,=Z=§=«=±=·=½=Ã=É=Ï=Õ=Û=á=ç=í=ó=ù=ÿ=> >>>>#>)>/>5><>ê>v?@­@|A$BßBûBC+CCC\C\D+EF%FÖF‹IJOJÌJÿJ±KUL~L²MæNÖOS P{RÖS§U1W‘WJX�XóX@YhY�YÀYZzZåZ¢[\Z\®]]^ _«_B`×`þ`•bïchd_eÉepfÔfHgÞg;ijjk|kVmÿmbnyn�nÐn$odoºo™pqcqÆq&r‚rãr/s‹st‡tÇt#u†uÆu"v~vÛv‡wîw;x—xyhyÔyCzŸz÷zâ{Ë|m}x~Ô~@œŒ€�p�{‚†ƒâƒ<„€„å„(…¼…†y†‡s‡ˆ\ˆ݈9‰ Š»ŠO‹¯‹ŒEŒ›ŒÞŒŽ ŽüŽX�Ø�4���g ‘š–…—ï—)™©™/›‹› �ežÁž0 ¯¡¢Ä£ ¤¦¤§¨Mªø«T¬#¯î°J±å³‡µãµ¯·º¸¼ ½U À6³Ä9ƵÇÈ+ÉåÊAË”Ì+·ÎþпÒÓ�×Ëß„àà àVä»ävæÛæé™ê/íï{ïAñQó¾óÔõ0 ö ù�úÁû9ýEþÝÿk‹ìvò … lUHo�ämÌ…õz˜1N¥Ä *m‹Ñï29<BHNV¾ÅÌú;Y»¡7x”Õö{ÿ¥AèFb£Í1 • Ý %!‚!ò!u"#3#t#�#Ñ#"$À%á&û&,'æ'( )C)^)Ä)õ)Z*y*÷ *š-0o2O4i45£526W7Ï8ï9à:|;J<Ã<˜>²>F?é?{@IA[B0CÎCFEâE°F'GVW"W;WXW«WpYåYûYƒZšZ¸Zm[€[°[Î[#\A\‡\¥\ë\ ]O]m]³]Ñ]^5^{^›^X_x_5`U`a$bBb]b›bWcuc¼cÚc!d?d†d¥dìd eReqeµ e<hVhjh›hºh i,i›i¯iÏi9 j¢k¼kÐkl lsl’lmm5mŸmânünoAo`o³oÒoApUpupßp r&r:rkrŠrÝrürkssŸs t³tÐteuùuvÉvèvˆ«ûµ Ûv@?$@YÓºýº÷¿ÁÀvØÐØ*ÙƒÙMÚÐÚáÚ€èª+èsˆ™eМû� �‘”¦” "!¤"l#ôJoL@PW€XZY‚Y©Yñ`Ld©=�hÚºÔ†=²yÝH'„âõR°##€#$Š&'(&)Þ)g*14x5U;¼<z>»?»E"GÿVIWPYbY©Z|[¬[¿[/\“\÷\[]¿]#^ˆ^e_B`b†bccÈc-d“dùd_eôgfh—h«hi«i¿iZkÌkýklƒlm%mšn o=oQoÃoQpepÄq6rgr{rír{s�s©t vÙv++        +                           ' +))''''‡«4®‰²ùµÂ¸¹´ºÜº[»½»x¿ÀÇŽÌFÍvζÏ<мÐGÑÌÑPÒìÒ¨Ó»Ô£ÕžÖ“×'Ø�Ø÷ØQÙªÙuÚÛžÛaè‰èEéƒéÓé6ïÍðáõÚöÍû?Ó‡ ¨ÆO_$!#Ó$f)*1k3z4Ú<»?ZBMGÜHK®M©SJU¸WÃ\æ]ø^dëedj°kmÿntpOq�q^t×uKw"y|z¹{Nä€fƒÝ„„†ˆGŠ ‹�DŽW�¯��’÷“h•–†—ë—,˜g›âž� /¥…§©x«�­�°ó²Ë´¸‹¹øºq¼¾…¿žÁÝÂWÄ¡ÆhÈ>ËŽÍëÎ:ÒPÔöÕ=ØôÙöÛ˜Ý5ßÊà¸â5ä,æ—çEéIêgë¬ì4ïcñôpö&ù4úýÒÿ.^ à 5 Æ {͉҇=ܘUÑte ¦ à C!q!#•#>$FÚFïI>J»J›K?L‡M»N¬OQR¬S}UWªWQX•XøXÙY(Z“Z[×[´\^·^d_`œ`\bic#eâeífaghÝiÉlgn~n©nén=o}oúoqßq›rür¤s tŸu³v_w¼wx°x�y¸zQ{<|Ç}í~ö¥€Ê�Õ‚ûƒU„™„þ„•…1†Þ†<‡¨‡‘ˆR‰ÔŠÈ‹Œ^Œ´Œ½�yޱ�P–;—Ó˜^™ñš¿œ'žžŸ¡†£Ï¥f§ªº«Ò®°°”³Iµ`·¹¸¼“¿êÁ!ÄúÅwÇÞȧÊLÌíÍ­Ð�ÒD×$ß$à ä8æ¸èZêžìáîñðšòpõÂøNúsûúüþ‡ÿ,²L¡7¨ F ¥ -ÿHt#åú*±gÝC¤¥ŠðO¬eé�+Òz  Ç !l!Ü!_"#K#¨#™%X&¯&ã&D'Ù(G)v) *Ô*d-Ý/:2�3T4n4ü5 738¡9”:•;Þ=�>·>E@û@ÅAÛByCòDûEAGàV W&WoW&Y–YÄYçY3ZaZ…ZÏZå[[\¿\#]‡]ë]O^µ^’_o`Ùa)bGb²b�côcYd¿d%e‹eÑgh>hÑh`iæi7k~k¤k7lÆlLmwn¾nänwopŒp¡qèqr¡r0s¶s‰t¹tNuãu/vÿv‰£'­-­0­7­ƒ­Å­®®®®®%®,®�²ïµË·Ñ·Ô·Ú·à·ã·é·ï·õ·¸¸¸"¸(¸H¸L¸R¸X¸^¸d¸h¸l¸r¸Í¸*¹Ôºíº»q»ð»Ù¿æ¿À±ÀâÀIÇ$Í1Í>ÍRÍšÍÏÎÜÎóÏqÐòÐ|ÑÒqÒ ÓÜÓíÔÖ× Øe؀ؿØÚØÙ4ÙsÙ�Ù=ÚXÚÀÚÑÚëÚ‡Û”ÛbÞiÞmÞtÞzÞ€Þ¿ÞñÞ#ß*ß^ßbßißoßuߵ߿ßàà"à)à/à5à;àAà‡à‹à‘à—à�à£à©àèàáLá~á�èšè(éfé¶éôéðñjñqö÷n÷ß÷mü�4Í 3ûb„”§Y!�#%ñ)¿1¾3Ø4Ã=U@­BöG:IþKHNüS�UvX]D^�_§d>fÒj)l¸mºo0qqq±qWs—tùtvx[y¶y¿zE|“�x�³ƒ…q…džžˆ‰‹ŠÙ‹;Œ_�}Ž��è�C‘ß’0”‹”¬•¸–Ì— ˜O˜Ô™ ›û›-ŸÆ !¡r¥ö§ˆ©è«ý­#±€³µ_µS¸ºM»ª¼½e¾¾¿ÀåÁÃqÜÄèÆ¡ÈüȉËÇÍ"Î$Ï«ÐsÒÎÒ”Ô/ÖŠÖ€ØUÚWÜÑÝ,Þ}ßá^áûânäÉäqæÐç+è�é‚êÝê¬ëåì@íwïœñ÷ñ\ô©ö÷vùmú¯û«ý ng¸ ü W  § r§®)#€³'v¶½86•²jCHMRW’Áð &˜ ž º !5!;!T!Â!°"¶"Ã"N#x#2$y1€1 1â1é1í1ô1ú122 222¯2G3K3Q3W3]3c3i3o3u3•3¼3Ü3ü34<4C4G4M4S4W4]4c4Ê4Î4Ô4Ú4ú4þ45 5555[5�5¿5ñ5ø566"6(6V6º67777L7f7§78 888P8T8Z8`8d8j8p8v8|8‚8ˆ8Ö8 9?9m9J:;„;q<Í<(=V=£=§=®=´=º=À=Æ=Ì=Ò=Ø=Þ=ä=ê=ð=ö=ü=>>>>> >&>,>2>8>æ>s?@©@yA!BÛBøBC(C@CXCYD(E F!FÒF‡IüIKJÈJûJ­KQLyL­MáNÑOMPuRÐS¡U+W‹WDX„X‹XíX:Y[YbYƒYŠY³YºY ZtZßZœ[ \T\¨]W^_¥_<`Ò`ø`�bêcbdZeÃekfÎfBgØg5iejkvkQmúm]ntnŠnÊno^o´o„p”pýp^qÀq!r|rÝr*s…st�tÂtu€uÁuvxvÕv�wèw6x‘xþxayÏy>z™zÚzðzÛ{Æ|g}s~Î~;–†€�i�u‚�ƒ܃6„y„ß„"…·…†s†‡m‡û‡Vˆ؈3‰û‰ŠµŠ=‹J‹©‹ý‹?Œ•Œ׌ Ž›Ž÷ŽR�Ó�/�Š�a‘”–€—é—#™£™*›…›�`ž»ž* ª¡ ¢¿£¤¦Ÿ§ú§Gªó«N¬¯é°D±ß³‚µݵ©·ð¹º³¼½OÀ0­Ä3Æ°Ç È%ÉàÊ;ËŽÌ&Î�ÎøÐºÒӈ׷ßÄßàÚàQäµäqæÕæé“ê)íïuï;ñ&ó6óLó¸óÏõ*öù‡ú»û3ý?þ×ÿeû…æpì   fOCjˆÞgÆçð u’,IŸ¾%g…Ëé.59?EKQºÁÈö7U·œ3t�Ñòwû¡=äB^ŸÉ- ‘ Ù !!~!î!q"#/#p#Œ#Í#$½%–&×&Ý&ö&!'''â'( ()9)?)Y)¿)ê)ð)V*t*ñ*”- 0i254<4C4J4g4ý4ˆ5�5–5�5,6Q7É8é9Ú:a;h;o;v;D<½<~>…>Œ>“>°>@?Î?Õ?Ü?ã?u@CAUB*CÈC@EÇEÎEÕEÜEªF#GVWW8WUW¥WmYªYàYøYGZ~Z—ZµZf[}[­[Ë[\;\�\Ÿ\å\]I]g]­]Ë]^/^u^”^R_q_/`N` abb=bZb’b˜bQcoc¶cÔcd9d€dŸdædeLeke²eÿg8hPhgh˜h·h i)i˜i¬iÌi6jekžk¶kÍkþklpl�lþlm2mœm¥nÞnön o>o]o°oÏo>pRprpÜpÏqr r7rhr‡rÚrùrhs|sœst¯tÌtauöuvÆvåv8w>wDwJwQwXw^wdwjwpwvw|w‚wˆwŽw”wšw w¦w¬w³wºwÀwÇwÍwÔwÚwàwçwîwõwüwx xxxx&x-x4x;xBxIxPxWx^xfxmxux|x„xŒx“x›x£xªx²x¹xÁxÈxÐx×xßxçxîxöxþxy yyy#y+y3y;yByJyQyYy`yhypywyy‡yŽy–y�y¥y­y´y¼yÄyËyÓyÛyãyêyòyúyz zzz!z)z/z5z;zAzHzOzVz]zdzkzrzyz€z‡zŽz•zœz£zªz±z¸z¿zÆzÍzÔzÛzâzézðz÷zþz{ {{{${,{3{;{C{J{R{Z{a{i{q{y{€{ˆ{�{˜{Ÿ{¦{­{´{¼{Ã{Ê{Ñ{Ø{ß{æ{í{ô{û{| ||||%|,|4|;|C|J|Q|X|_|f|m|t|{|‚|‰|�|—|ž|¥|¬|³|º|Á|È|Ï|Ö|Þ|å|ì|ó|û|} }}}!}(}0}8}?}G}N}V}^}e}l}t}{}ƒ}‹}’}™}¡}©}°}·}¾}Å}Ì}Ò}Û}ä}ê}ó}ü}~ ~~~#~+~2~9~@~G~N~V~]~d~k~r~y~€~‡~Ž~•~�~¤~¬~³~º~Á~È~Ï~Ö~Ý~ä~ë~ò~ú~  (/5=CKQYagow…‹‘—Ÿ¥«±·½ÃÉÏÕÛáçíóùÿ€ €€€€%€+€1€7€=€C€I€O€U€[€a€g€m€s€{€�€‡€�€“€›€¡€§€­€³€¹€¿€Ç€Í€Ó€Ù€߀å€ë€ñ€÷€ý€� ����!�'�-�3�;�C�I�O�U�[�a�g�m�s�y��…�‹�‘�—���£�©�¯�µ�»�Á�Ç�Í�Ô�Û�á�ç�í�ó�ù�ÿ�‚ ‚‚‚#‚+‚3‚9‚?‚E‚K‚S‚[‚c‚k‚*­4­€­Â­® ®®®"®)®0®…²õµÎ·×·Ý·æ·ì·ò·¸¸¸%¸E¸O¸U¸[¸a¸f¸j¸p¸¾¸¹°ºØºC»¥»`¿Û¿ÀÇvÌ&Í3ÍBÍ^ÎÑΞÏ$ФÐ/Ñ´Ñ8ÒÔÒ�Ó£Ô‹Õ†Ö{ר…ØßØ9Ù’Ù]ÚðÚ‰ÛšÛfÞpÞwÞ}ÞîÞ ß'ß[ßeßlßrßãßàà%à,à2à8à>à„àŽà”àšà à¦àáIá{á]è…è-éké»éïµðÉõÂöµû'»o �®7G !ï"»$N)1R3a4Á<¢?AB4GÃHýJ•M�S1UŸWª\Í]ß^îcÒeKj—kïlæn[p6qwqEt¾u2w ycz {5Ë€MƒÄ„k†ú‡.Ї‹�+Ž>�–�„’Þ“O•f–m—Ò—˜N›Éžt ¥l§þ¨_«t­t°Ú²²´÷·r¹ߺX¼¾l¿…ÁÄÂ>ĈÆOÈ%ËuÍÒÎ!Ò7ÔÝÕ$ØÛÙÝÛÝß±àŸâäæ~ç,é0êNë“ìïJñõóWö ùúý¹ÿE ª  ­ b¬´p¹n$»Ã<¸pFKPU¿î$a œ ¢ ¿ 9!?!Y!´"¸"#}#:$}1�1ß1æ1ð1÷1ý1222¬2D3N3T3Z3`3f3l3r3’3Ù3ù3494@4J4P4Z4`4Ç4Ñ4×4÷455 555Š5¼5î5õ566%6S6·6 777I7c7¤7858M8W8]8g8m8s8y88…8Ó89<9j9G:;�;n<Ê<%=S= =«=±=·=½=Ã=É=Ï=Õ=Û=á=ç=í=ó=ù=ÿ=> >>>>#>)>/>5>p? @¦@BØB C%C=CUC%E FFÏFÖFëI:J·J—K;LoM£N”O8R“SdUîV‘WLX‰X�XóX`YˆY¸YÀYZzZ[¾[Q\›\ï]ž^K_ì_ƒ`CbPc eÉeÔfHgfhÄi°lbnyn�nÐn$odoáoqÆq‚rãr‹s‡t†ušvFw£wîw—xhyŸz8{#|®}Ô~ÝŒ€±�¼‚âƒ<„€„å„|…†ņ#‡�‡xˆ9‰ý‰»Š?‹¯‹ŒEŒ›Œ¤�`Ž˜�7–"—º˜E™Øš¦œž…Ÿ¡m£¶¥M§ç©¡«¹®—°{³0µG· ¸¼z¿ÑÁÄáÅ^ÇÅÈŽÊ3ÌÔÍ”ÐhÒ+× ß¹ß àòãæŸèAê…ìÈîØð�òWõ©ø5úZûáüíýnÿ™3ˆ� - Œ ýæCo Ìéõ˜NÄ*‹ï2<BHN·¾Åó4¡†Ø7”aå‹'Îb { à  !h!Ø!["ü"3#�#�%T&™&Û&á&%','(Á(=)C)^)î)õ)¼*K-Ä/!2ˆ3:4A4H4O4i4�5”5›5ã5ð68ˆ9{:f;m;t;|;Ù=ƒ>Š>‘>˜>²>Ó?Ú?á?,@â@¬AÂB`CÙDÌEÓEÚEâE=GÜVW"WXW!Y“Y­YåY0ZJZƒZ¸ZÎ[A\¥\ ]m]Ñ]5^›^x_U`Ôab$bBb”b›bucÚc?d¥d eqeÍghzEzLzSzZzazhzozvz}z„z‹z’z™z z§z®zµz¼zÃzÊzÑzØzßzæzízôzûz{ {{{!{){0{8{@{G{O{W{^{f{n{v{}{…{�{•{œ{£{ª{±{¹{À{Ç{Î{Õ{Ü{ã{ê{ñ{ø{ÿ{| |||"|)|1|8|@|G|N|U|\|c|j|q|x||†|�|”|›|¢|©|°|·|¾|Å|Ì|Ó|Û|â|é|ð|ø|ÿ|}}}}%}-}5}<}D}K}S}[}b}i}q}x}€}ˆ}�}–}ž}¦}­}´}»}Â}É}Ï}Ø}á}ç}ð}ù}ÿ}~~~ ~(~/~6~=~D~K~S~Z~a~h~o~v~}~„~‹~’~š~¡~©~°~·~¾~Å~Ì~Ó~Ú~á~è~ï~÷~þ~ %,2:@HNV^dlt|‚ˆŽ”œ¢¨®´ºÀÆÌÒØÞäêðöü€€€€€"€(€.€4€:€@€F€L€R€X€^€d€j€p€x€~€„€Š€�€˜€ž€¤€ª€°€¶€¼€Ä€Ê€Ѐր܀â€è€î€ô€ú€�� ����$�*�0�8�@�F�L�R�X�^�d�j�p�v�|�‚�ˆ�Ž�”�š� �¦�¬�²�¸�¾�Ä�Ê�Ñ�Ø�Þ�ä�ê�ð�ö�ü�‚‚‚‚ ‚(‚0‚6‚<‚B‚H‚P‚X‚`‚h‚p‚ɸ&¹»ºæºùºj»á»µ¿ã¿ó¿šÀ½À2ǽÌ.Í;ÍN͓͗ÎÙÎÜÏ`ÐáÐkÑñÑaÒÓËÓÞÔ Ö×ü×WØrØ®ØÌØÙ&ÙbÙÙ&ÚIÚ©ÚÌÚÝÚLÛ‘Ûhè“è¦èWé¨éåéæïæðMñPöóöZ÷´÷Uüu ® #ëAt„—I!}#ù$Ö)¦1£3´4¥=1@’BÛGIãK$NáSpUPXû\ ^r_ƒd#f­jûk“mŒo qaq¡q s…tÞtÿu xIy¢y¤z3|x �d�Žƒ…]…¬†ŒˆåˆpŠÇ‹ ŒD�kŽ��Ö�/‘Å’”w”‘•¦–°—ý—>˜„™Ž›ç› Ÿ´  ¡W¥Чb©«×­ê°P³ò´Kµ8¸º1»˜¼ñ¼C¾¬¿ÀÇÁÃ]ÀÄÊÆ�ÈèÈf˵ÍÎÏaÐaÒºÒxÔÖvÖeØ/Ú1Ü¿ÝÞ^ßñàJáàâ\äµäUæ¾çèmépêÉê�ëÓì,í\ïŠñãñ6ô—öðöNù[ú˜û™ýùÿRU®— ê C ] Œ ÿ òUŒj� d�}¢Oz ² Ï !M!«!~"À"3#g#$FøIGJÄJïJ¥KILjL›MÏNÁO;PcR¾S�UWzW)XfX¡XYUY}Y¤YïY\ZÇZŒ[ý[Ž]4^á^‹_+`Á`í`pbØcHdHe¡eYf²f'g§g#iSj¬jUk?m˜mAnon†nºnoNo’obp�pÛpCq¥qrhrÃrsqst`t±t ueu°uvdvÄvpwÎwx}xÚxEy«yz…zÉzèz·{¢| }O~º~‚b€à€U�G‚]ƒȃ„h„±„…¦…þ…Y†ð†P‡À‡Bˆ©ˆ‰ʉŠOŠüŠG‹‘‹î‹.Œ„ŒÆŒô�ŠŽâŽ>�Â��v�¥�y–e—Ç—û˜‡™›q›èœNž§ž ˜¡ñ¡­£¤ø¥�§æ§(ªá«:¬ú®×°0±¼³pµɵ‰·Þ¹û¹—¼ú¼3À›Ä!ÆžÇ÷ÇÉÎÊ'ËtÌÎmÎÕШÒÓl×rßÁßTàÆà5ä˜ä_æ¸æòè�êíïaïñó1óDó“ó©õöëøuúœû!ý-þ¯ÿSÛsÊ^Ñ m Û T=(O€Õ<µdÆ]‚9�­ðUu·ÙC¯”"b€¿Ýoó™5Üð0N�«% ‰ Ñ !v!æ!i" ##^#|#»#$«%m&Å&î&'Ã'û'î(!)Q)¨)Ù)?*b*å*{-ô/P2¾3_4y4s56#7›8»9­:P;<·<>¨>Â>¶?Y@A'BüB¤CE¶E}FGçVW1WEW•W-Y YÖYñY=ZtZ�Z¥ZO[x[¨[»[ \+\m\�\Ñ\ó\5]W]™]»]ý]^a^ƒ^5_`_`=`ï`ïa5bSbvb4c_c¢cÄcd)dldŽdÒdôd8eZežeØg,hIhah’h¦húhiˆi¦iºij>k’k¯kÇkøk l`l~lîl m m…m~nÒnïno8oLo o¾o.pLp`pÅp¨qüqr1rbrvrÊrèrXsvsŠsïs�tÄtYuîuv¯vÔv(wø ¹µºÞºóºb»Õ»œ¿Ý¿í¿ŽÀ·À*Ç›Ì(Í5ÍHÍjÍ‚ÎÓÎÐÏTÐÕÐ_ÑåÑYÒÓ¿ÓÒÔÖûÖð×KØlØ¦ØÆØÙ ÙZÙyÙÚCÚ�ÚÆÚ×Ú3Û‹Ûbè‹è èOéœéÝéÞïÞðñHöëö,÷†÷Iüi¢ ßhx‹=!q#í$Ê)š1–3§4˜=$@…BÎG IÖKNÔScUCXî\^e_vdf jîk†moÿp[q›qswt°tñuüw;yty–z%|jý€6�€ƒö„/…ž†~ˆ·ˆbй‹ò‹6�]Žs�È�‘·’”I”ƒ•˜–¢—÷—8˜~™€›¹›üž¦ ß I¥§T©´«É­ܰB³ä´µ*¸÷¹#»мü5¾ž¿׿¹ÁöÂ/ÃrļÆ�ȺÈX˧ÍàÍÏ[ÐSÒŒÒjÔÖHÖWØ!Ú#ܱÝêÝPßãàáÒâNä‡äGæ°çéç_ébê›ê‚ëÅìþìNï|ñµñ(ô‰öÂö@ùMú’û‹ýëÿ$G€‰ Ü  O † ñ ä'yùó<‡ýôV}oœAg © Æ  !D!ž!\"º"*#U#$FòIAJ¾JéJœK@LdL’MÆN¸O5PZRµS†UWtWXSX˜XûXBYjY‘YæYNZ¹Z�[ò[ƒ])^Ö^€_ `¶`ç`gbÊcBd:eseKf„fg™giEj~j'k1mjmnin€n´noHoŒo\p‰p­p8qwqûq:r¸r sCst2t«tÛt7uªuÚu6v¾vjwÈwxOxÏxy yèyWzÃzßz¬{—|ß|D~Œ~ TW€Õ€'�<‚Rƒšƒ „b„«„ … …Ð…N†ê†J‡º‡ˆ£ˆñˆµ‰ÿ‰!ŠçŠA‹c‹ã‹(ŒyŒÀŒé�„Ž´Ž�¼�ì�H�Ÿ�k–W—™—í˜y™ ›C›Úœ@žyž  Š¡áŸ£Ø£ê¥§¸§ªÓ« ¬ì®ɰ±®³bµ›µ{·йõ¹‰¼̼%ÀÂ�ÄÆ�ÇÉÇùÈÀÊùÊfÌÎ?ÎÇКÒÓÒ^×Uß»ßFà˜à'äjäQæŠæäèsê íúî3ï ñó+ó;óeó›õèõÝøgúŽûýþ¡ÿEÍe¼Pà _ ¿ F/IwÏ3¯V²ûO| 3§çLo®Ó=¦ ‹úYz¶×fê�,Óê'H„¥ € È !m!Ý!`"##U#v#²#$¢%Z&¼&å&ý&¶'è'å()H)›)Æ)2*\*Ü*r-ë/G2‘3V4p4F567�8²9¤:#; <�<â=Ÿ>¹>‰?P@ ABóB–CE‰EoFóFáV W(W?W‡W'Y—YÍYèY4ZkZ†ZŸZ?[r[¢[µ[ý[%\d\‰\È\í\,]Q]�]µ]ô]^X^}^&_Z_`7`à`Ûa,bJbbb$cYc™c¾cþc#dcdˆdÉdîd/eTe•eÒg#h@h[hŒh hëhiyi i´ij8k‰k¦kÁkòklQlxlßlmmvmxnÉnæno2oFo‘o¸opFpZp¶p¢qóqr+r\rpr»rârIsps„sàsŠt»tPuåuþu vÎvw˸(¹½ºêºûºn»å»Ê¿õ¿žÀ¿À8ÇÍPÍ—ÍÀÎàÏfÐçÐqÑ÷ÑgÒÓÑÓâÔÖ ×Ø[ØtزØÎØ Ù(ÙfÙ�Ù*ÚKÚ­ÚÎÚßÚqÛjè—è¨è[é¬éééêïêðRñTö÷ö_÷¹÷Yüy² 'ïFxˆ›M!�#ý$Ú)ª1§3¸4©=5@–BßGIçK(NåStUTXÿ\$^v_‡d'f±jÿk—m�oqeq£qsŠtãtvxNy§y©z8|}�i�“ƒ …b…±†‘ˆêˆuŠÌ‹%ŒI�pކ�Û�4‘Ê’#”|”–•«–µ—˜B˜†™“›ì›Ÿ¹ ¡\¥Õ§g©Ç«Ü­ï°U³÷´Pµ=¸ º6»�¼ö¼H¾±¿ ÀÌÁ ÃbÃ…ÄÏÆ”ÈíÈk˺ÍÎÏcÐfÒ¿Ò}Ô"Ö{ÖjØ4Ú6ÜÄÝÞcßöàOáåâaäºäZæÃçèréuêÎê•ëØì1íaï�ñèñ;ôœöõöSù`úšûžýþÿWZ³œ ï H b Ž ÷ZŽ o�i’‚¤T| · Ô !R!°!¡"8#i#$FúIIJÆJñJªKNLlL¢MÖNÈO=PjRÅS–U W|W.XhX¦X YWYY¦YôYaZÌZŽ[ÿ[�]6^ã^�_-`Ã`ï`ubÝcJdMe¦e^f·f,g¬g(iXj±jZkDm�mFnqnˆn¼noPo”odp‘pàpEqªqrmrÅrsvs tet³tuju²u vivÆvrwÐwx‚xÜxJy­yzŠzËzíz¹{¤|}Q~¿~‡d€â€Z�I‚_ƒ̓„l„³„…¨…†[†ò†R‡‡Gˆ«ˆ$‰Õ‰TŠ‹–‹ò‹0ŒˆŒÈŒø�ŒŽçŽC�Ä��{�§�~–j—Ì—™Œ™›v›íœSž¬ž �¡ö¡²£ ¤ý¥’§ë§-ªæ«?¬ÿ®ܰ5±Á³uµεŽ·ã¹ý¹œ¼ÿ¼8À Ä&Æ£ÇüÇ ÉÓÊ,ËyÌÎrÎÚЭÒÓqבßYàËà:ä�ädæ½æ÷è†êí ïfïñó3óIó˜ó®õöðøzú¡û&ý2þ´ÿXàxÏcÖ r ï  YB-Q…×C·iÑî b„;’¯õZw¼ÛE´™ $g‚Äßtøž:áò5P’­* Ž Ö !{!ë!n"# #c#~#À#$²%o&Ì&ó&'È'ý'ó(#)V)­)Û)D*d*ì*‚-û/W2Ó3d4~4u56(7 8À9²:R;<¹<>­>Ç>¸?^@A,BC©C!E¸E‚FGéVW6WGWšW/Y¥YÝYöYBZ{Z”Z§ZT[z[ª[½[\-\r\‘\Ö\õ\:]Y]ž]½]^!^f^…^:_b_`?`ô`úab:bXbƒb–b9cac§cÆc d+dqd�d×död=e\e£eÚg3hNhch”h¨hÿhi�i¨i¼i$j@k™k´kÉkúklel€lólm"mŠm€nÙnôn o:oNo¥oÀo3pNpbpÊpªqrr3rdrxrÏrêr]sxsŒsôs’tÉt^uóuv´vÖv-wµº\»¾»y¿À Ç�ÌwηÏ=нÐHÑÍÑQÒíÒ©Ó¼Ô¤ÕŸÖ”×)ØžØøØRÙ«ÙvÚ ÛbèGé…éÕé7ïÎðâõÛöÎû@Ôˆ ©ÇP` %!#Ô$g)+1l3{4Û<¼?[BNGÝHK¯MªSKU¹WÄ\ç]ù^dìeej±k moupQq’q_tØuLw#y}zº{Oå€gƒÞ„…†ˆHŠ¡‹�EŽX�°�ž’ø“i•€–‡—í—.˜h›ãžŽ 0¥†§©y«Ž­ްô²Ì´¸Œ¹ùºr¼¾†¿ŸÁÞÂXÄ¢ÆiÈ?Ë�ÍìÎ;ÒQÔ÷Õ>ØõÙ÷Û™Ý6ßËà¹â6ä-æ˜çFéJêhë­ì5ïdñôqö'ù5ú ýÓÿ/_ Ä 6 Ç |Ίӈ>Ý™VÒf r!#–#ˆM¼N®ORR­S~UW«WRXÛY*Z•Z[Ù[¶\ ^¹^f_`ž`]bjc$eäeðfdg€hÞiÊl«nën?ooüoqáq�rþr¦s¢t¡uµvaw¾w x²xƒyºzS{>|É}ï~ø§€Ì�ׂýƒX„›„…—…3†á†?‡«‡”ˆT‰ÖŠÊ‹Œ`Œ¶Œ¿�{޳�Q–=—Ô˜`™òšÀœ(žŸŸ¡‡£Ð¥g§ª»«Ó®±°•³Jµa·º¸¼”¿ëÁ"ÄûÅxÇßȨÊMÌîͮЂÒE×%ß'à ä9æ¹è[êŸìâîòð›òqõÃøOútûûüþˆÿ-³M¢8© G ¦ .I$æ+²hÞD¥ ñP­{L#©#š%Y&±&E'Ú(w)*Õ*e-Þ/;2Ž3ý5 748¢9•:–;ß=F@ü@ÆAÜBzCóDüEáVpW'YÅYbZÐZæ[\\À\$]ˆ]ì]P^¶^“_p`Úa³b�cõcZdÀd&eŒeÒghÒhaiçi8k€k8lÇlMmxnÀnxop�p¢qêq¢r1s·sŠt0vw\»¾»z¿À Ç‘ÌxηÏ=нÐHÑÍÑQÒíÒ©Ó¼Ô¤ÕŸÖ”×)ØžØøØRÙ«ÙvÚ ÛGé…éÕé7ïÎðâõÛöÎû@Ôˆ ©ÇP` %!#Ô$g)+1l3{4Û<¼?[BNGÝHK¯MªSKU¹WÄ\ç]ù^dìeej±k moupQq’q_tØuLw#y}zº{Oå€gƒÞ„…†ˆHŠ¡‹�EŽX�°�ž’ø“i•€–‡—í—.˜h›ãžŽ 0¥†§©y«Ž­ްô²Ì´¸Œ¹ùºr¼¾†¿ŸÁÞÂXÄ¢ÆiÈ?Ë�ÍìÎ;ÒQÔ÷Õ>ØõÙ÷Û™Ý6ßËà¹â6ä-æ˜çFéJêhë­ì5ïdñôqö'ù5ú ýÓÿ/_ Ä 6 Ç |ϋӈ>ÞšWÒs! #—#ˆM¼N®ORR­S~UW«WÜY+Z–Z[Ù[¶\ ^¹^f_`ž`]bjc$eäeðfdg€hÞiÊl«nën?ooüoqáq�rþr¦s¢t¡uµvaw¾w x²xƒyºzS{>|É}ï~ø§€Ì�ׂýƒX„›„…—…3†á†?‡«‡”ˆU‰׊Ê‹Œ`Œ¶Œ¿�{޳�Q–=—Ô˜`™òšÀœ(žŸŸ¡‡£Ð¥g§ª»«Ó®±°•³Jµa·º¸¼”¿ëÁ"ÄûÅxÇßȨÊMÌîͮЂÒE×&ß'à ä9æ¹è[êŸìâîòð›òqõÃøOútûûüþˆÿ-³M¢8© G § .$æ,²hÞD¥ ñP­{L#©#š%Œ&²&F'Û(x)*Õ*e-Þ/;26 778¥9˜:™;I@ÿ@ÉAßB}CöDÿEpWRYÅYdYbZÐZæ[\\À\$]ˆ]ì]P^¶^“_p`´b�cõcZdÀd&eŒeöghÒhaiçi\k€k8lÇlMmœnÀnxop�pÆqêq¢r1s·s0vwG»©»d¿ À ÇzÌVÍb΢Ï(ШÐ3ѸÑ<ÒØÒ”Ó§Ô�ÕŠÖ×؉ØãØ=Ù–ÙaÚôÚ1éoé¿é"ï¹ð ñÍõÆö÷r÷¹û+¿s ”²ÿ;K !ó"¿$R)1W3f4Æ<§?FB9GÈHKšM•S6U¤W¯\Ò]ä^óc×ePjœkôlën`p;q|qJtœtÃu7wy`yhz¥{:Ѐ"�RƒÉ„…p†ÿ‡£ˆ3ŠŒ‹Þ‹�0ŽC�›�í�‰’ã“5”T•k–r—×—˜S›¥›Ξy Ë ¥q§©d«y­y°ß²·´ µü·w¹äº]¼¯¼¾q¿ÿŠÁÉÂÃCÄ�ÆTȦÈ*ËzÍÌÍ×Î&ÒxÒ<ÔâÕ4Ö)ØàÙâÛ„ÝÖÝ!ß¶àá¤â!äsäæƒçÕç1é5ê‡êSë˜ìêì ïOñ¡ñúó\ö®öù ú ý¾ÿlJ ¯  ! ² g¹u(¾s)È„A½]! #�#sM§N˜O=R˜SiUóV–WÅYZZ[Ã[ \ô]£^P_ñ_ˆ`HbUce_eÎepfÙfMgkhÉijjkµlVmÿm•nÕn)oioæo™pqcqËq&r‡rèr/s�stŒtÇt#u‹uÆu"vŸvKw¨wów;xœxymyÔyCz¤z={(|Ë|³}x~Ù~@â‘€�¶�Á‚†ƒçƒA„…„ê„�…¼…†ʆ(‡”‡ˆ}ˆ݈>‰ ŠÀŠO‹´‹ŒJŒ Œ©�eŽ ŽüŽ��Ø�4�<–'—…—¿˜J™Ýš/›«œžežŠŸ ¡¯¡r£Ä£»¥R§¤§ì©¦«ø«¾®œ°î°€³5µ‡µL·¥¸¼¸¼¿ÖÁ ÄæÅcǵÇÊÈ“ÊåÊ8ÌÙÍ+ΙÐmÒ¿Ò0×ßà„à÷ãVä$ævæ¤èFêŠìÍîïÝð†òQó\õÔõ®ø:ú_ûæüòýsÿž8�#” 2 ‘ ëÑ�SÉ/�ôÜ;˜ f7#”#…%›&0'Å(b)ù)À*P-É/&2è5õ68�9€:�;1@ç@±AÇBeCÞDçE[W°YMZ»ZÑ[G\«\]s]×];^¡^~_[`žb{càcEd«deweh½hLiÒijk#l²l8mªncoòoxpÔq�rs¢svëv <}<Ú<4=²=¼=Ê=Ô=K>|>�>—>¡>£?ê?@ð@(ApA{A÷AB BBWBaBoBÁCÏC%D3D‰D—DíD+E6E–EçE6F‡F><Þ=->7>A>«>ð>7?|?‰?–?H@€@¸@°AyB¿BCOC]CkCyC„C�CšC¥C±CÝCèCóCþC DDADLDWDbDmDyD¥D°D»DÆDÑDÝDAE‹Eå¿0Í=ÍÛΓÛÂ"ŠI‹ÃßzIÜImJWO—S¥Vw\mfö{E~Àˆ*MH^~a‡ŠuŠÉЇ�ì�@Žò�W‘«‘˜•ý•Q–Á—$šŽN S;XŸXVYµYgZñZ´[_]çagdiiâiKj´j|klál¶m‹nao_p/t–uïvM…n‹×‹@Œ©ŒåŽN�·� �‰�P’¹’"“‹“ô“]”Æ”/•ö–û €›_œK�7ž ŸoŸ¿Ÿ ] ¬ Íi7pKpÕ{#~~ÚIkJ(M S”V9X]]giÿ}K…ŠŒN|aåa¾ˆsŠÇŠl‹ê�>ŽãŽU‘©‘N’û•O–ô–"š~›ÛIlJ)MVO S–S¤V:XžXUY´YfZðZ³[v\^]G^fdlfhiÌiJj³j{klàlµmŠn`o6p.t•uîvf{~L…‡ŠÖ‹?Œ¨Œ†�M�¶��ˆ�ñ�¸’!“Š“ó“\”Å”.•—•À—´¡^œJ�6žŸ�NnŸ¾Ÿ}aæa¿ˆ  tŠÈŠm‹\ ë�?ŽäŽ« V‘ª‘O’ú ü•P–õ–#š›6ÇdÐåÐoÑõÑeÒÓÏÓcqÿ—@˜ MÔNÆOhRÃS”UWj„ð‹†Œö�A°%Ê&ê*€-ù/U2ÛYyZ1h—k×nr�SÅiÚiCj¬jDpXpâ{0~~Ï‹8Œ¡ŒF�¯����ê�±’“ƒ“ì“U”¾”'•�•“SÉiÞiGj°jHp\pæ{4~~Ó‹<Œ¥ŒJ�³��…�î�µ’“‡“ð“Y””+•”•q»é»Ò¿¢À;ÇÍÈÎäÏjÐëÐuÑûÑkÒÓÕÓæÔÖר^ضØÙjÙ.Ú±ÚyÛ_é¯éíéîïïðYöüö^ü~· ,ô}� R!†#%ß)¯1¬3½4®=:@›BäGIìK-NêSyUYX])^{_Œd,f¶jlœm•oqjq¨q�t vxSy®z=|‚�˜ƒ…¶†–ˆzŠÑ‹N�uŽ‹�à�Ï’(”›•°–º—˜G˜˜›Ÿ¾ a¥Ú§l©Ì«á­ô°Z³ü´B¸º;»¢¼M¾¶¿ÑÁÊÄÔÆ™ÈpË¿ÍÏkÒ‚Ô'ÖoØ9Ú;ÜÉÝhßûàêâfä_æÈçwézêšëÝìfï”ñ@ô¡öXùeú£ý_¡ ô g  ü n&$�Y»!G##$§MÛNËOoRÊS›U%W3XÿYlZ×Z“[\•];^è^’_2`È`zbâcRecf1g±g-i]jImÁnoUo™oipJq rÊrst¸t·uËvwwÕw"xáx²yÐz¾{©|V~i€ç€N‚dƒ„q„¸„…­…`†÷†W‡Ç‡°ˆÞ‰‹õ‹5Œ�ŒÍŒý�‘ŽÉ�ƒ–o—™‘™"›òœXž" ¢¡·£¦—§2ªë«¯á°Æ³zµ“·è¹¡¼=ÀÂ¥Ä+ƨÇÉØÊ~ÌÎßвÒvךß\à?äiæüè‹ê!íï$ñó³õõøú¦û+ý7þ¹ÿ]å}ÔhÛ w ú ^G2Hnm$—ú_Á$lÉ:—h#Å#·%Ó'þ(¸)O*ñ*‡-0\2,6?7·8×9É:3<u@1ACBCÀC8E™FŸWY[\w\Û\?]£]^k^?_`ù`Dc¬cdvdÜdBe¨ei’i)jjløl�mªo8pÏpÔrbsùs¹v2w…«óµ®ºñºë¿µÀjØÄØÙwÙAÚÄÚÕÚ˜Û[èžès|™YÐ�û„ w…{šn_ !Z"S#8$çJbL3PrWJX@YhY�Yå`@d��AÍ­°z1¥ mÑ;xÕèF£#t# $R&û&æ' )Ä)Z*†3D5!;‹<×=‡?‡EñFÚV=WY‘Y.ZœZo[Ÿ[²[#\‡\ë\O]³]^{^X_5`Òa_bWc¼c!d†dìdReËgXh‰h�hi�i±i1k¾kïklulmmqnþn/oCoµoCpWp›q(rYrmrßrms�sƒtûuËv̺yèŒ xXa&)4r>øV>Y bêgPk�nºq¢t¿ºlè kXTr&4e>ëV1YýaÝgCkƒn­q•tÆ É Ð Ô Ø Ü à ä è ì ð ô ø ü  # ' + / 3 7 ; ? C G K O S W [ _ c g k o s w { ‹ � ³ Á Å Ò Ù ç î ò ù ý    ! 4 8 ? F W d q x … – ¤ ² À Ð å ú    # * . 5 9 @ D H O V c g k o s w {  ƒ ‡ ‹ � “ — › Ÿ £ § « ¯ ³ · » ¿ Ã Ç Ë Ï Ó × Û ß ã ç ë ï ü  (7>LQ\kpu€Ž¤±¾ÏÔåõû (3J`t“ž®Éâ(6AWkŠ¡¯Èß%<@QVk}Ž“¨¶Èâç.>CWot�¤¼ÑÖï (=Vhz~˜�»ÔÙö)D`s‡Ÿ¤À×ò -EJfty‹�«°ÇÚßöú7PUr‹¥¾Ãàøý05Pin‹¢§ÂÑÖéÿ6;WnrŒª¯ÌÑêý)>CGQYafjw�šž¦®¶¾ÂÊØÝâçìñöû&7<DLTYaiqv~ˆ�’—œ¡¦«°µº¿ÄÉÎÓØÝâçìñöû #(-27<AFKPUZ_dinsx}‚‡Œ‘–› ¥ª¯´¹¾ÃÈÍÒ×Üáæëðõúÿ "',16;@EJOTY^chmrw|�†‹�•šŸ¤©®³¸½ÂÇÌÑÖÛàåêïôùþ!08OW\jw|„“£¨ÀÖèü !)19>FKSX`hxŒ¢·½Ôê0JO\ty‹�¦«»ÍÜïôù  ( 9 P e | „ – ›   ¨ ­ µ º Î Ö Û ã è û !!!!"!*!2!:!B!G!O!T!\!a!f!n!s!{!ƒ!ˆ!�!•!�!¢!ª!²!·!¿!Ç!Ì!ß!ó! ""&"+"3"D"U"f"k""„"–"ž"£"µ"½"Â"Ô"è"û"# #(#-#2#:#?#D#I#X#h#m#€#”#£#¨#»#Î#Ó#Û#ë#ð#ü#$$!$&$:$N$S$k$‹$�$´$Í$Ò$ï$ý$%%%9%X%o%†%š%Ÿ%·%É%Î%ä%÷%ü%&&&+&B&R&Z&k&p&Œ&‘&©&®&Ã&Ø&æ&÷&ü&''','1'6'P'U'm'�'–'ª'¾'Þ'ú'(,(G(^(}(˜(´(¼(Á(Õ(æ(û( )) )()-)5):)B)J)R)W)d)i)z))‡)Œ)Ÿ)¤)¬)±)Ä)È)Ì)Ð)Ô)Ø)Ü)à)ä)è)ì)ð)ô)* **+*/*7*;*C*G*U*b*n**Š*Ž*–*š*¢*¦*´*Â*Í*Ø*å*í*ù*+ +++ +$+8+?+D+L+T+X+`+h+l+t+|+€+ˆ+�+˜+œ+¤+¬+°+¸+É+Þ+ò+ÿ+ ,,),1,C,G,O,W,_,g,x,Œ, ,²,¶,Ã,Ë,Ó,Û,ß,ï,÷,ÿ,----#-+-3-;-C-K-S-`-s-w--‡-�-—-›-«-º-Â-Ê-Î-Ö-ô-....".*...6.:.>.B.J.N.V.Z.b.f.n.r.z.~.†.Š.’.—.Ÿ.¤.¬.±.¹.Î.Ö.ç.ì.ú.ÿ./ ///!/&/./3/;/@/H/M/U/Z/b/o/t/|/€/„/ˆ/�/”/œ/ /¤/¬/³/¸/À/Ä/È/Ì/Ô/Ø/à/ä/è/ð/ÿ/0 0000 0$0,00040<0L0Q0Y0]0a0e0m0q0y0}0�0‰0œ0¤0´0Ã0Ç0Ï0Ó0Û0á0ç0í0ó0ù011 1111$1*10161<1B1H1N1T1Z1`1f1l1r1x11†1�1”1›1¢1©1°1·1¾1Å1Ì1Ó1Ú1á1è1ï1ö1ý12 222 2'2.252<2C2J2Q2X2_2f2m2t2{2‚2‰2�2—2ž2¥2¬2³2º2Á2È2Ï2Ö2Ý2ä2ë2ò2ù233333#3*31383?3F3M3T3[3b3i3p3w3~3…3Œ3“3š3¡3¨3¯3¶3½3Ä3Ë3Ò3Ù3à3ç3î3õ3ü34 4444&4-444;4B4I4P4W4^4e4l4s4z4�4ˆ4�4–4�4¤4«4²4¹4À4Ç4Î4Õ4Ü4ã4ê4ñ4ø4ÿ45 555"5)50575>5E5L5S5Z5a5h5o5v5}5„5‹5’5™5 5§5®5µ5¼5Ã5Ê5Ñ5Ø5ß5æ5í5ô5û56 6666%6,636:6A6H6O6V6]6d6k6r6y6€6‡6Ž6•6œ6£6ª6±6¸6¿6Æ6Í6Ô6Û6â6é6ð6÷6þ67 777!7(7/767=7D7K7R7Y7`7g7n7u7|7ƒ7Š7‘7˜7Ÿ7¦7­7´7»7Â7É7Ð7×7Þ7å7ì7ó7ú788888$8+82898@8G8N8U8\8c8j8q8x88†8�8”8›8¢8©8°8·8¾8Å8Ì8Ó8Ú8á8è8ï8ö8ý89 999 9'9.959<9C9J9Q9X9_9f9m9t9{9‚9‰9�9—9ž9¥9¬9³9º9Á9È9Ï9Ö9Ý9ä9ë9ò9ù9:::::#:*:1:8:?:F:M:T:[:b:i:p:w:~:…:Œ:“:š:¡:¨:¯:¶:½:Ä:Ë:Ò:Ù:à:ç:î:õ:ü:; ;;;;&;-;4;;;B;I;P;W;^;e;l;s;z;�;ˆ;�;–;�;¤;«;²;¹;À;Ç;Î;Õ;Ü;ã;ê;ñ;ø;ÿ;<κ{è� {Xc‚&,4u>úVHYZY bìgRk’n¼q¤t»»»ø¿ÑÀÒÀÓÀÔÀÕÀÖÀ×ÀØÀÙÀÚÀÛÀÜÀÝÀÞÀßÀàÀwØÑØ+Ù„ÙNÚâÚüèýèþèÿèééééééééé é é é é ééééééééééééééééééé é!é"é#é$é%é&é?s@sAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRsSsTsUsº™»™¼™½™¾™¿™À™Á™™ÙęřƙǙșəʙ˙̙͙ΙÏ™Йљҙ“ДЕЖЗИЙКЛМÐ�ОПРСТУФХЦЧШЩШû©ûªû«û¬û­û” ™ ”™—œ¡šŸ¤¨&!+!¦"n#øJùJuLvLwLHPIPJPKP�W¯Y°Y±Yõ`ö`Zd[d\d]d^d_d`d#‘$‘%‘&‘'‘(‘)‘*‘+‘,‘-‘.‘/‘0‘1‘2‘3‘4‘5‘6‘7‘8‘9‘:‘;‘<‘=‘>‘?‘@‘A‘B‘C‘D‘E‘F‘G‘H‘I‘J‘K‘L‘M‘N‘O‘P‘Q‘R‘S‘T‘U‘V‘W‘X‘Y‘Z‘[‘\‘]‘^‘_‘ܼØÝˆ?´{ßPQRS)†ìíîïð÷TÀÁÂÃÄÅÆÇ%#‚#$'(*)/)à)o*p*q*r*‚5ƒ5„5…5†5W;Ç?È?É?Ê?Ë?Ì?½EKW«ZÁ[1\•\ù\]]Á]%^Š^g_D`ˆbecÊc/d•dûdae­hiÁil…l'mSoÅogp}rïr‘s vÛv6®‹²ÜFCGž‚„ …´’”þ"›i!œÑ$œB$�³%�“pïzÿ¹5óKó»ý¿áÀ|ØÖØ0Ù‰ÙTÚÐÚçÚ'éVsÓ™ªÐ®ûž ž¦©­0!«"s#úJxLLP†WZY‚Y²Y÷`ad`‘ÝÁâ�D¹ €äT.‹ñüYÈ*#‡#$'(4)å)s*‡5\;¼<Í?ÂE"GPW°Z|[¬[Æ[6\š\þ\b]Æ]*^�^l_I`�bjcÏc4dšdefefh—h²h$i«iÇiÌkýklŠlm-m o=oXoÊoQpmp6rgr‚rôr{s—svàvÓ‹�‘Ÿ—£ˆ–¢’•¥¨œ§›˜¤©�†‚™”¡�Š}‰‡€ ¦ªƒ“žŽš�ÜÝÛÚêéÚîÛßðíÜäÓÖáÐרàÙÞæÕãÒëç?:DE=2><;@ABFC‹Œ€’†ý�õøúƒòùŽ‚ˆÿ‘÷ü…ô‰šœ™”—•ø÷ú�„€ðþõ�„ßÚÞû«œžŸéê��­�”€•¥£ùúƒ†ý›ì�𙧤¢¡‹ò÷ø¦ íïä‘óá×Üâæç‰¬’±úÖר¶±Ã¼¿Å°´ËÀÈÄÇÌ·Âʹµº½®²†…ƒ„•“”‘’«¨©¦ª§îÂ×ÈßHßJ៞L¤£N쨩§Pî­®¬°÷³Õ0þ�¹»Æ½Èš¿ÊÁÌÃΰÒÐÔÖáãåçéë-¬· -Ê8Ê8 sockaddr_vmÁË8 svm_familyÁÌ8 svm_reserved1ÁÍ8svm_portÁÎ8svm_cidÁÏ8svm_zeroÁ;s¦ ˜ŒpwÒ€³˜ƒXì€  ¼ º_¿¢…‚™Ø º_¿¢Í�³Ñ §f„Fì°þ'úú×Éû€Þ¸@—5Ezo‹g…e Íã�p�pIterÁ pí óo¡p end_or_lenÁóo¢p_markerÁóoÛê2ÝЫÍ㩺�‰Pt›K©´èýVB€œ,çݵdµd¶dStderrÁ ñMw±° F+™øøø†°à‚òøáó ((RawVecÁ+€,òö©XÕ”ˆó‰Ÿô ©7«7¬7OsÁ­7óÙ6®7¯7SimpleÁ°7óÙ6±7²7 SimpleMessageÁ³7óÙ6´7µ7CustomÁ¶7óÙ6VNè7Oö‡ö‡÷‡ CustomOwnerÁø‡óÙ6 fûËÒñD¶ÚßßAdapterÁ ãerrorÁ‰q¯™ØA1¿æáøëIëIåìI–æ4È ª¬KÄñÐ}Çû¿¢ê6ê6ë6ReprÁì6óÚ6í6ôÚ6 BÆi�½£›…É}�p�pÃö pí óo¡pÜöóo¢pòöóoÛê2ÝЫÙa ð‡ð‡ OsFunctionsÁñ‡format_os_errorÁò‡decode_error_kindÁó‡is_interruptedÁÓ7‡U!‡äâÄvÍãÄvÇvÍãþ6Çûý6 Õ7Õ7�úÖ7¦Ù6×7²ûÙ6Ø7 error_dropÁÙ6Ù7 outer_dropÁÙ6ß*I]@ÆDàÇûUÿþ6 –€ö6“€‘�Uÿ£3Ÿô ö6¡�� €g€gŠ‚gê ûcƒg�ÁûcØ«q¢1È¡ãÀUÿý6�€Œ3µwüW¶_Ãy¿¢±ÀFŸô ¼ ¼ ¸ ºÑ®Ñ®÷m–P¹÷æáøúÆû‡+ü‡ý‡NotFoundÁþ‡ÿ‡PermissionDeniedÁ€ˆ�ˆConnectionRefusedÁ‚ˆƒˆConnectionResetÁ„ˆ…ˆHostUnreachableÁ†ˆ‡ˆNetworkUnreachableÁˆˆ‰ˆConnectionAbortedÁŠˆ‹ˆ NotConnectedÁŒˆ�ˆ AddrInUseÁŽˆ�ˆAddrNotAvailableÁ �ˆ‘ˆ NetworkDownÁ ’ˆ“ˆ BrokenPipeÁ ”ˆ•ˆ AlreadyExistsÁ –ˆ—ˆ WouldBlockÁ ˜ˆ™ˆ NotADirectoryÁšˆ›ˆ IsADirectoryÁœˆ�ˆDirectoryNotEmptyÁžˆŸˆReadOnlyFilesystemÁ ˆ¡ˆFilesystemLoopÁ¢ˆ£ˆStaleNetworkFileHandleÁ¤ˆ¥ˆ InvalidInputÁ¦ˆ§ˆ InvalidDataÁ¨ˆ©ˆTimedOutÁªˆ«ˆ WriteZeroÁ¬ˆ­ˆ StorageFullÁ®ˆ¯ˆ NotSeekableÁ°ˆ±ˆ QuotaExceededÁ²ˆ³ˆ FileTooLargeÁ´ˆµˆ ResourceBusyÁ¶ˆ·ˆExecutableFileBusyÁ¸ˆ¹ˆDeadlockÁºˆ»ˆCrossesDevicesÁ¼ˆ½ˆ TooManyLinksÁ ¾ˆ¿ˆInvalidFilenameÁ!ÀˆÁˆArgumentListTooLongÁ"ˆÈ InterruptedÁ#Ĉň UnsupportedÁ$ƈLj UnexpectedEofÁ%ȈɈ OutOfMemoryÁ&ʈˈ InProgressÁ'͈̈TooManyOpenFilesÁ(Έψ³)Јш UncategorizedÁ*9ns+ïÎl»¿¢ÆâzÃyƼ{ÃyÆŸ»áó –¥Íã–¥Ãyª©Í㪩“n¿¸º¸ºîYì°ñYØÒ À™ÃyÕÿÖfŒü”+ÍãàýàýÆâý’ür 1¡z÷”+»�úX×`Ð}¿¢×`¼í¿¢×`Â�¿¢×`¿¢×`¿¢×`¿¢×`¿¢Ü`œó ¿¢¿¢Ü`§€ ¿¢¿¢Ü`Ãy¿¢¿¢Ü`¼í¿¢¿¢Ü`‹ü¿¢¿¢Ü`ǘ¿¢¿¢Ü`¿¢¿¢Ü`¿¢¿¢Ü`¿¢¿¢¯hÍã¬EÌfŒüÎfŒüµ²ÑÅÑŇ áø‰ áøïððð¤î®Qá»$ç¸Ë£íPÅ–à#]Òæa¢Ïìß&•ÜU"þòåé`ëæNy”ñTó!äê€ðý�S ãŠ%é—ïbR¤â'¡·è­K­KÉüŸ?%…ÿ‚]´œsµTY[Dº­¶Ž ҒȯµøñÇ#Ÿ�ý¿]¤œsµTY[Dº¢Þq^# ʵø¹Ç#Ÿ4¤œsµTY[Dºâ•æØ4J@n~Xµ?eöi_core_intrinsicsÁderive_eq_internalsÁ¢ŒÏ¾sµTY[Dº.Y[ÑG’”ü—»üžñsµTY[Dºzé•Âm$BƵø�Ç#Ÿñ¤œsµTY[DºióMÒd@oZ$¨Vu‚‚´ô—derive_clone_copy_internalsÁú Ì sµTY[DºÈÈ“—’V$ŸµøÉÇ#Ÿt¤œsµTY[Dº;·ÀlLä5€üôdÍüª» sµTY[Dºkµ¯2žÝÜ)”üþ•"sµTY[DºÕŸ3U„9Õ#e,•ü}”V¯ô—·™ð‰âsµTY[Dº\€$0q©ÿµ~[ÆeÚô—†˜¢ŒÏ¾sµTY[DºBbß±+O˜Ã debug_assertÁüË7?ÍœS]ƒ‘‹sµTY[DºZçÔ+qäßeX,®?¶ô—·™ð‰âsµTY[Dº³MŽ…±ÜÖÜe,åíô—·™ð‰âsµTY[Dº>:±:Û¬”ìøºesµTY[Dº‘=©‘…s®­¶YL‡J�ÀO_ô—¢Ë¾sµTY[Dº›™.èÉá3”Ú„ó�±ù]ô—panic_internalsÁƒgeneric_assert_internalsÁ±œsµTY[DºØÍ¡}1D.”ü¹• .sµTY[Dº4Ðòþ¾µøyÇ#Ÿ¤œsµTY[Dºér©Ö€ìzo$�ü,ô—·™ú Ì sµTY[DºÆ%¡™\áe`e[,¿eô—·™ð‰âsµTY[Dº®%o<ÓGB‹µøÁÇ#Ÿº¤œsµTY[Dº1{‚tåµø‰Ç#Ÿë¤œsµTY[DºÜ›é-‰öøñÉ„ÜL´œsµTY[Dº3¾äµ¢)…,oX$¨?(ô—·™ú Ì sµTY[Dº¬šíØ�¬É¼Ãr®´œsµTY[Dºš‹ N”¾ÉìÿûÜ´œsµTY[Dºøëøø,[SÖµøÑÇ#ŸÙ¤œsµTY[Dº‚‚éP! ~YƒJ¦ô—†˜¢ŒÏ¾sµTY[Dº$wé+�ªéµø™Ç#ŸE¤œsµTY[Dº/ f›ÃFi‹”ì—¼´sµTY[Dº>±™…LÉ„ž‹Ó´œsµTY[DºŽ¦#ÿɺ q,ˆü}©Ø ô—fmt_helpers_for_deriveÁ¢g¡gsµTY[Dº„4³SŽFN\µ øÇ#Ÿ¤œsµTY[Dººe½öÓ¸oo[$¹e-ô—·™ú Ì sµTY[Dºÿ½ä@Ne­”ü˜˜"ÂsµTY[Dºq饺ª½æ T­K fmt_internalsÁfmt_arguments_from_strÁsµTY[Dºðl–áz�…7Úü«,uô— žƒµž±œsµTY[DºÖØ (eÝDÉü°e%m´œsµTY[Dº˜|&L9uèqO,§‹šô—椢g¡gsµTY[Dºc).øÂïø] ¼Ä�­KsµTY[Dº¹H±6Ô¦$crate::const_format_argsÁ`ùŽ"`õÄ–]¼¦̦ŸœsµTY[Dºw�ÎF¢Üº¸eY,üIô—·™ð‰âsµTY[Dºƒ/Â"£˜ï”üö»‘sµTY[DºåƒMí^7W�¦:üÓõÊüÅM�ÎÉsµTY[DºÐ�w~?Kµ øIÇ#Ÿ± ¤œsµTY[Dº ú–�´½]‡¶ZL¹V�ô—¢Ë¾sµTY[Dº]¸ždÊeG´µø‘Ç#Ÿ ¤œsµTY[DºE-@¿Ž’â”üÑ—"‡ sµTY[Dºõò€ZE à&µøÙÇ#Ÿu ¤œsµTY[DºÏ�÷¥Â†&e\,Ór£ô—·™ð‰âsµTY[DºÜRDƒ¹�“ÉüŸV% ´œsµTY[DºÁçþ;+›4ªµø¡Ç#Ÿ ¤œsµTY[DºE4®«û½½µJøÇÅ%h< ¤œsµTY[Dº5æÅ™4INð �÷­KúûèsµTY[Dº0—=øžjÛµøéÇ#Ÿœ ¤œsµTY[DºUL�™Ç voY$öI¬ ô—·™ú Ì sµTY[Dºè ÿÂÌ4M”ì×»@ sµTY[Dº&ЖW®9²$crate::panic::panic_2021Á_ɇT]¥Â` žÏ¢[ˆZsµTY[Dº…,³Úçã³oµø±Ç#Ÿ€ ¤œsµTY[DºƒÇ1Y«öæµ ø4Å%h¯ ¤œsµTY[DºZï2¾d—~ZµV| ô—†˜¢ŒÏ¾sµTY[DºX8g©]š˜€ü…�v  sµTY[DºîŠ>4²øÌs”üŒ— ‡ sµTY[Dº²áêiU½v>q\,Ìr¤ô—椢g¡gsµTY[DºÌ|Õ»ŸGÙ­K­KÜ sµTY[Dº«XÁò™W¢„ÉüíI%´œsµTY[DºZÌYKÈ6‰r�­KúûèsµTY[Dº B¨ÅÙà¶XL¹?Ù ô—¢Ë¾sµTY[DºjR#þëÌãµFø¯Å%h`¤œsµTY[Dº*ô¸1.ùù¼”츻Ï sµTY[DºE¨݉°8µ øaÇ#Ÿ¼¤œsµTY[Dº‘ÉÖ1äCúeZ,®Vê ô—·™ð‰âsµTY[Dº“ñDÄß+ãÈ€üÖu¬ €  sµTY[Dº�>B'õ¢ÍV”üÅ–"‘sµTY[DºD}Ò×çJµø©Ç#Ÿ¤œsµTY[Dº˜êf´RÚÒ�¶[LÊe] ô—¢Ë¾sµTY[DºJ|‘6*œ _ Ja F Ÿ[´Â¥üã"„²sµTY[Dºp#¸æÊ.Ÿ[´åË0²sµTY[DºI«'ï´À­nŸ[´…à\²sµTY[Dº”VãžÛ¿ÅŸ[œÀ2‡²sµTY[Dºù,N»:aŸ[¬³N²²sµTY[Dº >‰o?šD\Ÿ[¼áuݲsµTY[Dºþ‚ðNˆlsŸ[¼•ž ²sµTY[Dº1ÕÌ^`ÿÅŸ[œŠÅ6²sµTY[Dº ¤'¼eXkiŸ[´¢Ùc²sµTY[Dº [ÔS£¿Ÿ[ì±à�²sµTY[Dº…² =‚™ ®Ÿ[ü•*½²sµTY[DºŠÔ‡›ZÔ¿Ÿ[¬ÄJé²sµTY[Dº^+µ»³” âŸ[Ô©c²sµTY[Dº¦âÄMTØ,oŸ[´ÁŠB²sµTY[DºumF훈fŸ[´”Áo²sµTY[DºXñ&÷ÀÀŠõŸ[¬¬Ôœ²sµTY[DºÚUÙ0“×EŸ[äéöɲsµTY[Dº€Eä?"?$crate::assertÁɇT]Áô— žƒµž±œsµTY[DºÒÏ>Ä@Ì‚aŸ[¬À"B²sµTY[Dº%è0&p–Ÿ[´ù5n²sµTY[DºÆŠ< ZðŸ[ÔÃ_š²sµTY[Dº§ÿÃÞKŸ[œçxƲsµTY[DºI�;é<²×b›ñаŠ;ŠŠ†›‡ŠIŠv›ÿо›™Š¢›ÑŠŠ› ‹j›þ‰º›?Ц›‚Š‚›Šr›õв›ì‰š›(Š~›jŠf›«Š¶›ãŠž›‹z›Šn›RŠ®›�Š–›ÌŠ�ŠeŠ-Šõ‰‹ÚŠ´ŠsŠ7ŠŠèŠaŠ‹ª›‹Ž›Š•Š\Š$Šñ‰‹ÖЧŠoŠ2Šù‰‹ÞЏŠ}ŠDŠ Š#‹ìнЋŠWŠŠç‰úŠÇТВ›wŠMŠŠâ‰(‹'™{“™�ö�Ÿ�Jœ1Ÿ¬�uœ]ŸØ� œ‰ŸžËœ›1žøœò›^ž%�œ(‘¤Ž>Œš—Ï”ó‘�"�¢š˜˜‹žR�ü”’l�R�ÏšŘÅ•“L‹N™[–¹“û�mޏž«—B”›’.˜/•:š™�”•üš7�ò•}‹h�‰–±‹V‘—nŒ‘ý—ñŒM’É��Þ™º–ç“Æ�6Žá‹©™J——”‡‘ÐŽžŒjš]˜_•Ë’ÿ�»�-›ò˜#–-“|™ê–”<‹>™©“¶�&Ž!Ÿœ�eœMŸÈ��œyŸô�»œ¥Ÿ!žèœâ›Nž�œ{žB�:œF‘ÀŽ^Œ*š›—ì”’\�B�¿šµ˜¨žo�•=’‰�o�ìšâ˜â•“m‹l™y–ד‘”Žõží—‡”»’M˜O•Zš¹�µ•›X�–¡‹‰�ª–Ñ‹w‘:—ŽŒã‘˜�‹’ï�«�þ™Ú– ”ë�]Ž.ŒΙo—¿”²‘÷ŽáŒ’šˆ˜„•ð’'�æ�R›™K–k“™™ —2”°ÐODHT A·Þ«úúò�¿rï*Òr(ÈH*!è­ÐíÖNmøbJQ“x²¨"&Ãó±x—Ž ,ó‡‰x GBu�d =ùôé=¥é °²†iÀ}÷iˆÖ{aùä0BçÄðw_6À¦ˆZ€ú+šÔùÙuÐ[€?½òѳ@ Xåʽä @ H¦%Ô!8û²çʸÐ"LZvëŽ%€ÇHÐéÝÃ&hžòn×§¢õ(XHá1Vk7*¨›¨" Q+¸üð#t¦Þ+à59@g&±j-h]j^5IŠ…-ˆ~Ák7b’/ˆaCv±Àç©0h«÷ãiø§§3°m±.ú»ö4dNßkž3à@Opl,y53(eøß²`¼O8p0Àfä/49XB{•üaÿ;xÒg<›|â)="¼” ‡µk>ð�Í*¿¼Ç>èÒ-6ãA“@0ÞbÅB¾SAˆ=Û\ª:K�Aè�‹ªq«eA¸PlÒù’åAn$¥ ÖmáB`n£Ä1 ókDˆ¶ð÷ïâñRGH0æÅqðhI(snU(%…¤KØrš³L©såMØ»0,Ô$¡MHoZÇ "õN(¡$®)Œö·PhC™8òŠ2òPWBÍÕºOQè/?ˆ:â%Ppi¹|Ùñ‰Q8´�Ýw¡XxæzÑ]ƒ.ZÀÛG©î=·£[ ™‚\Åc)[hŸÝÁâoÁ]¨eØWU.Žbˆ}ƒauâk§cÈPô¾ÑÅ[cÐþä¢zÂB‹e ö åüwÚJf`á¦}™ŸcH#�4»?j@^š,êÿ(¼màò’fWíp@¯Foš Å¹q@'Í-£ hpPKVÓIk¶sÐd©C qÂu4©*š)Ëvˆì÷NÍñß1u ±ŒON+Ux1~&ÏAS[yÐÃ�Ëò•@y°P ™¾Õ{ÈÑ ²°a5î| nt̺%yðAbH)™m‹€(��*sƒ0�r±s¿„€ÀÖ%\,³ü†ø|›Ó/jL‡p—ïñv8{ˆpSk`¾”—cŠ0ðÊ¡$¡F1Š Žàúˆ*ŸŒ€ÖL–ÅaZe�€œA-Ï ‹È�à=é ϸæí‘H,£Mœžih“8ã§îè®6Œ”ðZÃmCbî§•p­H[]+Ø—XÌšý¸ï¡p¬è„)¾·%¢Hv¥rJ"£0·ß4?ìØ¡ÈùàŒ‘@$~¤ }s±zÌpÒ¡Ø•p»۪단þSí¶‹üIªX6ׇꦫÐzšö`+¯¬ÎÝô”W’¬@ۀܠšâ® ü ”%ºâ8­§jýÝœ’²`\¯í�‹A·ðó ø©^ºèÅ‚ìß »à»çü!_E4¼h™¥cˆš‘¿˜²ÃQò¬t…¿ÐòÙê½rÅÀ(›‹;–I¤Â0c H>ÐÇÂ�[„_#|ÄÈ9Å ˜\Å@J�~¸MCÆ(pŠáY�-UǨuz>Ÿ¹åÃ8WÂ*ï‡Ý5ÉØ[é1‚däÊU ¢w�åÛÍ�|'ìò–e/ÏÈÆï ÞÉCžÐ#G&>ÙѸŠaf¢»íÓ�ôve JJñÔðhVÿ7 äXÔxG ]h¯pŸÖ¨0ü¦aÝÜÚÈ­Q¿‡K4¯Ú @i2úÀIÛX�©*ð0Üp¤$e½Z˜Þ˜iS&ÀW¿Já`ºc72ò)]âà@n—6sââ˜b–'ØŸâø%¼›‹×—ñäÀoJ ™mtÝæÈâ6òÙF ]ç@w—3¾xêPÿÑ­ †øîwb ¾lôðƒß �»“1ñ¸ùeÃËõ‰]ôðß?t/ö0­b�áÿuE÷PhŘ˜z¬üø�¸Z†;ˆfü DúAQÔCü $L¦é÷vþØ?‰4þ:ýÈþT= ´»ëþÐÕ*ìñ]†©ï. Ã�·¯9îL¹Ã¤ð 8ØŒê¦Mª©O÷Ý٠İ�b.u(Ü‹‘vwak³ñºÔ wóŠÄ ÷„(ýï Ø yE7vò»ÑgvÓOX^ ÑoÍéI$F ¡^cøÿ”wEY_T9Œ‡Èš¹T1ÔÃ�öfñE]ä½ ¸1j;¢µUaÉ 'ߨÇùLxp!â0Té/sM—gçñ¼È|c‹ �v~ Ì[ÌÉ‘po¨Ö@ ¡¿Q#ƒþ— It¥ž¶_lh 3äÔ½‚[!Ax°Û Ä$Iï k†GGž"ùð~½U]&ù¥:¹Ð¥'W%™C¹=‘(ÉBü>î‹ Î)9mÂ.ØW*yNµcå EÒ)aœæÅ»´«$,!Ó§§_2ÌŒ-ar©›Dõÿ$Á(õÉþj/ÉåÜB§AØÉÞÜ.Hu!1QÛ¾aP7g12é\°¬Št�7 Ê;?ÓÈÒ;éB#pxq«;‘.ØL�Î<;É#Æ—ÛÈ’a?y4;_PJ@a›Ö<ýÝmÒ@9m(£HàäLB&ó7œW@©z´I�XfÁD‘'ê¯ôj;ÚC©ç†˜âˆú|G9‚!Ji‡õþHYc¤Ž_èIi a �4ð¯JyêôFìm4JiïóŒ°|sÞL9ÓQè²Ê¨ M1çZ¯÷£chM±43>ÿö6õKÙt"?μh2P¡æ¨·oùÈQgÖ¯ARbeR9|HxKå½…SA¨*½ÔŸJÑÔý" ‹”¶U…büºÖVQzôÎ0 D[NùGlš:}¦òXñƒn-«úY¸ã�O.#|•]àäq²Ü ä (žè rÚÀ²¤,ƒîq£ò¾Ìl˜Áî„´—ϹcñqãSw…9òÝŠ éäìJóa�À/è°Àô‘ ÅÔJãSòQód 1ã¼;ôQQœñ±›^ñ÷Á+H`öÛ×uø‘j¶åaïÄpù�t9ê!wù�üÉÀ'SÓ„Êÿá‰w{µHÛÿáЪ8Àmº‹r§=iûp u@x@’Á§¹*AÀÈrl"Ó*5f»f,’ìy :߀�òåBÏä!˜> ê³Æ™ ÎïÚñT„‰Û÷·"‚\Á€qv“²¸OÌþ±ÒŽ]ÙâøEɲêÓËŠ)9–¶¢‹)c-§%O·*8#K<<¸âð s�!®™¹º §ø‡%Hº^† +Ì÷¹JÊwÍÑ¼Š—UrYíGŸ½*þ†1¤€ç£¾Ú.;í LRO¼²É7º«¡ŸK¶âÕw!;ÏêÂòx p4ŸUðÃJ($ÁýíÄòKĘ6×pÅ$¯é<ÜuÄ ³ç…�0¼³Ç²«¨¤ p\Ã/™Ãa«¶É’SÿFGœÎEÊÄ© ³¿Ë‚•×)ùùäiÉŠ|u‰ÒKÇÃуcÓnêΊ÷Ùœå×ÏBÄó*²†ÉÐâ·2æ pOŠÏй³cAáäÒr•sT#€ Ò ºñL †¸Ô2MzJ`£s¯Ðª—cØÚ½ò¸ì Ù"ä-¼ÜÙr¯­ûÉ Ûª¾ÆŸ–£3ÛÒÔ�lŒY0Ûz °AAÅz^Þ"f&6÷Aç2Id‡±ê é"® •C”þìª@ÏÉz§ ÊþVܧiïL ¼‘“Xó(>zwÿ݇ôJé :kTõâZ ‰¸ˆôZBo™t(Ò ÷²‰MÕ5��\ô¢œ8Îó–LùêÀ*í~Råøzbj} âÖ]ó÷vzül’3Clsú±7ÉcÄZh›d´SK„mæî°œûÛæj-#ÝC-κ#á˜ó #’<Çþˆ(B CÖ2Üx½è ãdPÀ‚ªˆ Ëêt/?"]Ø;�»¢ºÃË‹NÑe0të䣅\Ñ‹[°““ºÑ¡½½?ÄKP›Í—óNÒ$ö¯|µ ì"j¦»¤!¾ÃÓ;¯¨Hñ;9¾^Û²Ê)+Ó®µ+«è�M�ÑÖ‡!3_å,æ–ð "{Ñ÷âš-:'Û¼NàèG+ä)Ó ¨‘ <ŸE)NB¬nŒ’*¤ÐÒû_S¬)[‚Ê9A㦔/3f×$Jb/5G•“òóæ0³ÕÑIWÂ×”C(U·á?ƒ.ßéã²5Bë8ßXêGDJVœ^ãDFÛë )wƒë¡Gè©êo¬?*I»X´º\ýÚN+8¥’¡0RO“ÔÝhÎbPcÜ ˆÂQ Í­Nÿ2JÌP#¯lgƒ7 BSS álz/T{�Ó·•[Qƒ;|²ÊF¨eV;+V*ÊE=3W£QMè|E·X[3¸sµTY[DºiÜ×Ï[+0¡ÖÝ]c­íÕ‘ L^CÛ±<l×ùbëè©iò¨tácÜ6­ ¨¿ÜdÓž{Ó¾7 Æiëð¡Úþ¥jÃPÜ5ŸHUm&É$‡eÛ[p;¦ž‚.qpkÝÔH/†#ër ŸªˆÙ®uapË�wÓKœ†t»Bö¿ïáWu[¢î_âu[lÁS~5­CwUøëñkÔt‹úÕë¥ãÿ |+X = �¡˜~ÛĨúhèî~ÓÔpš7¤Ô�KŸÃQ8á„3ù�'÷Ÿ…» ë.> ݆›]0ñqò*‡†‹)üóì ãˈCÝÆCf¸íߊƒˆ�³^{y½‹Óˆ…¤Æÿ»ŒDs¿{ ô �+½± ç8ÁŽ«Ûíó™¸5�Ó;"+¯#�ûV©ŽÃÙt�31ɲXê.Ñ’û÷ÞPFÄpT‘Ó•)‡M¼{”ƒ‹Ý­–GŒ­•ëd:¼ íc‘³(«ï«Ðjœ—³ºE©£òR˜³†GÑΛš3V45À¾všó¿øà¡ôк›#!<æÛæF¨�û– tYÚ2z£óîú"@š¬¤ÓÏ\=~àbW§ÃRq£‚ªK£°¥^5]¬k`'~:>K­#{ÂÚ –EÈ®C®)gXй±®;»-D�ˆëä­#¶±z«,Ê�­cCx}IaꮳU”kŒ2-Ю{~«ÒêÓsæ¬cZýcÄ=LµËv˜ÙU2ó¯Ó´†¤+ D¹3;gZ\‚÷»“U«_T–³¼;öè+é„á%ÀÓ1U—šB.^ÁKÜö“jì÷Ä“sqÖd�iÆ#Ô”-µ<°lÇÇ #Õµ±Æ‹¨¢hê�‚Çk͉5��ü2ÌÃ%7fï8RÌkE¤VðPdÎSôê"<'[Γ‹W(\×àÏÂy?§$ÐÃÞÝ<tÑ»rš4öwæÓË3ÿoáðgÔ³ù¿IËÖ3ÕKCóÞ¾"Õë.*fœWøb×ëÌÛ%ý�‚#×Ó=uí S× ÀòŸeäÕÜ׳WûÎfZÛ+Sí8úsDï܃lµVSUŚݳ­jʼnø]Ó XŒ°ÀemßÉèbM[\›à£Êxgf áùÎD5á{ç�IÁ´‚Šâ;SD¨í3xäKõœ0 ñ)§à£FOhæä¢‡Ø rýÖºæžç+AVq·|©èSy÷e±Bšçãëð‹kJÉÌç£CÁŽ�ä\Øcu¯“”�æì›�“.‚LjìKüï¡*rÊÐîˇM¸Û1~Õî[a±ˆ&"3|ï3òfÌÕŠ«�æ#Ð=ìÙ¸­&Ö›r—ðôS°Þ+Úbúš.Ðûñ{HêŽ-”Jìåëì>�rX%—ö³[aâ³êØ÷+>†d�{Ç÷›Ô0‚ÿµù£~ì eð&úÛ¯aP£y�ûsmŽq!öxÿúÓ*[qÓõ¿ôß;Ê/EpÐðísŸÀàkr4ÿk>¡VÃ]tœþ»Xf;ÀNu4HµØðZÆäÙ_¶˜·,üÿ‚+£TP㢗y£œØ´¤= Dý¼¤%{, $ºSã‘‹”× œväÒ¦â/?Ö­NºøÄ�@‘~)ÖÇ-«@¬DDØ<$vðAü=.@‡3 A 4�âÙœ>ô°]z ‚Ô F,ãü�•úI±G4ýSÆ¢‘(HóÀ Ô2}G” sÝFÓdF|Âàkº·U¼Úàµ'“ÚÉVìM;ý±bsUòXÏÛ›tX”Ö88ºJy ZT=áìH²ë¤[„:Ê•¦³Äx[üŸ{3(BZé^¬»ô§°¾�^ÔûzSœq¶z`¨½‹R—nad:ž˜ïp2b„Áú=omíd$HbÝ•®hìð 6èuhäºÆÏŠ-ój\'-¹ók|4¯þq�4FkÄls�#n¤þä6ÿíd%ov+ò2>ëÇpԚ΃^Ý…q|¤ÕµM,0Àräܪ?cçsÄÔ{0±aÙp,ôJ †×åêu´¾ÎµüÉ?àv\+‚梂 :uìïûK4ø9àx„loÒáJgwTÅ…£üYÜvtÅ+Æ =ñ{Š«ñzß}}}|½êüÜ–´ö~ô4}[t�%ÔÔŸƒ9¤H$€dù£.Êe½�ì‚X5Qs~Œ®çëo¡„”)ëñ+K„Ì�ÐÊÅNeo†ä7÷Ú¬…͆„`™ дi‡ þh½R•"‰œ_0‰æ 7fŠôid«XFõ8„\çUéÐzàêŒÔ(˜[í5ý>�Ô(ëÆz§ÕŽüÝ$ô(éP;†”`aï7d †’”eiäÄi4“üƒ¿sÊÜÉ”|Å=Ô¼W’{7…# ÃP“ŒbЉ¦ç(šô ûüÊb™›Ì§³F®&iÑ›ü!ÐJŒeô› „á kf� 4æÁÕ¦Ô#¢ì=Ößvœ˜-¢$zÕáP(T¤”W™Ë6šm¤œõç-³í·£¦4•qr�?§tÍm$Eþh¨” «�)Z¥®´8?CÜÞ@¯$ê‰ PG?²t¬ÙªMÑă²lšQÞg •V³4‘žn¢vJ´„êõgÎlÇñ²Ä¯÷îRÇÒF´¬Hš‰û6w¹|˜  ¾ýϺdz÷ÇgnÛ|»”pâO qâ½»$�>|0Iþ¹L_Ú~Òß¾·Ù{f1À´‰¹ky=¸\ÀDÿüÒ�@éx f@y¦ùJÂlt˜v‰ׯŒÜA™Ê]ñÈ, M—ï!ÉÔ™ëWH»òvÉÜ€ÌCþë8ËŒo¶íNë#Ë„}U‡Vj¼ÈÊ ££¹Z¯SËtzÉzötùÏÔP‡Ä+ÄÐôD¥§T¯ízÐìÉóGœFÔ„Ëü…%�ki\ËÌÄçÕ–õ ÷Ô& é2oVÅÕÔžIg¶ïï¦Ö4ЬÓbº®åÕ”L¬±N¢vÕdìñâáUÁ€Ø$ª_“ÁÌ»ÚÖv1Ä�ÖÚÚ|¬ 6IÌܼïyä�,tÝäŒÅýéî+Þ<5\+¼à^jÛ<G`Öà”×�}xañãŒßKK"O‹ä¬ð˜Ÿâ¦�ëãlxYqHŒSæôƒ ¥ªÊF¬çì³ö0GZpýêüöŠŠ´Ö %ê}X�¬àØð—‰|µ— óÉÏÛkS_ôÜåu´QúºÉõLäwäsþsõÜsšE“À=Àõ4z—™›!RzøÌøùK�¢ úôídTõkòÝú´ÖàÄý—‡ØÿîÂ6\nÕƒÿguÑÅC{•—Ï:ªšð�€14÷zé}ÅOèƒ 8¥Xôe·Ie#>Q�ÙN%Ìú›^�ƒ�@Ñl ]¿)Ë€«³ ­+µ�­X~g5i÷Ù˜}(Í¢ ½váº]ãªu 5¤É%J«KÕ`ü™.GäxK5T‰h8yÔ´€$ÕJµ$2ÅmÏ?ù_ç�÷³¹ÐxßuĸW×÷$½Ýb;hGô%uƒƒé»M(•Bâïý�{+Um§)Úð++Íp(˜© ,-íJ’çäRu.…Ám>óÐYÿ.Mæ_†Š7ya+ÅT@ªghi1•¨ MstÆ2U­Yð×#no4�Ïí›>ª’ 4U�¡²Öâ8ñ4˜2¾Ö0]w5=ìšl¥r¦µ9EfÔ¶TW>4;]o…^|Ôˆí@µþÚ IìAí4R{³bCB †¸ËqåC=v;l}‘™DÕ:¿aÅ7XDµèºÛx³.FíJíÚ0« @ý$-Qs×—`H¥¯\¦yéIµ–Y§y}5 JÍ._YÕ¨/K®,‰”½ê_L�Ê%ÜyGÄ"G•«Æ¨Y•C&OµâK"ÖÌÅtOŤNÙ—í`Q=ö[}ð´™ÐQ­oR—„§–Sm$QÁ/‚ÞSMƒM+Ê�]#Uý˜A�“ÙfV½}áÇO×Ä[ýÏ�Æ35“3\µ—6ËUÝ¥�\¿·  ðKß[ͽ¯F—8’Ãd}2EÊíˆùe}Æ*]ÃoHgÅÛdÞúMmÁj…rmm`½yl-ë}nœ?¹ZqýÔŒ7ñnFUr…£E¡ªò‘_rÕVÚÎìÚuõ>ô�}uýq>ÿ˜an7weoÔ,mÑ�vlK x1Ï~{Õ8]aõÄÍRŽeOaî€Åi¡ÉºIA��y{t®ð2t„eîÖþ7Ég…]íÄœØ4ùÉ…=÷|,U<~‡ˆädë��s„ýî0k¢ÿ¬Š…ç¼Ý0a¦‹UÃÑša Œe-ý`�$z£Že9X�E(o›�µp…™üÕV™‘½ó4®µ]_‘Uh†³](€”…ù^TŸÛ݈�•©:¤oë’À�õ&!ø—é ¡]ƒÆ[ø ë£=Í‚» "Mî¤ܽžš³\³¥UYX¤/¤]¯çH@Û«¤­})!d-)éªÕ¾}•äª]…1}\7ä­õƒn„t 8߯�ËàDÏ�°U3‚Î ¹&¯Í Žy¼Hæß´-?›Yw¸È¿µÍëÿ\jÉØ¶�ž§EƒÝž+·=¦´ÝªcV¸MMîýkžÚϹ…œA¶S>}é¸åƇ¢#>ʼ_*]5 >�¼�ÔœU,ûID¼-!b¿xì]ú¿eð+ûg $¸Á]â 2�çR™Æ \'ï�sOÇU ¯çL[Þ2É•¬)O#$}’Éý£× ¤±†Ìõ\¢6\ÕÄìÌM@À„ÉJÏÏ5vm’�šÐÕ/EšÑ'ÄÐõ§«ÆбHLÒ…Ù4ŠŠóžÌÒíK«§‰p·Ôegö©*}”/×Õò=Ο�ïØz§«�Bµ×�“8õàx¶ÿÚ�½$Ðìk˨ڭJ5<CcÜu Ü2�ÍOÜOö7Agsá•-:Ol1¶:䥼eñË<æ5MŸÌÿʽNæåu­Ÿ¬.a–æu,ëÊW¢‘`ì=UÝæk%+í%˜ l°ˆ…ŒîíÑUáŠ<.ïåø T€Œ[õ=’ú¼ð¦¿õ5[LAµåÃÇ÷µ�Õž¾€é'ùeÚ“nÛÒ2»û͘øž‘Ö ü½68 A¦ýµß;GT“�°Æ²¾ç[þ¼w>îgçWj°ÖÎ&â¤ü¨®Úÿö6tZ®UÁï3üãî:2�ßÖzÞŽiX‰\Æ¡Àî¨tãq„È(–‘Zdε''OööM–g¤tÐ0lðn·4­ñ<<¦Æâ-yK ˆÃ¦í©jÊ4NÀÛ9 ©O¾ÀÈB& Ñ>š´LñùŒv¤T“"{—ì>þrNÖ&ûaìY�¼W+?×tœ6R ¾75Ø(N ­(6E¦&ˆY�,6²“ }E’À-æ:εâ.î ;.7‚ä7/î]_:„$1VÃg«õ9°2y!¯Ï!�ª3æZi®÷뀵4þµ9 æGÍ5þ¤Ÿ¦6æ×jªÊ‘7~ŸäS áÅð8&¶q^¾ Ù©7f•·‚‰|R:v,òøbЗ�>‰°Ü 8]÷?~Âc÷?³î>Pà)±ýÖA¦›#x,¿†AvÛ#á�ä†U?¾.G·fFÎyãb&.•pGæ×ý3»*flF¦o!ÞGiîGŽ“”ÏHvuJ.l”þ¨±.Gn_ßПëA°M†5ËS±3ÆO¾õŠ  Pm€P–˜ Cà®GiQ†Mj�C_{OÞrpõ~ £¹Sfâiyå�r¡UVN×½ ¿ßŠVþÿ€Xê®ËÓVV�Ý€‘�" X–È@�)– ÌY;Q¾'PFZžû¢Ú¥Y‡[†Ý.>¦õc\.ÑÏX7`Ö}…³¹ÉÞe>Þ.ŸðÿæfVìáy§gFpèìå`�höóT÷JøÄ-h®Ÿ|È~R:j†[{j¨w³k6=à|ŒgéÂjnÓµ¸ôèwøm¾:AM Õhnv‘5¦¹€ÿs¦rO‘÷Í+s>ðÜuïos– ¬N׫�vÖ€'e|V[Æt.öM¹Í«Gxfý"µªg]yfHØ^½–sæÄVpȶ~zVðcü_uvxÖ&ŠXD¯}–8 ¨pÆã†w.7@ƒU‹°zÞ¿Q~ûðI”Æ�°ØŸ¯B{Þ'¨¶[µâQ‚Ɣ܌֡3ƒ–EŒM~Bƒ„N›ë¢n*�„–r«®ÌM´†N1†´Þ£ŸU†î[®š¿r]‰69’à@?ŠF²~£¸vŠv•™�Â}Ë~Œî)d–Ç‘jÔ�Ï À÷í7�®_¬ÈâyPZŒî@€ý|´ Ç�¦„šý(ó…�>ž}ŽèÛŠ•Ö{8]٢ו.^e¸¡óꘞp«/ˆ™.9zOf´ËP™VpÇ ‡/€žfËjÂÜQö˜¡6Ómùpüë;¢&i«éPb¦^¥¦Ð&ìy§ÞTU ¾§ÖPƘ˜Y“ªæ7ç‡ü±Ñ­ÎEHtۯۡ͆O ³®z)¬ £³¶ §îdÓ`¼µV'‘¿³Ö³¶.R¡4ÂBºîy³¥•±c »¾ïÔÕPÊp弑'ºi�­Ä»F�÷ü©Ù¼£ýg£P7ÁΙ7�}ØÁFÖ7êÉ»U þ  žE¸cľjŸ[üPÁZÅÆeâÍ@Él.Ãî¸æò˜‘Ô-É–®æé«̦¾½R[I¦Íަ<Ë<Îv PÙP#0^Î>¿–%�|ÏTÎV�0WÞë :Ñ–+#ò0ÒNߨB¬½•ÓÖ”ld¤]ù�ÔVvÊê_HÕvÔvž7ypØÞ.™3 »lpÚž©�„QhàŒÛNX/x‰�”Û®`^Ð8�HÜ> u°xòÞv™RÛßN+³¢®à>”‘ÅÁYáæP¥m¤ýØ»àþ’`>HÌÔãÆ*éû×8µÎäÞ�ÇÊÒiæÆmÑ�âŠöªçf¨Ž .ýØè-P¾æ Wbã uì87í>0m#Á&… пgx‹X/¦ Õ©—н?XÏrCUnè…?“—é€qÙÀç2÷ U%kaCü×ó÷$ V°š÷IÖ2ÃÃW¹”•MˆÜ·2n Y!·þðŠñ¿ëã"ßÇï؃ð##? £„¼fã$¿óù‹…k #—¬I·u¦)G„Gú¾%ã2.÷ ÞÍ)ŸKÙ/õp2`~ü0¯í ’ÓÌ­0ÿJ·¨YÝ2oaåÚ:ÇZ3§% 5ÚV6g�tS“a+©;çM*,f1Úø?¿m'‚×M@¯ %ûwÔBwY€05ÊiE�­GÈ’ícsGG-ªîY{�HY¶ï`¿ãI¯íkQEBAFJwæÓ„$xÇJWnT˜¨™íúLg„>i–¨€çMï\d0HòôL‡§»=Ö%oALÿª¢ØQ•–N×½''ò²"êT7–<ÔK ®U'£�cò \eWW˜ÿ ‡Þ¡Z¯-ÙÉ"3Ž[ç"7¾FÇ�‰\/”€X:–ñ_‡ÛT)/Ô�üaO©®[kزbé)“µ5Æcw!?ÚÏðDb'åe˜©€Íf×O†}1•sio>wÿÄA*k�ùŠªD„spo¿ZúK.ŒtG ß…ô+‰u…ÿÝ×pý¾y/Êî3êÛzó ‚T�t”{wÎ\HªÝ°|=²4U]Ë¿ªÛõvªô�g‰MˆãËq‚O\ŒÒÇgÖŸ‚ÇC`öø„6—¼&GÕ ƒ_YÑ;•-°†çšÀæ%Ú@†Ÿpô£·üÿ9‰Gý*…ˆÉM‰w½ã,|™I‹ŠgK²~¸†:ŒŸøü`3†¦À‹÷d£ �ÈäÔ�ßy ¬þ)ª”�‡es�$ ¼�“WFÀ�·†˜~”—Tƒ/¤�ÓŽ™·š{ñB´!›¿º©ÍâºOwœ‡E'àÔgmuœ�ïÛxÐ'Qž"û›3 ›'¡'E!ß��-¡¢/êÞ:ÉÝa‡£¼S%Jg‰¤Ï0¥ö‚B¥o̬Š?÷õ&¦M‘#§!³@§÷aå–sìЬÏ׫|ÉÎÆ­‡ˆ Ö¥±*6­u{AÞP¿²/÷iˆýÞ~³„,®R�ø³¿{½rÀ¯¥òµdáÿ߸Ïß»öܯ´º‡ç6Ë--»o·¦ùƒ&¶î¼_§^ëžNÀï¢�Ws¢Ã'%ûZ7öK5Æw=å,‡ƒÇ¯°pו¦€\ÇŸ»abuüp×Ê�®^�ùÆ›£Ê×wS®O!"$Ì·<ëés…©ÆÏOöðõáÍ× Ï7-C$ªù²Ô÷�ÞƺêÕç�ï jÎÎRÖOºhl�&7×g¿!Ê€M�¶×W%w›GÔ×kÝ-94`Ï×פM/s÷`å›Eä盩Ûv‡(�ä—ÙÝfÈ: ‚æÇµ xš^r®æ¿Ÿ3ê±ÉëgüóãÏiy¸ì_Êxc\·NíTK<ͽ¢ï2O(Q_*ãñ瀶V†¯œòïZ�ãQ[òwg¥éþâÇñGá€j%ñ2ôç˜à¦üÞJGö×/ߨ»÷÷�C¶-czú¿Ø `ýωöÛ_h1ÿTG#ÿ|CÿÿÿsDÿÿÿÿÿÿj^ÿÿÿÿÿ,ÿ Y-ÿÿ$yÿpÿTx5`!{ÿÿ'|ÿ`=ÿ3ÿ^f1mE6Qxsÿ7ÿMÿ7L\ ÿÿÿ=ÿ#An ÿÿÿÿAzr@ÿÿMÿÿÿÿ#f%2ÿ{F?F(P:1ÿÿ ÿÿ@kÿMK5ÿeG& ÿÿtQÿSa$ÿMÿÿÿÿÿÿÿÿÿtop98ÿ)ÿMnmP5ÿÿWÿÿÿÿÿÿ sRÿÿalE1BHE=a ÿÿÿwEÿ;+~ÿÿÿ(4TR)ÿÿ17K^%ÿÿ?ÿÿÿ;ÿo2ÿÿoÿ1b-ÿÿÿ} *ÿl{;jB" 71*.ÿÿ<ÿÿ9ÿÿdÿÿ?8Rr<~aZsSTnn_.ÿÿÿÿÿÿÿlcÿkZuCÿR0zy(-Tk$T~Bz6=RQ-O5 Kn%ÿÿÿÿÿÿÿÿ\ÿÿÿ87kÿÿ/ÿÿw5a0ÿ0ao]$\rZmÿÿÿdBÿÿHÿÿ] ÿtS [UÿÿÿÿÿÿHÿÿ~ÿÿÿÿÿ5-ÿ?ÿ ÿ1ÿ ÿÿ0vÿÿÿdUr0?PÿWÿI~9 & $ÿJ-ÿÿ7ÿnÿÿÿmÿÿÿÿÿyZÿ E`b2N$[ÿÿÿÿUÿÿ< h yY9=ÿÿ Vc@X3ÿÿÿÿÿÿÿÿ2ÿÿÿ ÿePÿÿÿ7&`5ÿÿÿÿÿ;ÿÿ6-ÿ6ÿsg :ÿNh.hMiiÿÿÿÿGÿÿr{ÿÿÿÿ'ÿT!heÿÿ#hÿÿÿÿÿÿÿÿÿÿ3ÿÿÿoÿ+ÿTÿZÿÿÿÿRjnV6i>+&]ÿ ÿVXÿÿÿT=ÿÿÿÿPnÿÿdÿÿOjUH{ `|jÿÿÿÿT8ÿaÿÿH~cÿFB9XvTdon2U"#ÿ+|ÿÿÿÿÿw.ÿÿ)ÿÿXÿaX!JU~LCÿÿ3ÿUtÿÿÿ*nÿÿ8ÿJDÿÿRu ÿÿÿÿF" ÿj%ÿÿ.ÿÿÿ)P=ÿÿb>rwÿ^a~ÿ,ÿB4ÿ/ÿÿÿÿÿÿÿÿÿÿÿA^wsÿÿ>ÿ7ÿ?AGÿÿMS w CÿN1ÿÿÿÿÿWÿ ÿQ`ÿ;UU{ÿÿ=n{ÿÿÿÿÿ ÿOVuÿÿÿn*ÿÿÿÿÿ}&jÿIÿ|ÿÿ_ÿ3m,:ÿÿJL8' RvmdZ*9ÿÿÿvÿÿÿÿÿÿÿÿSÿÿÿI .ÿ34r8[yÿÿÿX1pÿÿq~IoÿÿE584ÿk@n (QhÿÿÿBÿÿÿÿvt*O=pZÿÿÿÿ'n &l+1E(TJ"uUC-ÿYL2V@>ÿÿÿ2ÿ8=ÿÿÿ5ÿÿ6UÿÿÿS*cÿsÿÿ ÿPÿÿÿ=S)ÿÿÿYjG~ÿÿ Oqsÿÿsÿÿ^ (Kl6e;ÿÿLÿ@,/RHR0tGÿhG & 9mR>ÿÿÿ+ÿÿCÿÿÿÿÿÿHÿÿÿÿDÿ~/ÿf,1N `T*@ÿÿÿ*{ÿÿJ[x Q|$ÿÿÿ#ÿÿÿÿo8 r ÿÿ:ÿÿÿÿÿÿÿÿ@ÿÿ#ÿ[5i*2]Qÿÿÿ@ÿLÿÿlJÿÿ*ÿW2ÿCÿÿ;ÿEÿÿÿÿ-ÿÿÿoÿÿÿw.YÿÿUÿFKzÿ~qY~QÿP9ÿÿ`AÿÿÿÿÿTm}ÿÿo)VHrÿÿÿÿ=ÿÿÿ4^2ÿÿÿSÿÿÿ ÿÿ}ÿÿ80ÿ/)uÿÿxÿÿÿ w4n&ÿ'fw0ÿÿÿTnPÿÿÿy< ÿ'ÿ[ R@p!ÿÿÿÿ{ÿÿ_h1ÿTG#ÿ|CÿÿÿsX/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/socket2-0.6.5/src/sockaddr.rsÁH/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/socket2-0.6.5ÁX/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/socket2-0.6.5/src/sockaddr.rsÁ Üêç>T]»œµ#jˆ«©«©�8 = Y?,A03b5_65!*)'(U *"$=P9Q+Z 46`8,+I+9%MB'HPPP" -"HEB:.J4$( 4 C  T&# @Q%KPPPP" -"7EB$5R<[4   G JTMMJ5$1M/ Q?$4 1'N='0)+03+.;K,7# Y*9O*:a?$$9P?4>O#Y>4>FP$Z@53$S$ 1 M;!6 N;!6 /"NR&W%,11 '.?H]94B,77 %#!"$!"# ## ( "'.?H^;5D5O9548 %#!"$!"# ## ( "A2%#!"$!"# ## 16%),:%   F(!"(";1GA62:;GA623 3=   Z(!"("<1HA26:·eV/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/socket2-0.6.5/src/socket.rsÁH/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/socket2-0.6.5ÁV/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/socket2-0.6.5/src/socket.rsÁ ê¦ïÊ4,ýÒž°êÙòx¶¼¶¼¯/ECAA$"Q$9*C):=H=Q2*NNIGJ"*NL+'' NLOQO)-)A>"/ NJG-<ILOQ9 4(5)4MON,Q#]&I5MQa4DE6JO-'$(&>&&E6'$(42F4P!?*GKL $FPJJPMIB-LKOPOLJNQOOZ%&&%FOL% )LJL #=,=I+JQ#PMI=7#%###!"#" 2M#%###!"#" 5;`W+ =JAXEO(J7(FO(B'6(P/_KNPI g$4<QKLC4(;NII9GMB%>*KM?!%LOQKMQP K%QKD;M$W0Q$%-KIM?QO$%PNMPLLO3U+*/Q:1O1U%+*7KJ,OCJK1O8%O\*M1)!%)2MM<$)O1U+44LH;O1U*+4<KOGLO!URSMNcPN-\6KN;)8(CP< !$Le06M?!:%`S-NUM/Q:$1U%7E5D;M$F0O!D#N.Q)%6M$Ua8JF7U(@>$U^0O-8!+QO;S3 @PQLD>O!#% ?F/;1R/ ?R;C!"# ?F/O0R) ?aOB!"# =N?:P+ =MH!  ?MAK?HSYCK96S) @MP9E!#  @N?:P+ =OH!  ?NBK?ITY@ :B(/  MF?bAPC!"! " ;Q/ ANPO$ C''R/!"! " M!!# EOAR:V5 EA?ABAB<@>?@CRO!&& PONMO:d!77 \RK9e!77 !) POQL0 -9!( RM= !-9!) ]QbdO:! (375 !/ YE-! (375 !0 HN?69X% HA7E;B@C 6F!( GM=$<d GF$P4!& IOA:X- IO@K!(" HN?8W' HKOC@E!' >D+.c >Q;Y>OaE ;Y>DaE+ .c BBA?! F!!# BI5! 4Q. G ##!# <,QFAdAPC!"!##%" " ;S/ ANPO CR/!"!##%" " M#,#1!# GOAR:Z5 GA?ABAB?@CRO#(& R8ONO=^#;@. #* T9K9=_#;@. #+ JOA$9\) JMOC$G#* JN?69\% JA7E;B@E 6F#* IM=$7Z3 IMP$J#($ KOA:\- KQ@K#*" I97Z) I9E#( CE-0S- CNQ1J:A#"" GL;! 7X4 GPO! L#&& IN?%##"#!#! " " " 9Z8 IJI%##"#!#! " " " P#(( LO<,AF@cCc*!# ?/DK9 #%&###$!!" #"!= CU> BK9 #%&###$!!" #"#!= =S/ IIPNE2OMQQO- !;-E,0PK%/ O#6BI54R- BJNNPE""" LK**K=>Q;QUTPOOCd1>0QUT0d1;UN!, ;UN!,?!*:8!!òIÙ f\ª<ëxqiÿ³W/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/socket2-0.6.5/src/sockref.rsÁH/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/socket2-0.6.5ÁW/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/socket2-0.6.5/src/sockref.rsÁ ¸/ÏÊx¶ÆŸÎÏbzéÐ≠‰ yC-BQ#OPKH'IIYJ+<59@0G7C //-4') PP"MP(!'NC( 9%-K$ G(3%9YS$ "?"1A?–ÿa†*BÿFäo¡"ë¤X/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/socket2-0.6.5/src/sys/unix.rsÁH/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/socket2-0.6.5ÁX/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/socket2-0.6.5/src/sys/unix.rsÁ y;ª•b Ñ_ðšæ[û•o¶ž¶ž›/ECAA$ Q,$      T "#B $ =Q+  *2   N%02#$N#  & 51P%S :#9,2#  !(&  !! 17" K"a]`@YB 5V Y  !" 93& N+N*H2 41 K2NG,DOP 4JN#  D   !!D MO8KR6 $S< + #%&###!"#"= -+* #%&## #!"#!#" )!"1* 6  V1!! $$ 6R ###! TQ2MN;8'B2$8H.80$*GD%O.*Q%I1F?;*7V3S 7"711 P3$$ :UFYS E-9 !C1XI1-@>> '-5 ;G'C$& 6 7$&<QQC,"QBT?QY#QAQ8Q:VZ%R45 \M@#% \O!R;<^Q0 + `6';Z?c`i1!b"H!d C b(3?+:G3V+eG5ba<@#Y( Q+F(NKI413^BE ^>a;WTV 7X= [ /#D <=[+#dNGVJTZ $. ' 8 7E8APd0E&76>+R) H.K;\C;aC;a B2 @?;41? d TF IT " I*)+,d !%!%= -)-! CaO.QQQ.&7+Q".07O,1*3/* Q%ES %Q0 %*Q @QdAIc:E7 *5'I +2?9<*WD   MJ =:] )$L!" 95,U 3_ )-L ,8 ?6 ],6 !9 `, 6 !D]=5 %8>D$1 0=OI3;1? :!8U2=* W20  KG? ,!'  HP9NG? ,! ,  =INQ)* #%###!"#" S![@0M2 &> $! # " /:G)$O"" 2$SRMQP@œ!+6 + $! # E' M"$$ BE4T/T' BQ"T<#" P/ ###!" 4V! Q #"&#! 1eN ###! =d( @KHO,P) @KJ3HO:!" ?F6O1Q' ?MUW7O?#  CJ> ##!" 5U/ Cafhk ##!" G#$# OVVOA #0+ O{h‹OS#0# HOHR9[+ HTiRH#)  HCO:G9<4#% 0KM HNNELOL@2 #$ BJ88)6 VN:M2Q $! ###!# ]:$! ### L A"( XN:M2Q $! ###!# ]:$! ### P A"( NON$ $! ###!# F$! ### bAa #PON$ $! ###!# F$! ### Z Aa #FJ>66X) C-6C"' CH:##"! 3U) @MP9##"! B"$  FK@86X) CNJ8E"'  BI<O4P/ ?POLOOF## DFC $! # &QF(/4  "R&#0I8 !X8&$04 ) "4&$' **#( + ^*#, -G[d"]cc" ##!" V/K #( GNF ##!" Ea %C <KP{RL&'@0 "( =F8R4ZBV;º6.eCG8 #%##!!"#"# 1P- CH #%##!!"#"# A#! FLBR:G8") 3FOOCRM".2 HPPML1,&6B , KH>64YED6>\KF864YKF864YPKD6T 4( S>N6= 4 KPNJPO6F / NID67\NOD6F / NID67\OQ/6K 3 KML6; 3 S=IPU6Y$=0+ 0OK 64 0 DH61SDH6D"$$ "#9#$',6@#8$#"#$#$#"#$#$*F7',9'9 B#(�ÛÅŽóú{«v+† ô¦eS/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/socket2-0.6.5/src/lib.rsÁH/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/socket2-0.6.5ÁS/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/socket2-0.6.5/src/lib.rsÁ ÝvÌÇIZú|d  wYHÊÁÊÁã/ECAA$&.HL5ECNKIJQQ#/)-)5A >#/ Q'H<')#"$QQQ!LJ: !%K)) )Q,'=2$ 7$-S> F A*"47 0"4 3"7 M2‰‡—ØkmÄZ *5‚   @. Q>G)2N<NQO%P &C3D4J$32>// "" :NQN%P & -(5,(3+$610R;*!" " /  HN6P &,$>,$@):): +>*6<*R<- ###! B,T@ $ $ !BQ&Q<; :E&.%L(</A0 @;I:*%,-84'M  >*)'%'#&$%&'%'#&$%& P:*5@-% /O"@5 *R(H+? /NA*B &M=7 QMAQ+1Q&Q/&,QA=*8@-% 7O"/D5 2R(UT 7NRV *''/bN)-QPAQ1ºüN"+0$÷£1r ½;Kå±#›.N0¨=x86_64-unknown-linux-gnuÁ|­ôþâG«p2c’Õj8socket2Á-3cdd7c690f15e9c4ÁsµTY[Dº ƒ·ªŠ “¬ $³³™Á ™ˆT�‘�‘$Êò ¤¤¤ ¤ ¤¹´$£� Á ¯$¤Á Á ìÁ Ãä¤ì¤ì¤ì¤´$¤ì£ìƉ¤›’Ș¤¤° ȤȒ¶ëëÖ Ö ¤´$£é��×Á ׂ�¤×³ì™ÊÊÞò ˜È£“ée‚µúK¥Ÿ¥ïrust-end-file