pub fn make_dangerous_client_config() -> ClientConfig
test-utils
only.Expand description
Creates a client config that trusts any servers without verifying their TLS certificate.
+pub fn make_dangerous_client_config() -> ClientConfig
test-utils
only.Expand description
Creates a client config that trusts any servers without verifying their TLS certificate.
Should be used for testing local relay setups only.
Expand description
Exposes Client
, which allows to establish connections to a relay server.
Expand description
Exposes Client
, which allows to establish connections to a relay server.
Based on tailscale/derp/derphttp/derphttp_client.go
Structs§
- An HTTP Relay client.
- Build a Client.
Enums§
- Possible connection errors on the
Client
- The messages received from a framed relay stream.
Functions§
- make_
dangerous_ client_ config test-utils
Creates a client config that trusts any servers without verifying their TLS certificate.
pub struct Client { /* private fields */ }
Expand description
An HTTP Relay client.
+pub struct Client { /* private fields */ }
Expand description
An HTTP Relay client.
Cheaply clonable.
-Implementations§
Source§impl Client
impl Client
Sourcepub fn public_key(&self) -> PublicKey
pub fn public_key(&self) -> PublicKey
The public key for this client
-Sourcepub async fn connect(&mut self) -> Result<(), ClientError>
pub async fn connect(&mut self) -> Result<(), ClientError>
Connects to a relay Server and returns the underlying relay connection.
+Implementations§
Source§impl Client
impl Client
Sourcepub async fn recv(&mut self) -> Option<Result<ReceivedMessage, ClientError>>
pub async fn recv(&mut self) -> Option<Result<ReceivedMessage, ClientError>>
Reads a message from the server.
+Sourcepub async fn connect(&mut self) -> Result<(), ClientError>
pub async fn connect(&mut self) -> Result<(), ClientError>
Connects to a relay Server and returns the underlying relay connection.
Returns ClientError::Closed
if the Client
is closed.
If there is already an active relay connection, returns Ok(())
.
Sourcepub async fn note_preferred(&mut self, is_preferred: bool)
pub async fn note_preferred(&mut self, is_preferred: bool)
Let the server know that this client is the preferred client
-Sourcepub fn local_addr(&self) -> Option<SocketAddr>
pub fn local_addr(&self) -> Option<SocketAddr>
Get the local addr of the connection. If there is no current underlying relay connection +
Sourcepub async fn note_preferred(&mut self, is_preferred: bool)
pub async fn note_preferred(&mut self, is_preferred: bool)
Let the server know that this client is the preferred client
+Sourcepub fn local_addr(&self) -> Option<SocketAddr>
pub fn local_addr(&self) -> Option<SocketAddr>
Get the local addr of the connection. If there is no current underlying relay connection
or the Client
is closed, returns None
.
Sourcepub async fn start_ping(
+
pub async fn start_ping( +
Sourcepub async fn start_ping(
&mut self,
) -> Result<impl Future<Output = Result<Duration, ClientError>> + Send + Sync + 'static, ClientError>
pub async fn start_ping( &mut self, ) -> Result<impl Future<Output = Result<Duration, ClientError>> + Send + Sync + 'static, ClientError>
Send a ping to the server. Return once we get an expected pong.
This has a built-in timeout crate::defaults::timeouts::PING_TIMEOUT
.
The caller must process the received ping
using finish_ping
.
Sourcepub fn finish_ping(&mut self, ping: [u8; 8])
pub fn finish_ping(&mut self, ping: [u8; 8])
Finish a ping message
-Sourcepub fn finish_ping(&mut self, ping: [u8; 8])
pub fn finish_ping(&mut self, ping: [u8; 8])
Finish a ping message
+Sourcepub async fn send_pong(&mut self, data: [u8; 8]) -> Result<(), ClientError>
pub async fn send_pong(&mut self, data: [u8; 8]) -> Result<(), ClientError>
Send a pong back to the server.
+Sourcepub async fn send_pong(&mut self, data: [u8; 8]) -> Result<(), ClientError>
pub async fn send_pong(&mut self, data: [u8; 8]) -> Result<(), ClientError>
Send a pong back to the server.
If there is no underlying active relay connection, it creates one before attempting to send the pong message.
If there is an error sending pong, it closes the underlying relay connection before returning.
-Sourcepub fn is_connected(&self) -> bool
pub fn is_connected(&self) -> bool
Returns true
if the underlying relay connection is established.
Sourcepub async fn recv(&mut self) -> Option<Result<ReceivedMessage, ClientError>>
pub async fn recv(&mut self) -> Option<Result<ReceivedMessage, ClientError>>
Reads a message from the server.
-Sourcepub async fn close_for_reconnect(&mut self)
pub async fn close_for_reconnect(&mut self)
Disconnect the http relay connection.
-Closes the underlying relay connection. The next time the client takes some action that
-requires a connection, it will call connect
.
Sourcepub fn is_connected(&self) -> bool
pub fn is_connected(&self) -> bool
Returns true
if the underlying relay connection is established.
Trait Implementations§
Auto Trait Implementations§
impl !Freeze for Client
impl !RefUnwindSafe for Client
impl Send for Client
impl Sync for Client
impl Unpin for Client
impl !UnwindSafe for Client
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
diff --git a/pr/3069/docs/iroh_relay/client/struct.ClientBuilder.html b/pr/3069/docs/iroh_relay/client/struct.ClientBuilder.html
index 039b106046..2955758108 100644
--- a/pr/3069/docs/iroh_relay/client/struct.ClientBuilder.html
+++ b/pr/3069/docs/iroh_relay/client/struct.ClientBuilder.html
@@ -1,23 +1,23 @@
-ClientBuilder in iroh_relay::client - Rust pub struct ClientBuilder { /* private fields */ }
Expand description
Build a Client.
-Implementations§
Source§impl ClientBuilder
Sourcepub fn new(url: impl Into<RelayUrl>) -> Self
Create a new ClientBuilder
-Sourcepub fn server_url(self, url: impl Into<RelayUrl>) -> Self
Sets the server url
-Sourcepub fn protocol(self, protocol: Protocol) -> Self
Sets whether to connect to the relay via websockets or not.
+
ClientBuilder in iroh_relay::client - Rust pub struct ClientBuilder { /* private fields */ }
Expand description
Build a Client.
+Implementations§
Source§impl ClientBuilder
Sourcepub fn new(url: impl Into<RelayUrl>) -> Self
Create a new ClientBuilder
+Sourcepub fn server_url(self, url: impl Into<RelayUrl>) -> Self
Sets the server url
+Sourcepub fn protocol(self, protocol: Protocol) -> Self
Sets whether to connect to the relay via websockets or not.
Set to use non-websocket, normal relaying by default.
-Sourcepub fn address_family_selector<S>(self, selector: S) -> Selfwhere
+
Sourcepub fn address_family_selector<S>(self, selector: S) -> Self
Returns if we should prefer ipv6
it replaces the relayhttp.AddressFamilySelector we pass
It provides the hint as to whether in an IPv4-vs-IPv6 race that
IPv4 should be held back a bit to give IPv6 a better-than-50/50
chance of winning. We only return true when we believe IPv6 will
work anyway, so we don’t artificially delay the connection speed.
-Sourcepub fn insecure_skip_cert_verify(self, skip: bool) -> Self
Available on crate feature test-utils
only.
Skip the verification of the relay server’s SSL certificates.
+Sourcepub fn insecure_skip_cert_verify(self, skip: bool) -> Self
Available on crate feature test-utils
only.
Skip the verification of the relay server’s SSL certificates.
May only be used in tests.
-Sourcepub fn proxy_url(self, url: Url) -> Self
Set an explicit proxy url to proxy all HTTP(S) traffic through.
-Sourcepub fn key_cache_capacity(self, capacity: usize) -> Self
Set the capacity of the cache for public keys.
-Sourcepub async fn build(self, key: SecretKey, dns_resolver: DnsResolver) -> Client
Build the Client
-Sourcepub fn server_public_key(self, server_public_key: PublicKey) -> Self
The expected PublicKey
of the relay server we are connecting to.
-Trait Implementations§
Auto Trait Implementations§
§impl Freeze for ClientBuilder
§impl !RefUnwindSafe for ClientBuilder
§impl Send for ClientBuilder
§impl Sync for ClientBuilder
§impl Unpin for ClientBuilder
§impl !UnwindSafe for ClientBuilder
Blanket Implementations§
Sourcepub fn proxy_url(self, url: Url) -> Self
Set an explicit proxy url to proxy all HTTP(S) traffic through.
+Sourcepub fn key_cache_capacity(self, capacity: usize) -> Self
Set the capacity of the cache for public keys.
+Sourcepub async fn build(self, key: SecretKey, dns_resolver: DnsResolver) -> Client
Build the Client
+Sourcepub fn server_public_key(self, server_public_key: PublicKey) -> Self
The expected PublicKey
of the relay server we are connecting to.
+Trait Implementations§
Auto Trait Implementations§
§impl Freeze for ClientBuilder
§impl !RefUnwindSafe for ClientBuilder
§impl Send for ClientBuilder
§impl Sync for ClientBuilder
§impl Unpin for ClientBuilder
§impl !UnwindSafe for ClientBuilder
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
§fn implicit(
diff --git a/pr/3069/docs/search-index.js b/pr/3069/docs/search-index.js
index 658ec845a3..eb390956d0 100644
--- a/pr/3069/docs/search-index.js
+++ b/pr/3069/docs/search-index.js
@@ -1,4 +1,4 @@
-var searchIndex = new Map(JSON.parse('[["bulk",{"t":"HHHHH","n":["collect_and_print","main","run_iroh","run_quinn","run_s2n"],"q":[[0,"bulk"],[5,"core::option"],[6,"struct_iterable_internal"],[7,"iroh_bench"],[8,"anyhow"],[9,"iroh_bench::s2n"]],"i":"`````","f":"{{{d{b}}{f{{d{c}}}}}hj}{{}h}{l{{n{h}}}}0{A`{{n{h}}}}","D":"`","p":[[1,"str"],[1,"reference",null,null,1],[6,"Option",5,null,1],[1,"unit"],[10,"Iterable",6],[5,"Opt",7],[8,"Result",8],[5,"Opt",9]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAAUAAQAAAAUA","P":[[0,""],[1,""]]}],["iroh",{"t":"PPEPGTFIFFEFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNOCCNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNONNNNNCNNONONNNNNNNNNOOCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNCNNSSSSSCCSSSHHHHSSHHHFKFNNNNNNNNNNNNNNCNNNNNNNNNNNNNNOCOCONNNNCNNNNNNNNNNNFSSNNNNNNNNNNNNNNNNFSNNNNNNNNNNNNNNNNNSSSSFFFNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNTFNNNNNNNNNNNNNNNNNNNNNNIKHMNMNMNMNMNMNMNMNMNMNCHPSGFPFNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNONONNNNNNHNNNNNNNNNNNNNTTFFFFKPFPFTTTPFPFPPFFFPGPPPPPFGGKKFKPPPFFGPPPSFFTTTPFKTTPFFTPPTTPFTTPPFFTFPPPPFGPGGFPPGFPPGFTTPGFFGPPGFPPTPPPFFPFPFPPFFPFGFFPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONONNNOOOMNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNONNONONOONOOOONNNONNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNONNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNONNNNNNNNNNNNNNNOOONOOONNNOOOHNNNONNNOOONNNNNNNNOONNOONONMNMNMNNNNNNNOOONNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOONNNNNNONNNNNNNNOONMNNONMNNNNNNOONNNNNNNNNNNNNNNNNNNONMNNONOONOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNOOFFFFNNNNOOOOOOOOONNNNNNNNOONNNNNNNNNNNNOOONNNNNNNNNNNNOOOONNNNONNNNONNNNNNNNONNNNNNNNNNNNOOONNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNOOOOOOONNNNOKFFNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFNNNNHNNNNNNNNNNNNNNNNOONONHHHNNNNNNNNNFFFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["Decode","DecodeInvalidLength","Endpoint","Key","KeyParsingError","LENGTH","NodeAddr","NodeId","PublicKey","RelayMap","RelayMode","RelayNode","RelayUrl","RelayUrlParseError","SecretKey","__clone_box","","","","","","as_bytes","as_ref","borrow","","","","","","","","","borrow_mut","","","","","","","","clone","","","","","","clone_into","","","","","","clone_to_uninit","","","","","","cmp","","","","compare","","","","contains_node","default_from_node","defaults","deref","","","","","","","","","deref_mut","","","","","","","","deserialize","","","","","direct_addresses","","discovery","dns","drop","","","","","","","","empty","endpoint","eq","","","","","equivalent","","","","","","","","","","","","","","","fmt","","","","","","","","","","","","","","","fmt_short","from","","","","","","","","","","","","","","","","","","","","from_bytes","","from_nodes","from_parts","from_ref","","","","","","from_str","","","from_url","generate","get_node","hash","","init","","","","","","","","into","","","","","","","","is_empty","","len","metrics","new","node_id","nodes","partial_cmp","","","","protocol","public","","quic","relay_url","","secret","serialize","","","","","sign","source","","stun_only","stun_port","test_utils","to_bytes","to_owned","","","","","","to_string","","","","","","","try_from","","","","","","","","","","","try_into","","","","","","","","type_id","","","","","","","","url","urls","verify","vzip","","","","","","","","watchable","with_direct_addresses","with_relay_url","DEFAULT_HTTPS_PORT","DEFAULT_HTTP_PORT","DEFAULT_METRICS_PORT","DEFAULT_RELAY_QUIC_PORT","DEFAULT_STUN_PORT","prod","staging","AP_RELAY_HOSTNAME","EU_RELAY_HOSTNAME","NA_RELAY_HOSTNAME","default_ap_relay_node","default_eu_relay_node","default_na_relay_node","default_relay_map","EU_RELAY_HOSTNAME","NA_RELAY_HOSTNAME","default_eu_relay_node","default_na_relay_node","default_relay_map","ConcurrentDiscovery","Discovery","DiscoveryItem","__clone_box","add","borrow","","borrow_mut","","clone","clone_into","clone_to_uninit","default","deref","","deref_mut","","dns","drop","","empty","fmt","","from","","","from_ref","from_services","init","","into","","last_updated","local_swarm_discovery","node_addr","pkarr","provenance","publish","","resolve","","static_provider","subscribe","","to_owned","try_from","","try_into","","type_id","","vzip","","DnsDiscovery","N0_DNS_NODE_ORIGIN_PROD","N0_DNS_NODE_ORIGIN_STAGING","borrow","borrow_mut","deref","deref_mut","drop","fmt","from","init","into","n0_dns","new","resolve","try_from","try_into","type_id","vzip","LocalSwarmDiscovery","NAME","borrow","borrow_mut","deref","deref_mut","drop","fmt","from","init","into","new","publish","resolve","subscribe","try_from","try_into","type_id","vzip","DEFAULT_PKARR_TTL","DEFAULT_REPUBLISH_INTERVAL","N0_DNS_PKARR_RELAY_PROD","N0_DNS_PKARR_RELAY_STAGING","PkarrPublisher","PkarrRelayClient","PkarrResolver","__clone_box","","","borrow","","","borrow_mut","","","clone","","","clone_into","","","clone_to_uninit","","","deref","","","deref_mut","","","dht","drop","","","","fmt","","","from","","","from_ref","","","init","","","into","","","n0_dns","","new","","","publish","","resolve","","to_owned","","","try_from","","","try_into","","","type_id","","","update_addr_info","vzip","","","with_options","Builder","DhtDiscovery","__clone_box","borrow","","borrow_mut","","build","builder","client","clone","clone_into","clone_to_uninit","default","","deref","","deref_mut","","dht","drop","","fmt","","from","","from_ref","include_direct_addresses","init","","initial_publish_delay","into","","n0_dns_pkarr_relay","pkarr_relay","publish","republish_delay","resolve","secret_key","to_owned","try_from","","try_into","","ttl","type_id","","vzip","","PROVENANCE","StaticProvider","add_node_addr","borrow","borrow_mut","default","deref","deref_mut","drop","fmt","from","from_node_addrs","get_node_addr","init","into","new","publish","remove_node_addr","resolve","set_node_addr","try_from","try_into","type_id","vzip","DnsResolver","ResolverExt","default_resolver","lookup_by_id","","lookup_by_id_staggered","","lookup_by_name","","lookup_by_name_staggered","","lookup_ipv4","","lookup_ipv4_ipv6","","lookup_ipv4_ipv6_staggered","","lookup_ipv4_staggered","","lookup_ipv6","","lookup_ipv6_staggered","","node_info","resolver","Addr","IROH_TXT_NAME","IrohAttr","NodeInfo","Relay","TxtAttrs","__clone_box","as_ref","attrs","borrow","","","borrow_mut","","","clone","clone_into","clone_to_uninit","cmp","compare","deref","","","deref_mut","","","direct_addresses","drop","","","eq","","equivalent","","","","","","fmt","","","","from","","","","","","from_hickory_records","","from_parts","from_pkarr_signed_packet","","from_ref","from_str","from_strings","from_z32","hash","init","","","into","","","lookup_by_id","lookup_by_name","new","node_id","","partial_cmp","relay_url","to_hickory_records","","to_owned","to_pkarr_signed_packet","","to_string","to_z32","try_from","","","","try_into","","","type_id","","","vzip","","","AEAD_LIMIT_REACHED","APPLICATION_ERROR","Accept","AcceptBi","AcceptUni","AckFrequencyConfig","AeadKey","App","ApplicationClose","ApplicationClosed","Builder","CONNECTION_ID_LIMIT_ERROR","CONNECTION_REFUSED","CRYPTO_BUFFER_EXCEEDED","CallMeMaybe","Chunk","CidsExhausted","ClosedStream","","","Connecting","Connection","ConnectionClose","ConnectionClosed","ConnectionError","ConnectionLost","","","","","ConnectionStats","ConnectionType","ControlMsg","Controller","ControllerFactory","CryptoError","CryptoServerConfig","Custom","Default","Direct","DirectAddr","DirectAddrInfo","DirectAddrType","Disabled","","Discovery","ENV_FORCE_STAGING_RELAYS","Endpoint","ExportKeyingMaterialError","FINAL_SIZE_ERROR","FLOW_CONTROL_ERROR","FRAME_ENCODING_ERROR","FinishedEarly","FrameStats","HandshakeTokenKey","INTERNAL_ERROR","INVALID_TOKEN","IllegalOrderedRead","Incoming","IncomingFuture","KEY_UPDATE_ERROR","Local","LocallyClosed","MAX","MAX_SIZE","Mixed","MtuDiscoveryConfig","NO_ERROR","NO_VIABLE_PATH","NamedApp","None","OpenBi","OpenUni","PROTOCOL_VIOLATION","PathStats","Ping","Pong","Portmapped","Read","ReadDatagram","ReadError","","ReadExactError","ReadToEndError","RecvStream","Relay","","RelayMode","RemoteInfo","Reset","","ResetError","RetryError","STREAM_LIMIT_ERROR","STREAM_STATE_ERROR","Saved","SendDatagramError","SendStream","ServerConfig","Source","Staging","Stopped","StoppedError","StreamId","Stun","Stun4LocalPort","TRANSPORT_PARAMETER_ERROR","TimedOut","TooLarge","TooLong","TransportConfig","TransportError","","TransportErrorCode","Udp","UdpStats","Unknown","UnsupportedByPeer","UnsupportedVersion","VarInt","VersionMismatch","WeakConnectionHandle","WriteError","Written","ZeroRttAccepted","ZeroRttRejected","","","","__clone_box","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","accept","","accept_bi","accept_uni","accept_with","ack_eliciting_threshold","ack_frequency","ack_frequency_config","acks","add_discovery","add_node_addr","add_node_addr_with_source","addr","","addrs","aead_from_hkdf","allow_spin","alpn","alpns","bind","bind_addr_v4","bind_addr_v6","black_hole_cooldown","black_holes_detected","borrow","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","borrow_mut","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bound_sockets","build","builder","bytes","","","chunks","clear_discovery","clone","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","clone_box","clone_into","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","clone_to_uninit","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","close","","close_reason","closed","cmp","","","","code","compare","","","","congestion_controller_factory","congestion_events","congestion_state","conn_type","","connect","connection_close","crypto","","","crypto_buffer_size","current_mtu","cwnd","data_blocked","datagram","datagram_receive_buffer_size","datagram_send_buffer_size","datagram_send_buffer_space","datagrams","default","","","","","","","","","","","default_relay_mode","deref","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","deref_mut","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","deserialize","","","","","dir","direct_addresses","discovery","","discovery_dht","discovery_local_network","discovery_n0","dns_resolver","","drop","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","enable_segmentation_offload","eq","","","","","","","","","","","","","","","","","","","","","","","","","","equivalent","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","error_code","","export_keying_material","finish","fmt","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","force_staging_infra","frame","frame_rx","frame_tx","frame_type","from","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","from_ref","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","from_u32","from_u64","from_u64_unchecked","get_remote_node_id","handshake_data","","handshake_done","has_send_address","hash","","","","","home_relay","id","","ignore","immediate_ack","incoming_buffer_size","incoming_buffer_size_total","index","init","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","initial_keys","initial_mtu","initial_rtt","initial_window","initiator","insecure_skip_relay_cert_verify","interval","into","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","into_0rtt","into_any","into_future","","","","","","","","","","into_incoming","into_inner","ios","is_0rtt","is_alive","is_closed","join","","","","","","","","","keep_alive_interval","keylog","known_nodes","last_alive","last_control","last_payload","last_received","last_used","latency","","local_ip","","","lost_bytes","lost_packets","lost_plpmtud_probes","make_server_config","max_ack_delay","max_concurrent_bidi_streams","max_concurrent_uni_streams","max_data","max_datagram_size","max_idle_timeout","max_incoming","max_stream_data","max_streams_bidi","max_streams_uni","migration","min_mtu","minimum_change","mtu_discovery_config","network_change","network_path_changed","new","","new_connection_id","new_token","node_addr","node_id","","observed_addr","observed_external_addr","offset","on_ack","on_congestion_event","on_end_acks","on_mtu_update","on_sent","open","open_bi","open_uni","packet_threshold","partial_cmp","","","","path","path_challenge","path_response","peer_identity","persistent_congestion_threshold","ping","poll","","","","","","","","","poll_flush","poll_read","","poll_shutdown","poll_write","","preferred_address_v4","preferred_address_v6","priority","proxy_from_env","proxy_url","race","","","","","","","","","read","read_chunk","read_chunks","read_datagram","read_exact","read_to_end","reason","","","receive_observed_address_reports","receive_window","received_reset","refuse","relay_map","relay_mode","relay_url","remote_address","","","remote_address_validated","remote_info","remote_info_iter","reordering_threshold","reset","reset_stream","retire_connection_id","retry","retry_tag","retry_token_lifetime","rtt","","saturating_add","seal","secret_key","","send_datagram","send_datagram_wait","send_observed_address_reports","send_window","sent_packets","sent_plpmtud_probes","serialize","","","","","set_alpns","set_max_concurrent_bi_streams","set_max_concurrent_uni_streams","set_priority","set_receive_window","source","","","","","","","","sources","","stable_id","start_session","stats","stop","stop_sending","stopped","stream","stream_data_blocked","stream_receive_window","streams_blocked_bidi","streams_blocked_uni","time_threshold","to_owned","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","to_string","","","","","","","","","","","","","","","","","","","","token_key","transport","transport_config","","try_from","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","try_into","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","try_poll","","","","","","","typ","type_id","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","udp_rx","udp_tx","upper_bound","vzip","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","weak_handle","window","with_crypto","with_single_cert","write","write_all","write_all_chunks","write_chunk","write_chunks","name","","MagicsockMetrics","NetReportMetrics","PortmapMetrics","RelayMetrics","__clone_box","","","","accepts","actor_link_change","actor_tick_direct_addr_heartbeat","actor_tick_direct_addr_update_receiver","actor_tick_main","actor_tick_msg","actor_tick_other","actor_tick_portmap_changed","actor_tick_re_stun","borrow","","","","borrow_mut","","","","bytes_recv","bytes_sent","clone","","","","clone_into","","","","clone_to_uninit","","","","connection_became_direct","connection_handshake_success","conns_rx_ratelimited_total","default","","","","deref","","","","deref_mut","","","","disco_packets_dropped","disco_packets_recv","disco_packets_sent","disconnects","drop","","","","external_address_updated","fmt","","","","frames_rx_ratelimited_total","from","","","","from_ref","","","","got_ping","init","","","","into","","","","iter","","","","local_port_updates","mapping_attempts","mapping_failures","name","","","","nodes_contacted","nodes_contacted_directly","num_direct_conns_added","num_direct_conns_removed","num_relay_conns_added","num_relay_conns_removed","other_packets_dropped","other_packets_recv","other_packets_sent","pcp_available","pcp_probes","probes_started","re_stun_calls","recv_data_ipv4","recv_data_ipv6","recv_data_relay","recv_datagrams","recv_disco_bad_key","recv_disco_bad_parse","recv_disco_call_me_maybe","recv_disco_call_me_maybe_bad_disco","recv_disco_ping","recv_disco_pong","recv_disco_relay","recv_disco_udp","recv_gro_datagrams","relay_accepts","relay_home_change","reports","reports_full","send_data","send_data_network_down","send_disco_relay","send_disco_udp","send_ipv4","send_ipv6","send_packets_dropped","send_packets_recv","send_packets_sent","send_relay","send_relay_error","sent_disco_call_me_maybe","sent_disco_ping","sent_disco_pong","sent_disco_relay","sent_disco_udp","sent_pong","stun_packets_dropped","stun_packets_recv_ipv4","stun_packets_recv_ipv6","stun_packets_sent_ipv4","stun_packets_sent_ipv6","to_owned","","","","try_from","","","","try_into","","","","type_id","","","","unique_client_keys","unknown_frames","update_direct_addrs","upnp_available","upnp_gateway_updated","upnp_probes","upnp_probes_failed","vzip","","","","websocket_accepts","ProtocolHandler","Router","RouterBuilder","__clone_box","accept","","borrow","","borrow_mut","","builder","clone","clone_into","clone_to_uninit","deref","","deref_mut","","drop","","endpoint","","fmt","","from","","from_ref","init","","into","","is_shutdown","new","shutdown","","spawn","to_owned","try_from","","try_into","","type_id","","vzip","","CleanupDropGuard","DnsPkarrServer","borrow","","borrow_mut","","create_dns_resolver","deref","","deref_mut","","discovery","dns_resolver","drop","","fmt","","from","","init","","into","","nameserver","node_origin","on_node","pkarr_url","run","run_relay_server","run_relay_server_with","run_relay_server_with_stun","run_with_origin","try_from","","try_into","","type_id","","vzip","","Disconnected","WatchInitializedFut","WatchNextFut","Watchable","Watcher","WatcherStream","__clone_box","","","borrow","","","","","","borrow_mut","","","","","","chain","clone","","","clone_into","","","clone_to_uninit","","","default","deref","","","","","","deref_mut","","","","","","drop","","","","","","fmt","","","","","","","from","","","","","","from_ref","","","get","","init","","","","","","initialized","into","","","","","","into_future","","into_stream","join","","merge","new","poll","","poll_next","race","","ratelimit_stream","ratelimit_stream_with_jitter","set","stream","stream_updates_only","to_owned","","","to_string","try_from","","","","","","try_into","","","","","","try_poll","","try_poll_next","type_id","","","","","","updated","vzip","","","","","","watch","zip"],"q":[[0,"iroh"],[279,"iroh::defaults"],[286,"iroh::defaults::prod"],[293,"iroh::defaults::staging"],[298,"iroh::discovery"],[351,"iroh::discovery::dns"],[370,"iroh::discovery::local_swarm_discovery"],[389,"iroh::discovery::pkarr"],[466,"iroh::discovery::pkarr::dht"],[515,"iroh::discovery::static_provider"],[539,"iroh::dns"],[564,"iroh::dns::node_info"],[655,"iroh::endpoint"],[2181,"iroh::endpoint::Source"],[2183,"iroh::metrics"],[2359,"iroh::protocol"],[2404,"iroh::test_utils"],[2444,"iroh::watchable"],[2576,"dyn_clone::sealed"],[2577,"iroh_base::key"],[2578,"iroh_base::node_addr"],[2579,"iroh_base::relay_url"],[2580,"iroh_relay::relay_map"],[2581,"core::cmp"],[2582,"core::result"],[2583,"serde::de"],[2584,"core::net::socket_addr"],[2585,"core::iter::traits::iterator"],[2586,"core::fmt"],[2587,"alloc::string"],[2588,"ed25519_dalek::verifying"],[2589,"signature::error"],[2590,"data_encoding"],[2591,"ed25519_dalek::signing"],[2592,"core::option"],[2593,"iroh_base::ticket::node"],[2594,"iroh::magicsock::node_map::node_state"],[2595,"url"],[2596,"url::parser"],[2597,"anyhow"],[2598,"alloc::sync"],[2599,"core::convert"],[2600,"core::iter::traits::collect"],[2601,"rand_core"],[2602,"core::hash"],[2603,"serde::ser"],[2604,"ed25519"],[2605,"core::error"],[2606,"core::any"],[2607,"alloc::boxed"],[2608,"alloc::vec"],[2609,"alloc::collections::btree::set"],[2610,"futures_lite::stream"],[2611,"pkarr::signed_packet"],[2612,"futures_core::stream"],[2613,"core::time"],[2614,"pkarr::client"],[2615,"core::future::future"],[2616,"core::net::ip_addr"],[2617,"hickory_proto::rr::domain::name"],[2618,"core::clone"],[2619,"hickory_resolver::resolver"],[2620,"alloc::collections::btree::map"],[2621,"core::str::traits"],[2622,"hickory_proto::rr::resource"],[2623,"iroh_quinn_proto::connection"],[2624,"iroh_quinn::connection"],[2625,"iroh_quinn_proto::config"],[2626,"iroh_quinn_proto::varint"],[2627,"core::ops::function"],[2628,"core::marker"],[2629,"iroh_quinn_proto::crypto"],[2630,"iroh_quinn_proto::congestion"],[2631,"std::time"],[2632,"iroh_quinn::recv_stream"],[2633,"iroh_quinn::send_stream"],[2634,"iroh_quinn_proto::connection::stats"],[2635,"iroh_quinn_proto::connection::streams::send"],[2636,"iroh_quinn_proto::connection::streams"],[2637,"iroh::magicsock::node_map"],[2638,"iroh_quinn_proto::frame"],[2639,"iroh::magicsock"],[2640,"iroh_quinn_proto"],[2641,"iroh_quinn_proto::connection::assembler"],[2642,"iroh_quinn::incoming"],[2643,"iroh_quinn_proto::connection::streams::recv"],[2644,"ring::error"],[2645,"iroh_quinn_proto::transport_parameters"],[2646,"iroh_quinn_proto::shared"],[2647,"futures_concurrency::future::join::tuple"],[2648,"core::future::into_future"],[2649,"tokio::sync::watch"],[2650,"iroh_quinn_proto::connection::paths"],[2651,"core::pin"],[2652,"core::task::wake"],[2653,"core::task::poll"],[2654,"std::io::error"],[2655,"tokio::io::read_buf"],[2656,"futures_concurrency::future::race::tuple"],[2657,"bytes::bytes"],[2658,"rustls_pki_types"],[2659,"rustls::error"],[2660,"alloc::vec::into_iter"],[2661,"futures_lite::future"],[2662,"iroh::test_utils::dns_and_pkarr_servers"],[2663,"iroh_relay::server"],[2664,"futures_concurrency::stream::chain::tuple"],[2665,"futures_concurrency::stream::into_stream"],[2666,"core::default"],[2667,"futures_concurrency::stream::merge::tuple"],[2668,"governor::state::direct"],[2669,"governor::state"],[2670,"governor::state::direct::streams"],[2671,"governor::clock::with_std"],[2672,"governor::middleware"],[2673,"governor::jitter"],[2674,"futures_concurrency::stream::zip::tuple"],[2675,"iroh_relay::defaults"],[2676,"iroh::test_utils::dns_server"]],"i":"Cb0`0`h`````````0AbAdAfAhAj55556432Cd21675430216543216543216543216431643122`675433021675430216543144``675430212`643216664443332221116677554330022116667775554444443300216524654321653252636754302167543021422`4426431`6514456543157011`5654321675302166675543021675430216754302112667543021`44``````````````````````FhFd101011101010`100101001010101`1`1Ff101`01221212121```Gj000000000000000``Gl0000000000000000```````GnH`Hb210210210210210210210`221021021021021021021210201021021021021022102``Hn0Hl10010111101010010101010100100010101101001010Ib`0000000000000000000000```IfId101010101010101010``Jf```0`Df1Jh21021011122210210121021222111221021110010010120`22102100010121101102`2210210210210A@n0`````A@f`Kn`222Ol`1`NjO````3`Nf2Nl2Ob```````AAf0A@b```419```:::Nn``;;7``;AAb:Lj03`==<3``=`::1Nh``3```4=``:<``>>=````59``22><80``<`=`28``<````:796L`91;84:72OdOfOhOjOlOnA@`Dh=A@dA@fKnLhMnLfA@hA@jA@lA@nAA`AAbAAdGbAAf1KjL`01=OfLl1Ln66On:DhMf4Kl4444MnOhADd:AEdAEbLdLbAElABdNfABfAAlNhNjNlNnAAnO`ObLlLjAB`OdOfOhOjOlOnA@`DhA@bA@dA@fKnLhMnLfABbABhABjA@hA@jA@lA@nAA`AAbAAdLnGbKhKjABlKlAAfADdL`AEdAEbLdLbAElABdNfABfAAlNhNjNlNnAAnO`ObLlLjAB`OdOfOhOjOlOnA@`DhA@bA@dA@fKnLhMnLfABbABhABjA@hA@jA@lA@nAA`AAbAAdLnGbKhKjABlKlAAf5N`6AB`OdA@`0:L`NfNhNjNlNnO`ObLj:OfOhOjOlOn>DhA@bA@dA@fKnLhMnLfA@hA@jA@lA@nAA`AAbAAdGbAAfNdL`NfNhNjNlNnO`ObLjOdOfOhOjOlOnA@`DhA@bA@dA@fKnLhMnLfA@hA@jA@lA@nAA`AAbAAdGbAAfL`NfNhNjNlNnO`ObLjOdOfOhOjOlOnA@`DhA@bA@dA@fKnLhMnLfA@hA@jA@lA@nAA`AAbAAdGbAAfL`200Lj65480654LlOh35Dh6Of;0?32200335Od45013OjA@`A@bLhMnLn`ADd=AEdAEbLdLbAElABdNfABfAAlNhNjNlNnAAnO`ObLlLjAB`OdOfOhOjOlOnA@`DhA@bA@dA@fKnLhMnLfABbABhABjA@hA@jA@lA@nAA`AAbAAdLnGbKhKjABlKlAAfADdL`AEdAEbLdLbAElABdNfABfAAlNhNjNlNnAAnO`ObLlLjAB`OdOfOhOjOlOnA@`DhA@bA@dA@fKnLhMnLfABbABhABjA@hA@jA@lA@nAA`AAbAAdLnGbKhKjABlKlAAfOlOnDhA@bA@f<:;:;;;;:ADdL`AEdAEbLdLbAElABdNfABfAAl0NhNjNlNnAAn0O`ObLlLjAB`OdOfOhOjOlOnA@`DhA@bA@dA@fKnLhMnLfABbABhABjA@hA@jA@lA@nAA`AAbAAdLnGbKhKjABlKlAAfLlNfNhNjNlNnO`ObLjAB`OlOnA@`DhA@bA@dA@fKnABbA@hA@jA@lA@nAA`AAbAAdAAfNf00Nh00Nj00Nl00Nn00O`00Ob00Lj00AB`00Ol00On00A@`00Dh00A@b00A@d00A@f00Kn00ABb00A@h00A@j00A@l00A@n00AA`00AAb00AAd00AAf0076L`AAn1ABdNf0ABf0AAlNh0Nj0Nl0Nn08O`0Ob0LlLj0AB`OdOfOhOjOl0OnA@`DhA@b0A@d0A@f0Kn0LhMnLfABbABhABjA@h0A@j0A@l0A@n0AA`AAb0AAd0LnGbKhKjABlKlAAf`;Oj0>ADdL`AEdAEbLdLbAElABdNf0ABfAAlNh0Nj000Nl0Nn0AAnO`000Ob0LlLj0000AB`OdOfOhOjOlOnA@`DhA@bA@dA@fKn00LhMnLfABbABh0ABjA@h0A@jA@l000A@nAA`AAbAAd0LnGbKhKjABlKlAAfL`NfNhNjNlNnO`ObLjOdOfOhOjOlOnA@`DhA@bA@dA@fKnLhMnLfA@hA@jA@lA@nAA`AAbAAdGbAAfLj00`L`KlOfDh4A@f:987AAlAAnKj5Lf0?1AAd33??837AB`Nd0000Mh::>LjAA`AAb6Oj::>Ll;ADdAEdAEbLdLbAElKhABlKlAAnAAl0111Lf02Ln0<;:987654222L`33A@hA@jA@lLl07KjAAf7Dh72<2Gb0Lh=Of05ACl=;OhLjMh?6>>::22OlOn9A@bA@f:L`0AAn1NfNhNjNlNnO`ObKnDh=:ACl;AAlOf<00Ll110><;:9876LjOd3OhOjOlOnA@`;A@bA@dA@f?LhMnLfA@hA@jA@lA@nAA`AAbAAdGbAAfNfABfNhNjNlNnO`ObLjOlA@bA@dA@fKnA@hA@jA@lA@nAAbAAdLf00LnADdL`AEdAEbLdLbAElABdNfABfAAlNhNjNlNnAAnO`ObLlLj000AB`OdOfOhOjOlOnA@`DhA@bA@dA@fKnLhMnLfABbABhABjA@hA@jA@lA@nAA`AAbAAdLnGbKhKjABlKlAAfADdL`AEdAEbLdLbAElABdNfABfAAlNhNjNlNnAAnO`ObLlLjAB`OdOfOhOjOlOnA@`DhA@bA@dA@fKnLhMnLfABbABhABjA@hA@jA@lA@nAA`AAbAAdLnGbKhKjABlKlAAfAEdAEbLdLbAEl76>ADdL`65432ABdNfABfAAlNhNjNlNnAAnO`ObLlLjAB`OdOfOhOjOlOnA@`DhA@bA@dA@fKnLhMnLfABbABhABjA@hA@jA@lA@nAA`AAbAAdLnGbKhKjABlKlAAfOj0MnADdL`AEdAEbLdLbAElABdNfABfAAlNhNjNlNnAAnO`ObLlLjAB`OdOfOhOjOlOnA@`DhA@bA@dA@fKnLhMnLfABbABhABjA@hA@jA@lA@nAA`AAbAAdLnGbKhKjABlKlAAfL`NdLf0AAn0000AKjAKl````AGhAGjAGlAGn011111111321032100032103210321011032103210321000003210332100321032100321032103210333321011111100033311111111111111012211111100011111110222223210321032103210001333332100```AHjAHbAHf202022222020202020202202020120220202020``AHnAHl10`101000101010101000000```010101010``````AIjAAhAIl21AJ`AJb2AJd542130354354354355421305421305421305421300542130543545421304542130213213521321335445430542130542130213542130454213053","f":"```````````````{{bd}f}00000{{{b{h}}}{{b{{l{j}}}}}}{{{b{h}}}{{b{{n{j}}}}}}1{b{{b{c}}}{}}0000000{{{b{A`}}}{{b{A`c}}}{}}0000000{{{b{h}}}h}{{{b{Ab}}}Ab}{{{b{Ad}}}Ad}{{{b{Af}}}Af}{{{b{Ah}}}Ah}{{{b{Aj}}}Aj}{{b{b{A`c}}}f{}}00000{{bj}f}00000{{{b{h}}{b{h}}}Al}{{{b{Ad}}{b{Ad}}}Al}{{{b{Af}}{b{Af}}}Al}{{{b{Aj}}{b{Aj}}}Al}{{b{b{c}}}Al{}}000{{{b{Ah}}{b{Af}}}An}{{AfB`}Ah}`{Bb{{b{c}}}{}}0000{{{b{Af}}}b}111{Bb{{b{A`c}}}{}}0000000{c{{Bd{h}}}Bf}{c{{Bd{Ab}}}Bf}{c{{Bd{Ad}}}Bf}{c{{Bd{Af}}}Bf}{c{{Bd{Aj}}}Bf}{{{b{Ad}}}{{`{{Bl{}{{Bh{{b{Bj}}}}}}}}}}```{Bbf}0000000{{}Ah}`{{{b{h}}{b{h}}}An}{{{b{Ad}}{b{Ad}}}An}{{{b{Af}}{b{Af}}}An}{{{b{Ah}}{b{Ah}}}An}{{{b{Aj}}{b{Aj}}}An}{{b{b{c}}}An{}}00000000000000{{{b{h}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Cb}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Ab}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Ad}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Af}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Cd}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Ah}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Aj}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{h}}}Cf}{Chh}{cc{}}{CjCb}1{ClCb}{{{l{j}}}Ab}3{CnAb}4{hAd}{{{Db{h{D`{Af}}{b{{n{Bj}}}}}}}Ad}{DdAd}{DfAd}{DhAd}9{DjAf}:{DlCd};;{{{b{{l{j}}}}}{{Bd{hCj}}}}{{{b{{l{j}}}}}Ab}{e{{Bd{AhDn}}}{{Eb{{E`{Aj}}}}}{{Ed{}{{Bh{c}}}}}}{{h{D`{Af}}c}Ad{{Ed{}{{Bh{Bj}}}}}}{{{b{c}}}c{}}00000{{{b{Ef}}}{{Bd{h}}}}{{{b{Ef}}}{{Bd{Ab}}}}{{{b{Ef}}}{{Bd{Af}}}}{AfAh}{cAbEh}{{{b{Ah}}{b{Af}}}{{D`{{b{{E`{Aj}}}}}}}}{{{b{h}}{b{A`c}}}fEj}{{{b{Af}}{b{A`c}}}fEj}{{}Bb}0000000{{}c{}}0000000{{{b{Ad}}}An}{{{b{Ah}}}An}{{{b{Ah}}}Bb}`{hAd}`{{{b{Ah}}}{{`{{Bl{}{{Bh{{b{{E`{Aj}}}}}}}}}}}}{{{b{h}}{b{h}}}{{D`{Al}}}}{{{b{Ad}}{b{Ad}}}{{D`{Al}}}}{{{b{Af}}{b{Af}}}{{D`{Al}}}}{{{b{Aj}}{b{Aj}}}{{D`{Al}}}}`{{{b{h}}}Ch}{{{b{Ab}}}h}`{{{b{Ad}}}{{D`{{b{Af}}}}}}`{{{b{Ab}}}{{b{Cn}}}}{{{b{h}}c}BdEl}{{{b{Ab}}c}BdEl}{{{b{Ad}}c}BdEl}{{{b{Af}}c}BdEl}{{{b{Aj}}c}BdEl}{{{b{Ab}}{b{{n{j}}}}}En}{{{b{Cb}}}{{D`{{b{F`}}}}}}{{{b{Cd}}}{{D`{{b{F`}}}}}}```{{{b{Ab}}}{{l{j}}}}{bc{}}00000{bCf}000000{c{{Bd{e}}}{}{}}{{{b{{n{j}}}}}{{Bd{h}}}}{{{b{{l{j}}}}}{{Bd{h}}}}22{{{b{{n{j}}}}}{{Bd{Ab}}}}33333{{}{{Bd{c}}}{}}0000000{bFb}0000000`{{{b{Ah}}}{{`{{Bl{}{{Bh{{b{Af}}}}}}}}}}{{{b{h}}{b{{n{j}}}}{b{En}}}{{Bd{fCj}}}}{{}c{}}0000000`{{Adc}Ad{{Ed{}{{Bh{Bj}}}}}}{{AdAf}Ad}``````````{{}Aj}00{{}Ah}``110```{{bd}f}{{{b{A`Fd}}c}fFf}{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}0{{{b{Fh}}}Fh}{{b{b{A`c}}}f{}}{{bj}f}{{}Fd}{Bb{{b{c}}}{}}0{Bb{{b{A`c}}}{}}0`{Bbf}03{{{b{Fh}}{b{A`Bn}}}Fj}{{{b{Fd}}{b{A`Bn}}}Fj}{cc{}}0{cFd{{Ed{}{{Bh{{Fl{Ff}}}}}}}}{{{b{c}}}c{}}{{{Fn{{Fl{Ff}}}}}Fd}{{}Bb}0{{}c{}}0`````{{{b{Ff}}{D`{{b{Af}}}}{b{{G`{Bj}}}}}f}{{{b{Fd}}{D`{{b{Af}}}}{b{{G`{Bj}}}}}f}{{{b{Ff}}GbGd}{{D`{{Gh{{Gf{Fh}}}}}}}}{{{b{Fd}}GbGd}{{D`{{Gh{{Gf{Fh}}}}}}}}`{{{b{Ff}}}{{D`{{Gh{Fh}}}}}}{{{b{Fd}}}{{D`{{Gh{Fh}}}}}}{bc{}}{c{{Bd{e}}}{}{}}0{{}{{Bd{c}}}{}}0{bFb}0{{}c{}}0```{b{{b{c}}}{}}{{{b{A`}}}{{b{A`c}}}{}}{Bb{{b{c}}}{}}{Bb{{b{A`c}}}{}}{Bbf}{{{b{Gj}}{b{A`Bn}}}Fj}{cc{}}{{}Bb}{{}c{}}{{}Gj}{CfGj}{{{b{Gj}}GbGd}{{D`{{Gh{{Gf{Fh}}}}}}}}?>=<``;:987{{{b{Gl}}{b{A`Bn}}}Fj}654{Gd{{Gf{Gl}}}}{{{b{Gl}}{D`{{b{Af}}}}{b{{G`{Bj}}}}}f}{{{b{Gl}}GbGd}{{D`{{Gh{{Gf{Fh}}}}}}}}{{{b{Gl}}}{{D`{{Gh{Fh}}}}}}{c{{Bd{e}}}{}{}}{{}{{Bd{c}}}{}}{bFb}{{}c{}}```````{{bd}f}00{b{{b{c}}}{}}00{{{b{A`}}}{{b{A`c}}}{}}00{{{b{Gn}}}Gn}{{{b{H`}}}H`}{{{b{Hb}}}Hb}{{b{b{A`c}}}f{}}00{{bj}f}00{Bb{{b{c}}}{}}00{Bb{{b{A`c}}}{}}00`{Bbf}{{{b{A`Gn}}}f}11{{{b{Gn}}{b{A`Bn}}}Fj}{{{b{H`}}{b{A`Bn}}}Fj}{{{b{Hb}}{b{A`Bn}}}Fj}{cc{}}00{{{b{c}}}c{}}00{{}Bb}00{{}c{}}00{AbGn}{{}H`}{{AbDj}Gn}{DjH`}{DjHb}{{{b{Gn}}{D`{{b{Af}}}}{b{{G`{Bj}}}}}f}{{{b{Hb}}{b{Hd}}}{{Gf{f}}}}{{{b{H`}}GbGd}{{D`{{Hf{{Gf{Fh}}}}}}}}{{{b{Hb}}Gd}{{Gf{Hd}}}}{bc{}}00{c{{Bd{e}}}{}{}}00{{}{{Bd{c}}}{}}00{bFb}007{{}c{}}00{{AbDjHhHj}Gn}``{{bd}f}{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}0{Hl{{Gf{Hn}}}}{{}Hl}{{HlI`}Hl}{{{b{Hn}}}Hn}{{b{b{A`c}}}f{}}{{bj}f}{{}Hn}5{Bb{{b{c}}}{}}0{Bb{{b{A`c}}}{}}0{{HlAn}Hl}{Bbf}0{{{b{Hn}}{b{A`Bn}}}Fj}{{{b{Hl}}{b{A`Bn}}}Fj}{cc{}}0{{{b{c}}}c{}}5{{}Bb}0{{HlHj}Hl}{{}c{}}0{HlHl}{{HlDj}Hl}{{{b{Hn}}{D`{{b{Af}}}}{b{{G`{Bj}}}}}f}4{{{b{Hn}}GbGd}{{D`{{Gh{{Gf{Fh}}}}}}}}{{HlAb}Hl}{bc{}}{c{{Bd{e}}}{}{}}0{{}{{Bd{c}}}{}}0{{HlHh}Hl}{bFb}0{{}c{}}0``{{{b{Ib}}c}f{{Eb{Ad}}}}{b{{b{c}}}{}}{{{b{A`}}}{{b{A`c}}}{}}{{}Ib}{Bb{{b{c}}}{}}{Bb{{b{A`c}}}{}}{Bbf}{{{b{Ib}}{b{A`Bn}}}Fj}{cc{}}{eIb{{Eb{Ad}}}{{Ed{}{{Bh{c}}}}}}{{{b{Ib}}Gd}{{D`{Ad}}}}{{}Bb}{{}c{}}9{{{b{Ib}}{D`{{b{Af}}}}{b{{G`{Bj}}}}}f}3{{{b{Ib}}GbGd}{{D`{{Gh{{Gf{Fh}}}}}}}}{{{b{Ib}}c}{{D`{Ad}}}{{Eb{Ad}}}}{c{{Bd{e}}}{}{}}{{}{{Bd{c}}}{}}{bFb}{{}c{}}``{{}{{b{Id}}}}{{{b{If}}{b{Gd}}{b{Ef}}}{{`{{Ij{}{{Ih{{Gf{Ad}}}}}}}}}}{{{b{Id}}{b{Gd}}{b{Ef}}}{{Gf{Ad}}}}{{{b{If}}{b{Gd}}{b{Ef}}{b{{n{Il}}}}}{{`{{Ij{}{{Ih{{Gf{Ad}}}}}}}}}}{{{b{Id}}{b{Gd}}{b{Ef}}{b{{n{Il}}}}}{{Gf{Ad}}}}{{{b{If}}{b{Ef}}}{{`{{Ij{}{{Ih{{Gf{Ad}}}}}}}}}}{{{b{Id}}{b{Ef}}}{{Gf{Ad}}}}{{{b{If}}{b{Ef}}{b{{n{Il}}}}}{{`{{Ij{}{{Ih{{Gf{Ad}}}}}}}}}}{{{b{Id}}{b{Ef}}{b{{n{Il}}}}}{{Gf{Ad}}}}{{{b{If}}cHj}{{`{{Ij{}{{Ih{{Gf{{`{{Bl{}{{Bh{In}}}}}}}}}}}}}}}J`}{{{b{Id}}cHj}{{Gf{{`{{Bl{}{{Bh{In}}}}}}}}}J`}{{{b{If}}cHj}{{`{{Ij{}{{Ih{{Gf{{`{{Bl{}{{Bh{In}}}}}}}}}}}}}}}{J`Jb}}{{{b{Id}}cHj}{{Gf{{`{{Bl{}{{Bh{In}}}}}}}}}{J`Jb}}{{{b{If}}cHj{b{{n{Il}}}}}{{`{{Ij{}{{Ih{{Gf{{`{{Bl{}{{Bh{In}}}}}}}}}}}}}}}{J`Jb}}{{{b{Id}}cHj{b{{n{Il}}}}}{{Gf{{`{{Bl{}{{Bh{In}}}}}}}}}{J`Jb}}105410`{{}{{b{Jd}}}}``````{{bd}f}{{{b{Jf}}}{{b{Ef}}}}{{{b{{Jh{c}}}}}{{b{{Jj{c{Fn{Cf}}}}}}}{JlJnK`Kb}}{b{{b{c}}}{}}00{{{b{A`}}}{{b{A`c}}}{}}00{{{b{Df}}}Df}{{b{b{A`c}}}f{}}{{bj}f}{{{b{Jf}}{b{Jf}}}Al}{{b{b{c}}}Al{}}{Bb{{b{c}}}{}}00{Bb{{b{A`c}}}{}}00`{Bbf}00{{{b{Jf}}{b{Jf}}}An}{{{b{Df}}{b{Df}}}An}{{b{b{c}}}An{}}00000{{{b{Jf}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Jf}}{b{A`Bn}}}Fj}{{{b{Df}}{b{A`Bn}}}Fj}{{{b{{Jh{c}}}}{b{A`Bn}}}FjKd}{cc{}}0{{{Jh{Jf}}}Df}{{{b{{Jh{Jf}}}}}Df}2{{{b{Df}}}{{Jh{Jf}}}}{{{b{{n{Kf}}}}}{{Gf{Df}}}}{{{b{{n{Kf}}}}}{{Gf{{Jh{c}}}}}{JlJnK`Kb}}{{Gde}{{Jh{c}}}{JlJnK`Kb}{{Bl{}{{Bh{{Db{cCf}}}}}}}}{{{b{Hd}}}{{Gf{Df}}}}{{{b{Hd}}}{{Gf{{Jh{c}}}}}{JlJnK`Kb}}{{{b{c}}}c{}}{{{b{Ef}}}{{Bd{Jfc}}}{}}{{Gdc}{{Gf{{Jh{e}}}}}{{Bl{}{{Bh{Cf}}}}}{JlJnK`Kb}}{{{b{Ef}}}{{Gf{Gd}}}}{{{b{Jf}}{b{A`c}}}fEj}{{}Bb}00{{}c{}}00{{{b{Jd}}{b{Gd}}{b{Ef}}}{{Gf{{Jh{c}}}}}{JlJnK`Kb}}{{{b{Jd}}{b{Ef}}}{{Gf{{Jh{c}}}}}{JlJnK`Kb}}{{Gd{D`{Dj}}{G`{Bj}}}Df}{{{b{{Jh{c}}}}}Gd{JlJnK`Kb}}`{{{b{Jf}}{b{Jf}}}{{D`{Al}}}}`{{{b{Df}}{b{Ef}}Hh}{{Gf{{`{{Bl{}{{Bh{Kf}}}}}}}}}}{{{b{{Jh{c}}}}{b{Ef}}Hh}{{Gf{{`{{Bl{}{{Bh{Kf}}}}}}}}}{JlJnK`Kb}}{bc{}}{{{b{Df}}{b{Ab}}Hh}{{Gf{Hd}}}}{{{b{{Jh{c}}}}{b{Ab}}Hh}{{Gf{Hd}}}{JlJnK`Kb}}{bCf}{{{b{Gd}}}Cf}{{{b{Ef}}}{{Bd{Jfc}}}{}}{c{{Bd{e}}}{}{}}00{{}{{Bd{c}}}{}}00{bFb}00{{}c{}}00`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{{bd}f}00000000000000000000000000000000{{{b{Gb}}}Kh}{Kj{{Gf{KlKn}}}}{{{b{L`}}}Lb}{{{b{L`}}}Ld}{{Kj{E`{Lf}}}{{Gf{KlKn}}}}{{{b{A`Lh}}Lj}{{b{A`Lh}}}}`{{{b{A`Ll}}{D`{Lh}}}{{b{A`Ll}}}}`{{Lne}LnFf{{M`{{b{Ab}}}{{Ih{{D`{c}}}}}}MbMd}}{{{b{Gb}}Ad}{{Gf{f}}}}{{{b{Gb}}Ad{b{Ef}}}{{Gf{f}}}}```{{{b{Mf}}{b{{n{j}}}}}{{Fl{Mh}}}}{{{b{A`Ll}}An}{{b{A`Ll}}}}{{{b{A`Kl}}}{{Gf{{Fn{j}}}}}}{{Ln{Fn{{Fn{j}}}}}Ln}{Ln{{Gf{Gb}}}}{{LnMj}Ln}{{LnMl}Ln}{{{b{A`Mn}}Hj}{{b{A`Mn}}}}`{b{{b{c}}}{}}0000000000000000000000000000000000000000000000000000{{{b{A`}}}{{b{A`c}}}{}}0000000000000000000000000000000000000000000000000000{{{b{Gb}}}{{Db{Bj{D`{Bj}}}}}}{{{E`{N`}}NbB`}{{Fl{Nd}}}}{{}Ln}````{LnLn}{{{b{L`}}}L`}{{{b{Nf}}}Nf}{{{b{Nh}}}Nh}{{{b{Nj}}}Nj}{{{b{Nl}}}Nl}{{{b{Nn}}}Nn}{{{b{O`}}}O`}{{{b{Ob}}}Ob}{{{b{Lj}}}Lj}{{{b{Od}}}Od}{{{b{Of}}}Of}{{{b{Oh}}}Oh}{{{b{Oj}}}Oj}{{{b{Ol}}}Ol}{{{b{On}}}On}{{{b{A@`}}}A@`}{{{b{Dh}}}Dh}{{{b{A@b}}}A@b}{{{b{A@d}}}A@d}{{{b{A@f}}}A@f}{{{b{Kn}}}Kn}{{{b{Lh}}}Lh}{{{b{Mn}}}Mn}{{{b{Lf}}}Lf}{{{b{A@h}}}A@h}{{{b{A@j}}}A@j}{{{b{A@l}}}A@l}{{{b{A@n}}}A@n}{{{b{AA`}}}AA`}{{{b{AAb}}}AAb}{{{b{AAd}}}AAd}{{{b{Gb}}}Gb}{{{b{AAf}}}AAf}{{{b{Nd}}}{{Fl{Nd}}}}{{b{b{A`c}}}f{}}00000000000000000000000000000000{{bj}f}00000000000000000000000000000000{{{b{L`}}Lj{b{{n{j}}}}}f}{{{b{Gb}}}{{Gf{f}}}}{{{b{L`}}}{{D`{Kn}}}}{{{b{L`}}}Kn}{{{b{Lj}}{b{Lj}}}Al}{{{b{AA`}}{b{AA`}}}Al}{{{b{AAb}}{b{AAb}}}Al}{{{b{AAd}}{b{AAd}}}Al}`{{b{b{c}}}Al{}}000{{{b{A`Ll}}{E`{N`}}}{{b{A`Ll}}}}`{{{b{L`}}}{{Fl{Nd}}}}{{{b{Gb}}Gd}{{Gf{{AAh{A@b}}}}}}`{{{b{Gb}}c{b{{n{j}}}}}{{Gf{L`}}}{{Eb{Ad}}}}`{jA@n}``{{{b{A`Ll}}Bb}{{b{A`Ll}}}}````{{{b{A`Ll}}{D`{Bb}}}{{b{A`Ll}}}}1{{{b{L`}}}Bb}`{{}Ll}{{}Lj}{{}Od}{{}Of}{{}Oh}{{}Oj}{{}A@`}{{}A@b}{{}Lh}{{}Mn}{{}Ln}{{}AAf}{Bb{{b{c}}}{}}0000000000000000000000000000000000000000000000000000{Bb{{b{A`c}}}{}}0000000000000000000000000000000000000000000000000000{c{{Bd{Ol}}}Bf}{c{{Bd{On}}}Bf}{c{{Bd{Dh}}}Bf}{c{{Bd{A@b}}}Bf}{c{{Bd{A@f}}}Bf}{AAdAAj}{{{b{Gb}}}{{AAh{{D`{{G`{AA`}}}}}}}}{{Ln{Fl{Ff}}}Ln}{{{b{Gb}}}{{D`{{b{Ff}}}}}}{LnLn}00{{LnId}Ln}{{{b{Gb}}}{{b{Id}}}}{Bbf}000000000{{{b{A`AAl}}}f}11111{{{b{A`AAn}}}f}22222222222222222222222222222222222222{{{b{A`Ll}}An}{{b{A`Ll}}}}{{{b{Nf}}{b{Nf}}}An}{{{b{Nh}}{b{Nh}}}An}{{{b{Nj}}{b{Nj}}}An}{{{b{Nl}}{b{Nl}}}An}{{{b{Nn}}{b{Nn}}}An}{{{b{O`}}{b{O`}}}An}{{{b{Ob}}{b{Ob}}}An}{{{b{Lj}}{b{Lj}}}An}{{{b{AB`}}{b{AB`}}}An}{{{b{Ol}}{b{Ol}}}An}{{{b{On}}{b{On}}}An}{{{b{A@`}}{b{A@`}}}An}{{{b{Dh}}{b{Dh}}}An}{{{b{A@b}}{b{A@b}}}An}{{{b{A@d}}{b{A@d}}}An}{{{b{A@f}}{b{A@f}}}An}{{{b{Kn}}{b{Kn}}}An}{{{b{ABb}}{b{ABb}}}An}{{{b{A@h}}{b{A@h}}}An}{{{b{A@j}}{b{A@j}}}An}{{{b{A@l}}{b{A@l}}}An}{{{b{A@n}}{b{A@n}}}An}{{{b{AA`}}{b{AA`}}}An}{{{b{AAb}}{b{AAb}}}An}{{{b{AAd}}{b{AAd}}}An}{{{b{AAf}}{b{AAf}}}An}{{b{b{c}}}An{}}00000000000000000000000000000000000000000000000000000000000000000000000000000``{{{b{L`}}{b{A`{n{j}}}}{b{{n{j}}}}{b{{n{j}}}}}{{Bd{fABb}}}}{{{b{A`AAn}}}{{Bd{fA@d}}}}{{{b{L`}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{ABd}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Nf}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{ABf}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{AAl}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Nh}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Nj}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Nl}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Nn}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{AAn}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{O`}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Ob}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Ll}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Lj}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{AB`}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Od}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Of}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Oh}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Oj}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Ol}}{b{A`Bn}}}Fj}0{{{b{On}}{b{A`Bn}}}Fj}{{{b{A@`}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Dh}}{b{A`Bn}}}Fj}{{{b{A@b}}{b{A`Bn}}}Fj}0{{{b{A@d}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{A@f}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{A@f}}{b{A`Bn}}}Fj}{{{b{Kn}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Lh}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Mn}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Lf}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{ABb}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{ABh}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{ABj}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{A@h}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{A@j}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{A@l}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{A@n}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{AA`}}{b{A`Bn}}}Fj}{{{b{AAb}}{b{A`Bn}}}Fj}0{{{b{AAd}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Ln}}{b{A`Bn}}}Fj}{{{b{Gb}}{b{A`Bn}}}Fj}{{{b{Kh}}{b{A`Bn}}}Fj}{{{b{Kj}}{b{A`Bn}}}Fj}{{{b{ABl}}{b{A`Bn}}}Fj}{{{b{Kl}}{b{A`Bn}}}Fj}{{{b{AAf}}{b{A`Bn}}}Fj}{{}An}````{cc{}}0000000{KnNf}111{NjNh}22{NlNj}{KnNj}{ABnNj}{KnNl}6{NjNn}77{A@dO`}8{ObO`}{KnO`}:{KnOb};{B`Lj}<{jLj}{AAdLj}{HhLj}????????????{AC`Kn}{A@lKn}{cc{}}0000{ACbABh}111{A@lA@h}2{A@nA@l}{ACdA@l}4{ACfA@l}5555{LjAAd}6666666{{{b{c}}}c{}}00000000000000000000000000000000:{Il{{Bd{LjACh}}}}{IlLj}{{{b{L`}}}{{Gf{h}}}}{{{b{L`}}}{{D`{{Fl{ACj}}}}}}{{{b{A`Kl}}}{{Gf{{Fl{ACj}}Kn}}}}`{{{b{Dh}}}An}{{{b{Lj}}{b{A`c}}}fEj}{{{b{A@f}}{b{A`c}}}fEj}{{{b{AA`}}{b{A`c}}}fEj}{{{b{AAb}}{b{A`c}}}fEj}{{{b{AAd}}{b{A`c}}}fEj}{{{b{Gb}}}{{AAh{{D`{Af}}}}}}{{{b{AAl}}}AAd}{{{b{AAn}}}AAd}{Kjf}`{{{b{A`Lf}}Il}{{b{A`Lf}}}}0{AAdIl}{{}Bb}0000000000000000000000000000000000000000000000000000{{{b{ACl}}Hh{b{ACn}}}{{Bd{AD`ABj}}}}{{{b{A`Ll}}B`}{{b{A`Ll}}}}{{{b{A`Ll}}Hj}{{b{A`Ll}}}}{{{b{Nd}}}Il}{AAdADb}{{LnAn}Ln}{{{b{A`Mn}}Hj}{{b{A`Mn}}}}{{}c{}}0000000000000000000000000000000000000000000000000000{Kl{{Gf{{Db{L`ADd}}Kl}}}}{{{Fl{Nd}}}{{Fl{ACj}}}}{{}}000000{Kjc{}}11{ABfADf}{LjIl}`{{{b{AAl}}}An}{{{b{ABd}}}An}{{{b{Gb}}}An}{c{{ADh{e}}}ADjIj}00000000{{{b{A`Ll}}{D`{Hj}}}{{b{A`Ll}}}}={{Ln{Fn{Ad}}}Ln}```{{{b{Dh}}}{{D`{Hj}}}}```{{{b{L`}}}{{D`{In}}}}{{{b{Kj}}}{{D`{In}}}}{{{b{Kl}}}{{D`{In}}}}```{{{b{Ab}}{Fn{{Fn{j}}}}{E`{Ll}}An}{{Gf{Lf}}}}{{{b{A`Lh}}{D`{Hj}}}{{b{A`Lh}}}}{{{b{A`Ll}}Lj}{{b{A`Ll}}}}0`{{{b{L`}}}{{D`{Bb}}}}{{{b{A`Ll}}{D`{ADl}}}{{b{A`Ll}}}}{{{b{A`Lf}}Bb}{{b{A`Lf}}}}```{{{b{A`Lf}}An}{{b{A`Lf}}}}{{{b{A`Ll}}B`}{{b{A`Ll}}}}{{{b{A`Mn}}B`}{{b{A`Mn}}}}{{{b{A`Ll}}{D`{Mn}}}{{b{A`Ll}}}}{{{b{Gb}}}f}{{{b{ABd}}}An}{{{E`{ACl}}{E`{Mf}}}Lf}{{ADbAAjIl}AAd}``{{{b{Gb}}}{{Gf{Ad}}}}{{{b{Gb}}}Gd}``{{{b{L`}}}{{ADn{{D`{Bj}}}}}}`{{{b{A`Nd}}NbNbIlAn{b{AE`}}}f}{{{b{A`Nd}}NbNbAnIl}f}{{{b{A`Nd}}NbIlAn{D`{Il}}}f}{{{b{A`Nd}}B`}f}{{{b{A`Nd}}NbIlIl}f}{{{b{Mh}}{b{A`{n{j}}}}{b{{n{j}}}}}{{Bd{{b{A`{n{j}}}}ABh}}}}{{{b{L`}}}AEb}{{{b{L`}}}AEd}{{{b{A`Ll}}Hh}{{b{A`Ll}}}}{{{b{Lj}}{b{Lj}}}{{D`{Al}}}}{{{b{AA`}}{b{AA`}}}{{D`{Al}}}}{{{b{AAb}}{b{AAb}}}{{D`{Al}}}}{{{b{AAd}}{b{AAd}}}{{D`{Al}}}}```{{{b{L`}}}{{D`{{Fl{ACj}}}}}}5`{{{AEf{{b{A`ADd}}}}{b{A`AEh}}}AEj}{{{AEf{{b{A`AEd}}}}{b{A`AEh}}}AEj}{{{AEf{{b{A`AEb}}}}{b{A`AEh}}}AEj}{{{AEf{{b{A`Ld}}}}{b{A`AEh}}}AEj}{{{AEf{{b{A`Lb}}}}{b{A`AEh}}}AEj}{{{AEf{{b{A`AEl}}}}{b{A`AEh}}}AEj}{{{AEf{{b{A`Kh}}}}{b{A`AEh}}}{{AEj{c}}}{}}{{{AEf{{b{A`ABl}}}}{b{A`AEh}}}{{AEj{c}}}{}}{{{AEf{{b{A`Kl}}}}{b{A`AEh}}}{{AEj{c}}}{}}{{{AEf{{b{A`AAn}}}}{b{A`AEh}}}{{AEj{{Bd{fAEn}}}}}}{{{b{A`AAl}}{b{A`AEh}}{b{A`{n{j}}}}}{{AEj{{Bd{BbNj}}}}}}{{{AEf{{b{A`AAl}}}}{b{A`AEh}}{b{A`AF`}}}{{AEj{{Bd{fAEn}}}}}}2{{{AEf{{b{A`AAn}}}}{b{A`AEh}}{b{{n{j}}}}}{{AEj{{Bd{BbAEn}}}}}}{{{AEf{{b{A`AAn}}}}{b{A`AEh}}{b{{n{j}}}}}{{AEj{{Bd{BbO`}}}}}}{{{b{A`Lf}}{D`{Mj}}}{{b{A`Lf}}}}{{{b{A`Lf}}{D`{Ml}}}{{b{A`Lf}}}}{{{b{AAn}}}{{Bd{AFbA@d}}}}{LnLn}{{LnDj}Ln}{e{{AFd{cg}}}{}{{ADj{}{{Ih{c}}}}}{{Ij{}{{Ih{c}}}}}}00000000{{{b{A`AAl}}{b{A`{n{j}}}}}{{Bd{{D`{Bb}}Nj}}}}{{{b{A`AAl}}BbAn}{{Bd{{D`{AB`}}Nj}}}}{{{b{A`AAl}}{b{A`{n{AFf}}}}}{{Bd{{D`{Bb}}Nj}}}}{{{b{L`}}}AEl}{{{b{A`AAl}}{b{A`{n{j}}}}}{{Bd{fNn}}}}{{{b{A`AAl}}Bb}{{Bd{{Fn{j}}Nh}}}}```{{{b{A`Ll}}An}{{b{A`Ll}}}}{{{b{A`Ll}}Lj}{{b{A`Ll}}}}{{{b{A`AAl}}}{{Bd{{D`{Lj}}Nl}}}}{Kjf}{{{b{AAf}}}Ah}{{LnAAf}Ln}`{{{b{L`}}}Bj}{{{b{Kj}}}Bj}{{{b{Kl}}}Bj}{{{b{Kj}}}An}{{{b{Gb}}Gd}{{D`{Dh}}}}{{{b{Gb}}}{{`{{Bl{}{{Bh{Dh}}}}}}}}{{{b{A`Lh}}Lj}{{b{A`Lh}}}}{{{b{A`AAn}}Lj}{{Bd{fA@d}}}}``{Kj{{Gf{fABf}}}}{{{b{ACl}}Hh{b{ACn}}{b{{n{j}}}}}{{l{j}}}}{{{b{A`Lf}}Hj}{{b{A`Lf}}}}{{{b{L`}}}Hj}`{{Ljc}Lj{{Eb{Lj}}}}{{{b{Mh}}{b{A`{Fn{j}}}}{b{{n{j}}}}}{{Bd{fABh}}}}{{LnAb}Ln}{{{b{Gb}}}{{b{Ab}}}}{{{b{L`}}AFf}{{Bd{fNf}}}}{{{b{L`}}AFf}AFh}{{{b{A`Ll}}An}{{b{A`Ll}}}}{{{b{A`Ll}}Il}{{b{A`Ll}}}}``{{{b{Ol}}c}BdEl}{{{b{On}}c}BdEl}{{{b{Dh}}c}BdEl}{{{b{A@b}}c}BdEl}{{{b{A@f}}c}BdEl}{{{b{Gb}}{Fn{{Fn{j}}}}}{{Gf{f}}}}{{{b{L`}}Lj}f}0{{{b{AAn}}AFb}{{Bd{fA@d}}}}1{{{b{Nf}}}{{D`{{b{F`}}}}}}{{{b{Nh}}}{{D`{{b{F`}}}}}}{{{b{Nj}}}{{D`{{b{F`}}}}}}{{{b{Nl}}}{{D`{{b{F`}}}}}}{{{b{Nn}}}{{D`{{b{F`}}}}}}{{{b{O`}}}{{D`{{b{F`}}}}}}{{{b{Ob}}}{{D`{{b{F`}}}}}}{{{b{Kn}}}{{D`{{b{F`}}}}}}{{{b{Dh}}}{{Fn{{Db{A@fHj}}}}}}`{{{b{L`}}}Bb}{{{E`{ACl}}Hh{b{AFj}}}{{Fl{AFl}}}}{{{b{L`}}}Oj}{{{b{A`AAl}}Lj}{{Bd{fA@d}}}}`{{{b{A`AAn}}}{{Bd{{D`{Lj}}Ob}}}}``{{{b{A`Ll}}Lj}{{b{A`Ll}}}}``{{{b{A`Ll}}AFn}{{b{A`Ll}}}}{bc{}}00000000000000000000000000000000{bCf}0000000000000000000{{{b{A`Lf}}{E`{Mf}}}{{b{A`Lf}}}}`{{{b{A`Lf}}{E`{Ll}}}{{b{A`Lf}}}}{{LnLl}Ln}{c{{Bd{e}}}{}{}}000000000000000000{Il{{Bd{LjACh}}}}1{AG`{{Bd{LjACh}}}}{Bb{{Bd{LjACh}}}}333333333333333333333333333333333{{}{{Bd{c}}}{}}0000000000000000000000000000000000000000000000000000{{{AEf{{b{A`c}}}}{b{A`AEh}}}AEj{}}000000`{bFb}0000000000000000000000000000000000000000000000000000``{{{b{A`Mn}}B`}{{b{A`Mn}}}}{{}c{}}0000000000000000000000000000000000000000000000000000{{{b{L`}}}ABd}{{{b{Nd}}}Il}{{{E`{ACl}}}Lf}{{{Fn{AGb}}AGd}{{Bd{LfAGf}}}}{{{b{A`AAn}}{b{{n{j}}}}}{{Bd{BbO`}}}}{{{b{A`AAn}}{b{{n{j}}}}}{{Bd{fO`}}}}{{{b{A`AAn}}{b{A`{n{AFf}}}}}{{Bd{fO`}}}}{{{b{A`AAn}}AFf}{{Bd{fO`}}}}{{{b{A`AAn}}{b{A`{n{AFf}}}}}{{Bd{A@`O`}}}}``````{{bd}f}000`````````{b{{b{c}}}{}}000{{{b{A`}}}{{b{A`c}}}{}}000``{{{b{AGh}}}AGh}{{{b{AGj}}}AGj}{{{b{AGl}}}AGl}{{{b{AGn}}}AGn}{{b{b{A`c}}}f{}}000{{bj}f}000```{{}AGh}{{}AGj}{{}AGl}{{}AGn}{Bb{{b{c}}}{}}000{Bb{{b{A`c}}}{}}000````{Bbf}000`{{{b{AGh}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{AGj}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{AGl}}{b{A`Bn}}}Fj}{{{b{AGn}}{b{A`Bn}}}{{Bd{fC`}}}}`{cc{}}000{{{b{c}}}c{}}000`{{}Bb}000{{}c{}}000{{{b{AGh}}}{{AH`{{Db{{b{Ef}}{b{ACj}}}}}}}}{{{b{AGj}}}{{AH`{{Db{{b{Ef}}{b{ACj}}}}}}}}{{{b{AGl}}}{{AH`{{Db{{b{Ef}}{b{ACj}}}}}}}}{{{b{AGn}}}{{AH`{{Db{{b{Ef}}{b{ACj}}}}}}}}```{{}{{b{Ef}}}}000````````````````````````````````````````````````````{bc{}}000{c{{Bd{e}}}{}{}}000{{}{{Bd{c}}}{}}000{bFb}000```````{{}c{}}000````{{bd}f}{{{b{AHb}}Kl}{{AHd{{Gf{f}}}}}}{{AHfce}AHf{{AHh{{n{j}}}}}AHb}{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}0{GbAHf}{{{b{AHj}}}AHj}{{b{b{A`c}}}f{}}{{bj}f}{Bb{{b{c}}}{}}0{Bb{{b{A`c}}}{}}0{Bbf}0{{{b{AHj}}}{{b{Gb}}}}{{{b{AHf}}}{{b{Gb}}}}{{{b{AHj}}{b{A`Bn}}}Fj}{{{b{AHf}}{b{A`Bn}}}Fj}{cc{}}0{{{b{c}}}c{}}{{}Bb}0{{}c{}}0{{{b{AHj}}}An}?{{{b{AHb}}}{{AHd{f}}}}{{{b{AHj}}}{{Gf{f}}}}{AHf{{Gf{AHj}}}}{bc{}}{c{{Bd{e}}}{}{}}0{{}{{Bd{c}}}{}}0{bFb}0{{}c{}}0``{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}0{Bj{{Gf{Jd}}}}{Bb{{b{c}}}{}}0{Bb{{b{A`c}}}{}}0{{{b{AHl}}Ab}{{Fl{Fd}}}}{{{b{AHl}}}Id}{Bbf}0{{{b{AHn}}{b{A`Bn}}}Fj}{{{b{AHl}}{b{A`Bn}}}Fj}{cc{}}0{{}Bb}0{{}c{}}0``{{{b{AHl}}{b{Gd}}Hj}{{Gf{f}}}}`{{}{{Gf{AHl}}}}{{}{{Gf{{Db{AhAfAI`}}}}}}{{{D`{AIb}}An}{{Gf{{Db{AhAfAI`}}}}}}1{Cf{{Gf{AHl}}}}{c{{Bd{e}}}{}{}}0{{}{{Bd{c}}}{}}0{bFb}0{{}c{}}0``````{{bd}f}00{b{{b{c}}}{}}00000{{{b{A`}}}{{b{A`c}}}{}}00000{e{{AId{g}}}{}{{AIf{}{{Bh{c}}}}}{{AIh{}{{Bh{c}}}}}}{{{b{{AIj{c}}}}}{{AIj{c}}}{}}{{{b{{AAh{c}}}}}{{AAh{c}}}Jb}{{{b{{AIl{c}}}}}{{AIl{c}}}Jb}{{b{b{A`c}}}f{}}00{{bj}f}00{{}{{AIj{c}}}AIn}{Bb{{b{c}}}{}}00000{Bb{{b{A`c}}}{}}00000{Bbf}00000{{{b{{AIj{c}}}}{b{A`Bn}}}FjKd}{{{b{{AAh{c}}}}{b{A`Bn}}}FjKd}{{{b{{AJ`{c}}}}{b{A`Bn}}}FjKd}{{{b{{AJb{c}}}}{b{A`Bn}}}FjKd}{{{b{{AIl{c}}}}{b{A`Bn}}}FjKd}{{{b{AJd}}{b{A`Bn}}}Fj}0{cc{}}00000{{{b{c}}}c{}}00{{{b{{AIj{c}}}}}c{JbAJf}}{{{b{{AAh{c}}}}}{{Bd{cAJd}}}{JbAJf}}{{}Bb}00000{{{b{A`{AAh{{D`{c}}}}}}}{{AJb{c}}}{JbAJf}}{{}c{}}00000{{}}0{{}c{}}{c{{ADh{e}}}ADjIj}0{e{{AJh{cg}}}{}{{AIf{}{{Bh{c}}}}}{{AIh{}{{Bh{c}}}}}}{c{{AIj{c}}}{JbAJf}}{{{AEf{{b{A`{AJ`{c}}}}}}{b{A`AEh}}}{{AEj{e}}}{JbAJf}{}}{{{AEf{{b{A`{AJb{c}}}}}}{b{A`AEh}}}{{AEj{e}}}{JbAJf}{}}{{{AEf{{b{A`{AIl{c}}}}}}{b{A`AEh}}}{{AEj{{D`{e}}}}}{JbAJf}{}}{e{{AFd{cg}}}{}{{ADj{}{{Ih{c}}}}}{{Ij{}{{Ih{c}}}}}}0{{{b{{AJl{AJjceg}}}}}{{AJn{iceg}}}AK`AKbAKd{}}{{{b{{AJl{AJjceg}}}}AKf}{{AJn{iceg}}}AK`AKbAKd{}}{{{b{{AIj{c}}}}c}{{Bd{cc}}}{JbAJf}}{{{AAh{c}}}{{AIl{c}}}{JbAJf}}0{bc{}}00{bCf}{c{{Bd{e}}}{}{}}00000{{}{{Bd{c}}}{}}00000{{{AEf{{b{A`c}}}}{b{A`AEh}}}AEj{}}0{{{AEf{{b{A`c}}}}{b{A`AEh}}}{{AEj{{D`{Bd}}}}}{}}{bFb}00000{{{b{A`{AAh{c}}}}}{{AJ`{c}}}{JbAJf}}{{}c{}}00000{{{b{{AIj{c}}}}}{{AAh{c}}}{JbAJf}}{e{{AKh{g}}}{}{{AIf{}{{Bh{c}}}}}{{AIh{}{{Bh{c}}}}}}","D":"FD`","p":[[1,"reference",null,null,1],[5,"Private",2576],[1,"unit"],[5,"PublicKey",0,2577],[1,"u8"],[1,"array"],[1,"slice"],[0,"mut"],[5,"SecretKey",0,2577],[5,"NodeAddr",0,2578],[5,"RelayUrl",0,2579],[5,"RelayMap",0,2580],[5,"RelayNode",0,2580],[6,"Ordering",2581],[1,"bool"],[1,"u16"],[1,"usize"],[6,"Result",2582,null,1],[10,"Deserializer",2583],[17,"Item"],[6,"SocketAddr",2584],[10,"Iterator",2585],[5,"Formatter",2586],[5,"Error",2586],[6,"KeyParsingError",0,2577],[5,"RelayUrlParseError",0,2579],[5,"String",2587],[5,"VerifyingKey",2588],[5,"Error",2589],[5,"DecodeError",2590],[5,"SigningKey",2591],[6,"Option",2592,null,1],[1,"tuple",null,null,1],[5,"NodeTicket",2593],[5,"NodeInfo",564],[5,"RemoteInfo",655,2594],[5,"Url",2595],[6,"ParseError",2596],[5,"Error",2597],[5,"Arc",2598,null,1],[10,"Into",2599],[10,"IntoIterator",2600],[1,"str"],[10,"CryptoRngCore",2601],[10,"Hasher",2602],[10,"Serializer",2603],[5,"Signature",2604],[10,"Error",2605],[5,"TypeId",2606],[5,"ConcurrentDiscovery",298],[10,"Discovery",298],[5,"DiscoveryItem",298],[8,"Result",2586],[5,"Box",2607,null,1],[5,"Vec",2608],[5,"BTreeSet",2609],[5,"Endpoint",655],[8,"NodeId",0,2577],[8,"Result",2597],[8,"Boxed",2610],[5,"DnsDiscovery",351],[5,"LocalSwarmDiscovery",370],[5,"PkarrPublisher",389],[5,"PkarrResolver",389],[5,"PkarrRelayClient",389],[5,"SignedPacket",2611],[8,"BoxStream",2612],[1,"u32"],[5,"Duration",2613],[5,"Builder",466],[5,"DhtDiscovery",466],[5,"PkarrClient",2614],[5,"StaticProvider",515],[8,"DnsResolver",539],[10,"ResolverExt",539],[17,"Output"],[10,"Future",2615,null,1],[1,"u64"],[6,"IpAddr",2616],[10,"IntoName",2617],[10,"Clone",2618],[8,"TokioResolver",2619],[6,"IrohAttr",564],[5,"TxtAttrs",564],[5,"BTreeMap",2620],[10,"FromStr",2621],[10,"Display",2586],[10,"Hash",2602],[10,"Ord",2581],[10,"Debug",2586],[5,"Record",2622],[5,"Accept",655],[5,"Incoming",655],[5,"Connecting",655],[6,"ConnectionError",655,2623],[5,"Connection",655,2624],[5,"AcceptBi",655,2624],[5,"AcceptUni",655,2624],[5,"ServerConfig",655,2625],[5,"AckFrequencyConfig",655,2625],[5,"VarInt",655,2626],[5,"TransportConfig",655,2625],[5,"Builder",655],[10,"FnOnce",2627],[10,"Send",2628],[10,"Sync",2628],[10,"HandshakeTokenKey",655,2629],[10,"AeadKey",655,2629],[5,"SocketAddrV4",2584],[5,"SocketAddrV6",2584],[5,"MtuDiscoveryConfig",655,2625],[10,"ControllerFactory",655,2630],[5,"Instant",2631],[10,"Controller",655,2630],[6,"SendDatagramError",655,2624],[6,"ReadToEndError",655,2632],[6,"ReadError",655,2632],[6,"ResetError",655,2632],[6,"ReadExactError",655,2632],[6,"WriteError",655,2633],[6,"StoppedError",655,2633],[5,"UdpStats",655,2634],[5,"FrameStats",655,2634],[5,"PathStats",655,2634],[5,"ConnectionStats",655,2634],[6,"ControlMsg",655,2594],[5,"DirectAddrInfo",655,2594],[5,"Written",655,2635],[6,"ConnectionType",655,2594],[5,"ClosedStream",655,2636],[6,"Source",655,2637],[5,"ConnectionClose",655,2638],[5,"ApplicationClose",655,2638],[5,"TransportError",655],[5,"TransportErrorCode",655],[5,"DirectAddr",655,2639],[6,"DirectAddrType",655,2639],[5,"StreamId",655,2640],[6,"RelayMode",655],[5,"Watcher",2444],[6,"Dir",2640],[5,"RecvStream",655,2632],[5,"SendStream",655,2633],[5,"Chunk",655,2641],[5,"ExportKeyingMaterialError",655,2629],[5,"WeakConnectionHandle",655,2624],[5,"RetryError",655,2642],[5,"CryptoError",655,2629],[5,"UnsupportedVersion",655,2629],[5,"IncomingFuture",655],[6,"ReadableError",2643],[6,"Close",2638],[5,"Unspecified",2644],[5,"InvalidFrame",2638],[6,"Error",2645],[5,"VarIntBoundsExceeded",2626],[10,"Any",2606],[10,"CryptoServerConfig",655],[5,"ConnectionId",2646],[5,"Keys",2629],[6,"Side",2640],[5,"ZeroRttAccepted",655,2624],[5,"Incoming",2642],[5,"Join2",2647],[10,"IntoFuture",2648],[5,"IdleTimeout",2625],[5,"Receiver",2649],[5,"RttEstimator",2650],[5,"OpenBi",655,2624],[5,"OpenUni",655,2624],[5,"Pin",2651],[5,"Context",2652],[6,"Poll",2653],[5,"ReadDatagram",655,2624],[5,"Error",2654],[5,"ReadBuf",2655],[1,"i32"],[5,"Race2",2656],[5,"Bytes",2657],[5,"SendDatagram",2624],[5,"TransportParameters",2645],[10,"Session",2629],[1,"f32"],[1,"u128"],[5,"CertificateDer",2658],[6,"PrivateKeyDer",2658],[6,"Error",2659],[5,"PortmapMetrics",2183],[5,"NetReportMetrics",2183],[5,"MagicsockMetrics",2183],[5,"RelayMetrics",2183],[5,"IntoIter",2660],[10,"ProtocolHandler",2359],[8,"Boxed",2661],[5,"RouterBuilder",2359],[10,"AsRef",2599],[5,"Router",2359],[5,"DnsPkarrServer",2404,2662],[5,"CleanupDropGuard",2404],[5,"Server",2663],[5,"StunConfig",2663],[5,"Chain2",2664],[10,"IntoStream",2665],[10,"Stream",2612],[5,"Watchable",2444],[5,"WatcherStream",2444],[10,"Default",2666],[5,"WatchNextFut",2444],[5,"WatchInitializedFut",2444],[5,"Disconnected",2444],[10,"Eq",2581],[5,"Merge2",2667],[6,"NotKeyed",2668],[5,"RateLimiter",2669],[5,"RatelimitedStream",2670],[10,"DirectStateStore",2668],[10,"ReasonablyRealtime",2671],[10,"RateLimitingMiddleware",2672],[5,"Jitter",2673],[5,"Zip2",2674],[15,"Discovery",2181],[15,"NamedApp",2181]],"r":[[2,655],[4,2577],[6,2578],[7,2577],[8,2577],[9,2580],[10,655],[11,2580],[12,2579],[13,2579],[14,2577],[282,2675],[283,2675],[658,2624],[659,2624],[660,2625],[661,2629],[663,2638],[670,2641],[672,2636],[676,2624],[677,2638],[679,2623],[685,2634],[686,2594],[687,2594],[688,2630],[689,2630],[690,2629],[695,2639],[696,2594],[697,2639],[703,2629],[708,2634],[709,2629],[721,2625],[726,2624],[727,2624],[729,2634],[734,2624],[735,2632],[737,2632],[738,2632],[739,2632],[743,2594],[746,2632],[747,2642],[751,2624],[752,2633],[753,2625],[754,2637],[757,2633],[758,2640],[765,2625],[770,2634],[773,2629],[774,2626],[776,2624],[777,2633],[778,2635],[779,2624],[2405,2662],[2410,2676]],"b":[[125,"impl-Debug-for-PublicKey"],[126,"impl-Display-for-PublicKey"],[127,"impl-Debug-for-KeyParsingError"],[128,"impl-Display-for-KeyParsingError"],[129,"impl-Debug-for-SecretKey"],[130,"impl-Display-for-SecretKey"],[132,"impl-Display-for-RelayUrl"],[133,"impl-Debug-for-RelayUrl"],[134,"impl-Display-for-RelayUrlParseError"],[135,"impl-Debug-for-RelayUrlParseError"],[136,"impl-Debug-for-RelayMap"],[137,"impl-Display-for-RelayMap"],[138,"impl-Display-for-RelayNode"],[139,"impl-Debug-for-RelayNode"],[143,"impl-From%3CError%3E-for-KeyParsingError"],[145,"impl-From%3CDecodeError%3E-for-KeyParsingError"],[146,"impl-From%3C%5Bu8;+32%5D%3E-for-SecretKey"],[148,"impl-From%3CSigningKey%3E-for-SecretKey"],[150,"impl-From%3CPublicKey%3E-for-NodeAddr"],[151,"impl-From%3C(PublicKey,+Option%3CRelayUrl%3E,+%26%5BSocketAddr%5D)%3E-for-NodeAddr"],[152,"impl-From%3CNodeTicket%3E-for-NodeAddr"],[153,"impl-From%3CNodeInfo%3E-for-NodeAddr"],[154,"impl-From%3CRemoteInfo%3E-for-NodeAddr"],[239,"impl-TryFrom%3C%26%5Bu8%5D%3E-for-PublicKey"],[240,"impl-TryFrom%3C%26%5Bu8;+32%5D%3E-for-PublicKey"],[602,"impl-Display-for-IrohAttr"],[603,"impl-Debug-for-IrohAttr"],[608,"impl-From%3CTxtAttrs%3CIrohAttr%3E%3E-for-NodeInfo"],[609,"impl-From%3C%26TxtAttrs%3CIrohAttr%3E%3E-for-NodeInfo"],[1385,"impl-Display-for-SendDatagramError"],[1386,"impl-Debug-for-SendDatagramError"],[1387,"impl-Display-for-RetryError"],[1388,"impl-Debug-for-RetryError"],[1390,"impl-Debug-for-ReadToEndError"],[1391,"impl-Display-for-ReadToEndError"],[1392,"impl-Debug-for-ReadError"],[1393,"impl-Display-for-ReadError"],[1394,"impl-Display-for-ResetError"],[1395,"impl-Debug-for-ResetError"],[1396,"impl-Debug-for-ReadExactError"],[1397,"impl-Display-for-ReadExactError"],[1399,"impl-Display-for-WriteError"],[1400,"impl-Debug-for-WriteError"],[1401,"impl-Debug-for-StoppedError"],[1402,"impl-Display-for-StoppedError"],[1404,"impl-Debug-for-VarInt"],[1405,"impl-Display-for-VarInt"],[1411,"impl-Debug-for-ControlMsg"],[1412,"impl-Display-for-ControlMsg"],[1416,"impl-Display-for-ConnectionType"],[1417,"impl-Debug-for-ConnectionType"],[1418,"impl-Debug-for-ClosedStream"],[1419,"impl-Display-for-ClosedStream"],[1420,"impl-Display-for-Source"],[1421,"impl-Debug-for-Source"],[1422,"impl-Display-for-ConnectionError"],[1423,"impl-Debug-for-ConnectionError"],[1430,"impl-Debug-for-ConnectionClose"],[1431,"impl-Display-for-ConnectionClose"],[1432,"impl-Display-for-ApplicationClose"],[1433,"impl-Debug-for-ApplicationClose"],[1434,"impl-Display-for-TransportError"],[1435,"impl-Debug-for-TransportError"],[1436,"impl-Display-for-TransportErrorCode"],[1437,"impl-Debug-for-TransportErrorCode"],[1439,"impl-Display-for-DirectAddrType"],[1440,"impl-Debug-for-DirectAddrType"],[1441,"impl-Display-for-StreamId"],[1442,"impl-Debug-for-StreamId"],[1470,"impl-From%3CResetError%3E-for-ReadError"],[1471,"impl-From%3CConnectionError%3E-for-ReadError"],[1472,"impl-From%3CReadableError%3E-for-ReadError"],[1478,"impl-From%3CClosedStream%3E-for-WriteError"],[1480,"impl-From%3CStoppedError%3E-for-WriteError"],[1481,"impl-From%3CConnectionError%3E-for-WriteError"],[1485,"impl-From%3Cu16%3E-for-VarInt"],[1487,"impl-From%3Cu8%3E-for-VarInt"],[1488,"impl-From%3CStreamId%3E-for-VarInt"],[1489,"impl-From%3Cu32%3E-for-VarInt"],[1502,"impl-From%3CClose%3E-for-ConnectionError"],[1503,"impl-From%3CTransportError%3E-for-ConnectionError"],[1515,"impl-From%3CTransportErrorCode%3E-for-TransportError"],[1516,"impl-From%3CInvalidFrame%3E-for-TransportError"],[1518,"impl-From%3CError%3E-for-TransportError"],[1797,"impl-RecvStream"],[1798,"impl-AsyncRead-for-RecvStream"],[1800,"impl-AsyncWrite-for-SendStream"],[1801,"impl-SendStream"],[1965,"impl-TryFrom%3Cu64%3E-for-VarInt"],[1967,"impl-TryFrom%3Cu128%3E-for-VarInt"],[1968,"impl-TryFrom%3Cusize%3E-for-VarInt"],[2499,"impl-Debug-for-Disconnected"],[2500,"impl-Display-for-Disconnected"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAPAGowADAAAACwAAABAABQAXACsARgAVAGAABwBqACIAjgAAAJAAAACSAAEAlQAAAJcAAQCaAAEAnQAAAJ8AAACmAAgAsgAJAMsAAwDWAAQA3AABAOIAJwANAQcALgEAADABCwA9AQEAQAEBAEQBAQBHAQEAUQEAAFMBAABWAQkAYwEFAGoBAABuAQQAdQEFAHwBAAB/AQYAjQEXAKYBBgCwAQUAvgEAAMABAADCAQsAzwECANUBBADdAQgA5wEDAO0BAADvAQEA9gEAAPgBAAD6AQQAAAIDAAcCBgARAgAAFAIAABYCAAAYAgMAKAIAADACAAA7AgEAPgIQAFACDgBhAgEAZAIAAGoCAQBuAgMAegIAAH4CAACBAgAAgwIMABEDIAA4AwAAOgMAAEoDaQC8AyAA3gNBACQEAwApBAMAMwQAADUEAAA6BAEAQAQKAEwEbgDEBDYA/ARnAGgFQgC4BQAAvAUAAL8FAwDEBQAAxwUAAMkFAQDMBQAAzgUAANAFAgDfBQEA5gUAAOoFAADsBQEA7wUAAPQFAAD8BSAAIwYAACUGBAAuBgAAMgY0AKUGCQC1BggA0gYAANYGAgDhBgEA5gYAAPIGAwD3BgEA+wYKAAcHAgAQBwgAMQcBAEIHBABMBwcAWgcAAFwHAQBfBwEAYgc0AJsHEgCvBwAAsgdcABAINABICDQAjAgDAJEIDwCjCAsAsggLAMIICADQCAMA1QgDAN0ICgDxCAYA+QgHAAMJCAAPCQYAFwkUAC4JCAA7CQAAPgkDAEMJCABOCQEAUgkCAFwJCABnCQMAbAkDAHIJAwB4CQEAhQkHAJMJMgDMCQIA0QkFAN4JBQDlCQYA7wkYAAkKBQAQCgAA","P":[[24,"T"],[40,""],[46,"T"],[52,""],[62,"K"],[66,""],[69,"T"],[74,""],[75,"T"],[86,"D"],[88,"__D"],[91,""],[110,"K"],[125,""],[142,"T"],[143,""],[144,"T"],[145,""],[147,"T"],[148,""],[149,"T"],[150,""],[155,"T"],[156,""],[157,"T"],[158,""],[159,"T"],[161,""],[163,"I,"],[164,""],[165,"T"],[171,""],[175,"R"],[176,""],[177,"H"],[178,"__H"],[179,""],[187,"U"],[195,""],[213,"S"],[215,"__S"],[218,""],[225,"T"],[231,""],[238,"U,T"],[239,""],[241,"U,T"],[243,""],[244,"U,T"],[249,"U"],[257,""],[268,"V"],[277,""],[278,""],[302,""],[303,"T"],[307,""],[308,"T"],[309,""],[311,"T"],[316,""],[321,"T"],[325,""],[328,"U"],[335,""],[342,"T"],[343,"U,T"],[345,"U"],[347,""],[349,"V"],[354,"T"],[358,""],[360,"T"],[361,""],[362,"U"],[363,""],[366,"U,T"],[367,"U"],[368,""],[369,"V"],[372,"T"],[376,""],[378,"T"],[379,""],[380,"U"],[381,""],[385,"U,T"],[386,"U"],[387,""],[388,"V"],[396,""],[399,"T"],[405,""],[408,"T"],[411,""],[414,"T"],[421,""],[428,"T"],[434,""],[437,"U"],[440,""],[449,"T"],[452,"U,T"],[455,"U"],[458,""],[462,"V"],[465,""],[469,"T"],[473,""],[477,"T"],[478,""],[481,"T"],[485,""],[490,"T"],[493,""],[497,"U"],[499,""],[505,"T"],[506,"U,T"],[508,"U"],[510,""],[513,"V"],[517,""],[518,"T"],[520,""],[521,"T"],[523,""],[525,"T"],[526,","],[527,""],[529,"U"],[530,""],[534,""],[535,"U,T"],[536,"U"],[537,""],[538,"V"],[541,""],[550,"N"],[563,""],[572,"T"],[579,""],[580,"T"],[581,""],[583,"K"],[584,"T"],[591,""],[596,"K"],[602,""],[605,"T"],[608,""],[610,"T"],[611,""],[613,"T"],[614,"T,"],[615,""],[616,"T"],[618,"FromStr::Err"],[619,",T"],[620,""],[621,"__H"],[622,""],[625,"U"],[628,"T"],[630,""],[631,"T"],[633,""],[636,"T"],[638,""],[639,"T"],[640,""],[642,"TryFrom::Error"],[643,"U,T"],[646,"U"],[649,""],[652,"V"],[784,""],[826,"D,F"],[827,""],[841,"T"],[947,""],[989,"T"],[1022,""],[1064,"K"],[1068,""],[1073,""],[1075,""],[1099,"T"],[1205,"__D"],[1210,""],[1301,"K"],[1381,""],[1455,"T"],[1463,""],[1464,"T"],[1467,""],[1468,"T"],[1470,""],[1474,"T"],[1475,""],[1476,"T"],[1478,""],[1479,"T"],[1480,""],[1482,"T"],[1483,""],[1484,"T"],[1485,""],[1486,"T"],[1487,""],[1490,"T"],[1502,""],[1504,"T"],[1509,""],[1510,"T"],[1513,""],[1514,"T"],[1515,""],[1517,"T"],[1518,""],[1519,"T"],[1523,""],[1524,"T"],[1564,""],[1572,"__H"],[1577,""],[1645,"U"],[1698,""],[1707,"IntoFuture::IntoFuture"],[1708,""],[1716,"F2,F1"],[1725,""],[1793,"Future::Output"],[1796,""],[1807,"T,S2,F1"],[1816,""],[1847,""],[1848,""],[1857,"__S"],[1862,""],[1889,"T"],[1922,""],[1946,"U,T"],[1965,""],[1966,"U,T"],[1967,""],[1969,"U,T"],[2002,"U"],[2055,"F"],[2063,""],[2119,"V"],[2172,""],[2200,"T"],[2210,""],[2214,"T"],[2218,""],[2229,"T"],[2241,""],[2251,"T"],[2260,""],[2264,"U"],[2268,""],[2331,"T"],[2335,"U,T"],[2339,"U"],[2343,""],[2354,"V"],[2362,""],[2364,",T"],[2365,"T"],[2369,""],[2371,"T"],[2372,""],[2373,"T"],[2377,""],[2383,"T"],[2386,""],[2388,"U"],[2390,""],[2395,"T"],[2396,"U,T"],[2398,"U"],[2400,""],[2402,"V"],[2406,"T"],[2410,""],[2411,"T"],[2415,""],[2421,"T"],[2423,""],[2425,"U"],[2429,""],[2436,"U,T"],[2438,"U"],[2440,""],[2442,"V"],[2450,""],[2453,"T"],[2465,"T,S2,S1"],[2466,"T"],[2472,""],[2475,"T"],[2488,""],[2494,"T"],[2499,""],[2501,"T"],[2512,""],[2518,"T"],[2519,"U"],[2525,""],[2527,"S"],[2528,"F2,F1"],[2530,"T,S2,S1"],[2531,"T"],[2532,"T,Future::Output"],[2534,"T,Stream::Item"],[2535,"T,S2,F1"],[2537,"D,C,MW,S"],[2539,"T"],[2545,""],[2546,"U,T"],[2552,"U"],[2558,"F"],[2560,"S"],[2561,""],[2567,"T"],[2568,"V"],[2574,"T"],[2575,"T,S2,S1"]]}],["iroh_base",{"t":"TPPPGTFIFFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNONNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPGTPFPKPNNNNNNNNNNNNNNNNNNNMNNNNNNNNNMNNNNNNNNNNO","n":["BYTE_SIZE","Decode","DecodeInvalidLength","Key","KeyParsingError","LENGTH","NodeAddr","NodeId","PublicKey","RelayUrl","RelayUrlParseError","SecretKey","Signature","as_bytes","as_ref","borrow","","","","","","","","borrow_mut","","","","","","","clone","","","","","clone_into","","","","","clone_to_uninit","","","","","cmp","","","deref","deserialize","","","","","direct_addresses","","eq","","","","fmt","","","","","","","","","","","","","","","fmt_short","from","","","","","","","","","","","","","","","","","","","","from_bytes","","","from_components","from_parts","from_slice","from_str","","","","generate","hash","","into","","","","","","","is_empty","new","node_id","partial_cmp","","","public","","r_bytes","relay_url","","s_bytes","secret","serialize","","","","","sign","source","","ticket","to_bytes","","","to_owned","","","","","to_string","","","","","","to_vec","try_from","","","","","","","","","","","try_into","","","","","","","type_id","","","","","","","verify","with_direct_addresses","with_relay_url","Encoding","Error","KIND","Kind","NodeTicket","Postcard","Ticket","Verify","borrow","","borrow_mut","","clone","clone_into","clone_to_uninit","deserialize","","eq","fmt","","","","from","","","","","from_bytes","","from_str","into","","new","node_addr","serialize","","source","to_bytes","","to_owned","to_string","","try_from","","try_into","","type_id","","expected"],"q":[[0,"iroh_base"],[181,"iroh_base::ticket"],[229,"iroh_base::ticket::Error"],[230,"iroh_base::key"],[231,"ed25519"],[232,"iroh_base::node_addr"],[233,"iroh_base::relay_url"],[234,"core::cmp"],[235,"core::result"],[236,"serde::de"],[237,"core::net::socket_addr"],[238,"core::iter::traits::iterator"],[239,"core::fmt"],[240,"alloc::string"],[241,"ed25519_dalek::signature"],[242,"ed25519_dalek::verifying"],[243,"ed25519_dalek::errors"],[244,"data_encoding"],[245,"ed25519_dalek::signing"],[246,"core::option"],[247,"iroh_base::ticket::node"],[248,"url"],[249,"url::parser"],[250,"core::iter::traits::collect"],[251,"signature::error"],[252,"rand_core"],[253,"core::hash"],[254,"serde::ser"],[255,"core::error"],[256,"alloc::vec"],[257,"core::any"],[258,"postcard::error"]],"i":"nBl00`b```````002001A`AbAdBn645321064321643216432142116432122642166664455332110046666445553332222110064362664313416453210222421436226364321350`6636432164531066644453321064532106453210422El`Ej1`1`1Db202000100002200222100020010210002020202F`","f":"`````````````{{{d{b}}}{{d{{h{f}}}}}}{{{d{b}}}{{d{{j{f}}}}}}{d{{d{c}}}{}}2000000{{{d{l}}}{{d{lc}}}{}}000000{{{d{n}}}n}{{{d{b}}}b}{{{d{A`}}}A`}{{{d{Ab}}}Ab}{{{d{Ad}}}Ad}{{d{d{lc}}}Af{}}0000{{df}Af}0000{{{d{b}}{d{b}}}Ah}{{{d{Ab}}{d{Ab}}}Ah}{{{d{Ad}}{d{Ad}}}Ah}{{{d{Ad}}}{{d{c}}}{}}{c{{Aj{n}}}Al}{c{{Aj{b}}}Al}{c{{Aj{A`}}}Al}{c{{Aj{Ab}}}Al}{c{{Aj{Ad}}}Al}{{{d{Ab}}}{{`{{Bb{}{{An{{d{B`}}}}}}}}}}`{{{d{n}}{d{n}}}Bd}{{{d{b}}{d{b}}}Bd}{{{d{Ab}}{d{Ab}}}Bd}{{{d{Ad}}{d{Ad}}}Bd}{{{d{n}}{d{lBf}}}{{Aj{AfBh}}}}000{{{d{b}}{d{lBf}}}Bj}0{{{d{Bl}}{d{lBf}}}Bj}0{{{d{A`}}{d{lBf}}}Bj}0{{{d{Ab}}{d{lBf}}}Bj}{{{d{Ad}}{d{lBf}}}Bj}0{{{d{Bn}}{d{lBf}}}Bj}0{{{d{b}}}C`}{cc{}}{{{d{{h{f}}}}}n}{{{h{f}}}n}{Cbn}3{Cdb}4{CfBl}{ChBl}{{{h{f}}}A`}7{CjA`}{{{Cn{b{Cl{Ad}}{d{{j{B`}}}}}}}Ab}{D`Ab}{DbAb};{DdAd}<{DfBn}=<{{{d{{h{f}}}}}{{Aj{bCf}}}}{{{d{{h{f}}}}}A`}{{{h{f}}{h{f}}}n}{{b{Cl{Ad}}c}Ab{{Dh{}{{An{B`}}}}}}{{{d{{j{f}}}}}{{Aj{nDj}}}}{{{d{Dl}}}{{Aj{nDj}}}}{{{d{Dl}}}{{Aj{bc}}}{}}{{{d{Dl}}}{{Aj{A`c}}}{}}{{{d{Dl}}}{{Aj{Adc}}}{}}{cA`Dn}{{{d{b}}{d{lc}}}AfE`}{{{d{Ad}}{d{lc}}}AfE`}{{}c{}}000000{{{d{Ab}}}Bd}{bAb}`{{{d{b}}{d{b}}}{{Cl{Ah}}}}{{{d{Ab}}{d{Ab}}}{{Cl{Ah}}}}{{{d{Ad}}{d{Ad}}}{{Cl{Ah}}}}{{{d{b}}}Cd}{{{d{A`}}}b}{{{d{n}}}{{d{{h{f}}}}}}{{{d{Ab}}}{{Cl{{d{Ad}}}}}}`1{{{d{A`}}}{{d{Cj}}}}{{{d{n}}c}AjEb}{{{d{b}}c}AjEb}{{{d{A`}}c}AjEb}{{{d{Ab}}c}AjEb}{{{d{Ad}}c}AjEb}{{{d{A`}}{d{{j{f}}}}}n}{{{d{Bl}}}{{Cl{{d{Ed}}}}}}{{{d{Bn}}}{{Cl{{d{Ed}}}}}}`{{{d{n}}}{{h{f}}}}0{{{d{A`}}}{{h{f}}}}{dc{}}0000{dC`}00000{{{d{n}}}{{Ef{f}}}}{c{{Aj{e}}}{}{}}{{{d{{j{f}}}}}{{Aj{nDj}}}}{{{d{{j{f}}}}}{{Aj{bc}}}{}}{{{d{{h{f}}}}}{{Aj{bc}}}{}}333{{{d{{j{f}}}}}{{Aj{A`c}}}{}}444{{}{{Aj{c}}}{}}000000{dEh}000000{{{d{b}}{d{{j{f}}}}{d{n}}}{{Aj{AfCf}}}}{{Abc}Ab{{Dh{}{{An{B`}}}}}}{{AbAd}Ab}````````{d{{d{c}}}{}}0{{{d{l}}}{{d{lc}}}{}}0{{{d{Db}}}Db}{{d{d{lc}}}Af{}}{{df}Af}{{{d{Dl}}}{{Aj{EjEl}}}}{c{{Aj{Db}}}Al}{{{d{Db}}{d{Db}}}Bd}{{{d{Db}}{d{lBf}}}Bj}0{{{d{El}}{d{lBf}}}Bj}0{cc{}}{AbDb}1{ChEl}{EnEl}{{{d{{j{f}}}}}{{Aj{EjEl}}}}{{{d{{j{f}}}}}{{Aj{DbEl}}}}{{{d{Dl}}}{{Aj{Dbc}}}{}}{{}c{}}06{{{d{Db}}}{{d{Ab}}}}{{{d{Ej}}}C`}{{{d{Db}}c}AjEb}{{{d{El}}}{{Cl{{d{Ed}}}}}}{{{d{Ej}}}{{Ef{f}}}}{{{d{Db}}}{{Ef{f}}}}{dc{}}{dC`}0{c{{Aj{e}}}{}{}}0{{}{{Aj{c}}}{}}0{dEh}0`","D":"Il","p":[[5,"PublicKey",0,230],[1,"reference",null,null,1],[1,"u8"],[1,"array"],[1,"slice"],[0,"mut"],[5,"Signature",0,231],[5,"SecretKey",0,230],[5,"NodeAddr",0,232],[5,"RelayUrl",0,233],[1,"unit"],[6,"Ordering",234],[6,"Result",235,null,1],[10,"Deserializer",236],[17,"Item"],[6,"SocketAddr",237],[10,"Iterator",238],[1,"bool"],[5,"Formatter",239],[5,"Error",239],[8,"Result",239],[6,"KeyParsingError",0,230],[5,"RelayUrlParseError",0,233],[5,"String",240],[5,"InternalSignature",241],[5,"VerifyingKey",242],[8,"SignatureError",243],[5,"DecodeError",244],[5,"SigningKey",245],[6,"Option",246,null,1],[1,"tuple",null,null,1],[8,"NodeId",0,230],[5,"NodeTicket",181,247],[5,"Url",248],[6,"ParseError",249],[10,"IntoIterator",250],[5,"Error",251],[1,"str"],[10,"CryptoRngCore",252],[10,"Hasher",253],[10,"Serializer",254],[10,"Error",255],[5,"Vec",256],[5,"TypeId",257],[10,"Ticket",181],[6,"Error",181],[6,"Error",258],[15,"Kind",229]],"r":[[4,230],[6,232],[7,230],[8,230],[9,233],[10,233],[11,230],[12,231],[185,247]],"b":[[60,"impl-Debug-for-Signature"],[61,"impl-Display-for-Signature"],[62,"impl-LowerHex-for-Signature"],[63,"impl-UpperHex-for-Signature"],[64,"impl-Display-for-PublicKey"],[65,"impl-Debug-for-PublicKey"],[66,"impl-Debug-for-KeyParsingError"],[67,"impl-Display-for-KeyParsingError"],[68,"impl-Display-for-SecretKey"],[69,"impl-Debug-for-SecretKey"],[71,"impl-Display-for-RelayUrl"],[72,"impl-Debug-for-RelayUrl"],[73,"impl-Debug-for-RelayUrlParseError"],[74,"impl-Display-for-RelayUrlParseError"],[77,"impl-From%3C%26%5Bu8;+ed25519::::SignatureBytes::%7Bconstant%230%7D%5D%3E-for-Signature"],[78,"impl-From%3C%5Bu8;+ed25519::::SignatureBytes::%7Bconstant%230%7D%5D%3E-for-Signature"],[79,"impl-From%3CInternalSignature%3E-for-Signature"],[83,"impl-From%3CError%3E-for-KeyParsingError"],[84,"impl-From%3CDecodeError%3E-for-KeyParsingError"],[85,"impl-From%3C%5Bu8;+32%5D%3E-for-SecretKey"],[87,"impl-From%3CSigningKey%3E-for-SecretKey"],[88,"impl-From%3C(PublicKey,+Option%3CRelayUrl%3E,+%26%5BSocketAddr%5D)%3E-for-NodeAddr"],[89,"impl-From%3CPublicKey%3E-for-NodeAddr"],[90,"impl-From%3CNodeTicket%3E-for-NodeAddr"],[138,"impl-SignatureEncoding-for-Signature"],[139,"impl-Signature"],[155,"impl-TryFrom%3C%26%5Bu8%5D%3E-for-PublicKey"],[156,"impl-TryFrom%3C%26%5Bu8;+32%5D%3E-for-PublicKey"],[199,"impl-Debug-for-NodeTicket"],[200,"impl-Display-for-NodeTicket"],[201,"impl-Display-for-Error"],[202,"impl-Debug-for-Error"],[206,"impl-From%3CDecodeError%3E-for-Error"],[207,"impl-From%3CError%3E-for-Error"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAJgAFgAPACcAOQASAE4AAgBSAAAAVAACAFgAAgBdAAAAXwAAAGcAAwBsAAEAeAACAIIABACIAAEAiwAAAI4ACgCaABgAvgAGAMYABQDPAAEA0gABANkAAQDcAAkA","P":[[15,"T"],[16,""],[17,"T"],[30,""],[35,"T"],[40,""],[48,"Deref::Target"],[49,"D"],[52,"__D"],[54,""],[76,"T"],[77,""],[80,"T"],[81,""],[82,"T"],[83,""],[86,"T"],[87,""],[91,"T"],[92,""],[93,"T"],[94,""],[95,"T"],[96,""],[100,""],[101,""],[103,"FromStr::Err"],[106,"R"],[107,"H"],[108,"__H"],[109,"U"],[116,""],[129,"S"],[132,"__S"],[134,""],[141,"T"],[146,""],[153,"U,T"],[154,""],[155,"TryFrom::Error"],[157,"U,T"],[160,"TryFrom::Error"],[161,"U,T"],[164,"U"],[171,""],[179,""],[180,""],[189,"T"],[193,""],[194,"T"],[195,""],[197,"D"],[198,""],[203,"T"],[204,""],[205,"T"],[206,""],[210,"FromStr::Err"],[211,"U"],[213,""],[216,"S"],[217,""],[220,"T"],[221,""],[223,"U,T"],[225,"U"],[227,""]]}],["iroh_bench",{"t":"FGGGPPPFPPPPNNNNNNNNNNNNNNNNHONNNNNNNNNNNNHNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNONNNNNCOONCOHCCNOONNNNNNNNNNNNNNNNNNNNNONNNNNOSHHHHHHSHHHHHHFNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFONNNNNNOOOONNNNNNNNNNNOONNNNNNNNNNNNNNONOOOHOOONNNNNNOONNNNNN","n":["ClientStats","Commands","ConnectionSelector","EndpointSelector","Iroh","","","Opt","Quinn","","","S2n","__clone_box","","augment_args","augment_args_for_update","augment_subcommands","augment_subcommands_for_update","borrow","","","","","borrow_mut","","","","","client_handler","clients","clone","","clone_into","","clone_to_uninit","","close","","command","","command_for_update","","configure_tracing_subscriber","default","deref","","","","","deref_mut","","","","","download_size","drop","","","","","fmt","","from","","","","","from_arg_matches","","from_arg_matches_mut","","from_ref","","group_id","has_subcommand","init","","","","","initial_mtu","into","","","","","iroh","max_streams","metrics","print","quinn","read_unordered","rt","s2n","stats","","","streams","to_owned","","try_from","","","","","try_into","","","","","type_id","","","","","update_from_arg_matches","","update_from_arg_matches_mut","","upload_size","vzip","","","","","with_relay","ALPN","client","connect_client","handle_client_stream","server","server_endpoint","transport_config","ALPN","client","connect_client","handle_client_stream","server","server_endpoint","transport_config","Opt","__clone_box","augment_args","augment_args_for_update","borrow","borrow_mut","clone","clone_into","clone_to_uninit","command","command_for_update","deref","deref_mut","drop","fmt","from","from_arg_matches","from_arg_matches_mut","from_ref","group_id","init","into","to_owned","try_from","try_into","type_id","update_from_arg_matches","update_from_arg_matches_mut","vzip","Stats","StreamStats","TransferResult","avg_chunk_size","borrow","","","borrow_mut","","","chunk_size","chunk_time","chunks","","default","","deref","","","deref_mut","","","drop","","","duration","duration_hist","fmt","","","from","","","init","","","into","","","new","print","size","stream_finished","stream_stats","streams","throughput","throughput_bps","throughput_hist","total_duration","total_size","try_from","","","try_into","","","ttfb","ttfb_hist","type_id","","","vzip","",""],"q":[[0,"iroh_bench"],[126,"iroh_bench::iroh"],[133,"iroh_bench::quinn"],[140,"iroh_bench::s2n"],[169,"iroh_bench::stats"],[233,"dyn_clone::sealed"],[234,"clap_builder::builder::command"],[235,"anyhow"],[236,"core::fmt"],[237,"clap_builder::parser::matches::arg_matches"],[238,"clap_builder"],[239,"core::result"],[240,"clap_builder::util::id"],[241,"core::option"],[242,"tokio::runtime::runtime"],[243,"core::any"],[244,"iroh_base::node_addr"],[245,"iroh_base::relay_url"],[246,"iroh::endpoint"],[247,"iroh_quinn::connection"],[248,"iroh_quinn_proto::config"],[249,"core::net::socket_addr"],[250,"rustls_pki_types"],[251,"iroh_quinn::endpoint"],[252,"core::time"]],"i":"````lnAf`21000A`00113210Ab43210`1212121432121`0432104321014321021432102121211243210143210`110`1```3112143210432104321021211432101```````````````E`000000000000000000000000000```DbEbEd2102000210102102102201021021021022121112`01110210220102102","f":"````````````{{bd}f}0{hh}000{b{{b{c}}}{}}0000{{{b{j}}}{{b{jc}}}{}}0000{{lnA`}{{Ad{Ab}}}}`{{{b{Af}}}Af}{{{b{A`}}}A`}{{b{b{jc}}}f{}}0{{bAh}f}0{l{{Ad{f}}}}{{{b{n}}Aj{b{{Al{Ah}}}}}f}{{}h}000{{}f}{{}Ab}{An{{b{c}}}{}}0000{An{{b{jc}}}{}}0000`{Anf}0000{{{b{Af}}{b{jB`}}}Bb}{{{b{A`}}{b{jB`}}}Bb}{cc{}}0000{{{b{Bd}}}{{Bh{AfBf}}}}{{{b{Bd}}}{{Bh{A`Bf}}}}{{{b{jBd}}}{{Bh{AfBf}}}}{{{b{jBd}}}{{Bh{A`Bf}}}}{{{b{c}}}c{}}0{{}{{Bl{Bj}}}}{{{b{Bn}}}C`}{{}An}0000`{{}c{}}0000```{{{b{Ab}}An}f}``{{}Cb}``{{{b{n}}}f}``{bc{}}0{c{{Bh{e}}}{}{}}0000{{}{{Bh{c}}}{}}0000{bCd}0000{{{b{jAf}}{b{Bd}}}{{Bh{fBf}}}}{{{b{jA`}}{b{Bd}}}{{Bh{fBf}}}}{{{b{jAf}}{b{jBd}}}{{Bh{fBf}}}}{{{b{jA`}}{b{jBd}}}{{Bh{fBf}}}}`{{}c{}}0000``{{Cf{Bl{Ch}}A`}{{Ad{Ab}}}}{{Cf{Bl{Ch}}A`}{{Ad{{Cn{CjCl}}}}}}{{{b{Cl}}D`C`}{{Ad{{Cn{DbDb}}}}}}{{CjA`}{{Ad{f}}}}{{{b{Cb}}{b{{Bl{Ch}}}}{b{A`}}}{{Cn{CfCj}}}}{{AnDd}Df}`{{DhDjA`}{{Ad{Ab}}}}{{DhDjA`}{{Ad{{Cn{DlCl}}}}}}5{{DlA`}{{Ad{f}}}}{{{b{Cb}}DjDn{b{A`}}}{{Cn{DhDl}}}}4`{{bd}f}{hh}0{b{{b{c}}}{}}{{{b{j}}}{{b{jc}}}{}}{{{b{E`}}}E`}{{b{b{jc}}}f{}}{{bAh}f}{{}h}0{An{{b{c}}}{}}{An{{b{jc}}}{}}{Anf}{{{b{E`}}{b{jB`}}}Bb}{cc{}}{{{b{Bd}}}{{Bh{E`Bf}}}}{{{b{jBd}}}{{Bh{E`Bf}}}}{{{b{c}}}c{}}{{}{{Bl{Bj}}}}{{}An}{{}c{}}{bc{}}{c{{Bh{e}}}{}{}}{{}{{Bh{c}}}{}}{bCd}{{{b{jE`}}{b{Bd}}}{{Bh{fBf}}}}{{{b{jE`}}{b{jBd}}}{{Bh{fBf}}}}{{}c{}}````{b{{b{c}}}{}}00{{{b{j}}}{{b{jc}}}{}}00````{{}Eb}{{}Ed}{An{{b{c}}}{}}00{An{{b{jc}}}{}}00{Anf}00``{{{b{Eb}}{b{jB`}}}Bb}{{{b{Ed}}{b{jB`}}}Bb}{{{b{Db}}{b{jB`}}}Bb}{cc{}}00{{}An}00{{}c{}}00{{EfD`EfD`}Db}{{{b{Eb}}{b{Bn}}}f}`{{{b{jEb}}Db}f}```{{EfD`}Eh}```{c{{Bh{e}}}{}{}}00{{}{{Bh{c}}}{}}00``{bCd}00{{}c{}}00","D":"Dj","p":[[1,"reference",null,null,1],[5,"Private",233],[1,"unit"],[5,"Command",234],[0,"mut"],[6,"EndpointSelector",0],[6,"ConnectionSelector",0],[5,"Opt",0],[5,"ClientStats",0],[8,"Result",235],[6,"Commands",0],[1,"u8"],[1,"u32"],[1,"slice"],[1,"usize"],[5,"Formatter",236],[8,"Result",236],[5,"ArgMatches",237],[8,"Error",238],[6,"Result",239,null,1],[5,"Id",240],[6,"Option",241,null,1],[1,"str"],[1,"bool"],[5,"Runtime",242],[5,"TypeId",243],[5,"NodeAddr",244],[5,"RelayUrl",245],[5,"Endpoint",246],[5,"Connection",247],[1,"tuple",null,null,1],[1,"u64"],[5,"TransferResult",169],[1,"u16"],[5,"TransportConfig",248],[6,"SocketAddr",249],[5,"CertificateDer",250],[5,"Endpoint",251],[6,"PrivateKeyDer",250],[5,"Opt",140],[5,"Stats",169],[5,"StreamStats",169],[5,"Duration",252],[1,"f64"]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAMQAEgAAABwAHwAXADgABgBEAAwAVwAAAFoAAQBdAAMAYwAUAHkABAB/AAAAggAAAIUAAQCJAAAAjAAPAJ0ABACjACQAywACANEAGAA=","P":[[18,"T"],[28,""],[32,"T"],[34,""],[44,"T"],[55,""],[62,"T"],[67,""],[71,"T"],[73,""],[81,"U"],[89,""],[98,"T"],[100,"U,T"],[105,"U"],[110,""],[120,"V"],[127,""],[144,"T"],[146,""],[147,"T"],[148,""],[151,"T"],[153,""],[155,"T"],[156,""],[158,"T"],[159,""],[161,"U"],[162,"T"],[163,"U,T"],[164,"U"],[165,""],[168,"V"],[173,"T"],[183,""],[185,"T"],[191,""],[199,"T"],[202,""],[205,"U"],[208,""],[219,"U,T"],[222,"U"],[227,""],[230,"V"]]}],["iroh_dns_server",{"t":"FNNNNNNCCNNNNCNNNCNNNCCNNNNNNGFPPFFFNOONNNNNNNNNNNNNNNNNNNNNNNNOOONNNNNNNNNNNOONNNNNNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNOFFFFNNNNONNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNOOOOONNNNNNNNNNNNNNNNNNNNNNNNGPFFFPPGPPPNNNNOONNNNNNNNNNONNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNOOOOOONNNOOOOHNNNOOOOOONNNNNFNNNNNHNNNNNNFNNNNNNONNNONNNNN","n":["ZoneStore","__clone_box","borrow","borrow_mut","clone","clone_into","clone_to_uninit","config","dns","fmt","from","from_ref","get_signed_packet","http","in_memory","insert","into","metrics","new","persistent","resolve","server","state","to_owned","try_from","try_into","type_id","vzip","with_mainline_fallback","BootstrapOption","Config","Custom","Default","MainlineConfig","MetricsConfig","StoreConfig","__clone_box","bind_addr","bootstrap","borrow","","","","","borrow_mut","","","","","clone","clone_into","clone_to_uninit","data_dir","default","","","","deserialize","","","","","disabled","","dns","enabled","fmt","","","","","from","","","","","from_ref","http","https","into","","","","","load","mainline","metrics","pkarr_put_rate_limit","serialize","","","","","signed_packet_store_path","to_owned","try_from","","","","","try_into","","","","","type_id","","","","","vzip","","","","","zone_store","DnsConfig","DnsHandler","DnsServer","Handle","__clone_box","","","answer_request","bind_addr","borrow","","","","borrow_mut","","","","clone","","","clone_into","","","clone_to_uninit","","","default_soa","default_ttl","deserialize","fmt","","","from","","","","from_ref","","","handle_request","into","","","","local_addr","new","origins","port","rr_a","rr_aaaa","rr_ns","run_until_done","send_response","serialize","shutdown","spawn","to_owned","","","try_from","","","","try_into","","","","type_id","","","","vzip","","","","CertMode","Disabled","HttpConfig","HttpServer","HttpsConfig","LetsEncrypt","Manual","RateLimitConfig","SelfSigned","Simple","Smart","__clone_box","","","","bind_addr","","borrow","","","","","borrow_mut","","","","","cert_mode","clone","","","","clone_into","","","","clone_to_uninit","","","","default","","deserialize","","","","domains","eq","equivalent","","","fmt","","","","","from","","","","","from_ref","","","","http_addr","https_addr","into","","","","","letsencrypt_contact","letsencrypt_prod","port","","run_until_done","serialize","","","","shutdown","spawn","to_owned","","","","to_string","try_from","","","","","try_into","","","","","type_id","","","","","vzip","","","","","Metrics","__clone_box","borrow","borrow_mut","clone","clone_into","clone_to_uninit","default","dns_lookup_error","dns_lookup_notfound","dns_lookup_success","dns_requests","dns_requests_https","dns_requests_udp","fmt","from","from_ref","http_requests","http_requests_duration_ms","http_requests_error","http_requests_success","init_metrics","into","iter","name","pkarr_publish_noop","pkarr_publish_update","store_packets_expired","store_packets_inserted","store_packets_removed","store_packets_updated","to_owned","try_from","try_into","type_id","vzip","Server","borrow","borrow_mut","from","into","run_until_error","run_with_config_until_ctrl_c","shutdown","spawn","try_from","try_into","type_id","vzip","AppState","__clone_box","borrow","borrow_mut","clone","clone_into","clone_to_uninit","dns_handler","from","from_ref","into","store","to_owned","try_from","try_into","type_id","vzip"],"q":[[0,"iroh_dns_server"],[29,"iroh_dns_server::config"],[116,"iroh_dns_server::dns"],[191,"iroh_dns_server::http"],[299,"iroh_dns_server::metrics"],[335,"iroh_dns_server::server"],[348,"iroh_dns_server::state"],[365,"dyn_clone::sealed"],[366,"iroh_dns_server::store"],[367,"core::fmt"],[368,"pkarr::signed_packet"],[369,"core::option"],[370,"anyhow"],[371,"std::path"],[372,"core::convert"],[373,"hickory_proto::rr::domain::name"],[374,"hickory_proto::rr::record_type"],[375,"hickory_proto::rr::rr_set"],[376,"alloc::sync"],[377,"core::result"],[378,"core::any"],[379,"serde::de"],[380,"serde::ser"],[381,"hickory_server::server::request_handler"],[382,"bytes::bytes"],[383,"core::future::future"],[384,"alloc::boxed"],[385,"core::pin"],[386,"hickory_server::server::response_handler"],[387,"core::net::socket_addr"],[388,"hickory_server::authority::message_response"],[389,"hickory_proto::rr::resource"],[390,"core::iter::traits::iterator"],[391,"core::marker"],[392,"iroh_dns_server::http::rate_limiting"],[393,"iroh_dns_server::http::tls"],[394,"alloc::string"],[395,"alloc::vec::into_iter"]],"i":"`j00000``0000`000`000``000000``Bj0```BlCfCbC`3214032143330031403214220103214032143000321400000321403032140321403214032140````D`CjDb12Dl32103213213213213333210321321203210233333013003210321032103210321`Ej```El0`01110EnF`10Fd432104321143214321432144432113333433210432143210004321112104321004321304321043210432104321`Fj0000000000000000000`00000000000000`Gd0000`000000`Ff000000000000000","f":"`{{bd}f}{b{{b{c}}}{}}{{{b{h}}}{{b{hc}}}{}}{{{b{j}}}j}{{b{b{hc}}}f{}}{{bl}f}``{{{b{j}}{b{hn}}}A`}{cc{}}{{{b{c}}}c{}}{{{b{j}}{b{`}}}{{Af{{Ad{Ab}}}}}}```{{}c{}}```{{{b{j}}{b{`}}{b{An}}B`}{{Af{{Ad{{Bd{Bb}}}}}}}}``{bc{}}{c{{Bf{e}}}{}{}}{{}{{Bf{c}}}{}}{bBh}{{}c{}}{{jBj}j}```````{{bd}f}``{b{{b{c}}}{}}0000{{{b{h}}}{{b{hc}}}{}}0000{{{b{Bl}}}Bl}{{b{b{hc}}}f{}}{{bl}f}{{}{{Af{Bn}}}}{{}C`}{{}Bl}{{}Cb}{{}Bj}{c{{Bf{C`}}}Cd}{c{{Bf{Bl}}}Cd}{c{{Bf{Cf}}}Cd}{c{{Bf{Cb}}}Cd}{c{{Bf{Bj}}}Cd}{{}Cf}```{{{b{C`}}{b{hn}}}A`}{{{b{Bl}}{b{hn}}}A`}{{{b{Cf}}{b{hn}}}A`}{{{b{Cb}}{b{hn}}}A`}{{{b{Bj}}{b{hn}}}A`}{cc{}}0000{{{b{c}}}c{}}``{{}c{}}0000{c{{Af{C`}}}{{Al{Aj}}}}```{{{b{C`}}c}BfCh}{{{b{Bl}}c}BfCh}{{{b{Cf}}c}BfCh}{{{b{Cb}}c}BfCh}{{{b{Bj}}c}BfCh}{{}{{Af{Bn}}}}{bc{}}{c{{Bf{e}}}{}{}}0000{{}{{Bf{c}}}{}}0000{bBh}0000{{}c{}}0000`````{{bd}f}00{{{b{Cj}}Cl}{{Af{Cn}}}}`{b{{b{c}}}{}}000{{{b{h}}}{{b{hc}}}{}}000{{{b{D`}}}D`}{{{b{Cj}}}Cj}{{{b{Db}}}Db}{{b{b{hc}}}f{}}00{{bl}f}00``{c{{Bf{D`}}}Cd}{{{b{D`}}{b{hn}}}A`}{{{b{Cj}}{b{hn}}}A`}{{{b{Db}}{b{hn}}}A`}{cc{}}000{{{b{c}}}c{}}00{{{b{Cj}}{b{Cl}}c}{{Dh{{Df{Dd}}}}}Dj}{{}c{}}000{{{b{Dl}}}Dn}{{j{b{D`}}}{{Af{Cj}}}}`````{Dl{{Af{f}}}}{{{b{hDb}}{E`{cegi}}}{{Dh{{Df{Dd}}}}}{{Ef{}{{Eb{{b{Ed}}}}}}Eh}{{Ef{}{{Eb{{b{Ed}}}}}}Eh}{{Ef{}{{Eb{{b{Ed}}}}}}Eh}{{Ef{}{{Eb{{b{Ed}}}}}}Eh}}{{{b{D`}}c}BfCh}2{{D`Cj}{{Af{Dl}}}}{bc{}}00{c{{Bf{e}}}{}{}}000{{}{{Bf{c}}}{}}000{bBh}000{{}c{}}000```````````{{bd}f}000``{b{{b{c}}}{}}0000{{{b{h}}}{{b{hc}}}{}}0000`{{{b{Ej}}}Ej}{{{b{El}}}El}{{{b{En}}}En}{{{b{F`}}}F`}{{b{b{hc}}}f{}}000{{bl}f}000{{}{{b{Ej}}}}{{}Ej}{c{{Bf{Ej}}}Cd}{c{{Bf{El}}}Cd}{c{{Bf{En}}}Cd}{c{{Bf{F`}}}Cd}`{{{b{El}}{b{El}}}Ah}{{b{b{c}}}Ah{}}00{{{b{Ej}}{b{hn}}}A`}{{{b{El}}{b{hn}}}A`}{{{b{El}}{b{hn}}}{{Bf{fFb}}}}{{{b{En}}{b{hn}}}A`}{{{b{F`}}{b{hn}}}A`}{cc{}}0000{{{b{c}}}c{}}000{{{b{Fd}}}{{Ad{Dn}}}}0{{}c{}}0000````{Fd{{Af{f}}}}{{{b{Ej}}c}BfCh}{{{b{El}}c}BfCh}{{{b{En}}c}BfCh}{{{b{F`}}c}BfCh}4{{{Ad{En}}{Ad{F`}}EjFf}{{Af{Fd}}}}{bc{}}000{bFh}{c{{Bf{e}}}{}{}}0000{{}{{Bf{c}}}{}}0000{bBh}0000{{}c{}}0000`{{bd}f}{b{{b{c}}}{}}{{{b{h}}}{{b{hc}}}{}}{{{b{Fj}}}Fj}{{b{b{hc}}}f{}}{{bl}f}{{}Fj}``````{{{b{Fj}}{b{hn}}}A`}{cc{}}{{{b{c}}}c{}}````{{}f}{{}c{}}{{{b{Fj}}}{{Gb{{G`{{b{Fl}}{b{Fn}}}}}}}}{{}{{b{Fl}}}}``````{bc{}}{c{{Bf{e}}}{}{}}{{}{{Bf{c}}}{}}{bBh}{{}c{}}`{b{{b{c}}}{}}{{{b{h}}}{{b{hc}}}{}}<9{Gd{{Af{f}}}}{C`{{Af{f}}}}1{{C`j}{{Af{Gd}}}}8765`{{bd}f}54{{{b{Ff}}}Ff}{{b{b{hc}}}f{}}{{bl}f}`{cc{}}{{{b{c}}}c{}}{{}c{}}`{bc{}}{c{{Bf{e}}}{}{}}{{}{{Bf{c}}}{}}{bBh}{{}c{}}","D":"Oj","p":[[1,"reference",null,null,1],[5,"Private",365],[1,"unit"],[0,"mut"],[5,"ZoneStore",0,366],[1,"u8"],[5,"Formatter",367],[8,"Result",367],[5,"SignedPacket",368],[6,"Option",369,null,1],[8,"Result",370],[1,"bool"],[5,"Path",371],[10,"AsRef",372],[5,"Name",373],[6,"RecordType",374],[5,"RecordSet",375],[5,"Arc",376,null,1],[6,"Result",377,null,1],[5,"TypeId",378],[6,"BootstrapOption",29],[5,"StoreConfig",29],[5,"PathBuf",371],[5,"Config",29],[5,"MainlineConfig",29],[10,"Deserializer",379],[5,"MetricsConfig",29],[10,"Serializer",380],[5,"DnsHandler",116],[5,"Request",381],[5,"Bytes",382],[5,"DnsConfig",116],[5,"Handle",116],[10,"Future",383,null,1],[5,"Box",384,null,1],[5,"Pin",385],[10,"ResponseHandler",386],[5,"DnsServer",116],[6,"SocketAddr",387],[5,"MessageResponse",388],[17,"Item"],[5,"Record",389],[10,"Iterator",390],[10,"Send",391],[6,"RateLimitConfig",191,392],[6,"CertMode",191,393],[5,"HttpConfig",191],[5,"HttpsConfig",191],[5,"Error",367],[5,"HttpServer",191],[5,"AppState",348],[5,"String",394],[5,"Metrics",299],[1,"str"],[10,"Any",378],[1,"tuple",null,null,1],[5,"IntoIter",395],[5,"Server",335]],"r":[[0,366],[191,393],[198,392]],"b":[[231,"impl-Default-for-%26RateLimitConfig"],[232,"impl-Default-for-RateLimitConfig"],[243,"impl-Debug-for-CertMode"],[244,"impl-Display-for-CertMode"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAPAAIAACAAUACgAAAAwAAAAYAAQAJQAAACgADAA2AAgAQwAEAE0AAABZAAQAXwAUAHkAAgB+ABAAkQADAJkAAwCpAAEArQASAMsAAwDRAAkA3AARAO8ACAD9AAMADQEDABMBGAAtAQ0APAEEAEMBDABRAQEAWQEDAF4BBQBmAQAAaQEEAA==","P":[[2,"T"],[4,""],[5,"T"],[6,""],[10,"T"],[12,""],[16,"U"],[18,""],[19,""],[20,""],[23,"T"],[24,"U,T"],[25,"U"],[26,""],[27,"V"],[28,""],[39,"T"],[49,""],[50,"T"],[51,""],[57,"__D"],[62,""],[71,"T"],[79,"U"],[84,""],[88,"__S"],[93,""],[94,"T"],[95,"U,T"],[100,"U"],[105,""],[110,"V"],[120,""],[125,"T"],[133,""],[136,"T"],[139,""],[144,"__D"],[145,""],[148,"T"],[155,"R"],[156,"U"],[160,""],[168,",,,"],[169,"__S"],[170,""],[172,"T"],[175,"U,T"],[179,"U"],[183,""],[187,"V"],[202,""],[208,"T"],[219,""],[223,"T"],[227,""],[233,"__D"],[238,""],[239,"K"],[242,""],[247,"T"],[256,""],[258,"U"],[267,""],[268,"__S"],[272,""],[274,"T"],[278,""],[279,"U,T"],[284,"U"],[289,""],[294,"V"],[300,""],[301,"T"],[303,""],[304,"T"],[305,""],[314,"T"],[320,""],[321,"U"],[322,""],[330,"T"],[331,"U,T"],[332,"U"],[333,""],[334,"V"],[336,"T"],[339,"U"],[340,""],[344,"U,T"],[345,"U"],[346,""],[347,"V"],[349,""],[350,"T"],[352,""],[353,"T"],[354,""],[356,"T"],[358,"U"],[360,"T"],[361,"U,T"],[362,"U"],[363,""],[364,"V"]]}],["iroh_net_report",{"t":"FFFFFFFNHNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNOOONNNOONNNNNNNNNNNNNNOOOOOONNOONNHOOONNOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNN","n":["Addr","Client","Metrics","Options","QuicConfig","RelayLatencies","Report","addr","bind_local_stun_socket","borrow","","","","","","","borrow_mut","","","","","","","captive_portal","client_config","clone","","","","","clone_into","","","","","clone_to_uninit","","","","","default","","","","deref","","","","","","","deref_mut","","","","","","","disabled","drop","","","","","","","ep","eq","","equivalent","","","","","","fmt","","","","","","","","from","","","","","","","get_report","get_report_channel","get_report_with_opts","global_v4","global_v6","hair_pinning","https","icmp_v4","icmp_v6","icmpv4","icmpv6","init","","","","","","","into","","","","","","","ipv4","","ipv4_can_send","ipv6","","ipv6_can_send","iter","","mapping_varies_by_dest_ip","mapping_varies_by_dest_ipv6","name","new","os_has_ipv6","","portmap_probe","preferred_relay","quic_config","receive_stun_packet","relay_latency","relay_v4_latency","relay_v6_latency","reports","reports_full","stun_packets_dropped","stun_packets_recv_ipv4","stun_packets_recv_ipv6","stun_packets_sent_ipv4","stun_packets_sent_ipv6","stun_v4","stun_v6","to_owned","","","","","to_string","try_from","","","","","","","try_into","","","","","","","type_id","","","","","","","udp","vzip","","","","","",""],"q":[[0,"iroh_net_report"],[180,"netwatch::ip_family"],[181,"tokio_util::sync::cancellation_token"],[182,"netwatch::udp"],[183,"alloc::sync"],[184,"core::option"],[185,"iroh_net_report::metrics"],[186,"iroh_net_report::reportgen"],[187,"core::fmt"],[188,"iroh_relay::relay_map"],[189,"anyhow"],[190,"tokio::sync::oneshot"],[191,"core::any"],[192,"alloc::vec::into_iter"],[193,"iroh_base::relay_url"],[194,"core::time"],[195,"core::iter::traits::iterator"],[196,"portmapper"],[197,"hickory_resolver::resolver"],[198,"bytes::bytes"],[199,"core::net::socket_addr"],[200,"alloc::string"],[201,"core::result"],[202,"iroh_net_report::stun_utils"]],"i":"```````b`AdAfAhAj4B`f543261034543205432054320532154326105432610154326104323332225433261054326106663331113354326105432610433433523356`3331033355555551154320354326105432610543261035432610","f":"```````{{{d{b}}}f}{{hfj}{{A`{{n{l}}}}}}{d{{d{c}}}{}}000000{{{d{Ab}}}{{d{Abc}}}{}}000000``{{{d{Ad}}}Ad}{{{d{Af}}}Af}{{{d{Ah}}}Ah}{{{d{Aj}}}Aj}{{{d{f}}}f}{{d{d{Abc}}}Al{}}0000{{dAn}Al}0000{{}Ad}{{}Ah}{{}Aj}{{}B`}{Bb{{d{c}}}{}}000000{Bb{{d{Abc}}}{}}0000002{BbAl}000000`{{{d{Ah}}{d{Ah}}}Bd}{{{d{Aj}}{d{Aj}}}Bd}{{d{d{c}}}Bd{}}00000{{{d{Ad}}{d{AbBf}}}Bh}{{{d{Af}}{d{AbBf}}}Bh}{{{d{Ah}}{d{AbBf}}}Bh}0{{{d{Aj}}{d{AbBf}}}Bh}{{{d{b}}{d{AbBf}}}Bh}{{{d{B`}}{d{AbBf}}}Bh}{{{d{f}}{d{AbBf}}}Bh}{cc{}}000000{{{d{Abb}}Bj{A`{{n{l}}}}{A`{{n{l}}}}{A`{Af}}}{{Bl{{n{Ah}}}}}}{{{d{Abb}}BjB`}{{Bl{{Bn{{Bl{{n{Ah}}}}}}}}}}{{{d{Abb}}BjB`}{{Bl{{n{Ah}}}}}}```{{B`Bd}B`}00``{{}Bb}000000{{}c{}}000000``````{{{d{Ad}}}{{Cf{{Cd{{d{C`}}{d{Cb}}}}}}}}{{{d{Aj}}}{{`{{Cn{}{{Ch{{Cd{{d{Cj}}Cl}}}}}}}}}}``{{}{{d{C`}}}}{{{A`{D`}}Db}{{Bl{b}}}}{{}Bd}```{{B`{A`{Af}}}B`}{{{d{f}}DdDf}Al}``````````{{B`{A`{{n{l}}}}}B`}0{dc{}}0000{dDh}{c{{Dj{e}}}{}{}}000000{{}{{Dj{c}}}{}}000000{dDl}000000`{{}c{}}000000","D":"Gj","p":[[5,"Client",0],[1,"reference",null,null,1],[5,"Addr",0],[6,"IpFamily",180],[5,"CancellationToken",181],[5,"UdpSocket",182],[5,"Arc",183,null,1],[6,"Option",184,null,1],[0,"mut"],[5,"Metrics",0,185],[5,"QuicConfig",0,186],[5,"Report",0],[5,"RelayLatencies",0],[1,"unit"],[1,"u8"],[5,"Options",0],[1,"usize"],[1,"bool"],[5,"Formatter",187],[8,"Result",187],[5,"RelayMap",188],[8,"Result",189],[5,"Receiver",190],[1,"str"],[10,"Any",191],[1,"tuple",null,null,1],[5,"IntoIter",192],[17,"Item"],[5,"RelayUrl",193],[5,"Duration",194],[10,"Iterator",195],[5,"Client",196],[8,"TokioResolver",197],[5,"Bytes",198],[6,"SocketAddr",199],[5,"String",200],[6,"Result",201,null,1],[5,"TypeId",191]],"r":[[2,185],[4,186],[8,202]],"b":[[77,"impl-Display-for-Report"],[78,"impl-Debug-for-Report"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAHcACgAKAA0AGgAgADwABgBEAA8AZgAGAHoAAAB+AAAAiQAGAJIAGgCuAAYA","P":[[9,"T"],[25,""],[30,"T"],[35,""],[44,"T"],[58,""],[69,"K"],[75,""],[83,"T"],[90,""],[108,"U"],[121,""],[145,"T"],[150,""],[151,"U,T"],[158,"U"],[165,""],[173,"V"]]}],["iroh_relay",{"t":"EFFFNNNNNNCNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNOCCONNCOONNNNNNNNNNNNNNONNNNPPFFGPPPPPPPPPPPPPPPPPPGPPPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOSSSSSSGSSPPNNNNNNNNNNNNNNNNNNNNNNNCCCSHSPGPPPPPPPPGFPPPPPPPPPPPGFPFPPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNCHHNHHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNSSSSSSFNNNNNNNNNNNNNNNGFSPFPGFPFFPFFFFFPFOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNOOOONONNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOONNNNNNNNNNNNNONNNNNNNNNNNNNONNNNNNNNNNNNNONONNONNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNOOOONNOOONNNNNONOOONONOOOOOONNNONNCONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNOOOHHHHHH","n":["MAX_PACKET_SIZE","RelayMap","RelayNode","RelayQuicConfig","borrow","","","borrow_mut","","","client","clone","","","clone_into","","","clone_to_uninit","","","cmp","","compare","","contains_node","default","default_from_node","defaults","deref","","","deref_mut","","","deserialize","","drop","","","empty","eq","","","equivalent","","","","","","","","","fmt","","","","","from","","","from_nodes","from_url","get_node","http","init","","","into","","","is_empty","len","nodes","partial_cmp","","port","protos","quic","","serialize","","server","stun_only","stun_port","to_owned","","","to_string","","try_from","","","try_into","","","type_id","","","url","urls","vzip","","","ActorGone","Build","Client","ClientBuilder","ClientError","Closed","ConnectTimeout","DialIO","Dns","Health","Http","Hyper","IPDisabled","InvalidUrl","KeepAlive","NoLocalAddr","NodeGone","Ping","PingAborted","PingTimeout","Pong","Proxy","Receive","ReceivedMessage","ReceivedPacket","Send","ServerRestarting","UnexpectedStatusCode","Upgrade","WebsocketError","address_family_selector","borrow","","","","borrow_mut","","","","build","clone","clone_into","clone_to_uninit","close","close_for_reconnect","connect","deref","","","","deref_mut","","","","drop","","","","finish_ping","fmt","","","","","from","","","","","","","","init","","","","insecure_skip_cert_verify","into","","","","is_connected","is_prober","key_cache_capacity","local_addr","make_dangerous_client_config","new","note_preferred","protocol","proxy_url","public_key","recv","send","send_pong","server_public_key","server_url","source","start_ping","to_owned","to_string","try_from","","","","try_into","","","","type_id","","","","vzip","","","","data","problem","reconnect_in","remote_node_id","try_for","DEFAULT_HTTPS_PORT","DEFAULT_HTTP_PORT","DEFAULT_KEY_CACHE_CAPACITY","DEFAULT_METRICS_PORT","DEFAULT_RELAY_QUIC_PORT","DEFAULT_STUN_PORT","Protocol","RELAY_PATH","RELAY_PROBE_PATH","Relay","Websocket","borrow","borrow_mut","clone","clone_into","clone_to_uninit","deref","deref_mut","drop","eq","equivalent","","","fmt","from","init","into","parse_header","to_owned","try_from","try_into","type_id","upgrade_header","vzip","disco","relay","stun","MAGIC","looks_like_disco_wrapper","MAX_PACKET_SIZE","AlternateServer","Error","ErrorCode","ErrorResponse","Fingerprint","Indication","InvalidFingerprint","InvalidMessage","MalformedAttrs","MappedAddress","MessageClass","MessageDecoder","MessageIntegrity","MessageIntegritySha256","NoFingerprint","Nonce","NotBinding","NotSuccessResponse","PasswordAlgorithm","PasswordAlgorithms","Realm","Request","Software","StunAttribute","StunDecodeError","SuccessResponse","TransactionId","Unknown","UnknownAttributes","UserHash","UserName","XorMappedAddress","as_alternate_server","as_bytes","as_error_code","as_fingerprint","as_mapped_address","as_message_integrity","as_message_integrity_sha256","as_nonce","as_password_algorithm","as_password_algorithms","as_realm","as_ref","as_software","as_unknown","as_unknown_attributes","as_user_hash","as_user_name","as_xor_mapped_address","attribute_type","borrow","","","","","","borrow_mut","","","","","","clone","","","","clone_into","","","","clone_to_uninit","","","","cmp","compare","decode","default","","deref","","","","","","","deref_mut","","","","","","drop","","","","","","eq","","equivalent","","","","","","expect_alternate_server","expect_error_code","expect_fingerprint","expect_mapped_address","expect_message_integrity","expect_message_integrity_sha256","expect_nonce","expect_password_algorithm","expect_password_algorithms","expect_realm","expect_software","expect_unknown","expect_unknown_attributes","expect_user_hash","expect_user_name","expect_xor_mapped_address","fmt","","","","","","","","","from","","","","","","","","","","","","","","","","","","","","","","","","get_context","hash","init","","","","","","into","","","","","","is","is_alternate_server","is_error_code","is_fingerprint","is_mapped_address","is_message_integrity","is_message_integrity_sha256","is_nonce","is_password_algorithm","is_password_algorithms","is_realm","is_software","is_unknown","is_unknown_attributes","is_user_hash","is_user_name","is_xor_mapped_address","methods","parse_binding_request","parse_response","partial_cmp","request","response","to_owned","","","","to_string","","","try_from","","","","","","","try_into","","","","","","type_id","","","","","","vzip","","","","","","BINDING","RESERVED","SHARED_SECRET","ALPN_QUIC_ADDR_DISC","QUIC_ADDR_DISC_CLOSE_CODE","QUIC_ADDR_DISC_CLOSE_REASON","QuicClient","borrow","borrow_mut","deref","deref_mut","drop","fmt","from","get_addr_and_latency","init","into","new","try_from","try_into","type_id","vzip","CertConfig","ClientConnRateLimit","DEFAULT_CERT_RELOAD_INTERVAL","LetsEncrypt","Limits","Manual","MaybeTlsStreamServer","Metrics","Plain","QuicConfig","RelayConfig","Reloading","ReloadingResolver","Server","ServerConfig","StunConfig","StunMetrics","Tls","TlsConfig","accept_conn_burst","accept_conn_limit","accepts","bad_requests","bind_addr","","borrow","","","","","","","","","","","","","borrow_mut","","","","","","","","","","","","","bytes_per_second","bytes_recv","bytes_sent","cert","certificates","client_rx","clone","","","clone_into","","","clone_to_uninit","","","conns_rx_ratelimited_total","default","","","","deref","","","","","","","","","","","","","","deref_mut","","","","","","","","","","","","","disco_packets_dropped","disco_packets_recv","disco_packets_sent","disconnects","drop","","","","","","","","","","","","","failures","fmt","","","","","","","","","","","","","frames_rx_ratelimited_total","from","","","","","","","","","","","","","got_ping","http_addr","http_bind_addr","http_url","https_addr","https_bind_addr","https_url","init","","","","","","","","","","","","","","into","","","","","","","","","","","","","ipv4_success","ipv6_success","iter","","key_cache_capacity","limits","max_burst_bytes","metrics_addr","name","","other_packets_dropped","other_packets_recv","other_packets_sent","poll_flush","poll_read","poll_shutdown","poll_write","poll_write_vectored","quic","quic_addr","quic_bind_addr","relay","relay_accepts","reload","requests","resolve","send_packets_dropped","send_packets_recv","send_packets_sent","sent_pong","server_config","","shutdown","","spawn","stun","stun_addr","task_handle","testing","tls","to_owned","","","try_from","","","","","","","","","","","","","try_into","","","","","","","","","","","","","type_id","","","","","","","","","","","","","unique_client_keys","unknown_frames","vzip","","","","","","","","","","","","","websocket_accepts","certs","state","quic_config","relay_config","self_signed_tls_certs_and_config","server_config","stun_config","tls_config"],"q":[[0,"iroh_relay"],[103,"iroh_relay::client"],[219,"iroh_relay::client::ReceivedMessage"],[224,"iroh_relay::defaults"],[230,"iroh_relay::http"],[258,"iroh_relay::protos"],[261,"iroh_relay::protos::disco"],[263,"iroh_relay::protos::relay"],[264,"iroh_relay::protos::stun"],[489,"iroh_relay::protos::stun::methods"],[492,"iroh_relay::quic"],[511,"iroh_relay::server"],[786,"iroh_relay::server::CertConfig"],[788,"iroh_relay::server::testing"],[794,"iroh_relay::relay_map"],[795,"core::cmp"],[796,"iroh_base::relay_url"],[797,"core::result"],[798,"serde::de"],[799,"core::fmt"],[800,"anyhow"],[801,"alloc::sync"],[802,"core::convert"],[803,"core::iter::traits::collect"],[804,"core::option"],[805,"core::iter::traits::iterator"],[806,"serde::ser"],[807,"alloc::string"],[808,"core::any"],[809,"core::ops::function"],[810,"core::marker"],[811,"iroh_base::key"],[812,"hickory_resolver::resolver"],[813,"iroh_relay::client::conn"],[814,"tokio_tungstenite_wasm::error"],[815,"http::error"],[816,"hyper::error"],[817,"std::io::error"],[818,"core::net::socket_addr"],[819,"rustls::client::client_conn"],[820,"url"],[821,"bytes::bytes"],[822,"core::error"],[823,"core::time"],[824,"core::future::future"],[825,"http::header::value"],[826,"stun_rs::attributes"],[827,"stun_rs::attributes::stun::alternate_server"],[828,"stun_rs::error"],[829,"stun_rs::types"],[830,"stun_rs::attributes::stun::error_code"],[831,"stun_rs::attributes::stun::fingerprint"],[832,"stun_rs::attributes::stun::mapped_address"],[833,"stun_rs::attributes::stun::message_integrity"],[834,"stun_rs::attributes::stun::message_integrity_sha256"],[835,"stun_rs::attributes::stun::nonce"],[836,"stun_rs::attributes::stun::password_algorithm"],[837,"stun_rs::attributes::stun::password_algorithms"],[838,"stun_rs::attributes::stun::realm"],[839,"stun_rs::attributes::stun::software"],[840,"stun_rs::attributes::unknown"],[841,"stun_rs::attributes::stun::unknown_attributes"],[842,"stun_rs::attributes::stun::user_hash"],[843,"stun_rs::attributes::stun::user_name"],[844,"stun_rs::attributes::stun::xor_mapped_address"],[845,"stun_rs::context"],[846,"stun_rs::message"],[847,"core::hash"],[848,"alloc::vec"],[849,"iroh_quinn::endpoint"],[850,"rustls_pki_types"],[851,"iroh_relay::server::metrics"],[852,"core::default"],[853,"iroh_relay::server::resolver"],[854,"rustls::crypto::signer"],[855,"reloadable_core"],[856,"alloc::vec::into_iter"],[857,"core::pin"],[858,"core::task::wake"],[859,"core::task::poll"],[860,"tokio::io::read_buf"],[861,"std::io"],[862,"rustls::server::server_conn"],[863,"tokio_util::task::abort_on_drop"],[864,"stun_rs"],[865,"stun_rs::methods"]],"i":"````fhj210`2102102101010202`21021010210221022211100022110210222`210210222100``110`112102121021021012210Dh0```0000Df1111010011011`010111Cf12Dd123011222000230123012301023301233333012301123010110`101100001130232301230123012301NjNlNn20`````````Eh000000000000000000000000``````Fn`0Ih10Jb002``22020022212``1`222222Gd33333333303333333If3142In14253014251425142522112142253014253014253042444222555555555555555514225330014222555555555555555553012142530142530`5555555555555555```2``14252301442530142530142530142530```````Jj00000000000000```Ll`0``Lb``1`````0`Kn0KbKdLfLh32L`6KhLd43Lj8Kf;Jn985;43762:1<019920:9819819819984:9855;43762:1<0985;43762:1<09999985;43762:1<08985;43762:1<09985;43762:1<090300209855;43762:1<0985;43762:1<08898331498999;;;;;40249585999962500400`3981985;43762:1<0985;43762:1<0985;43762:1<099985;43762:1<09O`Ob``````","f":"````{b{{b{c}}}{}}00{{{b{d}}}{{b{dc}}}{}}00`{{{b{f}}}f}{{{b{h}}}h}{{{b{j}}}j}{{b{b{dc}}}l{}}00{{bn}l}00{{{b{h}}{b{h}}}A`}{{{b{j}}{b{j}}}A`}{{b{b{c}}}A`{}}0{{{b{f}}{b{Ab}}}Ad}{{}j}{{AbAf}f}`{Ah{{b{c}}}{}}00{Ah{{b{dc}}}{}}00{c{{Aj{h}}}Al}{c{{Aj{j}}}Al}{Ahl}00{{}f}{{{b{f}}{b{f}}}Ad}{{{b{h}}{b{h}}}Ad}{{{b{j}}{b{j}}}Ad}{{b{b{c}}}Ad{}}00000000{{{b{f}}{b{dAn}}}B`}0{{{b{h}}{b{dAn}}}B`}0{{{b{j}}{b{dAn}}}B`}{cc{}}00{e{{Bb{f}}}{{Bf{{Bd{h}}}}}{{Bj{}{{Bh{c}}}}}}{Abf}{{{b{f}}{b{Ab}}}{{Bl{{b{{Bd{h}}}}}}}}`{{}Ah}00{{}c{}}00{{{b{f}}}Ad}{{{b{f}}}Ah}{{{b{f}}}{{`{{Bn{}{{Bh{{b{{Bd{h}}}}}}}}}}}}{{{b{h}}{b{h}}}{{Bl{A`}}}}{{{b{j}}{b{j}}}{{Bl{A`}}}}````{{{b{h}}c}AjC`}{{{b{j}}c}AjC`}```{bc{}}00{bCb}0{c{{Aj{e}}}{}{}}00{{}{{Aj{c}}}{}}00{bCd}00`{{{b{f}}}{{`{{Bn{}{{Bh{{b{Ab}}}}}}}}}}{{}c{}}00``````````````````````````````{{Cfc}Cf{{Cj{}{{Ch{Ad}}}}ClCn}}{b{{b{c}}}{}}000{{{b{d}}}{{b{dc}}}{}}000{{CfD`Db}Dd}{{{b{Df}}}Df}{{b{b{dc}}}l{}}{{bn}l}{Ddl}{{{b{dDd}}}l}{{{b{dDd}}}{{Aj{lDh}}}}{Ah{{b{c}}}{}}000{Ah{{b{dc}}}{}}000{Ahl}000{{{b{dDd}}{Dj{n}}}l}{{{b{Df}}{b{dAn}}}B`}{{{b{Dh}}{b{dAn}}}B`}0{{{b{Dd}}{b{dAn}}}B`}{{{b{Cf}}{b{dAn}}}B`}{cc{}}{DlDh}1{DnDh}{E`Dh}{EbDh}44{{}Ah}000{{CfAd}Cf}{{}c{}}000{{{b{Dd}}}Ad}2{{CfAh}Cf}{{{b{Dd}}}{{Bl{Ed}}}}{{}Ef}{cCf{{Bf{Ab}}}}{{{b{dDd}}Ad}l}{{CfEh}Cf}{{CfEj}Cf}{{{b{Dd}}}El}{{{b{dDd}}}{{Bl{{Aj{DfDh}}}}}}{{{b{dDd}}EnF`}{{Aj{lDh}}}}{{{b{dDd}}{Dj{n}}}{{Aj{lDh}}}}{{CfEl}Cf}{{Cfc}Cf{{Bf{Ab}}}}{{{b{Dh}}}{{Bl{{b{Fb}}}}}}{{{b{dDd}}}{{Aj{{`{{Ff{}{{Ch{{Aj{FdDh}}}}}}ClCn}}Dh}}}}{bc{}}{bCb}{c{{Aj{e}}}{}{}}000{{}{{Aj{c}}}{}}000{bCd}000{{}c{}}000````````````````{b{{b{c}}}{}}{{{b{d}}}{{b{dc}}}{}}{{{b{Eh}}}Eh}{{b{b{dc}}}l{}}{{bn}l}{Ah{{b{c}}}{}}{Ah{{b{dc}}}{}}{Ahl}{{{b{Eh}}{b{Eh}}}Ad}{{b{b{c}}}Ad{}}00{{{b{Eh}}{b{dAn}}}B`}{cc{}}{{}Ah}{{}c{}}{{{b{Fh}}}{{Bl{Eh}}}}{bc{}}{c{{Aj{e}}}{}{}}{{}{{Aj{c}}}{}}{bCd}{{{b{Eh}}}{{b{Fj}}}}{{}c{}}````{{{b{{Fl{n}}}}}Ad}`````````````````````````````````{{{b{Fn}}}{{Aj{{b{G`}}Gb}}}}{{{b{Gd}}}{{b{{Dj{n}}}}}}{{{b{Fn}}}{{Aj{{b{Gf}}Gb}}}}{{{b{Fn}}}{{Aj{{b{Gh}}Gb}}}}{{{b{Fn}}}{{Aj{{b{Gj}}Gb}}}}{{{b{Fn}}}{{Aj{{b{Gl}}Gb}}}}{{{b{Fn}}}{{Aj{{b{Gn}}Gb}}}}{{{b{Fn}}}{{Aj{{b{H`}}Gb}}}}{{{b{Fn}}}{{Aj{{b{Hb}}Gb}}}}{{{b{Fn}}}{{Aj{{b{Hd}}Gb}}}}{{{b{Fn}}}{{Aj{{b{Hf}}Gb}}}}{{{b{Gd}}}{{b{{Fl{n}}}}}}{{{b{Fn}}}{{Aj{{b{Hh}}Gb}}}}{{{b{Fn}}}{{Aj{{b{Hj}}Gb}}}}{{{b{Fn}}}{{Aj{{b{Hl}}Gb}}}}{{{b{Fn}}}{{Aj{{b{Hn}}Gb}}}}{{{b{Fn}}}{{Aj{{b{I`}}Gb}}}}{{{b{Fn}}}{{Aj{{b{Ib}}Gb}}}}{{{b{Fn}}}Id}{b{{b{c}}}{}}00000{{{b{d}}}{{b{dc}}}{}}00000{{{b{If}}}If}{{{b{Ih}}}Ih}{{{b{Gd}}}Gd}{{{b{Fn}}}Fn}{{b{b{dc}}}l{}}000{{bn}l}000{{{b{Gd}}{b{Gd}}}A`}{{b{b{c}}}A`{}}{{{b{If}}{b{{Fl{n}}}}}{{Aj{{Il{IjAh}}In}}}}{{}If}{{}Gd}{Ah{{b{c}}}{}}00{{{b{Gd}}}{{b{{Fl{n}}}}}}111{Ah{{b{dc}}}{}}00000{Ahl}00000{{{b{Ih}}{b{Ih}}}Ad}{{{b{Gd}}{b{Gd}}}Ad}{{b{b{c}}}Ad{}}00000{{{b{Fn}}}{{b{G`}}}}{{{b{Fn}}}{{b{Gf}}}}{{{b{Fn}}}{{b{Gh}}}}{{{b{Fn}}}{{b{Gj}}}}{{{b{Fn}}}{{b{Gl}}}}{{{b{Fn}}}{{b{Gn}}}}{{{b{Fn}}}{{b{H`}}}}{{{b{Fn}}}{{b{Hb}}}}{{{b{Fn}}}{{b{Hd}}}}{{{b{Fn}}}{{b{Hf}}}}{{{b{Fn}}}{{b{Hh}}}}{{{b{Fn}}}{{b{Hj}}}}{{{b{Fn}}}{{b{Hl}}}}{{{b{Fn}}}{{b{Hn}}}}{{{b{Fn}}}{{b{I`}}}}{{{b{Fn}}}{{b{Ib}}}}{{{b{If}}{b{dAn}}}{{Aj{lJ`}}}}{{{b{Ih}}{b{dAn}}}{{Aj{lJ`}}}}{{{b{Gd}}{b{dAn}}}{{Aj{lJ`}}}}0{{{b{Fn}}{b{dAn}}}{{Aj{lJ`}}}}{{{b{Jb}}{b{dAn}}}B`}0{{{b{In}}{b{dAn}}}{{Aj{lJ`}}}}0{cc{}}00{{{b{{Dj{n}}}}}Gd}{{{Dj{n}}}Gd}{H`Fn}{HhFn}{GfFn}{GhFn}{GjFn}{GlFn}8{HjFn}{IbFn}{GnFn}{I`Fn}{HbFn}{HdFn}{HfFn}{HnFn}{HlFn}{G`Fn}{cc{}}0{{{b{If}}}{{Bl{{b{Jd}}}}}}{{{b{Gd}}{b{dc}}}lJf}{{}Ah}00000{{}c{}}00000{{{b{{Fl{n}}}}}Ad}{{{b{Fn}}}Ad}000000000000000`{{{b{{Fl{n}}}}}{{Aj{GdJb}}}}{{{b{{Fl{n}}}}}{{Aj{{Il{GdEd}}Jb}}}}{{{b{Gd}}{b{Gd}}}{{Bl{A`}}}}{Gd{{Jh{n}}}}{{GdEd}{{Jh{n}}}}{bc{}}000{bCb}00{c{{Aj{e}}}{}{}}0{n{{Aj{Ih}}}}1111{{}{{Aj{c}}}{}}00000{bCd}00000{{}c{}}00000```````{b{{b{c}}}{}}{{{b{d}}}{{b{dc}}}{}}{Ah{{b{c}}}{}}{Ah{{b{dc}}}{}}{Ahl}{{{b{Jj}}{b{dAn}}}B`}{cc{}}{{{b{Jj}}Ed{b{Fj}}}{{Bb{{Il{EdFd}}}}}}{{}Ah}{{}c{}}{{JlEf}{{Bb{Jj}}}}?=<;`````````````````````````:::::::::::::9999999999999````{{{b{Jn}}}{{Bl{{Jh{K`}}}}}}`{{{b{Kb}}}Kb}{{{b{Kd}}}Kd}{{{b{Kf}}}Kf}{{b{b{dc}}}l{}}00{{bn}l}00`{{}Kb}{{}Kd}{{}{{Kh{ce}}}{KjKl}{KjKl}}{{}Kn}{Ah{{b{c}}}{}}00{{{b{{L`{c}}}}}{{b{e}}}Cl{}}1111111111{Ah{{b{dc}}}{}}000000000000````{Ahl}000000000000`{{{b{Kb}}{b{dAn}}}B`}{{{b{Kd}}{b{dAn}}}B`}{{{b{{L`{c}}}}{b{dAn}}}B`{KlCl}}{{{b{Lb}}{b{dAn}}}B`}{{{b{{Kh{ce}}}}{b{dAn}}}B`KlKl}{{{b{{Ld{ce}}}}{b{dAn}}}B`KlKl}{{{b{Lf}}{b{dAn}}}B`}{{{b{Lh}}{b{dAn}}}B`}{{{b{{Lj{ce}}}}{b{dAn}}}B`KlKl}{{{b{Kn}}{b{dAn}}}B`}{{{b{Kf}}{b{dAn}}}B`}{{{b{{Ll{ce}}}}{b{dAn}}}B`KlKl}{{{b{Jn}}{b{dAn}}}B`}`{cc{}}000000000000`{{{b{Jn}}}{{Bl{Ed}}}}`{{{b{Jn}}}{{Bl{Ab}}}}1`0{{}Ah}00{{cFd}{{Bb{{L`{c}}}}}{Cl{Mb{}{{Ln{M`}}}}}}1111111111{{}c{}}000000000000``{{{b{Kb}}}{{Mf{{Il{{b{Fj}}{b{Md}}}}}}}}{{{b{Kd}}}{{Mf{{Il{{b{Fj}}{b{Md}}}}}}}}````{{}{{b{Fj}}}}0```{{{Mh{{b{dLb}}}}{b{dMj}}}{{Ml{{Aj{lEb}}}}}}{{{Mh{{b{dLb}}}}{b{dMj}}{b{dMn}}}{{Ml{{N`{l}}}}}}1{{{Mh{{b{dLb}}}}{b{dMj}}{b{{Fl{n}}}}}{{Ml{{Aj{AhEb}}}}}}{{{Mh{{b{dLb}}}}{b{dMj}}{b{{Fl{Nb}}}}}{{Ml{{Aj{AhEb}}}}}}`;```{{{b{{L`{c}}}}}l{Cl{Mb{}{{Ln{M`}}}}}}`{{{b{{L`{c}}}}Nd}{{Bl{{Bd{M`}}}}}{{Mb{}{{Ln{M`}}}}ClKl}}``````{{{L`{c}}}l{Cl{Mb{}{{Ln{M`}}}}}}{Jn{{Bb{l}}}}{{{Kh{ce}}}{{Bb{Jn}}}KlKl}`{{{b{Jn}}}{{Bl{Ed}}}}{{{b{dJn}}}{{b{d{Nf{{Bb{l}}}}}}}}``{bc{}}00{c{{Aj{e}}}{}{}}000000000000{{}{{Aj{c}}}{}}000000000000{bCd}000000000000``{{}c{}}000000000000```{{}Lh}{{}{{Ld{l}}}}{{}{{Il{{Jh{K`}}Nh}}}}{{}{{Kh{l}}}}{{}Lf}{{}{{Lj{l}}}}","D":"BKb","p":[[1,"reference",null,null,1],[0,"mut"],[5,"RelayMap",0,794],[5,"RelayNode",0,794],[5,"RelayQuicConfig",0,794],[1,"unit"],[1,"u8"],[6,"Ordering",795],[5,"RelayUrl",796],[1,"bool"],[1,"u16"],[1,"usize"],[6,"Result",797,null,1],[10,"Deserializer",798],[5,"Formatter",799],[8,"Result",799],[8,"Result",800],[5,"Arc",801,null,1],[10,"Into",802],[17,"Item"],[10,"IntoIterator",803],[6,"Option",804,null,1],[10,"Iterator",805],[10,"Serializer",806],[5,"String",807],[5,"TypeId",808],[5,"ClientBuilder",103],[17,"Output"],[10,"Fn",809],[10,"Send",810],[10,"Sync",810],[5,"SecretKey",811],[8,"TokioResolver",812],[5,"Client",103],[6,"ReceivedMessage",103,813],[6,"ClientError",103],[1,"array"],[6,"Error",814],[5,"Error",815],[5,"Error",816],[5,"Error",817],[6,"SocketAddr",818],[5,"ClientConfig",819],[6,"Protocol",230],[5,"Url",820],[5,"PublicKey",811],[8,"NodeId",811],[5,"Bytes",821],[10,"Error",822],[5,"Duration",823],[10,"Future",824,null,1],[5,"HeaderValue",825],[1,"str"],[1,"slice"],[6,"StunAttribute",264,826],[5,"AlternateServer",827],[5,"StunError",828],[5,"TransactionId",264,829],[5,"ErrorCode",830],[6,"Fingerprint",831],[5,"MappedAddress",832],[6,"MessageIntegrity",833],[6,"MessageIntegritySha256",834],[5,"Nonce",835],[5,"PasswordAlgorithm",836],[5,"PasswordAlgorithms",837],[5,"Realm",838],[5,"Software",839],[5,"Unknown",840],[5,"UnknownAttributes",841],[5,"UserHash",842],[5,"UserName",843],[5,"XorMappedAddress",844],[5,"AttributeType",826],[5,"MessageDecoder",264,845],[6,"MessageClass",264,846],[5,"StunMessage",846],[1,"tuple",null,null,1],[5,"StunDecodeError",264,828],[5,"Error",799],[6,"Error",264],[5,"DecoderContext",845],[10,"Hasher",847],[5,"Vec",848],[5,"QuicClient",492],[5,"Endpoint",849],[5,"Server",511],[5,"CertificateDer",850],[5,"Metrics",511,851],[5,"StunMetrics",511,851],[5,"ClientConnRateLimit",511],[5,"ServerConfig",511],[10,"Default",852],[10,"Debug",799],[5,"Limits",511],[5,"ReloadingResolver",511,853],[6,"MaybeTlsStreamServer",511],[5,"RelayConfig",511],[5,"StunConfig",511],[5,"QuicConfig",511],[5,"TlsConfig",511],[6,"CertConfig",511],[17,"Value"],[5,"CertifiedKey",854],[10,"Loader",855],[10,"Any",808],[5,"IntoIter",856],[5,"Pin",857],[5,"Context",858],[6,"Poll",859],[5,"ReadBuf",860],[8,"Result",817],[5,"IoSlice",861],[5,"ClientHello",862],[5,"AbortOnDropHandle",863],[5,"ServerConfig",862],[15,"ReceivedPacket",219],[15,"Health",219],[15,"ServerRestarting",219],[15,"Manual",786],[15,"LetsEncrypt",786]],"r":[[0,263],[1,794],[2,794],[3,794],[126,813],[274,846],[275,845],[287,826],[288,828],[290,829],[451,864],[489,865],[490,865],[491,865],[513,853],[518,851],[523,853],[527,851]],"b":[[52,"impl-Display-for-RelayMap"],[53,"impl-Debug-for-RelayMap"],[54,"impl-Display-for-RelayNode"],[55,"impl-Debug-for-RelayNode"],[163,"impl-Display-for-ClientError"],[164,"impl-Debug-for-ClientError"],[168,"impl-From%3CError%3E-for-ClientError"],[170,"impl-From%3CError%3E-for-ClientError"],[171,"impl-From%3CError%3E-for-ClientError"],[172,"impl-From%3CError%3E-for-ClientError"],[389,"impl-Debug-for-TransactionId"],[390,"impl-Display-for-TransactionId"],[392,"impl-Display-for-Error"],[393,"impl-Debug-for-Error"],[394,"impl-Debug-for-StunDecodeError"],[395,"impl-Display-for-StunDecodeError"],[399,"impl-From%3C%26%5Bu8;+stun_rs::::types::%7Bimpl%2313%7D::%7Bconstant%230%7D%5D%3E-for-TransactionId"],[400,"impl-From%3C%5Bu8;+stun_rs::::types::%7Bimpl%2314%7D::%7Bconstant%230%7D%5D%3E-for-TransactionId"],[401,"impl-From%3CNonce%3E-for-StunAttribute"],[402,"impl-From%3CSoftware%3E-for-StunAttribute"],[403,"impl-From%3CErrorCode%3E-for-StunAttribute"],[404,"impl-From%3CFingerprint%3E-for-StunAttribute"],[405,"impl-From%3CMappedAddress%3E-for-StunAttribute"],[406,"impl-From%3CMessageIntegrity%3E-for-StunAttribute"],[408,"impl-From%3CUnknown%3E-for-StunAttribute"],[409,"impl-From%3CXorMappedAddress%3E-for-StunAttribute"],[410,"impl-From%3CMessageIntegritySha256%3E-for-StunAttribute"],[411,"impl-From%3CUserName%3E-for-StunAttribute"],[412,"impl-From%3CPasswordAlgorithm%3E-for-StunAttribute"],[413,"impl-From%3CPasswordAlgorithms%3E-for-StunAttribute"],[414,"impl-From%3CRealm%3E-for-StunAttribute"],[415,"impl-From%3CUserHash%3E-for-StunAttribute"],[416,"impl-From%3CUnknownAttributes%3E-for-StunAttribute"],[417,"impl-From%3CAlternateServer%3E-for-StunAttribute"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAMEBMgABAAAABQAFAAwADAAaAAAAHQAKACkAEABBAAIASgABAFAAAQBVAA0AZQACAIcABwCQAAIAlgALAKMABACpAAAAqwACALAAAwDIAAAAygARAOwADAD6AAAA/QADAAIBAAA0AQAAPAEZAFcBAABZARoAhAEIAJABBwCZAQkApgEGAMcBAADKAR8A8QEFAPkBAAD8AQMAGQIZADkCCABDAh4AZgIMAHQCDACWAgIAmgIJALMCAQC5AgEAvgIEAMoCAADZAikABQMMAA==","P":[[4,"T"],[11,""],[14,"T"],[17,""],[22,"K"],[24,""],[28,"T"],[34,"__D"],[36,""],[43,"K"],[52,""],[57,"T"],[60,"I,"],[61,""],[67,"U"],[70,""],[79,"__S"],[84,"T"],[87,""],[89,"U,T"],[92,"U"],[95,""],[100,"V"],[133,"S"],[134,"T"],[142,""],[144,"T"],[145,""],[149,"T"],[157,""],[167,"T"],[168,""],[169,"T"],[170,""],[173,"T"],[175,""],[180,"U"],[184,""],[189,""],[190,""],[198,""],[199,""],[201,"T"],[202,""],[203,"U,T"],[207,"U"],[211,""],[215,"V"],[235,"T"],[237,""],[238,"T"],[239,""],[240,"T"],[242,""],[244,"K"],[247,""],[248,"T"],[249,""],[250,"U"],[251,""],[252,"T"],[253,"U,T"],[254,"U"],[255,""],[257,"V"],[262,""],[315,"T"],[327,""],[331,"T"],[335,""],[340,"K"],[341,""],[344,"T"],[347,""],[348,"T"],[357,""],[365,"K"],[371,""],[396,"T"],[399,""],[407,"T"],[408,""],[418,"T"],[420,""],[421,"__H"],[422,""],[428,"U"],[434,""],[457,"T"],[461,""],[464,"U,T"],[466,""],[467,"U,T"],[471,"U"],[477,""],[483,"V"],[496,"T"],[500,""],[502,"T"],[503,""],[505,"U"],[506,""],[507,"U,T"],[508,"U"],[509,""],[510,"V"],[536,"T"],[566,""],[571,"T"],[574,""],[580,"EC,EA"],[581,""],[582,"T"],[585,"Loader,Deref::Target"],[586,"T"],[613,""],[629,"Loader"],[630,""],[631,"EC,EA"],[633,""],[635,"EC,EA"],[636,""],[638,"EC,EA"],[639,""],[641,"T"],[655,""],[664,"Loader"],[665,""],[675,"U"],[690,""],[711,"Loader"],[721,""],[722,"EC,EA"],[724,""],[728,"T"],[731,"U,T"],[744,"U"],[757,""],[772,"V"],[788,""]]}],["iroh_test",{"t":"FQNNNNCNCNNNNHHHHH","n":["CallOnDrop","assert_eq_hex","borrow","borrow_mut","drop","from","hexdump","into","logging","new","try_from","try_into","type_id","parse_hexdump","print_hexdump","setup","setup_multithreaded","testing_subscriber"],"q":[[0,"iroh_test"],[13,"iroh_test::hexdump"],[15,"iroh_test::logging"],[18,"core::ops::function"],[19,"core::result"],[20,"core::any"],[21,"alloc::vec"],[22,"anyhow"],[23,"alloc::string"],[24,"core::convert"],[25,"tracing_core::dispatcher"],[26,"tracing_core::subscriber"]],"i":"``f000`0`0000`````","f":"``{b{{b{c}}}{}}{{{b{d}}}{{b{dc}}}{}}{{{b{df}}}h}{cc{}}`{{}c{}}`{cfj}{c{{l{e}}}{}{}}{{}{{l{c}}}{}}{bn}{{{b{A`}}}{{Af{{Ad{Ab}}}}}}{{ce}Ah{{Al{{Aj{Ab}}}}}{{Al{{Aj{An}}}}}}{{}B`}{{}h}{{}{{`{Bb}}}}","D":"Ad","p":[[1,"reference",null,null,1],[0,"mut"],[5,"CallOnDrop",0],[1,"unit"],[10,"FnOnce",18],[6,"Result",19,null,1],[5,"TypeId",20],[1,"str"],[1,"u8"],[5,"Vec",21],[8,"Result",22],[5,"String",23],[1,"slice"],[10,"AsRef",24],[1,"usize"],[5,"DefaultGuard",25],[10,"Subscriber",26]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAAgABAABAAAAAwACAAcAAAAKAAMA","P":[[2,"T"],[4,""],[5,"T"],[7,"U"],[9,""],[10,"U,T"],[11,"U"],[12,""],[14,","],[15,""]]}]]'));
+var searchIndex = new Map(JSON.parse('[["bulk",{"t":"HHHHH","n":["collect_and_print","main","run_iroh","run_quinn","run_s2n"],"q":[[0,"bulk"],[5,"core::option"],[6,"struct_iterable_internal"],[7,"iroh_bench"],[8,"anyhow"],[9,"iroh_bench::s2n"]],"i":"`````","f":"{{{d{b}}{f{{d{c}}}}}hj}{{}h}{l{{n{h}}}}0{A`{{n{h}}}}","D":"`","p":[[1,"str"],[1,"reference",null,null,1],[6,"Option",5,null,1],[1,"unit"],[10,"Iterable",6],[5,"Opt",7],[8,"Result",8],[5,"Opt",9]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAAUAAQAAAAUA","P":[[0,""],[1,""]]}],["iroh",{"t":"PPEPGTFIFFEFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNOCCNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNONNNNNCNNONONNNNNNNNNOOCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNCNNSSSSSCCSSSHHHHSSHHHFKFNNNNNNNNNNNNNNCNNNNNNNNNNNNNNOCOCONNNNCNNNNNNNNNNNFSSNNNNNNNNNNNNNNNNFSNNNNNNNNNNNNNNNNNSSSSFFFNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNTFNNNNNNNNNNNNNNNNNNNNNNIKHMNMNMNMNMNMNMNMNMNMNCHPSGFPFNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNONONNNNNNHNNNNNNNNNNNNNTTFFFFKPFPFTTTPFPFPPFFFPGPPPPPFGGKKFKPPPFFGPPPSFFTTTPFKTTPFFTPPTTPFTTPPFFTFPPPPFGPGGFPPGFPPGFTTPGFFGPPGFPPTPPPFFPFPFPPFFPFGFFPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONONNNOOOMNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNONNONONOONOOOONNNONNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNONNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNONNNNNNNNNNNNNNNOOONOOONNNOOOHNNNONNNOOONNNNNNNNOONNOONONMNMNMNNNNNNNOOONNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOONNNNNNONNNNNNNNOONMNNONMNNNNNNOONNNNNNNNNNNNNNNNNNNONMNNONOONOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNOOFFFFNNNNOOOOOOOOONNNNNNNNOONNNNNNNNNNNNOOONNNNNNNNNNNNOOOONNNNONNNNONNNNNNNNONNNNNNNNNNNNOOONNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNOOOOOOONNNNOKFFNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFNNNNHNNNNNNNNNNNNNNNNOONONHHHNNNNNNNNNFFFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["Decode","DecodeInvalidLength","Endpoint","Key","KeyParsingError","LENGTH","NodeAddr","NodeId","PublicKey","RelayMap","RelayMode","RelayNode","RelayUrl","RelayUrlParseError","SecretKey","__clone_box","","","","","","as_bytes","as_ref","borrow","","","","","","","","","borrow_mut","","","","","","","","clone","","","","","","clone_into","","","","","","clone_to_uninit","","","","","","cmp","","","","compare","","","","contains_node","default_from_node","defaults","deref","","","","","","","","","deref_mut","","","","","","","","deserialize","","","","","direct_addresses","","discovery","dns","drop","","","","","","","","empty","endpoint","eq","","","","","equivalent","","","","","","","","","","","","","","","fmt","","","","","","","","","","","","","","","fmt_short","from","","","","","","","","","","","","","","","","","","","","from_bytes","","from_nodes","from_parts","from_ref","","","","","","from_str","","","from_url","generate","get_node","hash","","init","","","","","","","","into","","","","","","","","is_empty","","len","metrics","new","node_id","nodes","partial_cmp","","","","protocol","public","","quic","relay_url","","secret","serialize","","","","","sign","source","","stun_only","stun_port","test_utils","to_bytes","to_owned","","","","","","to_string","","","","","","","try_from","","","","","","","","","","","try_into","","","","","","","","type_id","","","","","","","","url","urls","verify","vzip","","","","","","","","watchable","with_direct_addresses","with_relay_url","DEFAULT_HTTPS_PORT","DEFAULT_HTTP_PORT","DEFAULT_METRICS_PORT","DEFAULT_RELAY_QUIC_PORT","DEFAULT_STUN_PORT","prod","staging","AP_RELAY_HOSTNAME","EU_RELAY_HOSTNAME","NA_RELAY_HOSTNAME","default_ap_relay_node","default_eu_relay_node","default_na_relay_node","default_relay_map","EU_RELAY_HOSTNAME","NA_RELAY_HOSTNAME","default_eu_relay_node","default_na_relay_node","default_relay_map","ConcurrentDiscovery","Discovery","DiscoveryItem","__clone_box","add","borrow","","borrow_mut","","clone","clone_into","clone_to_uninit","default","deref","","deref_mut","","dns","drop","","empty","fmt","","from","","","from_ref","from_services","init","","into","","last_updated","local_swarm_discovery","node_addr","pkarr","provenance","publish","","resolve","","static_provider","subscribe","","to_owned","try_from","","try_into","","type_id","","vzip","","DnsDiscovery","N0_DNS_NODE_ORIGIN_PROD","N0_DNS_NODE_ORIGIN_STAGING","borrow","borrow_mut","deref","deref_mut","drop","fmt","from","init","into","n0_dns","new","resolve","try_from","try_into","type_id","vzip","LocalSwarmDiscovery","NAME","borrow","borrow_mut","deref","deref_mut","drop","fmt","from","init","into","new","publish","resolve","subscribe","try_from","try_into","type_id","vzip","DEFAULT_PKARR_TTL","DEFAULT_REPUBLISH_INTERVAL","N0_DNS_PKARR_RELAY_PROD","N0_DNS_PKARR_RELAY_STAGING","PkarrPublisher","PkarrRelayClient","PkarrResolver","__clone_box","","","borrow","","","borrow_mut","","","clone","","","clone_into","","","clone_to_uninit","","","deref","","","deref_mut","","","dht","drop","","","","fmt","","","from","","","from_ref","","","init","","","into","","","n0_dns","","new","","","publish","","resolve","","to_owned","","","try_from","","","try_into","","","type_id","","","update_addr_info","vzip","","","with_options","Builder","DhtDiscovery","__clone_box","borrow","","borrow_mut","","build","builder","client","clone","clone_into","clone_to_uninit","default","","deref","","deref_mut","","dht","drop","","fmt","","from","","from_ref","include_direct_addresses","init","","initial_publish_delay","into","","n0_dns_pkarr_relay","pkarr_relay","publish","republish_delay","resolve","secret_key","to_owned","try_from","","try_into","","ttl","type_id","","vzip","","PROVENANCE","StaticProvider","add_node_addr","borrow","borrow_mut","default","deref","deref_mut","drop","fmt","from","from_node_addrs","get_node_addr","init","into","new","publish","remove_node_addr","resolve","set_node_addr","try_from","try_into","type_id","vzip","DnsResolver","ResolverExt","default_resolver","lookup_by_id","","lookup_by_id_staggered","","lookup_by_name","","lookup_by_name_staggered","","lookup_ipv4","","lookup_ipv4_ipv6","","lookup_ipv4_ipv6_staggered","","lookup_ipv4_staggered","","lookup_ipv6","","lookup_ipv6_staggered","","node_info","resolver","Addr","IROH_TXT_NAME","IrohAttr","NodeInfo","Relay","TxtAttrs","__clone_box","as_ref","attrs","borrow","","","borrow_mut","","","clone","clone_into","clone_to_uninit","cmp","compare","deref","","","deref_mut","","","direct_addresses","drop","","","eq","","equivalent","","","","","","fmt","","","","from","","","","","","from_hickory_records","","from_parts","from_pkarr_signed_packet","","from_ref","from_str","from_strings","from_z32","hash","init","","","into","","","lookup_by_id","lookup_by_name","new","node_id","","partial_cmp","relay_url","to_hickory_records","","to_owned","to_pkarr_signed_packet","","to_string","to_z32","try_from","","","","try_into","","","type_id","","","vzip","","","AEAD_LIMIT_REACHED","APPLICATION_ERROR","Accept","AcceptBi","AcceptUni","AckFrequencyConfig","AeadKey","App","ApplicationClose","ApplicationClosed","Builder","CONNECTION_ID_LIMIT_ERROR","CONNECTION_REFUSED","CRYPTO_BUFFER_EXCEEDED","CallMeMaybe","Chunk","CidsExhausted","ClosedStream","","","Connecting","Connection","ConnectionClose","ConnectionClosed","ConnectionError","ConnectionLost","","","","","ConnectionStats","ConnectionType","ControlMsg","Controller","ControllerFactory","CryptoError","CryptoServerConfig","Custom","Default","Direct","DirectAddr","DirectAddrInfo","DirectAddrType","Disabled","","Discovery","ENV_FORCE_STAGING_RELAYS","Endpoint","ExportKeyingMaterialError","FINAL_SIZE_ERROR","FLOW_CONTROL_ERROR","FRAME_ENCODING_ERROR","FinishedEarly","FrameStats","HandshakeTokenKey","INTERNAL_ERROR","INVALID_TOKEN","IllegalOrderedRead","Incoming","IncomingFuture","KEY_UPDATE_ERROR","Local","LocallyClosed","MAX","MAX_SIZE","Mixed","MtuDiscoveryConfig","NO_ERROR","NO_VIABLE_PATH","NamedApp","None","OpenBi","OpenUni","PROTOCOL_VIOLATION","PathStats","Ping","Pong","Portmapped","Read","ReadDatagram","ReadError","","ReadExactError","ReadToEndError","RecvStream","Relay","","RelayMode","RemoteInfo","Reset","","ResetError","RetryError","STREAM_LIMIT_ERROR","STREAM_STATE_ERROR","Saved","SendDatagramError","SendStream","ServerConfig","Source","Staging","Stopped","StoppedError","StreamId","Stun","Stun4LocalPort","TRANSPORT_PARAMETER_ERROR","TimedOut","TooLarge","TooLong","TransportConfig","TransportError","","TransportErrorCode","Udp","UdpStats","Unknown","UnsupportedByPeer","UnsupportedVersion","VarInt","VersionMismatch","WeakConnectionHandle","WriteError","Written","ZeroRttAccepted","ZeroRttRejected","","","","__clone_box","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","accept","","accept_bi","accept_uni","accept_with","ack_eliciting_threshold","ack_frequency","ack_frequency_config","acks","add_discovery","add_node_addr","add_node_addr_with_source","addr","","addrs","aead_from_hkdf","allow_spin","alpn","alpns","bind","bind_addr_v4","bind_addr_v6","black_hole_cooldown","black_holes_detected","borrow","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","borrow_mut","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bound_sockets","build","builder","bytes","","","chunks","clear_discovery","clone","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","clone_box","clone_into","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","clone_to_uninit","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","close","","close_reason","closed","cmp","","","","code","compare","","","","congestion_controller_factory","congestion_events","congestion_state","conn_type","","connect","connection_close","crypto","","","crypto_buffer_size","current_mtu","cwnd","data_blocked","datagram","datagram_receive_buffer_size","datagram_send_buffer_size","datagram_send_buffer_space","datagrams","default","","","","","","","","","","","default_relay_mode","deref","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","deref_mut","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","deserialize","","","","","dir","direct_addresses","discovery","","discovery_dht","discovery_local_network","discovery_n0","dns_resolver","","drop","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","enable_segmentation_offload","eq","","","","","","","","","","","","","","","","","","","","","","","","","","equivalent","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","error_code","","export_keying_material","finish","fmt","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","force_staging_infra","frame","frame_rx","frame_tx","frame_type","from","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","from_ref","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","from_u32","from_u64","from_u64_unchecked","get_remote_node_id","handshake_data","","handshake_done","has_send_address","hash","","","","","home_relay","id","","ignore","immediate_ack","incoming_buffer_size","incoming_buffer_size_total","index","init","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","initial_keys","initial_mtu","initial_rtt","initial_window","initiator","insecure_skip_relay_cert_verify","interval","into","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","into_0rtt","into_any","into_future","","","","","","","","","","into_incoming","into_inner","ios","is_0rtt","is_alive","is_closed","join","","","","","","","","","keep_alive_interval","keylog","known_nodes","last_alive","last_control","last_payload","last_received","last_used","latency","","local_ip","","","lost_bytes","lost_packets","lost_plpmtud_probes","make_server_config","max_ack_delay","max_concurrent_bidi_streams","max_concurrent_uni_streams","max_data","max_datagram_size","max_idle_timeout","max_incoming","max_stream_data","max_streams_bidi","max_streams_uni","migration","min_mtu","minimum_change","mtu_discovery_config","network_change","network_path_changed","new","","new_connection_id","new_token","node_addr","node_id","","observed_addr","observed_external_addr","offset","on_ack","on_congestion_event","on_end_acks","on_mtu_update","on_sent","open","open_bi","open_uni","packet_threshold","partial_cmp","","","","path","path_challenge","path_response","peer_identity","persistent_congestion_threshold","ping","poll","","","","","","","","","poll_flush","poll_read","","poll_shutdown","poll_write","","preferred_address_v4","preferred_address_v6","priority","proxy_from_env","proxy_url","race","","","","","","","","","read","read_chunk","read_chunks","read_datagram","read_exact","read_to_end","reason","","","receive_observed_address_reports","receive_window","received_reset","refuse","relay_map","relay_mode","relay_url","remote_address","","","remote_address_validated","remote_info","remote_info_iter","reordering_threshold","reset","reset_stream","retire_connection_id","retry","retry_tag","retry_token_lifetime","rtt","","saturating_add","seal","secret_key","","send_datagram","send_datagram_wait","send_observed_address_reports","send_window","sent_packets","sent_plpmtud_probes","serialize","","","","","set_alpns","set_max_concurrent_bi_streams","set_max_concurrent_uni_streams","set_priority","set_receive_window","source","","","","","","","","sources","","stable_id","start_session","stats","stop","stop_sending","stopped","stream","stream_data_blocked","stream_receive_window","streams_blocked_bidi","streams_blocked_uni","time_threshold","to_owned","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","to_string","","","","","","","","","","","","","","","","","","","","token_key","transport","transport_config","","try_from","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","try_into","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","try_poll","","","","","","","typ","type_id","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","udp_rx","udp_tx","upper_bound","vzip","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","weak_handle","window","with_crypto","with_single_cert","write","write_all","write_all_chunks","write_chunk","write_chunks","name","","MagicsockMetrics","NetReportMetrics","PortmapMetrics","RelayMetrics","__clone_box","","","","accepts","actor_link_change","actor_tick_direct_addr_heartbeat","actor_tick_direct_addr_update_receiver","actor_tick_main","actor_tick_msg","actor_tick_other","actor_tick_portmap_changed","actor_tick_re_stun","borrow","","","","borrow_mut","","","","bytes_recv","bytes_sent","clone","","","","clone_into","","","","clone_to_uninit","","","","connection_became_direct","connection_handshake_success","conns_rx_ratelimited_total","default","","","","deref","","","","deref_mut","","","","disco_packets_dropped","disco_packets_recv","disco_packets_sent","disconnects","drop","","","","external_address_updated","fmt","","","","frames_rx_ratelimited_total","from","","","","from_ref","","","","got_ping","init","","","","into","","","","iter","","","","local_port_updates","mapping_attempts","mapping_failures","name","","","","nodes_contacted","nodes_contacted_directly","num_direct_conns_added","num_direct_conns_removed","num_relay_conns_added","num_relay_conns_removed","other_packets_dropped","other_packets_recv","other_packets_sent","pcp_available","pcp_probes","probes_started","re_stun_calls","recv_data_ipv4","recv_data_ipv6","recv_data_relay","recv_datagrams","recv_disco_bad_key","recv_disco_bad_parse","recv_disco_call_me_maybe","recv_disco_call_me_maybe_bad_disco","recv_disco_ping","recv_disco_pong","recv_disco_relay","recv_disco_udp","recv_gro_datagrams","relay_accepts","relay_home_change","reports","reports_full","send_data","send_data_network_down","send_disco_relay","send_disco_udp","send_ipv4","send_ipv6","send_packets_dropped","send_packets_recv","send_packets_sent","send_relay","send_relay_error","sent_disco_call_me_maybe","sent_disco_ping","sent_disco_pong","sent_disco_relay","sent_disco_udp","sent_pong","stun_packets_dropped","stun_packets_recv_ipv4","stun_packets_recv_ipv6","stun_packets_sent_ipv4","stun_packets_sent_ipv6","to_owned","","","","try_from","","","","try_into","","","","type_id","","","","unique_client_keys","unknown_frames","update_direct_addrs","upnp_available","upnp_gateway_updated","upnp_probes","upnp_probes_failed","vzip","","","","websocket_accepts","ProtocolHandler","Router","RouterBuilder","__clone_box","accept","","borrow","","borrow_mut","","builder","clone","clone_into","clone_to_uninit","deref","","deref_mut","","drop","","endpoint","","fmt","","from","","from_ref","init","","into","","is_shutdown","new","shutdown","","spawn","to_owned","try_from","","try_into","","type_id","","vzip","","CleanupDropGuard","DnsPkarrServer","borrow","","borrow_mut","","create_dns_resolver","deref","","deref_mut","","discovery","dns_resolver","drop","","fmt","","from","","init","","into","","nameserver","node_origin","on_node","pkarr_url","run","run_relay_server","run_relay_server_with","run_relay_server_with_stun","run_with_origin","try_from","","try_into","","type_id","","vzip","","Disconnected","WatchInitializedFut","WatchNextFut","Watchable","Watcher","WatcherStream","__clone_box","","","borrow","","","","","","borrow_mut","","","","","","chain","clone","","","clone_into","","","clone_to_uninit","","","default","deref","","","","","","deref_mut","","","","","","drop","","","","","","fmt","","","","","","","from","","","","","","from_ref","","","get","","init","","","","","","initialized","into","","","","","","into_future","","into_stream","join","","merge","new","poll","","poll_next","race","","ratelimit_stream","ratelimit_stream_with_jitter","set","stream","stream_updates_only","to_owned","","","to_string","try_from","","","","","","try_into","","","","","","try_poll","","try_poll_next","type_id","","","","","","updated","vzip","","","","","","watch","zip"],"q":[[0,"iroh"],[279,"iroh::defaults"],[286,"iroh::defaults::prod"],[293,"iroh::defaults::staging"],[298,"iroh::discovery"],[351,"iroh::discovery::dns"],[370,"iroh::discovery::local_swarm_discovery"],[389,"iroh::discovery::pkarr"],[466,"iroh::discovery::pkarr::dht"],[515,"iroh::discovery::static_provider"],[539,"iroh::dns"],[564,"iroh::dns::node_info"],[655,"iroh::endpoint"],[2181,"iroh::endpoint::Source"],[2183,"iroh::metrics"],[2359,"iroh::protocol"],[2404,"iroh::test_utils"],[2444,"iroh::watchable"],[2576,"dyn_clone::sealed"],[2577,"iroh_base::key"],[2578,"iroh_base::node_addr"],[2579,"iroh_base::relay_url"],[2580,"iroh_relay::relay_map"],[2581,"core::cmp"],[2582,"core::result"],[2583,"serde::de"],[2584,"core::net::socket_addr"],[2585,"core::iter::traits::iterator"],[2586,"core::fmt"],[2587,"alloc::string"],[2588,"ed25519_dalek::verifying"],[2589,"signature::error"],[2590,"data_encoding"],[2591,"ed25519_dalek::signing"],[2592,"core::option"],[2593,"iroh_base::ticket::node"],[2594,"iroh::magicsock::node_map::node_state"],[2595,"url"],[2596,"url::parser"],[2597,"anyhow"],[2598,"alloc::sync"],[2599,"core::convert"],[2600,"core::iter::traits::collect"],[2601,"rand_core"],[2602,"core::hash"],[2603,"serde::ser"],[2604,"ed25519"],[2605,"core::error"],[2606,"core::any"],[2607,"alloc::boxed"],[2608,"alloc::vec"],[2609,"alloc::collections::btree::set"],[2610,"futures_lite::stream"],[2611,"pkarr::signed_packet"],[2612,"futures_core::stream"],[2613,"core::time"],[2614,"pkarr::client"],[2615,"core::future::future"],[2616,"core::net::ip_addr"],[2617,"hickory_proto::rr::domain::name"],[2618,"core::clone"],[2619,"hickory_resolver::resolver"],[2620,"alloc::collections::btree::map"],[2621,"core::str::traits"],[2622,"hickory_proto::rr::resource"],[2623,"iroh_quinn_proto::connection"],[2624,"iroh_quinn::connection"],[2625,"iroh_quinn_proto::config"],[2626,"iroh_quinn_proto::varint"],[2627,"core::ops::function"],[2628,"core::marker"],[2629,"iroh_quinn_proto::crypto"],[2630,"iroh_quinn_proto::congestion"],[2631,"std::time"],[2632,"iroh_quinn::recv_stream"],[2633,"iroh_quinn::send_stream"],[2634,"iroh_quinn_proto::connection::stats"],[2635,"iroh_quinn_proto::connection::streams::send"],[2636,"iroh_quinn_proto::connection::streams"],[2637,"iroh::magicsock::node_map"],[2638,"iroh_quinn_proto::frame"],[2639,"iroh::magicsock"],[2640,"iroh_quinn_proto"],[2641,"iroh_quinn_proto::connection::assembler"],[2642,"iroh_quinn::incoming"],[2643,"iroh_quinn_proto::connection::streams::recv"],[2644,"ring::error"],[2645,"iroh_quinn_proto::transport_parameters"],[2646,"iroh_quinn_proto::shared"],[2647,"futures_concurrency::future::join::tuple"],[2648,"core::future::into_future"],[2649,"tokio::sync::watch"],[2650,"iroh_quinn_proto::connection::paths"],[2651,"core::pin"],[2652,"core::task::wake"],[2653,"core::task::poll"],[2654,"std::io::error"],[2655,"tokio::io::read_buf"],[2656,"futures_concurrency::future::race::tuple"],[2657,"bytes::bytes"],[2658,"rustls_pki_types"],[2659,"rustls::error"],[2660,"alloc::vec::into_iter"],[2661,"futures_lite::future"],[2662,"iroh::test_utils::dns_and_pkarr_servers"],[2663,"iroh_relay::server"],[2664,"futures_concurrency::stream::chain::tuple"],[2665,"futures_concurrency::stream::into_stream"],[2666,"core::default"],[2667,"futures_concurrency::stream::merge::tuple"],[2668,"governor::state::direct"],[2669,"governor::state"],[2670,"governor::state::direct::streams"],[2671,"governor::clock::with_std"],[2672,"governor::middleware"],[2673,"governor::jitter"],[2674,"futures_concurrency::stream::zip::tuple"],[2675,"iroh_relay::defaults"],[2676,"iroh::test_utils::dns_server"]],"i":"Cb0`0`h`````````0AbAdAfAhAj55556432Cd21675430216543216543216543216431643122`675433021675430216543144``675430212`643216664443332221116677554330022116667775554444443300216524654321653252636754302167543021422`4426431`6514456543157011`5654321675302166675543021675430216754302112667543021`44``````````````````````FhFd101011101010`100101001010101`1`1Ff101`01221212121```Gj000000000000000``Gl0000000000000000```````GnH`Hb210210210210210210210`221021021021021021021210201021021021021022102``Hn0Hl10010111101010010101010100100010101101001010Ib`0000000000000000000000```IfId101010101010101010``Jf```0`Df1Jh21021011122210210121021222111221021110010010120`22102100010121101102`2210210210210A@n0`````A@f`Kn`222Ol`1`NjO````3`Nf2Nl2Ob```````AAf0A@b```419```:::Nn``;;7``;AAb:Lj03`==<3``=`::1Nh``3```4=``:<``>>=````59``22><80``<`=`28``<````:796L`91;84:72OdOfOhOjOlOnA@`Dh=A@dA@fKnLhMnLfA@hA@jA@lA@nAA`AAbAAdGbAAf1KjL`01=OfLl1Ln66On:DhMf4Kl4444MnOhADd:AEdAEbLdLbAElABdNfABfAAlNhNjNlNnAAnO`ObLlLjAB`OdOfOhOjOlOnA@`DhA@bA@dA@fKnLhMnLfABbABhABjA@hA@jA@lA@nAA`AAbAAdLnGbKhKjABlKlAAfADdL`AEdAEbLdLbAElABdNfABfAAlNhNjNlNnAAnO`ObLlLjAB`OdOfOhOjOlOnA@`DhA@bA@dA@fKnLhMnLfABbABhABjA@hA@jA@lA@nAA`AAbAAdLnGbKhKjABlKlAAf5N`6AB`OdA@`0:L`NfNhNjNlNnO`ObLj:OfOhOjOlOn>DhA@bA@dA@fKnLhMnLfA@hA@jA@lA@nAA`AAbAAdGbAAfNdL`NfNhNjNlNnO`ObLjOdOfOhOjOlOnA@`DhA@bA@dA@fKnLhMnLfA@hA@jA@lA@nAA`AAbAAdGbAAfL`NfNhNjNlNnO`ObLjOdOfOhOjOlOnA@`DhA@bA@dA@fKnLhMnLfA@hA@jA@lA@nAA`AAbAAdGbAAfL`200Lj65480654LlOh35Dh6Of;0?32200335Od45013OjA@`A@bLhMnLn`ADd=AEdAEbLdLbAElABdNfABfAAlNhNjNlNnAAnO`ObLlLjAB`OdOfOhOjOlOnA@`DhA@bA@dA@fKnLhMnLfABbABhABjA@hA@jA@lA@nAA`AAbAAdLnGbKhKjABlKlAAfADdL`AEdAEbLdLbAElABdNfABfAAlNhNjNlNnAAnO`ObLlLjAB`OdOfOhOjOlOnA@`DhA@bA@dA@fKnLhMnLfABbABhABjA@hA@jA@lA@nAA`AAbAAdLnGbKhKjABlKlAAfOlOnDhA@bA@f<:;:;;;;:ADdL`AEdAEbLdLbAElABdNfABfAAl0NhNjNlNnAAn0O`ObLlLjAB`OdOfOhOjOlOnA@`DhA@bA@dA@fKnLhMnLfABbABhABjA@hA@jA@lA@nAA`AAbAAdLnGbKhKjABlKlAAfLlNfNhNjNlNnO`ObLjAB`OlOnA@`DhA@bA@dA@fKnABbA@hA@jA@lA@nAA`AAbAAdAAfNf00Nh00Nj00Nl00Nn00O`00Ob00Lj00AB`00Ol00On00A@`00Dh00A@b00A@d00A@f00Kn00ABb00A@h00A@j00A@l00A@n00AA`00AAb00AAd00AAf0076L`AAn1ABdNf0ABf0AAlNh0Nj0Nl0Nn08O`0Ob0LlLj0AB`OdOfOhOjOl0OnA@`DhA@b0A@d0A@f0Kn0LhMnLfABbABhABjA@h0A@j0A@l0A@n0AA`AAb0AAd0LnGbKhKjABlKlAAf`;Oj0>ADdL`AEdAEbLdLbAElABdNf0ABfAAlNh0Nj000Nl0Nn0AAnO`000Ob0LlLj0000AB`OdOfOhOjOlOnA@`DhA@bA@dA@fKn00LhMnLfABbABh0ABjA@h0A@jA@l000A@nAA`AAbAAd0LnGbKhKjABlKlAAfL`NfNhNjNlNnO`ObLjOdOfOhOjOlOnA@`DhA@bA@dA@fKnLhMnLfA@hA@jA@lA@nAA`AAbAAdGbAAfLj00`L`KlOfDh4A@f:987AAlAAnKj5Lf0?1AAd33??837AB`Nd0000Mh::>LjAA`AAb6Oj::>Ll;ADdAEdAEbLdLbAElKhABlKlAAnAAl0111Lf02Ln0<;:987654222L`33A@hA@jA@lLl07KjAAf7Dh72<2Gb0Lh=Of05ACl=;OhLjMh?6>>::22OlOn9A@bA@f:L`0AAn1NfNhNjNlNnO`ObKnDh=:ACl;AAlOf<00Ll110><;:9876LjOd3OhOjOlOnA@`;A@bA@dA@f?LhMnLfA@hA@jA@lA@nAA`AAbAAdGbAAfNfABfNhNjNlNnO`ObLjOlA@bA@dA@fKnA@hA@jA@lA@nAAbAAdLf00LnADdL`AEdAEbLdLbAElABdNfABfAAlNhNjNlNnAAnO`ObLlLj000AB`OdOfOhOjOlOnA@`DhA@bA@dA@fKnLhMnLfABbABhABjA@hA@jA@lA@nAA`AAbAAdLnGbKhKjABlKlAAfADdL`AEdAEbLdLbAElABdNfABfAAlNhNjNlNnAAnO`ObLlLjAB`OdOfOhOjOlOnA@`DhA@bA@dA@fKnLhMnLfABbABhABjA@hA@jA@lA@nAA`AAbAAdLnGbKhKjABlKlAAfAEdAEbLdLbAEl76>ADdL`65432ABdNfABfAAlNhNjNlNnAAnO`ObLlLjAB`OdOfOhOjOlOnA@`DhA@bA@dA@fKnLhMnLfABbABhABjA@hA@jA@lA@nAA`AAbAAdLnGbKhKjABlKlAAfOj0MnADdL`AEdAEbLdLbAElABdNfABfAAlNhNjNlNnAAnO`ObLlLjAB`OdOfOhOjOlOnA@`DhA@bA@dA@fKnLhMnLfABbABhABjA@hA@jA@lA@nAA`AAbAAdLnGbKhKjABlKlAAfL`NdLf0AAn0000AKjAKl````AGhAGjAGlAGn011111111321032100032103210321011032103210321000003210332100321032100321032103210333321011111100033311111111111111012211111100011111110222223210321032103210001333332100```AHjAHbAHf202022222020202020202202020120220202020``AHnAHl10`101000101010101000000```010101010``````AIjAAhAIl21AJ`AJb2AJd542130354354354355421305421305421305421300542130543545421304542130213213521321335445430542130542130213542130454213053","f":"```````````````{{bd}f}00000{{{b{h}}}{{b{{l{j}}}}}}{{{b{h}}}{{b{{n{j}}}}}}1{b{{b{c}}}{}}0000000{{{b{A`}}}{{b{A`c}}}{}}0000000{{{b{h}}}h}{{{b{Ab}}}Ab}{{{b{Ad}}}Ad}{{{b{Af}}}Af}{{{b{Ah}}}Ah}{{{b{Aj}}}Aj}{{b{b{A`c}}}f{}}00000{{bj}f}00000{{{b{h}}{b{h}}}Al}{{{b{Ad}}{b{Ad}}}Al}{{{b{Af}}{b{Af}}}Al}{{{b{Aj}}{b{Aj}}}Al}{{b{b{c}}}Al{}}000{{{b{Ah}}{b{Af}}}An}{{AfB`}Ah}`{Bb{{b{c}}}{}}0000{{{b{Af}}}b}111{Bb{{b{A`c}}}{}}0000000{c{{Bd{h}}}Bf}{c{{Bd{Ab}}}Bf}{c{{Bd{Ad}}}Bf}{c{{Bd{Af}}}Bf}{c{{Bd{Aj}}}Bf}{{{b{Ad}}}{{`{{Bl{}{{Bh{{b{Bj}}}}}}}}}}```{Bbf}0000000{{}Ah}`{{{b{h}}{b{h}}}An}{{{b{Ad}}{b{Ad}}}An}{{{b{Af}}{b{Af}}}An}{{{b{Ah}}{b{Ah}}}An}{{{b{Aj}}{b{Aj}}}An}{{b{b{c}}}An{}}00000000000000{{{b{h}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Cb}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Ab}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Ad}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Af}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Cd}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Ah}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Aj}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{h}}}Cf}{Chh}{cc{}}{CjCb}1{ClCb}{{{l{j}}}Ab}3{CnAb}4{hAd}{{{Db{h{D`{Af}}{b{{n{Bj}}}}}}}Ad}{DdAd}{DfAd}{DhAd}9{DjAf}:{DlCd};;{{{b{{l{j}}}}}{{Bd{hCj}}}}{{{b{{l{j}}}}}Ab}{e{{Bd{AhDn}}}{{Eb{{E`{Aj}}}}}{{Ed{}{{Bh{c}}}}}}{{h{D`{Af}}c}Ad{{Ed{}{{Bh{Bj}}}}}}{{{b{c}}}c{}}00000{{{b{Ef}}}{{Bd{h}}}}{{{b{Ef}}}{{Bd{Ab}}}}{{{b{Ef}}}{{Bd{Af}}}}{AfAh}{cAbEh}{{{b{Ah}}{b{Af}}}{{D`{{b{{E`{Aj}}}}}}}}{{{b{h}}{b{A`c}}}fEj}{{{b{Af}}{b{A`c}}}fEj}{{}Bb}0000000{{}c{}}0000000{{{b{Ad}}}An}{{{b{Ah}}}An}{{{b{Ah}}}Bb}`{hAd}`{{{b{Ah}}}{{`{{Bl{}{{Bh{{b{{E`{Aj}}}}}}}}}}}}{{{b{h}}{b{h}}}{{D`{Al}}}}{{{b{Ad}}{b{Ad}}}{{D`{Al}}}}{{{b{Af}}{b{Af}}}{{D`{Al}}}}{{{b{Aj}}{b{Aj}}}{{D`{Al}}}}`{{{b{h}}}Ch}{{{b{Ab}}}h}`{{{b{Ad}}}{{D`{{b{Af}}}}}}`{{{b{Ab}}}{{b{Cn}}}}{{{b{h}}c}BdEl}{{{b{Ab}}c}BdEl}{{{b{Ad}}c}BdEl}{{{b{Af}}c}BdEl}{{{b{Aj}}c}BdEl}{{{b{Ab}}{b{{n{j}}}}}En}{{{b{Cb}}}{{D`{{b{F`}}}}}}{{{b{Cd}}}{{D`{{b{F`}}}}}}```{{{b{Ab}}}{{l{j}}}}{bc{}}00000{bCf}000000{c{{Bd{e}}}{}{}}{{{b{{n{j}}}}}{{Bd{h}}}}{{{b{{l{j}}}}}{{Bd{h}}}}22{{{b{{n{j}}}}}{{Bd{Ab}}}}33333{{}{{Bd{c}}}{}}0000000{bFb}0000000`{{{b{Ah}}}{{`{{Bl{}{{Bh{{b{Af}}}}}}}}}}{{{b{h}}{b{{n{j}}}}{b{En}}}{{Bd{fCj}}}}{{}c{}}0000000`{{Adc}Ad{{Ed{}{{Bh{Bj}}}}}}{{AdAf}Ad}``````````{{}Aj}00{{}Ah}``110```{{bd}f}{{{b{A`Fd}}c}fFf}{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}0{{{b{Fh}}}Fh}{{b{b{A`c}}}f{}}{{bj}f}{{}Fd}{Bb{{b{c}}}{}}0{Bb{{b{A`c}}}{}}0`{Bbf}03{{{b{Fh}}{b{A`Bn}}}Fj}{{{b{Fd}}{b{A`Bn}}}Fj}{cc{}}0{cFd{{Ed{}{{Bh{{Fl{Ff}}}}}}}}{{{b{c}}}c{}}{{{Fn{{Fl{Ff}}}}}Fd}{{}Bb}0{{}c{}}0`````{{{b{Ff}}{D`{{b{Af}}}}{b{{G`{Bj}}}}}f}{{{b{Fd}}{D`{{b{Af}}}}{b{{G`{Bj}}}}}f}{{{b{Ff}}GbGd}{{D`{{Gh{{Gf{Fh}}}}}}}}{{{b{Fd}}GbGd}{{D`{{Gh{{Gf{Fh}}}}}}}}`{{{b{Ff}}}{{D`{{Gh{Fh}}}}}}{{{b{Fd}}}{{D`{{Gh{Fh}}}}}}{bc{}}{c{{Bd{e}}}{}{}}0{{}{{Bd{c}}}{}}0{bFb}0{{}c{}}0```{b{{b{c}}}{}}{{{b{A`}}}{{b{A`c}}}{}}{Bb{{b{c}}}{}}{Bb{{b{A`c}}}{}}{Bbf}{{{b{Gj}}{b{A`Bn}}}Fj}{cc{}}{{}Bb}{{}c{}}{{}Gj}{CfGj}{{{b{Gj}}GbGd}{{D`{{Gh{{Gf{Fh}}}}}}}}?>=<``;:987{{{b{Gl}}{b{A`Bn}}}Fj}654{Gd{{Gf{Gl}}}}{{{b{Gl}}{D`{{b{Af}}}}{b{{G`{Bj}}}}}f}{{{b{Gl}}GbGd}{{D`{{Gh{{Gf{Fh}}}}}}}}{{{b{Gl}}}{{D`{{Gh{Fh}}}}}}{c{{Bd{e}}}{}{}}{{}{{Bd{c}}}{}}{bFb}{{}c{}}```````{{bd}f}00{b{{b{c}}}{}}00{{{b{A`}}}{{b{A`c}}}{}}00{{{b{Gn}}}Gn}{{{b{H`}}}H`}{{{b{Hb}}}Hb}{{b{b{A`c}}}f{}}00{{bj}f}00{Bb{{b{c}}}{}}00{Bb{{b{A`c}}}{}}00`{Bbf}{{{b{A`Gn}}}f}11{{{b{Gn}}{b{A`Bn}}}Fj}{{{b{H`}}{b{A`Bn}}}Fj}{{{b{Hb}}{b{A`Bn}}}Fj}{cc{}}00{{{b{c}}}c{}}00{{}Bb}00{{}c{}}00{AbGn}{{}H`}{{AbDj}Gn}{DjH`}{DjHb}{{{b{Gn}}{D`{{b{Af}}}}{b{{G`{Bj}}}}}f}{{{b{Hb}}{b{Hd}}}{{Gf{f}}}}{{{b{H`}}GbGd}{{D`{{Hf{{Gf{Fh}}}}}}}}{{{b{Hb}}Gd}{{Gf{Hd}}}}{bc{}}00{c{{Bd{e}}}{}{}}00{{}{{Bd{c}}}{}}00{bFb}007{{}c{}}00{{AbDjHhHj}Gn}``{{bd}f}{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}0{Hl{{Gf{Hn}}}}{{}Hl}{{HlI`}Hl}{{{b{Hn}}}Hn}{{b{b{A`c}}}f{}}{{bj}f}{{}Hn}5{Bb{{b{c}}}{}}0{Bb{{b{A`c}}}{}}0{{HlAn}Hl}{Bbf}0{{{b{Hn}}{b{A`Bn}}}Fj}{{{b{Hl}}{b{A`Bn}}}Fj}{cc{}}0{{{b{c}}}c{}}5{{}Bb}0{{HlHj}Hl}{{}c{}}0{HlHl}{{HlDj}Hl}{{{b{Hn}}{D`{{b{Af}}}}{b{{G`{Bj}}}}}f}4{{{b{Hn}}GbGd}{{D`{{Gh{{Gf{Fh}}}}}}}}{{HlAb}Hl}{bc{}}{c{{Bd{e}}}{}{}}0{{}{{Bd{c}}}{}}0{{HlHh}Hl}{bFb}0{{}c{}}0``{{{b{Ib}}c}f{{Eb{Ad}}}}{b{{b{c}}}{}}{{{b{A`}}}{{b{A`c}}}{}}{{}Ib}{Bb{{b{c}}}{}}{Bb{{b{A`c}}}{}}{Bbf}{{{b{Ib}}{b{A`Bn}}}Fj}{cc{}}{eIb{{Eb{Ad}}}{{Ed{}{{Bh{c}}}}}}{{{b{Ib}}Gd}{{D`{Ad}}}}{{}Bb}{{}c{}}9{{{b{Ib}}{D`{{b{Af}}}}{b{{G`{Bj}}}}}f}3{{{b{Ib}}GbGd}{{D`{{Gh{{Gf{Fh}}}}}}}}{{{b{Ib}}c}{{D`{Ad}}}{{Eb{Ad}}}}{c{{Bd{e}}}{}{}}{{}{{Bd{c}}}{}}{bFb}{{}c{}}``{{}{{b{Id}}}}{{{b{If}}{b{Gd}}{b{Ef}}}{{`{{Ij{}{{Ih{{Gf{Ad}}}}}}}}}}{{{b{Id}}{b{Gd}}{b{Ef}}}{{Gf{Ad}}}}{{{b{If}}{b{Gd}}{b{Ef}}{b{{n{Il}}}}}{{`{{Ij{}{{Ih{{Gf{Ad}}}}}}}}}}{{{b{Id}}{b{Gd}}{b{Ef}}{b{{n{Il}}}}}{{Gf{Ad}}}}{{{b{If}}{b{Ef}}}{{`{{Ij{}{{Ih{{Gf{Ad}}}}}}}}}}{{{b{Id}}{b{Ef}}}{{Gf{Ad}}}}{{{b{If}}{b{Ef}}{b{{n{Il}}}}}{{`{{Ij{}{{Ih{{Gf{Ad}}}}}}}}}}{{{b{Id}}{b{Ef}}{b{{n{Il}}}}}{{Gf{Ad}}}}{{{b{If}}cHj}{{`{{Ij{}{{Ih{{Gf{{`{{Bl{}{{Bh{In}}}}}}}}}}}}}}}J`}{{{b{Id}}cHj}{{Gf{{`{{Bl{}{{Bh{In}}}}}}}}}J`}{{{b{If}}cHj}{{`{{Ij{}{{Ih{{Gf{{`{{Bl{}{{Bh{In}}}}}}}}}}}}}}}{J`Jb}}{{{b{Id}}cHj}{{Gf{{`{{Bl{}{{Bh{In}}}}}}}}}{J`Jb}}{{{b{If}}cHj{b{{n{Il}}}}}{{`{{Ij{}{{Ih{{Gf{{`{{Bl{}{{Bh{In}}}}}}}}}}}}}}}{J`Jb}}{{{b{Id}}cHj{b{{n{Il}}}}}{{Gf{{`{{Bl{}{{Bh{In}}}}}}}}}{J`Jb}}105410`{{}{{b{Jd}}}}``````{{bd}f}{{{b{Jf}}}{{b{Ef}}}}{{{b{{Jh{c}}}}}{{b{{Jj{c{Fn{Cf}}}}}}}{JlJnK`Kb}}{b{{b{c}}}{}}00{{{b{A`}}}{{b{A`c}}}{}}00{{{b{Df}}}Df}{{b{b{A`c}}}f{}}{{bj}f}{{{b{Jf}}{b{Jf}}}Al}{{b{b{c}}}Al{}}{Bb{{b{c}}}{}}00{Bb{{b{A`c}}}{}}00`{Bbf}00{{{b{Jf}}{b{Jf}}}An}{{{b{Df}}{b{Df}}}An}{{b{b{c}}}An{}}00000{{{b{Jf}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Jf}}{b{A`Bn}}}Fj}{{{b{Df}}{b{A`Bn}}}Fj}{{{b{{Jh{c}}}}{b{A`Bn}}}FjKd}{cc{}}0{{{Jh{Jf}}}Df}{{{b{{Jh{Jf}}}}}Df}2{{{b{Df}}}{{Jh{Jf}}}}{{{b{{n{Kf}}}}}{{Gf{Df}}}}{{{b{{n{Kf}}}}}{{Gf{{Jh{c}}}}}{JlJnK`Kb}}{{Gde}{{Jh{c}}}{JlJnK`Kb}{{Bl{}{{Bh{{Db{cCf}}}}}}}}{{{b{Hd}}}{{Gf{Df}}}}{{{b{Hd}}}{{Gf{{Jh{c}}}}}{JlJnK`Kb}}{{{b{c}}}c{}}{{{b{Ef}}}{{Bd{Jfc}}}{}}{{Gdc}{{Gf{{Jh{e}}}}}{{Bl{}{{Bh{Cf}}}}}{JlJnK`Kb}}{{{b{Ef}}}{{Gf{Gd}}}}{{{b{Jf}}{b{A`c}}}fEj}{{}Bb}00{{}c{}}00{{{b{Jd}}{b{Gd}}{b{Ef}}}{{Gf{{Jh{c}}}}}{JlJnK`Kb}}{{{b{Jd}}{b{Ef}}}{{Gf{{Jh{c}}}}}{JlJnK`Kb}}{{Gd{D`{Dj}}{G`{Bj}}}Df}{{{b{{Jh{c}}}}}Gd{JlJnK`Kb}}`{{{b{Jf}}{b{Jf}}}{{D`{Al}}}}`{{{b{Df}}{b{Ef}}Hh}{{Gf{{`{{Bl{}{{Bh{Kf}}}}}}}}}}{{{b{{Jh{c}}}}{b{Ef}}Hh}{{Gf{{`{{Bl{}{{Bh{Kf}}}}}}}}}{JlJnK`Kb}}{bc{}}{{{b{Df}}{b{Ab}}Hh}{{Gf{Hd}}}}{{{b{{Jh{c}}}}{b{Ab}}Hh}{{Gf{Hd}}}{JlJnK`Kb}}{bCf}{{{b{Gd}}}Cf}{{{b{Ef}}}{{Bd{Jfc}}}{}}{c{{Bd{e}}}{}{}}00{{}{{Bd{c}}}{}}00{bFb}00{{}c{}}00`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{{bd}f}00000000000000000000000000000000{{{b{Gb}}}Kh}{Kj{{Gf{KlKn}}}}{{{b{L`}}}Lb}{{{b{L`}}}Ld}{{Kj{E`{Lf}}}{{Gf{KlKn}}}}{{{b{A`Lh}}Lj}{{b{A`Lh}}}}`{{{b{A`Ll}}{D`{Lh}}}{{b{A`Ll}}}}`{{Lne}LnFf{{M`{{b{Ab}}}{{Ih{{D`{c}}}}}}MbMd}}{{{b{Gb}}Ad}{{Gf{f}}}}{{{b{Gb}}Ad{b{Ef}}}{{Gf{f}}}}```{{{b{Mf}}{b{{n{j}}}}}{{Fl{Mh}}}}{{{b{A`Ll}}An}{{b{A`Ll}}}}{{{b{A`Kl}}}{{Gf{{Fn{j}}}}}}{{Ln{Fn{{Fn{j}}}}}Ln}{Ln{{Gf{Gb}}}}{{LnMj}Ln}{{LnMl}Ln}{{{b{A`Mn}}Hj}{{b{A`Mn}}}}`{b{{b{c}}}{}}0000000000000000000000000000000000000000000000000000{{{b{A`}}}{{b{A`c}}}{}}0000000000000000000000000000000000000000000000000000{{{b{Gb}}}{{Db{Bj{D`{Bj}}}}}}{{{E`{N`}}NbB`}{{Fl{Nd}}}}{{}Ln}````{LnLn}{{{b{L`}}}L`}{{{b{Nf}}}Nf}{{{b{Nh}}}Nh}{{{b{Nj}}}Nj}{{{b{Nl}}}Nl}{{{b{Nn}}}Nn}{{{b{O`}}}O`}{{{b{Ob}}}Ob}{{{b{Lj}}}Lj}{{{b{Od}}}Od}{{{b{Of}}}Of}{{{b{Oh}}}Oh}{{{b{Oj}}}Oj}{{{b{Ol}}}Ol}{{{b{On}}}On}{{{b{A@`}}}A@`}{{{b{Dh}}}Dh}{{{b{A@b}}}A@b}{{{b{A@d}}}A@d}{{{b{A@f}}}A@f}{{{b{Kn}}}Kn}{{{b{Lh}}}Lh}{{{b{Mn}}}Mn}{{{b{Lf}}}Lf}{{{b{A@h}}}A@h}{{{b{A@j}}}A@j}{{{b{A@l}}}A@l}{{{b{A@n}}}A@n}{{{b{AA`}}}AA`}{{{b{AAb}}}AAb}{{{b{AAd}}}AAd}{{{b{Gb}}}Gb}{{{b{AAf}}}AAf}{{{b{Nd}}}{{Fl{Nd}}}}{{b{b{A`c}}}f{}}00000000000000000000000000000000{{bj}f}00000000000000000000000000000000{{{b{L`}}Lj{b{{n{j}}}}}f}{{{b{Gb}}}{{Gf{f}}}}{{{b{L`}}}{{D`{Kn}}}}{{{b{L`}}}Kn}{{{b{Lj}}{b{Lj}}}Al}{{{b{AA`}}{b{AA`}}}Al}{{{b{AAb}}{b{AAb}}}Al}{{{b{AAd}}{b{AAd}}}Al}`{{b{b{c}}}Al{}}000{{{b{A`Ll}}{E`{N`}}}{{b{A`Ll}}}}`{{{b{L`}}}{{Fl{Nd}}}}{{{b{Gb}}Gd}{{Gf{{AAh{A@b}}}}}}`{{{b{Gb}}c{b{{n{j}}}}}{{Gf{L`}}}{{Eb{Ad}}}}`{jA@n}``{{{b{A`Ll}}Bb}{{b{A`Ll}}}}````{{{b{A`Ll}}{D`{Bb}}}{{b{A`Ll}}}}1{{{b{L`}}}Bb}`{{}Ll}{{}Lj}{{}Od}{{}Of}{{}Oh}{{}Oj}{{}A@`}{{}A@b}{{}Lh}{{}Mn}{{}Ln}{{}AAf}{Bb{{b{c}}}{}}0000000000000000000000000000000000000000000000000000{Bb{{b{A`c}}}{}}0000000000000000000000000000000000000000000000000000{c{{Bd{Ol}}}Bf}{c{{Bd{On}}}Bf}{c{{Bd{Dh}}}Bf}{c{{Bd{A@b}}}Bf}{c{{Bd{A@f}}}Bf}{AAdAAj}{{{b{Gb}}}{{AAh{{D`{{G`{AA`}}}}}}}}{{Ln{Fl{Ff}}}Ln}{{{b{Gb}}}{{D`{{b{Ff}}}}}}{LnLn}00{{LnId}Ln}{{{b{Gb}}}{{b{Id}}}}{Bbf}000000000{{{b{A`AAl}}}f}11111{{{b{A`AAn}}}f}22222222222222222222222222222222222222{{{b{A`Ll}}An}{{b{A`Ll}}}}{{{b{Nf}}{b{Nf}}}An}{{{b{Nh}}{b{Nh}}}An}{{{b{Nj}}{b{Nj}}}An}{{{b{Nl}}{b{Nl}}}An}{{{b{Nn}}{b{Nn}}}An}{{{b{O`}}{b{O`}}}An}{{{b{Ob}}{b{Ob}}}An}{{{b{Lj}}{b{Lj}}}An}{{{b{AB`}}{b{AB`}}}An}{{{b{Ol}}{b{Ol}}}An}{{{b{On}}{b{On}}}An}{{{b{A@`}}{b{A@`}}}An}{{{b{Dh}}{b{Dh}}}An}{{{b{A@b}}{b{A@b}}}An}{{{b{A@d}}{b{A@d}}}An}{{{b{A@f}}{b{A@f}}}An}{{{b{Kn}}{b{Kn}}}An}{{{b{ABb}}{b{ABb}}}An}{{{b{A@h}}{b{A@h}}}An}{{{b{A@j}}{b{A@j}}}An}{{{b{A@l}}{b{A@l}}}An}{{{b{A@n}}{b{A@n}}}An}{{{b{AA`}}{b{AA`}}}An}{{{b{AAb}}{b{AAb}}}An}{{{b{AAd}}{b{AAd}}}An}{{{b{AAf}}{b{AAf}}}An}{{b{b{c}}}An{}}00000000000000000000000000000000000000000000000000000000000000000000000000000``{{{b{L`}}{b{A`{n{j}}}}{b{{n{j}}}}{b{{n{j}}}}}{{Bd{fABb}}}}{{{b{A`AAn}}}{{Bd{fA@d}}}}{{{b{L`}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{ABd}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Nf}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{ABf}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{AAl}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Nh}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Nj}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Nl}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Nn}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{AAn}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{O`}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Ob}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Ll}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Lj}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{AB`}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Od}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Of}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Oh}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Oj}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Ol}}{b{A`Bn}}}Fj}0{{{b{On}}{b{A`Bn}}}Fj}{{{b{A@`}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Dh}}{b{A`Bn}}}Fj}{{{b{A@b}}{b{A`Bn}}}Fj}0{{{b{A@d}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{A@f}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{A@f}}{b{A`Bn}}}Fj}{{{b{Kn}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Lh}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Mn}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Lf}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{ABb}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{ABh}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{ABj}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{A@h}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{A@j}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{A@l}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{A@n}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{AA`}}{b{A`Bn}}}Fj}{{{b{AAb}}{b{A`Bn}}}Fj}0{{{b{AAd}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Ln}}{b{A`Bn}}}Fj}{{{b{Gb}}{b{A`Bn}}}Fj}{{{b{Kh}}{b{A`Bn}}}Fj}{{{b{Kj}}{b{A`Bn}}}Fj}{{{b{ABl}}{b{A`Bn}}}Fj}{{{b{Kl}}{b{A`Bn}}}Fj}{{{b{AAf}}{b{A`Bn}}}Fj}{{}An}````{cc{}}0000000{KnNf}111{NjNh}22{NlNj}{KnNj}{ABnNj}{KnNl}6{NjNn}77{A@dO`}8{ObO`}{KnO`}:{KnOb};{B`Lj}<{jLj}{AAdLj}{HhLj}????????????{AC`Kn}{A@lKn}{cc{}}0000{ACbABh}111{A@lA@h}2{A@nA@l}{ACdA@l}4{ACfA@l}5555{LjAAd}6666666{{{b{c}}}c{}}00000000000000000000000000000000:{Il{{Bd{LjACh}}}}{IlLj}{{{b{L`}}}{{Gf{h}}}}{{{b{L`}}}{{D`{{Fl{ACj}}}}}}{{{b{A`Kl}}}{{Gf{{Fl{ACj}}Kn}}}}`{{{b{Dh}}}An}{{{b{Lj}}{b{A`c}}}fEj}{{{b{A@f}}{b{A`c}}}fEj}{{{b{AA`}}{b{A`c}}}fEj}{{{b{AAb}}{b{A`c}}}fEj}{{{b{AAd}}{b{A`c}}}fEj}{{{b{Gb}}}{{AAh{{D`{Af}}}}}}{{{b{AAl}}}AAd}{{{b{AAn}}}AAd}{Kjf}`{{{b{A`Lf}}Il}{{b{A`Lf}}}}0{AAdIl}{{}Bb}0000000000000000000000000000000000000000000000000000{{{b{ACl}}Hh{b{ACn}}}{{Bd{AD`ABj}}}}{{{b{A`Ll}}B`}{{b{A`Ll}}}}{{{b{A`Ll}}Hj}{{b{A`Ll}}}}{{{b{Nd}}}Il}{AAdADb}{{LnAn}Ln}{{{b{A`Mn}}Hj}{{b{A`Mn}}}}{{}c{}}0000000000000000000000000000000000000000000000000000{Kl{{Gf{{Db{L`ADd}}Kl}}}}{{{Fl{Nd}}}{{Fl{ACj}}}}{{}}000000{Kjc{}}11{ABfADf}{LjIl}`{{{b{AAl}}}An}{{{b{ABd}}}An}{{{b{Gb}}}An}{c{{ADh{e}}}ADjIj}00000000{{{b{A`Ll}}{D`{Hj}}}{{b{A`Ll}}}}={{Ln{Fn{Ad}}}Ln}```{{{b{Dh}}}{{D`{Hj}}}}```{{{b{L`}}}{{D`{In}}}}{{{b{Kj}}}{{D`{In}}}}{{{b{Kl}}}{{D`{In}}}}```{{{b{Ab}}{Fn{{Fn{j}}}}{E`{Ll}}An}{{Gf{Lf}}}}{{{b{A`Lh}}{D`{Hj}}}{{b{A`Lh}}}}{{{b{A`Ll}}Lj}{{b{A`Ll}}}}0`{{{b{L`}}}{{D`{Bb}}}}{{{b{A`Ll}}{D`{ADl}}}{{b{A`Ll}}}}{{{b{A`Lf}}Bb}{{b{A`Lf}}}}```{{{b{A`Lf}}An}{{b{A`Lf}}}}{{{b{A`Ll}}B`}{{b{A`Ll}}}}{{{b{A`Mn}}B`}{{b{A`Mn}}}}{{{b{A`Ll}}{D`{Mn}}}{{b{A`Ll}}}}{{{b{Gb}}}f}{{{b{ABd}}}An}{{{E`{ACl}}{E`{Mf}}}Lf}{{ADbAAjIl}AAd}``{{{b{Gb}}}{{Gf{Ad}}}}{{{b{Gb}}}Gd}``{{{b{L`}}}{{ADn{{D`{Bj}}}}}}`{{{b{A`Nd}}NbNbIlAn{b{AE`}}}f}{{{b{A`Nd}}NbNbAnIl}f}{{{b{A`Nd}}NbIlAn{D`{Il}}}f}{{{b{A`Nd}}B`}f}{{{b{A`Nd}}NbIlIl}f}{{{b{Mh}}{b{A`{n{j}}}}{b{{n{j}}}}}{{Bd{{b{A`{n{j}}}}ABh}}}}{{{b{L`}}}AEb}{{{b{L`}}}AEd}{{{b{A`Ll}}Hh}{{b{A`Ll}}}}{{{b{Lj}}{b{Lj}}}{{D`{Al}}}}{{{b{AA`}}{b{AA`}}}{{D`{Al}}}}{{{b{AAb}}{b{AAb}}}{{D`{Al}}}}{{{b{AAd}}{b{AAd}}}{{D`{Al}}}}```{{{b{L`}}}{{D`{{Fl{ACj}}}}}}5`{{{AEf{{b{A`ADd}}}}{b{A`AEh}}}AEj}{{{AEf{{b{A`AEd}}}}{b{A`AEh}}}AEj}{{{AEf{{b{A`AEb}}}}{b{A`AEh}}}AEj}{{{AEf{{b{A`Ld}}}}{b{A`AEh}}}AEj}{{{AEf{{b{A`Lb}}}}{b{A`AEh}}}AEj}{{{AEf{{b{A`AEl}}}}{b{A`AEh}}}AEj}{{{AEf{{b{A`Kh}}}}{b{A`AEh}}}{{AEj{c}}}{}}{{{AEf{{b{A`ABl}}}}{b{A`AEh}}}{{AEj{c}}}{}}{{{AEf{{b{A`Kl}}}}{b{A`AEh}}}{{AEj{c}}}{}}{{{AEf{{b{A`AAn}}}}{b{A`AEh}}}{{AEj{{Bd{fAEn}}}}}}{{{b{A`AAl}}{b{A`AEh}}{b{A`{n{j}}}}}{{AEj{{Bd{BbNj}}}}}}{{{AEf{{b{A`AAl}}}}{b{A`AEh}}{b{A`AF`}}}{{AEj{{Bd{fAEn}}}}}}2{{{AEf{{b{A`AAn}}}}{b{A`AEh}}{b{{n{j}}}}}{{AEj{{Bd{BbAEn}}}}}}{{{AEf{{b{A`AAn}}}}{b{A`AEh}}{b{{n{j}}}}}{{AEj{{Bd{BbO`}}}}}}{{{b{A`Lf}}{D`{Mj}}}{{b{A`Lf}}}}{{{b{A`Lf}}{D`{Ml}}}{{b{A`Lf}}}}{{{b{AAn}}}{{Bd{AFbA@d}}}}{LnLn}{{LnDj}Ln}{e{{AFd{cg}}}{}{{ADj{}{{Ih{c}}}}}{{Ij{}{{Ih{c}}}}}}00000000{{{b{A`AAl}}{b{A`{n{j}}}}}{{Bd{{D`{Bb}}Nj}}}}{{{b{A`AAl}}BbAn}{{Bd{{D`{AB`}}Nj}}}}{{{b{A`AAl}}{b{A`{n{AFf}}}}}{{Bd{{D`{Bb}}Nj}}}}{{{b{L`}}}AEl}{{{b{A`AAl}}{b{A`{n{j}}}}}{{Bd{fNn}}}}{{{b{A`AAl}}Bb}{{Bd{{Fn{j}}Nh}}}}```{{{b{A`Ll}}An}{{b{A`Ll}}}}{{{b{A`Ll}}Lj}{{b{A`Ll}}}}{{{b{A`AAl}}}{{Bd{{D`{Lj}}Nl}}}}{Kjf}{{{b{AAf}}}Ah}{{LnAAf}Ln}`{{{b{L`}}}Bj}{{{b{Kj}}}Bj}{{{b{Kl}}}Bj}{{{b{Kj}}}An}{{{b{Gb}}Gd}{{D`{Dh}}}}{{{b{Gb}}}{{`{{Bl{}{{Bh{Dh}}}}}}}}{{{b{A`Lh}}Lj}{{b{A`Lh}}}}{{{b{A`AAn}}Lj}{{Bd{fA@d}}}}``{Kj{{Gf{fABf}}}}{{{b{ACl}}Hh{b{ACn}}{b{{n{j}}}}}{{l{j}}}}{{{b{A`Lf}}Hj}{{b{A`Lf}}}}{{{b{L`}}}Hj}`{{Ljc}Lj{{Eb{Lj}}}}{{{b{Mh}}{b{A`{Fn{j}}}}{b{{n{j}}}}}{{Bd{fABh}}}}{{LnAb}Ln}{{{b{Gb}}}{{b{Ab}}}}{{{b{L`}}AFf}{{Bd{fNf}}}}{{{b{L`}}AFf}AFh}{{{b{A`Ll}}An}{{b{A`Ll}}}}{{{b{A`Ll}}Il}{{b{A`Ll}}}}``{{{b{Ol}}c}BdEl}{{{b{On}}c}BdEl}{{{b{Dh}}c}BdEl}{{{b{A@b}}c}BdEl}{{{b{A@f}}c}BdEl}{{{b{Gb}}{Fn{{Fn{j}}}}}{{Gf{f}}}}{{{b{L`}}Lj}f}0{{{b{AAn}}AFb}{{Bd{fA@d}}}}1{{{b{Nf}}}{{D`{{b{F`}}}}}}{{{b{Nh}}}{{D`{{b{F`}}}}}}{{{b{Nj}}}{{D`{{b{F`}}}}}}{{{b{Nl}}}{{D`{{b{F`}}}}}}{{{b{Nn}}}{{D`{{b{F`}}}}}}{{{b{O`}}}{{D`{{b{F`}}}}}}{{{b{Ob}}}{{D`{{b{F`}}}}}}{{{b{Kn}}}{{D`{{b{F`}}}}}}{{{b{Dh}}}{{Fn{{Db{A@fHj}}}}}}`{{{b{L`}}}Bb}{{{E`{ACl}}Hh{b{AFj}}}{{Fl{AFl}}}}{{{b{L`}}}Oj}{{{b{A`AAl}}Lj}{{Bd{fA@d}}}}`{{{b{A`AAn}}}{{Bd{{D`{Lj}}Ob}}}}``{{{b{A`Ll}}Lj}{{b{A`Ll}}}}``{{{b{A`Ll}}AFn}{{b{A`Ll}}}}{bc{}}00000000000000000000000000000000{bCf}0000000000000000000{{{b{A`Lf}}{E`{Mf}}}{{b{A`Lf}}}}`{{{b{A`Lf}}{E`{Ll}}}{{b{A`Lf}}}}{{LnLl}Ln}{c{{Bd{e}}}{}{}}000000000000000000{Il{{Bd{LjACh}}}}1{AG`{{Bd{LjACh}}}}{Bb{{Bd{LjACh}}}}333333333333333333333333333333333{{}{{Bd{c}}}{}}0000000000000000000000000000000000000000000000000000{{{AEf{{b{A`c}}}}{b{A`AEh}}}AEj{}}000000`{bFb}0000000000000000000000000000000000000000000000000000``{{{b{A`Mn}}B`}{{b{A`Mn}}}}{{}c{}}0000000000000000000000000000000000000000000000000000{{{b{L`}}}ABd}{{{b{Nd}}}Il}{{{E`{ACl}}}Lf}{{{Fn{AGb}}AGd}{{Bd{LfAGf}}}}{{{b{A`AAn}}{b{{n{j}}}}}{{Bd{BbO`}}}}{{{b{A`AAn}}{b{{n{j}}}}}{{Bd{fO`}}}}{{{b{A`AAn}}{b{A`{n{AFf}}}}}{{Bd{fO`}}}}{{{b{A`AAn}}AFf}{{Bd{fO`}}}}{{{b{A`AAn}}{b{A`{n{AFf}}}}}{{Bd{A@`O`}}}}``````{{bd}f}000`````````{b{{b{c}}}{}}000{{{b{A`}}}{{b{A`c}}}{}}000``{{{b{AGh}}}AGh}{{{b{AGj}}}AGj}{{{b{AGl}}}AGl}{{{b{AGn}}}AGn}{{b{b{A`c}}}f{}}000{{bj}f}000```{{}AGh}{{}AGj}{{}AGl}{{}AGn}{Bb{{b{c}}}{}}000{Bb{{b{A`c}}}{}}000````{Bbf}000`{{{b{AGh}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{AGj}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{AGl}}{b{A`Bn}}}Fj}{{{b{AGn}}{b{A`Bn}}}{{Bd{fC`}}}}`{cc{}}000{{{b{c}}}c{}}000`{{}Bb}000{{}c{}}000{{{b{AGh}}}{{AH`{{Db{{b{Ef}}{b{ACj}}}}}}}}{{{b{AGj}}}{{AH`{{Db{{b{Ef}}{b{ACj}}}}}}}}{{{b{AGl}}}{{AH`{{Db{{b{Ef}}{b{ACj}}}}}}}}{{{b{AGn}}}{{AH`{{Db{{b{Ef}}{b{ACj}}}}}}}}```{{}{{b{Ef}}}}000````````````````````````````````````````````````````{bc{}}000{c{{Bd{e}}}{}{}}000{{}{{Bd{c}}}{}}000{bFb}000```````{{}c{}}000````{{bd}f}{{{b{AHb}}Kl}{{AHd{{Gf{f}}}}}}{{AHfce}AHf{{AHh{{n{j}}}}}AHb}{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}0{GbAHf}{{{b{AHj}}}AHj}{{b{b{A`c}}}f{}}{{bj}f}{Bb{{b{c}}}{}}0{Bb{{b{A`c}}}{}}0{Bbf}0{{{b{AHj}}}{{b{Gb}}}}{{{b{AHf}}}{{b{Gb}}}}{{{b{AHj}}{b{A`Bn}}}Fj}{{{b{AHf}}{b{A`Bn}}}Fj}{cc{}}0{{{b{c}}}c{}}{{}Bb}0{{}c{}}0{{{b{AHj}}}An}?{{{b{AHb}}}{{AHd{f}}}}{{{b{AHj}}}{{Gf{f}}}}{AHf{{Gf{AHj}}}}{bc{}}{c{{Bd{e}}}{}{}}0{{}{{Bd{c}}}{}}0{bFb}0{{}c{}}0``{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}0{Bj{{Gf{Jd}}}}{Bb{{b{c}}}{}}0{Bb{{b{A`c}}}{}}0{{{b{AHl}}Ab}{{Fl{Fd}}}}{{{b{AHl}}}Id}{Bbf}0{{{b{AHn}}{b{A`Bn}}}Fj}{{{b{AHl}}{b{A`Bn}}}Fj}{cc{}}0{{}Bb}0{{}c{}}0``{{{b{AHl}}{b{Gd}}Hj}{{Gf{f}}}}`{{}{{Gf{AHl}}}}{{}{{Gf{{Db{AhAfAI`}}}}}}{{{D`{AIb}}An}{{Gf{{Db{AhAfAI`}}}}}}1{Cf{{Gf{AHl}}}}{c{{Bd{e}}}{}{}}0{{}{{Bd{c}}}{}}0{bFb}0{{}c{}}0``````{{bd}f}00{b{{b{c}}}{}}00000{{{b{A`}}}{{b{A`c}}}{}}00000{e{{AId{g}}}{}{{AIf{}{{Bh{c}}}}}{{AIh{}{{Bh{c}}}}}}{{{b{{AIj{c}}}}}{{AIj{c}}}{}}{{{b{{AAh{c}}}}}{{AAh{c}}}Jb}{{{b{{AIl{c}}}}}{{AIl{c}}}Jb}{{b{b{A`c}}}f{}}00{{bj}f}00{{}{{AIj{c}}}AIn}{Bb{{b{c}}}{}}00000{Bb{{b{A`c}}}{}}00000{Bbf}00000{{{b{{AIj{c}}}}{b{A`Bn}}}FjKd}{{{b{{AAh{c}}}}{b{A`Bn}}}FjKd}{{{b{{AJ`{c}}}}{b{A`Bn}}}FjKd}{{{b{{AJb{c}}}}{b{A`Bn}}}FjKd}{{{b{{AIl{c}}}}{b{A`Bn}}}FjKd}{{{b{AJd}}{b{A`Bn}}}Fj}0{cc{}}00000{{{b{c}}}c{}}00{{{b{{AIj{c}}}}}c{JbAJf}}{{{b{{AAh{c}}}}}{{Bd{cAJd}}}{JbAJf}}{{}Bb}00000{{{b{A`{AAh{{D`{c}}}}}}}{{AJb{c}}}{JbAJf}}{{}c{}}00000{{}}0{{}c{}}{c{{ADh{e}}}ADjIj}0{e{{AJh{cg}}}{}{{AIf{}{{Bh{c}}}}}{{AIh{}{{Bh{c}}}}}}{c{{AIj{c}}}{JbAJf}}{{{AEf{{b{A`{AJ`{c}}}}}}{b{A`AEh}}}{{AEj{e}}}{JbAJf}{}}{{{AEf{{b{A`{AJb{c}}}}}}{b{A`AEh}}}{{AEj{e}}}{JbAJf}{}}{{{AEf{{b{A`{AIl{c}}}}}}{b{A`AEh}}}{{AEj{{D`{e}}}}}{JbAJf}{}}{e{{AFd{cg}}}{}{{ADj{}{{Ih{c}}}}}{{Ij{}{{Ih{c}}}}}}0{{{b{{AJl{AJjceg}}}}}{{AJn{iceg}}}AK`AKbAKd{}}{{{b{{AJl{AJjceg}}}}AKf}{{AJn{iceg}}}AK`AKbAKd{}}{{{b{{AIj{c}}}}c}{{Bd{cc}}}{JbAJf}}{{{AAh{c}}}{{AIl{c}}}{JbAJf}}0{bc{}}00{bCf}{c{{Bd{e}}}{}{}}00000{{}{{Bd{c}}}{}}00000{{{AEf{{b{A`c}}}}{b{A`AEh}}}AEj{}}0{{{AEf{{b{A`c}}}}{b{A`AEh}}}{{AEj{{D`{Bd}}}}}{}}{bFb}00000{{{b{A`{AAh{c}}}}}{{AJ`{c}}}{JbAJf}}{{}c{}}00000{{{b{{AIj{c}}}}}{{AAh{c}}}{JbAJf}}{e{{AKh{g}}}{}{{AIf{}{{Bh{c}}}}}{{AIh{}{{Bh{c}}}}}}","D":"FD`","p":[[1,"reference",null,null,1],[5,"Private",2576],[1,"unit"],[5,"PublicKey",0,2577],[1,"u8"],[1,"array"],[1,"slice"],[0,"mut"],[5,"SecretKey",0,2577],[5,"NodeAddr",0,2578],[5,"RelayUrl",0,2579],[5,"RelayMap",0,2580],[5,"RelayNode",0,2580],[6,"Ordering",2581],[1,"bool"],[1,"u16"],[1,"usize"],[6,"Result",2582,null,1],[10,"Deserializer",2583],[17,"Item"],[6,"SocketAddr",2584],[10,"Iterator",2585],[5,"Formatter",2586],[5,"Error",2586],[6,"KeyParsingError",0,2577],[5,"RelayUrlParseError",0,2579],[5,"String",2587],[5,"VerifyingKey",2588],[5,"Error",2589],[5,"DecodeError",2590],[5,"SigningKey",2591],[6,"Option",2592,null,1],[1,"tuple",null,null,1],[5,"NodeTicket",2593],[5,"NodeInfo",564],[5,"RemoteInfo",655,2594],[5,"Url",2595],[6,"ParseError",2596],[5,"Error",2597],[5,"Arc",2598,null,1],[10,"Into",2599],[10,"IntoIterator",2600],[1,"str"],[10,"CryptoRngCore",2601],[10,"Hasher",2602],[10,"Serializer",2603],[5,"Signature",2604],[10,"Error",2605],[5,"TypeId",2606],[5,"ConcurrentDiscovery",298],[10,"Discovery",298],[5,"DiscoveryItem",298],[8,"Result",2586],[5,"Box",2607,null,1],[5,"Vec",2608],[5,"BTreeSet",2609],[5,"Endpoint",655],[8,"NodeId",0,2577],[8,"Result",2597],[8,"Boxed",2610],[5,"DnsDiscovery",351],[5,"LocalSwarmDiscovery",370],[5,"PkarrPublisher",389],[5,"PkarrResolver",389],[5,"PkarrRelayClient",389],[5,"SignedPacket",2611],[8,"BoxStream",2612],[1,"u32"],[5,"Duration",2613],[5,"Builder",466],[5,"DhtDiscovery",466],[5,"PkarrClient",2614],[5,"StaticProvider",515],[8,"DnsResolver",539],[10,"ResolverExt",539],[17,"Output"],[10,"Future",2615,null,1],[1,"u64"],[6,"IpAddr",2616],[10,"IntoName",2617],[10,"Clone",2618],[8,"TokioResolver",2619],[6,"IrohAttr",564],[5,"TxtAttrs",564],[5,"BTreeMap",2620],[10,"FromStr",2621],[10,"Display",2586],[10,"Hash",2602],[10,"Ord",2581],[10,"Debug",2586],[5,"Record",2622],[5,"Accept",655],[5,"Incoming",655],[5,"Connecting",655],[6,"ConnectionError",655,2623],[5,"Connection",655,2624],[5,"AcceptBi",655,2624],[5,"AcceptUni",655,2624],[5,"ServerConfig",655,2625],[5,"AckFrequencyConfig",655,2625],[5,"VarInt",655,2626],[5,"TransportConfig",655,2625],[5,"Builder",655],[10,"FnOnce",2627],[10,"Send",2628],[10,"Sync",2628],[10,"HandshakeTokenKey",655,2629],[10,"AeadKey",655,2629],[5,"SocketAddrV4",2584],[5,"SocketAddrV6",2584],[5,"MtuDiscoveryConfig",655,2625],[10,"ControllerFactory",655,2630],[5,"Instant",2631],[10,"Controller",655,2630],[6,"SendDatagramError",655,2624],[6,"ReadToEndError",655,2632],[6,"ReadError",655,2632],[6,"ResetError",655,2632],[6,"ReadExactError",655,2632],[6,"WriteError",655,2633],[6,"StoppedError",655,2633],[5,"UdpStats",655,2634],[5,"FrameStats",655,2634],[5,"PathStats",655,2634],[5,"ConnectionStats",655,2634],[6,"ControlMsg",655,2594],[5,"DirectAddrInfo",655,2594],[5,"Written",655,2635],[6,"ConnectionType",655,2594],[5,"ClosedStream",655,2636],[6,"Source",655,2637],[5,"ConnectionClose",655,2638],[5,"ApplicationClose",655,2638],[5,"TransportError",655],[5,"TransportErrorCode",655],[5,"DirectAddr",655,2639],[6,"DirectAddrType",655,2639],[5,"StreamId",655,2640],[6,"RelayMode",655],[5,"Watcher",2444],[6,"Dir",2640],[5,"RecvStream",655,2632],[5,"SendStream",655,2633],[5,"Chunk",655,2641],[5,"ExportKeyingMaterialError",655,2629],[5,"WeakConnectionHandle",655,2624],[5,"RetryError",655,2642],[5,"CryptoError",655,2629],[5,"UnsupportedVersion",655,2629],[5,"IncomingFuture",655],[6,"ReadableError",2643],[6,"Close",2638],[5,"Unspecified",2644],[5,"InvalidFrame",2638],[6,"Error",2645],[5,"VarIntBoundsExceeded",2626],[10,"Any",2606],[10,"CryptoServerConfig",655],[5,"ConnectionId",2646],[5,"Keys",2629],[6,"Side",2640],[5,"ZeroRttAccepted",655,2624],[5,"Incoming",2642],[5,"Join2",2647],[10,"IntoFuture",2648],[5,"IdleTimeout",2625],[5,"Receiver",2649],[5,"RttEstimator",2650],[5,"OpenBi",655,2624],[5,"OpenUni",655,2624],[5,"Pin",2651],[5,"Context",2652],[6,"Poll",2653],[5,"ReadDatagram",655,2624],[5,"Error",2654],[5,"ReadBuf",2655],[1,"i32"],[5,"Race2",2656],[5,"Bytes",2657],[5,"SendDatagram",2624],[5,"TransportParameters",2645],[10,"Session",2629],[1,"f32"],[1,"u128"],[5,"CertificateDer",2658],[6,"PrivateKeyDer",2658],[6,"Error",2659],[5,"PortmapMetrics",2183],[5,"NetReportMetrics",2183],[5,"MagicsockMetrics",2183],[5,"RelayMetrics",2183],[5,"IntoIter",2660],[10,"ProtocolHandler",2359],[8,"Boxed",2661],[5,"RouterBuilder",2359],[10,"AsRef",2599],[5,"Router",2359],[5,"DnsPkarrServer",2404,2662],[5,"CleanupDropGuard",2404],[5,"Server",2663],[5,"StunConfig",2663],[5,"Chain2",2664],[10,"IntoStream",2665],[10,"Stream",2612],[5,"Watchable",2444],[5,"WatcherStream",2444],[10,"Default",2666],[5,"WatchNextFut",2444],[5,"WatchInitializedFut",2444],[5,"Disconnected",2444],[10,"Eq",2581],[5,"Merge2",2667],[6,"NotKeyed",2668],[5,"RateLimiter",2669],[5,"RatelimitedStream",2670],[10,"DirectStateStore",2668],[10,"ReasonablyRealtime",2671],[10,"RateLimitingMiddleware",2672],[5,"Jitter",2673],[5,"Zip2",2674],[15,"Discovery",2181],[15,"NamedApp",2181]],"r":[[2,655],[4,2577],[6,2578],[7,2577],[8,2577],[9,2580],[10,655],[11,2580],[12,2579],[13,2579],[14,2577],[282,2675],[283,2675],[658,2624],[659,2624],[660,2625],[661,2629],[663,2638],[670,2641],[672,2636],[676,2624],[677,2638],[679,2623],[685,2634],[686,2594],[687,2594],[688,2630],[689,2630],[690,2629],[695,2639],[696,2594],[697,2639],[703,2629],[708,2634],[709,2629],[721,2625],[726,2624],[727,2624],[729,2634],[734,2624],[735,2632],[737,2632],[738,2632],[739,2632],[743,2594],[746,2632],[747,2642],[751,2624],[752,2633],[753,2625],[754,2637],[757,2633],[758,2640],[765,2625],[770,2634],[773,2629],[774,2626],[776,2624],[777,2633],[778,2635],[779,2624],[2405,2662],[2410,2676]],"b":[[125,"impl-Debug-for-PublicKey"],[126,"impl-Display-for-PublicKey"],[127,"impl-Debug-for-KeyParsingError"],[128,"impl-Display-for-KeyParsingError"],[129,"impl-Debug-for-SecretKey"],[130,"impl-Display-for-SecretKey"],[132,"impl-Display-for-RelayUrl"],[133,"impl-Debug-for-RelayUrl"],[134,"impl-Display-for-RelayUrlParseError"],[135,"impl-Debug-for-RelayUrlParseError"],[136,"impl-Debug-for-RelayMap"],[137,"impl-Display-for-RelayMap"],[138,"impl-Display-for-RelayNode"],[139,"impl-Debug-for-RelayNode"],[143,"impl-From%3CError%3E-for-KeyParsingError"],[145,"impl-From%3CDecodeError%3E-for-KeyParsingError"],[146,"impl-From%3C%5Bu8;+32%5D%3E-for-SecretKey"],[148,"impl-From%3CSigningKey%3E-for-SecretKey"],[150,"impl-From%3CPublicKey%3E-for-NodeAddr"],[151,"impl-From%3C(PublicKey,+Option%3CRelayUrl%3E,+%26%5BSocketAddr%5D)%3E-for-NodeAddr"],[152,"impl-From%3CNodeTicket%3E-for-NodeAddr"],[153,"impl-From%3CNodeInfo%3E-for-NodeAddr"],[154,"impl-From%3CRemoteInfo%3E-for-NodeAddr"],[239,"impl-TryFrom%3C%26%5Bu8%5D%3E-for-PublicKey"],[240,"impl-TryFrom%3C%26%5Bu8;+32%5D%3E-for-PublicKey"],[602,"impl-Display-for-IrohAttr"],[603,"impl-Debug-for-IrohAttr"],[608,"impl-From%3CTxtAttrs%3CIrohAttr%3E%3E-for-NodeInfo"],[609,"impl-From%3C%26TxtAttrs%3CIrohAttr%3E%3E-for-NodeInfo"],[1385,"impl-Display-for-SendDatagramError"],[1386,"impl-Debug-for-SendDatagramError"],[1387,"impl-Display-for-RetryError"],[1388,"impl-Debug-for-RetryError"],[1390,"impl-Debug-for-ReadToEndError"],[1391,"impl-Display-for-ReadToEndError"],[1392,"impl-Debug-for-ReadError"],[1393,"impl-Display-for-ReadError"],[1394,"impl-Display-for-ResetError"],[1395,"impl-Debug-for-ResetError"],[1396,"impl-Debug-for-ReadExactError"],[1397,"impl-Display-for-ReadExactError"],[1399,"impl-Display-for-WriteError"],[1400,"impl-Debug-for-WriteError"],[1401,"impl-Debug-for-StoppedError"],[1402,"impl-Display-for-StoppedError"],[1404,"impl-Debug-for-VarInt"],[1405,"impl-Display-for-VarInt"],[1411,"impl-Debug-for-ControlMsg"],[1412,"impl-Display-for-ControlMsg"],[1416,"impl-Display-for-ConnectionType"],[1417,"impl-Debug-for-ConnectionType"],[1418,"impl-Debug-for-ClosedStream"],[1419,"impl-Display-for-ClosedStream"],[1420,"impl-Display-for-Source"],[1421,"impl-Debug-for-Source"],[1422,"impl-Display-for-ConnectionError"],[1423,"impl-Debug-for-ConnectionError"],[1430,"impl-Debug-for-ConnectionClose"],[1431,"impl-Display-for-ConnectionClose"],[1432,"impl-Display-for-ApplicationClose"],[1433,"impl-Debug-for-ApplicationClose"],[1434,"impl-Display-for-TransportError"],[1435,"impl-Debug-for-TransportError"],[1436,"impl-Display-for-TransportErrorCode"],[1437,"impl-Debug-for-TransportErrorCode"],[1439,"impl-Display-for-DirectAddrType"],[1440,"impl-Debug-for-DirectAddrType"],[1441,"impl-Display-for-StreamId"],[1442,"impl-Debug-for-StreamId"],[1470,"impl-From%3CResetError%3E-for-ReadError"],[1471,"impl-From%3CConnectionError%3E-for-ReadError"],[1472,"impl-From%3CReadableError%3E-for-ReadError"],[1478,"impl-From%3CClosedStream%3E-for-WriteError"],[1480,"impl-From%3CStoppedError%3E-for-WriteError"],[1481,"impl-From%3CConnectionError%3E-for-WriteError"],[1485,"impl-From%3Cu16%3E-for-VarInt"],[1487,"impl-From%3Cu8%3E-for-VarInt"],[1488,"impl-From%3CStreamId%3E-for-VarInt"],[1489,"impl-From%3Cu32%3E-for-VarInt"],[1502,"impl-From%3CClose%3E-for-ConnectionError"],[1503,"impl-From%3CTransportError%3E-for-ConnectionError"],[1515,"impl-From%3CTransportErrorCode%3E-for-TransportError"],[1516,"impl-From%3CInvalidFrame%3E-for-TransportError"],[1518,"impl-From%3CError%3E-for-TransportError"],[1797,"impl-RecvStream"],[1798,"impl-AsyncRead-for-RecvStream"],[1800,"impl-AsyncWrite-for-SendStream"],[1801,"impl-SendStream"],[1965,"impl-TryFrom%3Cu64%3E-for-VarInt"],[1967,"impl-TryFrom%3Cu128%3E-for-VarInt"],[1968,"impl-TryFrom%3Cusize%3E-for-VarInt"],[2499,"impl-Debug-for-Disconnected"],[2500,"impl-Display-for-Disconnected"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAPAGowADAAAACwAAABAABQAXACsARgAVAGAABwBqACIAjgAAAJAAAACSAAEAlQAAAJcAAQCaAAEAnQAAAJ8AAACmAAgAsgAJAMsAAwDWAAQA3AABAOIAJwANAQcALgEAADABCwA9AQEAQAEBAEQBAQBHAQEAUQEAAFMBAABWAQkAYwEFAGoBAABuAQQAdQEFAHwBAAB/AQYAjQEXAKYBBgCwAQUAvgEAAMABAADCAQsAzwECANUBBADdAQgA5wEDAO0BAADvAQEA9gEAAPgBAAD6AQQAAAIDAAcCBgARAgAAFAIAABYCAAAYAgMAKAIAADACAAA7AgEAPgIQAFACDgBhAgEAZAIAAGoCAQBuAgMAegIAAH4CAACBAgAAgwIMABEDIAA4AwAAOgMAAEoDaQC8AyAA3gNBACQEAwApBAMAMwQAADUEAAA6BAEAQAQKAEwEbgDEBDYA/ARnAGgFQgC4BQAAvAUAAL8FAwDEBQAAxwUAAMkFAQDMBQAAzgUAANAFAgDfBQEA5gUAAOoFAADsBQEA7wUAAPQFAAD8BSAAIwYAACUGBAAuBgAAMgY0AKUGCQC1BggA0gYAANYGAgDhBgEA5gYAAPIGAwD3BgEA+wYKAAcHAgAQBwgAMQcBAEIHBABMBwcAWgcAAFwHAQBfBwEAYgc0AJsHEgCvBwAAsgdcABAINABICDQAjAgDAJEIDwCjCAsAsggLAMIICADQCAMA1QgDAN0ICgDxCAYA+QgHAAMJCAAPCQYAFwkUAC4JCAA7CQAAPgkDAEMJCABOCQEAUgkCAFwJCABnCQMAbAkDAHIJAwB4CQEAhQkHAJMJMgDMCQIA0QkFAN4JBQDlCQYA7wkYAAkKBQAQCgAA","P":[[24,"T"],[40,""],[46,"T"],[52,""],[62,"K"],[66,""],[69,"T"],[74,""],[75,"T"],[86,"D"],[88,"__D"],[91,""],[110,"K"],[125,""],[142,"T"],[143,""],[144,"T"],[145,""],[147,"T"],[148,""],[149,"T"],[150,""],[155,"T"],[156,""],[157,"T"],[158,""],[159,"T"],[161,""],[163,"I,"],[164,""],[165,"T"],[171,""],[175,"R"],[176,""],[177,"H"],[178,"__H"],[179,""],[187,"U"],[195,""],[213,"S"],[215,"__S"],[218,""],[225,"T"],[231,""],[238,"U,T"],[239,""],[241,"U,T"],[243,""],[244,"U,T"],[249,"U"],[257,""],[268,"V"],[277,""],[278,""],[302,""],[303,"T"],[307,""],[308,"T"],[309,""],[311,"T"],[316,""],[321,"T"],[325,""],[328,"U"],[335,""],[342,"T"],[343,"U,T"],[345,"U"],[347,""],[349,"V"],[354,"T"],[358,""],[360,"T"],[361,""],[362,"U"],[363,""],[366,"U,T"],[367,"U"],[368,""],[369,"V"],[372,"T"],[376,""],[378,"T"],[379,""],[380,"U"],[381,""],[385,"U,T"],[386,"U"],[387,""],[388,"V"],[396,""],[399,"T"],[405,""],[408,"T"],[411,""],[414,"T"],[421,""],[428,"T"],[434,""],[437,"U"],[440,""],[449,"T"],[452,"U,T"],[455,"U"],[458,""],[462,"V"],[465,""],[469,"T"],[473,""],[477,"T"],[478,""],[481,"T"],[485,""],[490,"T"],[493,""],[497,"U"],[499,""],[505,"T"],[506,"U,T"],[508,"U"],[510,""],[513,"V"],[517,""],[518,"T"],[520,""],[521,"T"],[523,""],[525,"T"],[526,","],[527,""],[529,"U"],[530,""],[534,""],[535,"U,T"],[536,"U"],[537,""],[538,"V"],[541,""],[550,"N"],[563,""],[572,"T"],[579,""],[580,"T"],[581,""],[583,"K"],[584,"T"],[591,""],[596,"K"],[602,""],[605,"T"],[608,""],[610,"T"],[611,""],[613,"T"],[614,"T,"],[615,""],[616,"T"],[618,"FromStr::Err"],[619,",T"],[620,""],[621,"__H"],[622,""],[625,"U"],[628,"T"],[630,""],[631,"T"],[633,""],[636,"T"],[638,""],[639,"T"],[640,""],[642,"TryFrom::Error"],[643,"U,T"],[646,"U"],[649,""],[652,"V"],[784,""],[826,"D,F"],[827,""],[841,"T"],[947,""],[989,"T"],[1022,""],[1064,"K"],[1068,""],[1073,""],[1075,""],[1099,"T"],[1205,"__D"],[1210,""],[1301,"K"],[1381,""],[1455,"T"],[1463,""],[1464,"T"],[1467,""],[1468,"T"],[1470,""],[1474,"T"],[1475,""],[1476,"T"],[1478,""],[1479,"T"],[1480,""],[1482,"T"],[1483,""],[1484,"T"],[1485,""],[1486,"T"],[1487,""],[1490,"T"],[1502,""],[1504,"T"],[1509,""],[1510,"T"],[1513,""],[1514,"T"],[1515,""],[1517,"T"],[1518,""],[1519,"T"],[1523,""],[1524,"T"],[1564,""],[1572,"__H"],[1577,""],[1645,"U"],[1698,""],[1707,"IntoFuture::IntoFuture"],[1708,""],[1716,"F2,F1"],[1725,""],[1793,"Future::Output"],[1796,""],[1807,"T,S2,F1"],[1816,""],[1847,""],[1848,""],[1857,"__S"],[1862,""],[1889,"T"],[1922,""],[1946,"U,T"],[1965,""],[1966,"U,T"],[1967,""],[1969,"U,T"],[2002,"U"],[2055,"F"],[2063,""],[2119,"V"],[2172,""],[2200,"T"],[2210,""],[2214,"T"],[2218,""],[2229,"T"],[2241,""],[2251,"T"],[2260,""],[2264,"U"],[2268,""],[2331,"T"],[2335,"U,T"],[2339,"U"],[2343,""],[2354,"V"],[2362,""],[2364,",T"],[2365,"T"],[2369,""],[2371,"T"],[2372,""],[2373,"T"],[2377,""],[2383,"T"],[2386,""],[2388,"U"],[2390,""],[2395,"T"],[2396,"U,T"],[2398,"U"],[2400,""],[2402,"V"],[2406,"T"],[2410,""],[2411,"T"],[2415,""],[2421,"T"],[2423,""],[2425,"U"],[2429,""],[2436,"U,T"],[2438,"U"],[2440,""],[2442,"V"],[2450,""],[2453,"T"],[2465,"T,S2,S1"],[2466,"T"],[2472,""],[2475,"T"],[2488,""],[2494,"T"],[2499,""],[2501,"T"],[2512,""],[2518,"T"],[2519,"U"],[2525,""],[2527,"S"],[2528,"F2,F1"],[2530,"T,S2,S1"],[2531,"T"],[2532,"T,Future::Output"],[2534,"T,Stream::Item"],[2535,"T,S2,F1"],[2537,"D,C,MW,S"],[2539,"T"],[2545,""],[2546,"U,T"],[2552,"U"],[2558,"F"],[2560,"S"],[2561,""],[2567,"T"],[2568,"V"],[2574,"T"],[2575,"T,S2,S1"]]}],["iroh_base",{"t":"TPPPGTFIFFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNONNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPGTPFPKPNNNNNNNNNNNNNNNNNNNMNNNNNNNNNMNNNNNNNNNNO","n":["BYTE_SIZE","Decode","DecodeInvalidLength","Key","KeyParsingError","LENGTH","NodeAddr","NodeId","PublicKey","RelayUrl","RelayUrlParseError","SecretKey","Signature","as_bytes","as_ref","borrow","","","","","","","","borrow_mut","","","","","","","clone","","","","","clone_into","","","","","clone_to_uninit","","","","","cmp","","","deref","deserialize","","","","","direct_addresses","","eq","","","","fmt","","","","","","","","","","","","","","","fmt_short","from","","","","","","","","","","","","","","","","","","","","from_bytes","","","from_components","from_parts","from_slice","from_str","","","","generate","hash","","into","","","","","","","is_empty","new","node_id","partial_cmp","","","public","","r_bytes","relay_url","","s_bytes","secret","serialize","","","","","sign","source","","ticket","to_bytes","","","to_owned","","","","","to_string","","","","","","to_vec","try_from","","","","","","","","","","","try_into","","","","","","","type_id","","","","","","","verify","with_direct_addresses","with_relay_url","Encoding","Error","KIND","Kind","NodeTicket","Postcard","Ticket","Verify","borrow","","borrow_mut","","clone","clone_into","clone_to_uninit","deserialize","","eq","fmt","","","","from","","","","","from_bytes","","from_str","into","","new","node_addr","serialize","","source","to_bytes","","to_owned","to_string","","try_from","","try_into","","type_id","","expected"],"q":[[0,"iroh_base"],[181,"iroh_base::ticket"],[229,"iroh_base::ticket::Error"],[230,"iroh_base::key"],[231,"ed25519"],[232,"iroh_base::node_addr"],[233,"iroh_base::relay_url"],[234,"core::cmp"],[235,"core::result"],[236,"serde::de"],[237,"core::net::socket_addr"],[238,"core::iter::traits::iterator"],[239,"core::fmt"],[240,"alloc::string"],[241,"ed25519_dalek::signature"],[242,"ed25519_dalek::verifying"],[243,"ed25519_dalek::errors"],[244,"data_encoding"],[245,"ed25519_dalek::signing"],[246,"core::option"],[247,"iroh_base::ticket::node"],[248,"url"],[249,"url::parser"],[250,"core::iter::traits::collect"],[251,"signature::error"],[252,"rand_core"],[253,"core::hash"],[254,"serde::ser"],[255,"core::error"],[256,"alloc::vec"],[257,"core::any"],[258,"postcard::error"]],"i":"nBl00`b```````002001A`AbAdBn645321064321643216432142116432122642166664455332110046666445553332222110064362664313416453210222421436226364321350`6636432164531066644453321064532106453210422El`Ej1`1`1Db202000100002200222100020010210002020202F`","f":"`````````````{{{d{b}}}{{d{{h{f}}}}}}{{{d{b}}}{{d{{j{f}}}}}}{d{{d{c}}}{}}2000000{{{d{l}}}{{d{lc}}}{}}000000{{{d{n}}}n}{{{d{b}}}b}{{{d{A`}}}A`}{{{d{Ab}}}Ab}{{{d{Ad}}}Ad}{{d{d{lc}}}Af{}}0000{{df}Af}0000{{{d{b}}{d{b}}}Ah}{{{d{Ab}}{d{Ab}}}Ah}{{{d{Ad}}{d{Ad}}}Ah}{{{d{Ad}}}{{d{c}}}{}}{c{{Aj{n}}}Al}{c{{Aj{b}}}Al}{c{{Aj{A`}}}Al}{c{{Aj{Ab}}}Al}{c{{Aj{Ad}}}Al}{{{d{Ab}}}{{`{{Bb{}{{An{{d{B`}}}}}}}}}}`{{{d{n}}{d{n}}}Bd}{{{d{b}}{d{b}}}Bd}{{{d{Ab}}{d{Ab}}}Bd}{{{d{Ad}}{d{Ad}}}Bd}{{{d{n}}{d{lBf}}}{{Aj{AfBh}}}}000{{{d{b}}{d{lBf}}}Bj}0{{{d{Bl}}{d{lBf}}}Bj}0{{{d{A`}}{d{lBf}}}Bj}0{{{d{Ab}}{d{lBf}}}Bj}{{{d{Ad}}{d{lBf}}}Bj}0{{{d{Bn}}{d{lBf}}}Bj}0{{{d{b}}}C`}{cc{}}{{{d{{h{f}}}}}n}{{{h{f}}}n}{Cbn}3{Cdb}4{CfBl}{ChBl}{{{h{f}}}A`}7{CjA`}{{{Cn{b{Cl{Ad}}{d{{j{B`}}}}}}}Ab}{D`Ab}{DbAb};{DdAd}<{DfBn}=<{{{d{{h{f}}}}}{{Aj{bCf}}}}{{{d{{h{f}}}}}A`}{{{h{f}}{h{f}}}n}{{b{Cl{Ad}}c}Ab{{Dh{}{{An{B`}}}}}}{{{d{{j{f}}}}}{{Aj{nDj}}}}{{{d{Dl}}}{{Aj{nDj}}}}{{{d{Dl}}}{{Aj{bc}}}{}}{{{d{Dl}}}{{Aj{A`c}}}{}}{{{d{Dl}}}{{Aj{Adc}}}{}}{cA`Dn}{{{d{b}}{d{lc}}}AfE`}{{{d{Ad}}{d{lc}}}AfE`}{{}c{}}000000{{{d{Ab}}}Bd}{bAb}`{{{d{b}}{d{b}}}{{Cl{Ah}}}}{{{d{Ab}}{d{Ab}}}{{Cl{Ah}}}}{{{d{Ad}}{d{Ad}}}{{Cl{Ah}}}}{{{d{b}}}Cd}{{{d{A`}}}b}{{{d{n}}}{{d{{h{f}}}}}}{{{d{Ab}}}{{Cl{{d{Ad}}}}}}`1{{{d{A`}}}{{d{Cj}}}}{{{d{n}}c}AjEb}{{{d{b}}c}AjEb}{{{d{A`}}c}AjEb}{{{d{Ab}}c}AjEb}{{{d{Ad}}c}AjEb}{{{d{A`}}{d{{j{f}}}}}n}{{{d{Bl}}}{{Cl{{d{Ed}}}}}}{{{d{Bn}}}{{Cl{{d{Ed}}}}}}`{{{d{n}}}{{h{f}}}}0{{{d{A`}}}{{h{f}}}}{dc{}}0000{dC`}00000{{{d{n}}}{{Ef{f}}}}{c{{Aj{e}}}{}{}}{{{d{{j{f}}}}}{{Aj{nDj}}}}{{{d{{j{f}}}}}{{Aj{bc}}}{}}{{{d{{h{f}}}}}{{Aj{bc}}}{}}333{{{d{{j{f}}}}}{{Aj{A`c}}}{}}444{{}{{Aj{c}}}{}}000000{dEh}000000{{{d{b}}{d{{j{f}}}}{d{n}}}{{Aj{AfCf}}}}{{Abc}Ab{{Dh{}{{An{B`}}}}}}{{AbAd}Ab}````````{d{{d{c}}}{}}0{{{d{l}}}{{d{lc}}}{}}0{{{d{Db}}}Db}{{d{d{lc}}}Af{}}{{df}Af}{{{d{Dl}}}{{Aj{EjEl}}}}{c{{Aj{Db}}}Al}{{{d{Db}}{d{Db}}}Bd}{{{d{Db}}{d{lBf}}}Bj}0{{{d{El}}{d{lBf}}}Bj}0{cc{}}{AbDb}1{ChEl}{EnEl}{{{d{{j{f}}}}}{{Aj{EjEl}}}}{{{d{{j{f}}}}}{{Aj{DbEl}}}}{{{d{Dl}}}{{Aj{Dbc}}}{}}{{}c{}}06{{{d{Db}}}{{d{Ab}}}}{{{d{Ej}}}C`}{{{d{Db}}c}AjEb}{{{d{El}}}{{Cl{{d{Ed}}}}}}{{{d{Ej}}}{{Ef{f}}}}{{{d{Db}}}{{Ef{f}}}}{dc{}}{dC`}0{c{{Aj{e}}}{}{}}0{{}{{Aj{c}}}{}}0{dEh}0`","D":"Il","p":[[5,"PublicKey",0,230],[1,"reference",null,null,1],[1,"u8"],[1,"array"],[1,"slice"],[0,"mut"],[5,"Signature",0,231],[5,"SecretKey",0,230],[5,"NodeAddr",0,232],[5,"RelayUrl",0,233],[1,"unit"],[6,"Ordering",234],[6,"Result",235,null,1],[10,"Deserializer",236],[17,"Item"],[6,"SocketAddr",237],[10,"Iterator",238],[1,"bool"],[5,"Formatter",239],[5,"Error",239],[8,"Result",239],[6,"KeyParsingError",0,230],[5,"RelayUrlParseError",0,233],[5,"String",240],[5,"InternalSignature",241],[5,"VerifyingKey",242],[8,"SignatureError",243],[5,"DecodeError",244],[5,"SigningKey",245],[6,"Option",246,null,1],[1,"tuple",null,null,1],[8,"NodeId",0,230],[5,"NodeTicket",181,247],[5,"Url",248],[6,"ParseError",249],[10,"IntoIterator",250],[5,"Error",251],[1,"str"],[10,"CryptoRngCore",252],[10,"Hasher",253],[10,"Serializer",254],[10,"Error",255],[5,"Vec",256],[5,"TypeId",257],[10,"Ticket",181],[6,"Error",181],[6,"Error",258],[15,"Kind",229]],"r":[[4,230],[6,232],[7,230],[8,230],[9,233],[10,233],[11,230],[12,231],[185,247]],"b":[[60,"impl-Debug-for-Signature"],[61,"impl-Display-for-Signature"],[62,"impl-LowerHex-for-Signature"],[63,"impl-UpperHex-for-Signature"],[64,"impl-Display-for-PublicKey"],[65,"impl-Debug-for-PublicKey"],[66,"impl-Debug-for-KeyParsingError"],[67,"impl-Display-for-KeyParsingError"],[68,"impl-Display-for-SecretKey"],[69,"impl-Debug-for-SecretKey"],[71,"impl-Display-for-RelayUrl"],[72,"impl-Debug-for-RelayUrl"],[73,"impl-Debug-for-RelayUrlParseError"],[74,"impl-Display-for-RelayUrlParseError"],[77,"impl-From%3C%26%5Bu8;+ed25519::::SignatureBytes::%7Bconstant%230%7D%5D%3E-for-Signature"],[78,"impl-From%3C%5Bu8;+ed25519::::SignatureBytes::%7Bconstant%230%7D%5D%3E-for-Signature"],[79,"impl-From%3CInternalSignature%3E-for-Signature"],[83,"impl-From%3CError%3E-for-KeyParsingError"],[84,"impl-From%3CDecodeError%3E-for-KeyParsingError"],[85,"impl-From%3C%5Bu8;+32%5D%3E-for-SecretKey"],[87,"impl-From%3CSigningKey%3E-for-SecretKey"],[88,"impl-From%3C(PublicKey,+Option%3CRelayUrl%3E,+%26%5BSocketAddr%5D)%3E-for-NodeAddr"],[89,"impl-From%3CPublicKey%3E-for-NodeAddr"],[90,"impl-From%3CNodeTicket%3E-for-NodeAddr"],[138,"impl-SignatureEncoding-for-Signature"],[139,"impl-Signature"],[155,"impl-TryFrom%3C%26%5Bu8%5D%3E-for-PublicKey"],[156,"impl-TryFrom%3C%26%5Bu8;+32%5D%3E-for-PublicKey"],[199,"impl-Debug-for-NodeTicket"],[200,"impl-Display-for-NodeTicket"],[201,"impl-Display-for-Error"],[202,"impl-Debug-for-Error"],[206,"impl-From%3CDecodeError%3E-for-Error"],[207,"impl-From%3CError%3E-for-Error"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAJgAFgAPACcAOQASAE4AAgBSAAAAVAACAFgAAgBdAAAAXwAAAGcAAwBsAAEAeAACAIIABACIAAEAiwAAAI4ACgCaABgAvgAGAMYABQDPAAEA0gABANkAAQDcAAkA","P":[[15,"T"],[16,""],[17,"T"],[30,""],[35,"T"],[40,""],[48,"Deref::Target"],[49,"D"],[52,"__D"],[54,""],[76,"T"],[77,""],[80,"T"],[81,""],[82,"T"],[83,""],[86,"T"],[87,""],[91,"T"],[92,""],[93,"T"],[94,""],[95,"T"],[96,""],[100,""],[101,""],[103,"FromStr::Err"],[106,"R"],[107,"H"],[108,"__H"],[109,"U"],[116,""],[129,"S"],[132,"__S"],[134,""],[141,"T"],[146,""],[153,"U,T"],[154,""],[155,"TryFrom::Error"],[157,"U,T"],[160,"TryFrom::Error"],[161,"U,T"],[164,"U"],[171,""],[179,""],[180,""],[189,"T"],[193,""],[194,"T"],[195,""],[197,"D"],[198,""],[203,"T"],[204,""],[205,"T"],[206,""],[210,"FromStr::Err"],[211,"U"],[213,""],[216,"S"],[217,""],[220,"T"],[221,""],[223,"U,T"],[225,"U"],[227,""]]}],["iroh_bench",{"t":"FGGGPPPFPPPPNNNNNNNNNNNNNNNNHONNNNNNNNNNNNHNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNONNNNNCOONCOHCCNOONNNNNNNNNNNNNNNNNNNNNONNNNNOSHHHHHHSHHHHHHFNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFONNNNNNOOOONNNNNNNNNNNOONNNNNNNNNNNNNNONOOOHOOONNNNNNOONNNNNN","n":["ClientStats","Commands","ConnectionSelector","EndpointSelector","Iroh","","","Opt","Quinn","","","S2n","__clone_box","","augment_args","augment_args_for_update","augment_subcommands","augment_subcommands_for_update","borrow","","","","","borrow_mut","","","","","client_handler","clients","clone","","clone_into","","clone_to_uninit","","close","","command","","command_for_update","","configure_tracing_subscriber","default","deref","","","","","deref_mut","","","","","download_size","drop","","","","","fmt","","from","","","","","from_arg_matches","","from_arg_matches_mut","","from_ref","","group_id","has_subcommand","init","","","","","initial_mtu","into","","","","","iroh","max_streams","metrics","print","quinn","read_unordered","rt","s2n","stats","","","streams","to_owned","","try_from","","","","","try_into","","","","","type_id","","","","","update_from_arg_matches","","update_from_arg_matches_mut","","upload_size","vzip","","","","","with_relay","ALPN","client","connect_client","handle_client_stream","server","server_endpoint","transport_config","ALPN","client","connect_client","handle_client_stream","server","server_endpoint","transport_config","Opt","__clone_box","augment_args","augment_args_for_update","borrow","borrow_mut","clone","clone_into","clone_to_uninit","command","command_for_update","deref","deref_mut","drop","fmt","from","from_arg_matches","from_arg_matches_mut","from_ref","group_id","init","into","to_owned","try_from","try_into","type_id","update_from_arg_matches","update_from_arg_matches_mut","vzip","Stats","StreamStats","TransferResult","avg_chunk_size","borrow","","","borrow_mut","","","chunk_size","chunk_time","chunks","","default","","deref","","","deref_mut","","","drop","","","duration","duration_hist","fmt","","","from","","","init","","","into","","","new","print","size","stream_finished","stream_stats","streams","throughput","throughput_bps","throughput_hist","total_duration","total_size","try_from","","","try_into","","","ttfb","ttfb_hist","type_id","","","vzip","",""],"q":[[0,"iroh_bench"],[126,"iroh_bench::iroh"],[133,"iroh_bench::quinn"],[140,"iroh_bench::s2n"],[169,"iroh_bench::stats"],[233,"dyn_clone::sealed"],[234,"clap_builder::builder::command"],[235,"anyhow"],[236,"core::fmt"],[237,"clap_builder::parser::matches::arg_matches"],[238,"clap_builder"],[239,"core::result"],[240,"clap_builder::util::id"],[241,"core::option"],[242,"tokio::runtime::runtime"],[243,"core::any"],[244,"iroh_base::node_addr"],[245,"iroh_base::relay_url"],[246,"iroh::endpoint"],[247,"iroh_quinn::connection"],[248,"iroh_quinn_proto::config"],[249,"core::net::socket_addr"],[250,"rustls_pki_types"],[251,"iroh_quinn::endpoint"],[252,"core::time"]],"i":"````lnAf`21000A`00113210Ab43210`1212121432121`0432104321014321021432102121211243210143210`110`1```3112143210432104321021211432101```````````````E`000000000000000000000000000```DbEbEd2102000210102102102201021021021022121112`01110210220102102","f":"````````````{{bd}f}0{hh}000{b{{b{c}}}{}}0000{{{b{j}}}{{b{jc}}}{}}0000{{lnA`}{{Ad{Ab}}}}`{{{b{Af}}}Af}{{{b{A`}}}A`}{{b{b{jc}}}f{}}0{{bAh}f}0{l{{Ad{f}}}}{{{b{n}}Aj{b{{Al{Ah}}}}}f}{{}h}000{{}f}{{}Ab}{An{{b{c}}}{}}0000{An{{b{jc}}}{}}0000`{Anf}0000{{{b{Af}}{b{jB`}}}Bb}{{{b{A`}}{b{jB`}}}Bb}{cc{}}0000{{{b{Bd}}}{{Bh{AfBf}}}}{{{b{Bd}}}{{Bh{A`Bf}}}}{{{b{jBd}}}{{Bh{AfBf}}}}{{{b{jBd}}}{{Bh{A`Bf}}}}{{{b{c}}}c{}}0{{}{{Bl{Bj}}}}{{{b{Bn}}}C`}{{}An}0000`{{}c{}}0000```{{{b{Ab}}An}f}``{{}Cb}``{{{b{n}}}f}``{bc{}}0{c{{Bh{e}}}{}{}}0000{{}{{Bh{c}}}{}}0000{bCd}0000{{{b{jAf}}{b{Bd}}}{{Bh{fBf}}}}{{{b{jA`}}{b{Bd}}}{{Bh{fBf}}}}{{{b{jAf}}{b{jBd}}}{{Bh{fBf}}}}{{{b{jA`}}{b{jBd}}}{{Bh{fBf}}}}`{{}c{}}0000``{{Cf{Bl{Ch}}A`}{{Ad{Ab}}}}{{Cf{Bl{Ch}}A`}{{Ad{{Cn{CjCl}}}}}}{{{b{Cl}}D`C`}{{Ad{{Cn{DbDb}}}}}}{{CjA`}{{Ad{f}}}}{{{b{Cb}}{b{{Bl{Ch}}}}{b{A`}}}{{Cn{CfCj}}}}{{AnDd}Df}`{{DhDjA`}{{Ad{Ab}}}}{{DhDjA`}{{Ad{{Cn{DlCl}}}}}}5{{DlA`}{{Ad{f}}}}{{{b{Cb}}DjDn{b{A`}}}{{Cn{DhDl}}}}4`{{bd}f}{hh}0{b{{b{c}}}{}}{{{b{j}}}{{b{jc}}}{}}{{{b{E`}}}E`}{{b{b{jc}}}f{}}{{bAh}f}{{}h}0{An{{b{c}}}{}}{An{{b{jc}}}{}}{Anf}{{{b{E`}}{b{jB`}}}Bb}{cc{}}{{{b{Bd}}}{{Bh{E`Bf}}}}{{{b{jBd}}}{{Bh{E`Bf}}}}{{{b{c}}}c{}}{{}{{Bl{Bj}}}}{{}An}{{}c{}}{bc{}}{c{{Bh{e}}}{}{}}{{}{{Bh{c}}}{}}{bCd}{{{b{jE`}}{b{Bd}}}{{Bh{fBf}}}}{{{b{jE`}}{b{jBd}}}{{Bh{fBf}}}}{{}c{}}````{b{{b{c}}}{}}00{{{b{j}}}{{b{jc}}}{}}00````{{}Eb}{{}Ed}{An{{b{c}}}{}}00{An{{b{jc}}}{}}00{Anf}00``{{{b{Eb}}{b{jB`}}}Bb}{{{b{Ed}}{b{jB`}}}Bb}{{{b{Db}}{b{jB`}}}Bb}{cc{}}00{{}An}00{{}c{}}00{{EfD`EfD`}Db}{{{b{Eb}}{b{Bn}}}f}`{{{b{jEb}}Db}f}```{{EfD`}Eh}```{c{{Bh{e}}}{}{}}00{{}{{Bh{c}}}{}}00``{bCd}00{{}c{}}00","D":"Dj","p":[[1,"reference",null,null,1],[5,"Private",233],[1,"unit"],[5,"Command",234],[0,"mut"],[6,"EndpointSelector",0],[6,"ConnectionSelector",0],[5,"Opt",0],[5,"ClientStats",0],[8,"Result",235],[6,"Commands",0],[1,"u8"],[1,"u32"],[1,"slice"],[1,"usize"],[5,"Formatter",236],[8,"Result",236],[5,"ArgMatches",237],[8,"Error",238],[6,"Result",239,null,1],[5,"Id",240],[6,"Option",241,null,1],[1,"str"],[1,"bool"],[5,"Runtime",242],[5,"TypeId",243],[5,"NodeAddr",244],[5,"RelayUrl",245],[5,"Endpoint",246],[5,"Connection",247],[1,"tuple",null,null,1],[1,"u64"],[5,"TransferResult",169],[1,"u16"],[5,"TransportConfig",248],[6,"SocketAddr",249],[5,"CertificateDer",250],[5,"Endpoint",251],[6,"PrivateKeyDer",250],[5,"Opt",140],[5,"Stats",169],[5,"StreamStats",169],[5,"Duration",252],[1,"f64"]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAMQAEgAAABwAHwAXADgABgBEAAwAVwAAAFoAAQBdAAMAYwAUAHkABAB/AAAAggAAAIUAAQCJAAAAjAAPAJ0ABACjACQAywACANEAGAA=","P":[[18,"T"],[28,""],[32,"T"],[34,""],[44,"T"],[55,""],[62,"T"],[67,""],[71,"T"],[73,""],[81,"U"],[89,""],[98,"T"],[100,"U,T"],[105,"U"],[110,""],[120,"V"],[127,""],[144,"T"],[146,""],[147,"T"],[148,""],[151,"T"],[153,""],[155,"T"],[156,""],[158,"T"],[159,""],[161,"U"],[162,"T"],[163,"U,T"],[164,"U"],[165,""],[168,"V"],[173,"T"],[183,""],[185,"T"],[191,""],[199,"T"],[202,""],[205,"U"],[208,""],[219,"U,T"],[222,"U"],[227,""],[230,"V"]]}],["iroh_dns_server",{"t":"FNNNNNNCCNNNNCNNNCNNNCCNNNNNNGFPPFFFNOONNNNNNNNNNNNNNNNNNNNNNNNOOONNNNNNNNNNNOONNNNNNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNOFFFFNNNNONNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNOOOOONNNNNNNNNNNNNNNNNNNNNNNNGPFFFPPGPPPNNNNOONNNNNNNNNNONNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNOOOOOONNNOOOOHNNNOOOOOONNNNNFNNNNNHNNNNNNFNNNNNNONNNONNNNN","n":["ZoneStore","__clone_box","borrow","borrow_mut","clone","clone_into","clone_to_uninit","config","dns","fmt","from","from_ref","get_signed_packet","http","in_memory","insert","into","metrics","new","persistent","resolve","server","state","to_owned","try_from","try_into","type_id","vzip","with_mainline_fallback","BootstrapOption","Config","Custom","Default","MainlineConfig","MetricsConfig","StoreConfig","__clone_box","bind_addr","bootstrap","borrow","","","","","borrow_mut","","","","","clone","clone_into","clone_to_uninit","data_dir","default","","","","deserialize","","","","","disabled","","dns","enabled","fmt","","","","","from","","","","","from_ref","http","https","into","","","","","load","mainline","metrics","pkarr_put_rate_limit","serialize","","","","","signed_packet_store_path","to_owned","try_from","","","","","try_into","","","","","type_id","","","","","vzip","","","","","zone_store","DnsConfig","DnsHandler","DnsServer","Handle","__clone_box","","","answer_request","bind_addr","borrow","","","","borrow_mut","","","","clone","","","clone_into","","","clone_to_uninit","","","default_soa","default_ttl","deserialize","fmt","","","from","","","","from_ref","","","handle_request","into","","","","local_addr","new","origins","port","rr_a","rr_aaaa","rr_ns","run_until_done","send_response","serialize","shutdown","spawn","to_owned","","","try_from","","","","try_into","","","","type_id","","","","vzip","","","","CertMode","Disabled","HttpConfig","HttpServer","HttpsConfig","LetsEncrypt","Manual","RateLimitConfig","SelfSigned","Simple","Smart","__clone_box","","","","bind_addr","","borrow","","","","","borrow_mut","","","","","cert_mode","clone","","","","clone_into","","","","clone_to_uninit","","","","default","","deserialize","","","","domains","eq","equivalent","","","fmt","","","","","from","","","","","from_ref","","","","http_addr","https_addr","into","","","","","letsencrypt_contact","letsencrypt_prod","port","","run_until_done","serialize","","","","shutdown","spawn","to_owned","","","","to_string","try_from","","","","","try_into","","","","","type_id","","","","","vzip","","","","","Metrics","__clone_box","borrow","borrow_mut","clone","clone_into","clone_to_uninit","default","dns_lookup_error","dns_lookup_notfound","dns_lookup_success","dns_requests","dns_requests_https","dns_requests_udp","fmt","from","from_ref","http_requests","http_requests_duration_ms","http_requests_error","http_requests_success","init_metrics","into","iter","name","pkarr_publish_noop","pkarr_publish_update","store_packets_expired","store_packets_inserted","store_packets_removed","store_packets_updated","to_owned","try_from","try_into","type_id","vzip","Server","borrow","borrow_mut","from","into","run_until_error","run_with_config_until_ctrl_c","shutdown","spawn","try_from","try_into","type_id","vzip","AppState","__clone_box","borrow","borrow_mut","clone","clone_into","clone_to_uninit","dns_handler","from","from_ref","into","store","to_owned","try_from","try_into","type_id","vzip"],"q":[[0,"iroh_dns_server"],[29,"iroh_dns_server::config"],[116,"iroh_dns_server::dns"],[191,"iroh_dns_server::http"],[299,"iroh_dns_server::metrics"],[335,"iroh_dns_server::server"],[348,"iroh_dns_server::state"],[365,"dyn_clone::sealed"],[366,"iroh_dns_server::store"],[367,"core::fmt"],[368,"pkarr::signed_packet"],[369,"core::option"],[370,"anyhow"],[371,"std::path"],[372,"core::convert"],[373,"hickory_proto::rr::domain::name"],[374,"hickory_proto::rr::record_type"],[375,"hickory_proto::rr::rr_set"],[376,"alloc::sync"],[377,"core::result"],[378,"core::any"],[379,"serde::de"],[380,"serde::ser"],[381,"hickory_server::server::request_handler"],[382,"bytes::bytes"],[383,"core::future::future"],[384,"alloc::boxed"],[385,"core::pin"],[386,"hickory_server::server::response_handler"],[387,"core::net::socket_addr"],[388,"hickory_server::authority::message_response"],[389,"hickory_proto::rr::resource"],[390,"core::iter::traits::iterator"],[391,"core::marker"],[392,"iroh_dns_server::http::rate_limiting"],[393,"iroh_dns_server::http::tls"],[394,"alloc::string"],[395,"alloc::vec::into_iter"]],"i":"`j00000``0000`000`000``000000``Bj0```BlCfCbC`3214032143330031403214220103214032143000321400000321403032140321403214032140````D`CjDb12Dl32103213213213213333210321321203210233333013003210321032103210321`Ej```El0`01110EnF`10Fd432104321143214321432144432113333433210432143210004321112104321004321304321043210432104321`Fj0000000000000000000`00000000000000`Gd0000`000000`Ff000000000000000","f":"`{{bd}f}{b{{b{c}}}{}}{{{b{h}}}{{b{hc}}}{}}{{{b{j}}}j}{{b{b{hc}}}f{}}{{bl}f}``{{{b{j}}{b{hn}}}A`}{cc{}}{{{b{c}}}c{}}{{{b{j}}{b{`}}}{{Af{{Ad{Ab}}}}}}```{{}c{}}```{{{b{j}}{b{`}}{b{An}}B`}{{Af{{Ad{{Bd{Bb}}}}}}}}``{bc{}}{c{{Bf{e}}}{}{}}{{}{{Bf{c}}}{}}{bBh}{{}c{}}{{jBj}j}```````{{bd}f}``{b{{b{c}}}{}}0000{{{b{h}}}{{b{hc}}}{}}0000{{{b{Bl}}}Bl}{{b{b{hc}}}f{}}{{bl}f}{{}{{Af{Bn}}}}{{}C`}{{}Bl}{{}Cb}{{}Bj}{c{{Bf{C`}}}Cd}{c{{Bf{Bl}}}Cd}{c{{Bf{Cf}}}Cd}{c{{Bf{Cb}}}Cd}{c{{Bf{Bj}}}Cd}{{}Cf}```{{{b{C`}}{b{hn}}}A`}{{{b{Bl}}{b{hn}}}A`}{{{b{Cf}}{b{hn}}}A`}{{{b{Cb}}{b{hn}}}A`}{{{b{Bj}}{b{hn}}}A`}{cc{}}0000{{{b{c}}}c{}}``{{}c{}}0000{c{{Af{C`}}}{{Al{Aj}}}}```{{{b{C`}}c}BfCh}{{{b{Bl}}c}BfCh}{{{b{Cf}}c}BfCh}{{{b{Cb}}c}BfCh}{{{b{Bj}}c}BfCh}{{}{{Af{Bn}}}}{bc{}}{c{{Bf{e}}}{}{}}0000{{}{{Bf{c}}}{}}0000{bBh}0000{{}c{}}0000`````{{bd}f}00{{{b{Cj}}Cl}{{Af{Cn}}}}`{b{{b{c}}}{}}000{{{b{h}}}{{b{hc}}}{}}000{{{b{D`}}}D`}{{{b{Cj}}}Cj}{{{b{Db}}}Db}{{b{b{hc}}}f{}}00{{bl}f}00``{c{{Bf{D`}}}Cd}{{{b{D`}}{b{hn}}}A`}{{{b{Cj}}{b{hn}}}A`}{{{b{Db}}{b{hn}}}A`}{cc{}}000{{{b{c}}}c{}}00{{{b{Cj}}{b{Cl}}c}{{Dh{{Df{Dd}}}}}Dj}{{}c{}}000{{{b{Dl}}}Dn}{{j{b{D`}}}{{Af{Cj}}}}`````{Dl{{Af{f}}}}{{{b{hDb}}{E`{cegi}}}{{Dh{{Df{Dd}}}}}{{Ef{}{{Eb{{b{Ed}}}}}}Eh}{{Ef{}{{Eb{{b{Ed}}}}}}Eh}{{Ef{}{{Eb{{b{Ed}}}}}}Eh}{{Ef{}{{Eb{{b{Ed}}}}}}Eh}}{{{b{D`}}c}BfCh}2{{D`Cj}{{Af{Dl}}}}{bc{}}00{c{{Bf{e}}}{}{}}000{{}{{Bf{c}}}{}}000{bBh}000{{}c{}}000```````````{{bd}f}000``{b{{b{c}}}{}}0000{{{b{h}}}{{b{hc}}}{}}0000`{{{b{Ej}}}Ej}{{{b{El}}}El}{{{b{En}}}En}{{{b{F`}}}F`}{{b{b{hc}}}f{}}000{{bl}f}000{{}{{b{Ej}}}}{{}Ej}{c{{Bf{Ej}}}Cd}{c{{Bf{El}}}Cd}{c{{Bf{En}}}Cd}{c{{Bf{F`}}}Cd}`{{{b{El}}{b{El}}}Ah}{{b{b{c}}}Ah{}}00{{{b{Ej}}{b{hn}}}A`}{{{b{El}}{b{hn}}}A`}{{{b{El}}{b{hn}}}{{Bf{fFb}}}}{{{b{En}}{b{hn}}}A`}{{{b{F`}}{b{hn}}}A`}{cc{}}0000{{{b{c}}}c{}}000{{{b{Fd}}}{{Ad{Dn}}}}0{{}c{}}0000````{Fd{{Af{f}}}}{{{b{Ej}}c}BfCh}{{{b{El}}c}BfCh}{{{b{En}}c}BfCh}{{{b{F`}}c}BfCh}4{{{Ad{En}}{Ad{F`}}EjFf}{{Af{Fd}}}}{bc{}}000{bFh}{c{{Bf{e}}}{}{}}0000{{}{{Bf{c}}}{}}0000{bBh}0000{{}c{}}0000`{{bd}f}{b{{b{c}}}{}}{{{b{h}}}{{b{hc}}}{}}{{{b{Fj}}}Fj}{{b{b{hc}}}f{}}{{bl}f}{{}Fj}``````{{{b{Fj}}{b{hn}}}A`}{cc{}}{{{b{c}}}c{}}````{{}f}{{}c{}}{{{b{Fj}}}{{Gb{{G`{{b{Fl}}{b{Fn}}}}}}}}{{}{{b{Fl}}}}``````{bc{}}{c{{Bf{e}}}{}{}}{{}{{Bf{c}}}{}}{bBh}{{}c{}}`{b{{b{c}}}{}}{{{b{h}}}{{b{hc}}}{}}<9{Gd{{Af{f}}}}{C`{{Af{f}}}}1{{C`j}{{Af{Gd}}}}8765`{{bd}f}54{{{b{Ff}}}Ff}{{b{b{hc}}}f{}}{{bl}f}`{cc{}}{{{b{c}}}c{}}{{}c{}}`{bc{}}{c{{Bf{e}}}{}{}}{{}{{Bf{c}}}{}}{bBh}{{}c{}}","D":"Oj","p":[[1,"reference",null,null,1],[5,"Private",365],[1,"unit"],[0,"mut"],[5,"ZoneStore",0,366],[1,"u8"],[5,"Formatter",367],[8,"Result",367],[5,"SignedPacket",368],[6,"Option",369,null,1],[8,"Result",370],[1,"bool"],[5,"Path",371],[10,"AsRef",372],[5,"Name",373],[6,"RecordType",374],[5,"RecordSet",375],[5,"Arc",376,null,1],[6,"Result",377,null,1],[5,"TypeId",378],[6,"BootstrapOption",29],[5,"StoreConfig",29],[5,"PathBuf",371],[5,"Config",29],[5,"MainlineConfig",29],[10,"Deserializer",379],[5,"MetricsConfig",29],[10,"Serializer",380],[5,"DnsHandler",116],[5,"Request",381],[5,"Bytes",382],[5,"DnsConfig",116],[5,"Handle",116],[10,"Future",383,null,1],[5,"Box",384,null,1],[5,"Pin",385],[10,"ResponseHandler",386],[5,"DnsServer",116],[6,"SocketAddr",387],[5,"MessageResponse",388],[17,"Item"],[5,"Record",389],[10,"Iterator",390],[10,"Send",391],[6,"RateLimitConfig",191,392],[6,"CertMode",191,393],[5,"HttpConfig",191],[5,"HttpsConfig",191],[5,"Error",367],[5,"HttpServer",191],[5,"AppState",348],[5,"String",394],[5,"Metrics",299],[1,"str"],[10,"Any",378],[1,"tuple",null,null,1],[5,"IntoIter",395],[5,"Server",335]],"r":[[0,366],[191,393],[198,392]],"b":[[231,"impl-Default-for-%26RateLimitConfig"],[232,"impl-Default-for-RateLimitConfig"],[243,"impl-Debug-for-CertMode"],[244,"impl-Display-for-CertMode"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAPAAIAACAAUACgAAAAwAAAAYAAQAJQAAACgADAA2AAgAQwAEAE0AAABZAAQAXwAUAHkAAgB+ABAAkQADAJkAAwCpAAEArQASAMsAAwDRAAkA3AARAO8ACAD9AAMADQEDABMBGAAtAQ0APAEEAEMBDABRAQEAWQEDAF4BBQBmAQAAaQEEAA==","P":[[2,"T"],[4,""],[5,"T"],[6,""],[10,"T"],[12,""],[16,"U"],[18,""],[19,""],[20,""],[23,"T"],[24,"U,T"],[25,"U"],[26,""],[27,"V"],[28,""],[39,"T"],[49,""],[50,"T"],[51,""],[57,"__D"],[62,""],[71,"T"],[79,"U"],[84,""],[88,"__S"],[93,""],[94,"T"],[95,"U,T"],[100,"U"],[105,""],[110,"V"],[120,""],[125,"T"],[133,""],[136,"T"],[139,""],[144,"__D"],[145,""],[148,"T"],[155,"R"],[156,"U"],[160,""],[168,",,,"],[169,"__S"],[170,""],[172,"T"],[175,"U,T"],[179,"U"],[183,""],[187,"V"],[202,""],[208,"T"],[219,""],[223,"T"],[227,""],[233,"__D"],[238,""],[239,"K"],[242,""],[247,"T"],[256,""],[258,"U"],[267,""],[268,"__S"],[272,""],[274,"T"],[278,""],[279,"U,T"],[284,"U"],[289,""],[294,"V"],[300,""],[301,"T"],[303,""],[304,"T"],[305,""],[314,"T"],[320,""],[321,"U"],[322,""],[330,"T"],[331,"U,T"],[332,"U"],[333,""],[334,"V"],[336,"T"],[339,"U"],[340,""],[344,"U,T"],[345,"U"],[346,""],[347,"V"],[349,""],[350,"T"],[352,""],[353,"T"],[354,""],[356,"T"],[358,"U"],[360,"T"],[361,"U,T"],[362,"U"],[363,""],[364,"V"]]}],["iroh_net_report",{"t":"FFFFFFFNHNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNOOONNNOONNNNNNNNNNNNNNOOOOOONNOONNHOOONNOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNN","n":["Addr","Client","Metrics","Options","QuicConfig","RelayLatencies","Report","addr","bind_local_stun_socket","borrow","","","","","","","borrow_mut","","","","","","","captive_portal","client_config","clone","","","","","clone_into","","","","","clone_to_uninit","","","","","default","","","","deref","","","","","","","deref_mut","","","","","","","disabled","drop","","","","","","","ep","eq","","equivalent","","","","","","fmt","","","","","","","","from","","","","","","","get_report","get_report_channel","get_report_with_opts","global_v4","global_v6","hair_pinning","https","icmp_v4","icmp_v6","icmpv4","icmpv6","init","","","","","","","into","","","","","","","ipv4","","ipv4_can_send","ipv6","","ipv6_can_send","iter","","mapping_varies_by_dest_ip","mapping_varies_by_dest_ipv6","name","new","os_has_ipv6","","portmap_probe","preferred_relay","quic_config","receive_stun_packet","relay_latency","relay_v4_latency","relay_v6_latency","reports","reports_full","stun_packets_dropped","stun_packets_recv_ipv4","stun_packets_recv_ipv6","stun_packets_sent_ipv4","stun_packets_sent_ipv6","stun_v4","stun_v6","to_owned","","","","","to_string","try_from","","","","","","","try_into","","","","","","","type_id","","","","","","","udp","vzip","","","","","",""],"q":[[0,"iroh_net_report"],[180,"netwatch::ip_family"],[181,"tokio_util::sync::cancellation_token"],[182,"netwatch::udp"],[183,"alloc::sync"],[184,"core::option"],[185,"iroh_net_report::metrics"],[186,"iroh_net_report::reportgen"],[187,"core::fmt"],[188,"iroh_relay::relay_map"],[189,"anyhow"],[190,"tokio::sync::oneshot"],[191,"core::any"],[192,"alloc::vec::into_iter"],[193,"iroh_base::relay_url"],[194,"core::time"],[195,"core::iter::traits::iterator"],[196,"portmapper"],[197,"hickory_resolver::resolver"],[198,"bytes::bytes"],[199,"core::net::socket_addr"],[200,"alloc::string"],[201,"core::result"],[202,"iroh_net_report::stun_utils"]],"i":"```````b`AdAfAhAj4B`f543261034543205432054320532154326105432610154326104323332225433261054326106663331113354326105432610433433523356`3331033355555551154320354326105432610543261035432610","f":"```````{{{d{b}}}f}{{hfj}{{A`{{n{l}}}}}}{d{{d{c}}}{}}000000{{{d{Ab}}}{{d{Abc}}}{}}000000``{{{d{Ad}}}Ad}{{{d{Af}}}Af}{{{d{Ah}}}Ah}{{{d{Aj}}}Aj}{{{d{f}}}f}{{d{d{Abc}}}Al{}}0000{{dAn}Al}0000{{}Ad}{{}Ah}{{}Aj}{{}B`}{Bb{{d{c}}}{}}000000{Bb{{d{Abc}}}{}}0000002{BbAl}000000`{{{d{Ah}}{d{Ah}}}Bd}{{{d{Aj}}{d{Aj}}}Bd}{{d{d{c}}}Bd{}}00000{{{d{Ad}}{d{AbBf}}}Bh}{{{d{Af}}{d{AbBf}}}Bh}{{{d{Ah}}{d{AbBf}}}Bh}0{{{d{Aj}}{d{AbBf}}}Bh}{{{d{b}}{d{AbBf}}}Bh}{{{d{B`}}{d{AbBf}}}Bh}{{{d{f}}{d{AbBf}}}Bh}{cc{}}000000{{{d{Abb}}Bj{A`{{n{l}}}}{A`{{n{l}}}}{A`{Af}}}{{Bl{{n{Ah}}}}}}{{{d{Abb}}BjB`}{{Bl{{Bn{{Bl{{n{Ah}}}}}}}}}}{{{d{Abb}}BjB`}{{Bl{{n{Ah}}}}}}```{{B`Bd}B`}00``{{}Bb}000000{{}c{}}000000``````{{{d{Ad}}}{{Cf{{Cd{{d{C`}}{d{Cb}}}}}}}}{{{d{Aj}}}{{`{{Cn{}{{Ch{{Cd{{d{Cj}}Cl}}}}}}}}}}``{{}{{d{C`}}}}{{{A`{D`}}Db}{{Bl{b}}}}{{}Bd}```{{B`{A`{Af}}}B`}{{{d{f}}DdDf}Al}``````````{{B`{A`{{n{l}}}}}B`}0{dc{}}0000{dDh}{c{{Dj{e}}}{}{}}000000{{}{{Dj{c}}}{}}000000{dDl}000000`{{}c{}}000000","D":"Gj","p":[[5,"Client",0],[1,"reference",null,null,1],[5,"Addr",0],[6,"IpFamily",180],[5,"CancellationToken",181],[5,"UdpSocket",182],[5,"Arc",183,null,1],[6,"Option",184,null,1],[0,"mut"],[5,"Metrics",0,185],[5,"QuicConfig",0,186],[5,"Report",0],[5,"RelayLatencies",0],[1,"unit"],[1,"u8"],[5,"Options",0],[1,"usize"],[1,"bool"],[5,"Formatter",187],[8,"Result",187],[5,"RelayMap",188],[8,"Result",189],[5,"Receiver",190],[1,"str"],[10,"Any",191],[1,"tuple",null,null,1],[5,"IntoIter",192],[17,"Item"],[5,"RelayUrl",193],[5,"Duration",194],[10,"Iterator",195],[5,"Client",196],[8,"TokioResolver",197],[5,"Bytes",198],[6,"SocketAddr",199],[5,"String",200],[6,"Result",201,null,1],[5,"TypeId",191]],"r":[[2,185],[4,186],[8,202]],"b":[[77,"impl-Display-for-Report"],[78,"impl-Debug-for-Report"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAHcACgAKAA0AGgAgADwABgBEAA8AZgAGAHoAAAB+AAAAiQAGAJIAGgCuAAYA","P":[[9,"T"],[25,""],[30,"T"],[35,""],[44,"T"],[58,""],[69,"K"],[75,""],[83,"T"],[90,""],[108,"U"],[121,""],[145,"T"],[150,""],[151,"U,T"],[158,"U"],[165,""],[173,"V"]]}],["iroh_relay",{"t":"EFFFNNNNNNCNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNOCCONNCOONNNNNNNNNNNNNNONNNNPPFFGPPPPPPPPPPPPPPPPPPGPPPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOSSSSSSGSSPPNNNNNNNNNNNNNNNNNNNNNNNCCCSHSPGPPPPPPPPGFPPPPPPPPPPPGFPFPPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNCHHNHHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNSSSSSSFNNNNNNNNNNNNNNNGFSPFPGFPFFPFFFFFPFOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNOOOONONNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOONNNNNNNNNNNNNONNNNNNNNNNNNNONNNNNNNNNNNNNONONNONNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNOOOONNOOONNNNNONOOONONOOOOOONNNONNCONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNOOOHHHHHH","n":["MAX_PACKET_SIZE","RelayMap","RelayNode","RelayQuicConfig","borrow","","","borrow_mut","","","client","clone","","","clone_into","","","clone_to_uninit","","","cmp","","compare","","contains_node","default","default_from_node","defaults","deref","","","deref_mut","","","deserialize","","drop","","","empty","eq","","","equivalent","","","","","","","","","fmt","","","","","from","","","from_nodes","from_url","get_node","http","init","","","into","","","is_empty","len","nodes","partial_cmp","","port","protos","quic","","serialize","","server","stun_only","stun_port","to_owned","","","to_string","","try_from","","","try_into","","","type_id","","","url","urls","vzip","","","ActorGone","Build","Client","ClientBuilder","ClientError","Closed","ConnectTimeout","DialIO","Dns","Health","Http","Hyper","IPDisabled","InvalidUrl","KeepAlive","NoLocalAddr","NodeGone","Ping","PingAborted","PingTimeout","Pong","Proxy","Receive","ReceivedMessage","ReceivedPacket","Send","ServerRestarting","UnexpectedStatusCode","Upgrade","WebsocketError","address_family_selector","borrow","","","","borrow_mut","","","","build","clone","clone_into","clone_to_uninit","close","connect","deref","","","","deref_mut","","","","drop","","","","finish_ping","fmt","","","","","from","","","","","","","","init","","","","insecure_skip_cert_verify","into","","","","is_connected","is_prober","key_cache_capacity","local_addr","make_dangerous_client_config","new","note_preferred","protocol","proxy_url","recv","send","send_pong","server_public_key","server_url","source","start_ping","to_owned","to_string","try_from","","","","try_into","","","","type_id","","","","vzip","","","","data","problem","reconnect_in","remote_node_id","try_for","DEFAULT_HTTPS_PORT","DEFAULT_HTTP_PORT","DEFAULT_KEY_CACHE_CAPACITY","DEFAULT_METRICS_PORT","DEFAULT_RELAY_QUIC_PORT","DEFAULT_STUN_PORT","Protocol","RELAY_PATH","RELAY_PROBE_PATH","Relay","Websocket","borrow","borrow_mut","clone","clone_into","clone_to_uninit","deref","deref_mut","drop","eq","equivalent","","","fmt","from","init","into","parse_header","to_owned","try_from","try_into","type_id","upgrade_header","vzip","disco","relay","stun","MAGIC","looks_like_disco_wrapper","MAX_PACKET_SIZE","AlternateServer","Error","ErrorCode","ErrorResponse","Fingerprint","Indication","InvalidFingerprint","InvalidMessage","MalformedAttrs","MappedAddress","MessageClass","MessageDecoder","MessageIntegrity","MessageIntegritySha256","NoFingerprint","Nonce","NotBinding","NotSuccessResponse","PasswordAlgorithm","PasswordAlgorithms","Realm","Request","Software","StunAttribute","StunDecodeError","SuccessResponse","TransactionId","Unknown","UnknownAttributes","UserHash","UserName","XorMappedAddress","as_alternate_server","as_bytes","as_error_code","as_fingerprint","as_mapped_address","as_message_integrity","as_message_integrity_sha256","as_nonce","as_password_algorithm","as_password_algorithms","as_realm","as_ref","as_software","as_unknown","as_unknown_attributes","as_user_hash","as_user_name","as_xor_mapped_address","attribute_type","borrow","","","","","","borrow_mut","","","","","","clone","","","","clone_into","","","","clone_to_uninit","","","","cmp","compare","decode","default","","deref","","","","","","","deref_mut","","","","","","drop","","","","","","eq","","equivalent","","","","","","expect_alternate_server","expect_error_code","expect_fingerprint","expect_mapped_address","expect_message_integrity","expect_message_integrity_sha256","expect_nonce","expect_password_algorithm","expect_password_algorithms","expect_realm","expect_software","expect_unknown","expect_unknown_attributes","expect_user_hash","expect_user_name","expect_xor_mapped_address","fmt","","","","","","","","","from","","","","","","","","","","","","","","","","","","","","","","","","get_context","hash","init","","","","","","into","","","","","","is","is_alternate_server","is_error_code","is_fingerprint","is_mapped_address","is_message_integrity","is_message_integrity_sha256","is_nonce","is_password_algorithm","is_password_algorithms","is_realm","is_software","is_unknown","is_unknown_attributes","is_user_hash","is_user_name","is_xor_mapped_address","methods","parse_binding_request","parse_response","partial_cmp","request","response","to_owned","","","","to_string","","","try_from","","","","","","","try_into","","","","","","type_id","","","","","","vzip","","","","","","BINDING","RESERVED","SHARED_SECRET","ALPN_QUIC_ADDR_DISC","QUIC_ADDR_DISC_CLOSE_CODE","QUIC_ADDR_DISC_CLOSE_REASON","QuicClient","borrow","borrow_mut","deref","deref_mut","drop","fmt","from","get_addr_and_latency","init","into","new","try_from","try_into","type_id","vzip","CertConfig","ClientConnRateLimit","DEFAULT_CERT_RELOAD_INTERVAL","LetsEncrypt","Limits","Manual","MaybeTlsStreamServer","Metrics","Plain","QuicConfig","RelayConfig","Reloading","ReloadingResolver","Server","ServerConfig","StunConfig","StunMetrics","Tls","TlsConfig","accept_conn_burst","accept_conn_limit","accepts","bad_requests","bind_addr","","borrow","","","","","","","","","","","","","borrow_mut","","","","","","","","","","","","","bytes_per_second","bytes_recv","bytes_sent","cert","certificates","client_rx","clone","","","clone_into","","","clone_to_uninit","","","conns_rx_ratelimited_total","default","","","","deref","","","","","","","","","","","","","","deref_mut","","","","","","","","","","","","","disco_packets_dropped","disco_packets_recv","disco_packets_sent","disconnects","drop","","","","","","","","","","","","","failures","fmt","","","","","","","","","","","","","frames_rx_ratelimited_total","from","","","","","","","","","","","","","got_ping","http_addr","http_bind_addr","http_url","https_addr","https_bind_addr","https_url","init","","","","","","","","","","","","","","into","","","","","","","","","","","","","ipv4_success","ipv6_success","iter","","key_cache_capacity","limits","max_burst_bytes","metrics_addr","name","","other_packets_dropped","other_packets_recv","other_packets_sent","poll_flush","poll_read","poll_shutdown","poll_write","poll_write_vectored","quic","quic_addr","quic_bind_addr","relay","relay_accepts","reload","requests","resolve","send_packets_dropped","send_packets_recv","send_packets_sent","sent_pong","server_config","","shutdown","","spawn","stun","stun_addr","task_handle","testing","tls","to_owned","","","try_from","","","","","","","","","","","","","try_into","","","","","","","","","","","","","type_id","","","","","","","","","","","","","unique_client_keys","unknown_frames","vzip","","","","","","","","","","","","","websocket_accepts","certs","state","quic_config","relay_config","self_signed_tls_certs_and_config","server_config","stun_config","tls_config"],"q":[[0,"iroh_relay"],[103,"iroh_relay::client"],[217,"iroh_relay::client::ReceivedMessage"],[222,"iroh_relay::defaults"],[228,"iroh_relay::http"],[256,"iroh_relay::protos"],[259,"iroh_relay::protos::disco"],[261,"iroh_relay::protos::relay"],[262,"iroh_relay::protos::stun"],[487,"iroh_relay::protos::stun::methods"],[490,"iroh_relay::quic"],[509,"iroh_relay::server"],[784,"iroh_relay::server::CertConfig"],[786,"iroh_relay::server::testing"],[792,"iroh_relay::relay_map"],[793,"core::cmp"],[794,"iroh_base::relay_url"],[795,"core::result"],[796,"serde::de"],[797,"core::fmt"],[798,"anyhow"],[799,"alloc::sync"],[800,"core::convert"],[801,"core::iter::traits::collect"],[802,"core::option"],[803,"core::iter::traits::iterator"],[804,"serde::ser"],[805,"alloc::string"],[806,"core::any"],[807,"core::ops::function"],[808,"core::marker"],[809,"iroh_base::key"],[810,"hickory_resolver::resolver"],[811,"iroh_relay::client::conn"],[812,"hyper::error"],[813,"http::error"],[814,"tokio_tungstenite_wasm::error"],[815,"std::io::error"],[816,"core::net::socket_addr"],[817,"rustls::client::client_conn"],[818,"url"],[819,"bytes::bytes"],[820,"core::error"],[821,"core::time"],[822,"core::future::future"],[823,"http::header::value"],[824,"stun_rs::attributes"],[825,"stun_rs::attributes::stun::alternate_server"],[826,"stun_rs::error"],[827,"stun_rs::types"],[828,"stun_rs::attributes::stun::error_code"],[829,"stun_rs::attributes::stun::fingerprint"],[830,"stun_rs::attributes::stun::mapped_address"],[831,"stun_rs::attributes::stun::message_integrity"],[832,"stun_rs::attributes::stun::message_integrity_sha256"],[833,"stun_rs::attributes::stun::nonce"],[834,"stun_rs::attributes::stun::password_algorithm"],[835,"stun_rs::attributes::stun::password_algorithms"],[836,"stun_rs::attributes::stun::realm"],[837,"stun_rs::attributes::stun::software"],[838,"stun_rs::attributes::unknown"],[839,"stun_rs::attributes::stun::unknown_attributes"],[840,"stun_rs::attributes::stun::user_hash"],[841,"stun_rs::attributes::stun::user_name"],[842,"stun_rs::attributes::stun::xor_mapped_address"],[843,"stun_rs::context"],[844,"stun_rs::message"],[845,"core::hash"],[846,"alloc::vec"],[847,"iroh_quinn::endpoint"],[848,"rustls_pki_types"],[849,"iroh_relay::server::metrics"],[850,"core::default"],[851,"iroh_relay::server::resolver"],[852,"rustls::crypto::signer"],[853,"reloadable_core"],[854,"alloc::vec::into_iter"],[855,"core::pin"],[856,"core::task::wake"],[857,"core::task::poll"],[858,"tokio::io::read_buf"],[859,"std::io"],[860,"rustls::server::server_conn"],[861,"tokio_util::task::abort_on_drop"],[862,"stun_rs"],[863,"stun_rs::methods"]],"i":"````fhj210`2102102101010202`21021010210221022211100022110210222`210210222100``110`112102121021021012210Dh0```0000Df1111010011011`010111Cf12Dd12301122200230123012301023301233333012301123010110`10110001130232301230123012301NjNlNn20`````````Eh000000000000000000000000``````Fn`0Ih10Jb002``22020022212``1`222222Gd33333333303333333If3142In14253014251425142522112142253014253014253042444222555555555555555514225330014222555555555555555553012142530142530`5555555555555555```2``14252301442530142530142530142530```````Jj00000000000000```Ll`0``Lb``1`````0`Kn0KbKdLfLh32L`6KhLd43Lj8Kf;Jn985;43762:1<019920:9819819819984:9855;43762:1<0985;43762:1<09999985;43762:1<08985;43762:1<09985;43762:1<090300209855;43762:1<0985;43762:1<08898331498999;;;;;40249585999962500400`3981985;43762:1<0985;43762:1<0985;43762:1<099985;43762:1<09O`Ob``````","f":"````{b{{b{c}}}{}}00{{{b{d}}}{{b{dc}}}{}}00`{{{b{f}}}f}{{{b{h}}}h}{{{b{j}}}j}{{b{b{dc}}}l{}}00{{bn}l}00{{{b{h}}{b{h}}}A`}{{{b{j}}{b{j}}}A`}{{b{b{c}}}A`{}}0{{{b{f}}{b{Ab}}}Ad}{{}j}{{AbAf}f}`{Ah{{b{c}}}{}}00{Ah{{b{dc}}}{}}00{c{{Aj{h}}}Al}{c{{Aj{j}}}Al}{Ahl}00{{}f}{{{b{f}}{b{f}}}Ad}{{{b{h}}{b{h}}}Ad}{{{b{j}}{b{j}}}Ad}{{b{b{c}}}Ad{}}00000000{{{b{f}}{b{dAn}}}B`}0{{{b{h}}{b{dAn}}}B`}0{{{b{j}}{b{dAn}}}B`}{cc{}}00{e{{Bb{f}}}{{Bf{{Bd{h}}}}}{{Bj{}{{Bh{c}}}}}}{Abf}{{{b{f}}{b{Ab}}}{{Bl{{b{{Bd{h}}}}}}}}`{{}Ah}00{{}c{}}00{{{b{f}}}Ad}{{{b{f}}}Ah}{{{b{f}}}{{`{{Bn{}{{Bh{{b{{Bd{h}}}}}}}}}}}}{{{b{h}}{b{h}}}{{Bl{A`}}}}{{{b{j}}{b{j}}}{{Bl{A`}}}}````{{{b{h}}c}AjC`}{{{b{j}}c}AjC`}```{bc{}}00{bCb}0{c{{Aj{e}}}{}{}}00{{}{{Aj{c}}}{}}00{bCd}00`{{{b{f}}}{{`{{Bn{}{{Bh{{b{Ab}}}}}}}}}}{{}c{}}00``````````````````````````````{{Cfc}Cf{{Cj{}{{Ch{Ad}}}}ClCn}}{b{{b{c}}}{}}000{{{b{d}}}{{b{dc}}}{}}000{{CfD`Db}Dd}{{{b{Df}}}Df}{{b{b{dc}}}l{}}{{bn}l}{Ddl}{{{b{dDd}}}{{Aj{lDh}}}}{Ah{{b{c}}}{}}000{Ah{{b{dc}}}{}}000{Ahl}000{{{b{dDd}}{Dj{n}}}l}{{{b{Df}}{b{dAn}}}B`}{{{b{Dh}}{b{dAn}}}B`}0{{{b{Dd}}{b{dAn}}}B`}{{{b{Cf}}{b{dAn}}}B`}{cc{}}{DlDh}{DnDh}{E`Dh}3{EbDh}44{{}Ah}000{{CfAd}Cf}{{}c{}}000{{{b{Dd}}}Ad}2{{CfAh}Cf}{{{b{Dd}}}{{Bl{Ed}}}}{{}Ef}{cCf{{Bf{Ab}}}}{{{b{dDd}}Ad}l}{{CfEh}Cf}{{CfEj}Cf}{{{b{dDd}}}{{Bl{{Aj{DfDh}}}}}}{{{b{dDd}}ElEn}{{Aj{lDh}}}}{{{b{dDd}}{Dj{n}}}{{Aj{lDh}}}}{{CfF`}Cf}{{Cfc}Cf{{Bf{Ab}}}}{{{b{Dh}}}{{Bl{{b{Fb}}}}}}{{{b{dDd}}}{{Aj{{`{{Ff{}{{Ch{{Aj{FdDh}}}}}}ClCn}}Dh}}}}{bc{}}{bCb}{c{{Aj{e}}}{}{}}000{{}{{Aj{c}}}{}}000{bCd}000{{}c{}}000````````````````{b{{b{c}}}{}}{{{b{d}}}{{b{dc}}}{}}{{{b{Eh}}}Eh}{{b{b{dc}}}l{}}{{bn}l}{Ah{{b{c}}}{}}{Ah{{b{dc}}}{}}{Ahl}{{{b{Eh}}{b{Eh}}}Ad}{{b{b{c}}}Ad{}}00{{{b{Eh}}{b{dAn}}}B`}{cc{}}{{}Ah}{{}c{}}{{{b{Fh}}}{{Bl{Eh}}}}{bc{}}{c{{Aj{e}}}{}{}}{{}{{Aj{c}}}{}}{bCd}{{{b{Eh}}}{{b{Fj}}}}{{}c{}}````{{{b{{Fl{n}}}}}Ad}`````````````````````````````````{{{b{Fn}}}{{Aj{{b{G`}}Gb}}}}{{{b{Gd}}}{{b{{Dj{n}}}}}}{{{b{Fn}}}{{Aj{{b{Gf}}Gb}}}}{{{b{Fn}}}{{Aj{{b{Gh}}Gb}}}}{{{b{Fn}}}{{Aj{{b{Gj}}Gb}}}}{{{b{Fn}}}{{Aj{{b{Gl}}Gb}}}}{{{b{Fn}}}{{Aj{{b{Gn}}Gb}}}}{{{b{Fn}}}{{Aj{{b{H`}}Gb}}}}{{{b{Fn}}}{{Aj{{b{Hb}}Gb}}}}{{{b{Fn}}}{{Aj{{b{Hd}}Gb}}}}{{{b{Fn}}}{{Aj{{b{Hf}}Gb}}}}{{{b{Gd}}}{{b{{Fl{n}}}}}}{{{b{Fn}}}{{Aj{{b{Hh}}Gb}}}}{{{b{Fn}}}{{Aj{{b{Hj}}Gb}}}}{{{b{Fn}}}{{Aj{{b{Hl}}Gb}}}}{{{b{Fn}}}{{Aj{{b{Hn}}Gb}}}}{{{b{Fn}}}{{Aj{{b{I`}}Gb}}}}{{{b{Fn}}}{{Aj{{b{Ib}}Gb}}}}{{{b{Fn}}}Id}{b{{b{c}}}{}}00000{{{b{d}}}{{b{dc}}}{}}00000{{{b{If}}}If}{{{b{Ih}}}Ih}{{{b{Gd}}}Gd}{{{b{Fn}}}Fn}{{b{b{dc}}}l{}}000{{bn}l}000{{{b{Gd}}{b{Gd}}}A`}{{b{b{c}}}A`{}}{{{b{If}}{b{{Fl{n}}}}}{{Aj{{Il{IjAh}}In}}}}{{}If}{{}Gd}{Ah{{b{c}}}{}}0{{{b{Gd}}}{{b{{Fl{n}}}}}}1111{Ah{{b{dc}}}{}}00000{Ahl}00000{{{b{Ih}}{b{Ih}}}Ad}{{{b{Gd}}{b{Gd}}}Ad}{{b{b{c}}}Ad{}}00000{{{b{Fn}}}{{b{G`}}}}{{{b{Fn}}}{{b{Gf}}}}{{{b{Fn}}}{{b{Gh}}}}{{{b{Fn}}}{{b{Gj}}}}{{{b{Fn}}}{{b{Gl}}}}{{{b{Fn}}}{{b{Gn}}}}{{{b{Fn}}}{{b{H`}}}}{{{b{Fn}}}{{b{Hb}}}}{{{b{Fn}}}{{b{Hd}}}}{{{b{Fn}}}{{b{Hf}}}}{{{b{Fn}}}{{b{Hh}}}}{{{b{Fn}}}{{b{Hj}}}}{{{b{Fn}}}{{b{Hl}}}}{{{b{Fn}}}{{b{Hn}}}}{{{b{Fn}}}{{b{I`}}}}{{{b{Fn}}}{{b{Ib}}}}{{{b{If}}{b{dAn}}}{{Aj{lJ`}}}}{{{b{Ih}}{b{dAn}}}{{Aj{lJ`}}}}{{{b{Gd}}{b{dAn}}}{{Aj{lJ`}}}}0{{{b{Fn}}{b{dAn}}}{{Aj{lJ`}}}}{{{b{Jb}}{b{dAn}}}B`}0{{{b{In}}{b{dAn}}}{{Aj{lJ`}}}}0{cc{}}0{{{b{{Dj{n}}}}}Gd}{{{Dj{n}}}Gd}2{HfFn}3{H`Fn}{HbFn}{GnFn}{HjFn}{GlFn}{HdFn}{I`Fn}{HnFn}{GhFn}{HhFn}{G`Fn}{GjFn}{HlFn}{IbFn}{GfFn}{cc{}}0{{{b{If}}}{{Bl{{b{Jd}}}}}}{{{b{Gd}}{b{dc}}}lJf}{{}Ah}00000{{}c{}}00000{{{b{{Fl{n}}}}}Ad}{{{b{Fn}}}Ad}000000000000000`{{{b{{Fl{n}}}}}{{Aj{GdJb}}}}{{{b{{Fl{n}}}}}{{Aj{{Il{GdEd}}Jb}}}}{{{b{Gd}}{b{Gd}}}{{Bl{A`}}}}{Gd{{Jh{n}}}}{{GdEd}{{Jh{n}}}}{bc{}}000{bCb}00{c{{Aj{e}}}{}{}}{n{{Aj{Ih}}}}11111{{}{{Aj{c}}}{}}00000{bCd}00000{{}c{}}00000```````{b{{b{c}}}{}}{{{b{d}}}{{b{dc}}}{}}{Ah{{b{c}}}{}}{Ah{{b{dc}}}{}}{Ahl}{{{b{Jj}}{b{dAn}}}B`}{cc{}}{{{b{Jj}}Ed{b{Fj}}}{{Bb{{Il{EdFd}}}}}}{{}Ah}{{}c{}}{{JlEf}{{Bb{Jj}}}}?=<;`````````````````````````:::::::::::::9999999999999````{{{b{Jn}}}{{Bl{{Jh{K`}}}}}}`{{{b{Kb}}}Kb}{{{b{Kd}}}Kd}{{{b{Kf}}}Kf}{{b{b{dc}}}l{}}00{{bn}l}00`{{}Kb}{{}Kd}{{}{{Kh{ce}}}{KjKl}{KjKl}}{{}Kn}{Ah{{b{c}}}{}}00{{{b{{L`{c}}}}}{{b{e}}}Cl{}}1111111111{Ah{{b{dc}}}{}}000000000000````{Ahl}000000000000`{{{b{Kb}}{b{dAn}}}B`}{{{b{Kd}}{b{dAn}}}B`}{{{b{{L`{c}}}}{b{dAn}}}B`{KlCl}}{{{b{Lb}}{b{dAn}}}B`}{{{b{{Kh{ce}}}}{b{dAn}}}B`KlKl}{{{b{{Ld{ce}}}}{b{dAn}}}B`KlKl}{{{b{Lf}}{b{dAn}}}B`}{{{b{Lh}}{b{dAn}}}B`}{{{b{{Lj{ce}}}}{b{dAn}}}B`KlKl}{{{b{Kn}}{b{dAn}}}B`}{{{b{Kf}}{b{dAn}}}B`}{{{b{{Ll{ce}}}}{b{dAn}}}B`KlKl}{{{b{Jn}}{b{dAn}}}B`}`{cc{}}000000000000`{{{b{Jn}}}{{Bl{Ed}}}}`{{{b{Jn}}}{{Bl{Ab}}}}1`0{{}Ah}00{{cFd}{{Bb{{L`{c}}}}}{Cl{Mb{}{{Ln{M`}}}}}}1111111111{{}c{}}000000000000``{{{b{Kb}}}{{Mf{{Il{{b{Fj}}{b{Md}}}}}}}}{{{b{Kd}}}{{Mf{{Il{{b{Fj}}{b{Md}}}}}}}}````{{}{{b{Fj}}}}0```{{{Mh{{b{dLb}}}}{b{dMj}}}{{Ml{{Aj{lEb}}}}}}{{{Mh{{b{dLb}}}}{b{dMj}}{b{dMn}}}{{Ml{{N`{l}}}}}}1{{{Mh{{b{dLb}}}}{b{dMj}}{b{{Fl{n}}}}}{{Ml{{Aj{AhEb}}}}}}{{{Mh{{b{dLb}}}}{b{dMj}}{b{{Fl{Nb}}}}}{{Ml{{Aj{AhEb}}}}}}`;```{{{b{{L`{c}}}}}l{Cl{Mb{}{{Ln{M`}}}}}}`{{{b{{L`{c}}}}Nd}{{Bl{{Bd{M`}}}}}{{Mb{}{{Ln{M`}}}}ClKl}}``````{{{L`{c}}}l{Cl{Mb{}{{Ln{M`}}}}}}{Jn{{Bb{l}}}}{{{Kh{ce}}}{{Bb{Jn}}}KlKl}`{{{b{Jn}}}{{Bl{Ed}}}}{{{b{dJn}}}{{b{d{Nf{{Bb{l}}}}}}}}``{bc{}}00{c{{Aj{e}}}{}{}}000000000000{{}{{Aj{c}}}{}}000000000000{bCd}000000000000``{{}c{}}000000000000```{{}Lh}{{}{{Ld{l}}}}{{}{{Il{{Jh{K`}}Nh}}}}{{}{{Kh{l}}}}{{}Lf}{{}{{Lj{l}}}}","D":"BJn","p":[[1,"reference",null,null,1],[0,"mut"],[5,"RelayMap",0,792],[5,"RelayNode",0,792],[5,"RelayQuicConfig",0,792],[1,"unit"],[1,"u8"],[6,"Ordering",793],[5,"RelayUrl",794],[1,"bool"],[1,"u16"],[1,"usize"],[6,"Result",795,null,1],[10,"Deserializer",796],[5,"Formatter",797],[8,"Result",797],[8,"Result",798],[5,"Arc",799,null,1],[10,"Into",800],[17,"Item"],[10,"IntoIterator",801],[6,"Option",802,null,1],[10,"Iterator",803],[10,"Serializer",804],[5,"String",805],[5,"TypeId",806],[5,"ClientBuilder",103],[17,"Output"],[10,"Fn",807],[10,"Send",808],[10,"Sync",808],[5,"SecretKey",809],[8,"TokioResolver",810],[5,"Client",103],[6,"ReceivedMessage",103,811],[6,"ClientError",103],[1,"array"],[5,"Error",812],[5,"Error",813],[6,"Error",814],[5,"Error",815],[6,"SocketAddr",816],[5,"ClientConfig",817],[6,"Protocol",228],[5,"Url",818],[8,"NodeId",809],[5,"Bytes",819],[5,"PublicKey",809],[10,"Error",820],[5,"Duration",821],[10,"Future",822,null,1],[5,"HeaderValue",823],[1,"str"],[1,"slice"],[6,"StunAttribute",262,824],[5,"AlternateServer",825],[5,"StunError",826],[5,"TransactionId",262,827],[5,"ErrorCode",828],[6,"Fingerprint",829],[5,"MappedAddress",830],[6,"MessageIntegrity",831],[6,"MessageIntegritySha256",832],[5,"Nonce",833],[5,"PasswordAlgorithm",834],[5,"PasswordAlgorithms",835],[5,"Realm",836],[5,"Software",837],[5,"Unknown",838],[5,"UnknownAttributes",839],[5,"UserHash",840],[5,"UserName",841],[5,"XorMappedAddress",842],[5,"AttributeType",824],[5,"MessageDecoder",262,843],[6,"MessageClass",262,844],[5,"StunMessage",844],[1,"tuple",null,null,1],[5,"StunDecodeError",262,826],[5,"Error",797],[6,"Error",262],[5,"DecoderContext",843],[10,"Hasher",845],[5,"Vec",846],[5,"QuicClient",490],[5,"Endpoint",847],[5,"Server",509],[5,"CertificateDer",848],[5,"Metrics",509,849],[5,"StunMetrics",509,849],[5,"ClientConnRateLimit",509],[5,"ServerConfig",509],[10,"Default",850],[10,"Debug",797],[5,"Limits",509],[5,"ReloadingResolver",509,851],[6,"MaybeTlsStreamServer",509],[5,"RelayConfig",509],[5,"StunConfig",509],[5,"QuicConfig",509],[5,"TlsConfig",509],[6,"CertConfig",509],[17,"Value"],[5,"CertifiedKey",852],[10,"Loader",853],[10,"Any",806],[5,"IntoIter",854],[5,"Pin",855],[5,"Context",856],[6,"Poll",857],[5,"ReadBuf",858],[8,"Result",815],[5,"IoSlice",859],[5,"ClientHello",860],[5,"AbortOnDropHandle",861],[5,"ServerConfig",860],[15,"ReceivedPacket",217],[15,"Health",217],[15,"ServerRestarting",217],[15,"Manual",784],[15,"LetsEncrypt",784]],"r":[[0,261],[1,792],[2,792],[3,792],[126,811],[272,844],[273,843],[285,824],[286,826],[288,827],[449,862],[487,863],[488,863],[489,863],[511,851],[516,849],[521,851],[525,849]],"b":[[52,"impl-Display-for-RelayMap"],[53,"impl-Debug-for-RelayMap"],[54,"impl-Display-for-RelayNode"],[55,"impl-Debug-for-RelayNode"],[162,"impl-Debug-for-ClientError"],[163,"impl-Display-for-ClientError"],[167,"impl-From%3CError%3E-for-ClientError"],[168,"impl-From%3CError%3E-for-ClientError"],[169,"impl-From%3CError%3E-for-ClientError"],[171,"impl-From%3CError%3E-for-ClientError"],[387,"impl-Display-for-TransactionId"],[388,"impl-Debug-for-TransactionId"],[390,"impl-Display-for-Error"],[391,"impl-Debug-for-Error"],[392,"impl-Debug-for-StunDecodeError"],[393,"impl-Display-for-StunDecodeError"],[396,"impl-From%3C%26%5Bu8;+stun_rs::::types::%7Bimpl%2313%7D::%7Bconstant%230%7D%5D%3E-for-TransactionId"],[397,"impl-From%3C%5Bu8;+stun_rs::::types::%7Bimpl%2314%7D::%7Bconstant%230%7D%5D%3E-for-TransactionId"],[399,"impl-From%3CRealm%3E-for-StunAttribute"],[401,"impl-From%3CNonce%3E-for-StunAttribute"],[402,"impl-From%3CPasswordAlgorithm%3E-for-StunAttribute"],[403,"impl-From%3CMessageIntegritySha256%3E-for-StunAttribute"],[404,"impl-From%3CUnknown%3E-for-StunAttribute"],[405,"impl-From%3CMessageIntegrity%3E-for-StunAttribute"],[406,"impl-From%3CPasswordAlgorithms%3E-for-StunAttribute"],[407,"impl-From%3CUserName%3E-for-StunAttribute"],[408,"impl-From%3CUserHash%3E-for-StunAttribute"],[409,"impl-From%3CFingerprint%3E-for-StunAttribute"],[410,"impl-From%3CSoftware%3E-for-StunAttribute"],[411,"impl-From%3CAlternateServer%3E-for-StunAttribute"],[412,"impl-From%3CMappedAddress%3E-for-StunAttribute"],[413,"impl-From%3CUnknownAttributes%3E-for-StunAttribute"],[414,"impl-From%3CXorMappedAddress%3E-for-StunAttribute"],[415,"impl-From%3CErrorCode%3E-for-StunAttribute"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAMEBMwABAAAABQAFAAwADAAaAAAAHQAKACkAEABBAAIASgABAFAAAQBVAA0AZQACAIcABwCQAAIAlQALAKIABACoAAIArAAAAK8AAwDGAAAAyAARAOoADAD4AAAA+wADAAABAAAyAQAAOgEZAFUBAABXARoAggEIAI0BAQCQAQAAkgEOAKQBBgDFAQAAyAEfAO8BBQD3AQAA+gEDABcCGQA3AggAQQIeAGQCDAByAgwAlAICAJgCCQCxAgEAtwIBALwCBADIAgAA1wIpAAMDDAA=","P":[[4,"T"],[11,""],[14,"T"],[17,""],[22,"K"],[24,""],[28,"T"],[34,"__D"],[36,""],[43,"K"],[52,""],[57,"T"],[60,"I,"],[61,""],[67,"U"],[70,""],[79,"__S"],[84,"T"],[87,""],[89,"U,T"],[92,"U"],[95,""],[100,"V"],[133,"S"],[134,"T"],[142,""],[144,"T"],[145,""],[148,"T"],[156,""],[166,"T"],[167,""],[170,"T"],[171,""],[172,"T"],[174,""],[179,"U"],[183,""],[188,""],[189,""],[196,""],[197,""],[199,"T"],[200,""],[201,"U,T"],[205,"U"],[209,""],[213,"V"],[233,"T"],[235,""],[236,"T"],[237,""],[238,"T"],[240,""],[242,"K"],[245,""],[246,"T"],[247,""],[248,"U"],[249,""],[250,"T"],[251,"U,T"],[252,"U"],[253,""],[255,"V"],[260,""],[313,"T"],[325,""],[329,"T"],[333,""],[338,"K"],[339,""],[342,"T"],[344,""],[345,"T"],[355,""],[363,"K"],[369,""],[394,"T"],[396,""],[398,"T"],[399,""],[400,"T"],[401,""],[416,"T"],[418,""],[419,"__H"],[420,""],[426,"U"],[432,""],[455,"T"],[459,""],[462,"U,T"],[463,""],[464,"U,T"],[469,"U"],[475,""],[481,"V"],[494,"T"],[498,""],[500,"T"],[501,""],[503,"U"],[504,""],[505,"U,T"],[506,"U"],[507,""],[508,"V"],[534,"T"],[564,""],[569,"T"],[572,""],[578,"EC,EA"],[579,""],[580,"T"],[583,"Loader,Deref::Target"],[584,"T"],[611,""],[627,"Loader"],[628,""],[629,"EC,EA"],[631,""],[633,"EC,EA"],[634,""],[636,"EC,EA"],[637,""],[639,"T"],[653,""],[662,"Loader"],[663,""],[673,"U"],[688,""],[709,"Loader"],[719,""],[720,"EC,EA"],[722,""],[726,"T"],[729,"U,T"],[742,"U"],[755,""],[770,"V"],[786,""]]}],["iroh_test",{"t":"FQNNNNCNCNNNNHHHHH","n":["CallOnDrop","assert_eq_hex","borrow","borrow_mut","drop","from","hexdump","into","logging","new","try_from","try_into","type_id","parse_hexdump","print_hexdump","setup","setup_multithreaded","testing_subscriber"],"q":[[0,"iroh_test"],[13,"iroh_test::hexdump"],[15,"iroh_test::logging"],[18,"core::ops::function"],[19,"core::result"],[20,"core::any"],[21,"alloc::vec"],[22,"anyhow"],[23,"alloc::string"],[24,"core::convert"],[25,"tracing_core::dispatcher"],[26,"tracing_core::subscriber"]],"i":"``f000`0`0000`````","f":"``{b{{b{c}}}{}}{{{b{d}}}{{b{dc}}}{}}{{{b{df}}}h}{cc{}}`{{}c{}}`{cfj}{c{{l{e}}}{}{}}{{}{{l{c}}}{}}{bn}{{{b{A`}}}{{Af{{Ad{Ab}}}}}}{{ce}Ah{{Al{{Aj{Ab}}}}}{{Al{{Aj{An}}}}}}{{}B`}{{}h}{{}{{`{Bb}}}}","D":"Ad","p":[[1,"reference",null,null,1],[0,"mut"],[5,"CallOnDrop",0],[1,"unit"],[10,"FnOnce",18],[6,"Result",19,null,1],[5,"TypeId",20],[1,"str"],[1,"u8"],[5,"Vec",21],[8,"Result",22],[5,"String",23],[1,"slice"],[10,"AsRef",24],[1,"usize"],[5,"DefaultGuard",25],[10,"Subscriber",26]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAAgABAABAAAAAwACAAcAAAAKAAMA","P":[[2,"T"],[4,""],[5,"T"],[7,"U"],[9,""],[10,"U,T"],[11,"U"],[12,""],[14,","],[15,""]]}]]'));
if (typeof exports !== 'undefined') exports.searchIndex = searchIndex;
else if (window.initSearch) window.initSearch(searchIndex);
-//{"start":39,"fragment_lengths":[500,60604,8260,6205,9917,4330,22447,1211]}
\ No newline at end of file
+//{"start":39,"fragment_lengths":[500,60604,8260,6205,9917,4330,22405,1211]}
\ No newline at end of file
diff --git a/pr/3069/docs/search.desc/iroh_relay/iroh_relay-desc-0-.js b/pr/3069/docs/search.desc/iroh_relay/iroh_relay-desc-0-.js
index dbb0c58333..6c9aa4ae36 100644
--- a/pr/3069/docs/search.desc/iroh_relay/iroh_relay-desc-0-.js
+++ b/pr/3069/docs/search.desc/iroh_relay/iroh_relay-desc-0-.js
@@ -1 +1 @@
-searchState.loadedDescShard("iroh_relay", 0, "Iroh’s relay is a feature within iroh, a peer-to-peer …\nConfiguration of all the relay servers that can be used.\nInformation on a specific relay server.\nConfiguration for speaking to the QUIC endpoint on the …\nExposes Client
, which allows to establish connections to a …\nIs this a known node?\nCreates a new RelayMap
with a single relay server …\nDefault values used in the relay.\nCreate an empty relay map.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nConstructs the RelayMap
from an iterator of RelayNode
s.\nReturns a RelayMap
from a RelayUrl
.\nGet the given node.\nHTTP-specific constants for the relay server and client.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nAre there any nodes in this map?\nHow many nodes are known?\nReturns an Iterator
over all known nodes.\nThe port on which the connection should be bound to.\nProtocols used by the iroh-relay\nCreate a QUIC server that accepts connections for QUIC …\nConfiguration to speak to the QUIC endpoint on the relay …\nA fully-fledged iroh-relay server over HTTP or HTTPS.\nWhether this relay server should only be used for STUN …\nThe stun port of the relay server.\nThe RelayUrl
where this relay server can be dialed.\nReturns the sorted relay URLs.\nThe inner actor is gone, likely means things are shutdown.\nThe relay super::client::Client
failed to build\nAn HTTP Relay client.\nBuild a Client.\nPossible connection errors on the Client
\nThe client is closed\nThere was a connection timeout error\nThere was an error dialing\nThere was an error with DNS resolution\nA one-way message from server to client, declaring the …\nThere was an http error http::Error
.\nThere was http server hyper::Error
\nBoth IPv4 and IPv6 are disabled for this relay node\nThe given Url
is invalid\nA one-way empty message from server to client, just to …\nNo local addresses exist\nIndicates that the client identified by the underlying …\nRequest from a client or server to reply to the other side …\nThe ping request was aborted\nThe ping request timed out\nReply to a ReceivedMessage::Ping
from a client or server …\nThe connection failed to proxy\nThere was an error receiving a packet\nThe messages received from a framed relay stream.\nRepresents an incoming packet.\nThere was an error sending a packet\nA one-way message from server to client, advertising that …\nThere was an unexpected status code\nThe connection failed to upgrade\nAn error related to websockets, either errors with parsing …\nReturns if we should prefer ipv6 it replaces the …\nBuild the Client
\nClose the http relay connection.\nDisconnect the http relay connection.\nConnects to a relay Server and returns the underlying …\nFinish a ping message\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nSkip the verification of the relay server’s SSL …\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nReturns true
if the underlying relay connection is …\nIndicates this client is a prober\nSet the capacity of the cache for public keys.\nGet the local addr of the connection. If there is no …\nCreates a client config that trusts any servers without …\nCreate a new ClientBuilder
\nLet the server know that this client is the preferred …\nSets whether to connect to the relay via websockets or not.\nSet an explicit proxy url to proxy all HTTP(S) traffic …\nThe public key for this client\nReads a message from the server.\nSend a packet to the server.\nSend a pong back to the server.\nThe expected PublicKey
of the relay server we are …\nSets the server url\nSend a ping to the server. Return once we get an expected …\nThe received packet bytes.\nIf set, is a description of why the connection is …\nAn advisory duration that the client should wait before …\nThe NodeId
of the packet sender.\nAn advisory duration for how long the client should …\nThe default HTTPS port used by the Relay server.\nThe default HTTP port used by the Relay server.\nThe default capacity of the key cache for the relay server.\nThe default metrics port used by the Relay server.\nThe default QUIC port used by the Relay server to accept …\nThe default STUN port used by the Relay server.\nThe HTTP upgrade protocol used for relaying.\nThe HTTP path under which the relay accepts relaying …\nThe HTTP path under which the relay allows doing latency …\nRelays over the custom relaying protocol with a custom …\nRelays over websockets.\nReturns the argument unchanged.\nCalls U::from(self)
.\nTries to match the value of an HTTP upgrade header to …\nThe HTTP upgrade header used or expected.\nThis module exports looks_like_disco_wrapper
as the only …\nThis module implements the relaying protocol used by the …\nSTUN packets sending and receiving.\nThe 6 byte header of all discovery messages.\nReports whether p looks like it’s a packet containing an …\nThe maximum size of a packet sent over relay. (This only …\nThe AlternateServer
atribute\nErrors that can occur when handling a STUN packet.\nThe ErrorCode
atribute\nerror response\nThe Fingerprint
atribute\nindication\nSTUN request had bogus fingerprint.\nThe STUN message could not be parsed or is otherwise …\nSTUN response has malformed attributes.\nThe MappedAddress
atribute\nThe STUN message class. Although there are four message …\nClass used to decode STUN messages\nThe MessageIntegrity
atribute\nThe MessageIntegritySha256
atribute\nSTUN request didn’t end in fingerprint.\nThe Nonce
atribute\nSTUN request is not a binding request when it should be.\nSTUN packet is not a response when it should be.\nThe PasswordAlgorithm
atribute\nThe PasswordAlgorithms
atribute\nThe Realm
atribute\nrequest\nThe Software
atribute\nSTUN Attributes that can be attached to a StunMessage
\nDescribes an error decoding a StunMessage
\nsuccess response\nThe transaction ID is a 96-bit identifier, used to …\nThe Unknown
atribute\nThe UnknownAttributes
atribute\nThe UserHash
atribute\nThe UserName
atribute\nThe XorMappedAddress
atribute\nReturns a reference to the internal attribute value or an …\nReturns a reference to the bytes that represents the …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns the STUN attribute type of this instance.\nDecodes the STUN raw buffer\nCreates a cryptographically random transaction ID chosen …\nReturns a reference to the AlternateServer
attribute.\nReturns a reference to the ErrorCode
attribute.\nReturns a reference to the Fingerprint
attribute.\nReturns a reference to the MappedAddress
attribute.\nReturns a reference to the MessageIntegrity
attribute.\nReturns a reference to the MessageIntegritySha256
…\nReturns a reference to the Nonce
attribute.\nReturns a reference to the PasswordAlgorithm
attribute.\nReturns a reference to the PasswordAlgorithms
attribute.\nReturns a reference to the Realm
attribute.\nReturns a reference to the Software
attribute.\nReturns a reference to the Unknown
attribute.\nReturns a reference to the UnknownAttributes
attribute.\nReturns a reference to the UserHash
attribute.\nReturns a reference to the UserName
attribute.\nReturns a reference to the XorMappedAddress
attribute.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nGets the context associated to this decoder\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nReports whether b is a STUN message.\nReturns true if this StunAttribute
is AlternateServer
\nReturns true if this StunAttribute
is ErrorCode
\nReturns true if this StunAttribute
is Fingerprint
\nReturns true if this StunAttribute
is MappedAddress
\nReturns true if this StunAttribute
is MessageIntegrity
\nReturns true if this StunAttribute
is …\nReturns true if this StunAttribute
is Nonce
\nReturns true if this StunAttribute
is PasswordAlgorithm
\nReturns true if this StunAttribute
is PasswordAlgorithms
\nReturns true if this StunAttribute
is Realm
\nReturns true if this StunAttribute
is Software
\nReturns true if this StunAttribute
is Unknown
\nReturns true if this StunAttribute
is UnknownAttributes
\nReturns true if this StunAttribute
is UserHash
\nReturns true if this StunAttribute
is UserName
\nReturns true if this StunAttribute
is XorMappedAddress
\nSTUN Methods Registry\nParses a STUN binding request.\nParses a successful binding response STUN packet. The IP …\nGenerates a binding request STUN packet.\nGenerates a binding response.\nBinding\nReserved\nShared secret\nALPN for our quic addr discovery\nEndpoint close error code\nEndpoint close reason\nHandles the client side of QUIC address discovery.\nReturns the argument unchanged.\nClient side of QUIC address discovery.\nCalls U::from(self)
.\nCreate a new QuicClient to handle the client side of QUIC …\nTLS certificate configuration.\nPer-client rate limit configuration.\nThe default certificate reload interval.\nUse Let’s Encrypt.\nRate limits.\nUse a static TLS key and certificate chain.\nThe main underlying IO stream type used for the relay …\nMetrics tracked for the relay server\nA plain non-Tls tokio::net::TcpStream
\nConfiguration for the QUIC server.\nConfiguration for the Relay HTTP and HTTPS server.\nUse a TLS key and certificate chain that can be reloaded.\nA Certificate resolver that reloads the certificate every …\nA running Relay + STUN server.\nConfiguration for the full Relay & STUN server.\nConfiguration for the STUN server.\nStunMetrics tracked for the relay server\nA Tls wrapped tokio::net::TcpStream
\nTLS configuration for Relay server.\nBurst limit for accepting new connection. Unlimited if not …\nRate limit for accepting new connection. Unlimited if not …\nNumber of connections we have accepted\nNumber of bad requests, either non-stun packets or …\nThe socket address on which the STUN server should bind.\nThe socket address on which the QUIC server should bind.\nMax number of bytes per second to read from the client …\nBytes received from a FrameType::SendPacket
\nBytes sent from a FrameType::SendPacket
\nMode for getting a cert.\nThe certificates chain if configured with manual TLS …\nRate limits for incoming traffic from a client connection.\nNumber of client connections which have had any frames …\nFrameType::SendPacket
dropped that are disco messages\nFrameType::SendPacket
received that are disco messages\nFrameType::SendPacket
sent that are disco messages\nNumber of connections we have removed because of an error\nNumber of failures\nNumber of frames received from client connection which …\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nNumber of FrameType::Ping
s received\nThe socket address the HTTP server is listening on.\nThe socket address on which the Relay HTTP server should …\nGet the server’s http RelayUrl
.\nThe socket address the HTTPS server is listening on.\nThe socket address on which to serve the HTTPS server.\nGet the server’s https RelayUrl
.\nPerform the initial load and construct the …\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nNumber of successful requests over ipv4\nNumber of successful requests over ipv6\nKey cache capacity.\nRate limits.\nMax number of bytes to read in a single burst.\nSocket to serve metrics on.\nPackets of other FrameType
s dropped\nPackets of other FrameType
s received\nPackets of other FrameType
s sent\nConfiguration for the QUIC server, disabled if None
.\nThe socket address the QUIC server is listening on.\nThe socket address on which to server the QUIC server is …\nConfiguration for the Relay server, disabled if None
.\nNumber of accepted ‘iroh derp http’ connection upgrades\nReload the certificate.\nNumber of stun requests made\nFrameType::SendPacket
dropped, that are not disco messages\nFrameType::SendPacket
received, that are not disco messages\nFrameType::SendPacket
sent, that are not disco messages\nNumber of FrameType::Pong
s sent\nThe TLS server configuration for the QUIC server.\nThe server configuration.\nShutdown the resolver.\nRequests graceful shutdown.\nStarts the server.\nConfiguration for the STUN server, disabled if None
.\nThe socket address the STUN server is listening on.\nReturns the handle for the task.\nExposes functions to quickly configure a server suitable …\nTLS configuration for the HTTPS server.\nNumber of unique client keys per day\nNumber of FrameType::Unknown
received\nNumber of accepted websocket connections\nThe TLS certificate chain.\nState for Let’s Encrypt certificates.\nCreates a QuicConfig
suitable for testing.\nCreates a RelayConfig
suitable for testing.\nCreates a rustls::ServerConfig
and certificates suitable …\nCreates a ServerConfig
suitable for testing.\nCreates a StunConfig
suitable for testing.\nCreates a TlsConfig
suitable for testing.")
\ No newline at end of file
+searchState.loadedDescShard("iroh_relay", 0, "Iroh’s relay is a feature within iroh, a peer-to-peer …\nConfiguration of all the relay servers that can be used.\nInformation on a specific relay server.\nConfiguration for speaking to the QUIC endpoint on the …\nExposes Client
, which allows to establish connections to a …\nIs this a known node?\nCreates a new RelayMap
with a single relay server …\nDefault values used in the relay.\nCreate an empty relay map.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nConstructs the RelayMap
from an iterator of RelayNode
s.\nReturns a RelayMap
from a RelayUrl
.\nGet the given node.\nHTTP-specific constants for the relay server and client.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nAre there any nodes in this map?\nHow many nodes are known?\nReturns an Iterator
over all known nodes.\nThe port on which the connection should be bound to.\nProtocols used by the iroh-relay\nCreate a QUIC server that accepts connections for QUIC …\nConfiguration to speak to the QUIC endpoint on the relay …\nA fully-fledged iroh-relay server over HTTP or HTTPS.\nWhether this relay server should only be used for STUN …\nThe stun port of the relay server.\nThe RelayUrl
where this relay server can be dialed.\nReturns the sorted relay URLs.\nThe inner actor is gone, likely means things are shutdown.\nThe relay super::client::Client
failed to build\nAn HTTP Relay client.\nBuild a Client.\nPossible connection errors on the Client
\nThe client is closed\nThere was a connection timeout error\nThere was an error dialing\nThere was an error with DNS resolution\nA one-way message from server to client, declaring the …\nThere was an http error http::Error
.\nThere was http server hyper::Error
\nBoth IPv4 and IPv6 are disabled for this relay node\nThe given Url
is invalid\nA one-way empty message from server to client, just to …\nNo local addresses exist\nIndicates that the client identified by the underlying …\nRequest from a client or server to reply to the other side …\nThe ping request was aborted\nThe ping request timed out\nReply to a ReceivedMessage::Ping
from a client or server …\nThe connection failed to proxy\nThere was an error receiving a packet\nThe messages received from a framed relay stream.\nRepresents an incoming packet.\nThere was an error sending a packet\nA one-way message from server to client, advertising that …\nThere was an unexpected status code\nThe connection failed to upgrade\nAn error related to websockets, either errors with parsing …\nReturns if we should prefer ipv6 it replaces the …\nBuild the Client
\nClose the http relay connection.\nConnects to a relay Server and returns the underlying …\nFinish a ping message\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nSkip the verification of the relay server’s SSL …\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nReturns true
if the underlying relay connection is …\nIndicates this client is a prober\nSet the capacity of the cache for public keys.\nGet the local addr of the connection. If there is no …\nCreates a client config that trusts any servers without …\nCreate a new ClientBuilder
\nLet the server know that this client is the preferred …\nSets whether to connect to the relay via websockets or not.\nSet an explicit proxy url to proxy all HTTP(S) traffic …\nReads a message from the server.\nSend a packet to the server.\nSend a pong back to the server.\nThe expected PublicKey
of the relay server we are …\nSets the server url\nSend a ping to the server. Return once we get an expected …\nThe received packet bytes.\nIf set, is a description of why the connection is …\nAn advisory duration that the client should wait before …\nThe NodeId
of the packet sender.\nAn advisory duration for how long the client should …\nThe default HTTPS port used by the Relay server.\nThe default HTTP port used by the Relay server.\nThe default capacity of the key cache for the relay server.\nThe default metrics port used by the Relay server.\nThe default QUIC port used by the Relay server to accept …\nThe default STUN port used by the Relay server.\nThe HTTP upgrade protocol used for relaying.\nThe HTTP path under which the relay accepts relaying …\nThe HTTP path under which the relay allows doing latency …\nRelays over the custom relaying protocol with a custom …\nRelays over websockets.\nReturns the argument unchanged.\nCalls U::from(self)
.\nTries to match the value of an HTTP upgrade header to …\nThe HTTP upgrade header used or expected.\nThis module exports looks_like_disco_wrapper
as the only …\nThis module implements the relaying protocol used by the …\nSTUN packets sending and receiving.\nThe 6 byte header of all discovery messages.\nReports whether p looks like it’s a packet containing an …\nThe maximum size of a packet sent over relay. (This only …\nThe AlternateServer
atribute\nErrors that can occur when handling a STUN packet.\nThe ErrorCode
atribute\nerror response\nThe Fingerprint
atribute\nindication\nSTUN request had bogus fingerprint.\nThe STUN message could not be parsed or is otherwise …\nSTUN response has malformed attributes.\nThe MappedAddress
atribute\nThe STUN message class. Although there are four message …\nClass used to decode STUN messages\nThe MessageIntegrity
atribute\nThe MessageIntegritySha256
atribute\nSTUN request didn’t end in fingerprint.\nThe Nonce
atribute\nSTUN request is not a binding request when it should be.\nSTUN packet is not a response when it should be.\nThe PasswordAlgorithm
atribute\nThe PasswordAlgorithms
atribute\nThe Realm
atribute\nrequest\nThe Software
atribute\nSTUN Attributes that can be attached to a StunMessage
\nDescribes an error decoding a StunMessage
\nsuccess response\nThe transaction ID is a 96-bit identifier, used to …\nThe Unknown
atribute\nThe UnknownAttributes
atribute\nThe UserHash
atribute\nThe UserName
atribute\nThe XorMappedAddress
atribute\nReturns a reference to the internal attribute value or an …\nReturns a reference to the bytes that represents the …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns the STUN attribute type of this instance.\nDecodes the STUN raw buffer\nCreates a cryptographically random transaction ID chosen …\nReturns a reference to the AlternateServer
attribute.\nReturns a reference to the ErrorCode
attribute.\nReturns a reference to the Fingerprint
attribute.\nReturns a reference to the MappedAddress
attribute.\nReturns a reference to the MessageIntegrity
attribute.\nReturns a reference to the MessageIntegritySha256
…\nReturns a reference to the Nonce
attribute.\nReturns a reference to the PasswordAlgorithm
attribute.\nReturns a reference to the PasswordAlgorithms
attribute.\nReturns a reference to the Realm
attribute.\nReturns a reference to the Software
attribute.\nReturns a reference to the Unknown
attribute.\nReturns a reference to the UnknownAttributes
attribute.\nReturns a reference to the UserHash
attribute.\nReturns a reference to the UserName
attribute.\nReturns a reference to the XorMappedAddress
attribute.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nGets the context associated to this decoder\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nReports whether b is a STUN message.\nReturns true if this StunAttribute
is AlternateServer
\nReturns true if this StunAttribute
is ErrorCode
\nReturns true if this StunAttribute
is Fingerprint
\nReturns true if this StunAttribute
is MappedAddress
\nReturns true if this StunAttribute
is MessageIntegrity
\nReturns true if this StunAttribute
is …\nReturns true if this StunAttribute
is Nonce
\nReturns true if this StunAttribute
is PasswordAlgorithm
\nReturns true if this StunAttribute
is PasswordAlgorithms
\nReturns true if this StunAttribute
is Realm
\nReturns true if this StunAttribute
is Software
\nReturns true if this StunAttribute
is Unknown
\nReturns true if this StunAttribute
is UnknownAttributes
\nReturns true if this StunAttribute
is UserHash
\nReturns true if this StunAttribute
is UserName
\nReturns true if this StunAttribute
is XorMappedAddress
\nSTUN Methods Registry\nParses a STUN binding request.\nParses a successful binding response STUN packet. The IP …\nGenerates a binding request STUN packet.\nGenerates a binding response.\nBinding\nReserved\nShared secret\nALPN for our quic addr discovery\nEndpoint close error code\nEndpoint close reason\nHandles the client side of QUIC address discovery.\nReturns the argument unchanged.\nClient side of QUIC address discovery.\nCalls U::from(self)
.\nCreate a new QuicClient to handle the client side of QUIC …\nTLS certificate configuration.\nPer-client rate limit configuration.\nThe default certificate reload interval.\nUse Let’s Encrypt.\nRate limits.\nUse a static TLS key and certificate chain.\nThe main underlying IO stream type used for the relay …\nMetrics tracked for the relay server\nA plain non-Tls tokio::net::TcpStream
\nConfiguration for the QUIC server.\nConfiguration for the Relay HTTP and HTTPS server.\nUse a TLS key and certificate chain that can be reloaded.\nA Certificate resolver that reloads the certificate every …\nA running Relay + STUN server.\nConfiguration for the full Relay & STUN server.\nConfiguration for the STUN server.\nStunMetrics tracked for the relay server\nA Tls wrapped tokio::net::TcpStream
\nTLS configuration for Relay server.\nBurst limit for accepting new connection. Unlimited if not …\nRate limit for accepting new connection. Unlimited if not …\nNumber of connections we have accepted\nNumber of bad requests, either non-stun packets or …\nThe socket address on which the STUN server should bind.\nThe socket address on which the QUIC server should bind.\nMax number of bytes per second to read from the client …\nBytes received from a FrameType::SendPacket
\nBytes sent from a FrameType::SendPacket
\nMode for getting a cert.\nThe certificates chain if configured with manual TLS …\nRate limits for incoming traffic from a client connection.\nNumber of client connections which have had any frames …\nFrameType::SendPacket
dropped that are disco messages\nFrameType::SendPacket
received that are disco messages\nFrameType::SendPacket
sent that are disco messages\nNumber of connections we have removed because of an error\nNumber of failures\nNumber of frames received from client connection which …\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nNumber of FrameType::Ping
s received\nThe socket address the HTTP server is listening on.\nThe socket address on which the Relay HTTP server should …\nGet the server’s http RelayUrl
.\nThe socket address the HTTPS server is listening on.\nThe socket address on which to serve the HTTPS server.\nGet the server’s https RelayUrl
.\nPerform the initial load and construct the …\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nNumber of successful requests over ipv4\nNumber of successful requests over ipv6\nKey cache capacity.\nRate limits.\nMax number of bytes to read in a single burst.\nSocket to serve metrics on.\nPackets of other FrameType
s dropped\nPackets of other FrameType
s received\nPackets of other FrameType
s sent\nConfiguration for the QUIC server, disabled if None
.\nThe socket address the QUIC server is listening on.\nThe socket address on which to server the QUIC server is …\nConfiguration for the Relay server, disabled if None
.\nNumber of accepted ‘iroh derp http’ connection upgrades\nReload the certificate.\nNumber of stun requests made\nFrameType::SendPacket
dropped, that are not disco messages\nFrameType::SendPacket
received, that are not disco messages\nFrameType::SendPacket
sent, that are not disco messages\nNumber of FrameType::Pong
s sent\nThe TLS server configuration for the QUIC server.\nThe server configuration.\nShutdown the resolver.\nRequests graceful shutdown.\nStarts the server.\nConfiguration for the STUN server, disabled if None
.\nThe socket address the STUN server is listening on.\nReturns the handle for the task.\nExposes functions to quickly configure a server suitable …\nTLS configuration for the HTTPS server.\nNumber of unique client keys per day\nNumber of FrameType::Unknown
received\nNumber of accepted websocket connections\nThe TLS certificate chain.\nState for Let’s Encrypt certificates.\nCreates a QuicConfig
suitable for testing.\nCreates a RelayConfig
suitable for testing.\nCreates a rustls::ServerConfig
and certificates suitable …\nCreates a ServerConfig
suitable for testing.\nCreates a StunConfig
suitable for testing.\nCreates a TlsConfig
suitable for testing.")
\ No newline at end of file
diff --git a/pr/3069/docs/src/iroh_relay/client.rs.html b/pr/3069/docs/src/iroh_relay/client.rs.html
index 548b0b68ad..e2ebf00915 100644
--- a/pr/3069/docs/src/iroh_relay/client.rs.html
+++ b/pr/3069/docs/src/iroh_relay/client.rs.html
@@ -981,19 +981,7 @@
980
981
982
-983
-984
-985
-986
-987
-988
-989
-990
-991
-992
-993
-994
-995
//! Exposes [`Client`], which allows to establish connections to a relay server.
+983
//! Exposes [`Client`], which allows to establish connections to a relay server.
//!
//! Based on tailscale/derp/derphttp/derphttp_client.go
@@ -1109,7 +1097,6 @@
/// Cheaply clonable.
#[derive(derive_more::Debug)]
pub struct Client {
- public_key: PublicKey,
secret_key: SecretKey,
is_preferred: bool,
relay_conn: Option<(Conn, Option<SocketAddr>)>,
@@ -1265,10 +1252,8 @@
config.resumption = Resumption::default();
let tls_connector: tokio_rustls::TlsConnector = Arc::new(config).into();
- let public_key = key.public();
let mut client = Client {
- public_key,
secret_key: key,
is_preferred: false,
relay_conn: None,
@@ -1316,9 +1301,30 @@
}
impl Client {
- /// The public key for this client
- pub fn public_key(&self) -> PublicKey {
- self.public_key
+ /// Reads a message from the server.
+ pub async fn recv(&mut self) -> Option<Result<ReceivedMessage, ClientError>> {
+ if let Some((conn, _)) = self.relay_conn.as_mut() {
+ match tokio::time::timeout(CLIENT_RECV_TIMEOUT, conn.next()).await {
+ Ok(Some(Ok(msg))) => Some(Ok(msg)),
+ Ok(Some(Err(e))) => {
+ self.close_for_reconnect().await;
+ if self.is_closed {
+ return Some(Err(ClientError::Closed));
+ }
+ Some(Err(ClientError::Receive(e)))
+ }
+ Ok(None) => {
+ self.close_for_reconnect().await;
+ None
+ }
+ Err(_) => {
+ self.close_for_reconnect().await;
+ Some(Err(ClientError::Closed))
+ }
+ }
+ } else {
+ future::pending().await
+ }
}
/// Connects to a relay Server and returns the underlying relay connection.
@@ -1524,11 +1530,7 @@
if self.is_closed {
return None;
}
- if let Some((_, local_addr)) = self.relay_conn {
- local_addr
- } else {
- None
- }
+ self.relay_conn.as_ref().and_then(|(_, addr)| *addr)
}
/// Send a ping to the server. Return once we get an expected pong.
@@ -1789,37 +1791,11 @@
}
}
- /// Reads a message from the server.
- pub async fn recv(&mut self) -> Option<Result<ReceivedMessage, ClientError>> {
- if let Some((conn, _)) = self.relay_conn.as_mut() {
- match tokio::time::timeout(CLIENT_RECV_TIMEOUT, conn.next()).await {
- Ok(Some(Ok(msg))) => Some(Ok(msg)),
- Ok(Some(Err(e))) => {
- self.close_for_reconnect().await;
- if self.is_closed {
- return Some(Err(ClientError::Closed));
- }
- Some(Err(ClientError::Receive(e)))
- }
- Ok(None) => {
- self.close_for_reconnect().await;
- None
- }
- Err(_) => {
- self.close_for_reconnect().await;
- Some(Err(ClientError::Closed))
- }
- }
- } else {
- future::pending().await
- }
- }
-
/// Disconnect the http relay connection.
///
/// Closes the underlying relay connection. The next time the client takes some action that
/// requires a connection, it will call `connect`.
- pub async fn close_for_reconnect(&mut self) {
+ async fn close_for_reconnect(&mut self) {
debug!("close for reconnect");
if let Some((ref mut conn, _)) = self.relay_conn.take() {
conn.close().await
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
diff --git a/pr/3069/docs/iroh_relay/client/struct.ClientBuilder.html b/pr/3069/docs/iroh_relay/client/struct.ClientBuilder.html
index 039b106046..2955758108 100644
--- a/pr/3069/docs/iroh_relay/client/struct.ClientBuilder.html
+++ b/pr/3069/docs/iroh_relay/client/struct.ClientBuilder.html
@@ -1,23 +1,23 @@
-ClientBuilder in iroh_relay::client - Rust pub struct ClientBuilder { /* private fields */ }
Expand description
Build a Client.
-Implementations§
Source§impl ClientBuilder
Sourcepub fn new(url: impl Into<RelayUrl>) -> Self
Create a new ClientBuilder
-Sourcepub fn server_url(self, url: impl Into<RelayUrl>) -> Self
Sets the server url
-Sourcepub fn protocol(self, protocol: Protocol) -> Self
Sets whether to connect to the relay via websockets or not.
+
ClientBuilder in iroh_relay::client - Rust pub struct ClientBuilder { /* private fields */ }
Expand description
Build a Client.
+Implementations§
Source§impl ClientBuilder
Sourcepub fn new(url: impl Into<RelayUrl>) -> Self
Create a new ClientBuilder
+Sourcepub fn server_url(self, url: impl Into<RelayUrl>) -> Self
Sets the server url
+Sourcepub fn protocol(self, protocol: Protocol) -> Self
Sets whether to connect to the relay via websockets or not.
Set to use non-websocket, normal relaying by default.
-Sourcepub fn address_family_selector<S>(self, selector: S) -> Selfwhere
+
Sourcepub fn address_family_selector<S>(self, selector: S) -> Self
Returns if we should prefer ipv6
it replaces the relayhttp.AddressFamilySelector we pass
It provides the hint as to whether in an IPv4-vs-IPv6 race that
IPv4 should be held back a bit to give IPv6 a better-than-50/50
chance of winning. We only return true when we believe IPv6 will
work anyway, so we don’t artificially delay the connection speed.
-Sourcepub fn insecure_skip_cert_verify(self, skip: bool) -> Self
Available on crate feature test-utils
only.
Skip the verification of the relay server’s SSL certificates.
+Sourcepub fn insecure_skip_cert_verify(self, skip: bool) -> Self
Available on crate feature test-utils
only.
Skip the verification of the relay server’s SSL certificates.
May only be used in tests.
-Sourcepub fn proxy_url(self, url: Url) -> Self
Set an explicit proxy url to proxy all HTTP(S) traffic through.
-Sourcepub fn key_cache_capacity(self, capacity: usize) -> Self
Set the capacity of the cache for public keys.
-Sourcepub async fn build(self, key: SecretKey, dns_resolver: DnsResolver) -> Client
Build the Client
-Sourcepub fn server_public_key(self, server_public_key: PublicKey) -> Self
The expected PublicKey
of the relay server we are connecting to.
-Trait Implementations§
Auto Trait Implementations§
§impl Freeze for ClientBuilder
§impl !RefUnwindSafe for ClientBuilder
§impl Send for ClientBuilder
§impl Sync for ClientBuilder
§impl Unpin for ClientBuilder
§impl !UnwindSafe for ClientBuilder
Blanket Implementations§
Sourcepub fn proxy_url(self, url: Url) -> Self
Set an explicit proxy url to proxy all HTTP(S) traffic through.
+Sourcepub fn key_cache_capacity(self, capacity: usize) -> Self
Set the capacity of the cache for public keys.
+Sourcepub async fn build(self, key: SecretKey, dns_resolver: DnsResolver) -> Client
Build the Client
+Sourcepub fn server_public_key(self, server_public_key: PublicKey) -> Self
The expected PublicKey
of the relay server we are connecting to.
+Trait Implementations§
Auto Trait Implementations§
§impl Freeze for ClientBuilder
§impl !RefUnwindSafe for ClientBuilder
§impl Send for ClientBuilder
§impl Sync for ClientBuilder
§impl Unpin for ClientBuilder
§impl !UnwindSafe for ClientBuilder
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
§fn implicit(
diff --git a/pr/3069/docs/search-index.js b/pr/3069/docs/search-index.js
index 658ec845a3..eb390956d0 100644
--- a/pr/3069/docs/search-index.js
+++ b/pr/3069/docs/search-index.js
@@ -1,4 +1,4 @@
-var searchIndex = new Map(JSON.parse('[["bulk",{"t":"HHHHH","n":["collect_and_print","main","run_iroh","run_quinn","run_s2n"],"q":[[0,"bulk"],[5,"core::option"],[6,"struct_iterable_internal"],[7,"iroh_bench"],[8,"anyhow"],[9,"iroh_bench::s2n"]],"i":"`````","f":"{{{d{b}}{f{{d{c}}}}}hj}{{}h}{l{{n{h}}}}0{A`{{n{h}}}}","D":"`","p":[[1,"str"],[1,"reference",null,null,1],[6,"Option",5,null,1],[1,"unit"],[10,"Iterable",6],[5,"Opt",7],[8,"Result",8],[5,"Opt",9]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAAUAAQAAAAUA","P":[[0,""],[1,""]]}],["iroh",{"t":"PPEPGTFIFFEFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNOCCNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNONNNNNCNNONONNNNNNNNNOOCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNCNNSSSSSCCSSSHHHHSSHHHFKFNNNNNNNNNNNNNNCNNNNNNNNNNNNNNOCOCONNNNCNNNNNNNNNNNFSSNNNNNNNNNNNNNNNNFSNNNNNNNNNNNNNNNNNSSSSFFFNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNTFNNNNNNNNNNNNNNNNNNNNNNIKHMNMNMNMNMNMNMNMNMNMNCHPSGFPFNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNONONNNNNNHNNNNNNNNNNNNNTTFFFFKPFPFTTTPFPFPPFFFPGPPPPPFGGKKFKPPPFFGPPPSFFTTTPFKTTPFFTPPTTPFTTPPFFTFPPPPFGPGGFPPGFPPGFTTPGFFGPPGFPPTPPPFFPFPFPPFFPFGFFPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONONNNOOOMNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNONNONONOONOOOONNNONNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNONNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNONNNNNNNNNNNNNNNOOONOOONNNOOOHNNNONNNOOONNNNNNNNOONNOONONMNMNMNNNNNNNOOONNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOONNNNNNONNNNNNNNOONMNNONMNNNNNNOONNNNNNNNNNNNNNNNNNNONMNNONOONOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNOOFFFFNNNNOOOOOOOOONNNNNNNNOONNNNNNNNNNNNOOONNNNNNNNNNNNOOOONNNNONNNNONNNNNNNNONNNNNNNNNNNNOOONNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNOOOOOOONNNNOKFFNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFNNNNHNNNNNNNNNNNNNNNNOONONHHHNNNNNNNNNFFFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["Decode","DecodeInvalidLength","Endpoint","Key","KeyParsingError","LENGTH","NodeAddr","NodeId","PublicKey","RelayMap","RelayMode","RelayNode","RelayUrl","RelayUrlParseError","SecretKey","__clone_box","","","","","","as_bytes","as_ref","borrow","","","","","","","","","borrow_mut","","","","","","","","clone","","","","","","clone_into","","","","","","clone_to_uninit","","","","","","cmp","","","","compare","","","","contains_node","default_from_node","defaults","deref","","","","","","","","","deref_mut","","","","","","","","deserialize","","","","","direct_addresses","","discovery","dns","drop","","","","","","","","empty","endpoint","eq","","","","","equivalent","","","","","","","","","","","","","","","fmt","","","","","","","","","","","","","","","fmt_short","from","","","","","","","","","","","","","","","","","","","","from_bytes","","from_nodes","from_parts","from_ref","","","","","","from_str","","","from_url","generate","get_node","hash","","init","","","","","","","","into","","","","","","","","is_empty","","len","metrics","new","node_id","nodes","partial_cmp","","","","protocol","public","","quic","relay_url","","secret","serialize","","","","","sign","source","","stun_only","stun_port","test_utils","to_bytes","to_owned","","","","","","to_string","","","","","","","try_from","","","","","","","","","","","try_into","","","","","","","","type_id","","","","","","","","url","urls","verify","vzip","","","","","","","","watchable","with_direct_addresses","with_relay_url","DEFAULT_HTTPS_PORT","DEFAULT_HTTP_PORT","DEFAULT_METRICS_PORT","DEFAULT_RELAY_QUIC_PORT","DEFAULT_STUN_PORT","prod","staging","AP_RELAY_HOSTNAME","EU_RELAY_HOSTNAME","NA_RELAY_HOSTNAME","default_ap_relay_node","default_eu_relay_node","default_na_relay_node","default_relay_map","EU_RELAY_HOSTNAME","NA_RELAY_HOSTNAME","default_eu_relay_node","default_na_relay_node","default_relay_map","ConcurrentDiscovery","Discovery","DiscoveryItem","__clone_box","add","borrow","","borrow_mut","","clone","clone_into","clone_to_uninit","default","deref","","deref_mut","","dns","drop","","empty","fmt","","from","","","from_ref","from_services","init","","into","","last_updated","local_swarm_discovery","node_addr","pkarr","provenance","publish","","resolve","","static_provider","subscribe","","to_owned","try_from","","try_into","","type_id","","vzip","","DnsDiscovery","N0_DNS_NODE_ORIGIN_PROD","N0_DNS_NODE_ORIGIN_STAGING","borrow","borrow_mut","deref","deref_mut","drop","fmt","from","init","into","n0_dns","new","resolve","try_from","try_into","type_id","vzip","LocalSwarmDiscovery","NAME","borrow","borrow_mut","deref","deref_mut","drop","fmt","from","init","into","new","publish","resolve","subscribe","try_from","try_into","type_id","vzip","DEFAULT_PKARR_TTL","DEFAULT_REPUBLISH_INTERVAL","N0_DNS_PKARR_RELAY_PROD","N0_DNS_PKARR_RELAY_STAGING","PkarrPublisher","PkarrRelayClient","PkarrResolver","__clone_box","","","borrow","","","borrow_mut","","","clone","","","clone_into","","","clone_to_uninit","","","deref","","","deref_mut","","","dht","drop","","","","fmt","","","from","","","from_ref","","","init","","","into","","","n0_dns","","new","","","publish","","resolve","","to_owned","","","try_from","","","try_into","","","type_id","","","update_addr_info","vzip","","","with_options","Builder","DhtDiscovery","__clone_box","borrow","","borrow_mut","","build","builder","client","clone","clone_into","clone_to_uninit","default","","deref","","deref_mut","","dht","drop","","fmt","","from","","from_ref","include_direct_addresses","init","","initial_publish_delay","into","","n0_dns_pkarr_relay","pkarr_relay","publish","republish_delay","resolve","secret_key","to_owned","try_from","","try_into","","ttl","type_id","","vzip","","PROVENANCE","StaticProvider","add_node_addr","borrow","borrow_mut","default","deref","deref_mut","drop","fmt","from","from_node_addrs","get_node_addr","init","into","new","publish","remove_node_addr","resolve","set_node_addr","try_from","try_into","type_id","vzip","DnsResolver","ResolverExt","default_resolver","lookup_by_id","","lookup_by_id_staggered","","lookup_by_name","","lookup_by_name_staggered","","lookup_ipv4","","lookup_ipv4_ipv6","","lookup_ipv4_ipv6_staggered","","lookup_ipv4_staggered","","lookup_ipv6","","lookup_ipv6_staggered","","node_info","resolver","Addr","IROH_TXT_NAME","IrohAttr","NodeInfo","Relay","TxtAttrs","__clone_box","as_ref","attrs","borrow","","","borrow_mut","","","clone","clone_into","clone_to_uninit","cmp","compare","deref","","","deref_mut","","","direct_addresses","drop","","","eq","","equivalent","","","","","","fmt","","","","from","","","","","","from_hickory_records","","from_parts","from_pkarr_signed_packet","","from_ref","from_str","from_strings","from_z32","hash","init","","","into","","","lookup_by_id","lookup_by_name","new","node_id","","partial_cmp","relay_url","to_hickory_records","","to_owned","to_pkarr_signed_packet","","to_string","to_z32","try_from","","","","try_into","","","type_id","","","vzip","","","AEAD_LIMIT_REACHED","APPLICATION_ERROR","Accept","AcceptBi","AcceptUni","AckFrequencyConfig","AeadKey","App","ApplicationClose","ApplicationClosed","Builder","CONNECTION_ID_LIMIT_ERROR","CONNECTION_REFUSED","CRYPTO_BUFFER_EXCEEDED","CallMeMaybe","Chunk","CidsExhausted","ClosedStream","","","Connecting","Connection","ConnectionClose","ConnectionClosed","ConnectionError","ConnectionLost","","","","","ConnectionStats","ConnectionType","ControlMsg","Controller","ControllerFactory","CryptoError","CryptoServerConfig","Custom","Default","Direct","DirectAddr","DirectAddrInfo","DirectAddrType","Disabled","","Discovery","ENV_FORCE_STAGING_RELAYS","Endpoint","ExportKeyingMaterialError","FINAL_SIZE_ERROR","FLOW_CONTROL_ERROR","FRAME_ENCODING_ERROR","FinishedEarly","FrameStats","HandshakeTokenKey","INTERNAL_ERROR","INVALID_TOKEN","IllegalOrderedRead","Incoming","IncomingFuture","KEY_UPDATE_ERROR","Local","LocallyClosed","MAX","MAX_SIZE","Mixed","MtuDiscoveryConfig","NO_ERROR","NO_VIABLE_PATH","NamedApp","None","OpenBi","OpenUni","PROTOCOL_VIOLATION","PathStats","Ping","Pong","Portmapped","Read","ReadDatagram","ReadError","","ReadExactError","ReadToEndError","RecvStream","Relay","","RelayMode","RemoteInfo","Reset","","ResetError","RetryError","STREAM_LIMIT_ERROR","STREAM_STATE_ERROR","Saved","SendDatagramError","SendStream","ServerConfig","Source","Staging","Stopped","StoppedError","StreamId","Stun","Stun4LocalPort","TRANSPORT_PARAMETER_ERROR","TimedOut","TooLarge","TooLong","TransportConfig","TransportError","","TransportErrorCode","Udp","UdpStats","Unknown","UnsupportedByPeer","UnsupportedVersion","VarInt","VersionMismatch","WeakConnectionHandle","WriteError","Written","ZeroRttAccepted","ZeroRttRejected","","","","__clone_box","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","accept","","accept_bi","accept_uni","accept_with","ack_eliciting_threshold","ack_frequency","ack_frequency_config","acks","add_discovery","add_node_addr","add_node_addr_with_source","addr","","addrs","aead_from_hkdf","allow_spin","alpn","alpns","bind","bind_addr_v4","bind_addr_v6","black_hole_cooldown","black_holes_detected","borrow","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","borrow_mut","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bound_sockets","build","builder","bytes","","","chunks","clear_discovery","clone","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","clone_box","clone_into","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","clone_to_uninit","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","close","","close_reason","closed","cmp","","","","code","compare","","","","congestion_controller_factory","congestion_events","congestion_state","conn_type","","connect","connection_close","crypto","","","crypto_buffer_size","current_mtu","cwnd","data_blocked","datagram","datagram_receive_buffer_size","datagram_send_buffer_size","datagram_send_buffer_space","datagrams","default","","","","","","","","","","","default_relay_mode","deref","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","deref_mut","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","deserialize","","","","","dir","direct_addresses","discovery","","discovery_dht","discovery_local_network","discovery_n0","dns_resolver","","drop","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","enable_segmentation_offload","eq","","","","","","","","","","","","","","","","","","","","","","","","","","equivalent","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","error_code","","export_keying_material","finish","fmt","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","force_staging_infra","frame","frame_rx","frame_tx","frame_type","from","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","from_ref","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","from_u32","from_u64","from_u64_unchecked","get_remote_node_id","handshake_data","","handshake_done","has_send_address","hash","","","","","home_relay","id","","ignore","immediate_ack","incoming_buffer_size","incoming_buffer_size_total","index","init","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","initial_keys","initial_mtu","initial_rtt","initial_window","initiator","insecure_skip_relay_cert_verify","interval","into","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","into_0rtt","into_any","into_future","","","","","","","","","","into_incoming","into_inner","ios","is_0rtt","is_alive","is_closed","join","","","","","","","","","keep_alive_interval","keylog","known_nodes","last_alive","last_control","last_payload","last_received","last_used","latency","","local_ip","","","lost_bytes","lost_packets","lost_plpmtud_probes","make_server_config","max_ack_delay","max_concurrent_bidi_streams","max_concurrent_uni_streams","max_data","max_datagram_size","max_idle_timeout","max_incoming","max_stream_data","max_streams_bidi","max_streams_uni","migration","min_mtu","minimum_change","mtu_discovery_config","network_change","network_path_changed","new","","new_connection_id","new_token","node_addr","node_id","","observed_addr","observed_external_addr","offset","on_ack","on_congestion_event","on_end_acks","on_mtu_update","on_sent","open","open_bi","open_uni","packet_threshold","partial_cmp","","","","path","path_challenge","path_response","peer_identity","persistent_congestion_threshold","ping","poll","","","","","","","","","poll_flush","poll_read","","poll_shutdown","poll_write","","preferred_address_v4","preferred_address_v6","priority","proxy_from_env","proxy_url","race","","","","","","","","","read","read_chunk","read_chunks","read_datagram","read_exact","read_to_end","reason","","","receive_observed_address_reports","receive_window","received_reset","refuse","relay_map","relay_mode","relay_url","remote_address","","","remote_address_validated","remote_info","remote_info_iter","reordering_threshold","reset","reset_stream","retire_connection_id","retry","retry_tag","retry_token_lifetime","rtt","","saturating_add","seal","secret_key","","send_datagram","send_datagram_wait","send_observed_address_reports","send_window","sent_packets","sent_plpmtud_probes","serialize","","","","","set_alpns","set_max_concurrent_bi_streams","set_max_concurrent_uni_streams","set_priority","set_receive_window","source","","","","","","","","sources","","stable_id","start_session","stats","stop","stop_sending","stopped","stream","stream_data_blocked","stream_receive_window","streams_blocked_bidi","streams_blocked_uni","time_threshold","to_owned","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","to_string","","","","","","","","","","","","","","","","","","","","token_key","transport","transport_config","","try_from","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","try_into","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","try_poll","","","","","","","typ","type_id","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","udp_rx","udp_tx","upper_bound","vzip","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","weak_handle","window","with_crypto","with_single_cert","write","write_all","write_all_chunks","write_chunk","write_chunks","name","","MagicsockMetrics","NetReportMetrics","PortmapMetrics","RelayMetrics","__clone_box","","","","accepts","actor_link_change","actor_tick_direct_addr_heartbeat","actor_tick_direct_addr_update_receiver","actor_tick_main","actor_tick_msg","actor_tick_other","actor_tick_portmap_changed","actor_tick_re_stun","borrow","","","","borrow_mut","","","","bytes_recv","bytes_sent","clone","","","","clone_into","","","","clone_to_uninit","","","","connection_became_direct","connection_handshake_success","conns_rx_ratelimited_total","default","","","","deref","","","","deref_mut","","","","disco_packets_dropped","disco_packets_recv","disco_packets_sent","disconnects","drop","","","","external_address_updated","fmt","","","","frames_rx_ratelimited_total","from","","","","from_ref","","","","got_ping","init","","","","into","","","","iter","","","","local_port_updates","mapping_attempts","mapping_failures","name","","","","nodes_contacted","nodes_contacted_directly","num_direct_conns_added","num_direct_conns_removed","num_relay_conns_added","num_relay_conns_removed","other_packets_dropped","other_packets_recv","other_packets_sent","pcp_available","pcp_probes","probes_started","re_stun_calls","recv_data_ipv4","recv_data_ipv6","recv_data_relay","recv_datagrams","recv_disco_bad_key","recv_disco_bad_parse","recv_disco_call_me_maybe","recv_disco_call_me_maybe_bad_disco","recv_disco_ping","recv_disco_pong","recv_disco_relay","recv_disco_udp","recv_gro_datagrams","relay_accepts","relay_home_change","reports","reports_full","send_data","send_data_network_down","send_disco_relay","send_disco_udp","send_ipv4","send_ipv6","send_packets_dropped","send_packets_recv","send_packets_sent","send_relay","send_relay_error","sent_disco_call_me_maybe","sent_disco_ping","sent_disco_pong","sent_disco_relay","sent_disco_udp","sent_pong","stun_packets_dropped","stun_packets_recv_ipv4","stun_packets_recv_ipv6","stun_packets_sent_ipv4","stun_packets_sent_ipv6","to_owned","","","","try_from","","","","try_into","","","","type_id","","","","unique_client_keys","unknown_frames","update_direct_addrs","upnp_available","upnp_gateway_updated","upnp_probes","upnp_probes_failed","vzip","","","","websocket_accepts","ProtocolHandler","Router","RouterBuilder","__clone_box","accept","","borrow","","borrow_mut","","builder","clone","clone_into","clone_to_uninit","deref","","deref_mut","","drop","","endpoint","","fmt","","from","","from_ref","init","","into","","is_shutdown","new","shutdown","","spawn","to_owned","try_from","","try_into","","type_id","","vzip","","CleanupDropGuard","DnsPkarrServer","borrow","","borrow_mut","","create_dns_resolver","deref","","deref_mut","","discovery","dns_resolver","drop","","fmt","","from","","init","","into","","nameserver","node_origin","on_node","pkarr_url","run","run_relay_server","run_relay_server_with","run_relay_server_with_stun","run_with_origin","try_from","","try_into","","type_id","","vzip","","Disconnected","WatchInitializedFut","WatchNextFut","Watchable","Watcher","WatcherStream","__clone_box","","","borrow","","","","","","borrow_mut","","","","","","chain","clone","","","clone_into","","","clone_to_uninit","","","default","deref","","","","","","deref_mut","","","","","","drop","","","","","","fmt","","","","","","","from","","","","","","from_ref","","","get","","init","","","","","","initialized","into","","","","","","into_future","","into_stream","join","","merge","new","poll","","poll_next","race","","ratelimit_stream","ratelimit_stream_with_jitter","set","stream","stream_updates_only","to_owned","","","to_string","try_from","","","","","","try_into","","","","","","try_poll","","try_poll_next","type_id","","","","","","updated","vzip","","","","","","watch","zip"],"q":[[0,"iroh"],[279,"iroh::defaults"],[286,"iroh::defaults::prod"],[293,"iroh::defaults::staging"],[298,"iroh::discovery"],[351,"iroh::discovery::dns"],[370,"iroh::discovery::local_swarm_discovery"],[389,"iroh::discovery::pkarr"],[466,"iroh::discovery::pkarr::dht"],[515,"iroh::discovery::static_provider"],[539,"iroh::dns"],[564,"iroh::dns::node_info"],[655,"iroh::endpoint"],[2181,"iroh::endpoint::Source"],[2183,"iroh::metrics"],[2359,"iroh::protocol"],[2404,"iroh::test_utils"],[2444,"iroh::watchable"],[2576,"dyn_clone::sealed"],[2577,"iroh_base::key"],[2578,"iroh_base::node_addr"],[2579,"iroh_base::relay_url"],[2580,"iroh_relay::relay_map"],[2581,"core::cmp"],[2582,"core::result"],[2583,"serde::de"],[2584,"core::net::socket_addr"],[2585,"core::iter::traits::iterator"],[2586,"core::fmt"],[2587,"alloc::string"],[2588,"ed25519_dalek::verifying"],[2589,"signature::error"],[2590,"data_encoding"],[2591,"ed25519_dalek::signing"],[2592,"core::option"],[2593,"iroh_base::ticket::node"],[2594,"iroh::magicsock::node_map::node_state"],[2595,"url"],[2596,"url::parser"],[2597,"anyhow"],[2598,"alloc::sync"],[2599,"core::convert"],[2600,"core::iter::traits::collect"],[2601,"rand_core"],[2602,"core::hash"],[2603,"serde::ser"],[2604,"ed25519"],[2605,"core::error"],[2606,"core::any"],[2607,"alloc::boxed"],[2608,"alloc::vec"],[2609,"alloc::collections::btree::set"],[2610,"futures_lite::stream"],[2611,"pkarr::signed_packet"],[2612,"futures_core::stream"],[2613,"core::time"],[2614,"pkarr::client"],[2615,"core::future::future"],[2616,"core::net::ip_addr"],[2617,"hickory_proto::rr::domain::name"],[2618,"core::clone"],[2619,"hickory_resolver::resolver"],[2620,"alloc::collections::btree::map"],[2621,"core::str::traits"],[2622,"hickory_proto::rr::resource"],[2623,"iroh_quinn_proto::connection"],[2624,"iroh_quinn::connection"],[2625,"iroh_quinn_proto::config"],[2626,"iroh_quinn_proto::varint"],[2627,"core::ops::function"],[2628,"core::marker"],[2629,"iroh_quinn_proto::crypto"],[2630,"iroh_quinn_proto::congestion"],[2631,"std::time"],[2632,"iroh_quinn::recv_stream"],[2633,"iroh_quinn::send_stream"],[2634,"iroh_quinn_proto::connection::stats"],[2635,"iroh_quinn_proto::connection::streams::send"],[2636,"iroh_quinn_proto::connection::streams"],[2637,"iroh::magicsock::node_map"],[2638,"iroh_quinn_proto::frame"],[2639,"iroh::magicsock"],[2640,"iroh_quinn_proto"],[2641,"iroh_quinn_proto::connection::assembler"],[2642,"iroh_quinn::incoming"],[2643,"iroh_quinn_proto::connection::streams::recv"],[2644,"ring::error"],[2645,"iroh_quinn_proto::transport_parameters"],[2646,"iroh_quinn_proto::shared"],[2647,"futures_concurrency::future::join::tuple"],[2648,"core::future::into_future"],[2649,"tokio::sync::watch"],[2650,"iroh_quinn_proto::connection::paths"],[2651,"core::pin"],[2652,"core::task::wake"],[2653,"core::task::poll"],[2654,"std::io::error"],[2655,"tokio::io::read_buf"],[2656,"futures_concurrency::future::race::tuple"],[2657,"bytes::bytes"],[2658,"rustls_pki_types"],[2659,"rustls::error"],[2660,"alloc::vec::into_iter"],[2661,"futures_lite::future"],[2662,"iroh::test_utils::dns_and_pkarr_servers"],[2663,"iroh_relay::server"],[2664,"futures_concurrency::stream::chain::tuple"],[2665,"futures_concurrency::stream::into_stream"],[2666,"core::default"],[2667,"futures_concurrency::stream::merge::tuple"],[2668,"governor::state::direct"],[2669,"governor::state"],[2670,"governor::state::direct::streams"],[2671,"governor::clock::with_std"],[2672,"governor::middleware"],[2673,"governor::jitter"],[2674,"futures_concurrency::stream::zip::tuple"],[2675,"iroh_relay::defaults"],[2676,"iroh::test_utils::dns_server"]],"i":"Cb0`0`h`````````0AbAdAfAhAj55556432Cd21675430216543216543216543216431643122`675433021675430216543144``675430212`643216664443332221116677554330022116667775554444443300216524654321653252636754302167543021422`4426431`6514456543157011`5654321675302166675543021675430216754302112667543021`44``````````````````````FhFd101011101010`100101001010101`1`1Ff101`01221212121```Gj000000000000000``Gl0000000000000000```````GnH`Hb210210210210210210210`221021021021021021021210201021021021021022102``Hn0Hl10010111101010010101010100100010101101001010Ib`0000000000000000000000```IfId101010101010101010``Jf```0`Df1Jh21021011122210210121021222111221021110010010120`22102100010121101102`2210210210210A@n0`````A@f`Kn`222Ol`1`NjO````3`Nf2Nl2Ob```````AAf0A@b```419```:::Nn``;;7``;AAb:Lj03`==<3``=`::1Nh``3```4=``:<``>>=````59``22><80``<`=`28``<````:796L`91;84:72OdOfOhOjOlOnA@`Dh=A@dA@fKnLhMnLfA@hA@jA@lA@nAA`AAbAAdGbAAf1KjL`01=OfLl1Ln66On:DhMf4Kl4444MnOhADd:AEdAEbLdLbAElABdNfABfAAlNhNjNlNnAAnO`ObLlLjAB`OdOfOhOjOlOnA@`DhA@bA@dA@fKnLhMnLfABbABhABjA@hA@jA@lA@nAA`AAbAAdLnGbKhKjABlKlAAfADdL`AEdAEbLdLbAElABdNfABfAAlNhNjNlNnAAnO`ObLlLjAB`OdOfOhOjOlOnA@`DhA@bA@dA@fKnLhMnLfABbABhABjA@hA@jA@lA@nAA`AAbAAdLnGbKhKjABlKlAAf5N`6AB`OdA@`0:L`NfNhNjNlNnO`ObLj:OfOhOjOlOn>DhA@bA@dA@fKnLhMnLfA@hA@jA@lA@nAA`AAbAAdGbAAfNdL`NfNhNjNlNnO`ObLjOdOfOhOjOlOnA@`DhA@bA@dA@fKnLhMnLfA@hA@jA@lA@nAA`AAbAAdGbAAfL`NfNhNjNlNnO`ObLjOdOfOhOjOlOnA@`DhA@bA@dA@fKnLhMnLfA@hA@jA@lA@nAA`AAbAAdGbAAfL`200Lj65480654LlOh35Dh6Of;0?32200335Od45013OjA@`A@bLhMnLn`ADd=AEdAEbLdLbAElABdNfABfAAlNhNjNlNnAAnO`ObLlLjAB`OdOfOhOjOlOnA@`DhA@bA@dA@fKnLhMnLfABbABhABjA@hA@jA@lA@nAA`AAbAAdLnGbKhKjABlKlAAfADdL`AEdAEbLdLbAElABdNfABfAAlNhNjNlNnAAnO`ObLlLjAB`OdOfOhOjOlOnA@`DhA@bA@dA@fKnLhMnLfABbABhABjA@hA@jA@lA@nAA`AAbAAdLnGbKhKjABlKlAAfOlOnDhA@bA@f<:;:;;;;:ADdL`AEdAEbLdLbAElABdNfABfAAl0NhNjNlNnAAn0O`ObLlLjAB`OdOfOhOjOlOnA@`DhA@bA@dA@fKnLhMnLfABbABhABjA@hA@jA@lA@nAA`AAbAAdLnGbKhKjABlKlAAfLlNfNhNjNlNnO`ObLjAB`OlOnA@`DhA@bA@dA@fKnABbA@hA@jA@lA@nAA`AAbAAdAAfNf00Nh00Nj00Nl00Nn00O`00Ob00Lj00AB`00Ol00On00A@`00Dh00A@b00A@d00A@f00Kn00ABb00A@h00A@j00A@l00A@n00AA`00AAb00AAd00AAf0076L`AAn1ABdNf0ABf0AAlNh0Nj0Nl0Nn08O`0Ob0LlLj0AB`OdOfOhOjOl0OnA@`DhA@b0A@d0A@f0Kn0LhMnLfABbABhABjA@h0A@j0A@l0A@n0AA`AAb0AAd0LnGbKhKjABlKlAAf`;Oj0>ADdL`AEdAEbLdLbAElABdNf0ABfAAlNh0Nj000Nl0Nn0AAnO`000Ob0LlLj0000AB`OdOfOhOjOlOnA@`DhA@bA@dA@fKn00LhMnLfABbABh0ABjA@h0A@jA@l000A@nAA`AAbAAd0LnGbKhKjABlKlAAfL`NfNhNjNlNnO`ObLjOdOfOhOjOlOnA@`DhA@bA@dA@fKnLhMnLfA@hA@jA@lA@nAA`AAbAAdGbAAfLj00`L`KlOfDh4A@f:987AAlAAnKj5Lf0?1AAd33??837AB`Nd0000Mh::>LjAA`AAb6Oj::>Ll;ADdAEdAEbLdLbAElKhABlKlAAnAAl0111Lf02Ln0<;:987654222L`33A@hA@jA@lLl07KjAAf7Dh72<2Gb0Lh=Of05ACl=;OhLjMh?6>>::22OlOn9A@bA@f:L`0AAn1NfNhNjNlNnO`ObKnDh=:ACl;AAlOf<00Ll110><;:9876LjOd3OhOjOlOnA@`;A@bA@dA@f?LhMnLfA@hA@jA@lA@nAA`AAbAAdGbAAfNfABfNhNjNlNnO`ObLjOlA@bA@dA@fKnA@hA@jA@lA@nAAbAAdLf00LnADdL`AEdAEbLdLbAElABdNfABfAAlNhNjNlNnAAnO`ObLlLj000AB`OdOfOhOjOlOnA@`DhA@bA@dA@fKnLhMnLfABbABhABjA@hA@jA@lA@nAA`AAbAAdLnGbKhKjABlKlAAfADdL`AEdAEbLdLbAElABdNfABfAAlNhNjNlNnAAnO`ObLlLjAB`OdOfOhOjOlOnA@`DhA@bA@dA@fKnLhMnLfABbABhABjA@hA@jA@lA@nAA`AAbAAdLnGbKhKjABlKlAAfAEdAEbLdLbAEl76>ADdL`65432ABdNfABfAAlNhNjNlNnAAnO`ObLlLjAB`OdOfOhOjOlOnA@`DhA@bA@dA@fKnLhMnLfABbABhABjA@hA@jA@lA@nAA`AAbAAdLnGbKhKjABlKlAAfOj0MnADdL`AEdAEbLdLbAElABdNfABfAAlNhNjNlNnAAnO`ObLlLjAB`OdOfOhOjOlOnA@`DhA@bA@dA@fKnLhMnLfABbABhABjA@hA@jA@lA@nAA`AAbAAdLnGbKhKjABlKlAAfL`NdLf0AAn0000AKjAKl````AGhAGjAGlAGn011111111321032100032103210321011032103210321000003210332100321032100321032103210333321011111100033311111111111111012211111100011111110222223210321032103210001333332100```AHjAHbAHf202022222020202020202202020120220202020``AHnAHl10`101000101010101000000```010101010``````AIjAAhAIl21AJ`AJb2AJd542130354354354355421305421305421305421300542130543545421304542130213213521321335445430542130542130213542130454213053","f":"```````````````{{bd}f}00000{{{b{h}}}{{b{{l{j}}}}}}{{{b{h}}}{{b{{n{j}}}}}}1{b{{b{c}}}{}}0000000{{{b{A`}}}{{b{A`c}}}{}}0000000{{{b{h}}}h}{{{b{Ab}}}Ab}{{{b{Ad}}}Ad}{{{b{Af}}}Af}{{{b{Ah}}}Ah}{{{b{Aj}}}Aj}{{b{b{A`c}}}f{}}00000{{bj}f}00000{{{b{h}}{b{h}}}Al}{{{b{Ad}}{b{Ad}}}Al}{{{b{Af}}{b{Af}}}Al}{{{b{Aj}}{b{Aj}}}Al}{{b{b{c}}}Al{}}000{{{b{Ah}}{b{Af}}}An}{{AfB`}Ah}`{Bb{{b{c}}}{}}0000{{{b{Af}}}b}111{Bb{{b{A`c}}}{}}0000000{c{{Bd{h}}}Bf}{c{{Bd{Ab}}}Bf}{c{{Bd{Ad}}}Bf}{c{{Bd{Af}}}Bf}{c{{Bd{Aj}}}Bf}{{{b{Ad}}}{{`{{Bl{}{{Bh{{b{Bj}}}}}}}}}}```{Bbf}0000000{{}Ah}`{{{b{h}}{b{h}}}An}{{{b{Ad}}{b{Ad}}}An}{{{b{Af}}{b{Af}}}An}{{{b{Ah}}{b{Ah}}}An}{{{b{Aj}}{b{Aj}}}An}{{b{b{c}}}An{}}00000000000000{{{b{h}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Cb}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Ab}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Ad}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Af}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Cd}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Ah}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Aj}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{h}}}Cf}{Chh}{cc{}}{CjCb}1{ClCb}{{{l{j}}}Ab}3{CnAb}4{hAd}{{{Db{h{D`{Af}}{b{{n{Bj}}}}}}}Ad}{DdAd}{DfAd}{DhAd}9{DjAf}:{DlCd};;{{{b{{l{j}}}}}{{Bd{hCj}}}}{{{b{{l{j}}}}}Ab}{e{{Bd{AhDn}}}{{Eb{{E`{Aj}}}}}{{Ed{}{{Bh{c}}}}}}{{h{D`{Af}}c}Ad{{Ed{}{{Bh{Bj}}}}}}{{{b{c}}}c{}}00000{{{b{Ef}}}{{Bd{h}}}}{{{b{Ef}}}{{Bd{Ab}}}}{{{b{Ef}}}{{Bd{Af}}}}{AfAh}{cAbEh}{{{b{Ah}}{b{Af}}}{{D`{{b{{E`{Aj}}}}}}}}{{{b{h}}{b{A`c}}}fEj}{{{b{Af}}{b{A`c}}}fEj}{{}Bb}0000000{{}c{}}0000000{{{b{Ad}}}An}{{{b{Ah}}}An}{{{b{Ah}}}Bb}`{hAd}`{{{b{Ah}}}{{`{{Bl{}{{Bh{{b{{E`{Aj}}}}}}}}}}}}{{{b{h}}{b{h}}}{{D`{Al}}}}{{{b{Ad}}{b{Ad}}}{{D`{Al}}}}{{{b{Af}}{b{Af}}}{{D`{Al}}}}{{{b{Aj}}{b{Aj}}}{{D`{Al}}}}`{{{b{h}}}Ch}{{{b{Ab}}}h}`{{{b{Ad}}}{{D`{{b{Af}}}}}}`{{{b{Ab}}}{{b{Cn}}}}{{{b{h}}c}BdEl}{{{b{Ab}}c}BdEl}{{{b{Ad}}c}BdEl}{{{b{Af}}c}BdEl}{{{b{Aj}}c}BdEl}{{{b{Ab}}{b{{n{j}}}}}En}{{{b{Cb}}}{{D`{{b{F`}}}}}}{{{b{Cd}}}{{D`{{b{F`}}}}}}```{{{b{Ab}}}{{l{j}}}}{bc{}}00000{bCf}000000{c{{Bd{e}}}{}{}}{{{b{{n{j}}}}}{{Bd{h}}}}{{{b{{l{j}}}}}{{Bd{h}}}}22{{{b{{n{j}}}}}{{Bd{Ab}}}}33333{{}{{Bd{c}}}{}}0000000{bFb}0000000`{{{b{Ah}}}{{`{{Bl{}{{Bh{{b{Af}}}}}}}}}}{{{b{h}}{b{{n{j}}}}{b{En}}}{{Bd{fCj}}}}{{}c{}}0000000`{{Adc}Ad{{Ed{}{{Bh{Bj}}}}}}{{AdAf}Ad}``````````{{}Aj}00{{}Ah}``110```{{bd}f}{{{b{A`Fd}}c}fFf}{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}0{{{b{Fh}}}Fh}{{b{b{A`c}}}f{}}{{bj}f}{{}Fd}{Bb{{b{c}}}{}}0{Bb{{b{A`c}}}{}}0`{Bbf}03{{{b{Fh}}{b{A`Bn}}}Fj}{{{b{Fd}}{b{A`Bn}}}Fj}{cc{}}0{cFd{{Ed{}{{Bh{{Fl{Ff}}}}}}}}{{{b{c}}}c{}}{{{Fn{{Fl{Ff}}}}}Fd}{{}Bb}0{{}c{}}0`````{{{b{Ff}}{D`{{b{Af}}}}{b{{G`{Bj}}}}}f}{{{b{Fd}}{D`{{b{Af}}}}{b{{G`{Bj}}}}}f}{{{b{Ff}}GbGd}{{D`{{Gh{{Gf{Fh}}}}}}}}{{{b{Fd}}GbGd}{{D`{{Gh{{Gf{Fh}}}}}}}}`{{{b{Ff}}}{{D`{{Gh{Fh}}}}}}{{{b{Fd}}}{{D`{{Gh{Fh}}}}}}{bc{}}{c{{Bd{e}}}{}{}}0{{}{{Bd{c}}}{}}0{bFb}0{{}c{}}0```{b{{b{c}}}{}}{{{b{A`}}}{{b{A`c}}}{}}{Bb{{b{c}}}{}}{Bb{{b{A`c}}}{}}{Bbf}{{{b{Gj}}{b{A`Bn}}}Fj}{cc{}}{{}Bb}{{}c{}}{{}Gj}{CfGj}{{{b{Gj}}GbGd}{{D`{{Gh{{Gf{Fh}}}}}}}}?>=<``;:987{{{b{Gl}}{b{A`Bn}}}Fj}654{Gd{{Gf{Gl}}}}{{{b{Gl}}{D`{{b{Af}}}}{b{{G`{Bj}}}}}f}{{{b{Gl}}GbGd}{{D`{{Gh{{Gf{Fh}}}}}}}}{{{b{Gl}}}{{D`{{Gh{Fh}}}}}}{c{{Bd{e}}}{}{}}{{}{{Bd{c}}}{}}{bFb}{{}c{}}```````{{bd}f}00{b{{b{c}}}{}}00{{{b{A`}}}{{b{A`c}}}{}}00{{{b{Gn}}}Gn}{{{b{H`}}}H`}{{{b{Hb}}}Hb}{{b{b{A`c}}}f{}}00{{bj}f}00{Bb{{b{c}}}{}}00{Bb{{b{A`c}}}{}}00`{Bbf}{{{b{A`Gn}}}f}11{{{b{Gn}}{b{A`Bn}}}Fj}{{{b{H`}}{b{A`Bn}}}Fj}{{{b{Hb}}{b{A`Bn}}}Fj}{cc{}}00{{{b{c}}}c{}}00{{}Bb}00{{}c{}}00{AbGn}{{}H`}{{AbDj}Gn}{DjH`}{DjHb}{{{b{Gn}}{D`{{b{Af}}}}{b{{G`{Bj}}}}}f}{{{b{Hb}}{b{Hd}}}{{Gf{f}}}}{{{b{H`}}GbGd}{{D`{{Hf{{Gf{Fh}}}}}}}}{{{b{Hb}}Gd}{{Gf{Hd}}}}{bc{}}00{c{{Bd{e}}}{}{}}00{{}{{Bd{c}}}{}}00{bFb}007{{}c{}}00{{AbDjHhHj}Gn}``{{bd}f}{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}0{Hl{{Gf{Hn}}}}{{}Hl}{{HlI`}Hl}{{{b{Hn}}}Hn}{{b{b{A`c}}}f{}}{{bj}f}{{}Hn}5{Bb{{b{c}}}{}}0{Bb{{b{A`c}}}{}}0{{HlAn}Hl}{Bbf}0{{{b{Hn}}{b{A`Bn}}}Fj}{{{b{Hl}}{b{A`Bn}}}Fj}{cc{}}0{{{b{c}}}c{}}5{{}Bb}0{{HlHj}Hl}{{}c{}}0{HlHl}{{HlDj}Hl}{{{b{Hn}}{D`{{b{Af}}}}{b{{G`{Bj}}}}}f}4{{{b{Hn}}GbGd}{{D`{{Gh{{Gf{Fh}}}}}}}}{{HlAb}Hl}{bc{}}{c{{Bd{e}}}{}{}}0{{}{{Bd{c}}}{}}0{{HlHh}Hl}{bFb}0{{}c{}}0``{{{b{Ib}}c}f{{Eb{Ad}}}}{b{{b{c}}}{}}{{{b{A`}}}{{b{A`c}}}{}}{{}Ib}{Bb{{b{c}}}{}}{Bb{{b{A`c}}}{}}{Bbf}{{{b{Ib}}{b{A`Bn}}}Fj}{cc{}}{eIb{{Eb{Ad}}}{{Ed{}{{Bh{c}}}}}}{{{b{Ib}}Gd}{{D`{Ad}}}}{{}Bb}{{}c{}}9{{{b{Ib}}{D`{{b{Af}}}}{b{{G`{Bj}}}}}f}3{{{b{Ib}}GbGd}{{D`{{Gh{{Gf{Fh}}}}}}}}{{{b{Ib}}c}{{D`{Ad}}}{{Eb{Ad}}}}{c{{Bd{e}}}{}{}}{{}{{Bd{c}}}{}}{bFb}{{}c{}}``{{}{{b{Id}}}}{{{b{If}}{b{Gd}}{b{Ef}}}{{`{{Ij{}{{Ih{{Gf{Ad}}}}}}}}}}{{{b{Id}}{b{Gd}}{b{Ef}}}{{Gf{Ad}}}}{{{b{If}}{b{Gd}}{b{Ef}}{b{{n{Il}}}}}{{`{{Ij{}{{Ih{{Gf{Ad}}}}}}}}}}{{{b{Id}}{b{Gd}}{b{Ef}}{b{{n{Il}}}}}{{Gf{Ad}}}}{{{b{If}}{b{Ef}}}{{`{{Ij{}{{Ih{{Gf{Ad}}}}}}}}}}{{{b{Id}}{b{Ef}}}{{Gf{Ad}}}}{{{b{If}}{b{Ef}}{b{{n{Il}}}}}{{`{{Ij{}{{Ih{{Gf{Ad}}}}}}}}}}{{{b{Id}}{b{Ef}}{b{{n{Il}}}}}{{Gf{Ad}}}}{{{b{If}}cHj}{{`{{Ij{}{{Ih{{Gf{{`{{Bl{}{{Bh{In}}}}}}}}}}}}}}}J`}{{{b{Id}}cHj}{{Gf{{`{{Bl{}{{Bh{In}}}}}}}}}J`}{{{b{If}}cHj}{{`{{Ij{}{{Ih{{Gf{{`{{Bl{}{{Bh{In}}}}}}}}}}}}}}}{J`Jb}}{{{b{Id}}cHj}{{Gf{{`{{Bl{}{{Bh{In}}}}}}}}}{J`Jb}}{{{b{If}}cHj{b{{n{Il}}}}}{{`{{Ij{}{{Ih{{Gf{{`{{Bl{}{{Bh{In}}}}}}}}}}}}}}}{J`Jb}}{{{b{Id}}cHj{b{{n{Il}}}}}{{Gf{{`{{Bl{}{{Bh{In}}}}}}}}}{J`Jb}}105410`{{}{{b{Jd}}}}``````{{bd}f}{{{b{Jf}}}{{b{Ef}}}}{{{b{{Jh{c}}}}}{{b{{Jj{c{Fn{Cf}}}}}}}{JlJnK`Kb}}{b{{b{c}}}{}}00{{{b{A`}}}{{b{A`c}}}{}}00{{{b{Df}}}Df}{{b{b{A`c}}}f{}}{{bj}f}{{{b{Jf}}{b{Jf}}}Al}{{b{b{c}}}Al{}}{Bb{{b{c}}}{}}00{Bb{{b{A`c}}}{}}00`{Bbf}00{{{b{Jf}}{b{Jf}}}An}{{{b{Df}}{b{Df}}}An}{{b{b{c}}}An{}}00000{{{b{Jf}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Jf}}{b{A`Bn}}}Fj}{{{b{Df}}{b{A`Bn}}}Fj}{{{b{{Jh{c}}}}{b{A`Bn}}}FjKd}{cc{}}0{{{Jh{Jf}}}Df}{{{b{{Jh{Jf}}}}}Df}2{{{b{Df}}}{{Jh{Jf}}}}{{{b{{n{Kf}}}}}{{Gf{Df}}}}{{{b{{n{Kf}}}}}{{Gf{{Jh{c}}}}}{JlJnK`Kb}}{{Gde}{{Jh{c}}}{JlJnK`Kb}{{Bl{}{{Bh{{Db{cCf}}}}}}}}{{{b{Hd}}}{{Gf{Df}}}}{{{b{Hd}}}{{Gf{{Jh{c}}}}}{JlJnK`Kb}}{{{b{c}}}c{}}{{{b{Ef}}}{{Bd{Jfc}}}{}}{{Gdc}{{Gf{{Jh{e}}}}}{{Bl{}{{Bh{Cf}}}}}{JlJnK`Kb}}{{{b{Ef}}}{{Gf{Gd}}}}{{{b{Jf}}{b{A`c}}}fEj}{{}Bb}00{{}c{}}00{{{b{Jd}}{b{Gd}}{b{Ef}}}{{Gf{{Jh{c}}}}}{JlJnK`Kb}}{{{b{Jd}}{b{Ef}}}{{Gf{{Jh{c}}}}}{JlJnK`Kb}}{{Gd{D`{Dj}}{G`{Bj}}}Df}{{{b{{Jh{c}}}}}Gd{JlJnK`Kb}}`{{{b{Jf}}{b{Jf}}}{{D`{Al}}}}`{{{b{Df}}{b{Ef}}Hh}{{Gf{{`{{Bl{}{{Bh{Kf}}}}}}}}}}{{{b{{Jh{c}}}}{b{Ef}}Hh}{{Gf{{`{{Bl{}{{Bh{Kf}}}}}}}}}{JlJnK`Kb}}{bc{}}{{{b{Df}}{b{Ab}}Hh}{{Gf{Hd}}}}{{{b{{Jh{c}}}}{b{Ab}}Hh}{{Gf{Hd}}}{JlJnK`Kb}}{bCf}{{{b{Gd}}}Cf}{{{b{Ef}}}{{Bd{Jfc}}}{}}{c{{Bd{e}}}{}{}}00{{}{{Bd{c}}}{}}00{bFb}00{{}c{}}00`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{{bd}f}00000000000000000000000000000000{{{b{Gb}}}Kh}{Kj{{Gf{KlKn}}}}{{{b{L`}}}Lb}{{{b{L`}}}Ld}{{Kj{E`{Lf}}}{{Gf{KlKn}}}}{{{b{A`Lh}}Lj}{{b{A`Lh}}}}`{{{b{A`Ll}}{D`{Lh}}}{{b{A`Ll}}}}`{{Lne}LnFf{{M`{{b{Ab}}}{{Ih{{D`{c}}}}}}MbMd}}{{{b{Gb}}Ad}{{Gf{f}}}}{{{b{Gb}}Ad{b{Ef}}}{{Gf{f}}}}```{{{b{Mf}}{b{{n{j}}}}}{{Fl{Mh}}}}{{{b{A`Ll}}An}{{b{A`Ll}}}}{{{b{A`Kl}}}{{Gf{{Fn{j}}}}}}{{Ln{Fn{{Fn{j}}}}}Ln}{Ln{{Gf{Gb}}}}{{LnMj}Ln}{{LnMl}Ln}{{{b{A`Mn}}Hj}{{b{A`Mn}}}}`{b{{b{c}}}{}}0000000000000000000000000000000000000000000000000000{{{b{A`}}}{{b{A`c}}}{}}0000000000000000000000000000000000000000000000000000{{{b{Gb}}}{{Db{Bj{D`{Bj}}}}}}{{{E`{N`}}NbB`}{{Fl{Nd}}}}{{}Ln}````{LnLn}{{{b{L`}}}L`}{{{b{Nf}}}Nf}{{{b{Nh}}}Nh}{{{b{Nj}}}Nj}{{{b{Nl}}}Nl}{{{b{Nn}}}Nn}{{{b{O`}}}O`}{{{b{Ob}}}Ob}{{{b{Lj}}}Lj}{{{b{Od}}}Od}{{{b{Of}}}Of}{{{b{Oh}}}Oh}{{{b{Oj}}}Oj}{{{b{Ol}}}Ol}{{{b{On}}}On}{{{b{A@`}}}A@`}{{{b{Dh}}}Dh}{{{b{A@b}}}A@b}{{{b{A@d}}}A@d}{{{b{A@f}}}A@f}{{{b{Kn}}}Kn}{{{b{Lh}}}Lh}{{{b{Mn}}}Mn}{{{b{Lf}}}Lf}{{{b{A@h}}}A@h}{{{b{A@j}}}A@j}{{{b{A@l}}}A@l}{{{b{A@n}}}A@n}{{{b{AA`}}}AA`}{{{b{AAb}}}AAb}{{{b{AAd}}}AAd}{{{b{Gb}}}Gb}{{{b{AAf}}}AAf}{{{b{Nd}}}{{Fl{Nd}}}}{{b{b{A`c}}}f{}}00000000000000000000000000000000{{bj}f}00000000000000000000000000000000{{{b{L`}}Lj{b{{n{j}}}}}f}{{{b{Gb}}}{{Gf{f}}}}{{{b{L`}}}{{D`{Kn}}}}{{{b{L`}}}Kn}{{{b{Lj}}{b{Lj}}}Al}{{{b{AA`}}{b{AA`}}}Al}{{{b{AAb}}{b{AAb}}}Al}{{{b{AAd}}{b{AAd}}}Al}`{{b{b{c}}}Al{}}000{{{b{A`Ll}}{E`{N`}}}{{b{A`Ll}}}}`{{{b{L`}}}{{Fl{Nd}}}}{{{b{Gb}}Gd}{{Gf{{AAh{A@b}}}}}}`{{{b{Gb}}c{b{{n{j}}}}}{{Gf{L`}}}{{Eb{Ad}}}}`{jA@n}``{{{b{A`Ll}}Bb}{{b{A`Ll}}}}````{{{b{A`Ll}}{D`{Bb}}}{{b{A`Ll}}}}1{{{b{L`}}}Bb}`{{}Ll}{{}Lj}{{}Od}{{}Of}{{}Oh}{{}Oj}{{}A@`}{{}A@b}{{}Lh}{{}Mn}{{}Ln}{{}AAf}{Bb{{b{c}}}{}}0000000000000000000000000000000000000000000000000000{Bb{{b{A`c}}}{}}0000000000000000000000000000000000000000000000000000{c{{Bd{Ol}}}Bf}{c{{Bd{On}}}Bf}{c{{Bd{Dh}}}Bf}{c{{Bd{A@b}}}Bf}{c{{Bd{A@f}}}Bf}{AAdAAj}{{{b{Gb}}}{{AAh{{D`{{G`{AA`}}}}}}}}{{Ln{Fl{Ff}}}Ln}{{{b{Gb}}}{{D`{{b{Ff}}}}}}{LnLn}00{{LnId}Ln}{{{b{Gb}}}{{b{Id}}}}{Bbf}000000000{{{b{A`AAl}}}f}11111{{{b{A`AAn}}}f}22222222222222222222222222222222222222{{{b{A`Ll}}An}{{b{A`Ll}}}}{{{b{Nf}}{b{Nf}}}An}{{{b{Nh}}{b{Nh}}}An}{{{b{Nj}}{b{Nj}}}An}{{{b{Nl}}{b{Nl}}}An}{{{b{Nn}}{b{Nn}}}An}{{{b{O`}}{b{O`}}}An}{{{b{Ob}}{b{Ob}}}An}{{{b{Lj}}{b{Lj}}}An}{{{b{AB`}}{b{AB`}}}An}{{{b{Ol}}{b{Ol}}}An}{{{b{On}}{b{On}}}An}{{{b{A@`}}{b{A@`}}}An}{{{b{Dh}}{b{Dh}}}An}{{{b{A@b}}{b{A@b}}}An}{{{b{A@d}}{b{A@d}}}An}{{{b{A@f}}{b{A@f}}}An}{{{b{Kn}}{b{Kn}}}An}{{{b{ABb}}{b{ABb}}}An}{{{b{A@h}}{b{A@h}}}An}{{{b{A@j}}{b{A@j}}}An}{{{b{A@l}}{b{A@l}}}An}{{{b{A@n}}{b{A@n}}}An}{{{b{AA`}}{b{AA`}}}An}{{{b{AAb}}{b{AAb}}}An}{{{b{AAd}}{b{AAd}}}An}{{{b{AAf}}{b{AAf}}}An}{{b{b{c}}}An{}}00000000000000000000000000000000000000000000000000000000000000000000000000000``{{{b{L`}}{b{A`{n{j}}}}{b{{n{j}}}}{b{{n{j}}}}}{{Bd{fABb}}}}{{{b{A`AAn}}}{{Bd{fA@d}}}}{{{b{L`}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{ABd}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Nf}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{ABf}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{AAl}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Nh}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Nj}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Nl}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Nn}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{AAn}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{O`}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Ob}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Ll}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Lj}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{AB`}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Od}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Of}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Oh}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Oj}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Ol}}{b{A`Bn}}}Fj}0{{{b{On}}{b{A`Bn}}}Fj}{{{b{A@`}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Dh}}{b{A`Bn}}}Fj}{{{b{A@b}}{b{A`Bn}}}Fj}0{{{b{A@d}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{A@f}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{A@f}}{b{A`Bn}}}Fj}{{{b{Kn}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Lh}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Mn}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Lf}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{ABb}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{ABh}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{ABj}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{A@h}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{A@j}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{A@l}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{A@n}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{AA`}}{b{A`Bn}}}Fj}{{{b{AAb}}{b{A`Bn}}}Fj}0{{{b{AAd}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Ln}}{b{A`Bn}}}Fj}{{{b{Gb}}{b{A`Bn}}}Fj}{{{b{Kh}}{b{A`Bn}}}Fj}{{{b{Kj}}{b{A`Bn}}}Fj}{{{b{ABl}}{b{A`Bn}}}Fj}{{{b{Kl}}{b{A`Bn}}}Fj}{{{b{AAf}}{b{A`Bn}}}Fj}{{}An}````{cc{}}0000000{KnNf}111{NjNh}22{NlNj}{KnNj}{ABnNj}{KnNl}6{NjNn}77{A@dO`}8{ObO`}{KnO`}:{KnOb};{B`Lj}<{jLj}{AAdLj}{HhLj}????????????{AC`Kn}{A@lKn}{cc{}}0000{ACbABh}111{A@lA@h}2{A@nA@l}{ACdA@l}4{ACfA@l}5555{LjAAd}6666666{{{b{c}}}c{}}00000000000000000000000000000000:{Il{{Bd{LjACh}}}}{IlLj}{{{b{L`}}}{{Gf{h}}}}{{{b{L`}}}{{D`{{Fl{ACj}}}}}}{{{b{A`Kl}}}{{Gf{{Fl{ACj}}Kn}}}}`{{{b{Dh}}}An}{{{b{Lj}}{b{A`c}}}fEj}{{{b{A@f}}{b{A`c}}}fEj}{{{b{AA`}}{b{A`c}}}fEj}{{{b{AAb}}{b{A`c}}}fEj}{{{b{AAd}}{b{A`c}}}fEj}{{{b{Gb}}}{{AAh{{D`{Af}}}}}}{{{b{AAl}}}AAd}{{{b{AAn}}}AAd}{Kjf}`{{{b{A`Lf}}Il}{{b{A`Lf}}}}0{AAdIl}{{}Bb}0000000000000000000000000000000000000000000000000000{{{b{ACl}}Hh{b{ACn}}}{{Bd{AD`ABj}}}}{{{b{A`Ll}}B`}{{b{A`Ll}}}}{{{b{A`Ll}}Hj}{{b{A`Ll}}}}{{{b{Nd}}}Il}{AAdADb}{{LnAn}Ln}{{{b{A`Mn}}Hj}{{b{A`Mn}}}}{{}c{}}0000000000000000000000000000000000000000000000000000{Kl{{Gf{{Db{L`ADd}}Kl}}}}{{{Fl{Nd}}}{{Fl{ACj}}}}{{}}000000{Kjc{}}11{ABfADf}{LjIl}`{{{b{AAl}}}An}{{{b{ABd}}}An}{{{b{Gb}}}An}{c{{ADh{e}}}ADjIj}00000000{{{b{A`Ll}}{D`{Hj}}}{{b{A`Ll}}}}={{Ln{Fn{Ad}}}Ln}```{{{b{Dh}}}{{D`{Hj}}}}```{{{b{L`}}}{{D`{In}}}}{{{b{Kj}}}{{D`{In}}}}{{{b{Kl}}}{{D`{In}}}}```{{{b{Ab}}{Fn{{Fn{j}}}}{E`{Ll}}An}{{Gf{Lf}}}}{{{b{A`Lh}}{D`{Hj}}}{{b{A`Lh}}}}{{{b{A`Ll}}Lj}{{b{A`Ll}}}}0`{{{b{L`}}}{{D`{Bb}}}}{{{b{A`Ll}}{D`{ADl}}}{{b{A`Ll}}}}{{{b{A`Lf}}Bb}{{b{A`Lf}}}}```{{{b{A`Lf}}An}{{b{A`Lf}}}}{{{b{A`Ll}}B`}{{b{A`Ll}}}}{{{b{A`Mn}}B`}{{b{A`Mn}}}}{{{b{A`Ll}}{D`{Mn}}}{{b{A`Ll}}}}{{{b{Gb}}}f}{{{b{ABd}}}An}{{{E`{ACl}}{E`{Mf}}}Lf}{{ADbAAjIl}AAd}``{{{b{Gb}}}{{Gf{Ad}}}}{{{b{Gb}}}Gd}``{{{b{L`}}}{{ADn{{D`{Bj}}}}}}`{{{b{A`Nd}}NbNbIlAn{b{AE`}}}f}{{{b{A`Nd}}NbNbAnIl}f}{{{b{A`Nd}}NbIlAn{D`{Il}}}f}{{{b{A`Nd}}B`}f}{{{b{A`Nd}}NbIlIl}f}{{{b{Mh}}{b{A`{n{j}}}}{b{{n{j}}}}}{{Bd{{b{A`{n{j}}}}ABh}}}}{{{b{L`}}}AEb}{{{b{L`}}}AEd}{{{b{A`Ll}}Hh}{{b{A`Ll}}}}{{{b{Lj}}{b{Lj}}}{{D`{Al}}}}{{{b{AA`}}{b{AA`}}}{{D`{Al}}}}{{{b{AAb}}{b{AAb}}}{{D`{Al}}}}{{{b{AAd}}{b{AAd}}}{{D`{Al}}}}```{{{b{L`}}}{{D`{{Fl{ACj}}}}}}5`{{{AEf{{b{A`ADd}}}}{b{A`AEh}}}AEj}{{{AEf{{b{A`AEd}}}}{b{A`AEh}}}AEj}{{{AEf{{b{A`AEb}}}}{b{A`AEh}}}AEj}{{{AEf{{b{A`Ld}}}}{b{A`AEh}}}AEj}{{{AEf{{b{A`Lb}}}}{b{A`AEh}}}AEj}{{{AEf{{b{A`AEl}}}}{b{A`AEh}}}AEj}{{{AEf{{b{A`Kh}}}}{b{A`AEh}}}{{AEj{c}}}{}}{{{AEf{{b{A`ABl}}}}{b{A`AEh}}}{{AEj{c}}}{}}{{{AEf{{b{A`Kl}}}}{b{A`AEh}}}{{AEj{c}}}{}}{{{AEf{{b{A`AAn}}}}{b{A`AEh}}}{{AEj{{Bd{fAEn}}}}}}{{{b{A`AAl}}{b{A`AEh}}{b{A`{n{j}}}}}{{AEj{{Bd{BbNj}}}}}}{{{AEf{{b{A`AAl}}}}{b{A`AEh}}{b{A`AF`}}}{{AEj{{Bd{fAEn}}}}}}2{{{AEf{{b{A`AAn}}}}{b{A`AEh}}{b{{n{j}}}}}{{AEj{{Bd{BbAEn}}}}}}{{{AEf{{b{A`AAn}}}}{b{A`AEh}}{b{{n{j}}}}}{{AEj{{Bd{BbO`}}}}}}{{{b{A`Lf}}{D`{Mj}}}{{b{A`Lf}}}}{{{b{A`Lf}}{D`{Ml}}}{{b{A`Lf}}}}{{{b{AAn}}}{{Bd{AFbA@d}}}}{LnLn}{{LnDj}Ln}{e{{AFd{cg}}}{}{{ADj{}{{Ih{c}}}}}{{Ij{}{{Ih{c}}}}}}00000000{{{b{A`AAl}}{b{A`{n{j}}}}}{{Bd{{D`{Bb}}Nj}}}}{{{b{A`AAl}}BbAn}{{Bd{{D`{AB`}}Nj}}}}{{{b{A`AAl}}{b{A`{n{AFf}}}}}{{Bd{{D`{Bb}}Nj}}}}{{{b{L`}}}AEl}{{{b{A`AAl}}{b{A`{n{j}}}}}{{Bd{fNn}}}}{{{b{A`AAl}}Bb}{{Bd{{Fn{j}}Nh}}}}```{{{b{A`Ll}}An}{{b{A`Ll}}}}{{{b{A`Ll}}Lj}{{b{A`Ll}}}}{{{b{A`AAl}}}{{Bd{{D`{Lj}}Nl}}}}{Kjf}{{{b{AAf}}}Ah}{{LnAAf}Ln}`{{{b{L`}}}Bj}{{{b{Kj}}}Bj}{{{b{Kl}}}Bj}{{{b{Kj}}}An}{{{b{Gb}}Gd}{{D`{Dh}}}}{{{b{Gb}}}{{`{{Bl{}{{Bh{Dh}}}}}}}}{{{b{A`Lh}}Lj}{{b{A`Lh}}}}{{{b{A`AAn}}Lj}{{Bd{fA@d}}}}``{Kj{{Gf{fABf}}}}{{{b{ACl}}Hh{b{ACn}}{b{{n{j}}}}}{{l{j}}}}{{{b{A`Lf}}Hj}{{b{A`Lf}}}}{{{b{L`}}}Hj}`{{Ljc}Lj{{Eb{Lj}}}}{{{b{Mh}}{b{A`{Fn{j}}}}{b{{n{j}}}}}{{Bd{fABh}}}}{{LnAb}Ln}{{{b{Gb}}}{{b{Ab}}}}{{{b{L`}}AFf}{{Bd{fNf}}}}{{{b{L`}}AFf}AFh}{{{b{A`Ll}}An}{{b{A`Ll}}}}{{{b{A`Ll}}Il}{{b{A`Ll}}}}``{{{b{Ol}}c}BdEl}{{{b{On}}c}BdEl}{{{b{Dh}}c}BdEl}{{{b{A@b}}c}BdEl}{{{b{A@f}}c}BdEl}{{{b{Gb}}{Fn{{Fn{j}}}}}{{Gf{f}}}}{{{b{L`}}Lj}f}0{{{b{AAn}}AFb}{{Bd{fA@d}}}}1{{{b{Nf}}}{{D`{{b{F`}}}}}}{{{b{Nh}}}{{D`{{b{F`}}}}}}{{{b{Nj}}}{{D`{{b{F`}}}}}}{{{b{Nl}}}{{D`{{b{F`}}}}}}{{{b{Nn}}}{{D`{{b{F`}}}}}}{{{b{O`}}}{{D`{{b{F`}}}}}}{{{b{Ob}}}{{D`{{b{F`}}}}}}{{{b{Kn}}}{{D`{{b{F`}}}}}}{{{b{Dh}}}{{Fn{{Db{A@fHj}}}}}}`{{{b{L`}}}Bb}{{{E`{ACl}}Hh{b{AFj}}}{{Fl{AFl}}}}{{{b{L`}}}Oj}{{{b{A`AAl}}Lj}{{Bd{fA@d}}}}`{{{b{A`AAn}}}{{Bd{{D`{Lj}}Ob}}}}``{{{b{A`Ll}}Lj}{{b{A`Ll}}}}``{{{b{A`Ll}}AFn}{{b{A`Ll}}}}{bc{}}00000000000000000000000000000000{bCf}0000000000000000000{{{b{A`Lf}}{E`{Mf}}}{{b{A`Lf}}}}`{{{b{A`Lf}}{E`{Ll}}}{{b{A`Lf}}}}{{LnLl}Ln}{c{{Bd{e}}}{}{}}000000000000000000{Il{{Bd{LjACh}}}}1{AG`{{Bd{LjACh}}}}{Bb{{Bd{LjACh}}}}333333333333333333333333333333333{{}{{Bd{c}}}{}}0000000000000000000000000000000000000000000000000000{{{AEf{{b{A`c}}}}{b{A`AEh}}}AEj{}}000000`{bFb}0000000000000000000000000000000000000000000000000000``{{{b{A`Mn}}B`}{{b{A`Mn}}}}{{}c{}}0000000000000000000000000000000000000000000000000000{{{b{L`}}}ABd}{{{b{Nd}}}Il}{{{E`{ACl}}}Lf}{{{Fn{AGb}}AGd}{{Bd{LfAGf}}}}{{{b{A`AAn}}{b{{n{j}}}}}{{Bd{BbO`}}}}{{{b{A`AAn}}{b{{n{j}}}}}{{Bd{fO`}}}}{{{b{A`AAn}}{b{A`{n{AFf}}}}}{{Bd{fO`}}}}{{{b{A`AAn}}AFf}{{Bd{fO`}}}}{{{b{A`AAn}}{b{A`{n{AFf}}}}}{{Bd{A@`O`}}}}``````{{bd}f}000`````````{b{{b{c}}}{}}000{{{b{A`}}}{{b{A`c}}}{}}000``{{{b{AGh}}}AGh}{{{b{AGj}}}AGj}{{{b{AGl}}}AGl}{{{b{AGn}}}AGn}{{b{b{A`c}}}f{}}000{{bj}f}000```{{}AGh}{{}AGj}{{}AGl}{{}AGn}{Bb{{b{c}}}{}}000{Bb{{b{A`c}}}{}}000````{Bbf}000`{{{b{AGh}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{AGj}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{AGl}}{b{A`Bn}}}Fj}{{{b{AGn}}{b{A`Bn}}}{{Bd{fC`}}}}`{cc{}}000{{{b{c}}}c{}}000`{{}Bb}000{{}c{}}000{{{b{AGh}}}{{AH`{{Db{{b{Ef}}{b{ACj}}}}}}}}{{{b{AGj}}}{{AH`{{Db{{b{Ef}}{b{ACj}}}}}}}}{{{b{AGl}}}{{AH`{{Db{{b{Ef}}{b{ACj}}}}}}}}{{{b{AGn}}}{{AH`{{Db{{b{Ef}}{b{ACj}}}}}}}}```{{}{{b{Ef}}}}000````````````````````````````````````````````````````{bc{}}000{c{{Bd{e}}}{}{}}000{{}{{Bd{c}}}{}}000{bFb}000```````{{}c{}}000````{{bd}f}{{{b{AHb}}Kl}{{AHd{{Gf{f}}}}}}{{AHfce}AHf{{AHh{{n{j}}}}}AHb}{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}0{GbAHf}{{{b{AHj}}}AHj}{{b{b{A`c}}}f{}}{{bj}f}{Bb{{b{c}}}{}}0{Bb{{b{A`c}}}{}}0{Bbf}0{{{b{AHj}}}{{b{Gb}}}}{{{b{AHf}}}{{b{Gb}}}}{{{b{AHj}}{b{A`Bn}}}Fj}{{{b{AHf}}{b{A`Bn}}}Fj}{cc{}}0{{{b{c}}}c{}}{{}Bb}0{{}c{}}0{{{b{AHj}}}An}?{{{b{AHb}}}{{AHd{f}}}}{{{b{AHj}}}{{Gf{f}}}}{AHf{{Gf{AHj}}}}{bc{}}{c{{Bd{e}}}{}{}}0{{}{{Bd{c}}}{}}0{bFb}0{{}c{}}0``{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}0{Bj{{Gf{Jd}}}}{Bb{{b{c}}}{}}0{Bb{{b{A`c}}}{}}0{{{b{AHl}}Ab}{{Fl{Fd}}}}{{{b{AHl}}}Id}{Bbf}0{{{b{AHn}}{b{A`Bn}}}Fj}{{{b{AHl}}{b{A`Bn}}}Fj}{cc{}}0{{}Bb}0{{}c{}}0``{{{b{AHl}}{b{Gd}}Hj}{{Gf{f}}}}`{{}{{Gf{AHl}}}}{{}{{Gf{{Db{AhAfAI`}}}}}}{{{D`{AIb}}An}{{Gf{{Db{AhAfAI`}}}}}}1{Cf{{Gf{AHl}}}}{c{{Bd{e}}}{}{}}0{{}{{Bd{c}}}{}}0{bFb}0{{}c{}}0``````{{bd}f}00{b{{b{c}}}{}}00000{{{b{A`}}}{{b{A`c}}}{}}00000{e{{AId{g}}}{}{{AIf{}{{Bh{c}}}}}{{AIh{}{{Bh{c}}}}}}{{{b{{AIj{c}}}}}{{AIj{c}}}{}}{{{b{{AAh{c}}}}}{{AAh{c}}}Jb}{{{b{{AIl{c}}}}}{{AIl{c}}}Jb}{{b{b{A`c}}}f{}}00{{bj}f}00{{}{{AIj{c}}}AIn}{Bb{{b{c}}}{}}00000{Bb{{b{A`c}}}{}}00000{Bbf}00000{{{b{{AIj{c}}}}{b{A`Bn}}}FjKd}{{{b{{AAh{c}}}}{b{A`Bn}}}FjKd}{{{b{{AJ`{c}}}}{b{A`Bn}}}FjKd}{{{b{{AJb{c}}}}{b{A`Bn}}}FjKd}{{{b{{AIl{c}}}}{b{A`Bn}}}FjKd}{{{b{AJd}}{b{A`Bn}}}Fj}0{cc{}}00000{{{b{c}}}c{}}00{{{b{{AIj{c}}}}}c{JbAJf}}{{{b{{AAh{c}}}}}{{Bd{cAJd}}}{JbAJf}}{{}Bb}00000{{{b{A`{AAh{{D`{c}}}}}}}{{AJb{c}}}{JbAJf}}{{}c{}}00000{{}}0{{}c{}}{c{{ADh{e}}}ADjIj}0{e{{AJh{cg}}}{}{{AIf{}{{Bh{c}}}}}{{AIh{}{{Bh{c}}}}}}{c{{AIj{c}}}{JbAJf}}{{{AEf{{b{A`{AJ`{c}}}}}}{b{A`AEh}}}{{AEj{e}}}{JbAJf}{}}{{{AEf{{b{A`{AJb{c}}}}}}{b{A`AEh}}}{{AEj{e}}}{JbAJf}{}}{{{AEf{{b{A`{AIl{c}}}}}}{b{A`AEh}}}{{AEj{{D`{e}}}}}{JbAJf}{}}{e{{AFd{cg}}}{}{{ADj{}{{Ih{c}}}}}{{Ij{}{{Ih{c}}}}}}0{{{b{{AJl{AJjceg}}}}}{{AJn{iceg}}}AK`AKbAKd{}}{{{b{{AJl{AJjceg}}}}AKf}{{AJn{iceg}}}AK`AKbAKd{}}{{{b{{AIj{c}}}}c}{{Bd{cc}}}{JbAJf}}{{{AAh{c}}}{{AIl{c}}}{JbAJf}}0{bc{}}00{bCf}{c{{Bd{e}}}{}{}}00000{{}{{Bd{c}}}{}}00000{{{AEf{{b{A`c}}}}{b{A`AEh}}}AEj{}}0{{{AEf{{b{A`c}}}}{b{A`AEh}}}{{AEj{{D`{Bd}}}}}{}}{bFb}00000{{{b{A`{AAh{c}}}}}{{AJ`{c}}}{JbAJf}}{{}c{}}00000{{{b{{AIj{c}}}}}{{AAh{c}}}{JbAJf}}{e{{AKh{g}}}{}{{AIf{}{{Bh{c}}}}}{{AIh{}{{Bh{c}}}}}}","D":"FD`","p":[[1,"reference",null,null,1],[5,"Private",2576],[1,"unit"],[5,"PublicKey",0,2577],[1,"u8"],[1,"array"],[1,"slice"],[0,"mut"],[5,"SecretKey",0,2577],[5,"NodeAddr",0,2578],[5,"RelayUrl",0,2579],[5,"RelayMap",0,2580],[5,"RelayNode",0,2580],[6,"Ordering",2581],[1,"bool"],[1,"u16"],[1,"usize"],[6,"Result",2582,null,1],[10,"Deserializer",2583],[17,"Item"],[6,"SocketAddr",2584],[10,"Iterator",2585],[5,"Formatter",2586],[5,"Error",2586],[6,"KeyParsingError",0,2577],[5,"RelayUrlParseError",0,2579],[5,"String",2587],[5,"VerifyingKey",2588],[5,"Error",2589],[5,"DecodeError",2590],[5,"SigningKey",2591],[6,"Option",2592,null,1],[1,"tuple",null,null,1],[5,"NodeTicket",2593],[5,"NodeInfo",564],[5,"RemoteInfo",655,2594],[5,"Url",2595],[6,"ParseError",2596],[5,"Error",2597],[5,"Arc",2598,null,1],[10,"Into",2599],[10,"IntoIterator",2600],[1,"str"],[10,"CryptoRngCore",2601],[10,"Hasher",2602],[10,"Serializer",2603],[5,"Signature",2604],[10,"Error",2605],[5,"TypeId",2606],[5,"ConcurrentDiscovery",298],[10,"Discovery",298],[5,"DiscoveryItem",298],[8,"Result",2586],[5,"Box",2607,null,1],[5,"Vec",2608],[5,"BTreeSet",2609],[5,"Endpoint",655],[8,"NodeId",0,2577],[8,"Result",2597],[8,"Boxed",2610],[5,"DnsDiscovery",351],[5,"LocalSwarmDiscovery",370],[5,"PkarrPublisher",389],[5,"PkarrResolver",389],[5,"PkarrRelayClient",389],[5,"SignedPacket",2611],[8,"BoxStream",2612],[1,"u32"],[5,"Duration",2613],[5,"Builder",466],[5,"DhtDiscovery",466],[5,"PkarrClient",2614],[5,"StaticProvider",515],[8,"DnsResolver",539],[10,"ResolverExt",539],[17,"Output"],[10,"Future",2615,null,1],[1,"u64"],[6,"IpAddr",2616],[10,"IntoName",2617],[10,"Clone",2618],[8,"TokioResolver",2619],[6,"IrohAttr",564],[5,"TxtAttrs",564],[5,"BTreeMap",2620],[10,"FromStr",2621],[10,"Display",2586],[10,"Hash",2602],[10,"Ord",2581],[10,"Debug",2586],[5,"Record",2622],[5,"Accept",655],[5,"Incoming",655],[5,"Connecting",655],[6,"ConnectionError",655,2623],[5,"Connection",655,2624],[5,"AcceptBi",655,2624],[5,"AcceptUni",655,2624],[5,"ServerConfig",655,2625],[5,"AckFrequencyConfig",655,2625],[5,"VarInt",655,2626],[5,"TransportConfig",655,2625],[5,"Builder",655],[10,"FnOnce",2627],[10,"Send",2628],[10,"Sync",2628],[10,"HandshakeTokenKey",655,2629],[10,"AeadKey",655,2629],[5,"SocketAddrV4",2584],[5,"SocketAddrV6",2584],[5,"MtuDiscoveryConfig",655,2625],[10,"ControllerFactory",655,2630],[5,"Instant",2631],[10,"Controller",655,2630],[6,"SendDatagramError",655,2624],[6,"ReadToEndError",655,2632],[6,"ReadError",655,2632],[6,"ResetError",655,2632],[6,"ReadExactError",655,2632],[6,"WriteError",655,2633],[6,"StoppedError",655,2633],[5,"UdpStats",655,2634],[5,"FrameStats",655,2634],[5,"PathStats",655,2634],[5,"ConnectionStats",655,2634],[6,"ControlMsg",655,2594],[5,"DirectAddrInfo",655,2594],[5,"Written",655,2635],[6,"ConnectionType",655,2594],[5,"ClosedStream",655,2636],[6,"Source",655,2637],[5,"ConnectionClose",655,2638],[5,"ApplicationClose",655,2638],[5,"TransportError",655],[5,"TransportErrorCode",655],[5,"DirectAddr",655,2639],[6,"DirectAddrType",655,2639],[5,"StreamId",655,2640],[6,"RelayMode",655],[5,"Watcher",2444],[6,"Dir",2640],[5,"RecvStream",655,2632],[5,"SendStream",655,2633],[5,"Chunk",655,2641],[5,"ExportKeyingMaterialError",655,2629],[5,"WeakConnectionHandle",655,2624],[5,"RetryError",655,2642],[5,"CryptoError",655,2629],[5,"UnsupportedVersion",655,2629],[5,"IncomingFuture",655],[6,"ReadableError",2643],[6,"Close",2638],[5,"Unspecified",2644],[5,"InvalidFrame",2638],[6,"Error",2645],[5,"VarIntBoundsExceeded",2626],[10,"Any",2606],[10,"CryptoServerConfig",655],[5,"ConnectionId",2646],[5,"Keys",2629],[6,"Side",2640],[5,"ZeroRttAccepted",655,2624],[5,"Incoming",2642],[5,"Join2",2647],[10,"IntoFuture",2648],[5,"IdleTimeout",2625],[5,"Receiver",2649],[5,"RttEstimator",2650],[5,"OpenBi",655,2624],[5,"OpenUni",655,2624],[5,"Pin",2651],[5,"Context",2652],[6,"Poll",2653],[5,"ReadDatagram",655,2624],[5,"Error",2654],[5,"ReadBuf",2655],[1,"i32"],[5,"Race2",2656],[5,"Bytes",2657],[5,"SendDatagram",2624],[5,"TransportParameters",2645],[10,"Session",2629],[1,"f32"],[1,"u128"],[5,"CertificateDer",2658],[6,"PrivateKeyDer",2658],[6,"Error",2659],[5,"PortmapMetrics",2183],[5,"NetReportMetrics",2183],[5,"MagicsockMetrics",2183],[5,"RelayMetrics",2183],[5,"IntoIter",2660],[10,"ProtocolHandler",2359],[8,"Boxed",2661],[5,"RouterBuilder",2359],[10,"AsRef",2599],[5,"Router",2359],[5,"DnsPkarrServer",2404,2662],[5,"CleanupDropGuard",2404],[5,"Server",2663],[5,"StunConfig",2663],[5,"Chain2",2664],[10,"IntoStream",2665],[10,"Stream",2612],[5,"Watchable",2444],[5,"WatcherStream",2444],[10,"Default",2666],[5,"WatchNextFut",2444],[5,"WatchInitializedFut",2444],[5,"Disconnected",2444],[10,"Eq",2581],[5,"Merge2",2667],[6,"NotKeyed",2668],[5,"RateLimiter",2669],[5,"RatelimitedStream",2670],[10,"DirectStateStore",2668],[10,"ReasonablyRealtime",2671],[10,"RateLimitingMiddleware",2672],[5,"Jitter",2673],[5,"Zip2",2674],[15,"Discovery",2181],[15,"NamedApp",2181]],"r":[[2,655],[4,2577],[6,2578],[7,2577],[8,2577],[9,2580],[10,655],[11,2580],[12,2579],[13,2579],[14,2577],[282,2675],[283,2675],[658,2624],[659,2624],[660,2625],[661,2629],[663,2638],[670,2641],[672,2636],[676,2624],[677,2638],[679,2623],[685,2634],[686,2594],[687,2594],[688,2630],[689,2630],[690,2629],[695,2639],[696,2594],[697,2639],[703,2629],[708,2634],[709,2629],[721,2625],[726,2624],[727,2624],[729,2634],[734,2624],[735,2632],[737,2632],[738,2632],[739,2632],[743,2594],[746,2632],[747,2642],[751,2624],[752,2633],[753,2625],[754,2637],[757,2633],[758,2640],[765,2625],[770,2634],[773,2629],[774,2626],[776,2624],[777,2633],[778,2635],[779,2624],[2405,2662],[2410,2676]],"b":[[125,"impl-Debug-for-PublicKey"],[126,"impl-Display-for-PublicKey"],[127,"impl-Debug-for-KeyParsingError"],[128,"impl-Display-for-KeyParsingError"],[129,"impl-Debug-for-SecretKey"],[130,"impl-Display-for-SecretKey"],[132,"impl-Display-for-RelayUrl"],[133,"impl-Debug-for-RelayUrl"],[134,"impl-Display-for-RelayUrlParseError"],[135,"impl-Debug-for-RelayUrlParseError"],[136,"impl-Debug-for-RelayMap"],[137,"impl-Display-for-RelayMap"],[138,"impl-Display-for-RelayNode"],[139,"impl-Debug-for-RelayNode"],[143,"impl-From%3CError%3E-for-KeyParsingError"],[145,"impl-From%3CDecodeError%3E-for-KeyParsingError"],[146,"impl-From%3C%5Bu8;+32%5D%3E-for-SecretKey"],[148,"impl-From%3CSigningKey%3E-for-SecretKey"],[150,"impl-From%3CPublicKey%3E-for-NodeAddr"],[151,"impl-From%3C(PublicKey,+Option%3CRelayUrl%3E,+%26%5BSocketAddr%5D)%3E-for-NodeAddr"],[152,"impl-From%3CNodeTicket%3E-for-NodeAddr"],[153,"impl-From%3CNodeInfo%3E-for-NodeAddr"],[154,"impl-From%3CRemoteInfo%3E-for-NodeAddr"],[239,"impl-TryFrom%3C%26%5Bu8%5D%3E-for-PublicKey"],[240,"impl-TryFrom%3C%26%5Bu8;+32%5D%3E-for-PublicKey"],[602,"impl-Display-for-IrohAttr"],[603,"impl-Debug-for-IrohAttr"],[608,"impl-From%3CTxtAttrs%3CIrohAttr%3E%3E-for-NodeInfo"],[609,"impl-From%3C%26TxtAttrs%3CIrohAttr%3E%3E-for-NodeInfo"],[1385,"impl-Display-for-SendDatagramError"],[1386,"impl-Debug-for-SendDatagramError"],[1387,"impl-Display-for-RetryError"],[1388,"impl-Debug-for-RetryError"],[1390,"impl-Debug-for-ReadToEndError"],[1391,"impl-Display-for-ReadToEndError"],[1392,"impl-Debug-for-ReadError"],[1393,"impl-Display-for-ReadError"],[1394,"impl-Display-for-ResetError"],[1395,"impl-Debug-for-ResetError"],[1396,"impl-Debug-for-ReadExactError"],[1397,"impl-Display-for-ReadExactError"],[1399,"impl-Display-for-WriteError"],[1400,"impl-Debug-for-WriteError"],[1401,"impl-Debug-for-StoppedError"],[1402,"impl-Display-for-StoppedError"],[1404,"impl-Debug-for-VarInt"],[1405,"impl-Display-for-VarInt"],[1411,"impl-Debug-for-ControlMsg"],[1412,"impl-Display-for-ControlMsg"],[1416,"impl-Display-for-ConnectionType"],[1417,"impl-Debug-for-ConnectionType"],[1418,"impl-Debug-for-ClosedStream"],[1419,"impl-Display-for-ClosedStream"],[1420,"impl-Display-for-Source"],[1421,"impl-Debug-for-Source"],[1422,"impl-Display-for-ConnectionError"],[1423,"impl-Debug-for-ConnectionError"],[1430,"impl-Debug-for-ConnectionClose"],[1431,"impl-Display-for-ConnectionClose"],[1432,"impl-Display-for-ApplicationClose"],[1433,"impl-Debug-for-ApplicationClose"],[1434,"impl-Display-for-TransportError"],[1435,"impl-Debug-for-TransportError"],[1436,"impl-Display-for-TransportErrorCode"],[1437,"impl-Debug-for-TransportErrorCode"],[1439,"impl-Display-for-DirectAddrType"],[1440,"impl-Debug-for-DirectAddrType"],[1441,"impl-Display-for-StreamId"],[1442,"impl-Debug-for-StreamId"],[1470,"impl-From%3CResetError%3E-for-ReadError"],[1471,"impl-From%3CConnectionError%3E-for-ReadError"],[1472,"impl-From%3CReadableError%3E-for-ReadError"],[1478,"impl-From%3CClosedStream%3E-for-WriteError"],[1480,"impl-From%3CStoppedError%3E-for-WriteError"],[1481,"impl-From%3CConnectionError%3E-for-WriteError"],[1485,"impl-From%3Cu16%3E-for-VarInt"],[1487,"impl-From%3Cu8%3E-for-VarInt"],[1488,"impl-From%3CStreamId%3E-for-VarInt"],[1489,"impl-From%3Cu32%3E-for-VarInt"],[1502,"impl-From%3CClose%3E-for-ConnectionError"],[1503,"impl-From%3CTransportError%3E-for-ConnectionError"],[1515,"impl-From%3CTransportErrorCode%3E-for-TransportError"],[1516,"impl-From%3CInvalidFrame%3E-for-TransportError"],[1518,"impl-From%3CError%3E-for-TransportError"],[1797,"impl-RecvStream"],[1798,"impl-AsyncRead-for-RecvStream"],[1800,"impl-AsyncWrite-for-SendStream"],[1801,"impl-SendStream"],[1965,"impl-TryFrom%3Cu64%3E-for-VarInt"],[1967,"impl-TryFrom%3Cu128%3E-for-VarInt"],[1968,"impl-TryFrom%3Cusize%3E-for-VarInt"],[2499,"impl-Debug-for-Disconnected"],[2500,"impl-Display-for-Disconnected"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAPAGowADAAAACwAAABAABQAXACsARgAVAGAABwBqACIAjgAAAJAAAACSAAEAlQAAAJcAAQCaAAEAnQAAAJ8AAACmAAgAsgAJAMsAAwDWAAQA3AABAOIAJwANAQcALgEAADABCwA9AQEAQAEBAEQBAQBHAQEAUQEAAFMBAABWAQkAYwEFAGoBAABuAQQAdQEFAHwBAAB/AQYAjQEXAKYBBgCwAQUAvgEAAMABAADCAQsAzwECANUBBADdAQgA5wEDAO0BAADvAQEA9gEAAPgBAAD6AQQAAAIDAAcCBgARAgAAFAIAABYCAAAYAgMAKAIAADACAAA7AgEAPgIQAFACDgBhAgEAZAIAAGoCAQBuAgMAegIAAH4CAACBAgAAgwIMABEDIAA4AwAAOgMAAEoDaQC8AyAA3gNBACQEAwApBAMAMwQAADUEAAA6BAEAQAQKAEwEbgDEBDYA/ARnAGgFQgC4BQAAvAUAAL8FAwDEBQAAxwUAAMkFAQDMBQAAzgUAANAFAgDfBQEA5gUAAOoFAADsBQEA7wUAAPQFAAD8BSAAIwYAACUGBAAuBgAAMgY0AKUGCQC1BggA0gYAANYGAgDhBgEA5gYAAPIGAwD3BgEA+wYKAAcHAgAQBwgAMQcBAEIHBABMBwcAWgcAAFwHAQBfBwEAYgc0AJsHEgCvBwAAsgdcABAINABICDQAjAgDAJEIDwCjCAsAsggLAMIICADQCAMA1QgDAN0ICgDxCAYA+QgHAAMJCAAPCQYAFwkUAC4JCAA7CQAAPgkDAEMJCABOCQEAUgkCAFwJCABnCQMAbAkDAHIJAwB4CQEAhQkHAJMJMgDMCQIA0QkFAN4JBQDlCQYA7wkYAAkKBQAQCgAA","P":[[24,"T"],[40,""],[46,"T"],[52,""],[62,"K"],[66,""],[69,"T"],[74,""],[75,"T"],[86,"D"],[88,"__D"],[91,""],[110,"K"],[125,""],[142,"T"],[143,""],[144,"T"],[145,""],[147,"T"],[148,""],[149,"T"],[150,""],[155,"T"],[156,""],[157,"T"],[158,""],[159,"T"],[161,""],[163,"I,"],[164,""],[165,"T"],[171,""],[175,"R"],[176,""],[177,"H"],[178,"__H"],[179,""],[187,"U"],[195,""],[213,"S"],[215,"__S"],[218,""],[225,"T"],[231,""],[238,"U,T"],[239,""],[241,"U,T"],[243,""],[244,"U,T"],[249,"U"],[257,""],[268,"V"],[277,""],[278,""],[302,""],[303,"T"],[307,""],[308,"T"],[309,""],[311,"T"],[316,""],[321,"T"],[325,""],[328,"U"],[335,""],[342,"T"],[343,"U,T"],[345,"U"],[347,""],[349,"V"],[354,"T"],[358,""],[360,"T"],[361,""],[362,"U"],[363,""],[366,"U,T"],[367,"U"],[368,""],[369,"V"],[372,"T"],[376,""],[378,"T"],[379,""],[380,"U"],[381,""],[385,"U,T"],[386,"U"],[387,""],[388,"V"],[396,""],[399,"T"],[405,""],[408,"T"],[411,""],[414,"T"],[421,""],[428,"T"],[434,""],[437,"U"],[440,""],[449,"T"],[452,"U,T"],[455,"U"],[458,""],[462,"V"],[465,""],[469,"T"],[473,""],[477,"T"],[478,""],[481,"T"],[485,""],[490,"T"],[493,""],[497,"U"],[499,""],[505,"T"],[506,"U,T"],[508,"U"],[510,""],[513,"V"],[517,""],[518,"T"],[520,""],[521,"T"],[523,""],[525,"T"],[526,","],[527,""],[529,"U"],[530,""],[534,""],[535,"U,T"],[536,"U"],[537,""],[538,"V"],[541,""],[550,"N"],[563,""],[572,"T"],[579,""],[580,"T"],[581,""],[583,"K"],[584,"T"],[591,""],[596,"K"],[602,""],[605,"T"],[608,""],[610,"T"],[611,""],[613,"T"],[614,"T,"],[615,""],[616,"T"],[618,"FromStr::Err"],[619,",T"],[620,""],[621,"__H"],[622,""],[625,"U"],[628,"T"],[630,""],[631,"T"],[633,""],[636,"T"],[638,""],[639,"T"],[640,""],[642,"TryFrom::Error"],[643,"U,T"],[646,"U"],[649,""],[652,"V"],[784,""],[826,"D,F"],[827,""],[841,"T"],[947,""],[989,"T"],[1022,""],[1064,"K"],[1068,""],[1073,""],[1075,""],[1099,"T"],[1205,"__D"],[1210,""],[1301,"K"],[1381,""],[1455,"T"],[1463,""],[1464,"T"],[1467,""],[1468,"T"],[1470,""],[1474,"T"],[1475,""],[1476,"T"],[1478,""],[1479,"T"],[1480,""],[1482,"T"],[1483,""],[1484,"T"],[1485,""],[1486,"T"],[1487,""],[1490,"T"],[1502,""],[1504,"T"],[1509,""],[1510,"T"],[1513,""],[1514,"T"],[1515,""],[1517,"T"],[1518,""],[1519,"T"],[1523,""],[1524,"T"],[1564,""],[1572,"__H"],[1577,""],[1645,"U"],[1698,""],[1707,"IntoFuture::IntoFuture"],[1708,""],[1716,"F2,F1"],[1725,""],[1793,"Future::Output"],[1796,""],[1807,"T,S2,F1"],[1816,""],[1847,""],[1848,""],[1857,"__S"],[1862,""],[1889,"T"],[1922,""],[1946,"U,T"],[1965,""],[1966,"U,T"],[1967,""],[1969,"U,T"],[2002,"U"],[2055,"F"],[2063,""],[2119,"V"],[2172,""],[2200,"T"],[2210,""],[2214,"T"],[2218,""],[2229,"T"],[2241,""],[2251,"T"],[2260,""],[2264,"U"],[2268,""],[2331,"T"],[2335,"U,T"],[2339,"U"],[2343,""],[2354,"V"],[2362,""],[2364,",T"],[2365,"T"],[2369,""],[2371,"T"],[2372,""],[2373,"T"],[2377,""],[2383,"T"],[2386,""],[2388,"U"],[2390,""],[2395,"T"],[2396,"U,T"],[2398,"U"],[2400,""],[2402,"V"],[2406,"T"],[2410,""],[2411,"T"],[2415,""],[2421,"T"],[2423,""],[2425,"U"],[2429,""],[2436,"U,T"],[2438,"U"],[2440,""],[2442,"V"],[2450,""],[2453,"T"],[2465,"T,S2,S1"],[2466,"T"],[2472,""],[2475,"T"],[2488,""],[2494,"T"],[2499,""],[2501,"T"],[2512,""],[2518,"T"],[2519,"U"],[2525,""],[2527,"S"],[2528,"F2,F1"],[2530,"T,S2,S1"],[2531,"T"],[2532,"T,Future::Output"],[2534,"T,Stream::Item"],[2535,"T,S2,F1"],[2537,"D,C,MW,S"],[2539,"T"],[2545,""],[2546,"U,T"],[2552,"U"],[2558,"F"],[2560,"S"],[2561,""],[2567,"T"],[2568,"V"],[2574,"T"],[2575,"T,S2,S1"]]}],["iroh_base",{"t":"TPPPGTFIFFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNONNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPGTPFPKPNNNNNNNNNNNNNNNNNNNMNNNNNNNNNMNNNNNNNNNNO","n":["BYTE_SIZE","Decode","DecodeInvalidLength","Key","KeyParsingError","LENGTH","NodeAddr","NodeId","PublicKey","RelayUrl","RelayUrlParseError","SecretKey","Signature","as_bytes","as_ref","borrow","","","","","","","","borrow_mut","","","","","","","clone","","","","","clone_into","","","","","clone_to_uninit","","","","","cmp","","","deref","deserialize","","","","","direct_addresses","","eq","","","","fmt","","","","","","","","","","","","","","","fmt_short","from","","","","","","","","","","","","","","","","","","","","from_bytes","","","from_components","from_parts","from_slice","from_str","","","","generate","hash","","into","","","","","","","is_empty","new","node_id","partial_cmp","","","public","","r_bytes","relay_url","","s_bytes","secret","serialize","","","","","sign","source","","ticket","to_bytes","","","to_owned","","","","","to_string","","","","","","to_vec","try_from","","","","","","","","","","","try_into","","","","","","","type_id","","","","","","","verify","with_direct_addresses","with_relay_url","Encoding","Error","KIND","Kind","NodeTicket","Postcard","Ticket","Verify","borrow","","borrow_mut","","clone","clone_into","clone_to_uninit","deserialize","","eq","fmt","","","","from","","","","","from_bytes","","from_str","into","","new","node_addr","serialize","","source","to_bytes","","to_owned","to_string","","try_from","","try_into","","type_id","","expected"],"q":[[0,"iroh_base"],[181,"iroh_base::ticket"],[229,"iroh_base::ticket::Error"],[230,"iroh_base::key"],[231,"ed25519"],[232,"iroh_base::node_addr"],[233,"iroh_base::relay_url"],[234,"core::cmp"],[235,"core::result"],[236,"serde::de"],[237,"core::net::socket_addr"],[238,"core::iter::traits::iterator"],[239,"core::fmt"],[240,"alloc::string"],[241,"ed25519_dalek::signature"],[242,"ed25519_dalek::verifying"],[243,"ed25519_dalek::errors"],[244,"data_encoding"],[245,"ed25519_dalek::signing"],[246,"core::option"],[247,"iroh_base::ticket::node"],[248,"url"],[249,"url::parser"],[250,"core::iter::traits::collect"],[251,"signature::error"],[252,"rand_core"],[253,"core::hash"],[254,"serde::ser"],[255,"core::error"],[256,"alloc::vec"],[257,"core::any"],[258,"postcard::error"]],"i":"nBl00`b```````002001A`AbAdBn645321064321643216432142116432122642166664455332110046666445553332222110064362664313416453210222421436226364321350`6636432164531066644453321064532106453210422El`Ej1`1`1Db202000100002200222100020010210002020202F`","f":"`````````````{{{d{b}}}{{d{{h{f}}}}}}{{{d{b}}}{{d{{j{f}}}}}}{d{{d{c}}}{}}2000000{{{d{l}}}{{d{lc}}}{}}000000{{{d{n}}}n}{{{d{b}}}b}{{{d{A`}}}A`}{{{d{Ab}}}Ab}{{{d{Ad}}}Ad}{{d{d{lc}}}Af{}}0000{{df}Af}0000{{{d{b}}{d{b}}}Ah}{{{d{Ab}}{d{Ab}}}Ah}{{{d{Ad}}{d{Ad}}}Ah}{{{d{Ad}}}{{d{c}}}{}}{c{{Aj{n}}}Al}{c{{Aj{b}}}Al}{c{{Aj{A`}}}Al}{c{{Aj{Ab}}}Al}{c{{Aj{Ad}}}Al}{{{d{Ab}}}{{`{{Bb{}{{An{{d{B`}}}}}}}}}}`{{{d{n}}{d{n}}}Bd}{{{d{b}}{d{b}}}Bd}{{{d{Ab}}{d{Ab}}}Bd}{{{d{Ad}}{d{Ad}}}Bd}{{{d{n}}{d{lBf}}}{{Aj{AfBh}}}}000{{{d{b}}{d{lBf}}}Bj}0{{{d{Bl}}{d{lBf}}}Bj}0{{{d{A`}}{d{lBf}}}Bj}0{{{d{Ab}}{d{lBf}}}Bj}{{{d{Ad}}{d{lBf}}}Bj}0{{{d{Bn}}{d{lBf}}}Bj}0{{{d{b}}}C`}{cc{}}{{{d{{h{f}}}}}n}{{{h{f}}}n}{Cbn}3{Cdb}4{CfBl}{ChBl}{{{h{f}}}A`}7{CjA`}{{{Cn{b{Cl{Ad}}{d{{j{B`}}}}}}}Ab}{D`Ab}{DbAb};{DdAd}<{DfBn}=<{{{d{{h{f}}}}}{{Aj{bCf}}}}{{{d{{h{f}}}}}A`}{{{h{f}}{h{f}}}n}{{b{Cl{Ad}}c}Ab{{Dh{}{{An{B`}}}}}}{{{d{{j{f}}}}}{{Aj{nDj}}}}{{{d{Dl}}}{{Aj{nDj}}}}{{{d{Dl}}}{{Aj{bc}}}{}}{{{d{Dl}}}{{Aj{A`c}}}{}}{{{d{Dl}}}{{Aj{Adc}}}{}}{cA`Dn}{{{d{b}}{d{lc}}}AfE`}{{{d{Ad}}{d{lc}}}AfE`}{{}c{}}000000{{{d{Ab}}}Bd}{bAb}`{{{d{b}}{d{b}}}{{Cl{Ah}}}}{{{d{Ab}}{d{Ab}}}{{Cl{Ah}}}}{{{d{Ad}}{d{Ad}}}{{Cl{Ah}}}}{{{d{b}}}Cd}{{{d{A`}}}b}{{{d{n}}}{{d{{h{f}}}}}}{{{d{Ab}}}{{Cl{{d{Ad}}}}}}`1{{{d{A`}}}{{d{Cj}}}}{{{d{n}}c}AjEb}{{{d{b}}c}AjEb}{{{d{A`}}c}AjEb}{{{d{Ab}}c}AjEb}{{{d{Ad}}c}AjEb}{{{d{A`}}{d{{j{f}}}}}n}{{{d{Bl}}}{{Cl{{d{Ed}}}}}}{{{d{Bn}}}{{Cl{{d{Ed}}}}}}`{{{d{n}}}{{h{f}}}}0{{{d{A`}}}{{h{f}}}}{dc{}}0000{dC`}00000{{{d{n}}}{{Ef{f}}}}{c{{Aj{e}}}{}{}}{{{d{{j{f}}}}}{{Aj{nDj}}}}{{{d{{j{f}}}}}{{Aj{bc}}}{}}{{{d{{h{f}}}}}{{Aj{bc}}}{}}333{{{d{{j{f}}}}}{{Aj{A`c}}}{}}444{{}{{Aj{c}}}{}}000000{dEh}000000{{{d{b}}{d{{j{f}}}}{d{n}}}{{Aj{AfCf}}}}{{Abc}Ab{{Dh{}{{An{B`}}}}}}{{AbAd}Ab}````````{d{{d{c}}}{}}0{{{d{l}}}{{d{lc}}}{}}0{{{d{Db}}}Db}{{d{d{lc}}}Af{}}{{df}Af}{{{d{Dl}}}{{Aj{EjEl}}}}{c{{Aj{Db}}}Al}{{{d{Db}}{d{Db}}}Bd}{{{d{Db}}{d{lBf}}}Bj}0{{{d{El}}{d{lBf}}}Bj}0{cc{}}{AbDb}1{ChEl}{EnEl}{{{d{{j{f}}}}}{{Aj{EjEl}}}}{{{d{{j{f}}}}}{{Aj{DbEl}}}}{{{d{Dl}}}{{Aj{Dbc}}}{}}{{}c{}}06{{{d{Db}}}{{d{Ab}}}}{{{d{Ej}}}C`}{{{d{Db}}c}AjEb}{{{d{El}}}{{Cl{{d{Ed}}}}}}{{{d{Ej}}}{{Ef{f}}}}{{{d{Db}}}{{Ef{f}}}}{dc{}}{dC`}0{c{{Aj{e}}}{}{}}0{{}{{Aj{c}}}{}}0{dEh}0`","D":"Il","p":[[5,"PublicKey",0,230],[1,"reference",null,null,1],[1,"u8"],[1,"array"],[1,"slice"],[0,"mut"],[5,"Signature",0,231],[5,"SecretKey",0,230],[5,"NodeAddr",0,232],[5,"RelayUrl",0,233],[1,"unit"],[6,"Ordering",234],[6,"Result",235,null,1],[10,"Deserializer",236],[17,"Item"],[6,"SocketAddr",237],[10,"Iterator",238],[1,"bool"],[5,"Formatter",239],[5,"Error",239],[8,"Result",239],[6,"KeyParsingError",0,230],[5,"RelayUrlParseError",0,233],[5,"String",240],[5,"InternalSignature",241],[5,"VerifyingKey",242],[8,"SignatureError",243],[5,"DecodeError",244],[5,"SigningKey",245],[6,"Option",246,null,1],[1,"tuple",null,null,1],[8,"NodeId",0,230],[5,"NodeTicket",181,247],[5,"Url",248],[6,"ParseError",249],[10,"IntoIterator",250],[5,"Error",251],[1,"str"],[10,"CryptoRngCore",252],[10,"Hasher",253],[10,"Serializer",254],[10,"Error",255],[5,"Vec",256],[5,"TypeId",257],[10,"Ticket",181],[6,"Error",181],[6,"Error",258],[15,"Kind",229]],"r":[[4,230],[6,232],[7,230],[8,230],[9,233],[10,233],[11,230],[12,231],[185,247]],"b":[[60,"impl-Debug-for-Signature"],[61,"impl-Display-for-Signature"],[62,"impl-LowerHex-for-Signature"],[63,"impl-UpperHex-for-Signature"],[64,"impl-Display-for-PublicKey"],[65,"impl-Debug-for-PublicKey"],[66,"impl-Debug-for-KeyParsingError"],[67,"impl-Display-for-KeyParsingError"],[68,"impl-Display-for-SecretKey"],[69,"impl-Debug-for-SecretKey"],[71,"impl-Display-for-RelayUrl"],[72,"impl-Debug-for-RelayUrl"],[73,"impl-Debug-for-RelayUrlParseError"],[74,"impl-Display-for-RelayUrlParseError"],[77,"impl-From%3C%26%5Bu8;+ed25519::::SignatureBytes::%7Bconstant%230%7D%5D%3E-for-Signature"],[78,"impl-From%3C%5Bu8;+ed25519::::SignatureBytes::%7Bconstant%230%7D%5D%3E-for-Signature"],[79,"impl-From%3CInternalSignature%3E-for-Signature"],[83,"impl-From%3CError%3E-for-KeyParsingError"],[84,"impl-From%3CDecodeError%3E-for-KeyParsingError"],[85,"impl-From%3C%5Bu8;+32%5D%3E-for-SecretKey"],[87,"impl-From%3CSigningKey%3E-for-SecretKey"],[88,"impl-From%3C(PublicKey,+Option%3CRelayUrl%3E,+%26%5BSocketAddr%5D)%3E-for-NodeAddr"],[89,"impl-From%3CPublicKey%3E-for-NodeAddr"],[90,"impl-From%3CNodeTicket%3E-for-NodeAddr"],[138,"impl-SignatureEncoding-for-Signature"],[139,"impl-Signature"],[155,"impl-TryFrom%3C%26%5Bu8%5D%3E-for-PublicKey"],[156,"impl-TryFrom%3C%26%5Bu8;+32%5D%3E-for-PublicKey"],[199,"impl-Debug-for-NodeTicket"],[200,"impl-Display-for-NodeTicket"],[201,"impl-Display-for-Error"],[202,"impl-Debug-for-Error"],[206,"impl-From%3CDecodeError%3E-for-Error"],[207,"impl-From%3CError%3E-for-Error"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAJgAFgAPACcAOQASAE4AAgBSAAAAVAACAFgAAgBdAAAAXwAAAGcAAwBsAAEAeAACAIIABACIAAEAiwAAAI4ACgCaABgAvgAGAMYABQDPAAEA0gABANkAAQDcAAkA","P":[[15,"T"],[16,""],[17,"T"],[30,""],[35,"T"],[40,""],[48,"Deref::Target"],[49,"D"],[52,"__D"],[54,""],[76,"T"],[77,""],[80,"T"],[81,""],[82,"T"],[83,""],[86,"T"],[87,""],[91,"T"],[92,""],[93,"T"],[94,""],[95,"T"],[96,""],[100,""],[101,""],[103,"FromStr::Err"],[106,"R"],[107,"H"],[108,"__H"],[109,"U"],[116,""],[129,"S"],[132,"__S"],[134,""],[141,"T"],[146,""],[153,"U,T"],[154,""],[155,"TryFrom::Error"],[157,"U,T"],[160,"TryFrom::Error"],[161,"U,T"],[164,"U"],[171,""],[179,""],[180,""],[189,"T"],[193,""],[194,"T"],[195,""],[197,"D"],[198,""],[203,"T"],[204,""],[205,"T"],[206,""],[210,"FromStr::Err"],[211,"U"],[213,""],[216,"S"],[217,""],[220,"T"],[221,""],[223,"U,T"],[225,"U"],[227,""]]}],["iroh_bench",{"t":"FGGGPPPFPPPPNNNNNNNNNNNNNNNNHONNNNNNNNNNNNHNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNONNNNNCOONCOHCCNOONNNNNNNNNNNNNNNNNNNNNONNNNNOSHHHHHHSHHHHHHFNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFONNNNNNOOOONNNNNNNNNNNOONNNNNNNNNNNNNNONOOOHOOONNNNNNOONNNNNN","n":["ClientStats","Commands","ConnectionSelector","EndpointSelector","Iroh","","","Opt","Quinn","","","S2n","__clone_box","","augment_args","augment_args_for_update","augment_subcommands","augment_subcommands_for_update","borrow","","","","","borrow_mut","","","","","client_handler","clients","clone","","clone_into","","clone_to_uninit","","close","","command","","command_for_update","","configure_tracing_subscriber","default","deref","","","","","deref_mut","","","","","download_size","drop","","","","","fmt","","from","","","","","from_arg_matches","","from_arg_matches_mut","","from_ref","","group_id","has_subcommand","init","","","","","initial_mtu","into","","","","","iroh","max_streams","metrics","print","quinn","read_unordered","rt","s2n","stats","","","streams","to_owned","","try_from","","","","","try_into","","","","","type_id","","","","","update_from_arg_matches","","update_from_arg_matches_mut","","upload_size","vzip","","","","","with_relay","ALPN","client","connect_client","handle_client_stream","server","server_endpoint","transport_config","ALPN","client","connect_client","handle_client_stream","server","server_endpoint","transport_config","Opt","__clone_box","augment_args","augment_args_for_update","borrow","borrow_mut","clone","clone_into","clone_to_uninit","command","command_for_update","deref","deref_mut","drop","fmt","from","from_arg_matches","from_arg_matches_mut","from_ref","group_id","init","into","to_owned","try_from","try_into","type_id","update_from_arg_matches","update_from_arg_matches_mut","vzip","Stats","StreamStats","TransferResult","avg_chunk_size","borrow","","","borrow_mut","","","chunk_size","chunk_time","chunks","","default","","deref","","","deref_mut","","","drop","","","duration","duration_hist","fmt","","","from","","","init","","","into","","","new","print","size","stream_finished","stream_stats","streams","throughput","throughput_bps","throughput_hist","total_duration","total_size","try_from","","","try_into","","","ttfb","ttfb_hist","type_id","","","vzip","",""],"q":[[0,"iroh_bench"],[126,"iroh_bench::iroh"],[133,"iroh_bench::quinn"],[140,"iroh_bench::s2n"],[169,"iroh_bench::stats"],[233,"dyn_clone::sealed"],[234,"clap_builder::builder::command"],[235,"anyhow"],[236,"core::fmt"],[237,"clap_builder::parser::matches::arg_matches"],[238,"clap_builder"],[239,"core::result"],[240,"clap_builder::util::id"],[241,"core::option"],[242,"tokio::runtime::runtime"],[243,"core::any"],[244,"iroh_base::node_addr"],[245,"iroh_base::relay_url"],[246,"iroh::endpoint"],[247,"iroh_quinn::connection"],[248,"iroh_quinn_proto::config"],[249,"core::net::socket_addr"],[250,"rustls_pki_types"],[251,"iroh_quinn::endpoint"],[252,"core::time"]],"i":"````lnAf`21000A`00113210Ab43210`1212121432121`0432104321014321021432102121211243210143210`110`1```3112143210432104321021211432101```````````````E`000000000000000000000000000```DbEbEd2102000210102102102201021021021022121112`01110210220102102","f":"````````````{{bd}f}0{hh}000{b{{b{c}}}{}}0000{{{b{j}}}{{b{jc}}}{}}0000{{lnA`}{{Ad{Ab}}}}`{{{b{Af}}}Af}{{{b{A`}}}A`}{{b{b{jc}}}f{}}0{{bAh}f}0{l{{Ad{f}}}}{{{b{n}}Aj{b{{Al{Ah}}}}}f}{{}h}000{{}f}{{}Ab}{An{{b{c}}}{}}0000{An{{b{jc}}}{}}0000`{Anf}0000{{{b{Af}}{b{jB`}}}Bb}{{{b{A`}}{b{jB`}}}Bb}{cc{}}0000{{{b{Bd}}}{{Bh{AfBf}}}}{{{b{Bd}}}{{Bh{A`Bf}}}}{{{b{jBd}}}{{Bh{AfBf}}}}{{{b{jBd}}}{{Bh{A`Bf}}}}{{{b{c}}}c{}}0{{}{{Bl{Bj}}}}{{{b{Bn}}}C`}{{}An}0000`{{}c{}}0000```{{{b{Ab}}An}f}``{{}Cb}``{{{b{n}}}f}``{bc{}}0{c{{Bh{e}}}{}{}}0000{{}{{Bh{c}}}{}}0000{bCd}0000{{{b{jAf}}{b{Bd}}}{{Bh{fBf}}}}{{{b{jA`}}{b{Bd}}}{{Bh{fBf}}}}{{{b{jAf}}{b{jBd}}}{{Bh{fBf}}}}{{{b{jA`}}{b{jBd}}}{{Bh{fBf}}}}`{{}c{}}0000``{{Cf{Bl{Ch}}A`}{{Ad{Ab}}}}{{Cf{Bl{Ch}}A`}{{Ad{{Cn{CjCl}}}}}}{{{b{Cl}}D`C`}{{Ad{{Cn{DbDb}}}}}}{{CjA`}{{Ad{f}}}}{{{b{Cb}}{b{{Bl{Ch}}}}{b{A`}}}{{Cn{CfCj}}}}{{AnDd}Df}`{{DhDjA`}{{Ad{Ab}}}}{{DhDjA`}{{Ad{{Cn{DlCl}}}}}}5{{DlA`}{{Ad{f}}}}{{{b{Cb}}DjDn{b{A`}}}{{Cn{DhDl}}}}4`{{bd}f}{hh}0{b{{b{c}}}{}}{{{b{j}}}{{b{jc}}}{}}{{{b{E`}}}E`}{{b{b{jc}}}f{}}{{bAh}f}{{}h}0{An{{b{c}}}{}}{An{{b{jc}}}{}}{Anf}{{{b{E`}}{b{jB`}}}Bb}{cc{}}{{{b{Bd}}}{{Bh{E`Bf}}}}{{{b{jBd}}}{{Bh{E`Bf}}}}{{{b{c}}}c{}}{{}{{Bl{Bj}}}}{{}An}{{}c{}}{bc{}}{c{{Bh{e}}}{}{}}{{}{{Bh{c}}}{}}{bCd}{{{b{jE`}}{b{Bd}}}{{Bh{fBf}}}}{{{b{jE`}}{b{jBd}}}{{Bh{fBf}}}}{{}c{}}````{b{{b{c}}}{}}00{{{b{j}}}{{b{jc}}}{}}00````{{}Eb}{{}Ed}{An{{b{c}}}{}}00{An{{b{jc}}}{}}00{Anf}00``{{{b{Eb}}{b{jB`}}}Bb}{{{b{Ed}}{b{jB`}}}Bb}{{{b{Db}}{b{jB`}}}Bb}{cc{}}00{{}An}00{{}c{}}00{{EfD`EfD`}Db}{{{b{Eb}}{b{Bn}}}f}`{{{b{jEb}}Db}f}```{{EfD`}Eh}```{c{{Bh{e}}}{}{}}00{{}{{Bh{c}}}{}}00``{bCd}00{{}c{}}00","D":"Dj","p":[[1,"reference",null,null,1],[5,"Private",233],[1,"unit"],[5,"Command",234],[0,"mut"],[6,"EndpointSelector",0],[6,"ConnectionSelector",0],[5,"Opt",0],[5,"ClientStats",0],[8,"Result",235],[6,"Commands",0],[1,"u8"],[1,"u32"],[1,"slice"],[1,"usize"],[5,"Formatter",236],[8,"Result",236],[5,"ArgMatches",237],[8,"Error",238],[6,"Result",239,null,1],[5,"Id",240],[6,"Option",241,null,1],[1,"str"],[1,"bool"],[5,"Runtime",242],[5,"TypeId",243],[5,"NodeAddr",244],[5,"RelayUrl",245],[5,"Endpoint",246],[5,"Connection",247],[1,"tuple",null,null,1],[1,"u64"],[5,"TransferResult",169],[1,"u16"],[5,"TransportConfig",248],[6,"SocketAddr",249],[5,"CertificateDer",250],[5,"Endpoint",251],[6,"PrivateKeyDer",250],[5,"Opt",140],[5,"Stats",169],[5,"StreamStats",169],[5,"Duration",252],[1,"f64"]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAMQAEgAAABwAHwAXADgABgBEAAwAVwAAAFoAAQBdAAMAYwAUAHkABAB/AAAAggAAAIUAAQCJAAAAjAAPAJ0ABACjACQAywACANEAGAA=","P":[[18,"T"],[28,""],[32,"T"],[34,""],[44,"T"],[55,""],[62,"T"],[67,""],[71,"T"],[73,""],[81,"U"],[89,""],[98,"T"],[100,"U,T"],[105,"U"],[110,""],[120,"V"],[127,""],[144,"T"],[146,""],[147,"T"],[148,""],[151,"T"],[153,""],[155,"T"],[156,""],[158,"T"],[159,""],[161,"U"],[162,"T"],[163,"U,T"],[164,"U"],[165,""],[168,"V"],[173,"T"],[183,""],[185,"T"],[191,""],[199,"T"],[202,""],[205,"U"],[208,""],[219,"U,T"],[222,"U"],[227,""],[230,"V"]]}],["iroh_dns_server",{"t":"FNNNNNNCCNNNNCNNNCNNNCCNNNNNNGFPPFFFNOONNNNNNNNNNNNNNNNNNNNNNNNOOONNNNNNNNNNNOONNNNNNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNOFFFFNNNNONNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNOOOOONNNNNNNNNNNNNNNNNNNNNNNNGPFFFPPGPPPNNNNOONNNNNNNNNNONNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNOOOOOONNNOOOOHNNNOOOOOONNNNNFNNNNNHNNNNNNFNNNNNNONNNONNNNN","n":["ZoneStore","__clone_box","borrow","borrow_mut","clone","clone_into","clone_to_uninit","config","dns","fmt","from","from_ref","get_signed_packet","http","in_memory","insert","into","metrics","new","persistent","resolve","server","state","to_owned","try_from","try_into","type_id","vzip","with_mainline_fallback","BootstrapOption","Config","Custom","Default","MainlineConfig","MetricsConfig","StoreConfig","__clone_box","bind_addr","bootstrap","borrow","","","","","borrow_mut","","","","","clone","clone_into","clone_to_uninit","data_dir","default","","","","deserialize","","","","","disabled","","dns","enabled","fmt","","","","","from","","","","","from_ref","http","https","into","","","","","load","mainline","metrics","pkarr_put_rate_limit","serialize","","","","","signed_packet_store_path","to_owned","try_from","","","","","try_into","","","","","type_id","","","","","vzip","","","","","zone_store","DnsConfig","DnsHandler","DnsServer","Handle","__clone_box","","","answer_request","bind_addr","borrow","","","","borrow_mut","","","","clone","","","clone_into","","","clone_to_uninit","","","default_soa","default_ttl","deserialize","fmt","","","from","","","","from_ref","","","handle_request","into","","","","local_addr","new","origins","port","rr_a","rr_aaaa","rr_ns","run_until_done","send_response","serialize","shutdown","spawn","to_owned","","","try_from","","","","try_into","","","","type_id","","","","vzip","","","","CertMode","Disabled","HttpConfig","HttpServer","HttpsConfig","LetsEncrypt","Manual","RateLimitConfig","SelfSigned","Simple","Smart","__clone_box","","","","bind_addr","","borrow","","","","","borrow_mut","","","","","cert_mode","clone","","","","clone_into","","","","clone_to_uninit","","","","default","","deserialize","","","","domains","eq","equivalent","","","fmt","","","","","from","","","","","from_ref","","","","http_addr","https_addr","into","","","","","letsencrypt_contact","letsencrypt_prod","port","","run_until_done","serialize","","","","shutdown","spawn","to_owned","","","","to_string","try_from","","","","","try_into","","","","","type_id","","","","","vzip","","","","","Metrics","__clone_box","borrow","borrow_mut","clone","clone_into","clone_to_uninit","default","dns_lookup_error","dns_lookup_notfound","dns_lookup_success","dns_requests","dns_requests_https","dns_requests_udp","fmt","from","from_ref","http_requests","http_requests_duration_ms","http_requests_error","http_requests_success","init_metrics","into","iter","name","pkarr_publish_noop","pkarr_publish_update","store_packets_expired","store_packets_inserted","store_packets_removed","store_packets_updated","to_owned","try_from","try_into","type_id","vzip","Server","borrow","borrow_mut","from","into","run_until_error","run_with_config_until_ctrl_c","shutdown","spawn","try_from","try_into","type_id","vzip","AppState","__clone_box","borrow","borrow_mut","clone","clone_into","clone_to_uninit","dns_handler","from","from_ref","into","store","to_owned","try_from","try_into","type_id","vzip"],"q":[[0,"iroh_dns_server"],[29,"iroh_dns_server::config"],[116,"iroh_dns_server::dns"],[191,"iroh_dns_server::http"],[299,"iroh_dns_server::metrics"],[335,"iroh_dns_server::server"],[348,"iroh_dns_server::state"],[365,"dyn_clone::sealed"],[366,"iroh_dns_server::store"],[367,"core::fmt"],[368,"pkarr::signed_packet"],[369,"core::option"],[370,"anyhow"],[371,"std::path"],[372,"core::convert"],[373,"hickory_proto::rr::domain::name"],[374,"hickory_proto::rr::record_type"],[375,"hickory_proto::rr::rr_set"],[376,"alloc::sync"],[377,"core::result"],[378,"core::any"],[379,"serde::de"],[380,"serde::ser"],[381,"hickory_server::server::request_handler"],[382,"bytes::bytes"],[383,"core::future::future"],[384,"alloc::boxed"],[385,"core::pin"],[386,"hickory_server::server::response_handler"],[387,"core::net::socket_addr"],[388,"hickory_server::authority::message_response"],[389,"hickory_proto::rr::resource"],[390,"core::iter::traits::iterator"],[391,"core::marker"],[392,"iroh_dns_server::http::rate_limiting"],[393,"iroh_dns_server::http::tls"],[394,"alloc::string"],[395,"alloc::vec::into_iter"]],"i":"`j00000``0000`000`000``000000``Bj0```BlCfCbC`3214032143330031403214220103214032143000321400000321403032140321403214032140````D`CjDb12Dl32103213213213213333210321321203210233333013003210321032103210321`Ej```El0`01110EnF`10Fd432104321143214321432144432113333433210432143210004321112104321004321304321043210432104321`Fj0000000000000000000`00000000000000`Gd0000`000000`Ff000000000000000","f":"`{{bd}f}{b{{b{c}}}{}}{{{b{h}}}{{b{hc}}}{}}{{{b{j}}}j}{{b{b{hc}}}f{}}{{bl}f}``{{{b{j}}{b{hn}}}A`}{cc{}}{{{b{c}}}c{}}{{{b{j}}{b{`}}}{{Af{{Ad{Ab}}}}}}```{{}c{}}```{{{b{j}}{b{`}}{b{An}}B`}{{Af{{Ad{{Bd{Bb}}}}}}}}``{bc{}}{c{{Bf{e}}}{}{}}{{}{{Bf{c}}}{}}{bBh}{{}c{}}{{jBj}j}```````{{bd}f}``{b{{b{c}}}{}}0000{{{b{h}}}{{b{hc}}}{}}0000{{{b{Bl}}}Bl}{{b{b{hc}}}f{}}{{bl}f}{{}{{Af{Bn}}}}{{}C`}{{}Bl}{{}Cb}{{}Bj}{c{{Bf{C`}}}Cd}{c{{Bf{Bl}}}Cd}{c{{Bf{Cf}}}Cd}{c{{Bf{Cb}}}Cd}{c{{Bf{Bj}}}Cd}{{}Cf}```{{{b{C`}}{b{hn}}}A`}{{{b{Bl}}{b{hn}}}A`}{{{b{Cf}}{b{hn}}}A`}{{{b{Cb}}{b{hn}}}A`}{{{b{Bj}}{b{hn}}}A`}{cc{}}0000{{{b{c}}}c{}}``{{}c{}}0000{c{{Af{C`}}}{{Al{Aj}}}}```{{{b{C`}}c}BfCh}{{{b{Bl}}c}BfCh}{{{b{Cf}}c}BfCh}{{{b{Cb}}c}BfCh}{{{b{Bj}}c}BfCh}{{}{{Af{Bn}}}}{bc{}}{c{{Bf{e}}}{}{}}0000{{}{{Bf{c}}}{}}0000{bBh}0000{{}c{}}0000`````{{bd}f}00{{{b{Cj}}Cl}{{Af{Cn}}}}`{b{{b{c}}}{}}000{{{b{h}}}{{b{hc}}}{}}000{{{b{D`}}}D`}{{{b{Cj}}}Cj}{{{b{Db}}}Db}{{b{b{hc}}}f{}}00{{bl}f}00``{c{{Bf{D`}}}Cd}{{{b{D`}}{b{hn}}}A`}{{{b{Cj}}{b{hn}}}A`}{{{b{Db}}{b{hn}}}A`}{cc{}}000{{{b{c}}}c{}}00{{{b{Cj}}{b{Cl}}c}{{Dh{{Df{Dd}}}}}Dj}{{}c{}}000{{{b{Dl}}}Dn}{{j{b{D`}}}{{Af{Cj}}}}`````{Dl{{Af{f}}}}{{{b{hDb}}{E`{cegi}}}{{Dh{{Df{Dd}}}}}{{Ef{}{{Eb{{b{Ed}}}}}}Eh}{{Ef{}{{Eb{{b{Ed}}}}}}Eh}{{Ef{}{{Eb{{b{Ed}}}}}}Eh}{{Ef{}{{Eb{{b{Ed}}}}}}Eh}}{{{b{D`}}c}BfCh}2{{D`Cj}{{Af{Dl}}}}{bc{}}00{c{{Bf{e}}}{}{}}000{{}{{Bf{c}}}{}}000{bBh}000{{}c{}}000```````````{{bd}f}000``{b{{b{c}}}{}}0000{{{b{h}}}{{b{hc}}}{}}0000`{{{b{Ej}}}Ej}{{{b{El}}}El}{{{b{En}}}En}{{{b{F`}}}F`}{{b{b{hc}}}f{}}000{{bl}f}000{{}{{b{Ej}}}}{{}Ej}{c{{Bf{Ej}}}Cd}{c{{Bf{El}}}Cd}{c{{Bf{En}}}Cd}{c{{Bf{F`}}}Cd}`{{{b{El}}{b{El}}}Ah}{{b{b{c}}}Ah{}}00{{{b{Ej}}{b{hn}}}A`}{{{b{El}}{b{hn}}}A`}{{{b{El}}{b{hn}}}{{Bf{fFb}}}}{{{b{En}}{b{hn}}}A`}{{{b{F`}}{b{hn}}}A`}{cc{}}0000{{{b{c}}}c{}}000{{{b{Fd}}}{{Ad{Dn}}}}0{{}c{}}0000````{Fd{{Af{f}}}}{{{b{Ej}}c}BfCh}{{{b{El}}c}BfCh}{{{b{En}}c}BfCh}{{{b{F`}}c}BfCh}4{{{Ad{En}}{Ad{F`}}EjFf}{{Af{Fd}}}}{bc{}}000{bFh}{c{{Bf{e}}}{}{}}0000{{}{{Bf{c}}}{}}0000{bBh}0000{{}c{}}0000`{{bd}f}{b{{b{c}}}{}}{{{b{h}}}{{b{hc}}}{}}{{{b{Fj}}}Fj}{{b{b{hc}}}f{}}{{bl}f}{{}Fj}``````{{{b{Fj}}{b{hn}}}A`}{cc{}}{{{b{c}}}c{}}````{{}f}{{}c{}}{{{b{Fj}}}{{Gb{{G`{{b{Fl}}{b{Fn}}}}}}}}{{}{{b{Fl}}}}``````{bc{}}{c{{Bf{e}}}{}{}}{{}{{Bf{c}}}{}}{bBh}{{}c{}}`{b{{b{c}}}{}}{{{b{h}}}{{b{hc}}}{}}<9{Gd{{Af{f}}}}{C`{{Af{f}}}}1{{C`j}{{Af{Gd}}}}8765`{{bd}f}54{{{b{Ff}}}Ff}{{b{b{hc}}}f{}}{{bl}f}`{cc{}}{{{b{c}}}c{}}{{}c{}}`{bc{}}{c{{Bf{e}}}{}{}}{{}{{Bf{c}}}{}}{bBh}{{}c{}}","D":"Oj","p":[[1,"reference",null,null,1],[5,"Private",365],[1,"unit"],[0,"mut"],[5,"ZoneStore",0,366],[1,"u8"],[5,"Formatter",367],[8,"Result",367],[5,"SignedPacket",368],[6,"Option",369,null,1],[8,"Result",370],[1,"bool"],[5,"Path",371],[10,"AsRef",372],[5,"Name",373],[6,"RecordType",374],[5,"RecordSet",375],[5,"Arc",376,null,1],[6,"Result",377,null,1],[5,"TypeId",378],[6,"BootstrapOption",29],[5,"StoreConfig",29],[5,"PathBuf",371],[5,"Config",29],[5,"MainlineConfig",29],[10,"Deserializer",379],[5,"MetricsConfig",29],[10,"Serializer",380],[5,"DnsHandler",116],[5,"Request",381],[5,"Bytes",382],[5,"DnsConfig",116],[5,"Handle",116],[10,"Future",383,null,1],[5,"Box",384,null,1],[5,"Pin",385],[10,"ResponseHandler",386],[5,"DnsServer",116],[6,"SocketAddr",387],[5,"MessageResponse",388],[17,"Item"],[5,"Record",389],[10,"Iterator",390],[10,"Send",391],[6,"RateLimitConfig",191,392],[6,"CertMode",191,393],[5,"HttpConfig",191],[5,"HttpsConfig",191],[5,"Error",367],[5,"HttpServer",191],[5,"AppState",348],[5,"String",394],[5,"Metrics",299],[1,"str"],[10,"Any",378],[1,"tuple",null,null,1],[5,"IntoIter",395],[5,"Server",335]],"r":[[0,366],[191,393],[198,392]],"b":[[231,"impl-Default-for-%26RateLimitConfig"],[232,"impl-Default-for-RateLimitConfig"],[243,"impl-Debug-for-CertMode"],[244,"impl-Display-for-CertMode"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAPAAIAACAAUACgAAAAwAAAAYAAQAJQAAACgADAA2AAgAQwAEAE0AAABZAAQAXwAUAHkAAgB+ABAAkQADAJkAAwCpAAEArQASAMsAAwDRAAkA3AARAO8ACAD9AAMADQEDABMBGAAtAQ0APAEEAEMBDABRAQEAWQEDAF4BBQBmAQAAaQEEAA==","P":[[2,"T"],[4,""],[5,"T"],[6,""],[10,"T"],[12,""],[16,"U"],[18,""],[19,""],[20,""],[23,"T"],[24,"U,T"],[25,"U"],[26,""],[27,"V"],[28,""],[39,"T"],[49,""],[50,"T"],[51,""],[57,"__D"],[62,""],[71,"T"],[79,"U"],[84,""],[88,"__S"],[93,""],[94,"T"],[95,"U,T"],[100,"U"],[105,""],[110,"V"],[120,""],[125,"T"],[133,""],[136,"T"],[139,""],[144,"__D"],[145,""],[148,"T"],[155,"R"],[156,"U"],[160,""],[168,",,,"],[169,"__S"],[170,""],[172,"T"],[175,"U,T"],[179,"U"],[183,""],[187,"V"],[202,""],[208,"T"],[219,""],[223,"T"],[227,""],[233,"__D"],[238,""],[239,"K"],[242,""],[247,"T"],[256,""],[258,"U"],[267,""],[268,"__S"],[272,""],[274,"T"],[278,""],[279,"U,T"],[284,"U"],[289,""],[294,"V"],[300,""],[301,"T"],[303,""],[304,"T"],[305,""],[314,"T"],[320,""],[321,"U"],[322,""],[330,"T"],[331,"U,T"],[332,"U"],[333,""],[334,"V"],[336,"T"],[339,"U"],[340,""],[344,"U,T"],[345,"U"],[346,""],[347,"V"],[349,""],[350,"T"],[352,""],[353,"T"],[354,""],[356,"T"],[358,"U"],[360,"T"],[361,"U,T"],[362,"U"],[363,""],[364,"V"]]}],["iroh_net_report",{"t":"FFFFFFFNHNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNOOONNNOONNNNNNNNNNNNNNOOOOOONNOONNHOOONNOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNN","n":["Addr","Client","Metrics","Options","QuicConfig","RelayLatencies","Report","addr","bind_local_stun_socket","borrow","","","","","","","borrow_mut","","","","","","","captive_portal","client_config","clone","","","","","clone_into","","","","","clone_to_uninit","","","","","default","","","","deref","","","","","","","deref_mut","","","","","","","disabled","drop","","","","","","","ep","eq","","equivalent","","","","","","fmt","","","","","","","","from","","","","","","","get_report","get_report_channel","get_report_with_opts","global_v4","global_v6","hair_pinning","https","icmp_v4","icmp_v6","icmpv4","icmpv6","init","","","","","","","into","","","","","","","ipv4","","ipv4_can_send","ipv6","","ipv6_can_send","iter","","mapping_varies_by_dest_ip","mapping_varies_by_dest_ipv6","name","new","os_has_ipv6","","portmap_probe","preferred_relay","quic_config","receive_stun_packet","relay_latency","relay_v4_latency","relay_v6_latency","reports","reports_full","stun_packets_dropped","stun_packets_recv_ipv4","stun_packets_recv_ipv6","stun_packets_sent_ipv4","stun_packets_sent_ipv6","stun_v4","stun_v6","to_owned","","","","","to_string","try_from","","","","","","","try_into","","","","","","","type_id","","","","","","","udp","vzip","","","","","",""],"q":[[0,"iroh_net_report"],[180,"netwatch::ip_family"],[181,"tokio_util::sync::cancellation_token"],[182,"netwatch::udp"],[183,"alloc::sync"],[184,"core::option"],[185,"iroh_net_report::metrics"],[186,"iroh_net_report::reportgen"],[187,"core::fmt"],[188,"iroh_relay::relay_map"],[189,"anyhow"],[190,"tokio::sync::oneshot"],[191,"core::any"],[192,"alloc::vec::into_iter"],[193,"iroh_base::relay_url"],[194,"core::time"],[195,"core::iter::traits::iterator"],[196,"portmapper"],[197,"hickory_resolver::resolver"],[198,"bytes::bytes"],[199,"core::net::socket_addr"],[200,"alloc::string"],[201,"core::result"],[202,"iroh_net_report::stun_utils"]],"i":"```````b`AdAfAhAj4B`f543261034543205432054320532154326105432610154326104323332225433261054326106663331113354326105432610433433523356`3331033355555551154320354326105432610543261035432610","f":"```````{{{d{b}}}f}{{hfj}{{A`{{n{l}}}}}}{d{{d{c}}}{}}000000{{{d{Ab}}}{{d{Abc}}}{}}000000``{{{d{Ad}}}Ad}{{{d{Af}}}Af}{{{d{Ah}}}Ah}{{{d{Aj}}}Aj}{{{d{f}}}f}{{d{d{Abc}}}Al{}}0000{{dAn}Al}0000{{}Ad}{{}Ah}{{}Aj}{{}B`}{Bb{{d{c}}}{}}000000{Bb{{d{Abc}}}{}}0000002{BbAl}000000`{{{d{Ah}}{d{Ah}}}Bd}{{{d{Aj}}{d{Aj}}}Bd}{{d{d{c}}}Bd{}}00000{{{d{Ad}}{d{AbBf}}}Bh}{{{d{Af}}{d{AbBf}}}Bh}{{{d{Ah}}{d{AbBf}}}Bh}0{{{d{Aj}}{d{AbBf}}}Bh}{{{d{b}}{d{AbBf}}}Bh}{{{d{B`}}{d{AbBf}}}Bh}{{{d{f}}{d{AbBf}}}Bh}{cc{}}000000{{{d{Abb}}Bj{A`{{n{l}}}}{A`{{n{l}}}}{A`{Af}}}{{Bl{{n{Ah}}}}}}{{{d{Abb}}BjB`}{{Bl{{Bn{{Bl{{n{Ah}}}}}}}}}}{{{d{Abb}}BjB`}{{Bl{{n{Ah}}}}}}```{{B`Bd}B`}00``{{}Bb}000000{{}c{}}000000``````{{{d{Ad}}}{{Cf{{Cd{{d{C`}}{d{Cb}}}}}}}}{{{d{Aj}}}{{`{{Cn{}{{Ch{{Cd{{d{Cj}}Cl}}}}}}}}}}``{{}{{d{C`}}}}{{{A`{D`}}Db}{{Bl{b}}}}{{}Bd}```{{B`{A`{Af}}}B`}{{{d{f}}DdDf}Al}``````````{{B`{A`{{n{l}}}}}B`}0{dc{}}0000{dDh}{c{{Dj{e}}}{}{}}000000{{}{{Dj{c}}}{}}000000{dDl}000000`{{}c{}}000000","D":"Gj","p":[[5,"Client",0],[1,"reference",null,null,1],[5,"Addr",0],[6,"IpFamily",180],[5,"CancellationToken",181],[5,"UdpSocket",182],[5,"Arc",183,null,1],[6,"Option",184,null,1],[0,"mut"],[5,"Metrics",0,185],[5,"QuicConfig",0,186],[5,"Report",0],[5,"RelayLatencies",0],[1,"unit"],[1,"u8"],[5,"Options",0],[1,"usize"],[1,"bool"],[5,"Formatter",187],[8,"Result",187],[5,"RelayMap",188],[8,"Result",189],[5,"Receiver",190],[1,"str"],[10,"Any",191],[1,"tuple",null,null,1],[5,"IntoIter",192],[17,"Item"],[5,"RelayUrl",193],[5,"Duration",194],[10,"Iterator",195],[5,"Client",196],[8,"TokioResolver",197],[5,"Bytes",198],[6,"SocketAddr",199],[5,"String",200],[6,"Result",201,null,1],[5,"TypeId",191]],"r":[[2,185],[4,186],[8,202]],"b":[[77,"impl-Display-for-Report"],[78,"impl-Debug-for-Report"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAHcACgAKAA0AGgAgADwABgBEAA8AZgAGAHoAAAB+AAAAiQAGAJIAGgCuAAYA","P":[[9,"T"],[25,""],[30,"T"],[35,""],[44,"T"],[58,""],[69,"K"],[75,""],[83,"T"],[90,""],[108,"U"],[121,""],[145,"T"],[150,""],[151,"U,T"],[158,"U"],[165,""],[173,"V"]]}],["iroh_relay",{"t":"EFFFNNNNNNCNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNOCCONNCOONNNNNNNNNNNNNNONNNNPPFFGPPPPPPPPPPPPPPPPPPGPPPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOSSSSSSGSSPPNNNNNNNNNNNNNNNNNNNNNNNCCCSHSPGPPPPPPPPGFPPPPPPPPPPPGFPFPPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNCHHNHHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNSSSSSSFNNNNNNNNNNNNNNNGFSPFPGFPFFPFFFFFPFOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNOOOONONNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOONNNNNNNNNNNNNONNNNNNNNNNNNNONNNNNNNNNNNNNONONNONNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNOOOONNOOONNNNNONOOONONOOOOOONNNONNCONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNOOOHHHHHH","n":["MAX_PACKET_SIZE","RelayMap","RelayNode","RelayQuicConfig","borrow","","","borrow_mut","","","client","clone","","","clone_into","","","clone_to_uninit","","","cmp","","compare","","contains_node","default","default_from_node","defaults","deref","","","deref_mut","","","deserialize","","drop","","","empty","eq","","","equivalent","","","","","","","","","fmt","","","","","from","","","from_nodes","from_url","get_node","http","init","","","into","","","is_empty","len","nodes","partial_cmp","","port","protos","quic","","serialize","","server","stun_only","stun_port","to_owned","","","to_string","","try_from","","","try_into","","","type_id","","","url","urls","vzip","","","ActorGone","Build","Client","ClientBuilder","ClientError","Closed","ConnectTimeout","DialIO","Dns","Health","Http","Hyper","IPDisabled","InvalidUrl","KeepAlive","NoLocalAddr","NodeGone","Ping","PingAborted","PingTimeout","Pong","Proxy","Receive","ReceivedMessage","ReceivedPacket","Send","ServerRestarting","UnexpectedStatusCode","Upgrade","WebsocketError","address_family_selector","borrow","","","","borrow_mut","","","","build","clone","clone_into","clone_to_uninit","close","close_for_reconnect","connect","deref","","","","deref_mut","","","","drop","","","","finish_ping","fmt","","","","","from","","","","","","","","init","","","","insecure_skip_cert_verify","into","","","","is_connected","is_prober","key_cache_capacity","local_addr","make_dangerous_client_config","new","note_preferred","protocol","proxy_url","public_key","recv","send","send_pong","server_public_key","server_url","source","start_ping","to_owned","to_string","try_from","","","","try_into","","","","type_id","","","","vzip","","","","data","problem","reconnect_in","remote_node_id","try_for","DEFAULT_HTTPS_PORT","DEFAULT_HTTP_PORT","DEFAULT_KEY_CACHE_CAPACITY","DEFAULT_METRICS_PORT","DEFAULT_RELAY_QUIC_PORT","DEFAULT_STUN_PORT","Protocol","RELAY_PATH","RELAY_PROBE_PATH","Relay","Websocket","borrow","borrow_mut","clone","clone_into","clone_to_uninit","deref","deref_mut","drop","eq","equivalent","","","fmt","from","init","into","parse_header","to_owned","try_from","try_into","type_id","upgrade_header","vzip","disco","relay","stun","MAGIC","looks_like_disco_wrapper","MAX_PACKET_SIZE","AlternateServer","Error","ErrorCode","ErrorResponse","Fingerprint","Indication","InvalidFingerprint","InvalidMessage","MalformedAttrs","MappedAddress","MessageClass","MessageDecoder","MessageIntegrity","MessageIntegritySha256","NoFingerprint","Nonce","NotBinding","NotSuccessResponse","PasswordAlgorithm","PasswordAlgorithms","Realm","Request","Software","StunAttribute","StunDecodeError","SuccessResponse","TransactionId","Unknown","UnknownAttributes","UserHash","UserName","XorMappedAddress","as_alternate_server","as_bytes","as_error_code","as_fingerprint","as_mapped_address","as_message_integrity","as_message_integrity_sha256","as_nonce","as_password_algorithm","as_password_algorithms","as_realm","as_ref","as_software","as_unknown","as_unknown_attributes","as_user_hash","as_user_name","as_xor_mapped_address","attribute_type","borrow","","","","","","borrow_mut","","","","","","clone","","","","clone_into","","","","clone_to_uninit","","","","cmp","compare","decode","default","","deref","","","","","","","deref_mut","","","","","","drop","","","","","","eq","","equivalent","","","","","","expect_alternate_server","expect_error_code","expect_fingerprint","expect_mapped_address","expect_message_integrity","expect_message_integrity_sha256","expect_nonce","expect_password_algorithm","expect_password_algorithms","expect_realm","expect_software","expect_unknown","expect_unknown_attributes","expect_user_hash","expect_user_name","expect_xor_mapped_address","fmt","","","","","","","","","from","","","","","","","","","","","","","","","","","","","","","","","","get_context","hash","init","","","","","","into","","","","","","is","is_alternate_server","is_error_code","is_fingerprint","is_mapped_address","is_message_integrity","is_message_integrity_sha256","is_nonce","is_password_algorithm","is_password_algorithms","is_realm","is_software","is_unknown","is_unknown_attributes","is_user_hash","is_user_name","is_xor_mapped_address","methods","parse_binding_request","parse_response","partial_cmp","request","response","to_owned","","","","to_string","","","try_from","","","","","","","try_into","","","","","","type_id","","","","","","vzip","","","","","","BINDING","RESERVED","SHARED_SECRET","ALPN_QUIC_ADDR_DISC","QUIC_ADDR_DISC_CLOSE_CODE","QUIC_ADDR_DISC_CLOSE_REASON","QuicClient","borrow","borrow_mut","deref","deref_mut","drop","fmt","from","get_addr_and_latency","init","into","new","try_from","try_into","type_id","vzip","CertConfig","ClientConnRateLimit","DEFAULT_CERT_RELOAD_INTERVAL","LetsEncrypt","Limits","Manual","MaybeTlsStreamServer","Metrics","Plain","QuicConfig","RelayConfig","Reloading","ReloadingResolver","Server","ServerConfig","StunConfig","StunMetrics","Tls","TlsConfig","accept_conn_burst","accept_conn_limit","accepts","bad_requests","bind_addr","","borrow","","","","","","","","","","","","","borrow_mut","","","","","","","","","","","","","bytes_per_second","bytes_recv","bytes_sent","cert","certificates","client_rx","clone","","","clone_into","","","clone_to_uninit","","","conns_rx_ratelimited_total","default","","","","deref","","","","","","","","","","","","","","deref_mut","","","","","","","","","","","","","disco_packets_dropped","disco_packets_recv","disco_packets_sent","disconnects","drop","","","","","","","","","","","","","failures","fmt","","","","","","","","","","","","","frames_rx_ratelimited_total","from","","","","","","","","","","","","","got_ping","http_addr","http_bind_addr","http_url","https_addr","https_bind_addr","https_url","init","","","","","","","","","","","","","","into","","","","","","","","","","","","","ipv4_success","ipv6_success","iter","","key_cache_capacity","limits","max_burst_bytes","metrics_addr","name","","other_packets_dropped","other_packets_recv","other_packets_sent","poll_flush","poll_read","poll_shutdown","poll_write","poll_write_vectored","quic","quic_addr","quic_bind_addr","relay","relay_accepts","reload","requests","resolve","send_packets_dropped","send_packets_recv","send_packets_sent","sent_pong","server_config","","shutdown","","spawn","stun","stun_addr","task_handle","testing","tls","to_owned","","","try_from","","","","","","","","","","","","","try_into","","","","","","","","","","","","","type_id","","","","","","","","","","","","","unique_client_keys","unknown_frames","vzip","","","","","","","","","","","","","websocket_accepts","certs","state","quic_config","relay_config","self_signed_tls_certs_and_config","server_config","stun_config","tls_config"],"q":[[0,"iroh_relay"],[103,"iroh_relay::client"],[219,"iroh_relay::client::ReceivedMessage"],[224,"iroh_relay::defaults"],[230,"iroh_relay::http"],[258,"iroh_relay::protos"],[261,"iroh_relay::protos::disco"],[263,"iroh_relay::protos::relay"],[264,"iroh_relay::protos::stun"],[489,"iroh_relay::protos::stun::methods"],[492,"iroh_relay::quic"],[511,"iroh_relay::server"],[786,"iroh_relay::server::CertConfig"],[788,"iroh_relay::server::testing"],[794,"iroh_relay::relay_map"],[795,"core::cmp"],[796,"iroh_base::relay_url"],[797,"core::result"],[798,"serde::de"],[799,"core::fmt"],[800,"anyhow"],[801,"alloc::sync"],[802,"core::convert"],[803,"core::iter::traits::collect"],[804,"core::option"],[805,"core::iter::traits::iterator"],[806,"serde::ser"],[807,"alloc::string"],[808,"core::any"],[809,"core::ops::function"],[810,"core::marker"],[811,"iroh_base::key"],[812,"hickory_resolver::resolver"],[813,"iroh_relay::client::conn"],[814,"tokio_tungstenite_wasm::error"],[815,"http::error"],[816,"hyper::error"],[817,"std::io::error"],[818,"core::net::socket_addr"],[819,"rustls::client::client_conn"],[820,"url"],[821,"bytes::bytes"],[822,"core::error"],[823,"core::time"],[824,"core::future::future"],[825,"http::header::value"],[826,"stun_rs::attributes"],[827,"stun_rs::attributes::stun::alternate_server"],[828,"stun_rs::error"],[829,"stun_rs::types"],[830,"stun_rs::attributes::stun::error_code"],[831,"stun_rs::attributes::stun::fingerprint"],[832,"stun_rs::attributes::stun::mapped_address"],[833,"stun_rs::attributes::stun::message_integrity"],[834,"stun_rs::attributes::stun::message_integrity_sha256"],[835,"stun_rs::attributes::stun::nonce"],[836,"stun_rs::attributes::stun::password_algorithm"],[837,"stun_rs::attributes::stun::password_algorithms"],[838,"stun_rs::attributes::stun::realm"],[839,"stun_rs::attributes::stun::software"],[840,"stun_rs::attributes::unknown"],[841,"stun_rs::attributes::stun::unknown_attributes"],[842,"stun_rs::attributes::stun::user_hash"],[843,"stun_rs::attributes::stun::user_name"],[844,"stun_rs::attributes::stun::xor_mapped_address"],[845,"stun_rs::context"],[846,"stun_rs::message"],[847,"core::hash"],[848,"alloc::vec"],[849,"iroh_quinn::endpoint"],[850,"rustls_pki_types"],[851,"iroh_relay::server::metrics"],[852,"core::default"],[853,"iroh_relay::server::resolver"],[854,"rustls::crypto::signer"],[855,"reloadable_core"],[856,"alloc::vec::into_iter"],[857,"core::pin"],[858,"core::task::wake"],[859,"core::task::poll"],[860,"tokio::io::read_buf"],[861,"std::io"],[862,"rustls::server::server_conn"],[863,"tokio_util::task::abort_on_drop"],[864,"stun_rs"],[865,"stun_rs::methods"]],"i":"````fhj210`2102102101010202`21021010210221022211100022110210222`210210222100``110`112102121021021012210Dh0```0000Df1111010011011`010111Cf12Dd123011222000230123012301023301233333012301123010110`101100001130232301230123012301NjNlNn20`````````Eh000000000000000000000000``````Fn`0Ih10Jb002``22020022212``1`222222Gd33333333303333333If3142In14253014251425142522112142253014253014253042444222555555555555555514225330014222555555555555555553012142530142530`5555555555555555```2``14252301442530142530142530142530```````Jj00000000000000```Ll`0``Lb``1`````0`Kn0KbKdLfLh32L`6KhLd43Lj8Kf;Jn985;43762:1<019920:9819819819984:9855;43762:1<0985;43762:1<09999985;43762:1<08985;43762:1<09985;43762:1<090300209855;43762:1<0985;43762:1<08898331498999;;;;;40249585999962500400`3981985;43762:1<0985;43762:1<0985;43762:1<099985;43762:1<09O`Ob``````","f":"````{b{{b{c}}}{}}00{{{b{d}}}{{b{dc}}}{}}00`{{{b{f}}}f}{{{b{h}}}h}{{{b{j}}}j}{{b{b{dc}}}l{}}00{{bn}l}00{{{b{h}}{b{h}}}A`}{{{b{j}}{b{j}}}A`}{{b{b{c}}}A`{}}0{{{b{f}}{b{Ab}}}Ad}{{}j}{{AbAf}f}`{Ah{{b{c}}}{}}00{Ah{{b{dc}}}{}}00{c{{Aj{h}}}Al}{c{{Aj{j}}}Al}{Ahl}00{{}f}{{{b{f}}{b{f}}}Ad}{{{b{h}}{b{h}}}Ad}{{{b{j}}{b{j}}}Ad}{{b{b{c}}}Ad{}}00000000{{{b{f}}{b{dAn}}}B`}0{{{b{h}}{b{dAn}}}B`}0{{{b{j}}{b{dAn}}}B`}{cc{}}00{e{{Bb{f}}}{{Bf{{Bd{h}}}}}{{Bj{}{{Bh{c}}}}}}{Abf}{{{b{f}}{b{Ab}}}{{Bl{{b{{Bd{h}}}}}}}}`{{}Ah}00{{}c{}}00{{{b{f}}}Ad}{{{b{f}}}Ah}{{{b{f}}}{{`{{Bn{}{{Bh{{b{{Bd{h}}}}}}}}}}}}{{{b{h}}{b{h}}}{{Bl{A`}}}}{{{b{j}}{b{j}}}{{Bl{A`}}}}````{{{b{h}}c}AjC`}{{{b{j}}c}AjC`}```{bc{}}00{bCb}0{c{{Aj{e}}}{}{}}00{{}{{Aj{c}}}{}}00{bCd}00`{{{b{f}}}{{`{{Bn{}{{Bh{{b{Ab}}}}}}}}}}{{}c{}}00``````````````````````````````{{Cfc}Cf{{Cj{}{{Ch{Ad}}}}ClCn}}{b{{b{c}}}{}}000{{{b{d}}}{{b{dc}}}{}}000{{CfD`Db}Dd}{{{b{Df}}}Df}{{b{b{dc}}}l{}}{{bn}l}{Ddl}{{{b{dDd}}}l}{{{b{dDd}}}{{Aj{lDh}}}}{Ah{{b{c}}}{}}000{Ah{{b{dc}}}{}}000{Ahl}000{{{b{dDd}}{Dj{n}}}l}{{{b{Df}}{b{dAn}}}B`}{{{b{Dh}}{b{dAn}}}B`}0{{{b{Dd}}{b{dAn}}}B`}{{{b{Cf}}{b{dAn}}}B`}{cc{}}{DlDh}1{DnDh}{E`Dh}{EbDh}44{{}Ah}000{{CfAd}Cf}{{}c{}}000{{{b{Dd}}}Ad}2{{CfAh}Cf}{{{b{Dd}}}{{Bl{Ed}}}}{{}Ef}{cCf{{Bf{Ab}}}}{{{b{dDd}}Ad}l}{{CfEh}Cf}{{CfEj}Cf}{{{b{Dd}}}El}{{{b{dDd}}}{{Bl{{Aj{DfDh}}}}}}{{{b{dDd}}EnF`}{{Aj{lDh}}}}{{{b{dDd}}{Dj{n}}}{{Aj{lDh}}}}{{CfEl}Cf}{{Cfc}Cf{{Bf{Ab}}}}{{{b{Dh}}}{{Bl{{b{Fb}}}}}}{{{b{dDd}}}{{Aj{{`{{Ff{}{{Ch{{Aj{FdDh}}}}}}ClCn}}Dh}}}}{bc{}}{bCb}{c{{Aj{e}}}{}{}}000{{}{{Aj{c}}}{}}000{bCd}000{{}c{}}000````````````````{b{{b{c}}}{}}{{{b{d}}}{{b{dc}}}{}}{{{b{Eh}}}Eh}{{b{b{dc}}}l{}}{{bn}l}{Ah{{b{c}}}{}}{Ah{{b{dc}}}{}}{Ahl}{{{b{Eh}}{b{Eh}}}Ad}{{b{b{c}}}Ad{}}00{{{b{Eh}}{b{dAn}}}B`}{cc{}}{{}Ah}{{}c{}}{{{b{Fh}}}{{Bl{Eh}}}}{bc{}}{c{{Aj{e}}}{}{}}{{}{{Aj{c}}}{}}{bCd}{{{b{Eh}}}{{b{Fj}}}}{{}c{}}````{{{b{{Fl{n}}}}}Ad}`````````````````````````````````{{{b{Fn}}}{{Aj{{b{G`}}Gb}}}}{{{b{Gd}}}{{b{{Dj{n}}}}}}{{{b{Fn}}}{{Aj{{b{Gf}}Gb}}}}{{{b{Fn}}}{{Aj{{b{Gh}}Gb}}}}{{{b{Fn}}}{{Aj{{b{Gj}}Gb}}}}{{{b{Fn}}}{{Aj{{b{Gl}}Gb}}}}{{{b{Fn}}}{{Aj{{b{Gn}}Gb}}}}{{{b{Fn}}}{{Aj{{b{H`}}Gb}}}}{{{b{Fn}}}{{Aj{{b{Hb}}Gb}}}}{{{b{Fn}}}{{Aj{{b{Hd}}Gb}}}}{{{b{Fn}}}{{Aj{{b{Hf}}Gb}}}}{{{b{Gd}}}{{b{{Fl{n}}}}}}{{{b{Fn}}}{{Aj{{b{Hh}}Gb}}}}{{{b{Fn}}}{{Aj{{b{Hj}}Gb}}}}{{{b{Fn}}}{{Aj{{b{Hl}}Gb}}}}{{{b{Fn}}}{{Aj{{b{Hn}}Gb}}}}{{{b{Fn}}}{{Aj{{b{I`}}Gb}}}}{{{b{Fn}}}{{Aj{{b{Ib}}Gb}}}}{{{b{Fn}}}Id}{b{{b{c}}}{}}00000{{{b{d}}}{{b{dc}}}{}}00000{{{b{If}}}If}{{{b{Ih}}}Ih}{{{b{Gd}}}Gd}{{{b{Fn}}}Fn}{{b{b{dc}}}l{}}000{{bn}l}000{{{b{Gd}}{b{Gd}}}A`}{{b{b{c}}}A`{}}{{{b{If}}{b{{Fl{n}}}}}{{Aj{{Il{IjAh}}In}}}}{{}If}{{}Gd}{Ah{{b{c}}}{}}00{{{b{Gd}}}{{b{{Fl{n}}}}}}111{Ah{{b{dc}}}{}}00000{Ahl}00000{{{b{Ih}}{b{Ih}}}Ad}{{{b{Gd}}{b{Gd}}}Ad}{{b{b{c}}}Ad{}}00000{{{b{Fn}}}{{b{G`}}}}{{{b{Fn}}}{{b{Gf}}}}{{{b{Fn}}}{{b{Gh}}}}{{{b{Fn}}}{{b{Gj}}}}{{{b{Fn}}}{{b{Gl}}}}{{{b{Fn}}}{{b{Gn}}}}{{{b{Fn}}}{{b{H`}}}}{{{b{Fn}}}{{b{Hb}}}}{{{b{Fn}}}{{b{Hd}}}}{{{b{Fn}}}{{b{Hf}}}}{{{b{Fn}}}{{b{Hh}}}}{{{b{Fn}}}{{b{Hj}}}}{{{b{Fn}}}{{b{Hl}}}}{{{b{Fn}}}{{b{Hn}}}}{{{b{Fn}}}{{b{I`}}}}{{{b{Fn}}}{{b{Ib}}}}{{{b{If}}{b{dAn}}}{{Aj{lJ`}}}}{{{b{Ih}}{b{dAn}}}{{Aj{lJ`}}}}{{{b{Gd}}{b{dAn}}}{{Aj{lJ`}}}}0{{{b{Fn}}{b{dAn}}}{{Aj{lJ`}}}}{{{b{Jb}}{b{dAn}}}B`}0{{{b{In}}{b{dAn}}}{{Aj{lJ`}}}}0{cc{}}00{{{b{{Dj{n}}}}}Gd}{{{Dj{n}}}Gd}{H`Fn}{HhFn}{GfFn}{GhFn}{GjFn}{GlFn}8{HjFn}{IbFn}{GnFn}{I`Fn}{HbFn}{HdFn}{HfFn}{HnFn}{HlFn}{G`Fn}{cc{}}0{{{b{If}}}{{Bl{{b{Jd}}}}}}{{{b{Gd}}{b{dc}}}lJf}{{}Ah}00000{{}c{}}00000{{{b{{Fl{n}}}}}Ad}{{{b{Fn}}}Ad}000000000000000`{{{b{{Fl{n}}}}}{{Aj{GdJb}}}}{{{b{{Fl{n}}}}}{{Aj{{Il{GdEd}}Jb}}}}{{{b{Gd}}{b{Gd}}}{{Bl{A`}}}}{Gd{{Jh{n}}}}{{GdEd}{{Jh{n}}}}{bc{}}000{bCb}00{c{{Aj{e}}}{}{}}0{n{{Aj{Ih}}}}1111{{}{{Aj{c}}}{}}00000{bCd}00000{{}c{}}00000```````{b{{b{c}}}{}}{{{b{d}}}{{b{dc}}}{}}{Ah{{b{c}}}{}}{Ah{{b{dc}}}{}}{Ahl}{{{b{Jj}}{b{dAn}}}B`}{cc{}}{{{b{Jj}}Ed{b{Fj}}}{{Bb{{Il{EdFd}}}}}}{{}Ah}{{}c{}}{{JlEf}{{Bb{Jj}}}}?=<;`````````````````````````:::::::::::::9999999999999````{{{b{Jn}}}{{Bl{{Jh{K`}}}}}}`{{{b{Kb}}}Kb}{{{b{Kd}}}Kd}{{{b{Kf}}}Kf}{{b{b{dc}}}l{}}00{{bn}l}00`{{}Kb}{{}Kd}{{}{{Kh{ce}}}{KjKl}{KjKl}}{{}Kn}{Ah{{b{c}}}{}}00{{{b{{L`{c}}}}}{{b{e}}}Cl{}}1111111111{Ah{{b{dc}}}{}}000000000000````{Ahl}000000000000`{{{b{Kb}}{b{dAn}}}B`}{{{b{Kd}}{b{dAn}}}B`}{{{b{{L`{c}}}}{b{dAn}}}B`{KlCl}}{{{b{Lb}}{b{dAn}}}B`}{{{b{{Kh{ce}}}}{b{dAn}}}B`KlKl}{{{b{{Ld{ce}}}}{b{dAn}}}B`KlKl}{{{b{Lf}}{b{dAn}}}B`}{{{b{Lh}}{b{dAn}}}B`}{{{b{{Lj{ce}}}}{b{dAn}}}B`KlKl}{{{b{Kn}}{b{dAn}}}B`}{{{b{Kf}}{b{dAn}}}B`}{{{b{{Ll{ce}}}}{b{dAn}}}B`KlKl}{{{b{Jn}}{b{dAn}}}B`}`{cc{}}000000000000`{{{b{Jn}}}{{Bl{Ed}}}}`{{{b{Jn}}}{{Bl{Ab}}}}1`0{{}Ah}00{{cFd}{{Bb{{L`{c}}}}}{Cl{Mb{}{{Ln{M`}}}}}}1111111111{{}c{}}000000000000``{{{b{Kb}}}{{Mf{{Il{{b{Fj}}{b{Md}}}}}}}}{{{b{Kd}}}{{Mf{{Il{{b{Fj}}{b{Md}}}}}}}}````{{}{{b{Fj}}}}0```{{{Mh{{b{dLb}}}}{b{dMj}}}{{Ml{{Aj{lEb}}}}}}{{{Mh{{b{dLb}}}}{b{dMj}}{b{dMn}}}{{Ml{{N`{l}}}}}}1{{{Mh{{b{dLb}}}}{b{dMj}}{b{{Fl{n}}}}}{{Ml{{Aj{AhEb}}}}}}{{{Mh{{b{dLb}}}}{b{dMj}}{b{{Fl{Nb}}}}}{{Ml{{Aj{AhEb}}}}}}`;```{{{b{{L`{c}}}}}l{Cl{Mb{}{{Ln{M`}}}}}}`{{{b{{L`{c}}}}Nd}{{Bl{{Bd{M`}}}}}{{Mb{}{{Ln{M`}}}}ClKl}}``````{{{L`{c}}}l{Cl{Mb{}{{Ln{M`}}}}}}{Jn{{Bb{l}}}}{{{Kh{ce}}}{{Bb{Jn}}}KlKl}`{{{b{Jn}}}{{Bl{Ed}}}}{{{b{dJn}}}{{b{d{Nf{{Bb{l}}}}}}}}``{bc{}}00{c{{Aj{e}}}{}{}}000000000000{{}{{Aj{c}}}{}}000000000000{bCd}000000000000``{{}c{}}000000000000```{{}Lh}{{}{{Ld{l}}}}{{}{{Il{{Jh{K`}}Nh}}}}{{}{{Kh{l}}}}{{}Lf}{{}{{Lj{l}}}}","D":"BKb","p":[[1,"reference",null,null,1],[0,"mut"],[5,"RelayMap",0,794],[5,"RelayNode",0,794],[5,"RelayQuicConfig",0,794],[1,"unit"],[1,"u8"],[6,"Ordering",795],[5,"RelayUrl",796],[1,"bool"],[1,"u16"],[1,"usize"],[6,"Result",797,null,1],[10,"Deserializer",798],[5,"Formatter",799],[8,"Result",799],[8,"Result",800],[5,"Arc",801,null,1],[10,"Into",802],[17,"Item"],[10,"IntoIterator",803],[6,"Option",804,null,1],[10,"Iterator",805],[10,"Serializer",806],[5,"String",807],[5,"TypeId",808],[5,"ClientBuilder",103],[17,"Output"],[10,"Fn",809],[10,"Send",810],[10,"Sync",810],[5,"SecretKey",811],[8,"TokioResolver",812],[5,"Client",103],[6,"ReceivedMessage",103,813],[6,"ClientError",103],[1,"array"],[6,"Error",814],[5,"Error",815],[5,"Error",816],[5,"Error",817],[6,"SocketAddr",818],[5,"ClientConfig",819],[6,"Protocol",230],[5,"Url",820],[5,"PublicKey",811],[8,"NodeId",811],[5,"Bytes",821],[10,"Error",822],[5,"Duration",823],[10,"Future",824,null,1],[5,"HeaderValue",825],[1,"str"],[1,"slice"],[6,"StunAttribute",264,826],[5,"AlternateServer",827],[5,"StunError",828],[5,"TransactionId",264,829],[5,"ErrorCode",830],[6,"Fingerprint",831],[5,"MappedAddress",832],[6,"MessageIntegrity",833],[6,"MessageIntegritySha256",834],[5,"Nonce",835],[5,"PasswordAlgorithm",836],[5,"PasswordAlgorithms",837],[5,"Realm",838],[5,"Software",839],[5,"Unknown",840],[5,"UnknownAttributes",841],[5,"UserHash",842],[5,"UserName",843],[5,"XorMappedAddress",844],[5,"AttributeType",826],[5,"MessageDecoder",264,845],[6,"MessageClass",264,846],[5,"StunMessage",846],[1,"tuple",null,null,1],[5,"StunDecodeError",264,828],[5,"Error",799],[6,"Error",264],[5,"DecoderContext",845],[10,"Hasher",847],[5,"Vec",848],[5,"QuicClient",492],[5,"Endpoint",849],[5,"Server",511],[5,"CertificateDer",850],[5,"Metrics",511,851],[5,"StunMetrics",511,851],[5,"ClientConnRateLimit",511],[5,"ServerConfig",511],[10,"Default",852],[10,"Debug",799],[5,"Limits",511],[5,"ReloadingResolver",511,853],[6,"MaybeTlsStreamServer",511],[5,"RelayConfig",511],[5,"StunConfig",511],[5,"QuicConfig",511],[5,"TlsConfig",511],[6,"CertConfig",511],[17,"Value"],[5,"CertifiedKey",854],[10,"Loader",855],[10,"Any",808],[5,"IntoIter",856],[5,"Pin",857],[5,"Context",858],[6,"Poll",859],[5,"ReadBuf",860],[8,"Result",817],[5,"IoSlice",861],[5,"ClientHello",862],[5,"AbortOnDropHandle",863],[5,"ServerConfig",862],[15,"ReceivedPacket",219],[15,"Health",219],[15,"ServerRestarting",219],[15,"Manual",786],[15,"LetsEncrypt",786]],"r":[[0,263],[1,794],[2,794],[3,794],[126,813],[274,846],[275,845],[287,826],[288,828],[290,829],[451,864],[489,865],[490,865],[491,865],[513,853],[518,851],[523,853],[527,851]],"b":[[52,"impl-Display-for-RelayMap"],[53,"impl-Debug-for-RelayMap"],[54,"impl-Display-for-RelayNode"],[55,"impl-Debug-for-RelayNode"],[163,"impl-Display-for-ClientError"],[164,"impl-Debug-for-ClientError"],[168,"impl-From%3CError%3E-for-ClientError"],[170,"impl-From%3CError%3E-for-ClientError"],[171,"impl-From%3CError%3E-for-ClientError"],[172,"impl-From%3CError%3E-for-ClientError"],[389,"impl-Debug-for-TransactionId"],[390,"impl-Display-for-TransactionId"],[392,"impl-Display-for-Error"],[393,"impl-Debug-for-Error"],[394,"impl-Debug-for-StunDecodeError"],[395,"impl-Display-for-StunDecodeError"],[399,"impl-From%3C%26%5Bu8;+stun_rs::::types::%7Bimpl%2313%7D::%7Bconstant%230%7D%5D%3E-for-TransactionId"],[400,"impl-From%3C%5Bu8;+stun_rs::::types::%7Bimpl%2314%7D::%7Bconstant%230%7D%5D%3E-for-TransactionId"],[401,"impl-From%3CNonce%3E-for-StunAttribute"],[402,"impl-From%3CSoftware%3E-for-StunAttribute"],[403,"impl-From%3CErrorCode%3E-for-StunAttribute"],[404,"impl-From%3CFingerprint%3E-for-StunAttribute"],[405,"impl-From%3CMappedAddress%3E-for-StunAttribute"],[406,"impl-From%3CMessageIntegrity%3E-for-StunAttribute"],[408,"impl-From%3CUnknown%3E-for-StunAttribute"],[409,"impl-From%3CXorMappedAddress%3E-for-StunAttribute"],[410,"impl-From%3CMessageIntegritySha256%3E-for-StunAttribute"],[411,"impl-From%3CUserName%3E-for-StunAttribute"],[412,"impl-From%3CPasswordAlgorithm%3E-for-StunAttribute"],[413,"impl-From%3CPasswordAlgorithms%3E-for-StunAttribute"],[414,"impl-From%3CRealm%3E-for-StunAttribute"],[415,"impl-From%3CUserHash%3E-for-StunAttribute"],[416,"impl-From%3CUnknownAttributes%3E-for-StunAttribute"],[417,"impl-From%3CAlternateServer%3E-for-StunAttribute"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAMEBMgABAAAABQAFAAwADAAaAAAAHQAKACkAEABBAAIASgABAFAAAQBVAA0AZQACAIcABwCQAAIAlgALAKMABACpAAAAqwACALAAAwDIAAAAygARAOwADAD6AAAA/QADAAIBAAA0AQAAPAEZAFcBAABZARoAhAEIAJABBwCZAQkApgEGAMcBAADKAR8A8QEFAPkBAAD8AQMAGQIZADkCCABDAh4AZgIMAHQCDACWAgIAmgIJALMCAQC5AgEAvgIEAMoCAADZAikABQMMAA==","P":[[4,"T"],[11,""],[14,"T"],[17,""],[22,"K"],[24,""],[28,"T"],[34,"__D"],[36,""],[43,"K"],[52,""],[57,"T"],[60,"I,"],[61,""],[67,"U"],[70,""],[79,"__S"],[84,"T"],[87,""],[89,"U,T"],[92,"U"],[95,""],[100,"V"],[133,"S"],[134,"T"],[142,""],[144,"T"],[145,""],[149,"T"],[157,""],[167,"T"],[168,""],[169,"T"],[170,""],[173,"T"],[175,""],[180,"U"],[184,""],[189,""],[190,""],[198,""],[199,""],[201,"T"],[202,""],[203,"U,T"],[207,"U"],[211,""],[215,"V"],[235,"T"],[237,""],[238,"T"],[239,""],[240,"T"],[242,""],[244,"K"],[247,""],[248,"T"],[249,""],[250,"U"],[251,""],[252,"T"],[253,"U,T"],[254,"U"],[255,""],[257,"V"],[262,""],[315,"T"],[327,""],[331,"T"],[335,""],[340,"K"],[341,""],[344,"T"],[347,""],[348,"T"],[357,""],[365,"K"],[371,""],[396,"T"],[399,""],[407,"T"],[408,""],[418,"T"],[420,""],[421,"__H"],[422,""],[428,"U"],[434,""],[457,"T"],[461,""],[464,"U,T"],[466,""],[467,"U,T"],[471,"U"],[477,""],[483,"V"],[496,"T"],[500,""],[502,"T"],[503,""],[505,"U"],[506,""],[507,"U,T"],[508,"U"],[509,""],[510,"V"],[536,"T"],[566,""],[571,"T"],[574,""],[580,"EC,EA"],[581,""],[582,"T"],[585,"Loader,Deref::Target"],[586,"T"],[613,""],[629,"Loader"],[630,""],[631,"EC,EA"],[633,""],[635,"EC,EA"],[636,""],[638,"EC,EA"],[639,""],[641,"T"],[655,""],[664,"Loader"],[665,""],[675,"U"],[690,""],[711,"Loader"],[721,""],[722,"EC,EA"],[724,""],[728,"T"],[731,"U,T"],[744,"U"],[757,""],[772,"V"],[788,""]]}],["iroh_test",{"t":"FQNNNNCNCNNNNHHHHH","n":["CallOnDrop","assert_eq_hex","borrow","borrow_mut","drop","from","hexdump","into","logging","new","try_from","try_into","type_id","parse_hexdump","print_hexdump","setup","setup_multithreaded","testing_subscriber"],"q":[[0,"iroh_test"],[13,"iroh_test::hexdump"],[15,"iroh_test::logging"],[18,"core::ops::function"],[19,"core::result"],[20,"core::any"],[21,"alloc::vec"],[22,"anyhow"],[23,"alloc::string"],[24,"core::convert"],[25,"tracing_core::dispatcher"],[26,"tracing_core::subscriber"]],"i":"``f000`0`0000`````","f":"``{b{{b{c}}}{}}{{{b{d}}}{{b{dc}}}{}}{{{b{df}}}h}{cc{}}`{{}c{}}`{cfj}{c{{l{e}}}{}{}}{{}{{l{c}}}{}}{bn}{{{b{A`}}}{{Af{{Ad{Ab}}}}}}{{ce}Ah{{Al{{Aj{Ab}}}}}{{Al{{Aj{An}}}}}}{{}B`}{{}h}{{}{{`{Bb}}}}","D":"Ad","p":[[1,"reference",null,null,1],[0,"mut"],[5,"CallOnDrop",0],[1,"unit"],[10,"FnOnce",18],[6,"Result",19,null,1],[5,"TypeId",20],[1,"str"],[1,"u8"],[5,"Vec",21],[8,"Result",22],[5,"String",23],[1,"slice"],[10,"AsRef",24],[1,"usize"],[5,"DefaultGuard",25],[10,"Subscriber",26]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAAgABAABAAAAAwACAAcAAAAKAAMA","P":[[2,"T"],[4,""],[5,"T"],[7,"U"],[9,""],[10,"U,T"],[11,"U"],[12,""],[14,","],[15,""]]}]]'));
+var searchIndex = new Map(JSON.parse('[["bulk",{"t":"HHHHH","n":["collect_and_print","main","run_iroh","run_quinn","run_s2n"],"q":[[0,"bulk"],[5,"core::option"],[6,"struct_iterable_internal"],[7,"iroh_bench"],[8,"anyhow"],[9,"iroh_bench::s2n"]],"i":"`````","f":"{{{d{b}}{f{{d{c}}}}}hj}{{}h}{l{{n{h}}}}0{A`{{n{h}}}}","D":"`","p":[[1,"str"],[1,"reference",null,null,1],[6,"Option",5,null,1],[1,"unit"],[10,"Iterable",6],[5,"Opt",7],[8,"Result",8],[5,"Opt",9]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAAUAAQAAAAUA","P":[[0,""],[1,""]]}],["iroh",{"t":"PPEPGTFIFFEFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNOCCNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNONNNNNCNNONONNNNNNNNNOOCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNCNNSSSSSCCSSSHHHHSSHHHFKFNNNNNNNNNNNNNNCNNNNNNNNNNNNNNOCOCONNNNCNNNNNNNNNNNFSSNNNNNNNNNNNNNNNNFSNNNNNNNNNNNNNNNNNSSSSFFFNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNTFNNNNNNNNNNNNNNNNNNNNNNIKHMNMNMNMNMNMNMNMNMNMNCHPSGFPFNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNONONNNNNNHNNNNNNNNNNNNNTTFFFFKPFPFTTTPFPFPPFFFPGPPPPPFGGKKFKPPPFFGPPPSFFTTTPFKTTPFFTPPTTPFTTPPFFTFPPPPFGPGGFPPGFPPGFTTPGFFGPPGFPPTPPPFFPFPFPPFFPFGFFPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONONNNOOOMNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNONNONONOONOOOONNNONNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNONNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNONNNNNNNNNNNNNNNOOONOOONNNOOOHNNNONNNOOONNNNNNNNOONNOONONMNMNMNNNNNNNOOONNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOONNNNNNONNNNNNNNOONMNNONMNNNNNNOONNNNNNNNNNNNNNNNNNNONMNNONOONOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNOOFFFFNNNNOOOOOOOOONNNNNNNNOONNNNNNNNNNNNOOONNNNNNNNNNNNOOOONNNNONNNNONNNNNNNNONNNNNNNNNNNNOOONNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNOOOOOOONNNNOKFFNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFNNNNHNNNNNNNNNNNNNNNNOONONHHHNNNNNNNNNFFFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["Decode","DecodeInvalidLength","Endpoint","Key","KeyParsingError","LENGTH","NodeAddr","NodeId","PublicKey","RelayMap","RelayMode","RelayNode","RelayUrl","RelayUrlParseError","SecretKey","__clone_box","","","","","","as_bytes","as_ref","borrow","","","","","","","","","borrow_mut","","","","","","","","clone","","","","","","clone_into","","","","","","clone_to_uninit","","","","","","cmp","","","","compare","","","","contains_node","default_from_node","defaults","deref","","","","","","","","","deref_mut","","","","","","","","deserialize","","","","","direct_addresses","","discovery","dns","drop","","","","","","","","empty","endpoint","eq","","","","","equivalent","","","","","","","","","","","","","","","fmt","","","","","","","","","","","","","","","fmt_short","from","","","","","","","","","","","","","","","","","","","","from_bytes","","from_nodes","from_parts","from_ref","","","","","","from_str","","","from_url","generate","get_node","hash","","init","","","","","","","","into","","","","","","","","is_empty","","len","metrics","new","node_id","nodes","partial_cmp","","","","protocol","public","","quic","relay_url","","secret","serialize","","","","","sign","source","","stun_only","stun_port","test_utils","to_bytes","to_owned","","","","","","to_string","","","","","","","try_from","","","","","","","","","","","try_into","","","","","","","","type_id","","","","","","","","url","urls","verify","vzip","","","","","","","","watchable","with_direct_addresses","with_relay_url","DEFAULT_HTTPS_PORT","DEFAULT_HTTP_PORT","DEFAULT_METRICS_PORT","DEFAULT_RELAY_QUIC_PORT","DEFAULT_STUN_PORT","prod","staging","AP_RELAY_HOSTNAME","EU_RELAY_HOSTNAME","NA_RELAY_HOSTNAME","default_ap_relay_node","default_eu_relay_node","default_na_relay_node","default_relay_map","EU_RELAY_HOSTNAME","NA_RELAY_HOSTNAME","default_eu_relay_node","default_na_relay_node","default_relay_map","ConcurrentDiscovery","Discovery","DiscoveryItem","__clone_box","add","borrow","","borrow_mut","","clone","clone_into","clone_to_uninit","default","deref","","deref_mut","","dns","drop","","empty","fmt","","from","","","from_ref","from_services","init","","into","","last_updated","local_swarm_discovery","node_addr","pkarr","provenance","publish","","resolve","","static_provider","subscribe","","to_owned","try_from","","try_into","","type_id","","vzip","","DnsDiscovery","N0_DNS_NODE_ORIGIN_PROD","N0_DNS_NODE_ORIGIN_STAGING","borrow","borrow_mut","deref","deref_mut","drop","fmt","from","init","into","n0_dns","new","resolve","try_from","try_into","type_id","vzip","LocalSwarmDiscovery","NAME","borrow","borrow_mut","deref","deref_mut","drop","fmt","from","init","into","new","publish","resolve","subscribe","try_from","try_into","type_id","vzip","DEFAULT_PKARR_TTL","DEFAULT_REPUBLISH_INTERVAL","N0_DNS_PKARR_RELAY_PROD","N0_DNS_PKARR_RELAY_STAGING","PkarrPublisher","PkarrRelayClient","PkarrResolver","__clone_box","","","borrow","","","borrow_mut","","","clone","","","clone_into","","","clone_to_uninit","","","deref","","","deref_mut","","","dht","drop","","","","fmt","","","from","","","from_ref","","","init","","","into","","","n0_dns","","new","","","publish","","resolve","","to_owned","","","try_from","","","try_into","","","type_id","","","update_addr_info","vzip","","","with_options","Builder","DhtDiscovery","__clone_box","borrow","","borrow_mut","","build","builder","client","clone","clone_into","clone_to_uninit","default","","deref","","deref_mut","","dht","drop","","fmt","","from","","from_ref","include_direct_addresses","init","","initial_publish_delay","into","","n0_dns_pkarr_relay","pkarr_relay","publish","republish_delay","resolve","secret_key","to_owned","try_from","","try_into","","ttl","type_id","","vzip","","PROVENANCE","StaticProvider","add_node_addr","borrow","borrow_mut","default","deref","deref_mut","drop","fmt","from","from_node_addrs","get_node_addr","init","into","new","publish","remove_node_addr","resolve","set_node_addr","try_from","try_into","type_id","vzip","DnsResolver","ResolverExt","default_resolver","lookup_by_id","","lookup_by_id_staggered","","lookup_by_name","","lookup_by_name_staggered","","lookup_ipv4","","lookup_ipv4_ipv6","","lookup_ipv4_ipv6_staggered","","lookup_ipv4_staggered","","lookup_ipv6","","lookup_ipv6_staggered","","node_info","resolver","Addr","IROH_TXT_NAME","IrohAttr","NodeInfo","Relay","TxtAttrs","__clone_box","as_ref","attrs","borrow","","","borrow_mut","","","clone","clone_into","clone_to_uninit","cmp","compare","deref","","","deref_mut","","","direct_addresses","drop","","","eq","","equivalent","","","","","","fmt","","","","from","","","","","","from_hickory_records","","from_parts","from_pkarr_signed_packet","","from_ref","from_str","from_strings","from_z32","hash","init","","","into","","","lookup_by_id","lookup_by_name","new","node_id","","partial_cmp","relay_url","to_hickory_records","","to_owned","to_pkarr_signed_packet","","to_string","to_z32","try_from","","","","try_into","","","type_id","","","vzip","","","AEAD_LIMIT_REACHED","APPLICATION_ERROR","Accept","AcceptBi","AcceptUni","AckFrequencyConfig","AeadKey","App","ApplicationClose","ApplicationClosed","Builder","CONNECTION_ID_LIMIT_ERROR","CONNECTION_REFUSED","CRYPTO_BUFFER_EXCEEDED","CallMeMaybe","Chunk","CidsExhausted","ClosedStream","","","Connecting","Connection","ConnectionClose","ConnectionClosed","ConnectionError","ConnectionLost","","","","","ConnectionStats","ConnectionType","ControlMsg","Controller","ControllerFactory","CryptoError","CryptoServerConfig","Custom","Default","Direct","DirectAddr","DirectAddrInfo","DirectAddrType","Disabled","","Discovery","ENV_FORCE_STAGING_RELAYS","Endpoint","ExportKeyingMaterialError","FINAL_SIZE_ERROR","FLOW_CONTROL_ERROR","FRAME_ENCODING_ERROR","FinishedEarly","FrameStats","HandshakeTokenKey","INTERNAL_ERROR","INVALID_TOKEN","IllegalOrderedRead","Incoming","IncomingFuture","KEY_UPDATE_ERROR","Local","LocallyClosed","MAX","MAX_SIZE","Mixed","MtuDiscoveryConfig","NO_ERROR","NO_VIABLE_PATH","NamedApp","None","OpenBi","OpenUni","PROTOCOL_VIOLATION","PathStats","Ping","Pong","Portmapped","Read","ReadDatagram","ReadError","","ReadExactError","ReadToEndError","RecvStream","Relay","","RelayMode","RemoteInfo","Reset","","ResetError","RetryError","STREAM_LIMIT_ERROR","STREAM_STATE_ERROR","Saved","SendDatagramError","SendStream","ServerConfig","Source","Staging","Stopped","StoppedError","StreamId","Stun","Stun4LocalPort","TRANSPORT_PARAMETER_ERROR","TimedOut","TooLarge","TooLong","TransportConfig","TransportError","","TransportErrorCode","Udp","UdpStats","Unknown","UnsupportedByPeer","UnsupportedVersion","VarInt","VersionMismatch","WeakConnectionHandle","WriteError","Written","ZeroRttAccepted","ZeroRttRejected","","","","__clone_box","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","accept","","accept_bi","accept_uni","accept_with","ack_eliciting_threshold","ack_frequency","ack_frequency_config","acks","add_discovery","add_node_addr","add_node_addr_with_source","addr","","addrs","aead_from_hkdf","allow_spin","alpn","alpns","bind","bind_addr_v4","bind_addr_v6","black_hole_cooldown","black_holes_detected","borrow","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","borrow_mut","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bound_sockets","build","builder","bytes","","","chunks","clear_discovery","clone","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","clone_box","clone_into","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","clone_to_uninit","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","close","","close_reason","closed","cmp","","","","code","compare","","","","congestion_controller_factory","congestion_events","congestion_state","conn_type","","connect","connection_close","crypto","","","crypto_buffer_size","current_mtu","cwnd","data_blocked","datagram","datagram_receive_buffer_size","datagram_send_buffer_size","datagram_send_buffer_space","datagrams","default","","","","","","","","","","","default_relay_mode","deref","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","deref_mut","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","deserialize","","","","","dir","direct_addresses","discovery","","discovery_dht","discovery_local_network","discovery_n0","dns_resolver","","drop","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","enable_segmentation_offload","eq","","","","","","","","","","","","","","","","","","","","","","","","","","equivalent","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","error_code","","export_keying_material","finish","fmt","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","force_staging_infra","frame","frame_rx","frame_tx","frame_type","from","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","from_ref","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","from_u32","from_u64","from_u64_unchecked","get_remote_node_id","handshake_data","","handshake_done","has_send_address","hash","","","","","home_relay","id","","ignore","immediate_ack","incoming_buffer_size","incoming_buffer_size_total","index","init","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","initial_keys","initial_mtu","initial_rtt","initial_window","initiator","insecure_skip_relay_cert_verify","interval","into","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","into_0rtt","into_any","into_future","","","","","","","","","","into_incoming","into_inner","ios","is_0rtt","is_alive","is_closed","join","","","","","","","","","keep_alive_interval","keylog","known_nodes","last_alive","last_control","last_payload","last_received","last_used","latency","","local_ip","","","lost_bytes","lost_packets","lost_plpmtud_probes","make_server_config","max_ack_delay","max_concurrent_bidi_streams","max_concurrent_uni_streams","max_data","max_datagram_size","max_idle_timeout","max_incoming","max_stream_data","max_streams_bidi","max_streams_uni","migration","min_mtu","minimum_change","mtu_discovery_config","network_change","network_path_changed","new","","new_connection_id","new_token","node_addr","node_id","","observed_addr","observed_external_addr","offset","on_ack","on_congestion_event","on_end_acks","on_mtu_update","on_sent","open","open_bi","open_uni","packet_threshold","partial_cmp","","","","path","path_challenge","path_response","peer_identity","persistent_congestion_threshold","ping","poll","","","","","","","","","poll_flush","poll_read","","poll_shutdown","poll_write","","preferred_address_v4","preferred_address_v6","priority","proxy_from_env","proxy_url","race","","","","","","","","","read","read_chunk","read_chunks","read_datagram","read_exact","read_to_end","reason","","","receive_observed_address_reports","receive_window","received_reset","refuse","relay_map","relay_mode","relay_url","remote_address","","","remote_address_validated","remote_info","remote_info_iter","reordering_threshold","reset","reset_stream","retire_connection_id","retry","retry_tag","retry_token_lifetime","rtt","","saturating_add","seal","secret_key","","send_datagram","send_datagram_wait","send_observed_address_reports","send_window","sent_packets","sent_plpmtud_probes","serialize","","","","","set_alpns","set_max_concurrent_bi_streams","set_max_concurrent_uni_streams","set_priority","set_receive_window","source","","","","","","","","sources","","stable_id","start_session","stats","stop","stop_sending","stopped","stream","stream_data_blocked","stream_receive_window","streams_blocked_bidi","streams_blocked_uni","time_threshold","to_owned","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","to_string","","","","","","","","","","","","","","","","","","","","token_key","transport","transport_config","","try_from","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","try_into","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","try_poll","","","","","","","typ","type_id","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","udp_rx","udp_tx","upper_bound","vzip","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","weak_handle","window","with_crypto","with_single_cert","write","write_all","write_all_chunks","write_chunk","write_chunks","name","","MagicsockMetrics","NetReportMetrics","PortmapMetrics","RelayMetrics","__clone_box","","","","accepts","actor_link_change","actor_tick_direct_addr_heartbeat","actor_tick_direct_addr_update_receiver","actor_tick_main","actor_tick_msg","actor_tick_other","actor_tick_portmap_changed","actor_tick_re_stun","borrow","","","","borrow_mut","","","","bytes_recv","bytes_sent","clone","","","","clone_into","","","","clone_to_uninit","","","","connection_became_direct","connection_handshake_success","conns_rx_ratelimited_total","default","","","","deref","","","","deref_mut","","","","disco_packets_dropped","disco_packets_recv","disco_packets_sent","disconnects","drop","","","","external_address_updated","fmt","","","","frames_rx_ratelimited_total","from","","","","from_ref","","","","got_ping","init","","","","into","","","","iter","","","","local_port_updates","mapping_attempts","mapping_failures","name","","","","nodes_contacted","nodes_contacted_directly","num_direct_conns_added","num_direct_conns_removed","num_relay_conns_added","num_relay_conns_removed","other_packets_dropped","other_packets_recv","other_packets_sent","pcp_available","pcp_probes","probes_started","re_stun_calls","recv_data_ipv4","recv_data_ipv6","recv_data_relay","recv_datagrams","recv_disco_bad_key","recv_disco_bad_parse","recv_disco_call_me_maybe","recv_disco_call_me_maybe_bad_disco","recv_disco_ping","recv_disco_pong","recv_disco_relay","recv_disco_udp","recv_gro_datagrams","relay_accepts","relay_home_change","reports","reports_full","send_data","send_data_network_down","send_disco_relay","send_disco_udp","send_ipv4","send_ipv6","send_packets_dropped","send_packets_recv","send_packets_sent","send_relay","send_relay_error","sent_disco_call_me_maybe","sent_disco_ping","sent_disco_pong","sent_disco_relay","sent_disco_udp","sent_pong","stun_packets_dropped","stun_packets_recv_ipv4","stun_packets_recv_ipv6","stun_packets_sent_ipv4","stun_packets_sent_ipv6","to_owned","","","","try_from","","","","try_into","","","","type_id","","","","unique_client_keys","unknown_frames","update_direct_addrs","upnp_available","upnp_gateway_updated","upnp_probes","upnp_probes_failed","vzip","","","","websocket_accepts","ProtocolHandler","Router","RouterBuilder","__clone_box","accept","","borrow","","borrow_mut","","builder","clone","clone_into","clone_to_uninit","deref","","deref_mut","","drop","","endpoint","","fmt","","from","","from_ref","init","","into","","is_shutdown","new","shutdown","","spawn","to_owned","try_from","","try_into","","type_id","","vzip","","CleanupDropGuard","DnsPkarrServer","borrow","","borrow_mut","","create_dns_resolver","deref","","deref_mut","","discovery","dns_resolver","drop","","fmt","","from","","init","","into","","nameserver","node_origin","on_node","pkarr_url","run","run_relay_server","run_relay_server_with","run_relay_server_with_stun","run_with_origin","try_from","","try_into","","type_id","","vzip","","Disconnected","WatchInitializedFut","WatchNextFut","Watchable","Watcher","WatcherStream","__clone_box","","","borrow","","","","","","borrow_mut","","","","","","chain","clone","","","clone_into","","","clone_to_uninit","","","default","deref","","","","","","deref_mut","","","","","","drop","","","","","","fmt","","","","","","","from","","","","","","from_ref","","","get","","init","","","","","","initialized","into","","","","","","into_future","","into_stream","join","","merge","new","poll","","poll_next","race","","ratelimit_stream","ratelimit_stream_with_jitter","set","stream","stream_updates_only","to_owned","","","to_string","try_from","","","","","","try_into","","","","","","try_poll","","try_poll_next","type_id","","","","","","updated","vzip","","","","","","watch","zip"],"q":[[0,"iroh"],[279,"iroh::defaults"],[286,"iroh::defaults::prod"],[293,"iroh::defaults::staging"],[298,"iroh::discovery"],[351,"iroh::discovery::dns"],[370,"iroh::discovery::local_swarm_discovery"],[389,"iroh::discovery::pkarr"],[466,"iroh::discovery::pkarr::dht"],[515,"iroh::discovery::static_provider"],[539,"iroh::dns"],[564,"iroh::dns::node_info"],[655,"iroh::endpoint"],[2181,"iroh::endpoint::Source"],[2183,"iroh::metrics"],[2359,"iroh::protocol"],[2404,"iroh::test_utils"],[2444,"iroh::watchable"],[2576,"dyn_clone::sealed"],[2577,"iroh_base::key"],[2578,"iroh_base::node_addr"],[2579,"iroh_base::relay_url"],[2580,"iroh_relay::relay_map"],[2581,"core::cmp"],[2582,"core::result"],[2583,"serde::de"],[2584,"core::net::socket_addr"],[2585,"core::iter::traits::iterator"],[2586,"core::fmt"],[2587,"alloc::string"],[2588,"ed25519_dalek::verifying"],[2589,"signature::error"],[2590,"data_encoding"],[2591,"ed25519_dalek::signing"],[2592,"core::option"],[2593,"iroh_base::ticket::node"],[2594,"iroh::magicsock::node_map::node_state"],[2595,"url"],[2596,"url::parser"],[2597,"anyhow"],[2598,"alloc::sync"],[2599,"core::convert"],[2600,"core::iter::traits::collect"],[2601,"rand_core"],[2602,"core::hash"],[2603,"serde::ser"],[2604,"ed25519"],[2605,"core::error"],[2606,"core::any"],[2607,"alloc::boxed"],[2608,"alloc::vec"],[2609,"alloc::collections::btree::set"],[2610,"futures_lite::stream"],[2611,"pkarr::signed_packet"],[2612,"futures_core::stream"],[2613,"core::time"],[2614,"pkarr::client"],[2615,"core::future::future"],[2616,"core::net::ip_addr"],[2617,"hickory_proto::rr::domain::name"],[2618,"core::clone"],[2619,"hickory_resolver::resolver"],[2620,"alloc::collections::btree::map"],[2621,"core::str::traits"],[2622,"hickory_proto::rr::resource"],[2623,"iroh_quinn_proto::connection"],[2624,"iroh_quinn::connection"],[2625,"iroh_quinn_proto::config"],[2626,"iroh_quinn_proto::varint"],[2627,"core::ops::function"],[2628,"core::marker"],[2629,"iroh_quinn_proto::crypto"],[2630,"iroh_quinn_proto::congestion"],[2631,"std::time"],[2632,"iroh_quinn::recv_stream"],[2633,"iroh_quinn::send_stream"],[2634,"iroh_quinn_proto::connection::stats"],[2635,"iroh_quinn_proto::connection::streams::send"],[2636,"iroh_quinn_proto::connection::streams"],[2637,"iroh::magicsock::node_map"],[2638,"iroh_quinn_proto::frame"],[2639,"iroh::magicsock"],[2640,"iroh_quinn_proto"],[2641,"iroh_quinn_proto::connection::assembler"],[2642,"iroh_quinn::incoming"],[2643,"iroh_quinn_proto::connection::streams::recv"],[2644,"ring::error"],[2645,"iroh_quinn_proto::transport_parameters"],[2646,"iroh_quinn_proto::shared"],[2647,"futures_concurrency::future::join::tuple"],[2648,"core::future::into_future"],[2649,"tokio::sync::watch"],[2650,"iroh_quinn_proto::connection::paths"],[2651,"core::pin"],[2652,"core::task::wake"],[2653,"core::task::poll"],[2654,"std::io::error"],[2655,"tokio::io::read_buf"],[2656,"futures_concurrency::future::race::tuple"],[2657,"bytes::bytes"],[2658,"rustls_pki_types"],[2659,"rustls::error"],[2660,"alloc::vec::into_iter"],[2661,"futures_lite::future"],[2662,"iroh::test_utils::dns_and_pkarr_servers"],[2663,"iroh_relay::server"],[2664,"futures_concurrency::stream::chain::tuple"],[2665,"futures_concurrency::stream::into_stream"],[2666,"core::default"],[2667,"futures_concurrency::stream::merge::tuple"],[2668,"governor::state::direct"],[2669,"governor::state"],[2670,"governor::state::direct::streams"],[2671,"governor::clock::with_std"],[2672,"governor::middleware"],[2673,"governor::jitter"],[2674,"futures_concurrency::stream::zip::tuple"],[2675,"iroh_relay::defaults"],[2676,"iroh::test_utils::dns_server"]],"i":"Cb0`0`h`````````0AbAdAfAhAj55556432Cd21675430216543216543216543216431643122`675433021675430216543144``675430212`643216664443332221116677554330022116667775554444443300216524654321653252636754302167543021422`4426431`6514456543157011`5654321675302166675543021675430216754302112667543021`44``````````````````````FhFd101011101010`100101001010101`1`1Ff101`01221212121```Gj000000000000000``Gl0000000000000000```````GnH`Hb210210210210210210210`221021021021021021021210201021021021021022102``Hn0Hl10010111101010010101010100100010101101001010Ib`0000000000000000000000```IfId101010101010101010``Jf```0`Df1Jh21021011122210210121021222111221021110010010120`22102100010121101102`2210210210210A@n0`````A@f`Kn`222Ol`1`NjO````3`Nf2Nl2Ob```````AAf0A@b```419```:::Nn``;;7``;AAb:Lj03`==<3``=`::1Nh``3```4=``:<``>>=````59``22><80``<`=`28``<````:796L`91;84:72OdOfOhOjOlOnA@`Dh=A@dA@fKnLhMnLfA@hA@jA@lA@nAA`AAbAAdGbAAf1KjL`01=OfLl1Ln66On:DhMf4Kl4444MnOhADd:AEdAEbLdLbAElABdNfABfAAlNhNjNlNnAAnO`ObLlLjAB`OdOfOhOjOlOnA@`DhA@bA@dA@fKnLhMnLfABbABhABjA@hA@jA@lA@nAA`AAbAAdLnGbKhKjABlKlAAfADdL`AEdAEbLdLbAElABdNfABfAAlNhNjNlNnAAnO`ObLlLjAB`OdOfOhOjOlOnA@`DhA@bA@dA@fKnLhMnLfABbABhABjA@hA@jA@lA@nAA`AAbAAdLnGbKhKjABlKlAAf5N`6AB`OdA@`0:L`NfNhNjNlNnO`ObLj:OfOhOjOlOn>DhA@bA@dA@fKnLhMnLfA@hA@jA@lA@nAA`AAbAAdGbAAfNdL`NfNhNjNlNnO`ObLjOdOfOhOjOlOnA@`DhA@bA@dA@fKnLhMnLfA@hA@jA@lA@nAA`AAbAAdGbAAfL`NfNhNjNlNnO`ObLjOdOfOhOjOlOnA@`DhA@bA@dA@fKnLhMnLfA@hA@jA@lA@nAA`AAbAAdGbAAfL`200Lj65480654LlOh35Dh6Of;0?32200335Od45013OjA@`A@bLhMnLn`ADd=AEdAEbLdLbAElABdNfABfAAlNhNjNlNnAAnO`ObLlLjAB`OdOfOhOjOlOnA@`DhA@bA@dA@fKnLhMnLfABbABhABjA@hA@jA@lA@nAA`AAbAAdLnGbKhKjABlKlAAfADdL`AEdAEbLdLbAElABdNfABfAAlNhNjNlNnAAnO`ObLlLjAB`OdOfOhOjOlOnA@`DhA@bA@dA@fKnLhMnLfABbABhABjA@hA@jA@lA@nAA`AAbAAdLnGbKhKjABlKlAAfOlOnDhA@bA@f<:;:;;;;:ADdL`AEdAEbLdLbAElABdNfABfAAl0NhNjNlNnAAn0O`ObLlLjAB`OdOfOhOjOlOnA@`DhA@bA@dA@fKnLhMnLfABbABhABjA@hA@jA@lA@nAA`AAbAAdLnGbKhKjABlKlAAfLlNfNhNjNlNnO`ObLjAB`OlOnA@`DhA@bA@dA@fKnABbA@hA@jA@lA@nAA`AAbAAdAAfNf00Nh00Nj00Nl00Nn00O`00Ob00Lj00AB`00Ol00On00A@`00Dh00A@b00A@d00A@f00Kn00ABb00A@h00A@j00A@l00A@n00AA`00AAb00AAd00AAf0076L`AAn1ABdNf0ABf0AAlNh0Nj0Nl0Nn08O`0Ob0LlLj0AB`OdOfOhOjOl0OnA@`DhA@b0A@d0A@f0Kn0LhMnLfABbABhABjA@h0A@j0A@l0A@n0AA`AAb0AAd0LnGbKhKjABlKlAAf`;Oj0>ADdL`AEdAEbLdLbAElABdNf0ABfAAlNh0Nj000Nl0Nn0AAnO`000Ob0LlLj0000AB`OdOfOhOjOlOnA@`DhA@bA@dA@fKn00LhMnLfABbABh0ABjA@h0A@jA@l000A@nAA`AAbAAd0LnGbKhKjABlKlAAfL`NfNhNjNlNnO`ObLjOdOfOhOjOlOnA@`DhA@bA@dA@fKnLhMnLfA@hA@jA@lA@nAA`AAbAAdGbAAfLj00`L`KlOfDh4A@f:987AAlAAnKj5Lf0?1AAd33??837AB`Nd0000Mh::>LjAA`AAb6Oj::>Ll;ADdAEdAEbLdLbAElKhABlKlAAnAAl0111Lf02Ln0<;:987654222L`33A@hA@jA@lLl07KjAAf7Dh72<2Gb0Lh=Of05ACl=;OhLjMh?6>>::22OlOn9A@bA@f:L`0AAn1NfNhNjNlNnO`ObKnDh=:ACl;AAlOf<00Ll110><;:9876LjOd3OhOjOlOnA@`;A@bA@dA@f?LhMnLfA@hA@jA@lA@nAA`AAbAAdGbAAfNfABfNhNjNlNnO`ObLjOlA@bA@dA@fKnA@hA@jA@lA@nAAbAAdLf00LnADdL`AEdAEbLdLbAElABdNfABfAAlNhNjNlNnAAnO`ObLlLj000AB`OdOfOhOjOlOnA@`DhA@bA@dA@fKnLhMnLfABbABhABjA@hA@jA@lA@nAA`AAbAAdLnGbKhKjABlKlAAfADdL`AEdAEbLdLbAElABdNfABfAAlNhNjNlNnAAnO`ObLlLjAB`OdOfOhOjOlOnA@`DhA@bA@dA@fKnLhMnLfABbABhABjA@hA@jA@lA@nAA`AAbAAdLnGbKhKjABlKlAAfAEdAEbLdLbAEl76>ADdL`65432ABdNfABfAAlNhNjNlNnAAnO`ObLlLjAB`OdOfOhOjOlOnA@`DhA@bA@dA@fKnLhMnLfABbABhABjA@hA@jA@lA@nAA`AAbAAdLnGbKhKjABlKlAAfOj0MnADdL`AEdAEbLdLbAElABdNfABfAAlNhNjNlNnAAnO`ObLlLjAB`OdOfOhOjOlOnA@`DhA@bA@dA@fKnLhMnLfABbABhABjA@hA@jA@lA@nAA`AAbAAdLnGbKhKjABlKlAAfL`NdLf0AAn0000AKjAKl````AGhAGjAGlAGn011111111321032100032103210321011032103210321000003210332100321032100321032103210333321011111100033311111111111111012211111100011111110222223210321032103210001333332100```AHjAHbAHf202022222020202020202202020120220202020``AHnAHl10`101000101010101000000```010101010``````AIjAAhAIl21AJ`AJb2AJd542130354354354355421305421305421305421300542130543545421304542130213213521321335445430542130542130213542130454213053","f":"```````````````{{bd}f}00000{{{b{h}}}{{b{{l{j}}}}}}{{{b{h}}}{{b{{n{j}}}}}}1{b{{b{c}}}{}}0000000{{{b{A`}}}{{b{A`c}}}{}}0000000{{{b{h}}}h}{{{b{Ab}}}Ab}{{{b{Ad}}}Ad}{{{b{Af}}}Af}{{{b{Ah}}}Ah}{{{b{Aj}}}Aj}{{b{b{A`c}}}f{}}00000{{bj}f}00000{{{b{h}}{b{h}}}Al}{{{b{Ad}}{b{Ad}}}Al}{{{b{Af}}{b{Af}}}Al}{{{b{Aj}}{b{Aj}}}Al}{{b{b{c}}}Al{}}000{{{b{Ah}}{b{Af}}}An}{{AfB`}Ah}`{Bb{{b{c}}}{}}0000{{{b{Af}}}b}111{Bb{{b{A`c}}}{}}0000000{c{{Bd{h}}}Bf}{c{{Bd{Ab}}}Bf}{c{{Bd{Ad}}}Bf}{c{{Bd{Af}}}Bf}{c{{Bd{Aj}}}Bf}{{{b{Ad}}}{{`{{Bl{}{{Bh{{b{Bj}}}}}}}}}}```{Bbf}0000000{{}Ah}`{{{b{h}}{b{h}}}An}{{{b{Ad}}{b{Ad}}}An}{{{b{Af}}{b{Af}}}An}{{{b{Ah}}{b{Ah}}}An}{{{b{Aj}}{b{Aj}}}An}{{b{b{c}}}An{}}00000000000000{{{b{h}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Cb}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Ab}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Ad}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Af}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Cd}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Ah}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Aj}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{h}}}Cf}{Chh}{cc{}}{CjCb}1{ClCb}{{{l{j}}}Ab}3{CnAb}4{hAd}{{{Db{h{D`{Af}}{b{{n{Bj}}}}}}}Ad}{DdAd}{DfAd}{DhAd}9{DjAf}:{DlCd};;{{{b{{l{j}}}}}{{Bd{hCj}}}}{{{b{{l{j}}}}}Ab}{e{{Bd{AhDn}}}{{Eb{{E`{Aj}}}}}{{Ed{}{{Bh{c}}}}}}{{h{D`{Af}}c}Ad{{Ed{}{{Bh{Bj}}}}}}{{{b{c}}}c{}}00000{{{b{Ef}}}{{Bd{h}}}}{{{b{Ef}}}{{Bd{Ab}}}}{{{b{Ef}}}{{Bd{Af}}}}{AfAh}{cAbEh}{{{b{Ah}}{b{Af}}}{{D`{{b{{E`{Aj}}}}}}}}{{{b{h}}{b{A`c}}}fEj}{{{b{Af}}{b{A`c}}}fEj}{{}Bb}0000000{{}c{}}0000000{{{b{Ad}}}An}{{{b{Ah}}}An}{{{b{Ah}}}Bb}`{hAd}`{{{b{Ah}}}{{`{{Bl{}{{Bh{{b{{E`{Aj}}}}}}}}}}}}{{{b{h}}{b{h}}}{{D`{Al}}}}{{{b{Ad}}{b{Ad}}}{{D`{Al}}}}{{{b{Af}}{b{Af}}}{{D`{Al}}}}{{{b{Aj}}{b{Aj}}}{{D`{Al}}}}`{{{b{h}}}Ch}{{{b{Ab}}}h}`{{{b{Ad}}}{{D`{{b{Af}}}}}}`{{{b{Ab}}}{{b{Cn}}}}{{{b{h}}c}BdEl}{{{b{Ab}}c}BdEl}{{{b{Ad}}c}BdEl}{{{b{Af}}c}BdEl}{{{b{Aj}}c}BdEl}{{{b{Ab}}{b{{n{j}}}}}En}{{{b{Cb}}}{{D`{{b{F`}}}}}}{{{b{Cd}}}{{D`{{b{F`}}}}}}```{{{b{Ab}}}{{l{j}}}}{bc{}}00000{bCf}000000{c{{Bd{e}}}{}{}}{{{b{{n{j}}}}}{{Bd{h}}}}{{{b{{l{j}}}}}{{Bd{h}}}}22{{{b{{n{j}}}}}{{Bd{Ab}}}}33333{{}{{Bd{c}}}{}}0000000{bFb}0000000`{{{b{Ah}}}{{`{{Bl{}{{Bh{{b{Af}}}}}}}}}}{{{b{h}}{b{{n{j}}}}{b{En}}}{{Bd{fCj}}}}{{}c{}}0000000`{{Adc}Ad{{Ed{}{{Bh{Bj}}}}}}{{AdAf}Ad}``````````{{}Aj}00{{}Ah}``110```{{bd}f}{{{b{A`Fd}}c}fFf}{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}0{{{b{Fh}}}Fh}{{b{b{A`c}}}f{}}{{bj}f}{{}Fd}{Bb{{b{c}}}{}}0{Bb{{b{A`c}}}{}}0`{Bbf}03{{{b{Fh}}{b{A`Bn}}}Fj}{{{b{Fd}}{b{A`Bn}}}Fj}{cc{}}0{cFd{{Ed{}{{Bh{{Fl{Ff}}}}}}}}{{{b{c}}}c{}}{{{Fn{{Fl{Ff}}}}}Fd}{{}Bb}0{{}c{}}0`````{{{b{Ff}}{D`{{b{Af}}}}{b{{G`{Bj}}}}}f}{{{b{Fd}}{D`{{b{Af}}}}{b{{G`{Bj}}}}}f}{{{b{Ff}}GbGd}{{D`{{Gh{{Gf{Fh}}}}}}}}{{{b{Fd}}GbGd}{{D`{{Gh{{Gf{Fh}}}}}}}}`{{{b{Ff}}}{{D`{{Gh{Fh}}}}}}{{{b{Fd}}}{{D`{{Gh{Fh}}}}}}{bc{}}{c{{Bd{e}}}{}{}}0{{}{{Bd{c}}}{}}0{bFb}0{{}c{}}0```{b{{b{c}}}{}}{{{b{A`}}}{{b{A`c}}}{}}{Bb{{b{c}}}{}}{Bb{{b{A`c}}}{}}{Bbf}{{{b{Gj}}{b{A`Bn}}}Fj}{cc{}}{{}Bb}{{}c{}}{{}Gj}{CfGj}{{{b{Gj}}GbGd}{{D`{{Gh{{Gf{Fh}}}}}}}}?>=<``;:987{{{b{Gl}}{b{A`Bn}}}Fj}654{Gd{{Gf{Gl}}}}{{{b{Gl}}{D`{{b{Af}}}}{b{{G`{Bj}}}}}f}{{{b{Gl}}GbGd}{{D`{{Gh{{Gf{Fh}}}}}}}}{{{b{Gl}}}{{D`{{Gh{Fh}}}}}}{c{{Bd{e}}}{}{}}{{}{{Bd{c}}}{}}{bFb}{{}c{}}```````{{bd}f}00{b{{b{c}}}{}}00{{{b{A`}}}{{b{A`c}}}{}}00{{{b{Gn}}}Gn}{{{b{H`}}}H`}{{{b{Hb}}}Hb}{{b{b{A`c}}}f{}}00{{bj}f}00{Bb{{b{c}}}{}}00{Bb{{b{A`c}}}{}}00`{Bbf}{{{b{A`Gn}}}f}11{{{b{Gn}}{b{A`Bn}}}Fj}{{{b{H`}}{b{A`Bn}}}Fj}{{{b{Hb}}{b{A`Bn}}}Fj}{cc{}}00{{{b{c}}}c{}}00{{}Bb}00{{}c{}}00{AbGn}{{}H`}{{AbDj}Gn}{DjH`}{DjHb}{{{b{Gn}}{D`{{b{Af}}}}{b{{G`{Bj}}}}}f}{{{b{Hb}}{b{Hd}}}{{Gf{f}}}}{{{b{H`}}GbGd}{{D`{{Hf{{Gf{Fh}}}}}}}}{{{b{Hb}}Gd}{{Gf{Hd}}}}{bc{}}00{c{{Bd{e}}}{}{}}00{{}{{Bd{c}}}{}}00{bFb}007{{}c{}}00{{AbDjHhHj}Gn}``{{bd}f}{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}0{Hl{{Gf{Hn}}}}{{}Hl}{{HlI`}Hl}{{{b{Hn}}}Hn}{{b{b{A`c}}}f{}}{{bj}f}{{}Hn}5{Bb{{b{c}}}{}}0{Bb{{b{A`c}}}{}}0{{HlAn}Hl}{Bbf}0{{{b{Hn}}{b{A`Bn}}}Fj}{{{b{Hl}}{b{A`Bn}}}Fj}{cc{}}0{{{b{c}}}c{}}5{{}Bb}0{{HlHj}Hl}{{}c{}}0{HlHl}{{HlDj}Hl}{{{b{Hn}}{D`{{b{Af}}}}{b{{G`{Bj}}}}}f}4{{{b{Hn}}GbGd}{{D`{{Gh{{Gf{Fh}}}}}}}}{{HlAb}Hl}{bc{}}{c{{Bd{e}}}{}{}}0{{}{{Bd{c}}}{}}0{{HlHh}Hl}{bFb}0{{}c{}}0``{{{b{Ib}}c}f{{Eb{Ad}}}}{b{{b{c}}}{}}{{{b{A`}}}{{b{A`c}}}{}}{{}Ib}{Bb{{b{c}}}{}}{Bb{{b{A`c}}}{}}{Bbf}{{{b{Ib}}{b{A`Bn}}}Fj}{cc{}}{eIb{{Eb{Ad}}}{{Ed{}{{Bh{c}}}}}}{{{b{Ib}}Gd}{{D`{Ad}}}}{{}Bb}{{}c{}}9{{{b{Ib}}{D`{{b{Af}}}}{b{{G`{Bj}}}}}f}3{{{b{Ib}}GbGd}{{D`{{Gh{{Gf{Fh}}}}}}}}{{{b{Ib}}c}{{D`{Ad}}}{{Eb{Ad}}}}{c{{Bd{e}}}{}{}}{{}{{Bd{c}}}{}}{bFb}{{}c{}}``{{}{{b{Id}}}}{{{b{If}}{b{Gd}}{b{Ef}}}{{`{{Ij{}{{Ih{{Gf{Ad}}}}}}}}}}{{{b{Id}}{b{Gd}}{b{Ef}}}{{Gf{Ad}}}}{{{b{If}}{b{Gd}}{b{Ef}}{b{{n{Il}}}}}{{`{{Ij{}{{Ih{{Gf{Ad}}}}}}}}}}{{{b{Id}}{b{Gd}}{b{Ef}}{b{{n{Il}}}}}{{Gf{Ad}}}}{{{b{If}}{b{Ef}}}{{`{{Ij{}{{Ih{{Gf{Ad}}}}}}}}}}{{{b{Id}}{b{Ef}}}{{Gf{Ad}}}}{{{b{If}}{b{Ef}}{b{{n{Il}}}}}{{`{{Ij{}{{Ih{{Gf{Ad}}}}}}}}}}{{{b{Id}}{b{Ef}}{b{{n{Il}}}}}{{Gf{Ad}}}}{{{b{If}}cHj}{{`{{Ij{}{{Ih{{Gf{{`{{Bl{}{{Bh{In}}}}}}}}}}}}}}}J`}{{{b{Id}}cHj}{{Gf{{`{{Bl{}{{Bh{In}}}}}}}}}J`}{{{b{If}}cHj}{{`{{Ij{}{{Ih{{Gf{{`{{Bl{}{{Bh{In}}}}}}}}}}}}}}}{J`Jb}}{{{b{Id}}cHj}{{Gf{{`{{Bl{}{{Bh{In}}}}}}}}}{J`Jb}}{{{b{If}}cHj{b{{n{Il}}}}}{{`{{Ij{}{{Ih{{Gf{{`{{Bl{}{{Bh{In}}}}}}}}}}}}}}}{J`Jb}}{{{b{Id}}cHj{b{{n{Il}}}}}{{Gf{{`{{Bl{}{{Bh{In}}}}}}}}}{J`Jb}}105410`{{}{{b{Jd}}}}``````{{bd}f}{{{b{Jf}}}{{b{Ef}}}}{{{b{{Jh{c}}}}}{{b{{Jj{c{Fn{Cf}}}}}}}{JlJnK`Kb}}{b{{b{c}}}{}}00{{{b{A`}}}{{b{A`c}}}{}}00{{{b{Df}}}Df}{{b{b{A`c}}}f{}}{{bj}f}{{{b{Jf}}{b{Jf}}}Al}{{b{b{c}}}Al{}}{Bb{{b{c}}}{}}00{Bb{{b{A`c}}}{}}00`{Bbf}00{{{b{Jf}}{b{Jf}}}An}{{{b{Df}}{b{Df}}}An}{{b{b{c}}}An{}}00000{{{b{Jf}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Jf}}{b{A`Bn}}}Fj}{{{b{Df}}{b{A`Bn}}}Fj}{{{b{{Jh{c}}}}{b{A`Bn}}}FjKd}{cc{}}0{{{Jh{Jf}}}Df}{{{b{{Jh{Jf}}}}}Df}2{{{b{Df}}}{{Jh{Jf}}}}{{{b{{n{Kf}}}}}{{Gf{Df}}}}{{{b{{n{Kf}}}}}{{Gf{{Jh{c}}}}}{JlJnK`Kb}}{{Gde}{{Jh{c}}}{JlJnK`Kb}{{Bl{}{{Bh{{Db{cCf}}}}}}}}{{{b{Hd}}}{{Gf{Df}}}}{{{b{Hd}}}{{Gf{{Jh{c}}}}}{JlJnK`Kb}}{{{b{c}}}c{}}{{{b{Ef}}}{{Bd{Jfc}}}{}}{{Gdc}{{Gf{{Jh{e}}}}}{{Bl{}{{Bh{Cf}}}}}{JlJnK`Kb}}{{{b{Ef}}}{{Gf{Gd}}}}{{{b{Jf}}{b{A`c}}}fEj}{{}Bb}00{{}c{}}00{{{b{Jd}}{b{Gd}}{b{Ef}}}{{Gf{{Jh{c}}}}}{JlJnK`Kb}}{{{b{Jd}}{b{Ef}}}{{Gf{{Jh{c}}}}}{JlJnK`Kb}}{{Gd{D`{Dj}}{G`{Bj}}}Df}{{{b{{Jh{c}}}}}Gd{JlJnK`Kb}}`{{{b{Jf}}{b{Jf}}}{{D`{Al}}}}`{{{b{Df}}{b{Ef}}Hh}{{Gf{{`{{Bl{}{{Bh{Kf}}}}}}}}}}{{{b{{Jh{c}}}}{b{Ef}}Hh}{{Gf{{`{{Bl{}{{Bh{Kf}}}}}}}}}{JlJnK`Kb}}{bc{}}{{{b{Df}}{b{Ab}}Hh}{{Gf{Hd}}}}{{{b{{Jh{c}}}}{b{Ab}}Hh}{{Gf{Hd}}}{JlJnK`Kb}}{bCf}{{{b{Gd}}}Cf}{{{b{Ef}}}{{Bd{Jfc}}}{}}{c{{Bd{e}}}{}{}}00{{}{{Bd{c}}}{}}00{bFb}00{{}c{}}00`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{{bd}f}00000000000000000000000000000000{{{b{Gb}}}Kh}{Kj{{Gf{KlKn}}}}{{{b{L`}}}Lb}{{{b{L`}}}Ld}{{Kj{E`{Lf}}}{{Gf{KlKn}}}}{{{b{A`Lh}}Lj}{{b{A`Lh}}}}`{{{b{A`Ll}}{D`{Lh}}}{{b{A`Ll}}}}`{{Lne}LnFf{{M`{{b{Ab}}}{{Ih{{D`{c}}}}}}MbMd}}{{{b{Gb}}Ad}{{Gf{f}}}}{{{b{Gb}}Ad{b{Ef}}}{{Gf{f}}}}```{{{b{Mf}}{b{{n{j}}}}}{{Fl{Mh}}}}{{{b{A`Ll}}An}{{b{A`Ll}}}}{{{b{A`Kl}}}{{Gf{{Fn{j}}}}}}{{Ln{Fn{{Fn{j}}}}}Ln}{Ln{{Gf{Gb}}}}{{LnMj}Ln}{{LnMl}Ln}{{{b{A`Mn}}Hj}{{b{A`Mn}}}}`{b{{b{c}}}{}}0000000000000000000000000000000000000000000000000000{{{b{A`}}}{{b{A`c}}}{}}0000000000000000000000000000000000000000000000000000{{{b{Gb}}}{{Db{Bj{D`{Bj}}}}}}{{{E`{N`}}NbB`}{{Fl{Nd}}}}{{}Ln}````{LnLn}{{{b{L`}}}L`}{{{b{Nf}}}Nf}{{{b{Nh}}}Nh}{{{b{Nj}}}Nj}{{{b{Nl}}}Nl}{{{b{Nn}}}Nn}{{{b{O`}}}O`}{{{b{Ob}}}Ob}{{{b{Lj}}}Lj}{{{b{Od}}}Od}{{{b{Of}}}Of}{{{b{Oh}}}Oh}{{{b{Oj}}}Oj}{{{b{Ol}}}Ol}{{{b{On}}}On}{{{b{A@`}}}A@`}{{{b{Dh}}}Dh}{{{b{A@b}}}A@b}{{{b{A@d}}}A@d}{{{b{A@f}}}A@f}{{{b{Kn}}}Kn}{{{b{Lh}}}Lh}{{{b{Mn}}}Mn}{{{b{Lf}}}Lf}{{{b{A@h}}}A@h}{{{b{A@j}}}A@j}{{{b{A@l}}}A@l}{{{b{A@n}}}A@n}{{{b{AA`}}}AA`}{{{b{AAb}}}AAb}{{{b{AAd}}}AAd}{{{b{Gb}}}Gb}{{{b{AAf}}}AAf}{{{b{Nd}}}{{Fl{Nd}}}}{{b{b{A`c}}}f{}}00000000000000000000000000000000{{bj}f}00000000000000000000000000000000{{{b{L`}}Lj{b{{n{j}}}}}f}{{{b{Gb}}}{{Gf{f}}}}{{{b{L`}}}{{D`{Kn}}}}{{{b{L`}}}Kn}{{{b{Lj}}{b{Lj}}}Al}{{{b{AA`}}{b{AA`}}}Al}{{{b{AAb}}{b{AAb}}}Al}{{{b{AAd}}{b{AAd}}}Al}`{{b{b{c}}}Al{}}000{{{b{A`Ll}}{E`{N`}}}{{b{A`Ll}}}}`{{{b{L`}}}{{Fl{Nd}}}}{{{b{Gb}}Gd}{{Gf{{AAh{A@b}}}}}}`{{{b{Gb}}c{b{{n{j}}}}}{{Gf{L`}}}{{Eb{Ad}}}}`{jA@n}``{{{b{A`Ll}}Bb}{{b{A`Ll}}}}````{{{b{A`Ll}}{D`{Bb}}}{{b{A`Ll}}}}1{{{b{L`}}}Bb}`{{}Ll}{{}Lj}{{}Od}{{}Of}{{}Oh}{{}Oj}{{}A@`}{{}A@b}{{}Lh}{{}Mn}{{}Ln}{{}AAf}{Bb{{b{c}}}{}}0000000000000000000000000000000000000000000000000000{Bb{{b{A`c}}}{}}0000000000000000000000000000000000000000000000000000{c{{Bd{Ol}}}Bf}{c{{Bd{On}}}Bf}{c{{Bd{Dh}}}Bf}{c{{Bd{A@b}}}Bf}{c{{Bd{A@f}}}Bf}{AAdAAj}{{{b{Gb}}}{{AAh{{D`{{G`{AA`}}}}}}}}{{Ln{Fl{Ff}}}Ln}{{{b{Gb}}}{{D`{{b{Ff}}}}}}{LnLn}00{{LnId}Ln}{{{b{Gb}}}{{b{Id}}}}{Bbf}000000000{{{b{A`AAl}}}f}11111{{{b{A`AAn}}}f}22222222222222222222222222222222222222{{{b{A`Ll}}An}{{b{A`Ll}}}}{{{b{Nf}}{b{Nf}}}An}{{{b{Nh}}{b{Nh}}}An}{{{b{Nj}}{b{Nj}}}An}{{{b{Nl}}{b{Nl}}}An}{{{b{Nn}}{b{Nn}}}An}{{{b{O`}}{b{O`}}}An}{{{b{Ob}}{b{Ob}}}An}{{{b{Lj}}{b{Lj}}}An}{{{b{AB`}}{b{AB`}}}An}{{{b{Ol}}{b{Ol}}}An}{{{b{On}}{b{On}}}An}{{{b{A@`}}{b{A@`}}}An}{{{b{Dh}}{b{Dh}}}An}{{{b{A@b}}{b{A@b}}}An}{{{b{A@d}}{b{A@d}}}An}{{{b{A@f}}{b{A@f}}}An}{{{b{Kn}}{b{Kn}}}An}{{{b{ABb}}{b{ABb}}}An}{{{b{A@h}}{b{A@h}}}An}{{{b{A@j}}{b{A@j}}}An}{{{b{A@l}}{b{A@l}}}An}{{{b{A@n}}{b{A@n}}}An}{{{b{AA`}}{b{AA`}}}An}{{{b{AAb}}{b{AAb}}}An}{{{b{AAd}}{b{AAd}}}An}{{{b{AAf}}{b{AAf}}}An}{{b{b{c}}}An{}}00000000000000000000000000000000000000000000000000000000000000000000000000000``{{{b{L`}}{b{A`{n{j}}}}{b{{n{j}}}}{b{{n{j}}}}}{{Bd{fABb}}}}{{{b{A`AAn}}}{{Bd{fA@d}}}}{{{b{L`}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{ABd}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Nf}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{ABf}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{AAl}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Nh}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Nj}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Nl}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Nn}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{AAn}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{O`}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Ob}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Ll}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Lj}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{AB`}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Od}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Of}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Oh}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Oj}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Ol}}{b{A`Bn}}}Fj}0{{{b{On}}{b{A`Bn}}}Fj}{{{b{A@`}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Dh}}{b{A`Bn}}}Fj}{{{b{A@b}}{b{A`Bn}}}Fj}0{{{b{A@d}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{A@f}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{A@f}}{b{A`Bn}}}Fj}{{{b{Kn}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Lh}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Mn}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Lf}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{ABb}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{ABh}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{ABj}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{A@h}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{A@j}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{A@l}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{A@n}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{AA`}}{b{A`Bn}}}Fj}{{{b{AAb}}{b{A`Bn}}}Fj}0{{{b{AAd}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Ln}}{b{A`Bn}}}Fj}{{{b{Gb}}{b{A`Bn}}}Fj}{{{b{Kh}}{b{A`Bn}}}Fj}{{{b{Kj}}{b{A`Bn}}}Fj}{{{b{ABl}}{b{A`Bn}}}Fj}{{{b{Kl}}{b{A`Bn}}}Fj}{{{b{AAf}}{b{A`Bn}}}Fj}{{}An}````{cc{}}0000000{KnNf}111{NjNh}22{NlNj}{KnNj}{ABnNj}{KnNl}6{NjNn}77{A@dO`}8{ObO`}{KnO`}:{KnOb};{B`Lj}<{jLj}{AAdLj}{HhLj}????????????{AC`Kn}{A@lKn}{cc{}}0000{ACbABh}111{A@lA@h}2{A@nA@l}{ACdA@l}4{ACfA@l}5555{LjAAd}6666666{{{b{c}}}c{}}00000000000000000000000000000000:{Il{{Bd{LjACh}}}}{IlLj}{{{b{L`}}}{{Gf{h}}}}{{{b{L`}}}{{D`{{Fl{ACj}}}}}}{{{b{A`Kl}}}{{Gf{{Fl{ACj}}Kn}}}}`{{{b{Dh}}}An}{{{b{Lj}}{b{A`c}}}fEj}{{{b{A@f}}{b{A`c}}}fEj}{{{b{AA`}}{b{A`c}}}fEj}{{{b{AAb}}{b{A`c}}}fEj}{{{b{AAd}}{b{A`c}}}fEj}{{{b{Gb}}}{{AAh{{D`{Af}}}}}}{{{b{AAl}}}AAd}{{{b{AAn}}}AAd}{Kjf}`{{{b{A`Lf}}Il}{{b{A`Lf}}}}0{AAdIl}{{}Bb}0000000000000000000000000000000000000000000000000000{{{b{ACl}}Hh{b{ACn}}}{{Bd{AD`ABj}}}}{{{b{A`Ll}}B`}{{b{A`Ll}}}}{{{b{A`Ll}}Hj}{{b{A`Ll}}}}{{{b{Nd}}}Il}{AAdADb}{{LnAn}Ln}{{{b{A`Mn}}Hj}{{b{A`Mn}}}}{{}c{}}0000000000000000000000000000000000000000000000000000{Kl{{Gf{{Db{L`ADd}}Kl}}}}{{{Fl{Nd}}}{{Fl{ACj}}}}{{}}000000{Kjc{}}11{ABfADf}{LjIl}`{{{b{AAl}}}An}{{{b{ABd}}}An}{{{b{Gb}}}An}{c{{ADh{e}}}ADjIj}00000000{{{b{A`Ll}}{D`{Hj}}}{{b{A`Ll}}}}={{Ln{Fn{Ad}}}Ln}```{{{b{Dh}}}{{D`{Hj}}}}```{{{b{L`}}}{{D`{In}}}}{{{b{Kj}}}{{D`{In}}}}{{{b{Kl}}}{{D`{In}}}}```{{{b{Ab}}{Fn{{Fn{j}}}}{E`{Ll}}An}{{Gf{Lf}}}}{{{b{A`Lh}}{D`{Hj}}}{{b{A`Lh}}}}{{{b{A`Ll}}Lj}{{b{A`Ll}}}}0`{{{b{L`}}}{{D`{Bb}}}}{{{b{A`Ll}}{D`{ADl}}}{{b{A`Ll}}}}{{{b{A`Lf}}Bb}{{b{A`Lf}}}}```{{{b{A`Lf}}An}{{b{A`Lf}}}}{{{b{A`Ll}}B`}{{b{A`Ll}}}}{{{b{A`Mn}}B`}{{b{A`Mn}}}}{{{b{A`Ll}}{D`{Mn}}}{{b{A`Ll}}}}{{{b{Gb}}}f}{{{b{ABd}}}An}{{{E`{ACl}}{E`{Mf}}}Lf}{{ADbAAjIl}AAd}``{{{b{Gb}}}{{Gf{Ad}}}}{{{b{Gb}}}Gd}``{{{b{L`}}}{{ADn{{D`{Bj}}}}}}`{{{b{A`Nd}}NbNbIlAn{b{AE`}}}f}{{{b{A`Nd}}NbNbAnIl}f}{{{b{A`Nd}}NbIlAn{D`{Il}}}f}{{{b{A`Nd}}B`}f}{{{b{A`Nd}}NbIlIl}f}{{{b{Mh}}{b{A`{n{j}}}}{b{{n{j}}}}}{{Bd{{b{A`{n{j}}}}ABh}}}}{{{b{L`}}}AEb}{{{b{L`}}}AEd}{{{b{A`Ll}}Hh}{{b{A`Ll}}}}{{{b{Lj}}{b{Lj}}}{{D`{Al}}}}{{{b{AA`}}{b{AA`}}}{{D`{Al}}}}{{{b{AAb}}{b{AAb}}}{{D`{Al}}}}{{{b{AAd}}{b{AAd}}}{{D`{Al}}}}```{{{b{L`}}}{{D`{{Fl{ACj}}}}}}5`{{{AEf{{b{A`ADd}}}}{b{A`AEh}}}AEj}{{{AEf{{b{A`AEd}}}}{b{A`AEh}}}AEj}{{{AEf{{b{A`AEb}}}}{b{A`AEh}}}AEj}{{{AEf{{b{A`Ld}}}}{b{A`AEh}}}AEj}{{{AEf{{b{A`Lb}}}}{b{A`AEh}}}AEj}{{{AEf{{b{A`AEl}}}}{b{A`AEh}}}AEj}{{{AEf{{b{A`Kh}}}}{b{A`AEh}}}{{AEj{c}}}{}}{{{AEf{{b{A`ABl}}}}{b{A`AEh}}}{{AEj{c}}}{}}{{{AEf{{b{A`Kl}}}}{b{A`AEh}}}{{AEj{c}}}{}}{{{AEf{{b{A`AAn}}}}{b{A`AEh}}}{{AEj{{Bd{fAEn}}}}}}{{{b{A`AAl}}{b{A`AEh}}{b{A`{n{j}}}}}{{AEj{{Bd{BbNj}}}}}}{{{AEf{{b{A`AAl}}}}{b{A`AEh}}{b{A`AF`}}}{{AEj{{Bd{fAEn}}}}}}2{{{AEf{{b{A`AAn}}}}{b{A`AEh}}{b{{n{j}}}}}{{AEj{{Bd{BbAEn}}}}}}{{{AEf{{b{A`AAn}}}}{b{A`AEh}}{b{{n{j}}}}}{{AEj{{Bd{BbO`}}}}}}{{{b{A`Lf}}{D`{Mj}}}{{b{A`Lf}}}}{{{b{A`Lf}}{D`{Ml}}}{{b{A`Lf}}}}{{{b{AAn}}}{{Bd{AFbA@d}}}}{LnLn}{{LnDj}Ln}{e{{AFd{cg}}}{}{{ADj{}{{Ih{c}}}}}{{Ij{}{{Ih{c}}}}}}00000000{{{b{A`AAl}}{b{A`{n{j}}}}}{{Bd{{D`{Bb}}Nj}}}}{{{b{A`AAl}}BbAn}{{Bd{{D`{AB`}}Nj}}}}{{{b{A`AAl}}{b{A`{n{AFf}}}}}{{Bd{{D`{Bb}}Nj}}}}{{{b{L`}}}AEl}{{{b{A`AAl}}{b{A`{n{j}}}}}{{Bd{fNn}}}}{{{b{A`AAl}}Bb}{{Bd{{Fn{j}}Nh}}}}```{{{b{A`Ll}}An}{{b{A`Ll}}}}{{{b{A`Ll}}Lj}{{b{A`Ll}}}}{{{b{A`AAl}}}{{Bd{{D`{Lj}}Nl}}}}{Kjf}{{{b{AAf}}}Ah}{{LnAAf}Ln}`{{{b{L`}}}Bj}{{{b{Kj}}}Bj}{{{b{Kl}}}Bj}{{{b{Kj}}}An}{{{b{Gb}}Gd}{{D`{Dh}}}}{{{b{Gb}}}{{`{{Bl{}{{Bh{Dh}}}}}}}}{{{b{A`Lh}}Lj}{{b{A`Lh}}}}{{{b{A`AAn}}Lj}{{Bd{fA@d}}}}``{Kj{{Gf{fABf}}}}{{{b{ACl}}Hh{b{ACn}}{b{{n{j}}}}}{{l{j}}}}{{{b{A`Lf}}Hj}{{b{A`Lf}}}}{{{b{L`}}}Hj}`{{Ljc}Lj{{Eb{Lj}}}}{{{b{Mh}}{b{A`{Fn{j}}}}{b{{n{j}}}}}{{Bd{fABh}}}}{{LnAb}Ln}{{{b{Gb}}}{{b{Ab}}}}{{{b{L`}}AFf}{{Bd{fNf}}}}{{{b{L`}}AFf}AFh}{{{b{A`Ll}}An}{{b{A`Ll}}}}{{{b{A`Ll}}Il}{{b{A`Ll}}}}``{{{b{Ol}}c}BdEl}{{{b{On}}c}BdEl}{{{b{Dh}}c}BdEl}{{{b{A@b}}c}BdEl}{{{b{A@f}}c}BdEl}{{{b{Gb}}{Fn{{Fn{j}}}}}{{Gf{f}}}}{{{b{L`}}Lj}f}0{{{b{AAn}}AFb}{{Bd{fA@d}}}}1{{{b{Nf}}}{{D`{{b{F`}}}}}}{{{b{Nh}}}{{D`{{b{F`}}}}}}{{{b{Nj}}}{{D`{{b{F`}}}}}}{{{b{Nl}}}{{D`{{b{F`}}}}}}{{{b{Nn}}}{{D`{{b{F`}}}}}}{{{b{O`}}}{{D`{{b{F`}}}}}}{{{b{Ob}}}{{D`{{b{F`}}}}}}{{{b{Kn}}}{{D`{{b{F`}}}}}}{{{b{Dh}}}{{Fn{{Db{A@fHj}}}}}}`{{{b{L`}}}Bb}{{{E`{ACl}}Hh{b{AFj}}}{{Fl{AFl}}}}{{{b{L`}}}Oj}{{{b{A`AAl}}Lj}{{Bd{fA@d}}}}`{{{b{A`AAn}}}{{Bd{{D`{Lj}}Ob}}}}``{{{b{A`Ll}}Lj}{{b{A`Ll}}}}``{{{b{A`Ll}}AFn}{{b{A`Ll}}}}{bc{}}00000000000000000000000000000000{bCf}0000000000000000000{{{b{A`Lf}}{E`{Mf}}}{{b{A`Lf}}}}`{{{b{A`Lf}}{E`{Ll}}}{{b{A`Lf}}}}{{LnLl}Ln}{c{{Bd{e}}}{}{}}000000000000000000{Il{{Bd{LjACh}}}}1{AG`{{Bd{LjACh}}}}{Bb{{Bd{LjACh}}}}333333333333333333333333333333333{{}{{Bd{c}}}{}}0000000000000000000000000000000000000000000000000000{{{AEf{{b{A`c}}}}{b{A`AEh}}}AEj{}}000000`{bFb}0000000000000000000000000000000000000000000000000000``{{{b{A`Mn}}B`}{{b{A`Mn}}}}{{}c{}}0000000000000000000000000000000000000000000000000000{{{b{L`}}}ABd}{{{b{Nd}}}Il}{{{E`{ACl}}}Lf}{{{Fn{AGb}}AGd}{{Bd{LfAGf}}}}{{{b{A`AAn}}{b{{n{j}}}}}{{Bd{BbO`}}}}{{{b{A`AAn}}{b{{n{j}}}}}{{Bd{fO`}}}}{{{b{A`AAn}}{b{A`{n{AFf}}}}}{{Bd{fO`}}}}{{{b{A`AAn}}AFf}{{Bd{fO`}}}}{{{b{A`AAn}}{b{A`{n{AFf}}}}}{{Bd{A@`O`}}}}``````{{bd}f}000`````````{b{{b{c}}}{}}000{{{b{A`}}}{{b{A`c}}}{}}000``{{{b{AGh}}}AGh}{{{b{AGj}}}AGj}{{{b{AGl}}}AGl}{{{b{AGn}}}AGn}{{b{b{A`c}}}f{}}000{{bj}f}000```{{}AGh}{{}AGj}{{}AGl}{{}AGn}{Bb{{b{c}}}{}}000{Bb{{b{A`c}}}{}}000````{Bbf}000`{{{b{AGh}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{AGj}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{AGl}}{b{A`Bn}}}Fj}{{{b{AGn}}{b{A`Bn}}}{{Bd{fC`}}}}`{cc{}}000{{{b{c}}}c{}}000`{{}Bb}000{{}c{}}000{{{b{AGh}}}{{AH`{{Db{{b{Ef}}{b{ACj}}}}}}}}{{{b{AGj}}}{{AH`{{Db{{b{Ef}}{b{ACj}}}}}}}}{{{b{AGl}}}{{AH`{{Db{{b{Ef}}{b{ACj}}}}}}}}{{{b{AGn}}}{{AH`{{Db{{b{Ef}}{b{ACj}}}}}}}}```{{}{{b{Ef}}}}000````````````````````````````````````````````````````{bc{}}000{c{{Bd{e}}}{}{}}000{{}{{Bd{c}}}{}}000{bFb}000```````{{}c{}}000````{{bd}f}{{{b{AHb}}Kl}{{AHd{{Gf{f}}}}}}{{AHfce}AHf{{AHh{{n{j}}}}}AHb}{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}0{GbAHf}{{{b{AHj}}}AHj}{{b{b{A`c}}}f{}}{{bj}f}{Bb{{b{c}}}{}}0{Bb{{b{A`c}}}{}}0{Bbf}0{{{b{AHj}}}{{b{Gb}}}}{{{b{AHf}}}{{b{Gb}}}}{{{b{AHj}}{b{A`Bn}}}Fj}{{{b{AHf}}{b{A`Bn}}}Fj}{cc{}}0{{{b{c}}}c{}}{{}Bb}0{{}c{}}0{{{b{AHj}}}An}?{{{b{AHb}}}{{AHd{f}}}}{{{b{AHj}}}{{Gf{f}}}}{AHf{{Gf{AHj}}}}{bc{}}{c{{Bd{e}}}{}{}}0{{}{{Bd{c}}}{}}0{bFb}0{{}c{}}0``{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}0{Bj{{Gf{Jd}}}}{Bb{{b{c}}}{}}0{Bb{{b{A`c}}}{}}0{{{b{AHl}}Ab}{{Fl{Fd}}}}{{{b{AHl}}}Id}{Bbf}0{{{b{AHn}}{b{A`Bn}}}Fj}{{{b{AHl}}{b{A`Bn}}}Fj}{cc{}}0{{}Bb}0{{}c{}}0``{{{b{AHl}}{b{Gd}}Hj}{{Gf{f}}}}`{{}{{Gf{AHl}}}}{{}{{Gf{{Db{AhAfAI`}}}}}}{{{D`{AIb}}An}{{Gf{{Db{AhAfAI`}}}}}}1{Cf{{Gf{AHl}}}}{c{{Bd{e}}}{}{}}0{{}{{Bd{c}}}{}}0{bFb}0{{}c{}}0``````{{bd}f}00{b{{b{c}}}{}}00000{{{b{A`}}}{{b{A`c}}}{}}00000{e{{AId{g}}}{}{{AIf{}{{Bh{c}}}}}{{AIh{}{{Bh{c}}}}}}{{{b{{AIj{c}}}}}{{AIj{c}}}{}}{{{b{{AAh{c}}}}}{{AAh{c}}}Jb}{{{b{{AIl{c}}}}}{{AIl{c}}}Jb}{{b{b{A`c}}}f{}}00{{bj}f}00{{}{{AIj{c}}}AIn}{Bb{{b{c}}}{}}00000{Bb{{b{A`c}}}{}}00000{Bbf}00000{{{b{{AIj{c}}}}{b{A`Bn}}}FjKd}{{{b{{AAh{c}}}}{b{A`Bn}}}FjKd}{{{b{{AJ`{c}}}}{b{A`Bn}}}FjKd}{{{b{{AJb{c}}}}{b{A`Bn}}}FjKd}{{{b{{AIl{c}}}}{b{A`Bn}}}FjKd}{{{b{AJd}}{b{A`Bn}}}Fj}0{cc{}}00000{{{b{c}}}c{}}00{{{b{{AIj{c}}}}}c{JbAJf}}{{{b{{AAh{c}}}}}{{Bd{cAJd}}}{JbAJf}}{{}Bb}00000{{{b{A`{AAh{{D`{c}}}}}}}{{AJb{c}}}{JbAJf}}{{}c{}}00000{{}}0{{}c{}}{c{{ADh{e}}}ADjIj}0{e{{AJh{cg}}}{}{{AIf{}{{Bh{c}}}}}{{AIh{}{{Bh{c}}}}}}{c{{AIj{c}}}{JbAJf}}{{{AEf{{b{A`{AJ`{c}}}}}}{b{A`AEh}}}{{AEj{e}}}{JbAJf}{}}{{{AEf{{b{A`{AJb{c}}}}}}{b{A`AEh}}}{{AEj{e}}}{JbAJf}{}}{{{AEf{{b{A`{AIl{c}}}}}}{b{A`AEh}}}{{AEj{{D`{e}}}}}{JbAJf}{}}{e{{AFd{cg}}}{}{{ADj{}{{Ih{c}}}}}{{Ij{}{{Ih{c}}}}}}0{{{b{{AJl{AJjceg}}}}}{{AJn{iceg}}}AK`AKbAKd{}}{{{b{{AJl{AJjceg}}}}AKf}{{AJn{iceg}}}AK`AKbAKd{}}{{{b{{AIj{c}}}}c}{{Bd{cc}}}{JbAJf}}{{{AAh{c}}}{{AIl{c}}}{JbAJf}}0{bc{}}00{bCf}{c{{Bd{e}}}{}{}}00000{{}{{Bd{c}}}{}}00000{{{AEf{{b{A`c}}}}{b{A`AEh}}}AEj{}}0{{{AEf{{b{A`c}}}}{b{A`AEh}}}{{AEj{{D`{Bd}}}}}{}}{bFb}00000{{{b{A`{AAh{c}}}}}{{AJ`{c}}}{JbAJf}}{{}c{}}00000{{{b{{AIj{c}}}}}{{AAh{c}}}{JbAJf}}{e{{AKh{g}}}{}{{AIf{}{{Bh{c}}}}}{{AIh{}{{Bh{c}}}}}}","D":"FD`","p":[[1,"reference",null,null,1],[5,"Private",2576],[1,"unit"],[5,"PublicKey",0,2577],[1,"u8"],[1,"array"],[1,"slice"],[0,"mut"],[5,"SecretKey",0,2577],[5,"NodeAddr",0,2578],[5,"RelayUrl",0,2579],[5,"RelayMap",0,2580],[5,"RelayNode",0,2580],[6,"Ordering",2581],[1,"bool"],[1,"u16"],[1,"usize"],[6,"Result",2582,null,1],[10,"Deserializer",2583],[17,"Item"],[6,"SocketAddr",2584],[10,"Iterator",2585],[5,"Formatter",2586],[5,"Error",2586],[6,"KeyParsingError",0,2577],[5,"RelayUrlParseError",0,2579],[5,"String",2587],[5,"VerifyingKey",2588],[5,"Error",2589],[5,"DecodeError",2590],[5,"SigningKey",2591],[6,"Option",2592,null,1],[1,"tuple",null,null,1],[5,"NodeTicket",2593],[5,"NodeInfo",564],[5,"RemoteInfo",655,2594],[5,"Url",2595],[6,"ParseError",2596],[5,"Error",2597],[5,"Arc",2598,null,1],[10,"Into",2599],[10,"IntoIterator",2600],[1,"str"],[10,"CryptoRngCore",2601],[10,"Hasher",2602],[10,"Serializer",2603],[5,"Signature",2604],[10,"Error",2605],[5,"TypeId",2606],[5,"ConcurrentDiscovery",298],[10,"Discovery",298],[5,"DiscoveryItem",298],[8,"Result",2586],[5,"Box",2607,null,1],[5,"Vec",2608],[5,"BTreeSet",2609],[5,"Endpoint",655],[8,"NodeId",0,2577],[8,"Result",2597],[8,"Boxed",2610],[5,"DnsDiscovery",351],[5,"LocalSwarmDiscovery",370],[5,"PkarrPublisher",389],[5,"PkarrResolver",389],[5,"PkarrRelayClient",389],[5,"SignedPacket",2611],[8,"BoxStream",2612],[1,"u32"],[5,"Duration",2613],[5,"Builder",466],[5,"DhtDiscovery",466],[5,"PkarrClient",2614],[5,"StaticProvider",515],[8,"DnsResolver",539],[10,"ResolverExt",539],[17,"Output"],[10,"Future",2615,null,1],[1,"u64"],[6,"IpAddr",2616],[10,"IntoName",2617],[10,"Clone",2618],[8,"TokioResolver",2619],[6,"IrohAttr",564],[5,"TxtAttrs",564],[5,"BTreeMap",2620],[10,"FromStr",2621],[10,"Display",2586],[10,"Hash",2602],[10,"Ord",2581],[10,"Debug",2586],[5,"Record",2622],[5,"Accept",655],[5,"Incoming",655],[5,"Connecting",655],[6,"ConnectionError",655,2623],[5,"Connection",655,2624],[5,"AcceptBi",655,2624],[5,"AcceptUni",655,2624],[5,"ServerConfig",655,2625],[5,"AckFrequencyConfig",655,2625],[5,"VarInt",655,2626],[5,"TransportConfig",655,2625],[5,"Builder",655],[10,"FnOnce",2627],[10,"Send",2628],[10,"Sync",2628],[10,"HandshakeTokenKey",655,2629],[10,"AeadKey",655,2629],[5,"SocketAddrV4",2584],[5,"SocketAddrV6",2584],[5,"MtuDiscoveryConfig",655,2625],[10,"ControllerFactory",655,2630],[5,"Instant",2631],[10,"Controller",655,2630],[6,"SendDatagramError",655,2624],[6,"ReadToEndError",655,2632],[6,"ReadError",655,2632],[6,"ResetError",655,2632],[6,"ReadExactError",655,2632],[6,"WriteError",655,2633],[6,"StoppedError",655,2633],[5,"UdpStats",655,2634],[5,"FrameStats",655,2634],[5,"PathStats",655,2634],[5,"ConnectionStats",655,2634],[6,"ControlMsg",655,2594],[5,"DirectAddrInfo",655,2594],[5,"Written",655,2635],[6,"ConnectionType",655,2594],[5,"ClosedStream",655,2636],[6,"Source",655,2637],[5,"ConnectionClose",655,2638],[5,"ApplicationClose",655,2638],[5,"TransportError",655],[5,"TransportErrorCode",655],[5,"DirectAddr",655,2639],[6,"DirectAddrType",655,2639],[5,"StreamId",655,2640],[6,"RelayMode",655],[5,"Watcher",2444],[6,"Dir",2640],[5,"RecvStream",655,2632],[5,"SendStream",655,2633],[5,"Chunk",655,2641],[5,"ExportKeyingMaterialError",655,2629],[5,"WeakConnectionHandle",655,2624],[5,"RetryError",655,2642],[5,"CryptoError",655,2629],[5,"UnsupportedVersion",655,2629],[5,"IncomingFuture",655],[6,"ReadableError",2643],[6,"Close",2638],[5,"Unspecified",2644],[5,"InvalidFrame",2638],[6,"Error",2645],[5,"VarIntBoundsExceeded",2626],[10,"Any",2606],[10,"CryptoServerConfig",655],[5,"ConnectionId",2646],[5,"Keys",2629],[6,"Side",2640],[5,"ZeroRttAccepted",655,2624],[5,"Incoming",2642],[5,"Join2",2647],[10,"IntoFuture",2648],[5,"IdleTimeout",2625],[5,"Receiver",2649],[5,"RttEstimator",2650],[5,"OpenBi",655,2624],[5,"OpenUni",655,2624],[5,"Pin",2651],[5,"Context",2652],[6,"Poll",2653],[5,"ReadDatagram",655,2624],[5,"Error",2654],[5,"ReadBuf",2655],[1,"i32"],[5,"Race2",2656],[5,"Bytes",2657],[5,"SendDatagram",2624],[5,"TransportParameters",2645],[10,"Session",2629],[1,"f32"],[1,"u128"],[5,"CertificateDer",2658],[6,"PrivateKeyDer",2658],[6,"Error",2659],[5,"PortmapMetrics",2183],[5,"NetReportMetrics",2183],[5,"MagicsockMetrics",2183],[5,"RelayMetrics",2183],[5,"IntoIter",2660],[10,"ProtocolHandler",2359],[8,"Boxed",2661],[5,"RouterBuilder",2359],[10,"AsRef",2599],[5,"Router",2359],[5,"DnsPkarrServer",2404,2662],[5,"CleanupDropGuard",2404],[5,"Server",2663],[5,"StunConfig",2663],[5,"Chain2",2664],[10,"IntoStream",2665],[10,"Stream",2612],[5,"Watchable",2444],[5,"WatcherStream",2444],[10,"Default",2666],[5,"WatchNextFut",2444],[5,"WatchInitializedFut",2444],[5,"Disconnected",2444],[10,"Eq",2581],[5,"Merge2",2667],[6,"NotKeyed",2668],[5,"RateLimiter",2669],[5,"RatelimitedStream",2670],[10,"DirectStateStore",2668],[10,"ReasonablyRealtime",2671],[10,"RateLimitingMiddleware",2672],[5,"Jitter",2673],[5,"Zip2",2674],[15,"Discovery",2181],[15,"NamedApp",2181]],"r":[[2,655],[4,2577],[6,2578],[7,2577],[8,2577],[9,2580],[10,655],[11,2580],[12,2579],[13,2579],[14,2577],[282,2675],[283,2675],[658,2624],[659,2624],[660,2625],[661,2629],[663,2638],[670,2641],[672,2636],[676,2624],[677,2638],[679,2623],[685,2634],[686,2594],[687,2594],[688,2630],[689,2630],[690,2629],[695,2639],[696,2594],[697,2639],[703,2629],[708,2634],[709,2629],[721,2625],[726,2624],[727,2624],[729,2634],[734,2624],[735,2632],[737,2632],[738,2632],[739,2632],[743,2594],[746,2632],[747,2642],[751,2624],[752,2633],[753,2625],[754,2637],[757,2633],[758,2640],[765,2625],[770,2634],[773,2629],[774,2626],[776,2624],[777,2633],[778,2635],[779,2624],[2405,2662],[2410,2676]],"b":[[125,"impl-Debug-for-PublicKey"],[126,"impl-Display-for-PublicKey"],[127,"impl-Debug-for-KeyParsingError"],[128,"impl-Display-for-KeyParsingError"],[129,"impl-Debug-for-SecretKey"],[130,"impl-Display-for-SecretKey"],[132,"impl-Display-for-RelayUrl"],[133,"impl-Debug-for-RelayUrl"],[134,"impl-Display-for-RelayUrlParseError"],[135,"impl-Debug-for-RelayUrlParseError"],[136,"impl-Debug-for-RelayMap"],[137,"impl-Display-for-RelayMap"],[138,"impl-Display-for-RelayNode"],[139,"impl-Debug-for-RelayNode"],[143,"impl-From%3CError%3E-for-KeyParsingError"],[145,"impl-From%3CDecodeError%3E-for-KeyParsingError"],[146,"impl-From%3C%5Bu8;+32%5D%3E-for-SecretKey"],[148,"impl-From%3CSigningKey%3E-for-SecretKey"],[150,"impl-From%3CPublicKey%3E-for-NodeAddr"],[151,"impl-From%3C(PublicKey,+Option%3CRelayUrl%3E,+%26%5BSocketAddr%5D)%3E-for-NodeAddr"],[152,"impl-From%3CNodeTicket%3E-for-NodeAddr"],[153,"impl-From%3CNodeInfo%3E-for-NodeAddr"],[154,"impl-From%3CRemoteInfo%3E-for-NodeAddr"],[239,"impl-TryFrom%3C%26%5Bu8%5D%3E-for-PublicKey"],[240,"impl-TryFrom%3C%26%5Bu8;+32%5D%3E-for-PublicKey"],[602,"impl-Display-for-IrohAttr"],[603,"impl-Debug-for-IrohAttr"],[608,"impl-From%3CTxtAttrs%3CIrohAttr%3E%3E-for-NodeInfo"],[609,"impl-From%3C%26TxtAttrs%3CIrohAttr%3E%3E-for-NodeInfo"],[1385,"impl-Display-for-SendDatagramError"],[1386,"impl-Debug-for-SendDatagramError"],[1387,"impl-Display-for-RetryError"],[1388,"impl-Debug-for-RetryError"],[1390,"impl-Debug-for-ReadToEndError"],[1391,"impl-Display-for-ReadToEndError"],[1392,"impl-Debug-for-ReadError"],[1393,"impl-Display-for-ReadError"],[1394,"impl-Display-for-ResetError"],[1395,"impl-Debug-for-ResetError"],[1396,"impl-Debug-for-ReadExactError"],[1397,"impl-Display-for-ReadExactError"],[1399,"impl-Display-for-WriteError"],[1400,"impl-Debug-for-WriteError"],[1401,"impl-Debug-for-StoppedError"],[1402,"impl-Display-for-StoppedError"],[1404,"impl-Debug-for-VarInt"],[1405,"impl-Display-for-VarInt"],[1411,"impl-Debug-for-ControlMsg"],[1412,"impl-Display-for-ControlMsg"],[1416,"impl-Display-for-ConnectionType"],[1417,"impl-Debug-for-ConnectionType"],[1418,"impl-Debug-for-ClosedStream"],[1419,"impl-Display-for-ClosedStream"],[1420,"impl-Display-for-Source"],[1421,"impl-Debug-for-Source"],[1422,"impl-Display-for-ConnectionError"],[1423,"impl-Debug-for-ConnectionError"],[1430,"impl-Debug-for-ConnectionClose"],[1431,"impl-Display-for-ConnectionClose"],[1432,"impl-Display-for-ApplicationClose"],[1433,"impl-Debug-for-ApplicationClose"],[1434,"impl-Display-for-TransportError"],[1435,"impl-Debug-for-TransportError"],[1436,"impl-Display-for-TransportErrorCode"],[1437,"impl-Debug-for-TransportErrorCode"],[1439,"impl-Display-for-DirectAddrType"],[1440,"impl-Debug-for-DirectAddrType"],[1441,"impl-Display-for-StreamId"],[1442,"impl-Debug-for-StreamId"],[1470,"impl-From%3CResetError%3E-for-ReadError"],[1471,"impl-From%3CConnectionError%3E-for-ReadError"],[1472,"impl-From%3CReadableError%3E-for-ReadError"],[1478,"impl-From%3CClosedStream%3E-for-WriteError"],[1480,"impl-From%3CStoppedError%3E-for-WriteError"],[1481,"impl-From%3CConnectionError%3E-for-WriteError"],[1485,"impl-From%3Cu16%3E-for-VarInt"],[1487,"impl-From%3Cu8%3E-for-VarInt"],[1488,"impl-From%3CStreamId%3E-for-VarInt"],[1489,"impl-From%3Cu32%3E-for-VarInt"],[1502,"impl-From%3CClose%3E-for-ConnectionError"],[1503,"impl-From%3CTransportError%3E-for-ConnectionError"],[1515,"impl-From%3CTransportErrorCode%3E-for-TransportError"],[1516,"impl-From%3CInvalidFrame%3E-for-TransportError"],[1518,"impl-From%3CError%3E-for-TransportError"],[1797,"impl-RecvStream"],[1798,"impl-AsyncRead-for-RecvStream"],[1800,"impl-AsyncWrite-for-SendStream"],[1801,"impl-SendStream"],[1965,"impl-TryFrom%3Cu64%3E-for-VarInt"],[1967,"impl-TryFrom%3Cu128%3E-for-VarInt"],[1968,"impl-TryFrom%3Cusize%3E-for-VarInt"],[2499,"impl-Debug-for-Disconnected"],[2500,"impl-Display-for-Disconnected"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAPAGowADAAAACwAAABAABQAXACsARgAVAGAABwBqACIAjgAAAJAAAACSAAEAlQAAAJcAAQCaAAEAnQAAAJ8AAACmAAgAsgAJAMsAAwDWAAQA3AABAOIAJwANAQcALgEAADABCwA9AQEAQAEBAEQBAQBHAQEAUQEAAFMBAABWAQkAYwEFAGoBAABuAQQAdQEFAHwBAAB/AQYAjQEXAKYBBgCwAQUAvgEAAMABAADCAQsAzwECANUBBADdAQgA5wEDAO0BAADvAQEA9gEAAPgBAAD6AQQAAAIDAAcCBgARAgAAFAIAABYCAAAYAgMAKAIAADACAAA7AgEAPgIQAFACDgBhAgEAZAIAAGoCAQBuAgMAegIAAH4CAACBAgAAgwIMABEDIAA4AwAAOgMAAEoDaQC8AyAA3gNBACQEAwApBAMAMwQAADUEAAA6BAEAQAQKAEwEbgDEBDYA/ARnAGgFQgC4BQAAvAUAAL8FAwDEBQAAxwUAAMkFAQDMBQAAzgUAANAFAgDfBQEA5gUAAOoFAADsBQEA7wUAAPQFAAD8BSAAIwYAACUGBAAuBgAAMgY0AKUGCQC1BggA0gYAANYGAgDhBgEA5gYAAPIGAwD3BgEA+wYKAAcHAgAQBwgAMQcBAEIHBABMBwcAWgcAAFwHAQBfBwEAYgc0AJsHEgCvBwAAsgdcABAINABICDQAjAgDAJEIDwCjCAsAsggLAMIICADQCAMA1QgDAN0ICgDxCAYA+QgHAAMJCAAPCQYAFwkUAC4JCAA7CQAAPgkDAEMJCABOCQEAUgkCAFwJCABnCQMAbAkDAHIJAwB4CQEAhQkHAJMJMgDMCQIA0QkFAN4JBQDlCQYA7wkYAAkKBQAQCgAA","P":[[24,"T"],[40,""],[46,"T"],[52,""],[62,"K"],[66,""],[69,"T"],[74,""],[75,"T"],[86,"D"],[88,"__D"],[91,""],[110,"K"],[125,""],[142,"T"],[143,""],[144,"T"],[145,""],[147,"T"],[148,""],[149,"T"],[150,""],[155,"T"],[156,""],[157,"T"],[158,""],[159,"T"],[161,""],[163,"I,"],[164,""],[165,"T"],[171,""],[175,"R"],[176,""],[177,"H"],[178,"__H"],[179,""],[187,"U"],[195,""],[213,"S"],[215,"__S"],[218,""],[225,"T"],[231,""],[238,"U,T"],[239,""],[241,"U,T"],[243,""],[244,"U,T"],[249,"U"],[257,""],[268,"V"],[277,""],[278,""],[302,""],[303,"T"],[307,""],[308,"T"],[309,""],[311,"T"],[316,""],[321,"T"],[325,""],[328,"U"],[335,""],[342,"T"],[343,"U,T"],[345,"U"],[347,""],[349,"V"],[354,"T"],[358,""],[360,"T"],[361,""],[362,"U"],[363,""],[366,"U,T"],[367,"U"],[368,""],[369,"V"],[372,"T"],[376,""],[378,"T"],[379,""],[380,"U"],[381,""],[385,"U,T"],[386,"U"],[387,""],[388,"V"],[396,""],[399,"T"],[405,""],[408,"T"],[411,""],[414,"T"],[421,""],[428,"T"],[434,""],[437,"U"],[440,""],[449,"T"],[452,"U,T"],[455,"U"],[458,""],[462,"V"],[465,""],[469,"T"],[473,""],[477,"T"],[478,""],[481,"T"],[485,""],[490,"T"],[493,""],[497,"U"],[499,""],[505,"T"],[506,"U,T"],[508,"U"],[510,""],[513,"V"],[517,""],[518,"T"],[520,""],[521,"T"],[523,""],[525,"T"],[526,","],[527,""],[529,"U"],[530,""],[534,""],[535,"U,T"],[536,"U"],[537,""],[538,"V"],[541,""],[550,"N"],[563,""],[572,"T"],[579,""],[580,"T"],[581,""],[583,"K"],[584,"T"],[591,""],[596,"K"],[602,""],[605,"T"],[608,""],[610,"T"],[611,""],[613,"T"],[614,"T,"],[615,""],[616,"T"],[618,"FromStr::Err"],[619,",T"],[620,""],[621,"__H"],[622,""],[625,"U"],[628,"T"],[630,""],[631,"T"],[633,""],[636,"T"],[638,""],[639,"T"],[640,""],[642,"TryFrom::Error"],[643,"U,T"],[646,"U"],[649,""],[652,"V"],[784,""],[826,"D,F"],[827,""],[841,"T"],[947,""],[989,"T"],[1022,""],[1064,"K"],[1068,""],[1073,""],[1075,""],[1099,"T"],[1205,"__D"],[1210,""],[1301,"K"],[1381,""],[1455,"T"],[1463,""],[1464,"T"],[1467,""],[1468,"T"],[1470,""],[1474,"T"],[1475,""],[1476,"T"],[1478,""],[1479,"T"],[1480,""],[1482,"T"],[1483,""],[1484,"T"],[1485,""],[1486,"T"],[1487,""],[1490,"T"],[1502,""],[1504,"T"],[1509,""],[1510,"T"],[1513,""],[1514,"T"],[1515,""],[1517,"T"],[1518,""],[1519,"T"],[1523,""],[1524,"T"],[1564,""],[1572,"__H"],[1577,""],[1645,"U"],[1698,""],[1707,"IntoFuture::IntoFuture"],[1708,""],[1716,"F2,F1"],[1725,""],[1793,"Future::Output"],[1796,""],[1807,"T,S2,F1"],[1816,""],[1847,""],[1848,""],[1857,"__S"],[1862,""],[1889,"T"],[1922,""],[1946,"U,T"],[1965,""],[1966,"U,T"],[1967,""],[1969,"U,T"],[2002,"U"],[2055,"F"],[2063,""],[2119,"V"],[2172,""],[2200,"T"],[2210,""],[2214,"T"],[2218,""],[2229,"T"],[2241,""],[2251,"T"],[2260,""],[2264,"U"],[2268,""],[2331,"T"],[2335,"U,T"],[2339,"U"],[2343,""],[2354,"V"],[2362,""],[2364,",T"],[2365,"T"],[2369,""],[2371,"T"],[2372,""],[2373,"T"],[2377,""],[2383,"T"],[2386,""],[2388,"U"],[2390,""],[2395,"T"],[2396,"U,T"],[2398,"U"],[2400,""],[2402,"V"],[2406,"T"],[2410,""],[2411,"T"],[2415,""],[2421,"T"],[2423,""],[2425,"U"],[2429,""],[2436,"U,T"],[2438,"U"],[2440,""],[2442,"V"],[2450,""],[2453,"T"],[2465,"T,S2,S1"],[2466,"T"],[2472,""],[2475,"T"],[2488,""],[2494,"T"],[2499,""],[2501,"T"],[2512,""],[2518,"T"],[2519,"U"],[2525,""],[2527,"S"],[2528,"F2,F1"],[2530,"T,S2,S1"],[2531,"T"],[2532,"T,Future::Output"],[2534,"T,Stream::Item"],[2535,"T,S2,F1"],[2537,"D,C,MW,S"],[2539,"T"],[2545,""],[2546,"U,T"],[2552,"U"],[2558,"F"],[2560,"S"],[2561,""],[2567,"T"],[2568,"V"],[2574,"T"],[2575,"T,S2,S1"]]}],["iroh_base",{"t":"TPPPGTFIFFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNONNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPGTPFPKPNNNNNNNNNNNNNNNNNNNMNNNNNNNNNMNNNNNNNNNNO","n":["BYTE_SIZE","Decode","DecodeInvalidLength","Key","KeyParsingError","LENGTH","NodeAddr","NodeId","PublicKey","RelayUrl","RelayUrlParseError","SecretKey","Signature","as_bytes","as_ref","borrow","","","","","","","","borrow_mut","","","","","","","clone","","","","","clone_into","","","","","clone_to_uninit","","","","","cmp","","","deref","deserialize","","","","","direct_addresses","","eq","","","","fmt","","","","","","","","","","","","","","","fmt_short","from","","","","","","","","","","","","","","","","","","","","from_bytes","","","from_components","from_parts","from_slice","from_str","","","","generate","hash","","into","","","","","","","is_empty","new","node_id","partial_cmp","","","public","","r_bytes","relay_url","","s_bytes","secret","serialize","","","","","sign","source","","ticket","to_bytes","","","to_owned","","","","","to_string","","","","","","to_vec","try_from","","","","","","","","","","","try_into","","","","","","","type_id","","","","","","","verify","with_direct_addresses","with_relay_url","Encoding","Error","KIND","Kind","NodeTicket","Postcard","Ticket","Verify","borrow","","borrow_mut","","clone","clone_into","clone_to_uninit","deserialize","","eq","fmt","","","","from","","","","","from_bytes","","from_str","into","","new","node_addr","serialize","","source","to_bytes","","to_owned","to_string","","try_from","","try_into","","type_id","","expected"],"q":[[0,"iroh_base"],[181,"iroh_base::ticket"],[229,"iroh_base::ticket::Error"],[230,"iroh_base::key"],[231,"ed25519"],[232,"iroh_base::node_addr"],[233,"iroh_base::relay_url"],[234,"core::cmp"],[235,"core::result"],[236,"serde::de"],[237,"core::net::socket_addr"],[238,"core::iter::traits::iterator"],[239,"core::fmt"],[240,"alloc::string"],[241,"ed25519_dalek::signature"],[242,"ed25519_dalek::verifying"],[243,"ed25519_dalek::errors"],[244,"data_encoding"],[245,"ed25519_dalek::signing"],[246,"core::option"],[247,"iroh_base::ticket::node"],[248,"url"],[249,"url::parser"],[250,"core::iter::traits::collect"],[251,"signature::error"],[252,"rand_core"],[253,"core::hash"],[254,"serde::ser"],[255,"core::error"],[256,"alloc::vec"],[257,"core::any"],[258,"postcard::error"]],"i":"nBl00`b```````002001A`AbAdBn645321064321643216432142116432122642166664455332110046666445553332222110064362664313416453210222421436226364321350`6636432164531066644453321064532106453210422El`Ej1`1`1Db202000100002200222100020010210002020202F`","f":"`````````````{{{d{b}}}{{d{{h{f}}}}}}{{{d{b}}}{{d{{j{f}}}}}}{d{{d{c}}}{}}2000000{{{d{l}}}{{d{lc}}}{}}000000{{{d{n}}}n}{{{d{b}}}b}{{{d{A`}}}A`}{{{d{Ab}}}Ab}{{{d{Ad}}}Ad}{{d{d{lc}}}Af{}}0000{{df}Af}0000{{{d{b}}{d{b}}}Ah}{{{d{Ab}}{d{Ab}}}Ah}{{{d{Ad}}{d{Ad}}}Ah}{{{d{Ad}}}{{d{c}}}{}}{c{{Aj{n}}}Al}{c{{Aj{b}}}Al}{c{{Aj{A`}}}Al}{c{{Aj{Ab}}}Al}{c{{Aj{Ad}}}Al}{{{d{Ab}}}{{`{{Bb{}{{An{{d{B`}}}}}}}}}}`{{{d{n}}{d{n}}}Bd}{{{d{b}}{d{b}}}Bd}{{{d{Ab}}{d{Ab}}}Bd}{{{d{Ad}}{d{Ad}}}Bd}{{{d{n}}{d{lBf}}}{{Aj{AfBh}}}}000{{{d{b}}{d{lBf}}}Bj}0{{{d{Bl}}{d{lBf}}}Bj}0{{{d{A`}}{d{lBf}}}Bj}0{{{d{Ab}}{d{lBf}}}Bj}{{{d{Ad}}{d{lBf}}}Bj}0{{{d{Bn}}{d{lBf}}}Bj}0{{{d{b}}}C`}{cc{}}{{{d{{h{f}}}}}n}{{{h{f}}}n}{Cbn}3{Cdb}4{CfBl}{ChBl}{{{h{f}}}A`}7{CjA`}{{{Cn{b{Cl{Ad}}{d{{j{B`}}}}}}}Ab}{D`Ab}{DbAb};{DdAd}<{DfBn}=<{{{d{{h{f}}}}}{{Aj{bCf}}}}{{{d{{h{f}}}}}A`}{{{h{f}}{h{f}}}n}{{b{Cl{Ad}}c}Ab{{Dh{}{{An{B`}}}}}}{{{d{{j{f}}}}}{{Aj{nDj}}}}{{{d{Dl}}}{{Aj{nDj}}}}{{{d{Dl}}}{{Aj{bc}}}{}}{{{d{Dl}}}{{Aj{A`c}}}{}}{{{d{Dl}}}{{Aj{Adc}}}{}}{cA`Dn}{{{d{b}}{d{lc}}}AfE`}{{{d{Ad}}{d{lc}}}AfE`}{{}c{}}000000{{{d{Ab}}}Bd}{bAb}`{{{d{b}}{d{b}}}{{Cl{Ah}}}}{{{d{Ab}}{d{Ab}}}{{Cl{Ah}}}}{{{d{Ad}}{d{Ad}}}{{Cl{Ah}}}}{{{d{b}}}Cd}{{{d{A`}}}b}{{{d{n}}}{{d{{h{f}}}}}}{{{d{Ab}}}{{Cl{{d{Ad}}}}}}`1{{{d{A`}}}{{d{Cj}}}}{{{d{n}}c}AjEb}{{{d{b}}c}AjEb}{{{d{A`}}c}AjEb}{{{d{Ab}}c}AjEb}{{{d{Ad}}c}AjEb}{{{d{A`}}{d{{j{f}}}}}n}{{{d{Bl}}}{{Cl{{d{Ed}}}}}}{{{d{Bn}}}{{Cl{{d{Ed}}}}}}`{{{d{n}}}{{h{f}}}}0{{{d{A`}}}{{h{f}}}}{dc{}}0000{dC`}00000{{{d{n}}}{{Ef{f}}}}{c{{Aj{e}}}{}{}}{{{d{{j{f}}}}}{{Aj{nDj}}}}{{{d{{j{f}}}}}{{Aj{bc}}}{}}{{{d{{h{f}}}}}{{Aj{bc}}}{}}333{{{d{{j{f}}}}}{{Aj{A`c}}}{}}444{{}{{Aj{c}}}{}}000000{dEh}000000{{{d{b}}{d{{j{f}}}}{d{n}}}{{Aj{AfCf}}}}{{Abc}Ab{{Dh{}{{An{B`}}}}}}{{AbAd}Ab}````````{d{{d{c}}}{}}0{{{d{l}}}{{d{lc}}}{}}0{{{d{Db}}}Db}{{d{d{lc}}}Af{}}{{df}Af}{{{d{Dl}}}{{Aj{EjEl}}}}{c{{Aj{Db}}}Al}{{{d{Db}}{d{Db}}}Bd}{{{d{Db}}{d{lBf}}}Bj}0{{{d{El}}{d{lBf}}}Bj}0{cc{}}{AbDb}1{ChEl}{EnEl}{{{d{{j{f}}}}}{{Aj{EjEl}}}}{{{d{{j{f}}}}}{{Aj{DbEl}}}}{{{d{Dl}}}{{Aj{Dbc}}}{}}{{}c{}}06{{{d{Db}}}{{d{Ab}}}}{{{d{Ej}}}C`}{{{d{Db}}c}AjEb}{{{d{El}}}{{Cl{{d{Ed}}}}}}{{{d{Ej}}}{{Ef{f}}}}{{{d{Db}}}{{Ef{f}}}}{dc{}}{dC`}0{c{{Aj{e}}}{}{}}0{{}{{Aj{c}}}{}}0{dEh}0`","D":"Il","p":[[5,"PublicKey",0,230],[1,"reference",null,null,1],[1,"u8"],[1,"array"],[1,"slice"],[0,"mut"],[5,"Signature",0,231],[5,"SecretKey",0,230],[5,"NodeAddr",0,232],[5,"RelayUrl",0,233],[1,"unit"],[6,"Ordering",234],[6,"Result",235,null,1],[10,"Deserializer",236],[17,"Item"],[6,"SocketAddr",237],[10,"Iterator",238],[1,"bool"],[5,"Formatter",239],[5,"Error",239],[8,"Result",239],[6,"KeyParsingError",0,230],[5,"RelayUrlParseError",0,233],[5,"String",240],[5,"InternalSignature",241],[5,"VerifyingKey",242],[8,"SignatureError",243],[5,"DecodeError",244],[5,"SigningKey",245],[6,"Option",246,null,1],[1,"tuple",null,null,1],[8,"NodeId",0,230],[5,"NodeTicket",181,247],[5,"Url",248],[6,"ParseError",249],[10,"IntoIterator",250],[5,"Error",251],[1,"str"],[10,"CryptoRngCore",252],[10,"Hasher",253],[10,"Serializer",254],[10,"Error",255],[5,"Vec",256],[5,"TypeId",257],[10,"Ticket",181],[6,"Error",181],[6,"Error",258],[15,"Kind",229]],"r":[[4,230],[6,232],[7,230],[8,230],[9,233],[10,233],[11,230],[12,231],[185,247]],"b":[[60,"impl-Debug-for-Signature"],[61,"impl-Display-for-Signature"],[62,"impl-LowerHex-for-Signature"],[63,"impl-UpperHex-for-Signature"],[64,"impl-Display-for-PublicKey"],[65,"impl-Debug-for-PublicKey"],[66,"impl-Debug-for-KeyParsingError"],[67,"impl-Display-for-KeyParsingError"],[68,"impl-Display-for-SecretKey"],[69,"impl-Debug-for-SecretKey"],[71,"impl-Display-for-RelayUrl"],[72,"impl-Debug-for-RelayUrl"],[73,"impl-Debug-for-RelayUrlParseError"],[74,"impl-Display-for-RelayUrlParseError"],[77,"impl-From%3C%26%5Bu8;+ed25519::::SignatureBytes::%7Bconstant%230%7D%5D%3E-for-Signature"],[78,"impl-From%3C%5Bu8;+ed25519::::SignatureBytes::%7Bconstant%230%7D%5D%3E-for-Signature"],[79,"impl-From%3CInternalSignature%3E-for-Signature"],[83,"impl-From%3CError%3E-for-KeyParsingError"],[84,"impl-From%3CDecodeError%3E-for-KeyParsingError"],[85,"impl-From%3C%5Bu8;+32%5D%3E-for-SecretKey"],[87,"impl-From%3CSigningKey%3E-for-SecretKey"],[88,"impl-From%3C(PublicKey,+Option%3CRelayUrl%3E,+%26%5BSocketAddr%5D)%3E-for-NodeAddr"],[89,"impl-From%3CPublicKey%3E-for-NodeAddr"],[90,"impl-From%3CNodeTicket%3E-for-NodeAddr"],[138,"impl-SignatureEncoding-for-Signature"],[139,"impl-Signature"],[155,"impl-TryFrom%3C%26%5Bu8%5D%3E-for-PublicKey"],[156,"impl-TryFrom%3C%26%5Bu8;+32%5D%3E-for-PublicKey"],[199,"impl-Debug-for-NodeTicket"],[200,"impl-Display-for-NodeTicket"],[201,"impl-Display-for-Error"],[202,"impl-Debug-for-Error"],[206,"impl-From%3CDecodeError%3E-for-Error"],[207,"impl-From%3CError%3E-for-Error"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAJgAFgAPACcAOQASAE4AAgBSAAAAVAACAFgAAgBdAAAAXwAAAGcAAwBsAAEAeAACAIIABACIAAEAiwAAAI4ACgCaABgAvgAGAMYABQDPAAEA0gABANkAAQDcAAkA","P":[[15,"T"],[16,""],[17,"T"],[30,""],[35,"T"],[40,""],[48,"Deref::Target"],[49,"D"],[52,"__D"],[54,""],[76,"T"],[77,""],[80,"T"],[81,""],[82,"T"],[83,""],[86,"T"],[87,""],[91,"T"],[92,""],[93,"T"],[94,""],[95,"T"],[96,""],[100,""],[101,""],[103,"FromStr::Err"],[106,"R"],[107,"H"],[108,"__H"],[109,"U"],[116,""],[129,"S"],[132,"__S"],[134,""],[141,"T"],[146,""],[153,"U,T"],[154,""],[155,"TryFrom::Error"],[157,"U,T"],[160,"TryFrom::Error"],[161,"U,T"],[164,"U"],[171,""],[179,""],[180,""],[189,"T"],[193,""],[194,"T"],[195,""],[197,"D"],[198,""],[203,"T"],[204,""],[205,"T"],[206,""],[210,"FromStr::Err"],[211,"U"],[213,""],[216,"S"],[217,""],[220,"T"],[221,""],[223,"U,T"],[225,"U"],[227,""]]}],["iroh_bench",{"t":"FGGGPPPFPPPPNNNNNNNNNNNNNNNNHONNNNNNNNNNNNHNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNONNNNNCOONCOHCCNOONNNNNNNNNNNNNNNNNNNNNONNNNNOSHHHHHHSHHHHHHFNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFONNNNNNOOOONNNNNNNNNNNOONNNNNNNNNNNNNNONOOOHOOONNNNNNOONNNNNN","n":["ClientStats","Commands","ConnectionSelector","EndpointSelector","Iroh","","","Opt","Quinn","","","S2n","__clone_box","","augment_args","augment_args_for_update","augment_subcommands","augment_subcommands_for_update","borrow","","","","","borrow_mut","","","","","client_handler","clients","clone","","clone_into","","clone_to_uninit","","close","","command","","command_for_update","","configure_tracing_subscriber","default","deref","","","","","deref_mut","","","","","download_size","drop","","","","","fmt","","from","","","","","from_arg_matches","","from_arg_matches_mut","","from_ref","","group_id","has_subcommand","init","","","","","initial_mtu","into","","","","","iroh","max_streams","metrics","print","quinn","read_unordered","rt","s2n","stats","","","streams","to_owned","","try_from","","","","","try_into","","","","","type_id","","","","","update_from_arg_matches","","update_from_arg_matches_mut","","upload_size","vzip","","","","","with_relay","ALPN","client","connect_client","handle_client_stream","server","server_endpoint","transport_config","ALPN","client","connect_client","handle_client_stream","server","server_endpoint","transport_config","Opt","__clone_box","augment_args","augment_args_for_update","borrow","borrow_mut","clone","clone_into","clone_to_uninit","command","command_for_update","deref","deref_mut","drop","fmt","from","from_arg_matches","from_arg_matches_mut","from_ref","group_id","init","into","to_owned","try_from","try_into","type_id","update_from_arg_matches","update_from_arg_matches_mut","vzip","Stats","StreamStats","TransferResult","avg_chunk_size","borrow","","","borrow_mut","","","chunk_size","chunk_time","chunks","","default","","deref","","","deref_mut","","","drop","","","duration","duration_hist","fmt","","","from","","","init","","","into","","","new","print","size","stream_finished","stream_stats","streams","throughput","throughput_bps","throughput_hist","total_duration","total_size","try_from","","","try_into","","","ttfb","ttfb_hist","type_id","","","vzip","",""],"q":[[0,"iroh_bench"],[126,"iroh_bench::iroh"],[133,"iroh_bench::quinn"],[140,"iroh_bench::s2n"],[169,"iroh_bench::stats"],[233,"dyn_clone::sealed"],[234,"clap_builder::builder::command"],[235,"anyhow"],[236,"core::fmt"],[237,"clap_builder::parser::matches::arg_matches"],[238,"clap_builder"],[239,"core::result"],[240,"clap_builder::util::id"],[241,"core::option"],[242,"tokio::runtime::runtime"],[243,"core::any"],[244,"iroh_base::node_addr"],[245,"iroh_base::relay_url"],[246,"iroh::endpoint"],[247,"iroh_quinn::connection"],[248,"iroh_quinn_proto::config"],[249,"core::net::socket_addr"],[250,"rustls_pki_types"],[251,"iroh_quinn::endpoint"],[252,"core::time"]],"i":"````lnAf`21000A`00113210Ab43210`1212121432121`0432104321014321021432102121211243210143210`110`1```3112143210432104321021211432101```````````````E`000000000000000000000000000```DbEbEd2102000210102102102201021021021022121112`01110210220102102","f":"````````````{{bd}f}0{hh}000{b{{b{c}}}{}}0000{{{b{j}}}{{b{jc}}}{}}0000{{lnA`}{{Ad{Ab}}}}`{{{b{Af}}}Af}{{{b{A`}}}A`}{{b{b{jc}}}f{}}0{{bAh}f}0{l{{Ad{f}}}}{{{b{n}}Aj{b{{Al{Ah}}}}}f}{{}h}000{{}f}{{}Ab}{An{{b{c}}}{}}0000{An{{b{jc}}}{}}0000`{Anf}0000{{{b{Af}}{b{jB`}}}Bb}{{{b{A`}}{b{jB`}}}Bb}{cc{}}0000{{{b{Bd}}}{{Bh{AfBf}}}}{{{b{Bd}}}{{Bh{A`Bf}}}}{{{b{jBd}}}{{Bh{AfBf}}}}{{{b{jBd}}}{{Bh{A`Bf}}}}{{{b{c}}}c{}}0{{}{{Bl{Bj}}}}{{{b{Bn}}}C`}{{}An}0000`{{}c{}}0000```{{{b{Ab}}An}f}``{{}Cb}``{{{b{n}}}f}``{bc{}}0{c{{Bh{e}}}{}{}}0000{{}{{Bh{c}}}{}}0000{bCd}0000{{{b{jAf}}{b{Bd}}}{{Bh{fBf}}}}{{{b{jA`}}{b{Bd}}}{{Bh{fBf}}}}{{{b{jAf}}{b{jBd}}}{{Bh{fBf}}}}{{{b{jA`}}{b{jBd}}}{{Bh{fBf}}}}`{{}c{}}0000``{{Cf{Bl{Ch}}A`}{{Ad{Ab}}}}{{Cf{Bl{Ch}}A`}{{Ad{{Cn{CjCl}}}}}}{{{b{Cl}}D`C`}{{Ad{{Cn{DbDb}}}}}}{{CjA`}{{Ad{f}}}}{{{b{Cb}}{b{{Bl{Ch}}}}{b{A`}}}{{Cn{CfCj}}}}{{AnDd}Df}`{{DhDjA`}{{Ad{Ab}}}}{{DhDjA`}{{Ad{{Cn{DlCl}}}}}}5{{DlA`}{{Ad{f}}}}{{{b{Cb}}DjDn{b{A`}}}{{Cn{DhDl}}}}4`{{bd}f}{hh}0{b{{b{c}}}{}}{{{b{j}}}{{b{jc}}}{}}{{{b{E`}}}E`}{{b{b{jc}}}f{}}{{bAh}f}{{}h}0{An{{b{c}}}{}}{An{{b{jc}}}{}}{Anf}{{{b{E`}}{b{jB`}}}Bb}{cc{}}{{{b{Bd}}}{{Bh{E`Bf}}}}{{{b{jBd}}}{{Bh{E`Bf}}}}{{{b{c}}}c{}}{{}{{Bl{Bj}}}}{{}An}{{}c{}}{bc{}}{c{{Bh{e}}}{}{}}{{}{{Bh{c}}}{}}{bCd}{{{b{jE`}}{b{Bd}}}{{Bh{fBf}}}}{{{b{jE`}}{b{jBd}}}{{Bh{fBf}}}}{{}c{}}````{b{{b{c}}}{}}00{{{b{j}}}{{b{jc}}}{}}00````{{}Eb}{{}Ed}{An{{b{c}}}{}}00{An{{b{jc}}}{}}00{Anf}00``{{{b{Eb}}{b{jB`}}}Bb}{{{b{Ed}}{b{jB`}}}Bb}{{{b{Db}}{b{jB`}}}Bb}{cc{}}00{{}An}00{{}c{}}00{{EfD`EfD`}Db}{{{b{Eb}}{b{Bn}}}f}`{{{b{jEb}}Db}f}```{{EfD`}Eh}```{c{{Bh{e}}}{}{}}00{{}{{Bh{c}}}{}}00``{bCd}00{{}c{}}00","D":"Dj","p":[[1,"reference",null,null,1],[5,"Private",233],[1,"unit"],[5,"Command",234],[0,"mut"],[6,"EndpointSelector",0],[6,"ConnectionSelector",0],[5,"Opt",0],[5,"ClientStats",0],[8,"Result",235],[6,"Commands",0],[1,"u8"],[1,"u32"],[1,"slice"],[1,"usize"],[5,"Formatter",236],[8,"Result",236],[5,"ArgMatches",237],[8,"Error",238],[6,"Result",239,null,1],[5,"Id",240],[6,"Option",241,null,1],[1,"str"],[1,"bool"],[5,"Runtime",242],[5,"TypeId",243],[5,"NodeAddr",244],[5,"RelayUrl",245],[5,"Endpoint",246],[5,"Connection",247],[1,"tuple",null,null,1],[1,"u64"],[5,"TransferResult",169],[1,"u16"],[5,"TransportConfig",248],[6,"SocketAddr",249],[5,"CertificateDer",250],[5,"Endpoint",251],[6,"PrivateKeyDer",250],[5,"Opt",140],[5,"Stats",169],[5,"StreamStats",169],[5,"Duration",252],[1,"f64"]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAMQAEgAAABwAHwAXADgABgBEAAwAVwAAAFoAAQBdAAMAYwAUAHkABAB/AAAAggAAAIUAAQCJAAAAjAAPAJ0ABACjACQAywACANEAGAA=","P":[[18,"T"],[28,""],[32,"T"],[34,""],[44,"T"],[55,""],[62,"T"],[67,""],[71,"T"],[73,""],[81,"U"],[89,""],[98,"T"],[100,"U,T"],[105,"U"],[110,""],[120,"V"],[127,""],[144,"T"],[146,""],[147,"T"],[148,""],[151,"T"],[153,""],[155,"T"],[156,""],[158,"T"],[159,""],[161,"U"],[162,"T"],[163,"U,T"],[164,"U"],[165,""],[168,"V"],[173,"T"],[183,""],[185,"T"],[191,""],[199,"T"],[202,""],[205,"U"],[208,""],[219,"U,T"],[222,"U"],[227,""],[230,"V"]]}],["iroh_dns_server",{"t":"FNNNNNNCCNNNNCNNNCNNNCCNNNNNNGFPPFFFNOONNNNNNNNNNNNNNNNNNNNNNNNOOONNNNNNNNNNNOONNNNNNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNOFFFFNNNNONNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNOOOOONNNNNNNNNNNNNNNNNNNNNNNNGPFFFPPGPPPNNNNOONNNNNNNNNNONNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNOOOOOONNNOOOOHNNNOOOOOONNNNNFNNNNNHNNNNNNFNNNNNNONNNONNNNN","n":["ZoneStore","__clone_box","borrow","borrow_mut","clone","clone_into","clone_to_uninit","config","dns","fmt","from","from_ref","get_signed_packet","http","in_memory","insert","into","metrics","new","persistent","resolve","server","state","to_owned","try_from","try_into","type_id","vzip","with_mainline_fallback","BootstrapOption","Config","Custom","Default","MainlineConfig","MetricsConfig","StoreConfig","__clone_box","bind_addr","bootstrap","borrow","","","","","borrow_mut","","","","","clone","clone_into","clone_to_uninit","data_dir","default","","","","deserialize","","","","","disabled","","dns","enabled","fmt","","","","","from","","","","","from_ref","http","https","into","","","","","load","mainline","metrics","pkarr_put_rate_limit","serialize","","","","","signed_packet_store_path","to_owned","try_from","","","","","try_into","","","","","type_id","","","","","vzip","","","","","zone_store","DnsConfig","DnsHandler","DnsServer","Handle","__clone_box","","","answer_request","bind_addr","borrow","","","","borrow_mut","","","","clone","","","clone_into","","","clone_to_uninit","","","default_soa","default_ttl","deserialize","fmt","","","from","","","","from_ref","","","handle_request","into","","","","local_addr","new","origins","port","rr_a","rr_aaaa","rr_ns","run_until_done","send_response","serialize","shutdown","spawn","to_owned","","","try_from","","","","try_into","","","","type_id","","","","vzip","","","","CertMode","Disabled","HttpConfig","HttpServer","HttpsConfig","LetsEncrypt","Manual","RateLimitConfig","SelfSigned","Simple","Smart","__clone_box","","","","bind_addr","","borrow","","","","","borrow_mut","","","","","cert_mode","clone","","","","clone_into","","","","clone_to_uninit","","","","default","","deserialize","","","","domains","eq","equivalent","","","fmt","","","","","from","","","","","from_ref","","","","http_addr","https_addr","into","","","","","letsencrypt_contact","letsencrypt_prod","port","","run_until_done","serialize","","","","shutdown","spawn","to_owned","","","","to_string","try_from","","","","","try_into","","","","","type_id","","","","","vzip","","","","","Metrics","__clone_box","borrow","borrow_mut","clone","clone_into","clone_to_uninit","default","dns_lookup_error","dns_lookup_notfound","dns_lookup_success","dns_requests","dns_requests_https","dns_requests_udp","fmt","from","from_ref","http_requests","http_requests_duration_ms","http_requests_error","http_requests_success","init_metrics","into","iter","name","pkarr_publish_noop","pkarr_publish_update","store_packets_expired","store_packets_inserted","store_packets_removed","store_packets_updated","to_owned","try_from","try_into","type_id","vzip","Server","borrow","borrow_mut","from","into","run_until_error","run_with_config_until_ctrl_c","shutdown","spawn","try_from","try_into","type_id","vzip","AppState","__clone_box","borrow","borrow_mut","clone","clone_into","clone_to_uninit","dns_handler","from","from_ref","into","store","to_owned","try_from","try_into","type_id","vzip"],"q":[[0,"iroh_dns_server"],[29,"iroh_dns_server::config"],[116,"iroh_dns_server::dns"],[191,"iroh_dns_server::http"],[299,"iroh_dns_server::metrics"],[335,"iroh_dns_server::server"],[348,"iroh_dns_server::state"],[365,"dyn_clone::sealed"],[366,"iroh_dns_server::store"],[367,"core::fmt"],[368,"pkarr::signed_packet"],[369,"core::option"],[370,"anyhow"],[371,"std::path"],[372,"core::convert"],[373,"hickory_proto::rr::domain::name"],[374,"hickory_proto::rr::record_type"],[375,"hickory_proto::rr::rr_set"],[376,"alloc::sync"],[377,"core::result"],[378,"core::any"],[379,"serde::de"],[380,"serde::ser"],[381,"hickory_server::server::request_handler"],[382,"bytes::bytes"],[383,"core::future::future"],[384,"alloc::boxed"],[385,"core::pin"],[386,"hickory_server::server::response_handler"],[387,"core::net::socket_addr"],[388,"hickory_server::authority::message_response"],[389,"hickory_proto::rr::resource"],[390,"core::iter::traits::iterator"],[391,"core::marker"],[392,"iroh_dns_server::http::rate_limiting"],[393,"iroh_dns_server::http::tls"],[394,"alloc::string"],[395,"alloc::vec::into_iter"]],"i":"`j00000``0000`000`000``000000``Bj0```BlCfCbC`3214032143330031403214220103214032143000321400000321403032140321403214032140````D`CjDb12Dl32103213213213213333210321321203210233333013003210321032103210321`Ej```El0`01110EnF`10Fd432104321143214321432144432113333433210432143210004321112104321004321304321043210432104321`Fj0000000000000000000`00000000000000`Gd0000`000000`Ff000000000000000","f":"`{{bd}f}{b{{b{c}}}{}}{{{b{h}}}{{b{hc}}}{}}{{{b{j}}}j}{{b{b{hc}}}f{}}{{bl}f}``{{{b{j}}{b{hn}}}A`}{cc{}}{{{b{c}}}c{}}{{{b{j}}{b{`}}}{{Af{{Ad{Ab}}}}}}```{{}c{}}```{{{b{j}}{b{`}}{b{An}}B`}{{Af{{Ad{{Bd{Bb}}}}}}}}``{bc{}}{c{{Bf{e}}}{}{}}{{}{{Bf{c}}}{}}{bBh}{{}c{}}{{jBj}j}```````{{bd}f}``{b{{b{c}}}{}}0000{{{b{h}}}{{b{hc}}}{}}0000{{{b{Bl}}}Bl}{{b{b{hc}}}f{}}{{bl}f}{{}{{Af{Bn}}}}{{}C`}{{}Bl}{{}Cb}{{}Bj}{c{{Bf{C`}}}Cd}{c{{Bf{Bl}}}Cd}{c{{Bf{Cf}}}Cd}{c{{Bf{Cb}}}Cd}{c{{Bf{Bj}}}Cd}{{}Cf}```{{{b{C`}}{b{hn}}}A`}{{{b{Bl}}{b{hn}}}A`}{{{b{Cf}}{b{hn}}}A`}{{{b{Cb}}{b{hn}}}A`}{{{b{Bj}}{b{hn}}}A`}{cc{}}0000{{{b{c}}}c{}}``{{}c{}}0000{c{{Af{C`}}}{{Al{Aj}}}}```{{{b{C`}}c}BfCh}{{{b{Bl}}c}BfCh}{{{b{Cf}}c}BfCh}{{{b{Cb}}c}BfCh}{{{b{Bj}}c}BfCh}{{}{{Af{Bn}}}}{bc{}}{c{{Bf{e}}}{}{}}0000{{}{{Bf{c}}}{}}0000{bBh}0000{{}c{}}0000`````{{bd}f}00{{{b{Cj}}Cl}{{Af{Cn}}}}`{b{{b{c}}}{}}000{{{b{h}}}{{b{hc}}}{}}000{{{b{D`}}}D`}{{{b{Cj}}}Cj}{{{b{Db}}}Db}{{b{b{hc}}}f{}}00{{bl}f}00``{c{{Bf{D`}}}Cd}{{{b{D`}}{b{hn}}}A`}{{{b{Cj}}{b{hn}}}A`}{{{b{Db}}{b{hn}}}A`}{cc{}}000{{{b{c}}}c{}}00{{{b{Cj}}{b{Cl}}c}{{Dh{{Df{Dd}}}}}Dj}{{}c{}}000{{{b{Dl}}}Dn}{{j{b{D`}}}{{Af{Cj}}}}`````{Dl{{Af{f}}}}{{{b{hDb}}{E`{cegi}}}{{Dh{{Df{Dd}}}}}{{Ef{}{{Eb{{b{Ed}}}}}}Eh}{{Ef{}{{Eb{{b{Ed}}}}}}Eh}{{Ef{}{{Eb{{b{Ed}}}}}}Eh}{{Ef{}{{Eb{{b{Ed}}}}}}Eh}}{{{b{D`}}c}BfCh}2{{D`Cj}{{Af{Dl}}}}{bc{}}00{c{{Bf{e}}}{}{}}000{{}{{Bf{c}}}{}}000{bBh}000{{}c{}}000```````````{{bd}f}000``{b{{b{c}}}{}}0000{{{b{h}}}{{b{hc}}}{}}0000`{{{b{Ej}}}Ej}{{{b{El}}}El}{{{b{En}}}En}{{{b{F`}}}F`}{{b{b{hc}}}f{}}000{{bl}f}000{{}{{b{Ej}}}}{{}Ej}{c{{Bf{Ej}}}Cd}{c{{Bf{El}}}Cd}{c{{Bf{En}}}Cd}{c{{Bf{F`}}}Cd}`{{{b{El}}{b{El}}}Ah}{{b{b{c}}}Ah{}}00{{{b{Ej}}{b{hn}}}A`}{{{b{El}}{b{hn}}}A`}{{{b{El}}{b{hn}}}{{Bf{fFb}}}}{{{b{En}}{b{hn}}}A`}{{{b{F`}}{b{hn}}}A`}{cc{}}0000{{{b{c}}}c{}}000{{{b{Fd}}}{{Ad{Dn}}}}0{{}c{}}0000````{Fd{{Af{f}}}}{{{b{Ej}}c}BfCh}{{{b{El}}c}BfCh}{{{b{En}}c}BfCh}{{{b{F`}}c}BfCh}4{{{Ad{En}}{Ad{F`}}EjFf}{{Af{Fd}}}}{bc{}}000{bFh}{c{{Bf{e}}}{}{}}0000{{}{{Bf{c}}}{}}0000{bBh}0000{{}c{}}0000`{{bd}f}{b{{b{c}}}{}}{{{b{h}}}{{b{hc}}}{}}{{{b{Fj}}}Fj}{{b{b{hc}}}f{}}{{bl}f}{{}Fj}``````{{{b{Fj}}{b{hn}}}A`}{cc{}}{{{b{c}}}c{}}````{{}f}{{}c{}}{{{b{Fj}}}{{Gb{{G`{{b{Fl}}{b{Fn}}}}}}}}{{}{{b{Fl}}}}``````{bc{}}{c{{Bf{e}}}{}{}}{{}{{Bf{c}}}{}}{bBh}{{}c{}}`{b{{b{c}}}{}}{{{b{h}}}{{b{hc}}}{}}<9{Gd{{Af{f}}}}{C`{{Af{f}}}}1{{C`j}{{Af{Gd}}}}8765`{{bd}f}54{{{b{Ff}}}Ff}{{b{b{hc}}}f{}}{{bl}f}`{cc{}}{{{b{c}}}c{}}{{}c{}}`{bc{}}{c{{Bf{e}}}{}{}}{{}{{Bf{c}}}{}}{bBh}{{}c{}}","D":"Oj","p":[[1,"reference",null,null,1],[5,"Private",365],[1,"unit"],[0,"mut"],[5,"ZoneStore",0,366],[1,"u8"],[5,"Formatter",367],[8,"Result",367],[5,"SignedPacket",368],[6,"Option",369,null,1],[8,"Result",370],[1,"bool"],[5,"Path",371],[10,"AsRef",372],[5,"Name",373],[6,"RecordType",374],[5,"RecordSet",375],[5,"Arc",376,null,1],[6,"Result",377,null,1],[5,"TypeId",378],[6,"BootstrapOption",29],[5,"StoreConfig",29],[5,"PathBuf",371],[5,"Config",29],[5,"MainlineConfig",29],[10,"Deserializer",379],[5,"MetricsConfig",29],[10,"Serializer",380],[5,"DnsHandler",116],[5,"Request",381],[5,"Bytes",382],[5,"DnsConfig",116],[5,"Handle",116],[10,"Future",383,null,1],[5,"Box",384,null,1],[5,"Pin",385],[10,"ResponseHandler",386],[5,"DnsServer",116],[6,"SocketAddr",387],[5,"MessageResponse",388],[17,"Item"],[5,"Record",389],[10,"Iterator",390],[10,"Send",391],[6,"RateLimitConfig",191,392],[6,"CertMode",191,393],[5,"HttpConfig",191],[5,"HttpsConfig",191],[5,"Error",367],[5,"HttpServer",191],[5,"AppState",348],[5,"String",394],[5,"Metrics",299],[1,"str"],[10,"Any",378],[1,"tuple",null,null,1],[5,"IntoIter",395],[5,"Server",335]],"r":[[0,366],[191,393],[198,392]],"b":[[231,"impl-Default-for-%26RateLimitConfig"],[232,"impl-Default-for-RateLimitConfig"],[243,"impl-Debug-for-CertMode"],[244,"impl-Display-for-CertMode"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAPAAIAACAAUACgAAAAwAAAAYAAQAJQAAACgADAA2AAgAQwAEAE0AAABZAAQAXwAUAHkAAgB+ABAAkQADAJkAAwCpAAEArQASAMsAAwDRAAkA3AARAO8ACAD9AAMADQEDABMBGAAtAQ0APAEEAEMBDABRAQEAWQEDAF4BBQBmAQAAaQEEAA==","P":[[2,"T"],[4,""],[5,"T"],[6,""],[10,"T"],[12,""],[16,"U"],[18,""],[19,""],[20,""],[23,"T"],[24,"U,T"],[25,"U"],[26,""],[27,"V"],[28,""],[39,"T"],[49,""],[50,"T"],[51,""],[57,"__D"],[62,""],[71,"T"],[79,"U"],[84,""],[88,"__S"],[93,""],[94,"T"],[95,"U,T"],[100,"U"],[105,""],[110,"V"],[120,""],[125,"T"],[133,""],[136,"T"],[139,""],[144,"__D"],[145,""],[148,"T"],[155,"R"],[156,"U"],[160,""],[168,",,,"],[169,"__S"],[170,""],[172,"T"],[175,"U,T"],[179,"U"],[183,""],[187,"V"],[202,""],[208,"T"],[219,""],[223,"T"],[227,""],[233,"__D"],[238,""],[239,"K"],[242,""],[247,"T"],[256,""],[258,"U"],[267,""],[268,"__S"],[272,""],[274,"T"],[278,""],[279,"U,T"],[284,"U"],[289,""],[294,"V"],[300,""],[301,"T"],[303,""],[304,"T"],[305,""],[314,"T"],[320,""],[321,"U"],[322,""],[330,"T"],[331,"U,T"],[332,"U"],[333,""],[334,"V"],[336,"T"],[339,"U"],[340,""],[344,"U,T"],[345,"U"],[346,""],[347,"V"],[349,""],[350,"T"],[352,""],[353,"T"],[354,""],[356,"T"],[358,"U"],[360,"T"],[361,"U,T"],[362,"U"],[363,""],[364,"V"]]}],["iroh_net_report",{"t":"FFFFFFFNHNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNOOONNNOONNNNNNNNNNNNNNOOOOOONNOONNHOOONNOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNN","n":["Addr","Client","Metrics","Options","QuicConfig","RelayLatencies","Report","addr","bind_local_stun_socket","borrow","","","","","","","borrow_mut","","","","","","","captive_portal","client_config","clone","","","","","clone_into","","","","","clone_to_uninit","","","","","default","","","","deref","","","","","","","deref_mut","","","","","","","disabled","drop","","","","","","","ep","eq","","equivalent","","","","","","fmt","","","","","","","","from","","","","","","","get_report","get_report_channel","get_report_with_opts","global_v4","global_v6","hair_pinning","https","icmp_v4","icmp_v6","icmpv4","icmpv6","init","","","","","","","into","","","","","","","ipv4","","ipv4_can_send","ipv6","","ipv6_can_send","iter","","mapping_varies_by_dest_ip","mapping_varies_by_dest_ipv6","name","new","os_has_ipv6","","portmap_probe","preferred_relay","quic_config","receive_stun_packet","relay_latency","relay_v4_latency","relay_v6_latency","reports","reports_full","stun_packets_dropped","stun_packets_recv_ipv4","stun_packets_recv_ipv6","stun_packets_sent_ipv4","stun_packets_sent_ipv6","stun_v4","stun_v6","to_owned","","","","","to_string","try_from","","","","","","","try_into","","","","","","","type_id","","","","","","","udp","vzip","","","","","",""],"q":[[0,"iroh_net_report"],[180,"netwatch::ip_family"],[181,"tokio_util::sync::cancellation_token"],[182,"netwatch::udp"],[183,"alloc::sync"],[184,"core::option"],[185,"iroh_net_report::metrics"],[186,"iroh_net_report::reportgen"],[187,"core::fmt"],[188,"iroh_relay::relay_map"],[189,"anyhow"],[190,"tokio::sync::oneshot"],[191,"core::any"],[192,"alloc::vec::into_iter"],[193,"iroh_base::relay_url"],[194,"core::time"],[195,"core::iter::traits::iterator"],[196,"portmapper"],[197,"hickory_resolver::resolver"],[198,"bytes::bytes"],[199,"core::net::socket_addr"],[200,"alloc::string"],[201,"core::result"],[202,"iroh_net_report::stun_utils"]],"i":"```````b`AdAfAhAj4B`f543261034543205432054320532154326105432610154326104323332225433261054326106663331113354326105432610433433523356`3331033355555551154320354326105432610543261035432610","f":"```````{{{d{b}}}f}{{hfj}{{A`{{n{l}}}}}}{d{{d{c}}}{}}000000{{{d{Ab}}}{{d{Abc}}}{}}000000``{{{d{Ad}}}Ad}{{{d{Af}}}Af}{{{d{Ah}}}Ah}{{{d{Aj}}}Aj}{{{d{f}}}f}{{d{d{Abc}}}Al{}}0000{{dAn}Al}0000{{}Ad}{{}Ah}{{}Aj}{{}B`}{Bb{{d{c}}}{}}000000{Bb{{d{Abc}}}{}}0000002{BbAl}000000`{{{d{Ah}}{d{Ah}}}Bd}{{{d{Aj}}{d{Aj}}}Bd}{{d{d{c}}}Bd{}}00000{{{d{Ad}}{d{AbBf}}}Bh}{{{d{Af}}{d{AbBf}}}Bh}{{{d{Ah}}{d{AbBf}}}Bh}0{{{d{Aj}}{d{AbBf}}}Bh}{{{d{b}}{d{AbBf}}}Bh}{{{d{B`}}{d{AbBf}}}Bh}{{{d{f}}{d{AbBf}}}Bh}{cc{}}000000{{{d{Abb}}Bj{A`{{n{l}}}}{A`{{n{l}}}}{A`{Af}}}{{Bl{{n{Ah}}}}}}{{{d{Abb}}BjB`}{{Bl{{Bn{{Bl{{n{Ah}}}}}}}}}}{{{d{Abb}}BjB`}{{Bl{{n{Ah}}}}}}```{{B`Bd}B`}00``{{}Bb}000000{{}c{}}000000``````{{{d{Ad}}}{{Cf{{Cd{{d{C`}}{d{Cb}}}}}}}}{{{d{Aj}}}{{`{{Cn{}{{Ch{{Cd{{d{Cj}}Cl}}}}}}}}}}``{{}{{d{C`}}}}{{{A`{D`}}Db}{{Bl{b}}}}{{}Bd}```{{B`{A`{Af}}}B`}{{{d{f}}DdDf}Al}``````````{{B`{A`{{n{l}}}}}B`}0{dc{}}0000{dDh}{c{{Dj{e}}}{}{}}000000{{}{{Dj{c}}}{}}000000{dDl}000000`{{}c{}}000000","D":"Gj","p":[[5,"Client",0],[1,"reference",null,null,1],[5,"Addr",0],[6,"IpFamily",180],[5,"CancellationToken",181],[5,"UdpSocket",182],[5,"Arc",183,null,1],[6,"Option",184,null,1],[0,"mut"],[5,"Metrics",0,185],[5,"QuicConfig",0,186],[5,"Report",0],[5,"RelayLatencies",0],[1,"unit"],[1,"u8"],[5,"Options",0],[1,"usize"],[1,"bool"],[5,"Formatter",187],[8,"Result",187],[5,"RelayMap",188],[8,"Result",189],[5,"Receiver",190],[1,"str"],[10,"Any",191],[1,"tuple",null,null,1],[5,"IntoIter",192],[17,"Item"],[5,"RelayUrl",193],[5,"Duration",194],[10,"Iterator",195],[5,"Client",196],[8,"TokioResolver",197],[5,"Bytes",198],[6,"SocketAddr",199],[5,"String",200],[6,"Result",201,null,1],[5,"TypeId",191]],"r":[[2,185],[4,186],[8,202]],"b":[[77,"impl-Display-for-Report"],[78,"impl-Debug-for-Report"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAHcACgAKAA0AGgAgADwABgBEAA8AZgAGAHoAAAB+AAAAiQAGAJIAGgCuAAYA","P":[[9,"T"],[25,""],[30,"T"],[35,""],[44,"T"],[58,""],[69,"K"],[75,""],[83,"T"],[90,""],[108,"U"],[121,""],[145,"T"],[150,""],[151,"U,T"],[158,"U"],[165,""],[173,"V"]]}],["iroh_relay",{"t":"EFFFNNNNNNCNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNOCCONNCOONNNNNNNNNNNNNNONNNNPPFFGPPPPPPPPPPPPPPPPPPGPPPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOSSSSSSGSSPPNNNNNNNNNNNNNNNNNNNNNNNCCCSHSPGPPPPPPPPGFPPPPPPPPPPPGFPFPPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNCHHNHHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNSSSSSSFNNNNNNNNNNNNNNNGFSPFPGFPFFPFFFFFPFOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNOOOONONNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOONNNNNNNNNNNNNONNNNNNNNNNNNNONNNNNNNNNNNNNONONNONNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNOOOONNOOONNNNNONOOONONOOOOOONNNONNCONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNOOOHHHHHH","n":["MAX_PACKET_SIZE","RelayMap","RelayNode","RelayQuicConfig","borrow","","","borrow_mut","","","client","clone","","","clone_into","","","clone_to_uninit","","","cmp","","compare","","contains_node","default","default_from_node","defaults","deref","","","deref_mut","","","deserialize","","drop","","","empty","eq","","","equivalent","","","","","","","","","fmt","","","","","from","","","from_nodes","from_url","get_node","http","init","","","into","","","is_empty","len","nodes","partial_cmp","","port","protos","quic","","serialize","","server","stun_only","stun_port","to_owned","","","to_string","","try_from","","","try_into","","","type_id","","","url","urls","vzip","","","ActorGone","Build","Client","ClientBuilder","ClientError","Closed","ConnectTimeout","DialIO","Dns","Health","Http","Hyper","IPDisabled","InvalidUrl","KeepAlive","NoLocalAddr","NodeGone","Ping","PingAborted","PingTimeout","Pong","Proxy","Receive","ReceivedMessage","ReceivedPacket","Send","ServerRestarting","UnexpectedStatusCode","Upgrade","WebsocketError","address_family_selector","borrow","","","","borrow_mut","","","","build","clone","clone_into","clone_to_uninit","close","connect","deref","","","","deref_mut","","","","drop","","","","finish_ping","fmt","","","","","from","","","","","","","","init","","","","insecure_skip_cert_verify","into","","","","is_connected","is_prober","key_cache_capacity","local_addr","make_dangerous_client_config","new","note_preferred","protocol","proxy_url","recv","send","send_pong","server_public_key","server_url","source","start_ping","to_owned","to_string","try_from","","","","try_into","","","","type_id","","","","vzip","","","","data","problem","reconnect_in","remote_node_id","try_for","DEFAULT_HTTPS_PORT","DEFAULT_HTTP_PORT","DEFAULT_KEY_CACHE_CAPACITY","DEFAULT_METRICS_PORT","DEFAULT_RELAY_QUIC_PORT","DEFAULT_STUN_PORT","Protocol","RELAY_PATH","RELAY_PROBE_PATH","Relay","Websocket","borrow","borrow_mut","clone","clone_into","clone_to_uninit","deref","deref_mut","drop","eq","equivalent","","","fmt","from","init","into","parse_header","to_owned","try_from","try_into","type_id","upgrade_header","vzip","disco","relay","stun","MAGIC","looks_like_disco_wrapper","MAX_PACKET_SIZE","AlternateServer","Error","ErrorCode","ErrorResponse","Fingerprint","Indication","InvalidFingerprint","InvalidMessage","MalformedAttrs","MappedAddress","MessageClass","MessageDecoder","MessageIntegrity","MessageIntegritySha256","NoFingerprint","Nonce","NotBinding","NotSuccessResponse","PasswordAlgorithm","PasswordAlgorithms","Realm","Request","Software","StunAttribute","StunDecodeError","SuccessResponse","TransactionId","Unknown","UnknownAttributes","UserHash","UserName","XorMappedAddress","as_alternate_server","as_bytes","as_error_code","as_fingerprint","as_mapped_address","as_message_integrity","as_message_integrity_sha256","as_nonce","as_password_algorithm","as_password_algorithms","as_realm","as_ref","as_software","as_unknown","as_unknown_attributes","as_user_hash","as_user_name","as_xor_mapped_address","attribute_type","borrow","","","","","","borrow_mut","","","","","","clone","","","","clone_into","","","","clone_to_uninit","","","","cmp","compare","decode","default","","deref","","","","","","","deref_mut","","","","","","drop","","","","","","eq","","equivalent","","","","","","expect_alternate_server","expect_error_code","expect_fingerprint","expect_mapped_address","expect_message_integrity","expect_message_integrity_sha256","expect_nonce","expect_password_algorithm","expect_password_algorithms","expect_realm","expect_software","expect_unknown","expect_unknown_attributes","expect_user_hash","expect_user_name","expect_xor_mapped_address","fmt","","","","","","","","","from","","","","","","","","","","","","","","","","","","","","","","","","get_context","hash","init","","","","","","into","","","","","","is","is_alternate_server","is_error_code","is_fingerprint","is_mapped_address","is_message_integrity","is_message_integrity_sha256","is_nonce","is_password_algorithm","is_password_algorithms","is_realm","is_software","is_unknown","is_unknown_attributes","is_user_hash","is_user_name","is_xor_mapped_address","methods","parse_binding_request","parse_response","partial_cmp","request","response","to_owned","","","","to_string","","","try_from","","","","","","","try_into","","","","","","type_id","","","","","","vzip","","","","","","BINDING","RESERVED","SHARED_SECRET","ALPN_QUIC_ADDR_DISC","QUIC_ADDR_DISC_CLOSE_CODE","QUIC_ADDR_DISC_CLOSE_REASON","QuicClient","borrow","borrow_mut","deref","deref_mut","drop","fmt","from","get_addr_and_latency","init","into","new","try_from","try_into","type_id","vzip","CertConfig","ClientConnRateLimit","DEFAULT_CERT_RELOAD_INTERVAL","LetsEncrypt","Limits","Manual","MaybeTlsStreamServer","Metrics","Plain","QuicConfig","RelayConfig","Reloading","ReloadingResolver","Server","ServerConfig","StunConfig","StunMetrics","Tls","TlsConfig","accept_conn_burst","accept_conn_limit","accepts","bad_requests","bind_addr","","borrow","","","","","","","","","","","","","borrow_mut","","","","","","","","","","","","","bytes_per_second","bytes_recv","bytes_sent","cert","certificates","client_rx","clone","","","clone_into","","","clone_to_uninit","","","conns_rx_ratelimited_total","default","","","","deref","","","","","","","","","","","","","","deref_mut","","","","","","","","","","","","","disco_packets_dropped","disco_packets_recv","disco_packets_sent","disconnects","drop","","","","","","","","","","","","","failures","fmt","","","","","","","","","","","","","frames_rx_ratelimited_total","from","","","","","","","","","","","","","got_ping","http_addr","http_bind_addr","http_url","https_addr","https_bind_addr","https_url","init","","","","","","","","","","","","","","into","","","","","","","","","","","","","ipv4_success","ipv6_success","iter","","key_cache_capacity","limits","max_burst_bytes","metrics_addr","name","","other_packets_dropped","other_packets_recv","other_packets_sent","poll_flush","poll_read","poll_shutdown","poll_write","poll_write_vectored","quic","quic_addr","quic_bind_addr","relay","relay_accepts","reload","requests","resolve","send_packets_dropped","send_packets_recv","send_packets_sent","sent_pong","server_config","","shutdown","","spawn","stun","stun_addr","task_handle","testing","tls","to_owned","","","try_from","","","","","","","","","","","","","try_into","","","","","","","","","","","","","type_id","","","","","","","","","","","","","unique_client_keys","unknown_frames","vzip","","","","","","","","","","","","","websocket_accepts","certs","state","quic_config","relay_config","self_signed_tls_certs_and_config","server_config","stun_config","tls_config"],"q":[[0,"iroh_relay"],[103,"iroh_relay::client"],[217,"iroh_relay::client::ReceivedMessage"],[222,"iroh_relay::defaults"],[228,"iroh_relay::http"],[256,"iroh_relay::protos"],[259,"iroh_relay::protos::disco"],[261,"iroh_relay::protos::relay"],[262,"iroh_relay::protos::stun"],[487,"iroh_relay::protos::stun::methods"],[490,"iroh_relay::quic"],[509,"iroh_relay::server"],[784,"iroh_relay::server::CertConfig"],[786,"iroh_relay::server::testing"],[792,"iroh_relay::relay_map"],[793,"core::cmp"],[794,"iroh_base::relay_url"],[795,"core::result"],[796,"serde::de"],[797,"core::fmt"],[798,"anyhow"],[799,"alloc::sync"],[800,"core::convert"],[801,"core::iter::traits::collect"],[802,"core::option"],[803,"core::iter::traits::iterator"],[804,"serde::ser"],[805,"alloc::string"],[806,"core::any"],[807,"core::ops::function"],[808,"core::marker"],[809,"iroh_base::key"],[810,"hickory_resolver::resolver"],[811,"iroh_relay::client::conn"],[812,"hyper::error"],[813,"http::error"],[814,"tokio_tungstenite_wasm::error"],[815,"std::io::error"],[816,"core::net::socket_addr"],[817,"rustls::client::client_conn"],[818,"url"],[819,"bytes::bytes"],[820,"core::error"],[821,"core::time"],[822,"core::future::future"],[823,"http::header::value"],[824,"stun_rs::attributes"],[825,"stun_rs::attributes::stun::alternate_server"],[826,"stun_rs::error"],[827,"stun_rs::types"],[828,"stun_rs::attributes::stun::error_code"],[829,"stun_rs::attributes::stun::fingerprint"],[830,"stun_rs::attributes::stun::mapped_address"],[831,"stun_rs::attributes::stun::message_integrity"],[832,"stun_rs::attributes::stun::message_integrity_sha256"],[833,"stun_rs::attributes::stun::nonce"],[834,"stun_rs::attributes::stun::password_algorithm"],[835,"stun_rs::attributes::stun::password_algorithms"],[836,"stun_rs::attributes::stun::realm"],[837,"stun_rs::attributes::stun::software"],[838,"stun_rs::attributes::unknown"],[839,"stun_rs::attributes::stun::unknown_attributes"],[840,"stun_rs::attributes::stun::user_hash"],[841,"stun_rs::attributes::stun::user_name"],[842,"stun_rs::attributes::stun::xor_mapped_address"],[843,"stun_rs::context"],[844,"stun_rs::message"],[845,"core::hash"],[846,"alloc::vec"],[847,"iroh_quinn::endpoint"],[848,"rustls_pki_types"],[849,"iroh_relay::server::metrics"],[850,"core::default"],[851,"iroh_relay::server::resolver"],[852,"rustls::crypto::signer"],[853,"reloadable_core"],[854,"alloc::vec::into_iter"],[855,"core::pin"],[856,"core::task::wake"],[857,"core::task::poll"],[858,"tokio::io::read_buf"],[859,"std::io"],[860,"rustls::server::server_conn"],[861,"tokio_util::task::abort_on_drop"],[862,"stun_rs"],[863,"stun_rs::methods"]],"i":"````fhj210`2102102101010202`21021010210221022211100022110210222`210210222100``110`112102121021021012210Dh0```0000Df1111010011011`010111Cf12Dd12301122200230123012301023301233333012301123010110`10110001130232301230123012301NjNlNn20`````````Eh000000000000000000000000``````Fn`0Ih10Jb002``22020022212``1`222222Gd33333333303333333If3142In14253014251425142522112142253014253014253042444222555555555555555514225330014222555555555555555553012142530142530`5555555555555555```2``14252301442530142530142530142530```````Jj00000000000000```Ll`0``Lb``1`````0`Kn0KbKdLfLh32L`6KhLd43Lj8Kf;Jn985;43762:1<019920:9819819819984:9855;43762:1<0985;43762:1<09999985;43762:1<08985;43762:1<09985;43762:1<090300209855;43762:1<0985;43762:1<08898331498999;;;;;40249585999962500400`3981985;43762:1<0985;43762:1<0985;43762:1<099985;43762:1<09O`Ob``````","f":"````{b{{b{c}}}{}}00{{{b{d}}}{{b{dc}}}{}}00`{{{b{f}}}f}{{{b{h}}}h}{{{b{j}}}j}{{b{b{dc}}}l{}}00{{bn}l}00{{{b{h}}{b{h}}}A`}{{{b{j}}{b{j}}}A`}{{b{b{c}}}A`{}}0{{{b{f}}{b{Ab}}}Ad}{{}j}{{AbAf}f}`{Ah{{b{c}}}{}}00{Ah{{b{dc}}}{}}00{c{{Aj{h}}}Al}{c{{Aj{j}}}Al}{Ahl}00{{}f}{{{b{f}}{b{f}}}Ad}{{{b{h}}{b{h}}}Ad}{{{b{j}}{b{j}}}Ad}{{b{b{c}}}Ad{}}00000000{{{b{f}}{b{dAn}}}B`}0{{{b{h}}{b{dAn}}}B`}0{{{b{j}}{b{dAn}}}B`}{cc{}}00{e{{Bb{f}}}{{Bf{{Bd{h}}}}}{{Bj{}{{Bh{c}}}}}}{Abf}{{{b{f}}{b{Ab}}}{{Bl{{b{{Bd{h}}}}}}}}`{{}Ah}00{{}c{}}00{{{b{f}}}Ad}{{{b{f}}}Ah}{{{b{f}}}{{`{{Bn{}{{Bh{{b{{Bd{h}}}}}}}}}}}}{{{b{h}}{b{h}}}{{Bl{A`}}}}{{{b{j}}{b{j}}}{{Bl{A`}}}}````{{{b{h}}c}AjC`}{{{b{j}}c}AjC`}```{bc{}}00{bCb}0{c{{Aj{e}}}{}{}}00{{}{{Aj{c}}}{}}00{bCd}00`{{{b{f}}}{{`{{Bn{}{{Bh{{b{Ab}}}}}}}}}}{{}c{}}00``````````````````````````````{{Cfc}Cf{{Cj{}{{Ch{Ad}}}}ClCn}}{b{{b{c}}}{}}000{{{b{d}}}{{b{dc}}}{}}000{{CfD`Db}Dd}{{{b{Df}}}Df}{{b{b{dc}}}l{}}{{bn}l}{Ddl}{{{b{dDd}}}{{Aj{lDh}}}}{Ah{{b{c}}}{}}000{Ah{{b{dc}}}{}}000{Ahl}000{{{b{dDd}}{Dj{n}}}l}{{{b{Df}}{b{dAn}}}B`}{{{b{Dh}}{b{dAn}}}B`}0{{{b{Dd}}{b{dAn}}}B`}{{{b{Cf}}{b{dAn}}}B`}{cc{}}{DlDh}{DnDh}{E`Dh}3{EbDh}44{{}Ah}000{{CfAd}Cf}{{}c{}}000{{{b{Dd}}}Ad}2{{CfAh}Cf}{{{b{Dd}}}{{Bl{Ed}}}}{{}Ef}{cCf{{Bf{Ab}}}}{{{b{dDd}}Ad}l}{{CfEh}Cf}{{CfEj}Cf}{{{b{dDd}}}{{Bl{{Aj{DfDh}}}}}}{{{b{dDd}}ElEn}{{Aj{lDh}}}}{{{b{dDd}}{Dj{n}}}{{Aj{lDh}}}}{{CfF`}Cf}{{Cfc}Cf{{Bf{Ab}}}}{{{b{Dh}}}{{Bl{{b{Fb}}}}}}{{{b{dDd}}}{{Aj{{`{{Ff{}{{Ch{{Aj{FdDh}}}}}}ClCn}}Dh}}}}{bc{}}{bCb}{c{{Aj{e}}}{}{}}000{{}{{Aj{c}}}{}}000{bCd}000{{}c{}}000````````````````{b{{b{c}}}{}}{{{b{d}}}{{b{dc}}}{}}{{{b{Eh}}}Eh}{{b{b{dc}}}l{}}{{bn}l}{Ah{{b{c}}}{}}{Ah{{b{dc}}}{}}{Ahl}{{{b{Eh}}{b{Eh}}}Ad}{{b{b{c}}}Ad{}}00{{{b{Eh}}{b{dAn}}}B`}{cc{}}{{}Ah}{{}c{}}{{{b{Fh}}}{{Bl{Eh}}}}{bc{}}{c{{Aj{e}}}{}{}}{{}{{Aj{c}}}{}}{bCd}{{{b{Eh}}}{{b{Fj}}}}{{}c{}}````{{{b{{Fl{n}}}}}Ad}`````````````````````````````````{{{b{Fn}}}{{Aj{{b{G`}}Gb}}}}{{{b{Gd}}}{{b{{Dj{n}}}}}}{{{b{Fn}}}{{Aj{{b{Gf}}Gb}}}}{{{b{Fn}}}{{Aj{{b{Gh}}Gb}}}}{{{b{Fn}}}{{Aj{{b{Gj}}Gb}}}}{{{b{Fn}}}{{Aj{{b{Gl}}Gb}}}}{{{b{Fn}}}{{Aj{{b{Gn}}Gb}}}}{{{b{Fn}}}{{Aj{{b{H`}}Gb}}}}{{{b{Fn}}}{{Aj{{b{Hb}}Gb}}}}{{{b{Fn}}}{{Aj{{b{Hd}}Gb}}}}{{{b{Fn}}}{{Aj{{b{Hf}}Gb}}}}{{{b{Gd}}}{{b{{Fl{n}}}}}}{{{b{Fn}}}{{Aj{{b{Hh}}Gb}}}}{{{b{Fn}}}{{Aj{{b{Hj}}Gb}}}}{{{b{Fn}}}{{Aj{{b{Hl}}Gb}}}}{{{b{Fn}}}{{Aj{{b{Hn}}Gb}}}}{{{b{Fn}}}{{Aj{{b{I`}}Gb}}}}{{{b{Fn}}}{{Aj{{b{Ib}}Gb}}}}{{{b{Fn}}}Id}{b{{b{c}}}{}}00000{{{b{d}}}{{b{dc}}}{}}00000{{{b{If}}}If}{{{b{Ih}}}Ih}{{{b{Gd}}}Gd}{{{b{Fn}}}Fn}{{b{b{dc}}}l{}}000{{bn}l}000{{{b{Gd}}{b{Gd}}}A`}{{b{b{c}}}A`{}}{{{b{If}}{b{{Fl{n}}}}}{{Aj{{Il{IjAh}}In}}}}{{}If}{{}Gd}{Ah{{b{c}}}{}}0{{{b{Gd}}}{{b{{Fl{n}}}}}}1111{Ah{{b{dc}}}{}}00000{Ahl}00000{{{b{Ih}}{b{Ih}}}Ad}{{{b{Gd}}{b{Gd}}}Ad}{{b{b{c}}}Ad{}}00000{{{b{Fn}}}{{b{G`}}}}{{{b{Fn}}}{{b{Gf}}}}{{{b{Fn}}}{{b{Gh}}}}{{{b{Fn}}}{{b{Gj}}}}{{{b{Fn}}}{{b{Gl}}}}{{{b{Fn}}}{{b{Gn}}}}{{{b{Fn}}}{{b{H`}}}}{{{b{Fn}}}{{b{Hb}}}}{{{b{Fn}}}{{b{Hd}}}}{{{b{Fn}}}{{b{Hf}}}}{{{b{Fn}}}{{b{Hh}}}}{{{b{Fn}}}{{b{Hj}}}}{{{b{Fn}}}{{b{Hl}}}}{{{b{Fn}}}{{b{Hn}}}}{{{b{Fn}}}{{b{I`}}}}{{{b{Fn}}}{{b{Ib}}}}{{{b{If}}{b{dAn}}}{{Aj{lJ`}}}}{{{b{Ih}}{b{dAn}}}{{Aj{lJ`}}}}{{{b{Gd}}{b{dAn}}}{{Aj{lJ`}}}}0{{{b{Fn}}{b{dAn}}}{{Aj{lJ`}}}}{{{b{Jb}}{b{dAn}}}B`}0{{{b{In}}{b{dAn}}}{{Aj{lJ`}}}}0{cc{}}0{{{b{{Dj{n}}}}}Gd}{{{Dj{n}}}Gd}2{HfFn}3{H`Fn}{HbFn}{GnFn}{HjFn}{GlFn}{HdFn}{I`Fn}{HnFn}{GhFn}{HhFn}{G`Fn}{GjFn}{HlFn}{IbFn}{GfFn}{cc{}}0{{{b{If}}}{{Bl{{b{Jd}}}}}}{{{b{Gd}}{b{dc}}}lJf}{{}Ah}00000{{}c{}}00000{{{b{{Fl{n}}}}}Ad}{{{b{Fn}}}Ad}000000000000000`{{{b{{Fl{n}}}}}{{Aj{GdJb}}}}{{{b{{Fl{n}}}}}{{Aj{{Il{GdEd}}Jb}}}}{{{b{Gd}}{b{Gd}}}{{Bl{A`}}}}{Gd{{Jh{n}}}}{{GdEd}{{Jh{n}}}}{bc{}}000{bCb}00{c{{Aj{e}}}{}{}}{n{{Aj{Ih}}}}11111{{}{{Aj{c}}}{}}00000{bCd}00000{{}c{}}00000```````{b{{b{c}}}{}}{{{b{d}}}{{b{dc}}}{}}{Ah{{b{c}}}{}}{Ah{{b{dc}}}{}}{Ahl}{{{b{Jj}}{b{dAn}}}B`}{cc{}}{{{b{Jj}}Ed{b{Fj}}}{{Bb{{Il{EdFd}}}}}}{{}Ah}{{}c{}}{{JlEf}{{Bb{Jj}}}}?=<;`````````````````````````:::::::::::::9999999999999````{{{b{Jn}}}{{Bl{{Jh{K`}}}}}}`{{{b{Kb}}}Kb}{{{b{Kd}}}Kd}{{{b{Kf}}}Kf}{{b{b{dc}}}l{}}00{{bn}l}00`{{}Kb}{{}Kd}{{}{{Kh{ce}}}{KjKl}{KjKl}}{{}Kn}{Ah{{b{c}}}{}}00{{{b{{L`{c}}}}}{{b{e}}}Cl{}}1111111111{Ah{{b{dc}}}{}}000000000000````{Ahl}000000000000`{{{b{Kb}}{b{dAn}}}B`}{{{b{Kd}}{b{dAn}}}B`}{{{b{{L`{c}}}}{b{dAn}}}B`{KlCl}}{{{b{Lb}}{b{dAn}}}B`}{{{b{{Kh{ce}}}}{b{dAn}}}B`KlKl}{{{b{{Ld{ce}}}}{b{dAn}}}B`KlKl}{{{b{Lf}}{b{dAn}}}B`}{{{b{Lh}}{b{dAn}}}B`}{{{b{{Lj{ce}}}}{b{dAn}}}B`KlKl}{{{b{Kn}}{b{dAn}}}B`}{{{b{Kf}}{b{dAn}}}B`}{{{b{{Ll{ce}}}}{b{dAn}}}B`KlKl}{{{b{Jn}}{b{dAn}}}B`}`{cc{}}000000000000`{{{b{Jn}}}{{Bl{Ed}}}}`{{{b{Jn}}}{{Bl{Ab}}}}1`0{{}Ah}00{{cFd}{{Bb{{L`{c}}}}}{Cl{Mb{}{{Ln{M`}}}}}}1111111111{{}c{}}000000000000``{{{b{Kb}}}{{Mf{{Il{{b{Fj}}{b{Md}}}}}}}}{{{b{Kd}}}{{Mf{{Il{{b{Fj}}{b{Md}}}}}}}}````{{}{{b{Fj}}}}0```{{{Mh{{b{dLb}}}}{b{dMj}}}{{Ml{{Aj{lEb}}}}}}{{{Mh{{b{dLb}}}}{b{dMj}}{b{dMn}}}{{Ml{{N`{l}}}}}}1{{{Mh{{b{dLb}}}}{b{dMj}}{b{{Fl{n}}}}}{{Ml{{Aj{AhEb}}}}}}{{{Mh{{b{dLb}}}}{b{dMj}}{b{{Fl{Nb}}}}}{{Ml{{Aj{AhEb}}}}}}`;```{{{b{{L`{c}}}}}l{Cl{Mb{}{{Ln{M`}}}}}}`{{{b{{L`{c}}}}Nd}{{Bl{{Bd{M`}}}}}{{Mb{}{{Ln{M`}}}}ClKl}}``````{{{L`{c}}}l{Cl{Mb{}{{Ln{M`}}}}}}{Jn{{Bb{l}}}}{{{Kh{ce}}}{{Bb{Jn}}}KlKl}`{{{b{Jn}}}{{Bl{Ed}}}}{{{b{dJn}}}{{b{d{Nf{{Bb{l}}}}}}}}``{bc{}}00{c{{Aj{e}}}{}{}}000000000000{{}{{Aj{c}}}{}}000000000000{bCd}000000000000``{{}c{}}000000000000```{{}Lh}{{}{{Ld{l}}}}{{}{{Il{{Jh{K`}}Nh}}}}{{}{{Kh{l}}}}{{}Lf}{{}{{Lj{l}}}}","D":"BJn","p":[[1,"reference",null,null,1],[0,"mut"],[5,"RelayMap",0,792],[5,"RelayNode",0,792],[5,"RelayQuicConfig",0,792],[1,"unit"],[1,"u8"],[6,"Ordering",793],[5,"RelayUrl",794],[1,"bool"],[1,"u16"],[1,"usize"],[6,"Result",795,null,1],[10,"Deserializer",796],[5,"Formatter",797],[8,"Result",797],[8,"Result",798],[5,"Arc",799,null,1],[10,"Into",800],[17,"Item"],[10,"IntoIterator",801],[6,"Option",802,null,1],[10,"Iterator",803],[10,"Serializer",804],[5,"String",805],[5,"TypeId",806],[5,"ClientBuilder",103],[17,"Output"],[10,"Fn",807],[10,"Send",808],[10,"Sync",808],[5,"SecretKey",809],[8,"TokioResolver",810],[5,"Client",103],[6,"ReceivedMessage",103,811],[6,"ClientError",103],[1,"array"],[5,"Error",812],[5,"Error",813],[6,"Error",814],[5,"Error",815],[6,"SocketAddr",816],[5,"ClientConfig",817],[6,"Protocol",228],[5,"Url",818],[8,"NodeId",809],[5,"Bytes",819],[5,"PublicKey",809],[10,"Error",820],[5,"Duration",821],[10,"Future",822,null,1],[5,"HeaderValue",823],[1,"str"],[1,"slice"],[6,"StunAttribute",262,824],[5,"AlternateServer",825],[5,"StunError",826],[5,"TransactionId",262,827],[5,"ErrorCode",828],[6,"Fingerprint",829],[5,"MappedAddress",830],[6,"MessageIntegrity",831],[6,"MessageIntegritySha256",832],[5,"Nonce",833],[5,"PasswordAlgorithm",834],[5,"PasswordAlgorithms",835],[5,"Realm",836],[5,"Software",837],[5,"Unknown",838],[5,"UnknownAttributes",839],[5,"UserHash",840],[5,"UserName",841],[5,"XorMappedAddress",842],[5,"AttributeType",824],[5,"MessageDecoder",262,843],[6,"MessageClass",262,844],[5,"StunMessage",844],[1,"tuple",null,null,1],[5,"StunDecodeError",262,826],[5,"Error",797],[6,"Error",262],[5,"DecoderContext",843],[10,"Hasher",845],[5,"Vec",846],[5,"QuicClient",490],[5,"Endpoint",847],[5,"Server",509],[5,"CertificateDer",848],[5,"Metrics",509,849],[5,"StunMetrics",509,849],[5,"ClientConnRateLimit",509],[5,"ServerConfig",509],[10,"Default",850],[10,"Debug",797],[5,"Limits",509],[5,"ReloadingResolver",509,851],[6,"MaybeTlsStreamServer",509],[5,"RelayConfig",509],[5,"StunConfig",509],[5,"QuicConfig",509],[5,"TlsConfig",509],[6,"CertConfig",509],[17,"Value"],[5,"CertifiedKey",852],[10,"Loader",853],[10,"Any",806],[5,"IntoIter",854],[5,"Pin",855],[5,"Context",856],[6,"Poll",857],[5,"ReadBuf",858],[8,"Result",815],[5,"IoSlice",859],[5,"ClientHello",860],[5,"AbortOnDropHandle",861],[5,"ServerConfig",860],[15,"ReceivedPacket",217],[15,"Health",217],[15,"ServerRestarting",217],[15,"Manual",784],[15,"LetsEncrypt",784]],"r":[[0,261],[1,792],[2,792],[3,792],[126,811],[272,844],[273,843],[285,824],[286,826],[288,827],[449,862],[487,863],[488,863],[489,863],[511,851],[516,849],[521,851],[525,849]],"b":[[52,"impl-Display-for-RelayMap"],[53,"impl-Debug-for-RelayMap"],[54,"impl-Display-for-RelayNode"],[55,"impl-Debug-for-RelayNode"],[162,"impl-Debug-for-ClientError"],[163,"impl-Display-for-ClientError"],[167,"impl-From%3CError%3E-for-ClientError"],[168,"impl-From%3CError%3E-for-ClientError"],[169,"impl-From%3CError%3E-for-ClientError"],[171,"impl-From%3CError%3E-for-ClientError"],[387,"impl-Display-for-TransactionId"],[388,"impl-Debug-for-TransactionId"],[390,"impl-Display-for-Error"],[391,"impl-Debug-for-Error"],[392,"impl-Debug-for-StunDecodeError"],[393,"impl-Display-for-StunDecodeError"],[396,"impl-From%3C%26%5Bu8;+stun_rs::::types::%7Bimpl%2313%7D::%7Bconstant%230%7D%5D%3E-for-TransactionId"],[397,"impl-From%3C%5Bu8;+stun_rs::::types::%7Bimpl%2314%7D::%7Bconstant%230%7D%5D%3E-for-TransactionId"],[399,"impl-From%3CRealm%3E-for-StunAttribute"],[401,"impl-From%3CNonce%3E-for-StunAttribute"],[402,"impl-From%3CPasswordAlgorithm%3E-for-StunAttribute"],[403,"impl-From%3CMessageIntegritySha256%3E-for-StunAttribute"],[404,"impl-From%3CUnknown%3E-for-StunAttribute"],[405,"impl-From%3CMessageIntegrity%3E-for-StunAttribute"],[406,"impl-From%3CPasswordAlgorithms%3E-for-StunAttribute"],[407,"impl-From%3CUserName%3E-for-StunAttribute"],[408,"impl-From%3CUserHash%3E-for-StunAttribute"],[409,"impl-From%3CFingerprint%3E-for-StunAttribute"],[410,"impl-From%3CSoftware%3E-for-StunAttribute"],[411,"impl-From%3CAlternateServer%3E-for-StunAttribute"],[412,"impl-From%3CMappedAddress%3E-for-StunAttribute"],[413,"impl-From%3CUnknownAttributes%3E-for-StunAttribute"],[414,"impl-From%3CXorMappedAddress%3E-for-StunAttribute"],[415,"impl-From%3CErrorCode%3E-for-StunAttribute"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAMEBMwABAAAABQAFAAwADAAaAAAAHQAKACkAEABBAAIASgABAFAAAQBVAA0AZQACAIcABwCQAAIAlQALAKIABACoAAIArAAAAK8AAwDGAAAAyAARAOoADAD4AAAA+wADAAABAAAyAQAAOgEZAFUBAABXARoAggEIAI0BAQCQAQAAkgEOAKQBBgDFAQAAyAEfAO8BBQD3AQAA+gEDABcCGQA3AggAQQIeAGQCDAByAgwAlAICAJgCCQCxAgEAtwIBALwCBADIAgAA1wIpAAMDDAA=","P":[[4,"T"],[11,""],[14,"T"],[17,""],[22,"K"],[24,""],[28,"T"],[34,"__D"],[36,""],[43,"K"],[52,""],[57,"T"],[60,"I,"],[61,""],[67,"U"],[70,""],[79,"__S"],[84,"T"],[87,""],[89,"U,T"],[92,"U"],[95,""],[100,"V"],[133,"S"],[134,"T"],[142,""],[144,"T"],[145,""],[148,"T"],[156,""],[166,"T"],[167,""],[170,"T"],[171,""],[172,"T"],[174,""],[179,"U"],[183,""],[188,""],[189,""],[196,""],[197,""],[199,"T"],[200,""],[201,"U,T"],[205,"U"],[209,""],[213,"V"],[233,"T"],[235,""],[236,"T"],[237,""],[238,"T"],[240,""],[242,"K"],[245,""],[246,"T"],[247,""],[248,"U"],[249,""],[250,"T"],[251,"U,T"],[252,"U"],[253,""],[255,"V"],[260,""],[313,"T"],[325,""],[329,"T"],[333,""],[338,"K"],[339,""],[342,"T"],[344,""],[345,"T"],[355,""],[363,"K"],[369,""],[394,"T"],[396,""],[398,"T"],[399,""],[400,"T"],[401,""],[416,"T"],[418,""],[419,"__H"],[420,""],[426,"U"],[432,""],[455,"T"],[459,""],[462,"U,T"],[463,""],[464,"U,T"],[469,"U"],[475,""],[481,"V"],[494,"T"],[498,""],[500,"T"],[501,""],[503,"U"],[504,""],[505,"U,T"],[506,"U"],[507,""],[508,"V"],[534,"T"],[564,""],[569,"T"],[572,""],[578,"EC,EA"],[579,""],[580,"T"],[583,"Loader,Deref::Target"],[584,"T"],[611,""],[627,"Loader"],[628,""],[629,"EC,EA"],[631,""],[633,"EC,EA"],[634,""],[636,"EC,EA"],[637,""],[639,"T"],[653,""],[662,"Loader"],[663,""],[673,"U"],[688,""],[709,"Loader"],[719,""],[720,"EC,EA"],[722,""],[726,"T"],[729,"U,T"],[742,"U"],[755,""],[770,"V"],[786,""]]}],["iroh_test",{"t":"FQNNNNCNCNNNNHHHHH","n":["CallOnDrop","assert_eq_hex","borrow","borrow_mut","drop","from","hexdump","into","logging","new","try_from","try_into","type_id","parse_hexdump","print_hexdump","setup","setup_multithreaded","testing_subscriber"],"q":[[0,"iroh_test"],[13,"iroh_test::hexdump"],[15,"iroh_test::logging"],[18,"core::ops::function"],[19,"core::result"],[20,"core::any"],[21,"alloc::vec"],[22,"anyhow"],[23,"alloc::string"],[24,"core::convert"],[25,"tracing_core::dispatcher"],[26,"tracing_core::subscriber"]],"i":"``f000`0`0000`````","f":"``{b{{b{c}}}{}}{{{b{d}}}{{b{dc}}}{}}{{{b{df}}}h}{cc{}}`{{}c{}}`{cfj}{c{{l{e}}}{}{}}{{}{{l{c}}}{}}{bn}{{{b{A`}}}{{Af{{Ad{Ab}}}}}}{{ce}Ah{{Al{{Aj{Ab}}}}}{{Al{{Aj{An}}}}}}{{}B`}{{}h}{{}{{`{Bb}}}}","D":"Ad","p":[[1,"reference",null,null,1],[0,"mut"],[5,"CallOnDrop",0],[1,"unit"],[10,"FnOnce",18],[6,"Result",19,null,1],[5,"TypeId",20],[1,"str"],[1,"u8"],[5,"Vec",21],[8,"Result",22],[5,"String",23],[1,"slice"],[10,"AsRef",24],[1,"usize"],[5,"DefaultGuard",25],[10,"Subscriber",26]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAAgABAABAAAAAwACAAcAAAAKAAMA","P":[[2,"T"],[4,""],[5,"T"],[7,"U"],[9,""],[10,"U,T"],[11,"U"],[12,""],[14,","],[15,""]]}]]'));
if (typeof exports !== 'undefined') exports.searchIndex = searchIndex;
else if (window.initSearch) window.initSearch(searchIndex);
-//{"start":39,"fragment_lengths":[500,60604,8260,6205,9917,4330,22447,1211]}
\ No newline at end of file
+//{"start":39,"fragment_lengths":[500,60604,8260,6205,9917,4330,22405,1211]}
\ No newline at end of file
diff --git a/pr/3069/docs/search.desc/iroh_relay/iroh_relay-desc-0-.js b/pr/3069/docs/search.desc/iroh_relay/iroh_relay-desc-0-.js
index dbb0c58333..6c9aa4ae36 100644
--- a/pr/3069/docs/search.desc/iroh_relay/iroh_relay-desc-0-.js
+++ b/pr/3069/docs/search.desc/iroh_relay/iroh_relay-desc-0-.js
@@ -1 +1 @@
-searchState.loadedDescShard("iroh_relay", 0, "Iroh’s relay is a feature within iroh, a peer-to-peer …\nConfiguration of all the relay servers that can be used.\nInformation on a specific relay server.\nConfiguration for speaking to the QUIC endpoint on the …\nExposes Client
, which allows to establish connections to a …\nIs this a known node?\nCreates a new RelayMap
with a single relay server …\nDefault values used in the relay.\nCreate an empty relay map.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nConstructs the RelayMap
from an iterator of RelayNode
s.\nReturns a RelayMap
from a RelayUrl
.\nGet the given node.\nHTTP-specific constants for the relay server and client.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nAre there any nodes in this map?\nHow many nodes are known?\nReturns an Iterator
over all known nodes.\nThe port on which the connection should be bound to.\nProtocols used by the iroh-relay\nCreate a QUIC server that accepts connections for QUIC …\nConfiguration to speak to the QUIC endpoint on the relay …\nA fully-fledged iroh-relay server over HTTP or HTTPS.\nWhether this relay server should only be used for STUN …\nThe stun port of the relay server.\nThe RelayUrl
where this relay server can be dialed.\nReturns the sorted relay URLs.\nThe inner actor is gone, likely means things are shutdown.\nThe relay super::client::Client
failed to build\nAn HTTP Relay client.\nBuild a Client.\nPossible connection errors on the Client
\nThe client is closed\nThere was a connection timeout error\nThere was an error dialing\nThere was an error with DNS resolution\nA one-way message from server to client, declaring the …\nThere was an http error http::Error
.\nThere was http server hyper::Error
\nBoth IPv4 and IPv6 are disabled for this relay node\nThe given Url
is invalid\nA one-way empty message from server to client, just to …\nNo local addresses exist\nIndicates that the client identified by the underlying …\nRequest from a client or server to reply to the other side …\nThe ping request was aborted\nThe ping request timed out\nReply to a ReceivedMessage::Ping
from a client or server …\nThe connection failed to proxy\nThere was an error receiving a packet\nThe messages received from a framed relay stream.\nRepresents an incoming packet.\nThere was an error sending a packet\nA one-way message from server to client, advertising that …\nThere was an unexpected status code\nThe connection failed to upgrade\nAn error related to websockets, either errors with parsing …\nReturns if we should prefer ipv6 it replaces the …\nBuild the Client
\nClose the http relay connection.\nDisconnect the http relay connection.\nConnects to a relay Server and returns the underlying …\nFinish a ping message\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nSkip the verification of the relay server’s SSL …\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nReturns true
if the underlying relay connection is …\nIndicates this client is a prober\nSet the capacity of the cache for public keys.\nGet the local addr of the connection. If there is no …\nCreates a client config that trusts any servers without …\nCreate a new ClientBuilder
\nLet the server know that this client is the preferred …\nSets whether to connect to the relay via websockets or not.\nSet an explicit proxy url to proxy all HTTP(S) traffic …\nThe public key for this client\nReads a message from the server.\nSend a packet to the server.\nSend a pong back to the server.\nThe expected PublicKey
of the relay server we are …\nSets the server url\nSend a ping to the server. Return once we get an expected …\nThe received packet bytes.\nIf set, is a description of why the connection is …\nAn advisory duration that the client should wait before …\nThe NodeId
of the packet sender.\nAn advisory duration for how long the client should …\nThe default HTTPS port used by the Relay server.\nThe default HTTP port used by the Relay server.\nThe default capacity of the key cache for the relay server.\nThe default metrics port used by the Relay server.\nThe default QUIC port used by the Relay server to accept …\nThe default STUN port used by the Relay server.\nThe HTTP upgrade protocol used for relaying.\nThe HTTP path under which the relay accepts relaying …\nThe HTTP path under which the relay allows doing latency …\nRelays over the custom relaying protocol with a custom …\nRelays over websockets.\nReturns the argument unchanged.\nCalls U::from(self)
.\nTries to match the value of an HTTP upgrade header to …\nThe HTTP upgrade header used or expected.\nThis module exports looks_like_disco_wrapper
as the only …\nThis module implements the relaying protocol used by the …\nSTUN packets sending and receiving.\nThe 6 byte header of all discovery messages.\nReports whether p looks like it’s a packet containing an …\nThe maximum size of a packet sent over relay. (This only …\nThe AlternateServer
atribute\nErrors that can occur when handling a STUN packet.\nThe ErrorCode
atribute\nerror response\nThe Fingerprint
atribute\nindication\nSTUN request had bogus fingerprint.\nThe STUN message could not be parsed or is otherwise …\nSTUN response has malformed attributes.\nThe MappedAddress
atribute\nThe STUN message class. Although there are four message …\nClass used to decode STUN messages\nThe MessageIntegrity
atribute\nThe MessageIntegritySha256
atribute\nSTUN request didn’t end in fingerprint.\nThe Nonce
atribute\nSTUN request is not a binding request when it should be.\nSTUN packet is not a response when it should be.\nThe PasswordAlgorithm
atribute\nThe PasswordAlgorithms
atribute\nThe Realm
atribute\nrequest\nThe Software
atribute\nSTUN Attributes that can be attached to a StunMessage
\nDescribes an error decoding a StunMessage
\nsuccess response\nThe transaction ID is a 96-bit identifier, used to …\nThe Unknown
atribute\nThe UnknownAttributes
atribute\nThe UserHash
atribute\nThe UserName
atribute\nThe XorMappedAddress
atribute\nReturns a reference to the internal attribute value or an …\nReturns a reference to the bytes that represents the …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns the STUN attribute type of this instance.\nDecodes the STUN raw buffer\nCreates a cryptographically random transaction ID chosen …\nReturns a reference to the AlternateServer
attribute.\nReturns a reference to the ErrorCode
attribute.\nReturns a reference to the Fingerprint
attribute.\nReturns a reference to the MappedAddress
attribute.\nReturns a reference to the MessageIntegrity
attribute.\nReturns a reference to the MessageIntegritySha256
…\nReturns a reference to the Nonce
attribute.\nReturns a reference to the PasswordAlgorithm
attribute.\nReturns a reference to the PasswordAlgorithms
attribute.\nReturns a reference to the Realm
attribute.\nReturns a reference to the Software
attribute.\nReturns a reference to the Unknown
attribute.\nReturns a reference to the UnknownAttributes
attribute.\nReturns a reference to the UserHash
attribute.\nReturns a reference to the UserName
attribute.\nReturns a reference to the XorMappedAddress
attribute.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nGets the context associated to this decoder\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nReports whether b is a STUN message.\nReturns true if this StunAttribute
is AlternateServer
\nReturns true if this StunAttribute
is ErrorCode
\nReturns true if this StunAttribute
is Fingerprint
\nReturns true if this StunAttribute
is MappedAddress
\nReturns true if this StunAttribute
is MessageIntegrity
\nReturns true if this StunAttribute
is …\nReturns true if this StunAttribute
is Nonce
\nReturns true if this StunAttribute
is PasswordAlgorithm
\nReturns true if this StunAttribute
is PasswordAlgorithms
\nReturns true if this StunAttribute
is Realm
\nReturns true if this StunAttribute
is Software
\nReturns true if this StunAttribute
is Unknown
\nReturns true if this StunAttribute
is UnknownAttributes
\nReturns true if this StunAttribute
is UserHash
\nReturns true if this StunAttribute
is UserName
\nReturns true if this StunAttribute
is XorMappedAddress
\nSTUN Methods Registry\nParses a STUN binding request.\nParses a successful binding response STUN packet. The IP …\nGenerates a binding request STUN packet.\nGenerates a binding response.\nBinding\nReserved\nShared secret\nALPN for our quic addr discovery\nEndpoint close error code\nEndpoint close reason\nHandles the client side of QUIC address discovery.\nReturns the argument unchanged.\nClient side of QUIC address discovery.\nCalls U::from(self)
.\nCreate a new QuicClient to handle the client side of QUIC …\nTLS certificate configuration.\nPer-client rate limit configuration.\nThe default certificate reload interval.\nUse Let’s Encrypt.\nRate limits.\nUse a static TLS key and certificate chain.\nThe main underlying IO stream type used for the relay …\nMetrics tracked for the relay server\nA plain non-Tls tokio::net::TcpStream
\nConfiguration for the QUIC server.\nConfiguration for the Relay HTTP and HTTPS server.\nUse a TLS key and certificate chain that can be reloaded.\nA Certificate resolver that reloads the certificate every …\nA running Relay + STUN server.\nConfiguration for the full Relay & STUN server.\nConfiguration for the STUN server.\nStunMetrics tracked for the relay server\nA Tls wrapped tokio::net::TcpStream
\nTLS configuration for Relay server.\nBurst limit for accepting new connection. Unlimited if not …\nRate limit for accepting new connection. Unlimited if not …\nNumber of connections we have accepted\nNumber of bad requests, either non-stun packets or …\nThe socket address on which the STUN server should bind.\nThe socket address on which the QUIC server should bind.\nMax number of bytes per second to read from the client …\nBytes received from a FrameType::SendPacket
\nBytes sent from a FrameType::SendPacket
\nMode for getting a cert.\nThe certificates chain if configured with manual TLS …\nRate limits for incoming traffic from a client connection.\nNumber of client connections which have had any frames …\nFrameType::SendPacket
dropped that are disco messages\nFrameType::SendPacket
received that are disco messages\nFrameType::SendPacket
sent that are disco messages\nNumber of connections we have removed because of an error\nNumber of failures\nNumber of frames received from client connection which …\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nNumber of FrameType::Ping
s received\nThe socket address the HTTP server is listening on.\nThe socket address on which the Relay HTTP server should …\nGet the server’s http RelayUrl
.\nThe socket address the HTTPS server is listening on.\nThe socket address on which to serve the HTTPS server.\nGet the server’s https RelayUrl
.\nPerform the initial load and construct the …\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nNumber of successful requests over ipv4\nNumber of successful requests over ipv6\nKey cache capacity.\nRate limits.\nMax number of bytes to read in a single burst.\nSocket to serve metrics on.\nPackets of other FrameType
s dropped\nPackets of other FrameType
s received\nPackets of other FrameType
s sent\nConfiguration for the QUIC server, disabled if None
.\nThe socket address the QUIC server is listening on.\nThe socket address on which to server the QUIC server is …\nConfiguration for the Relay server, disabled if None
.\nNumber of accepted ‘iroh derp http’ connection upgrades\nReload the certificate.\nNumber of stun requests made\nFrameType::SendPacket
dropped, that are not disco messages\nFrameType::SendPacket
received, that are not disco messages\nFrameType::SendPacket
sent, that are not disco messages\nNumber of FrameType::Pong
s sent\nThe TLS server configuration for the QUIC server.\nThe server configuration.\nShutdown the resolver.\nRequests graceful shutdown.\nStarts the server.\nConfiguration for the STUN server, disabled if None
.\nThe socket address the STUN server is listening on.\nReturns the handle for the task.\nExposes functions to quickly configure a server suitable …\nTLS configuration for the HTTPS server.\nNumber of unique client keys per day\nNumber of FrameType::Unknown
received\nNumber of accepted websocket connections\nThe TLS certificate chain.\nState for Let’s Encrypt certificates.\nCreates a QuicConfig
suitable for testing.\nCreates a RelayConfig
suitable for testing.\nCreates a rustls::ServerConfig
and certificates suitable …\nCreates a ServerConfig
suitable for testing.\nCreates a StunConfig
suitable for testing.\nCreates a TlsConfig
suitable for testing.")
\ No newline at end of file
+searchState.loadedDescShard("iroh_relay", 0, "Iroh’s relay is a feature within iroh, a peer-to-peer …\nConfiguration of all the relay servers that can be used.\nInformation on a specific relay server.\nConfiguration for speaking to the QUIC endpoint on the …\nExposes Client
, which allows to establish connections to a …\nIs this a known node?\nCreates a new RelayMap
with a single relay server …\nDefault values used in the relay.\nCreate an empty relay map.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nConstructs the RelayMap
from an iterator of RelayNode
s.\nReturns a RelayMap
from a RelayUrl
.\nGet the given node.\nHTTP-specific constants for the relay server and client.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nAre there any nodes in this map?\nHow many nodes are known?\nReturns an Iterator
over all known nodes.\nThe port on which the connection should be bound to.\nProtocols used by the iroh-relay\nCreate a QUIC server that accepts connections for QUIC …\nConfiguration to speak to the QUIC endpoint on the relay …\nA fully-fledged iroh-relay server over HTTP or HTTPS.\nWhether this relay server should only be used for STUN …\nThe stun port of the relay server.\nThe RelayUrl
where this relay server can be dialed.\nReturns the sorted relay URLs.\nThe inner actor is gone, likely means things are shutdown.\nThe relay super::client::Client
failed to build\nAn HTTP Relay client.\nBuild a Client.\nPossible connection errors on the Client
\nThe client is closed\nThere was a connection timeout error\nThere was an error dialing\nThere was an error with DNS resolution\nA one-way message from server to client, declaring the …\nThere was an http error http::Error
.\nThere was http server hyper::Error
\nBoth IPv4 and IPv6 are disabled for this relay node\nThe given Url
is invalid\nA one-way empty message from server to client, just to …\nNo local addresses exist\nIndicates that the client identified by the underlying …\nRequest from a client or server to reply to the other side …\nThe ping request was aborted\nThe ping request timed out\nReply to a ReceivedMessage::Ping
from a client or server …\nThe connection failed to proxy\nThere was an error receiving a packet\nThe messages received from a framed relay stream.\nRepresents an incoming packet.\nThere was an error sending a packet\nA one-way message from server to client, advertising that …\nThere was an unexpected status code\nThe connection failed to upgrade\nAn error related to websockets, either errors with parsing …\nReturns if we should prefer ipv6 it replaces the …\nBuild the Client
\nClose the http relay connection.\nConnects to a relay Server and returns the underlying …\nFinish a ping message\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nSkip the verification of the relay server’s SSL …\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nReturns true
if the underlying relay connection is …\nIndicates this client is a prober\nSet the capacity of the cache for public keys.\nGet the local addr of the connection. If there is no …\nCreates a client config that trusts any servers without …\nCreate a new ClientBuilder
\nLet the server know that this client is the preferred …\nSets whether to connect to the relay via websockets or not.\nSet an explicit proxy url to proxy all HTTP(S) traffic …\nReads a message from the server.\nSend a packet to the server.\nSend a pong back to the server.\nThe expected PublicKey
of the relay server we are …\nSets the server url\nSend a ping to the server. Return once we get an expected …\nThe received packet bytes.\nIf set, is a description of why the connection is …\nAn advisory duration that the client should wait before …\nThe NodeId
of the packet sender.\nAn advisory duration for how long the client should …\nThe default HTTPS port used by the Relay server.\nThe default HTTP port used by the Relay server.\nThe default capacity of the key cache for the relay server.\nThe default metrics port used by the Relay server.\nThe default QUIC port used by the Relay server to accept …\nThe default STUN port used by the Relay server.\nThe HTTP upgrade protocol used for relaying.\nThe HTTP path under which the relay accepts relaying …\nThe HTTP path under which the relay allows doing latency …\nRelays over the custom relaying protocol with a custom …\nRelays over websockets.\nReturns the argument unchanged.\nCalls U::from(self)
.\nTries to match the value of an HTTP upgrade header to …\nThe HTTP upgrade header used or expected.\nThis module exports looks_like_disco_wrapper
as the only …\nThis module implements the relaying protocol used by the …\nSTUN packets sending and receiving.\nThe 6 byte header of all discovery messages.\nReports whether p looks like it’s a packet containing an …\nThe maximum size of a packet sent over relay. (This only …\nThe AlternateServer
atribute\nErrors that can occur when handling a STUN packet.\nThe ErrorCode
atribute\nerror response\nThe Fingerprint
atribute\nindication\nSTUN request had bogus fingerprint.\nThe STUN message could not be parsed or is otherwise …\nSTUN response has malformed attributes.\nThe MappedAddress
atribute\nThe STUN message class. Although there are four message …\nClass used to decode STUN messages\nThe MessageIntegrity
atribute\nThe MessageIntegritySha256
atribute\nSTUN request didn’t end in fingerprint.\nThe Nonce
atribute\nSTUN request is not a binding request when it should be.\nSTUN packet is not a response when it should be.\nThe PasswordAlgorithm
atribute\nThe PasswordAlgorithms
atribute\nThe Realm
atribute\nrequest\nThe Software
atribute\nSTUN Attributes that can be attached to a StunMessage
\nDescribes an error decoding a StunMessage
\nsuccess response\nThe transaction ID is a 96-bit identifier, used to …\nThe Unknown
atribute\nThe UnknownAttributes
atribute\nThe UserHash
atribute\nThe UserName
atribute\nThe XorMappedAddress
atribute\nReturns a reference to the internal attribute value or an …\nReturns a reference to the bytes that represents the …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns the STUN attribute type of this instance.\nDecodes the STUN raw buffer\nCreates a cryptographically random transaction ID chosen …\nReturns a reference to the AlternateServer
attribute.\nReturns a reference to the ErrorCode
attribute.\nReturns a reference to the Fingerprint
attribute.\nReturns a reference to the MappedAddress
attribute.\nReturns a reference to the MessageIntegrity
attribute.\nReturns a reference to the MessageIntegritySha256
…\nReturns a reference to the Nonce
attribute.\nReturns a reference to the PasswordAlgorithm
attribute.\nReturns a reference to the PasswordAlgorithms
attribute.\nReturns a reference to the Realm
attribute.\nReturns a reference to the Software
attribute.\nReturns a reference to the Unknown
attribute.\nReturns a reference to the UnknownAttributes
attribute.\nReturns a reference to the UserHash
attribute.\nReturns a reference to the UserName
attribute.\nReturns a reference to the XorMappedAddress
attribute.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nGets the context associated to this decoder\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nReports whether b is a STUN message.\nReturns true if this StunAttribute
is AlternateServer
\nReturns true if this StunAttribute
is ErrorCode
\nReturns true if this StunAttribute
is Fingerprint
\nReturns true if this StunAttribute
is MappedAddress
\nReturns true if this StunAttribute
is MessageIntegrity
\nReturns true if this StunAttribute
is …\nReturns true if this StunAttribute
is Nonce
\nReturns true if this StunAttribute
is PasswordAlgorithm
\nReturns true if this StunAttribute
is PasswordAlgorithms
\nReturns true if this StunAttribute
is Realm
\nReturns true if this StunAttribute
is Software
\nReturns true if this StunAttribute
is Unknown
\nReturns true if this StunAttribute
is UnknownAttributes
\nReturns true if this StunAttribute
is UserHash
\nReturns true if this StunAttribute
is UserName
\nReturns true if this StunAttribute
is XorMappedAddress
\nSTUN Methods Registry\nParses a STUN binding request.\nParses a successful binding response STUN packet. The IP …\nGenerates a binding request STUN packet.\nGenerates a binding response.\nBinding\nReserved\nShared secret\nALPN for our quic addr discovery\nEndpoint close error code\nEndpoint close reason\nHandles the client side of QUIC address discovery.\nReturns the argument unchanged.\nClient side of QUIC address discovery.\nCalls U::from(self)
.\nCreate a new QuicClient to handle the client side of QUIC …\nTLS certificate configuration.\nPer-client rate limit configuration.\nThe default certificate reload interval.\nUse Let’s Encrypt.\nRate limits.\nUse a static TLS key and certificate chain.\nThe main underlying IO stream type used for the relay …\nMetrics tracked for the relay server\nA plain non-Tls tokio::net::TcpStream
\nConfiguration for the QUIC server.\nConfiguration for the Relay HTTP and HTTPS server.\nUse a TLS key and certificate chain that can be reloaded.\nA Certificate resolver that reloads the certificate every …\nA running Relay + STUN server.\nConfiguration for the full Relay & STUN server.\nConfiguration for the STUN server.\nStunMetrics tracked for the relay server\nA Tls wrapped tokio::net::TcpStream
\nTLS configuration for Relay server.\nBurst limit for accepting new connection. Unlimited if not …\nRate limit for accepting new connection. Unlimited if not …\nNumber of connections we have accepted\nNumber of bad requests, either non-stun packets or …\nThe socket address on which the STUN server should bind.\nThe socket address on which the QUIC server should bind.\nMax number of bytes per second to read from the client …\nBytes received from a FrameType::SendPacket
\nBytes sent from a FrameType::SendPacket
\nMode for getting a cert.\nThe certificates chain if configured with manual TLS …\nRate limits for incoming traffic from a client connection.\nNumber of client connections which have had any frames …\nFrameType::SendPacket
dropped that are disco messages\nFrameType::SendPacket
received that are disco messages\nFrameType::SendPacket
sent that are disco messages\nNumber of connections we have removed because of an error\nNumber of failures\nNumber of frames received from client connection which …\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nNumber of FrameType::Ping
s received\nThe socket address the HTTP server is listening on.\nThe socket address on which the Relay HTTP server should …\nGet the server’s http RelayUrl
.\nThe socket address the HTTPS server is listening on.\nThe socket address on which to serve the HTTPS server.\nGet the server’s https RelayUrl
.\nPerform the initial load and construct the …\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nNumber of successful requests over ipv4\nNumber of successful requests over ipv6\nKey cache capacity.\nRate limits.\nMax number of bytes to read in a single burst.\nSocket to serve metrics on.\nPackets of other FrameType
s dropped\nPackets of other FrameType
s received\nPackets of other FrameType
s sent\nConfiguration for the QUIC server, disabled if None
.\nThe socket address the QUIC server is listening on.\nThe socket address on which to server the QUIC server is …\nConfiguration for the Relay server, disabled if None
.\nNumber of accepted ‘iroh derp http’ connection upgrades\nReload the certificate.\nNumber of stun requests made\nFrameType::SendPacket
dropped, that are not disco messages\nFrameType::SendPacket
received, that are not disco messages\nFrameType::SendPacket
sent, that are not disco messages\nNumber of FrameType::Pong
s sent\nThe TLS server configuration for the QUIC server.\nThe server configuration.\nShutdown the resolver.\nRequests graceful shutdown.\nStarts the server.\nConfiguration for the STUN server, disabled if None
.\nThe socket address the STUN server is listening on.\nReturns the handle for the task.\nExposes functions to quickly configure a server suitable …\nTLS configuration for the HTTPS server.\nNumber of unique client keys per day\nNumber of FrameType::Unknown
received\nNumber of accepted websocket connections\nThe TLS certificate chain.\nState for Let’s Encrypt certificates.\nCreates a QuicConfig
suitable for testing.\nCreates a RelayConfig
suitable for testing.\nCreates a rustls::ServerConfig
and certificates suitable …\nCreates a ServerConfig
suitable for testing.\nCreates a StunConfig
suitable for testing.\nCreates a TlsConfig
suitable for testing.")
\ No newline at end of file
diff --git a/pr/3069/docs/src/iroh_relay/client.rs.html b/pr/3069/docs/src/iroh_relay/client.rs.html
index 548b0b68ad..e2ebf00915 100644
--- a/pr/3069/docs/src/iroh_relay/client.rs.html
+++ b/pr/3069/docs/src/iroh_relay/client.rs.html
@@ -981,19 +981,7 @@
980
981
982
-983
-984
-985
-986
-987
-988
-989
-990
-991
-992
-993
-994
-995
//! Exposes [`Client`], which allows to establish connections to a relay server.
+983
//! Exposes [`Client`], which allows to establish connections to a relay server.
//!
//! Based on tailscale/derp/derphttp/derphttp_client.go
@@ -1109,7 +1097,6 @@
/// Cheaply clonable.
#[derive(derive_more::Debug)]
pub struct Client {
- public_key: PublicKey,
secret_key: SecretKey,
is_preferred: bool,
relay_conn: Option<(Conn, Option<SocketAddr>)>,
@@ -1265,10 +1252,8 @@
config.resumption = Resumption::default();
let tls_connector: tokio_rustls::TlsConnector = Arc::new(config).into();
- let public_key = key.public();
let mut client = Client {
- public_key,
secret_key: key,
is_preferred: false,
relay_conn: None,
@@ -1316,9 +1301,30 @@
}
impl Client {
- /// The public key for this client
- pub fn public_key(&self) -> PublicKey {
- self.public_key
+ /// Reads a message from the server.
+ pub async fn recv(&mut self) -> Option<Result<ReceivedMessage, ClientError>> {
+ if let Some((conn, _)) = self.relay_conn.as_mut() {
+ match tokio::time::timeout(CLIENT_RECV_TIMEOUT, conn.next()).await {
+ Ok(Some(Ok(msg))) => Some(Ok(msg)),
+ Ok(Some(Err(e))) => {
+ self.close_for_reconnect().await;
+ if self.is_closed {
+ return Some(Err(ClientError::Closed));
+ }
+ Some(Err(ClientError::Receive(e)))
+ }
+ Ok(None) => {
+ self.close_for_reconnect().await;
+ None
+ }
+ Err(_) => {
+ self.close_for_reconnect().await;
+ Some(Err(ClientError::Closed))
+ }
+ }
+ } else {
+ future::pending().await
+ }
}
/// Connects to a relay Server and returns the underlying relay connection.
@@ -1524,11 +1530,7 @@
if self.is_closed {
return None;
}
- if let Some((_, local_addr)) = self.relay_conn {
- local_addr
- } else {
- None
- }
+ self.relay_conn.as_ref().and_then(|(_, addr)| *addr)
}
/// Send a ping to the server. Return once we get an expected pong.
@@ -1789,37 +1791,11 @@
}
}
- /// Reads a message from the server.
- pub async fn recv(&mut self) -> Option<Result<ReceivedMessage, ClientError>> {
- if let Some((conn, _)) = self.relay_conn.as_mut() {
- match tokio::time::timeout(CLIENT_RECV_TIMEOUT, conn.next()).await {
- Ok(Some(Ok(msg))) => Some(Ok(msg)),
- Ok(Some(Err(e))) => {
- self.close_for_reconnect().await;
- if self.is_closed {
- return Some(Err(ClientError::Closed));
- }
- Some(Err(ClientError::Receive(e)))
- }
- Ok(None) => {
- self.close_for_reconnect().await;
- None
- }
- Err(_) => {
- self.close_for_reconnect().await;
- Some(Err(ClientError::Closed))
- }
- }
- } else {
- future::pending().await
- }
- }
-
/// Disconnect the http relay connection.
///
/// Closes the underlying relay connection. The next time the client takes some action that
/// requires a connection, it will call `connect`.
- pub async fn close_for_reconnect(&mut self) {
+ async fn close_for_reconnect(&mut self) {
debug!("close for reconnect");
if let Some((ref mut conn, _)) = self.relay_conn.take() {
conn.close().await
pub struct ClientBuilder { /* private fields */ }
Expand description
Build a Client.
-Implementations§
Source§impl ClientBuilder
impl ClientBuilder
Sourcepub fn new(url: impl Into<RelayUrl>) -> Self
pub fn new(url: impl Into<RelayUrl>) -> Self
Create a new ClientBuilder
Sourcepub fn server_url(self, url: impl Into<RelayUrl>) -> Self
pub fn server_url(self, url: impl Into<RelayUrl>) -> Self
Sets the server url
-Sourcepub fn protocol(self, protocol: Protocol) -> Self
pub fn protocol(self, protocol: Protocol) -> Self
Sets whether to connect to the relay via websockets or not. +
pub struct ClientBuilder { /* private fields */ }
Expand description
Build a Client.
+Implementations§
Source§impl ClientBuilder
impl ClientBuilder
Sourcepub fn new(url: impl Into<RelayUrl>) -> Self
pub fn new(url: impl Into<RelayUrl>) -> Self
Create a new ClientBuilder
Sourcepub fn server_url(self, url: impl Into<RelayUrl>) -> Self
pub fn server_url(self, url: impl Into<RelayUrl>) -> Self
Sets the server url
+Sourcepub fn protocol(self, protocol: Protocol) -> Self
pub fn protocol(self, protocol: Protocol) -> Self
Sets whether to connect to the relay via websockets or not. Set to use non-websocket, normal relaying by default.
-Sourcepub fn address_family_selector<S>(self, selector: S) -> Selfwhere
+
pub fn address_family_selector<S>(self, selector: S) -> Selfwhere
+
Sourcepub fn address_family_selector<S>(self, selector: S) -> Self
pub fn address_family_selector<S>(self, selector: S) -> Self
Returns if we should prefer ipv6 it replaces the relayhttp.AddressFamilySelector we pass It provides the hint as to whether in an IPv4-vs-IPv6 race that IPv4 should be held back a bit to give IPv6 a better-than-50/50 chance of winning. We only return true when we believe IPv6 will work anyway, so we don’t artificially delay the connection speed.
-Sourcepub fn insecure_skip_cert_verify(self, skip: bool) -> Self
Available on crate feature test-utils
only.
pub fn insecure_skip_cert_verify(self, skip: bool) -> Self
test-utils
only.Skip the verification of the relay server’s SSL certificates.
+Sourcepub fn insecure_skip_cert_verify(self, skip: bool) -> Self
Available on crate feature test-utils
only.
pub fn insecure_skip_cert_verify(self, skip: bool) -> Self
test-utils
only.Skip the verification of the relay server’s SSL certificates.
May only be used in tests.
-Sourcepub fn proxy_url(self, url: Url) -> Self
pub fn proxy_url(self, url: Url) -> Self
Set an explicit proxy url to proxy all HTTP(S) traffic through.
-Sourcepub fn key_cache_capacity(self, capacity: usize) -> Self
pub fn key_cache_capacity(self, capacity: usize) -> Self
Set the capacity of the cache for public keys.
-Sourcepub async fn build(self, key: SecretKey, dns_resolver: DnsResolver) -> Client
pub async fn build(self, key: SecretKey, dns_resolver: DnsResolver) -> Client
Build the Client
Sourcepub fn server_public_key(self, server_public_key: PublicKey) -> Self
pub fn server_public_key(self, server_public_key: PublicKey) -> Self
The expected PublicKey
of the relay server we are connecting to.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for ClientBuilder
impl !RefUnwindSafe for ClientBuilder
impl Send for ClientBuilder
impl Sync for ClientBuilder
impl Unpin for ClientBuilder
impl !UnwindSafe for ClientBuilder
Blanket Implementations§
Sourcepub fn proxy_url(self, url: Url) -> Self
pub fn proxy_url(self, url: Url) -> Self
Set an explicit proxy url to proxy all HTTP(S) traffic through.
+Sourcepub fn key_cache_capacity(self, capacity: usize) -> Self
pub fn key_cache_capacity(self, capacity: usize) -> Self
Set the capacity of the cache for public keys.
+Sourcepub async fn build(self, key: SecretKey, dns_resolver: DnsResolver) -> Client
pub async fn build(self, key: SecretKey, dns_resolver: DnsResolver) -> Client
Build the Client
Sourcepub fn server_public_key(self, server_public_key: PublicKey) -> Self
pub fn server_public_key(self, server_public_key: PublicKey) -> Self
The expected PublicKey
of the relay server we are connecting to.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for ClientBuilder
impl !RefUnwindSafe for ClientBuilder
impl Send for ClientBuilder
impl Sync for ClientBuilder
impl Unpin for ClientBuilder
impl !UnwindSafe for ClientBuilder
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
fn implicit(
diff --git a/pr/3069/docs/search-index.js b/pr/3069/docs/search-index.js
index 658ec845a3..eb390956d0 100644
--- a/pr/3069/docs/search-index.js
+++ b/pr/3069/docs/search-index.js
@@ -1,4 +1,4 @@
-var searchIndex = new Map(JSON.parse('[["bulk",{"t":"HHHHH","n":["collect_and_print","main","run_iroh","run_quinn","run_s2n"],"q":[[0,"bulk"],[5,"core::option"],[6,"struct_iterable_internal"],[7,"iroh_bench"],[8,"anyhow"],[9,"iroh_bench::s2n"]],"i":"`````","f":"{{{d{b}}{f{{d{c}}}}}hj}{{}h}{l{{n{h}}}}0{A`{{n{h}}}}","D":"`","p":[[1,"str"],[1,"reference",null,null,1],[6,"Option",5,null,1],[1,"unit"],[10,"Iterable",6],[5,"Opt",7],[8,"Result",8],[5,"Opt",9]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAAUAAQAAAAUA","P":[[0,""],[1,""]]}],["iroh",{"t":"PPEPGTFIFFEFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNOCCNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNONNNNNCNNONONNNNNNNNNOOCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNCNNSSSSSCCSSSHHHHSSHHHFKFNNNNNNNNNNNNNNCNNNNNNNNNNNNNNOCOCONNNNCNNNNNNNNNNNFSSNNNNNNNNNNNNNNNNFSNNNNNNNNNNNNNNNNNSSSSFFFNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNTFNNNNNNNNNNNNNNNNNNNNNNIKHMNMNMNMNMNMNMNMNMNMNCHPSGFPFNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNONONNNNNNHNNNNNNNNNNNNNTTFFFFKPFPFTTTPFPFPPFFFPGPPPPPFGGKKFKPPPFFGPPPSFFTTTPFKTTPFFTPPTTPFTTPPFFTFPPPPFGPGGFPPGFPPGFTTPGFFGPPGFPPTPPPFFPFPFPPFFPFGFFPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONONNNOOOMNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNONNONONOONOOOONNNONNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNONNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNONNNNNNNNNNNNNNNOOONOOONNNOOOHNNNONNNOOONNNNNNNNOONNOONONMNMNMNNNNNNNOOONNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOONNNNNNONNNNNNNNOONMNNONMNNNNNNOONNNNNNNNNNNNNNNNNNNONMNNONOONOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNOOFFFFNNNNOOOOOOOOONNNNNNNNOONNNNNNNNNNNNOOONNNNNNNNNNNNOOOONNNNONNNNONNNNNNNNONNNNNNNNNNNNOOONNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNOOOOOOONNNNOKFFNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFNNNNHNNNNNNNNNNNNNNNNOONONHHHNNNNNNNNNFFFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["Decode","DecodeInvalidLength","Endpoint","Key","KeyParsingError","LENGTH","NodeAddr","NodeId","PublicKey","RelayMap","RelayMode","RelayNode","RelayUrl","RelayUrlParseError","SecretKey","__clone_box","","","","","","as_bytes","as_ref","borrow","","","","","","","","","borrow_mut","","","","","","","","clone","","","","","","clone_into","","","","","","clone_to_uninit","","","","","","cmp","","","","compare","","","","contains_node","default_from_node","defaults","deref","","","","","","","","","deref_mut","","","","","","","","deserialize","","","","","direct_addresses","","discovery","dns","drop","","","","","","","","empty","endpoint","eq","","","","","equivalent","","","","","","","","","","","","","","","fmt","","","","","","","","","","","","","","","fmt_short","from","","","","","","","","","","","","","","","","","","","","from_bytes","","from_nodes","from_parts","from_ref","","","","","","from_str","","","from_url","generate","get_node","hash","","init","","","","","","","","into","","","","","","","","is_empty","","len","metrics","new","node_id","nodes","partial_cmp","","","","protocol","public","","quic","relay_url","","secret","serialize","","","","","sign","source","","stun_only","stun_port","test_utils","to_bytes","to_owned","","","","","","to_string","","","","","","","try_from","","","","","","","","","","","try_into","","","","","","","","type_id","","","","","","","","url","urls","verify","vzip","","","","","","","","watchable","with_direct_addresses","with_relay_url","DEFAULT_HTTPS_PORT","DEFAULT_HTTP_PORT","DEFAULT_METRICS_PORT","DEFAULT_RELAY_QUIC_PORT","DEFAULT_STUN_PORT","prod","staging","AP_RELAY_HOSTNAME","EU_RELAY_HOSTNAME","NA_RELAY_HOSTNAME","default_ap_relay_node","default_eu_relay_node","default_na_relay_node","default_relay_map","EU_RELAY_HOSTNAME","NA_RELAY_HOSTNAME","default_eu_relay_node","default_na_relay_node","default_relay_map","ConcurrentDiscovery","Discovery","DiscoveryItem","__clone_box","add","borrow","","borrow_mut","","clone","clone_into","clone_to_uninit","default","deref","","deref_mut","","dns","drop","","empty","fmt","","from","","","from_ref","from_services","init","","into","","last_updated","local_swarm_discovery","node_addr","pkarr","provenance","publish","","resolve","","static_provider","subscribe","","to_owned","try_from","","try_into","","type_id","","vzip","","DnsDiscovery","N0_DNS_NODE_ORIGIN_PROD","N0_DNS_NODE_ORIGIN_STAGING","borrow","borrow_mut","deref","deref_mut","drop","fmt","from","init","into","n0_dns","new","resolve","try_from","try_into","type_id","vzip","LocalSwarmDiscovery","NAME","borrow","borrow_mut","deref","deref_mut","drop","fmt","from","init","into","new","publish","resolve","subscribe","try_from","try_into","type_id","vzip","DEFAULT_PKARR_TTL","DEFAULT_REPUBLISH_INTERVAL","N0_DNS_PKARR_RELAY_PROD","N0_DNS_PKARR_RELAY_STAGING","PkarrPublisher","PkarrRelayClient","PkarrResolver","__clone_box","","","borrow","","","borrow_mut","","","clone","","","clone_into","","","clone_to_uninit","","","deref","","","deref_mut","","","dht","drop","","","","fmt","","","from","","","from_ref","","","init","","","into","","","n0_dns","","new","","","publish","","resolve","","to_owned","","","try_from","","","try_into","","","type_id","","","update_addr_info","vzip","","","with_options","Builder","DhtDiscovery","__clone_box","borrow","","borrow_mut","","build","builder","client","clone","clone_into","clone_to_uninit","default","","deref","","deref_mut","","dht","drop","","fmt","","from","","from_ref","include_direct_addresses","init","","initial_publish_delay","into","","n0_dns_pkarr_relay","pkarr_relay","publish","republish_delay","resolve","secret_key","to_owned","try_from","","try_into","","ttl","type_id","","vzip","","PROVENANCE","StaticProvider","add_node_addr","borrow","borrow_mut","default","deref","deref_mut","drop","fmt","from","from_node_addrs","get_node_addr","init","into","new","publish","remove_node_addr","resolve","set_node_addr","try_from","try_into","type_id","vzip","DnsResolver","ResolverExt","default_resolver","lookup_by_id","","lookup_by_id_staggered","","lookup_by_name","","lookup_by_name_staggered","","lookup_ipv4","","lookup_ipv4_ipv6","","lookup_ipv4_ipv6_staggered","","lookup_ipv4_staggered","","lookup_ipv6","","lookup_ipv6_staggered","","node_info","resolver","Addr","IROH_TXT_NAME","IrohAttr","NodeInfo","Relay","TxtAttrs","__clone_box","as_ref","attrs","borrow","","","borrow_mut","","","clone","clone_into","clone_to_uninit","cmp","compare","deref","","","deref_mut","","","direct_addresses","drop","","","eq","","equivalent","","","","","","fmt","","","","from","","","","","","from_hickory_records","","from_parts","from_pkarr_signed_packet","","from_ref","from_str","from_strings","from_z32","hash","init","","","into","","","lookup_by_id","lookup_by_name","new","node_id","","partial_cmp","relay_url","to_hickory_records","","to_owned","to_pkarr_signed_packet","","to_string","to_z32","try_from","","","","try_into","","","type_id","","","vzip","","","AEAD_LIMIT_REACHED","APPLICATION_ERROR","Accept","AcceptBi","AcceptUni","AckFrequencyConfig","AeadKey","App","ApplicationClose","ApplicationClosed","Builder","CONNECTION_ID_LIMIT_ERROR","CONNECTION_REFUSED","CRYPTO_BUFFER_EXCEEDED","CallMeMaybe","Chunk","CidsExhausted","ClosedStream","","","Connecting","Connection","ConnectionClose","ConnectionClosed","ConnectionError","ConnectionLost","","","","","ConnectionStats","ConnectionType","ControlMsg","Controller","ControllerFactory","CryptoError","CryptoServerConfig","Custom","Default","Direct","DirectAddr","DirectAddrInfo","DirectAddrType","Disabled","","Discovery","ENV_FORCE_STAGING_RELAYS","Endpoint","ExportKeyingMaterialError","FINAL_SIZE_ERROR","FLOW_CONTROL_ERROR","FRAME_ENCODING_ERROR","FinishedEarly","FrameStats","HandshakeTokenKey","INTERNAL_ERROR","INVALID_TOKEN","IllegalOrderedRead","Incoming","IncomingFuture","KEY_UPDATE_ERROR","Local","LocallyClosed","MAX","MAX_SIZE","Mixed","MtuDiscoveryConfig","NO_ERROR","NO_VIABLE_PATH","NamedApp","None","OpenBi","OpenUni","PROTOCOL_VIOLATION","PathStats","Ping","Pong","Portmapped","Read","ReadDatagram","ReadError","","ReadExactError","ReadToEndError","RecvStream","Relay","","RelayMode","RemoteInfo","Reset","","ResetError","RetryError","STREAM_LIMIT_ERROR","STREAM_STATE_ERROR","Saved","SendDatagramError","SendStream","ServerConfig","Source","Staging","Stopped","StoppedError","StreamId","Stun","Stun4LocalPort","TRANSPORT_PARAMETER_ERROR","TimedOut","TooLarge","TooLong","TransportConfig","TransportError","","TransportErrorCode","Udp","UdpStats","Unknown","UnsupportedByPeer","UnsupportedVersion","VarInt","VersionMismatch","WeakConnectionHandle","WriteError","Written","ZeroRttAccepted","ZeroRttRejected","","","","__clone_box","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","accept","","accept_bi","accept_uni","accept_with","ack_eliciting_threshold","ack_frequency","ack_frequency_config","acks","add_discovery","add_node_addr","add_node_addr_with_source","addr","","addrs","aead_from_hkdf","allow_spin","alpn","alpns","bind","bind_addr_v4","bind_addr_v6","black_hole_cooldown","black_holes_detected","borrow","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","borrow_mut","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bound_sockets","build","builder","bytes","","","chunks","clear_discovery","clone","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","clone_box","clone_into","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","clone_to_uninit","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","close","","close_reason","closed","cmp","","","","code","compare","","","","congestion_controller_factory","congestion_events","congestion_state","conn_type","","connect","connection_close","crypto","","","crypto_buffer_size","current_mtu","cwnd","data_blocked","datagram","datagram_receive_buffer_size","datagram_send_buffer_size","datagram_send_buffer_space","datagrams","default","","","","","","","","","","","default_relay_mode","deref","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","deref_mut","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","deserialize","","","","","dir","direct_addresses","discovery","","discovery_dht","discovery_local_network","discovery_n0","dns_resolver","","drop","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","enable_segmentation_offload","eq","","","","","","","","","","","","","","","","","","","","","","","","","","equivalent","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","error_code","","export_keying_material","finish","fmt","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","force_staging_infra","frame","frame_rx","frame_tx","frame_type","from","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","from_ref","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","from_u32","from_u64","from_u64_unchecked","get_remote_node_id","handshake_data","","handshake_done","has_send_address","hash","","","","","home_relay","id","","ignore","immediate_ack","incoming_buffer_size","incoming_buffer_size_total","index","init","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","initial_keys","initial_mtu","initial_rtt","initial_window","initiator","insecure_skip_relay_cert_verify","interval","into","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","into_0rtt","into_any","into_future","","","","","","","","","","into_incoming","into_inner","ios","is_0rtt","is_alive","is_closed","join","","","","","","","","","keep_alive_interval","keylog","known_nodes","last_alive","last_control","last_payload","last_received","last_used","latency","","local_ip","","","lost_bytes","lost_packets","lost_plpmtud_probes","make_server_config","max_ack_delay","max_concurrent_bidi_streams","max_concurrent_uni_streams","max_data","max_datagram_size","max_idle_timeout","max_incoming","max_stream_data","max_streams_bidi","max_streams_uni","migration","min_mtu","minimum_change","mtu_discovery_config","network_change","network_path_changed","new","","new_connection_id","new_token","node_addr","node_id","","observed_addr","observed_external_addr","offset","on_ack","on_congestion_event","on_end_acks","on_mtu_update","on_sent","open","open_bi","open_uni","packet_threshold","partial_cmp","","","","path","path_challenge","path_response","peer_identity","persistent_congestion_threshold","ping","poll","","","","","","","","","poll_flush","poll_read","","poll_shutdown","poll_write","","preferred_address_v4","preferred_address_v6","priority","proxy_from_env","proxy_url","race","","","","","","","","","read","read_chunk","read_chunks","read_datagram","read_exact","read_to_end","reason","","","receive_observed_address_reports","receive_window","received_reset","refuse","relay_map","relay_mode","relay_url","remote_address","","","remote_address_validated","remote_info","remote_info_iter","reordering_threshold","reset","reset_stream","retire_connection_id","retry","retry_tag","retry_token_lifetime","rtt","","saturating_add","seal","secret_key","","send_datagram","send_datagram_wait","send_observed_address_reports","send_window","sent_packets","sent_plpmtud_probes","serialize","","","","","set_alpns","set_max_concurrent_bi_streams","set_max_concurrent_uni_streams","set_priority","set_receive_window","source","","","","","","","","sources","","stable_id","start_session","stats","stop","stop_sending","stopped","stream","stream_data_blocked","stream_receive_window","streams_blocked_bidi","streams_blocked_uni","time_threshold","to_owned","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","to_string","","","","","","","","","","","","","","","","","","","","token_key","transport","transport_config","","try_from","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","try_into","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","try_poll","","","","","","","typ","type_id","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","udp_rx","udp_tx","upper_bound","vzip","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","weak_handle","window","with_crypto","with_single_cert","write","write_all","write_all_chunks","write_chunk","write_chunks","name","","MagicsockMetrics","NetReportMetrics","PortmapMetrics","RelayMetrics","__clone_box","","","","accepts","actor_link_change","actor_tick_direct_addr_heartbeat","actor_tick_direct_addr_update_receiver","actor_tick_main","actor_tick_msg","actor_tick_other","actor_tick_portmap_changed","actor_tick_re_stun","borrow","","","","borrow_mut","","","","bytes_recv","bytes_sent","clone","","","","clone_into","","","","clone_to_uninit","","","","connection_became_direct","connection_handshake_success","conns_rx_ratelimited_total","default","","","","deref","","","","deref_mut","","","","disco_packets_dropped","disco_packets_recv","disco_packets_sent","disconnects","drop","","","","external_address_updated","fmt","","","","frames_rx_ratelimited_total","from","","","","from_ref","","","","got_ping","init","","","","into","","","","iter","","","","local_port_updates","mapping_attempts","mapping_failures","name","","","","nodes_contacted","nodes_contacted_directly","num_direct_conns_added","num_direct_conns_removed","num_relay_conns_added","num_relay_conns_removed","other_packets_dropped","other_packets_recv","other_packets_sent","pcp_available","pcp_probes","probes_started","re_stun_calls","recv_data_ipv4","recv_data_ipv6","recv_data_relay","recv_datagrams","recv_disco_bad_key","recv_disco_bad_parse","recv_disco_call_me_maybe","recv_disco_call_me_maybe_bad_disco","recv_disco_ping","recv_disco_pong","recv_disco_relay","recv_disco_udp","recv_gro_datagrams","relay_accepts","relay_home_change","reports","reports_full","send_data","send_data_network_down","send_disco_relay","send_disco_udp","send_ipv4","send_ipv6","send_packets_dropped","send_packets_recv","send_packets_sent","send_relay","send_relay_error","sent_disco_call_me_maybe","sent_disco_ping","sent_disco_pong","sent_disco_relay","sent_disco_udp","sent_pong","stun_packets_dropped","stun_packets_recv_ipv4","stun_packets_recv_ipv6","stun_packets_sent_ipv4","stun_packets_sent_ipv6","to_owned","","","","try_from","","","","try_into","","","","type_id","","","","unique_client_keys","unknown_frames","update_direct_addrs","upnp_available","upnp_gateway_updated","upnp_probes","upnp_probes_failed","vzip","","","","websocket_accepts","ProtocolHandler","Router","RouterBuilder","__clone_box","accept","","borrow","","borrow_mut","","builder","clone","clone_into","clone_to_uninit","deref","","deref_mut","","drop","","endpoint","","fmt","","from","","from_ref","init","","into","","is_shutdown","new","shutdown","","spawn","to_owned","try_from","","try_into","","type_id","","vzip","","CleanupDropGuard","DnsPkarrServer","borrow","","borrow_mut","","create_dns_resolver","deref","","deref_mut","","discovery","dns_resolver","drop","","fmt","","from","","init","","into","","nameserver","node_origin","on_node","pkarr_url","run","run_relay_server","run_relay_server_with","run_relay_server_with_stun","run_with_origin","try_from","","try_into","","type_id","","vzip","","Disconnected","WatchInitializedFut","WatchNextFut","Watchable","Watcher","WatcherStream","__clone_box","","","borrow","","","","","","borrow_mut","","","","","","chain","clone","","","clone_into","","","clone_to_uninit","","","default","deref","","","","","","deref_mut","","","","","","drop","","","","","","fmt","","","","","","","from","","","","","","from_ref","","","get","","init","","","","","","initialized","into","","","","","","into_future","","into_stream","join","","merge","new","poll","","poll_next","race","","ratelimit_stream","ratelimit_stream_with_jitter","set","stream","stream_updates_only","to_owned","","","to_string","try_from","","","","","","try_into","","","","","","try_poll","","try_poll_next","type_id","","","","","","updated","vzip","","","","","","watch","zip"],"q":[[0,"iroh"],[279,"iroh::defaults"],[286,"iroh::defaults::prod"],[293,"iroh::defaults::staging"],[298,"iroh::discovery"],[351,"iroh::discovery::dns"],[370,"iroh::discovery::local_swarm_discovery"],[389,"iroh::discovery::pkarr"],[466,"iroh::discovery::pkarr::dht"],[515,"iroh::discovery::static_provider"],[539,"iroh::dns"],[564,"iroh::dns::node_info"],[655,"iroh::endpoint"],[2181,"iroh::endpoint::Source"],[2183,"iroh::metrics"],[2359,"iroh::protocol"],[2404,"iroh::test_utils"],[2444,"iroh::watchable"],[2576,"dyn_clone::sealed"],[2577,"iroh_base::key"],[2578,"iroh_base::node_addr"],[2579,"iroh_base::relay_url"],[2580,"iroh_relay::relay_map"],[2581,"core::cmp"],[2582,"core::result"],[2583,"serde::de"],[2584,"core::net::socket_addr"],[2585,"core::iter::traits::iterator"],[2586,"core::fmt"],[2587,"alloc::string"],[2588,"ed25519_dalek::verifying"],[2589,"signature::error"],[2590,"data_encoding"],[2591,"ed25519_dalek::signing"],[2592,"core::option"],[2593,"iroh_base::ticket::node"],[2594,"iroh::magicsock::node_map::node_state"],[2595,"url"],[2596,"url::parser"],[2597,"anyhow"],[2598,"alloc::sync"],[2599,"core::convert"],[2600,"core::iter::traits::collect"],[2601,"rand_core"],[2602,"core::hash"],[2603,"serde::ser"],[2604,"ed25519"],[2605,"core::error"],[2606,"core::any"],[2607,"alloc::boxed"],[2608,"alloc::vec"],[2609,"alloc::collections::btree::set"],[2610,"futures_lite::stream"],[2611,"pkarr::signed_packet"],[2612,"futures_core::stream"],[2613,"core::time"],[2614,"pkarr::client"],[2615,"core::future::future"],[2616,"core::net::ip_addr"],[2617,"hickory_proto::rr::domain::name"],[2618,"core::clone"],[2619,"hickory_resolver::resolver"],[2620,"alloc::collections::btree::map"],[2621,"core::str::traits"],[2622,"hickory_proto::rr::resource"],[2623,"iroh_quinn_proto::connection"],[2624,"iroh_quinn::connection"],[2625,"iroh_quinn_proto::config"],[2626,"iroh_quinn_proto::varint"],[2627,"core::ops::function"],[2628,"core::marker"],[2629,"iroh_quinn_proto::crypto"],[2630,"iroh_quinn_proto::congestion"],[2631,"std::time"],[2632,"iroh_quinn::recv_stream"],[2633,"iroh_quinn::send_stream"],[2634,"iroh_quinn_proto::connection::stats"],[2635,"iroh_quinn_proto::connection::streams::send"],[2636,"iroh_quinn_proto::connection::streams"],[2637,"iroh::magicsock::node_map"],[2638,"iroh_quinn_proto::frame"],[2639,"iroh::magicsock"],[2640,"iroh_quinn_proto"],[2641,"iroh_quinn_proto::connection::assembler"],[2642,"iroh_quinn::incoming"],[2643,"iroh_quinn_proto::connection::streams::recv"],[2644,"ring::error"],[2645,"iroh_quinn_proto::transport_parameters"],[2646,"iroh_quinn_proto::shared"],[2647,"futures_concurrency::future::join::tuple"],[2648,"core::future::into_future"],[2649,"tokio::sync::watch"],[2650,"iroh_quinn_proto::connection::paths"],[2651,"core::pin"],[2652,"core::task::wake"],[2653,"core::task::poll"],[2654,"std::io::error"],[2655,"tokio::io::read_buf"],[2656,"futures_concurrency::future::race::tuple"],[2657,"bytes::bytes"],[2658,"rustls_pki_types"],[2659,"rustls::error"],[2660,"alloc::vec::into_iter"],[2661,"futures_lite::future"],[2662,"iroh::test_utils::dns_and_pkarr_servers"],[2663,"iroh_relay::server"],[2664,"futures_concurrency::stream::chain::tuple"],[2665,"futures_concurrency::stream::into_stream"],[2666,"core::default"],[2667,"futures_concurrency::stream::merge::tuple"],[2668,"governor::state::direct"],[2669,"governor::state"],[2670,"governor::state::direct::streams"],[2671,"governor::clock::with_std"],[2672,"governor::middleware"],[2673,"governor::jitter"],[2674,"futures_concurrency::stream::zip::tuple"],[2675,"iroh_relay::defaults"],[2676,"iroh::test_utils::dns_server"]],"i":"Cb0`0`h`````````0AbAdAfAhAj55556432Cd21675430216543216543216543216431643122`675433021675430216543144``675430212`643216664443332221116677554330022116667775554444443300216524654321653252636754302167543021422`4426431`6514456543157011`5654321675302166675543021675430216754302112667543021`44``````````````````````FhFd101011101010`100101001010101`1`1Ff101`01221212121```Gj000000000000000``Gl0000000000000000```````GnH`Hb210210210210210210210`221021021021021021021210201021021021021022102``Hn0Hl10010111101010010101010100100010101101001010Ib`0000000000000000000000```IfId101010101010101010``Jf```0`Df1Jh21021011122210210121021222111221021110010010120`22102100010121101102`2210210210210A@n0`````A@f`Kn`222Ol`1`NjO````3`Nf2Nl2Ob```````AAf0A@b```419```:::Nn``;;7``;AAb:Lj03`==<3``=`::1Nh``3```4=``:<``>>=````59``22><80``<`=`28``<````:796L`91;84:72OdOfOhOjOlOnA@`Dh=A@dA@fKnLhMnLfA@hA@jA@lA@nAA`AAbAAdGbAAf1KjL`01=OfLl1Ln66On:DhMf4Kl4444MnOhADd:AEdAEbLdLbAElABdNfABfAAlNhNjNlNnAAnO`ObLlLjAB`OdOfOhOjOlOnA@`DhA@bA@dA@fKnLhMnLfABbABhABjA@hA@jA@lA@nAA`AAbAAdLnGbKhKjABlKlAAfADdL`AEdAEbLdLbAElABdNfABfAAlNhNjNlNnAAnO`ObLlLjAB`OdOfOhOjOlOnA@`DhA@bA@dA@fKnLhMnLfABbABhABjA@hA@jA@lA@nAA`AAbAAdLnGbKhKjABlKlAAf5N`6AB`OdA@`0:L`NfNhNjNlNnO`ObLj:OfOhOjOlOn>DhA@bA@dA@fKnLhMnLfA@hA@jA@lA@nAA`AAbAAdGbAAfNdL`NfNhNjNlNnO`ObLjOdOfOhOjOlOnA@`DhA@bA@dA@fKnLhMnLfA@hA@jA@lA@nAA`AAbAAdGbAAfL`NfNhNjNlNnO`ObLjOdOfOhOjOlOnA@`DhA@bA@dA@fKnLhMnLfA@hA@jA@lA@nAA`AAbAAdGbAAfL`200Lj65480654LlOh35Dh6Of;0?32200335Od45013OjA@`A@bLhMnLn`ADd=AEdAEbLdLbAElABdNfABfAAlNhNjNlNnAAnO`ObLlLjAB`OdOfOhOjOlOnA@`DhA@bA@dA@fKnLhMnLfABbABhABjA@hA@jA@lA@nAA`AAbAAdLnGbKhKjABlKlAAfADdL`AEdAEbLdLbAElABdNfABfAAlNhNjNlNnAAnO`ObLlLjAB`OdOfOhOjOlOnA@`DhA@bA@dA@fKnLhMnLfABbABhABjA@hA@jA@lA@nAA`AAbAAdLnGbKhKjABlKlAAfOlOnDhA@bA@f<:;:;;;;:ADdL`AEdAEbLdLbAElABdNfABfAAl0NhNjNlNnAAn0O`ObLlLjAB`OdOfOhOjOlOnA@`DhA@bA@dA@fKnLhMnLfABbABhABjA@hA@jA@lA@nAA`AAbAAdLnGbKhKjABlKlAAfLlNfNhNjNlNnO`ObLjAB`OlOnA@`DhA@bA@dA@fKnABbA@hA@jA@lA@nAA`AAbAAdAAfNf00Nh00Nj00Nl00Nn00O`00Ob00Lj00AB`00Ol00On00A@`00Dh00A@b00A@d00A@f00Kn00ABb00A@h00A@j00A@l00A@n00AA`00AAb00AAd00AAf0076L`AAn1ABdNf0ABf0AAlNh0Nj0Nl0Nn08O`0Ob0LlLj0AB`OdOfOhOjOl0OnA@`DhA@b0A@d0A@f0Kn0LhMnLfABbABhABjA@h0A@j0A@l0A@n0AA`AAb0AAd0LnGbKhKjABlKlAAf`;Oj0>ADdL`AEdAEbLdLbAElABdNf0ABfAAlNh0Nj000Nl0Nn0AAnO`000Ob0LlLj0000AB`OdOfOhOjOlOnA@`DhA@bA@dA@fKn00LhMnLfABbABh0ABjA@h0A@jA@l000A@nAA`AAbAAd0LnGbKhKjABlKlAAfL`NfNhNjNlNnO`ObLjOdOfOhOjOlOnA@`DhA@bA@dA@fKnLhMnLfA@hA@jA@lA@nAA`AAbAAdGbAAfLj00`L`KlOfDh4A@f:987AAlAAnKj5Lf0?1AAd33??837AB`Nd0000Mh::>LjAA`AAb6Oj::>Ll;ADdAEdAEbLdLbAElKhABlKlAAnAAl0111Lf02Ln0<;:987654222L`33A@hA@jA@lLl07KjAAf7Dh72<2Gb0Lh=Of05ACl=;OhLjMh?6>>::22OlOn9A@bA@f:L`0AAn1NfNhNjNlNnO`ObKnDh=:ACl;AAlOf<00Ll110><;:9876LjOd3OhOjOlOnA@`;A@bA@dA@f?LhMnLfA@hA@jA@lA@nAA`AAbAAdGbAAfNfABfNhNjNlNnO`ObLjOlA@bA@dA@fKnA@hA@jA@lA@nAAbAAdLf00LnADdL`AEdAEbLdLbAElABdNfABfAAlNhNjNlNnAAnO`ObLlLj000AB`OdOfOhOjOlOnA@`DhA@bA@dA@fKnLhMnLfABbABhABjA@hA@jA@lA@nAA`AAbAAdLnGbKhKjABlKlAAfADdL`AEdAEbLdLbAElABdNfABfAAlNhNjNlNnAAnO`ObLlLjAB`OdOfOhOjOlOnA@`DhA@bA@dA@fKnLhMnLfABbABhABjA@hA@jA@lA@nAA`AAbAAdLnGbKhKjABlKlAAfAEdAEbLdLbAEl76>ADdL`65432ABdNfABfAAlNhNjNlNnAAnO`ObLlLjAB`OdOfOhOjOlOnA@`DhA@bA@dA@fKnLhMnLfABbABhABjA@hA@jA@lA@nAA`AAbAAdLnGbKhKjABlKlAAfOj0MnADdL`AEdAEbLdLbAElABdNfABfAAlNhNjNlNnAAnO`ObLlLjAB`OdOfOhOjOlOnA@`DhA@bA@dA@fKnLhMnLfABbABhABjA@hA@jA@lA@nAA`AAbAAdLnGbKhKjABlKlAAfL`NdLf0AAn0000AKjAKl````AGhAGjAGlAGn011111111321032100032103210321011032103210321000003210332100321032100321032103210333321011111100033311111111111111012211111100011111110222223210321032103210001333332100```AHjAHbAHf202022222020202020202202020120220202020``AHnAHl10`101000101010101000000```010101010``````AIjAAhAIl21AJ`AJb2AJd542130354354354355421305421305421305421300542130543545421304542130213213521321335445430542130542130213542130454213053","f":"```````````````{{bd}f}00000{{{b{h}}}{{b{{l{j}}}}}}{{{b{h}}}{{b{{n{j}}}}}}1{b{{b{c}}}{}}0000000{{{b{A`}}}{{b{A`c}}}{}}0000000{{{b{h}}}h}{{{b{Ab}}}Ab}{{{b{Ad}}}Ad}{{{b{Af}}}Af}{{{b{Ah}}}Ah}{{{b{Aj}}}Aj}{{b{b{A`c}}}f{}}00000{{bj}f}00000{{{b{h}}{b{h}}}Al}{{{b{Ad}}{b{Ad}}}Al}{{{b{Af}}{b{Af}}}Al}{{{b{Aj}}{b{Aj}}}Al}{{b{b{c}}}Al{}}000{{{b{Ah}}{b{Af}}}An}{{AfB`}Ah}`{Bb{{b{c}}}{}}0000{{{b{Af}}}b}111{Bb{{b{A`c}}}{}}0000000{c{{Bd{h}}}Bf}{c{{Bd{Ab}}}Bf}{c{{Bd{Ad}}}Bf}{c{{Bd{Af}}}Bf}{c{{Bd{Aj}}}Bf}{{{b{Ad}}}{{`{{Bl{}{{Bh{{b{Bj}}}}}}}}}}```{Bbf}0000000{{}Ah}`{{{b{h}}{b{h}}}An}{{{b{Ad}}{b{Ad}}}An}{{{b{Af}}{b{Af}}}An}{{{b{Ah}}{b{Ah}}}An}{{{b{Aj}}{b{Aj}}}An}{{b{b{c}}}An{}}00000000000000{{{b{h}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Cb}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Ab}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Ad}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Af}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Cd}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Ah}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Aj}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{h}}}Cf}{Chh}{cc{}}{CjCb}1{ClCb}{{{l{j}}}Ab}3{CnAb}4{hAd}{{{Db{h{D`{Af}}{b{{n{Bj}}}}}}}Ad}{DdAd}{DfAd}{DhAd}9{DjAf}:{DlCd};;{{{b{{l{j}}}}}{{Bd{hCj}}}}{{{b{{l{j}}}}}Ab}{e{{Bd{AhDn}}}{{Eb{{E`{Aj}}}}}{{Ed{}{{Bh{c}}}}}}{{h{D`{Af}}c}Ad{{Ed{}{{Bh{Bj}}}}}}{{{b{c}}}c{}}00000{{{b{Ef}}}{{Bd{h}}}}{{{b{Ef}}}{{Bd{Ab}}}}{{{b{Ef}}}{{Bd{Af}}}}{AfAh}{cAbEh}{{{b{Ah}}{b{Af}}}{{D`{{b{{E`{Aj}}}}}}}}{{{b{h}}{b{A`c}}}fEj}{{{b{Af}}{b{A`c}}}fEj}{{}Bb}0000000{{}c{}}0000000{{{b{Ad}}}An}{{{b{Ah}}}An}{{{b{Ah}}}Bb}`{hAd}`{{{b{Ah}}}{{`{{Bl{}{{Bh{{b{{E`{Aj}}}}}}}}}}}}{{{b{h}}{b{h}}}{{D`{Al}}}}{{{b{Ad}}{b{Ad}}}{{D`{Al}}}}{{{b{Af}}{b{Af}}}{{D`{Al}}}}{{{b{Aj}}{b{Aj}}}{{D`{Al}}}}`{{{b{h}}}Ch}{{{b{Ab}}}h}`{{{b{Ad}}}{{D`{{b{Af}}}}}}`{{{b{Ab}}}{{b{Cn}}}}{{{b{h}}c}BdEl}{{{b{Ab}}c}BdEl}{{{b{Ad}}c}BdEl}{{{b{Af}}c}BdEl}{{{b{Aj}}c}BdEl}{{{b{Ab}}{b{{n{j}}}}}En}{{{b{Cb}}}{{D`{{b{F`}}}}}}{{{b{Cd}}}{{D`{{b{F`}}}}}}```{{{b{Ab}}}{{l{j}}}}{bc{}}00000{bCf}000000{c{{Bd{e}}}{}{}}{{{b{{n{j}}}}}{{Bd{h}}}}{{{b{{l{j}}}}}{{Bd{h}}}}22{{{b{{n{j}}}}}{{Bd{Ab}}}}33333{{}{{Bd{c}}}{}}0000000{bFb}0000000`{{{b{Ah}}}{{`{{Bl{}{{Bh{{b{Af}}}}}}}}}}{{{b{h}}{b{{n{j}}}}{b{En}}}{{Bd{fCj}}}}{{}c{}}0000000`{{Adc}Ad{{Ed{}{{Bh{Bj}}}}}}{{AdAf}Ad}``````````{{}Aj}00{{}Ah}``110```{{bd}f}{{{b{A`Fd}}c}fFf}{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}0{{{b{Fh}}}Fh}{{b{b{A`c}}}f{}}{{bj}f}{{}Fd}{Bb{{b{c}}}{}}0{Bb{{b{A`c}}}{}}0`{Bbf}03{{{b{Fh}}{b{A`Bn}}}Fj}{{{b{Fd}}{b{A`Bn}}}Fj}{cc{}}0{cFd{{Ed{}{{Bh{{Fl{Ff}}}}}}}}{{{b{c}}}c{}}{{{Fn{{Fl{Ff}}}}}Fd}{{}Bb}0{{}c{}}0`````{{{b{Ff}}{D`{{b{Af}}}}{b{{G`{Bj}}}}}f}{{{b{Fd}}{D`{{b{Af}}}}{b{{G`{Bj}}}}}f}{{{b{Ff}}GbGd}{{D`{{Gh{{Gf{Fh}}}}}}}}{{{b{Fd}}GbGd}{{D`{{Gh{{Gf{Fh}}}}}}}}`{{{b{Ff}}}{{D`{{Gh{Fh}}}}}}{{{b{Fd}}}{{D`{{Gh{Fh}}}}}}{bc{}}{c{{Bd{e}}}{}{}}0{{}{{Bd{c}}}{}}0{bFb}0{{}c{}}0```{b{{b{c}}}{}}{{{b{A`}}}{{b{A`c}}}{}}{Bb{{b{c}}}{}}{Bb{{b{A`c}}}{}}{Bbf}{{{b{Gj}}{b{A`Bn}}}Fj}{cc{}}{{}Bb}{{}c{}}{{}Gj}{CfGj}{{{b{Gj}}GbGd}{{D`{{Gh{{Gf{Fh}}}}}}}}?>=<``;:987{{{b{Gl}}{b{A`Bn}}}Fj}654{Gd{{Gf{Gl}}}}{{{b{Gl}}{D`{{b{Af}}}}{b{{G`{Bj}}}}}f}{{{b{Gl}}GbGd}{{D`{{Gh{{Gf{Fh}}}}}}}}{{{b{Gl}}}{{D`{{Gh{Fh}}}}}}{c{{Bd{e}}}{}{}}{{}{{Bd{c}}}{}}{bFb}{{}c{}}```````{{bd}f}00{b{{b{c}}}{}}00{{{b{A`}}}{{b{A`c}}}{}}00{{{b{Gn}}}Gn}{{{b{H`}}}H`}{{{b{Hb}}}Hb}{{b{b{A`c}}}f{}}00{{bj}f}00{Bb{{b{c}}}{}}00{Bb{{b{A`c}}}{}}00`{Bbf}{{{b{A`Gn}}}f}11{{{b{Gn}}{b{A`Bn}}}Fj}{{{b{H`}}{b{A`Bn}}}Fj}{{{b{Hb}}{b{A`Bn}}}Fj}{cc{}}00{{{b{c}}}c{}}00{{}Bb}00{{}c{}}00{AbGn}{{}H`}{{AbDj}Gn}{DjH`}{DjHb}{{{b{Gn}}{D`{{b{Af}}}}{b{{G`{Bj}}}}}f}{{{b{Hb}}{b{Hd}}}{{Gf{f}}}}{{{b{H`}}GbGd}{{D`{{Hf{{Gf{Fh}}}}}}}}{{{b{Hb}}Gd}{{Gf{Hd}}}}{bc{}}00{c{{Bd{e}}}{}{}}00{{}{{Bd{c}}}{}}00{bFb}007{{}c{}}00{{AbDjHhHj}Gn}``{{bd}f}{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}0{Hl{{Gf{Hn}}}}{{}Hl}{{HlI`}Hl}{{{b{Hn}}}Hn}{{b{b{A`c}}}f{}}{{bj}f}{{}Hn}5{Bb{{b{c}}}{}}0{Bb{{b{A`c}}}{}}0{{HlAn}Hl}{Bbf}0{{{b{Hn}}{b{A`Bn}}}Fj}{{{b{Hl}}{b{A`Bn}}}Fj}{cc{}}0{{{b{c}}}c{}}5{{}Bb}0{{HlHj}Hl}{{}c{}}0{HlHl}{{HlDj}Hl}{{{b{Hn}}{D`{{b{Af}}}}{b{{G`{Bj}}}}}f}4{{{b{Hn}}GbGd}{{D`{{Gh{{Gf{Fh}}}}}}}}{{HlAb}Hl}{bc{}}{c{{Bd{e}}}{}{}}0{{}{{Bd{c}}}{}}0{{HlHh}Hl}{bFb}0{{}c{}}0``{{{b{Ib}}c}f{{Eb{Ad}}}}{b{{b{c}}}{}}{{{b{A`}}}{{b{A`c}}}{}}{{}Ib}{Bb{{b{c}}}{}}{Bb{{b{A`c}}}{}}{Bbf}{{{b{Ib}}{b{A`Bn}}}Fj}{cc{}}{eIb{{Eb{Ad}}}{{Ed{}{{Bh{c}}}}}}{{{b{Ib}}Gd}{{D`{Ad}}}}{{}Bb}{{}c{}}9{{{b{Ib}}{D`{{b{Af}}}}{b{{G`{Bj}}}}}f}3{{{b{Ib}}GbGd}{{D`{{Gh{{Gf{Fh}}}}}}}}{{{b{Ib}}c}{{D`{Ad}}}{{Eb{Ad}}}}{c{{Bd{e}}}{}{}}{{}{{Bd{c}}}{}}{bFb}{{}c{}}``{{}{{b{Id}}}}{{{b{If}}{b{Gd}}{b{Ef}}}{{`{{Ij{}{{Ih{{Gf{Ad}}}}}}}}}}{{{b{Id}}{b{Gd}}{b{Ef}}}{{Gf{Ad}}}}{{{b{If}}{b{Gd}}{b{Ef}}{b{{n{Il}}}}}{{`{{Ij{}{{Ih{{Gf{Ad}}}}}}}}}}{{{b{Id}}{b{Gd}}{b{Ef}}{b{{n{Il}}}}}{{Gf{Ad}}}}{{{b{If}}{b{Ef}}}{{`{{Ij{}{{Ih{{Gf{Ad}}}}}}}}}}{{{b{Id}}{b{Ef}}}{{Gf{Ad}}}}{{{b{If}}{b{Ef}}{b{{n{Il}}}}}{{`{{Ij{}{{Ih{{Gf{Ad}}}}}}}}}}{{{b{Id}}{b{Ef}}{b{{n{Il}}}}}{{Gf{Ad}}}}{{{b{If}}cHj}{{`{{Ij{}{{Ih{{Gf{{`{{Bl{}{{Bh{In}}}}}}}}}}}}}}}J`}{{{b{Id}}cHj}{{Gf{{`{{Bl{}{{Bh{In}}}}}}}}}J`}{{{b{If}}cHj}{{`{{Ij{}{{Ih{{Gf{{`{{Bl{}{{Bh{In}}}}}}}}}}}}}}}{J`Jb}}{{{b{Id}}cHj}{{Gf{{`{{Bl{}{{Bh{In}}}}}}}}}{J`Jb}}{{{b{If}}cHj{b{{n{Il}}}}}{{`{{Ij{}{{Ih{{Gf{{`{{Bl{}{{Bh{In}}}}}}}}}}}}}}}{J`Jb}}{{{b{Id}}cHj{b{{n{Il}}}}}{{Gf{{`{{Bl{}{{Bh{In}}}}}}}}}{J`Jb}}105410`{{}{{b{Jd}}}}``````{{bd}f}{{{b{Jf}}}{{b{Ef}}}}{{{b{{Jh{c}}}}}{{b{{Jj{c{Fn{Cf}}}}}}}{JlJnK`Kb}}{b{{b{c}}}{}}00{{{b{A`}}}{{b{A`c}}}{}}00{{{b{Df}}}Df}{{b{b{A`c}}}f{}}{{bj}f}{{{b{Jf}}{b{Jf}}}Al}{{b{b{c}}}Al{}}{Bb{{b{c}}}{}}00{Bb{{b{A`c}}}{}}00`{Bbf}00{{{b{Jf}}{b{Jf}}}An}{{{b{Df}}{b{Df}}}An}{{b{b{c}}}An{}}00000{{{b{Jf}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Jf}}{b{A`Bn}}}Fj}{{{b{Df}}{b{A`Bn}}}Fj}{{{b{{Jh{c}}}}{b{A`Bn}}}FjKd}{cc{}}0{{{Jh{Jf}}}Df}{{{b{{Jh{Jf}}}}}Df}2{{{b{Df}}}{{Jh{Jf}}}}{{{b{{n{Kf}}}}}{{Gf{Df}}}}{{{b{{n{Kf}}}}}{{Gf{{Jh{c}}}}}{JlJnK`Kb}}{{Gde}{{Jh{c}}}{JlJnK`Kb}{{Bl{}{{Bh{{Db{cCf}}}}}}}}{{{b{Hd}}}{{Gf{Df}}}}{{{b{Hd}}}{{Gf{{Jh{c}}}}}{JlJnK`Kb}}{{{b{c}}}c{}}{{{b{Ef}}}{{Bd{Jfc}}}{}}{{Gdc}{{Gf{{Jh{e}}}}}{{Bl{}{{Bh{Cf}}}}}{JlJnK`Kb}}{{{b{Ef}}}{{Gf{Gd}}}}{{{b{Jf}}{b{A`c}}}fEj}{{}Bb}00{{}c{}}00{{{b{Jd}}{b{Gd}}{b{Ef}}}{{Gf{{Jh{c}}}}}{JlJnK`Kb}}{{{b{Jd}}{b{Ef}}}{{Gf{{Jh{c}}}}}{JlJnK`Kb}}{{Gd{D`{Dj}}{G`{Bj}}}Df}{{{b{{Jh{c}}}}}Gd{JlJnK`Kb}}`{{{b{Jf}}{b{Jf}}}{{D`{Al}}}}`{{{b{Df}}{b{Ef}}Hh}{{Gf{{`{{Bl{}{{Bh{Kf}}}}}}}}}}{{{b{{Jh{c}}}}{b{Ef}}Hh}{{Gf{{`{{Bl{}{{Bh{Kf}}}}}}}}}{JlJnK`Kb}}{bc{}}{{{b{Df}}{b{Ab}}Hh}{{Gf{Hd}}}}{{{b{{Jh{c}}}}{b{Ab}}Hh}{{Gf{Hd}}}{JlJnK`Kb}}{bCf}{{{b{Gd}}}Cf}{{{b{Ef}}}{{Bd{Jfc}}}{}}{c{{Bd{e}}}{}{}}00{{}{{Bd{c}}}{}}00{bFb}00{{}c{}}00`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{{bd}f}00000000000000000000000000000000{{{b{Gb}}}Kh}{Kj{{Gf{KlKn}}}}{{{b{L`}}}Lb}{{{b{L`}}}Ld}{{Kj{E`{Lf}}}{{Gf{KlKn}}}}{{{b{A`Lh}}Lj}{{b{A`Lh}}}}`{{{b{A`Ll}}{D`{Lh}}}{{b{A`Ll}}}}`{{Lne}LnFf{{M`{{b{Ab}}}{{Ih{{D`{c}}}}}}MbMd}}{{{b{Gb}}Ad}{{Gf{f}}}}{{{b{Gb}}Ad{b{Ef}}}{{Gf{f}}}}```{{{b{Mf}}{b{{n{j}}}}}{{Fl{Mh}}}}{{{b{A`Ll}}An}{{b{A`Ll}}}}{{{b{A`Kl}}}{{Gf{{Fn{j}}}}}}{{Ln{Fn{{Fn{j}}}}}Ln}{Ln{{Gf{Gb}}}}{{LnMj}Ln}{{LnMl}Ln}{{{b{A`Mn}}Hj}{{b{A`Mn}}}}`{b{{b{c}}}{}}0000000000000000000000000000000000000000000000000000{{{b{A`}}}{{b{A`c}}}{}}0000000000000000000000000000000000000000000000000000{{{b{Gb}}}{{Db{Bj{D`{Bj}}}}}}{{{E`{N`}}NbB`}{{Fl{Nd}}}}{{}Ln}````{LnLn}{{{b{L`}}}L`}{{{b{Nf}}}Nf}{{{b{Nh}}}Nh}{{{b{Nj}}}Nj}{{{b{Nl}}}Nl}{{{b{Nn}}}Nn}{{{b{O`}}}O`}{{{b{Ob}}}Ob}{{{b{Lj}}}Lj}{{{b{Od}}}Od}{{{b{Of}}}Of}{{{b{Oh}}}Oh}{{{b{Oj}}}Oj}{{{b{Ol}}}Ol}{{{b{On}}}On}{{{b{A@`}}}A@`}{{{b{Dh}}}Dh}{{{b{A@b}}}A@b}{{{b{A@d}}}A@d}{{{b{A@f}}}A@f}{{{b{Kn}}}Kn}{{{b{Lh}}}Lh}{{{b{Mn}}}Mn}{{{b{Lf}}}Lf}{{{b{A@h}}}A@h}{{{b{A@j}}}A@j}{{{b{A@l}}}A@l}{{{b{A@n}}}A@n}{{{b{AA`}}}AA`}{{{b{AAb}}}AAb}{{{b{AAd}}}AAd}{{{b{Gb}}}Gb}{{{b{AAf}}}AAf}{{{b{Nd}}}{{Fl{Nd}}}}{{b{b{A`c}}}f{}}00000000000000000000000000000000{{bj}f}00000000000000000000000000000000{{{b{L`}}Lj{b{{n{j}}}}}f}{{{b{Gb}}}{{Gf{f}}}}{{{b{L`}}}{{D`{Kn}}}}{{{b{L`}}}Kn}{{{b{Lj}}{b{Lj}}}Al}{{{b{AA`}}{b{AA`}}}Al}{{{b{AAb}}{b{AAb}}}Al}{{{b{AAd}}{b{AAd}}}Al}`{{b{b{c}}}Al{}}000{{{b{A`Ll}}{E`{N`}}}{{b{A`Ll}}}}`{{{b{L`}}}{{Fl{Nd}}}}{{{b{Gb}}Gd}{{Gf{{AAh{A@b}}}}}}`{{{b{Gb}}c{b{{n{j}}}}}{{Gf{L`}}}{{Eb{Ad}}}}`{jA@n}``{{{b{A`Ll}}Bb}{{b{A`Ll}}}}````{{{b{A`Ll}}{D`{Bb}}}{{b{A`Ll}}}}1{{{b{L`}}}Bb}`{{}Ll}{{}Lj}{{}Od}{{}Of}{{}Oh}{{}Oj}{{}A@`}{{}A@b}{{}Lh}{{}Mn}{{}Ln}{{}AAf}{Bb{{b{c}}}{}}0000000000000000000000000000000000000000000000000000{Bb{{b{A`c}}}{}}0000000000000000000000000000000000000000000000000000{c{{Bd{Ol}}}Bf}{c{{Bd{On}}}Bf}{c{{Bd{Dh}}}Bf}{c{{Bd{A@b}}}Bf}{c{{Bd{A@f}}}Bf}{AAdAAj}{{{b{Gb}}}{{AAh{{D`{{G`{AA`}}}}}}}}{{Ln{Fl{Ff}}}Ln}{{{b{Gb}}}{{D`{{b{Ff}}}}}}{LnLn}00{{LnId}Ln}{{{b{Gb}}}{{b{Id}}}}{Bbf}000000000{{{b{A`AAl}}}f}11111{{{b{A`AAn}}}f}22222222222222222222222222222222222222{{{b{A`Ll}}An}{{b{A`Ll}}}}{{{b{Nf}}{b{Nf}}}An}{{{b{Nh}}{b{Nh}}}An}{{{b{Nj}}{b{Nj}}}An}{{{b{Nl}}{b{Nl}}}An}{{{b{Nn}}{b{Nn}}}An}{{{b{O`}}{b{O`}}}An}{{{b{Ob}}{b{Ob}}}An}{{{b{Lj}}{b{Lj}}}An}{{{b{AB`}}{b{AB`}}}An}{{{b{Ol}}{b{Ol}}}An}{{{b{On}}{b{On}}}An}{{{b{A@`}}{b{A@`}}}An}{{{b{Dh}}{b{Dh}}}An}{{{b{A@b}}{b{A@b}}}An}{{{b{A@d}}{b{A@d}}}An}{{{b{A@f}}{b{A@f}}}An}{{{b{Kn}}{b{Kn}}}An}{{{b{ABb}}{b{ABb}}}An}{{{b{A@h}}{b{A@h}}}An}{{{b{A@j}}{b{A@j}}}An}{{{b{A@l}}{b{A@l}}}An}{{{b{A@n}}{b{A@n}}}An}{{{b{AA`}}{b{AA`}}}An}{{{b{AAb}}{b{AAb}}}An}{{{b{AAd}}{b{AAd}}}An}{{{b{AAf}}{b{AAf}}}An}{{b{b{c}}}An{}}00000000000000000000000000000000000000000000000000000000000000000000000000000``{{{b{L`}}{b{A`{n{j}}}}{b{{n{j}}}}{b{{n{j}}}}}{{Bd{fABb}}}}{{{b{A`AAn}}}{{Bd{fA@d}}}}{{{b{L`}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{ABd}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Nf}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{ABf}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{AAl}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Nh}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Nj}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Nl}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Nn}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{AAn}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{O`}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Ob}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Ll}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Lj}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{AB`}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Od}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Of}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Oh}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Oj}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Ol}}{b{A`Bn}}}Fj}0{{{b{On}}{b{A`Bn}}}Fj}{{{b{A@`}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Dh}}{b{A`Bn}}}Fj}{{{b{A@b}}{b{A`Bn}}}Fj}0{{{b{A@d}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{A@f}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{A@f}}{b{A`Bn}}}Fj}{{{b{Kn}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Lh}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Mn}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Lf}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{ABb}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{ABh}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{ABj}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{A@h}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{A@j}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{A@l}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{A@n}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{AA`}}{b{A`Bn}}}Fj}{{{b{AAb}}{b{A`Bn}}}Fj}0{{{b{AAd}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Ln}}{b{A`Bn}}}Fj}{{{b{Gb}}{b{A`Bn}}}Fj}{{{b{Kh}}{b{A`Bn}}}Fj}{{{b{Kj}}{b{A`Bn}}}Fj}{{{b{ABl}}{b{A`Bn}}}Fj}{{{b{Kl}}{b{A`Bn}}}Fj}{{{b{AAf}}{b{A`Bn}}}Fj}{{}An}````{cc{}}0000000{KnNf}111{NjNh}22{NlNj}{KnNj}{ABnNj}{KnNl}6{NjNn}77{A@dO`}8{ObO`}{KnO`}:{KnOb};{B`Lj}<{jLj}{AAdLj}{HhLj}????????????{AC`Kn}{A@lKn}{cc{}}0000{ACbABh}111{A@lA@h}2{A@nA@l}{ACdA@l}4{ACfA@l}5555{LjAAd}6666666{{{b{c}}}c{}}00000000000000000000000000000000:{Il{{Bd{LjACh}}}}{IlLj}{{{b{L`}}}{{Gf{h}}}}{{{b{L`}}}{{D`{{Fl{ACj}}}}}}{{{b{A`Kl}}}{{Gf{{Fl{ACj}}Kn}}}}`{{{b{Dh}}}An}{{{b{Lj}}{b{A`c}}}fEj}{{{b{A@f}}{b{A`c}}}fEj}{{{b{AA`}}{b{A`c}}}fEj}{{{b{AAb}}{b{A`c}}}fEj}{{{b{AAd}}{b{A`c}}}fEj}{{{b{Gb}}}{{AAh{{D`{Af}}}}}}{{{b{AAl}}}AAd}{{{b{AAn}}}AAd}{Kjf}`{{{b{A`Lf}}Il}{{b{A`Lf}}}}0{AAdIl}{{}Bb}0000000000000000000000000000000000000000000000000000{{{b{ACl}}Hh{b{ACn}}}{{Bd{AD`ABj}}}}{{{b{A`Ll}}B`}{{b{A`Ll}}}}{{{b{A`Ll}}Hj}{{b{A`Ll}}}}{{{b{Nd}}}Il}{AAdADb}{{LnAn}Ln}{{{b{A`Mn}}Hj}{{b{A`Mn}}}}{{}c{}}0000000000000000000000000000000000000000000000000000{Kl{{Gf{{Db{L`ADd}}Kl}}}}{{{Fl{Nd}}}{{Fl{ACj}}}}{{}}000000{Kjc{}}11{ABfADf}{LjIl}`{{{b{AAl}}}An}{{{b{ABd}}}An}{{{b{Gb}}}An}{c{{ADh{e}}}ADjIj}00000000{{{b{A`Ll}}{D`{Hj}}}{{b{A`Ll}}}}={{Ln{Fn{Ad}}}Ln}```{{{b{Dh}}}{{D`{Hj}}}}```{{{b{L`}}}{{D`{In}}}}{{{b{Kj}}}{{D`{In}}}}{{{b{Kl}}}{{D`{In}}}}```{{{b{Ab}}{Fn{{Fn{j}}}}{E`{Ll}}An}{{Gf{Lf}}}}{{{b{A`Lh}}{D`{Hj}}}{{b{A`Lh}}}}{{{b{A`Ll}}Lj}{{b{A`Ll}}}}0`{{{b{L`}}}{{D`{Bb}}}}{{{b{A`Ll}}{D`{ADl}}}{{b{A`Ll}}}}{{{b{A`Lf}}Bb}{{b{A`Lf}}}}```{{{b{A`Lf}}An}{{b{A`Lf}}}}{{{b{A`Ll}}B`}{{b{A`Ll}}}}{{{b{A`Mn}}B`}{{b{A`Mn}}}}{{{b{A`Ll}}{D`{Mn}}}{{b{A`Ll}}}}{{{b{Gb}}}f}{{{b{ABd}}}An}{{{E`{ACl}}{E`{Mf}}}Lf}{{ADbAAjIl}AAd}``{{{b{Gb}}}{{Gf{Ad}}}}{{{b{Gb}}}Gd}``{{{b{L`}}}{{ADn{{D`{Bj}}}}}}`{{{b{A`Nd}}NbNbIlAn{b{AE`}}}f}{{{b{A`Nd}}NbNbAnIl}f}{{{b{A`Nd}}NbIlAn{D`{Il}}}f}{{{b{A`Nd}}B`}f}{{{b{A`Nd}}NbIlIl}f}{{{b{Mh}}{b{A`{n{j}}}}{b{{n{j}}}}}{{Bd{{b{A`{n{j}}}}ABh}}}}{{{b{L`}}}AEb}{{{b{L`}}}AEd}{{{b{A`Ll}}Hh}{{b{A`Ll}}}}{{{b{Lj}}{b{Lj}}}{{D`{Al}}}}{{{b{AA`}}{b{AA`}}}{{D`{Al}}}}{{{b{AAb}}{b{AAb}}}{{D`{Al}}}}{{{b{AAd}}{b{AAd}}}{{D`{Al}}}}```{{{b{L`}}}{{D`{{Fl{ACj}}}}}}5`{{{AEf{{b{A`ADd}}}}{b{A`AEh}}}AEj}{{{AEf{{b{A`AEd}}}}{b{A`AEh}}}AEj}{{{AEf{{b{A`AEb}}}}{b{A`AEh}}}AEj}{{{AEf{{b{A`Ld}}}}{b{A`AEh}}}AEj}{{{AEf{{b{A`Lb}}}}{b{A`AEh}}}AEj}{{{AEf{{b{A`AEl}}}}{b{A`AEh}}}AEj}{{{AEf{{b{A`Kh}}}}{b{A`AEh}}}{{AEj{c}}}{}}{{{AEf{{b{A`ABl}}}}{b{A`AEh}}}{{AEj{c}}}{}}{{{AEf{{b{A`Kl}}}}{b{A`AEh}}}{{AEj{c}}}{}}{{{AEf{{b{A`AAn}}}}{b{A`AEh}}}{{AEj{{Bd{fAEn}}}}}}{{{b{A`AAl}}{b{A`AEh}}{b{A`{n{j}}}}}{{AEj{{Bd{BbNj}}}}}}{{{AEf{{b{A`AAl}}}}{b{A`AEh}}{b{A`AF`}}}{{AEj{{Bd{fAEn}}}}}}2{{{AEf{{b{A`AAn}}}}{b{A`AEh}}{b{{n{j}}}}}{{AEj{{Bd{BbAEn}}}}}}{{{AEf{{b{A`AAn}}}}{b{A`AEh}}{b{{n{j}}}}}{{AEj{{Bd{BbO`}}}}}}{{{b{A`Lf}}{D`{Mj}}}{{b{A`Lf}}}}{{{b{A`Lf}}{D`{Ml}}}{{b{A`Lf}}}}{{{b{AAn}}}{{Bd{AFbA@d}}}}{LnLn}{{LnDj}Ln}{e{{AFd{cg}}}{}{{ADj{}{{Ih{c}}}}}{{Ij{}{{Ih{c}}}}}}00000000{{{b{A`AAl}}{b{A`{n{j}}}}}{{Bd{{D`{Bb}}Nj}}}}{{{b{A`AAl}}BbAn}{{Bd{{D`{AB`}}Nj}}}}{{{b{A`AAl}}{b{A`{n{AFf}}}}}{{Bd{{D`{Bb}}Nj}}}}{{{b{L`}}}AEl}{{{b{A`AAl}}{b{A`{n{j}}}}}{{Bd{fNn}}}}{{{b{A`AAl}}Bb}{{Bd{{Fn{j}}Nh}}}}```{{{b{A`Ll}}An}{{b{A`Ll}}}}{{{b{A`Ll}}Lj}{{b{A`Ll}}}}{{{b{A`AAl}}}{{Bd{{D`{Lj}}Nl}}}}{Kjf}{{{b{AAf}}}Ah}{{LnAAf}Ln}`{{{b{L`}}}Bj}{{{b{Kj}}}Bj}{{{b{Kl}}}Bj}{{{b{Kj}}}An}{{{b{Gb}}Gd}{{D`{Dh}}}}{{{b{Gb}}}{{`{{Bl{}{{Bh{Dh}}}}}}}}{{{b{A`Lh}}Lj}{{b{A`Lh}}}}{{{b{A`AAn}}Lj}{{Bd{fA@d}}}}``{Kj{{Gf{fABf}}}}{{{b{ACl}}Hh{b{ACn}}{b{{n{j}}}}}{{l{j}}}}{{{b{A`Lf}}Hj}{{b{A`Lf}}}}{{{b{L`}}}Hj}`{{Ljc}Lj{{Eb{Lj}}}}{{{b{Mh}}{b{A`{Fn{j}}}}{b{{n{j}}}}}{{Bd{fABh}}}}{{LnAb}Ln}{{{b{Gb}}}{{b{Ab}}}}{{{b{L`}}AFf}{{Bd{fNf}}}}{{{b{L`}}AFf}AFh}{{{b{A`Ll}}An}{{b{A`Ll}}}}{{{b{A`Ll}}Il}{{b{A`Ll}}}}``{{{b{Ol}}c}BdEl}{{{b{On}}c}BdEl}{{{b{Dh}}c}BdEl}{{{b{A@b}}c}BdEl}{{{b{A@f}}c}BdEl}{{{b{Gb}}{Fn{{Fn{j}}}}}{{Gf{f}}}}{{{b{L`}}Lj}f}0{{{b{AAn}}AFb}{{Bd{fA@d}}}}1{{{b{Nf}}}{{D`{{b{F`}}}}}}{{{b{Nh}}}{{D`{{b{F`}}}}}}{{{b{Nj}}}{{D`{{b{F`}}}}}}{{{b{Nl}}}{{D`{{b{F`}}}}}}{{{b{Nn}}}{{D`{{b{F`}}}}}}{{{b{O`}}}{{D`{{b{F`}}}}}}{{{b{Ob}}}{{D`{{b{F`}}}}}}{{{b{Kn}}}{{D`{{b{F`}}}}}}{{{b{Dh}}}{{Fn{{Db{A@fHj}}}}}}`{{{b{L`}}}Bb}{{{E`{ACl}}Hh{b{AFj}}}{{Fl{AFl}}}}{{{b{L`}}}Oj}{{{b{A`AAl}}Lj}{{Bd{fA@d}}}}`{{{b{A`AAn}}}{{Bd{{D`{Lj}}Ob}}}}``{{{b{A`Ll}}Lj}{{b{A`Ll}}}}``{{{b{A`Ll}}AFn}{{b{A`Ll}}}}{bc{}}00000000000000000000000000000000{bCf}0000000000000000000{{{b{A`Lf}}{E`{Mf}}}{{b{A`Lf}}}}`{{{b{A`Lf}}{E`{Ll}}}{{b{A`Lf}}}}{{LnLl}Ln}{c{{Bd{e}}}{}{}}000000000000000000{Il{{Bd{LjACh}}}}1{AG`{{Bd{LjACh}}}}{Bb{{Bd{LjACh}}}}333333333333333333333333333333333{{}{{Bd{c}}}{}}0000000000000000000000000000000000000000000000000000{{{AEf{{b{A`c}}}}{b{A`AEh}}}AEj{}}000000`{bFb}0000000000000000000000000000000000000000000000000000``{{{b{A`Mn}}B`}{{b{A`Mn}}}}{{}c{}}0000000000000000000000000000000000000000000000000000{{{b{L`}}}ABd}{{{b{Nd}}}Il}{{{E`{ACl}}}Lf}{{{Fn{AGb}}AGd}{{Bd{LfAGf}}}}{{{b{A`AAn}}{b{{n{j}}}}}{{Bd{BbO`}}}}{{{b{A`AAn}}{b{{n{j}}}}}{{Bd{fO`}}}}{{{b{A`AAn}}{b{A`{n{AFf}}}}}{{Bd{fO`}}}}{{{b{A`AAn}}AFf}{{Bd{fO`}}}}{{{b{A`AAn}}{b{A`{n{AFf}}}}}{{Bd{A@`O`}}}}``````{{bd}f}000`````````{b{{b{c}}}{}}000{{{b{A`}}}{{b{A`c}}}{}}000``{{{b{AGh}}}AGh}{{{b{AGj}}}AGj}{{{b{AGl}}}AGl}{{{b{AGn}}}AGn}{{b{b{A`c}}}f{}}000{{bj}f}000```{{}AGh}{{}AGj}{{}AGl}{{}AGn}{Bb{{b{c}}}{}}000{Bb{{b{A`c}}}{}}000````{Bbf}000`{{{b{AGh}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{AGj}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{AGl}}{b{A`Bn}}}Fj}{{{b{AGn}}{b{A`Bn}}}{{Bd{fC`}}}}`{cc{}}000{{{b{c}}}c{}}000`{{}Bb}000{{}c{}}000{{{b{AGh}}}{{AH`{{Db{{b{Ef}}{b{ACj}}}}}}}}{{{b{AGj}}}{{AH`{{Db{{b{Ef}}{b{ACj}}}}}}}}{{{b{AGl}}}{{AH`{{Db{{b{Ef}}{b{ACj}}}}}}}}{{{b{AGn}}}{{AH`{{Db{{b{Ef}}{b{ACj}}}}}}}}```{{}{{b{Ef}}}}000````````````````````````````````````````````````````{bc{}}000{c{{Bd{e}}}{}{}}000{{}{{Bd{c}}}{}}000{bFb}000```````{{}c{}}000````{{bd}f}{{{b{AHb}}Kl}{{AHd{{Gf{f}}}}}}{{AHfce}AHf{{AHh{{n{j}}}}}AHb}{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}0{GbAHf}{{{b{AHj}}}AHj}{{b{b{A`c}}}f{}}{{bj}f}{Bb{{b{c}}}{}}0{Bb{{b{A`c}}}{}}0{Bbf}0{{{b{AHj}}}{{b{Gb}}}}{{{b{AHf}}}{{b{Gb}}}}{{{b{AHj}}{b{A`Bn}}}Fj}{{{b{AHf}}{b{A`Bn}}}Fj}{cc{}}0{{{b{c}}}c{}}{{}Bb}0{{}c{}}0{{{b{AHj}}}An}?{{{b{AHb}}}{{AHd{f}}}}{{{b{AHj}}}{{Gf{f}}}}{AHf{{Gf{AHj}}}}{bc{}}{c{{Bd{e}}}{}{}}0{{}{{Bd{c}}}{}}0{bFb}0{{}c{}}0``{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}0{Bj{{Gf{Jd}}}}{Bb{{b{c}}}{}}0{Bb{{b{A`c}}}{}}0{{{b{AHl}}Ab}{{Fl{Fd}}}}{{{b{AHl}}}Id}{Bbf}0{{{b{AHn}}{b{A`Bn}}}Fj}{{{b{AHl}}{b{A`Bn}}}Fj}{cc{}}0{{}Bb}0{{}c{}}0``{{{b{AHl}}{b{Gd}}Hj}{{Gf{f}}}}`{{}{{Gf{AHl}}}}{{}{{Gf{{Db{AhAfAI`}}}}}}{{{D`{AIb}}An}{{Gf{{Db{AhAfAI`}}}}}}1{Cf{{Gf{AHl}}}}{c{{Bd{e}}}{}{}}0{{}{{Bd{c}}}{}}0{bFb}0{{}c{}}0``````{{bd}f}00{b{{b{c}}}{}}00000{{{b{A`}}}{{b{A`c}}}{}}00000{e{{AId{g}}}{}{{AIf{}{{Bh{c}}}}}{{AIh{}{{Bh{c}}}}}}{{{b{{AIj{c}}}}}{{AIj{c}}}{}}{{{b{{AAh{c}}}}}{{AAh{c}}}Jb}{{{b{{AIl{c}}}}}{{AIl{c}}}Jb}{{b{b{A`c}}}f{}}00{{bj}f}00{{}{{AIj{c}}}AIn}{Bb{{b{c}}}{}}00000{Bb{{b{A`c}}}{}}00000{Bbf}00000{{{b{{AIj{c}}}}{b{A`Bn}}}FjKd}{{{b{{AAh{c}}}}{b{A`Bn}}}FjKd}{{{b{{AJ`{c}}}}{b{A`Bn}}}FjKd}{{{b{{AJb{c}}}}{b{A`Bn}}}FjKd}{{{b{{AIl{c}}}}{b{A`Bn}}}FjKd}{{{b{AJd}}{b{A`Bn}}}Fj}0{cc{}}00000{{{b{c}}}c{}}00{{{b{{AIj{c}}}}}c{JbAJf}}{{{b{{AAh{c}}}}}{{Bd{cAJd}}}{JbAJf}}{{}Bb}00000{{{b{A`{AAh{{D`{c}}}}}}}{{AJb{c}}}{JbAJf}}{{}c{}}00000{{}}0{{}c{}}{c{{ADh{e}}}ADjIj}0{e{{AJh{cg}}}{}{{AIf{}{{Bh{c}}}}}{{AIh{}{{Bh{c}}}}}}{c{{AIj{c}}}{JbAJf}}{{{AEf{{b{A`{AJ`{c}}}}}}{b{A`AEh}}}{{AEj{e}}}{JbAJf}{}}{{{AEf{{b{A`{AJb{c}}}}}}{b{A`AEh}}}{{AEj{e}}}{JbAJf}{}}{{{AEf{{b{A`{AIl{c}}}}}}{b{A`AEh}}}{{AEj{{D`{e}}}}}{JbAJf}{}}{e{{AFd{cg}}}{}{{ADj{}{{Ih{c}}}}}{{Ij{}{{Ih{c}}}}}}0{{{b{{AJl{AJjceg}}}}}{{AJn{iceg}}}AK`AKbAKd{}}{{{b{{AJl{AJjceg}}}}AKf}{{AJn{iceg}}}AK`AKbAKd{}}{{{b{{AIj{c}}}}c}{{Bd{cc}}}{JbAJf}}{{{AAh{c}}}{{AIl{c}}}{JbAJf}}0{bc{}}00{bCf}{c{{Bd{e}}}{}{}}00000{{}{{Bd{c}}}{}}00000{{{AEf{{b{A`c}}}}{b{A`AEh}}}AEj{}}0{{{AEf{{b{A`c}}}}{b{A`AEh}}}{{AEj{{D`{Bd}}}}}{}}{bFb}00000{{{b{A`{AAh{c}}}}}{{AJ`{c}}}{JbAJf}}{{}c{}}00000{{{b{{AIj{c}}}}}{{AAh{c}}}{JbAJf}}{e{{AKh{g}}}{}{{AIf{}{{Bh{c}}}}}{{AIh{}{{Bh{c}}}}}}","D":"FD`","p":[[1,"reference",null,null,1],[5,"Private",2576],[1,"unit"],[5,"PublicKey",0,2577],[1,"u8"],[1,"array"],[1,"slice"],[0,"mut"],[5,"SecretKey",0,2577],[5,"NodeAddr",0,2578],[5,"RelayUrl",0,2579],[5,"RelayMap",0,2580],[5,"RelayNode",0,2580],[6,"Ordering",2581],[1,"bool"],[1,"u16"],[1,"usize"],[6,"Result",2582,null,1],[10,"Deserializer",2583],[17,"Item"],[6,"SocketAddr",2584],[10,"Iterator",2585],[5,"Formatter",2586],[5,"Error",2586],[6,"KeyParsingError",0,2577],[5,"RelayUrlParseError",0,2579],[5,"String",2587],[5,"VerifyingKey",2588],[5,"Error",2589],[5,"DecodeError",2590],[5,"SigningKey",2591],[6,"Option",2592,null,1],[1,"tuple",null,null,1],[5,"NodeTicket",2593],[5,"NodeInfo",564],[5,"RemoteInfo",655,2594],[5,"Url",2595],[6,"ParseError",2596],[5,"Error",2597],[5,"Arc",2598,null,1],[10,"Into",2599],[10,"IntoIterator",2600],[1,"str"],[10,"CryptoRngCore",2601],[10,"Hasher",2602],[10,"Serializer",2603],[5,"Signature",2604],[10,"Error",2605],[5,"TypeId",2606],[5,"ConcurrentDiscovery",298],[10,"Discovery",298],[5,"DiscoveryItem",298],[8,"Result",2586],[5,"Box",2607,null,1],[5,"Vec",2608],[5,"BTreeSet",2609],[5,"Endpoint",655],[8,"NodeId",0,2577],[8,"Result",2597],[8,"Boxed",2610],[5,"DnsDiscovery",351],[5,"LocalSwarmDiscovery",370],[5,"PkarrPublisher",389],[5,"PkarrResolver",389],[5,"PkarrRelayClient",389],[5,"SignedPacket",2611],[8,"BoxStream",2612],[1,"u32"],[5,"Duration",2613],[5,"Builder",466],[5,"DhtDiscovery",466],[5,"PkarrClient",2614],[5,"StaticProvider",515],[8,"DnsResolver",539],[10,"ResolverExt",539],[17,"Output"],[10,"Future",2615,null,1],[1,"u64"],[6,"IpAddr",2616],[10,"IntoName",2617],[10,"Clone",2618],[8,"TokioResolver",2619],[6,"IrohAttr",564],[5,"TxtAttrs",564],[5,"BTreeMap",2620],[10,"FromStr",2621],[10,"Display",2586],[10,"Hash",2602],[10,"Ord",2581],[10,"Debug",2586],[5,"Record",2622],[5,"Accept",655],[5,"Incoming",655],[5,"Connecting",655],[6,"ConnectionError",655,2623],[5,"Connection",655,2624],[5,"AcceptBi",655,2624],[5,"AcceptUni",655,2624],[5,"ServerConfig",655,2625],[5,"AckFrequencyConfig",655,2625],[5,"VarInt",655,2626],[5,"TransportConfig",655,2625],[5,"Builder",655],[10,"FnOnce",2627],[10,"Send",2628],[10,"Sync",2628],[10,"HandshakeTokenKey",655,2629],[10,"AeadKey",655,2629],[5,"SocketAddrV4",2584],[5,"SocketAddrV6",2584],[5,"MtuDiscoveryConfig",655,2625],[10,"ControllerFactory",655,2630],[5,"Instant",2631],[10,"Controller",655,2630],[6,"SendDatagramError",655,2624],[6,"ReadToEndError",655,2632],[6,"ReadError",655,2632],[6,"ResetError",655,2632],[6,"ReadExactError",655,2632],[6,"WriteError",655,2633],[6,"StoppedError",655,2633],[5,"UdpStats",655,2634],[5,"FrameStats",655,2634],[5,"PathStats",655,2634],[5,"ConnectionStats",655,2634],[6,"ControlMsg",655,2594],[5,"DirectAddrInfo",655,2594],[5,"Written",655,2635],[6,"ConnectionType",655,2594],[5,"ClosedStream",655,2636],[6,"Source",655,2637],[5,"ConnectionClose",655,2638],[5,"ApplicationClose",655,2638],[5,"TransportError",655],[5,"TransportErrorCode",655],[5,"DirectAddr",655,2639],[6,"DirectAddrType",655,2639],[5,"StreamId",655,2640],[6,"RelayMode",655],[5,"Watcher",2444],[6,"Dir",2640],[5,"RecvStream",655,2632],[5,"SendStream",655,2633],[5,"Chunk",655,2641],[5,"ExportKeyingMaterialError",655,2629],[5,"WeakConnectionHandle",655,2624],[5,"RetryError",655,2642],[5,"CryptoError",655,2629],[5,"UnsupportedVersion",655,2629],[5,"IncomingFuture",655],[6,"ReadableError",2643],[6,"Close",2638],[5,"Unspecified",2644],[5,"InvalidFrame",2638],[6,"Error",2645],[5,"VarIntBoundsExceeded",2626],[10,"Any",2606],[10,"CryptoServerConfig",655],[5,"ConnectionId",2646],[5,"Keys",2629],[6,"Side",2640],[5,"ZeroRttAccepted",655,2624],[5,"Incoming",2642],[5,"Join2",2647],[10,"IntoFuture",2648],[5,"IdleTimeout",2625],[5,"Receiver",2649],[5,"RttEstimator",2650],[5,"OpenBi",655,2624],[5,"OpenUni",655,2624],[5,"Pin",2651],[5,"Context",2652],[6,"Poll",2653],[5,"ReadDatagram",655,2624],[5,"Error",2654],[5,"ReadBuf",2655],[1,"i32"],[5,"Race2",2656],[5,"Bytes",2657],[5,"SendDatagram",2624],[5,"TransportParameters",2645],[10,"Session",2629],[1,"f32"],[1,"u128"],[5,"CertificateDer",2658],[6,"PrivateKeyDer",2658],[6,"Error",2659],[5,"PortmapMetrics",2183],[5,"NetReportMetrics",2183],[5,"MagicsockMetrics",2183],[5,"RelayMetrics",2183],[5,"IntoIter",2660],[10,"ProtocolHandler",2359],[8,"Boxed",2661],[5,"RouterBuilder",2359],[10,"AsRef",2599],[5,"Router",2359],[5,"DnsPkarrServer",2404,2662],[5,"CleanupDropGuard",2404],[5,"Server",2663],[5,"StunConfig",2663],[5,"Chain2",2664],[10,"IntoStream",2665],[10,"Stream",2612],[5,"Watchable",2444],[5,"WatcherStream",2444],[10,"Default",2666],[5,"WatchNextFut",2444],[5,"WatchInitializedFut",2444],[5,"Disconnected",2444],[10,"Eq",2581],[5,"Merge2",2667],[6,"NotKeyed",2668],[5,"RateLimiter",2669],[5,"RatelimitedStream",2670],[10,"DirectStateStore",2668],[10,"ReasonablyRealtime",2671],[10,"RateLimitingMiddleware",2672],[5,"Jitter",2673],[5,"Zip2",2674],[15,"Discovery",2181],[15,"NamedApp",2181]],"r":[[2,655],[4,2577],[6,2578],[7,2577],[8,2577],[9,2580],[10,655],[11,2580],[12,2579],[13,2579],[14,2577],[282,2675],[283,2675],[658,2624],[659,2624],[660,2625],[661,2629],[663,2638],[670,2641],[672,2636],[676,2624],[677,2638],[679,2623],[685,2634],[686,2594],[687,2594],[688,2630],[689,2630],[690,2629],[695,2639],[696,2594],[697,2639],[703,2629],[708,2634],[709,2629],[721,2625],[726,2624],[727,2624],[729,2634],[734,2624],[735,2632],[737,2632],[738,2632],[739,2632],[743,2594],[746,2632],[747,2642],[751,2624],[752,2633],[753,2625],[754,2637],[757,2633],[758,2640],[765,2625],[770,2634],[773,2629],[774,2626],[776,2624],[777,2633],[778,2635],[779,2624],[2405,2662],[2410,2676]],"b":[[125,"impl-Debug-for-PublicKey"],[126,"impl-Display-for-PublicKey"],[127,"impl-Debug-for-KeyParsingError"],[128,"impl-Display-for-KeyParsingError"],[129,"impl-Debug-for-SecretKey"],[130,"impl-Display-for-SecretKey"],[132,"impl-Display-for-RelayUrl"],[133,"impl-Debug-for-RelayUrl"],[134,"impl-Display-for-RelayUrlParseError"],[135,"impl-Debug-for-RelayUrlParseError"],[136,"impl-Debug-for-RelayMap"],[137,"impl-Display-for-RelayMap"],[138,"impl-Display-for-RelayNode"],[139,"impl-Debug-for-RelayNode"],[143,"impl-From%3CError%3E-for-KeyParsingError"],[145,"impl-From%3CDecodeError%3E-for-KeyParsingError"],[146,"impl-From%3C%5Bu8;+32%5D%3E-for-SecretKey"],[148,"impl-From%3CSigningKey%3E-for-SecretKey"],[150,"impl-From%3CPublicKey%3E-for-NodeAddr"],[151,"impl-From%3C(PublicKey,+Option%3CRelayUrl%3E,+%26%5BSocketAddr%5D)%3E-for-NodeAddr"],[152,"impl-From%3CNodeTicket%3E-for-NodeAddr"],[153,"impl-From%3CNodeInfo%3E-for-NodeAddr"],[154,"impl-From%3CRemoteInfo%3E-for-NodeAddr"],[239,"impl-TryFrom%3C%26%5Bu8%5D%3E-for-PublicKey"],[240,"impl-TryFrom%3C%26%5Bu8;+32%5D%3E-for-PublicKey"],[602,"impl-Display-for-IrohAttr"],[603,"impl-Debug-for-IrohAttr"],[608,"impl-From%3CTxtAttrs%3CIrohAttr%3E%3E-for-NodeInfo"],[609,"impl-From%3C%26TxtAttrs%3CIrohAttr%3E%3E-for-NodeInfo"],[1385,"impl-Display-for-SendDatagramError"],[1386,"impl-Debug-for-SendDatagramError"],[1387,"impl-Display-for-RetryError"],[1388,"impl-Debug-for-RetryError"],[1390,"impl-Debug-for-ReadToEndError"],[1391,"impl-Display-for-ReadToEndError"],[1392,"impl-Debug-for-ReadError"],[1393,"impl-Display-for-ReadError"],[1394,"impl-Display-for-ResetError"],[1395,"impl-Debug-for-ResetError"],[1396,"impl-Debug-for-ReadExactError"],[1397,"impl-Display-for-ReadExactError"],[1399,"impl-Display-for-WriteError"],[1400,"impl-Debug-for-WriteError"],[1401,"impl-Debug-for-StoppedError"],[1402,"impl-Display-for-StoppedError"],[1404,"impl-Debug-for-VarInt"],[1405,"impl-Display-for-VarInt"],[1411,"impl-Debug-for-ControlMsg"],[1412,"impl-Display-for-ControlMsg"],[1416,"impl-Display-for-ConnectionType"],[1417,"impl-Debug-for-ConnectionType"],[1418,"impl-Debug-for-ClosedStream"],[1419,"impl-Display-for-ClosedStream"],[1420,"impl-Display-for-Source"],[1421,"impl-Debug-for-Source"],[1422,"impl-Display-for-ConnectionError"],[1423,"impl-Debug-for-ConnectionError"],[1430,"impl-Debug-for-ConnectionClose"],[1431,"impl-Display-for-ConnectionClose"],[1432,"impl-Display-for-ApplicationClose"],[1433,"impl-Debug-for-ApplicationClose"],[1434,"impl-Display-for-TransportError"],[1435,"impl-Debug-for-TransportError"],[1436,"impl-Display-for-TransportErrorCode"],[1437,"impl-Debug-for-TransportErrorCode"],[1439,"impl-Display-for-DirectAddrType"],[1440,"impl-Debug-for-DirectAddrType"],[1441,"impl-Display-for-StreamId"],[1442,"impl-Debug-for-StreamId"],[1470,"impl-From%3CResetError%3E-for-ReadError"],[1471,"impl-From%3CConnectionError%3E-for-ReadError"],[1472,"impl-From%3CReadableError%3E-for-ReadError"],[1478,"impl-From%3CClosedStream%3E-for-WriteError"],[1480,"impl-From%3CStoppedError%3E-for-WriteError"],[1481,"impl-From%3CConnectionError%3E-for-WriteError"],[1485,"impl-From%3Cu16%3E-for-VarInt"],[1487,"impl-From%3Cu8%3E-for-VarInt"],[1488,"impl-From%3CStreamId%3E-for-VarInt"],[1489,"impl-From%3Cu32%3E-for-VarInt"],[1502,"impl-From%3CClose%3E-for-ConnectionError"],[1503,"impl-From%3CTransportError%3E-for-ConnectionError"],[1515,"impl-From%3CTransportErrorCode%3E-for-TransportError"],[1516,"impl-From%3CInvalidFrame%3E-for-TransportError"],[1518,"impl-From%3CError%3E-for-TransportError"],[1797,"impl-RecvStream"],[1798,"impl-AsyncRead-for-RecvStream"],[1800,"impl-AsyncWrite-for-SendStream"],[1801,"impl-SendStream"],[1965,"impl-TryFrom%3Cu64%3E-for-VarInt"],[1967,"impl-TryFrom%3Cu128%3E-for-VarInt"],[1968,"impl-TryFrom%3Cusize%3E-for-VarInt"],[2499,"impl-Debug-for-Disconnected"],[2500,"impl-Display-for-Disconnected"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAPAGowADAAAACwAAABAABQAXACsARgAVAGAABwBqACIAjgAAAJAAAACSAAEAlQAAAJcAAQCaAAEAnQAAAJ8AAACmAAgAsgAJAMsAAwDWAAQA3AABAOIAJwANAQcALgEAADABCwA9AQEAQAEBAEQBAQBHAQEAUQEAAFMBAABWAQkAYwEFAGoBAABuAQQAdQEFAHwBAAB/AQYAjQEXAKYBBgCwAQUAvgEAAMABAADCAQsAzwECANUBBADdAQgA5wEDAO0BAADvAQEA9gEAAPgBAAD6AQQAAAIDAAcCBgARAgAAFAIAABYCAAAYAgMAKAIAADACAAA7AgEAPgIQAFACDgBhAgEAZAIAAGoCAQBuAgMAegIAAH4CAACBAgAAgwIMABEDIAA4AwAAOgMAAEoDaQC8AyAA3gNBACQEAwApBAMAMwQAADUEAAA6BAEAQAQKAEwEbgDEBDYA/ARnAGgFQgC4BQAAvAUAAL8FAwDEBQAAxwUAAMkFAQDMBQAAzgUAANAFAgDfBQEA5gUAAOoFAADsBQEA7wUAAPQFAAD8BSAAIwYAACUGBAAuBgAAMgY0AKUGCQC1BggA0gYAANYGAgDhBgEA5gYAAPIGAwD3BgEA+wYKAAcHAgAQBwgAMQcBAEIHBABMBwcAWgcAAFwHAQBfBwEAYgc0AJsHEgCvBwAAsgdcABAINABICDQAjAgDAJEIDwCjCAsAsggLAMIICADQCAMA1QgDAN0ICgDxCAYA+QgHAAMJCAAPCQYAFwkUAC4JCAA7CQAAPgkDAEMJCABOCQEAUgkCAFwJCABnCQMAbAkDAHIJAwB4CQEAhQkHAJMJMgDMCQIA0QkFAN4JBQDlCQYA7wkYAAkKBQAQCgAA","P":[[24,"T"],[40,""],[46,"T"],[52,""],[62,"K"],[66,""],[69,"T"],[74,""],[75,"T"],[86,"D"],[88,"__D"],[91,""],[110,"K"],[125,""],[142,"T"],[143,""],[144,"T"],[145,""],[147,"T"],[148,""],[149,"T"],[150,""],[155,"T"],[156,""],[157,"T"],[158,""],[159,"T"],[161,""],[163,"I,"],[164,""],[165,"T"],[171,""],[175,"R"],[176,""],[177,"H"],[178,"__H"],[179,""],[187,"U"],[195,""],[213,"S"],[215,"__S"],[218,""],[225,"T"],[231,""],[238,"U,T"],[239,""],[241,"U,T"],[243,""],[244,"U,T"],[249,"U"],[257,""],[268,"V"],[277,""],[278,""],[302,""],[303,"T"],[307,""],[308,"T"],[309,""],[311,"T"],[316,""],[321,"T"],[325,""],[328,"U"],[335,""],[342,"T"],[343,"U,T"],[345,"U"],[347,""],[349,"V"],[354,"T"],[358,""],[360,"T"],[361,""],[362,"U"],[363,""],[366,"U,T"],[367,"U"],[368,""],[369,"V"],[372,"T"],[376,""],[378,"T"],[379,""],[380,"U"],[381,""],[385,"U,T"],[386,"U"],[387,""],[388,"V"],[396,""],[399,"T"],[405,""],[408,"T"],[411,""],[414,"T"],[421,""],[428,"T"],[434,""],[437,"U"],[440,""],[449,"T"],[452,"U,T"],[455,"U"],[458,""],[462,"V"],[465,""],[469,"T"],[473,""],[477,"T"],[478,""],[481,"T"],[485,""],[490,"T"],[493,""],[497,"U"],[499,""],[505,"T"],[506,"U,T"],[508,"U"],[510,""],[513,"V"],[517,""],[518,"T"],[520,""],[521,"T"],[523,""],[525,"T"],[526,","],[527,""],[529,"U"],[530,""],[534,""],[535,"U,T"],[536,"U"],[537,""],[538,"V"],[541,""],[550,"N"],[563,""],[572,"T"],[579,""],[580,"T"],[581,""],[583,"K"],[584,"T"],[591,""],[596,"K"],[602,""],[605,"T"],[608,""],[610,"T"],[611,""],[613,"T"],[614,"T,"],[615,""],[616,"T"],[618,"FromStr::Err"],[619,",T"],[620,""],[621,"__H"],[622,""],[625,"U"],[628,"T"],[630,""],[631,"T"],[633,""],[636,"T"],[638,""],[639,"T"],[640,""],[642,"TryFrom::Error"],[643,"U,T"],[646,"U"],[649,""],[652,"V"],[784,""],[826,"D,F"],[827,""],[841,"T"],[947,""],[989,"T"],[1022,""],[1064,"K"],[1068,""],[1073,""],[1075,""],[1099,"T"],[1205,"__D"],[1210,""],[1301,"K"],[1381,""],[1455,"T"],[1463,""],[1464,"T"],[1467,""],[1468,"T"],[1470,""],[1474,"T"],[1475,""],[1476,"T"],[1478,""],[1479,"T"],[1480,""],[1482,"T"],[1483,""],[1484,"T"],[1485,""],[1486,"T"],[1487,""],[1490,"T"],[1502,""],[1504,"T"],[1509,""],[1510,"T"],[1513,""],[1514,"T"],[1515,""],[1517,"T"],[1518,""],[1519,"T"],[1523,""],[1524,"T"],[1564,""],[1572,"__H"],[1577,""],[1645,"U"],[1698,""],[1707,"IntoFuture::IntoFuture"],[1708,""],[1716,"F2,F1"],[1725,""],[1793,"Future::Output"],[1796,""],[1807,"T,S2,F1"],[1816,""],[1847,""],[1848,""],[1857,"__S"],[1862,""],[1889,"T"],[1922,""],[1946,"U,T"],[1965,""],[1966,"U,T"],[1967,""],[1969,"U,T"],[2002,"U"],[2055,"F"],[2063,""],[2119,"V"],[2172,""],[2200,"T"],[2210,""],[2214,"T"],[2218,""],[2229,"T"],[2241,""],[2251,"T"],[2260,""],[2264,"U"],[2268,""],[2331,"T"],[2335,"U,T"],[2339,"U"],[2343,""],[2354,"V"],[2362,""],[2364,",T"],[2365,"T"],[2369,""],[2371,"T"],[2372,""],[2373,"T"],[2377,""],[2383,"T"],[2386,""],[2388,"U"],[2390,""],[2395,"T"],[2396,"U,T"],[2398,"U"],[2400,""],[2402,"V"],[2406,"T"],[2410,""],[2411,"T"],[2415,""],[2421,"T"],[2423,""],[2425,"U"],[2429,""],[2436,"U,T"],[2438,"U"],[2440,""],[2442,"V"],[2450,""],[2453,"T"],[2465,"T,S2,S1"],[2466,"T"],[2472,""],[2475,"T"],[2488,""],[2494,"T"],[2499,""],[2501,"T"],[2512,""],[2518,"T"],[2519,"U"],[2525,""],[2527,"S"],[2528,"F2,F1"],[2530,"T,S2,S1"],[2531,"T"],[2532,"T,Future::Output"],[2534,"T,Stream::Item"],[2535,"T,S2,F1"],[2537,"D,C,MW,S"],[2539,"T"],[2545,""],[2546,"U,T"],[2552,"U"],[2558,"F"],[2560,"S"],[2561,""],[2567,"T"],[2568,"V"],[2574,"T"],[2575,"T,S2,S1"]]}],["iroh_base",{"t":"TPPPGTFIFFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNONNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPGTPFPKPNNNNNNNNNNNNNNNNNNNMNNNNNNNNNMNNNNNNNNNNO","n":["BYTE_SIZE","Decode","DecodeInvalidLength","Key","KeyParsingError","LENGTH","NodeAddr","NodeId","PublicKey","RelayUrl","RelayUrlParseError","SecretKey","Signature","as_bytes","as_ref","borrow","","","","","","","","borrow_mut","","","","","","","clone","","","","","clone_into","","","","","clone_to_uninit","","","","","cmp","","","deref","deserialize","","","","","direct_addresses","","eq","","","","fmt","","","","","","","","","","","","","","","fmt_short","from","","","","","","","","","","","","","","","","","","","","from_bytes","","","from_components","from_parts","from_slice","from_str","","","","generate","hash","","into","","","","","","","is_empty","new","node_id","partial_cmp","","","public","","r_bytes","relay_url","","s_bytes","secret","serialize","","","","","sign","source","","ticket","to_bytes","","","to_owned","","","","","to_string","","","","","","to_vec","try_from","","","","","","","","","","","try_into","","","","","","","type_id","","","","","","","verify","with_direct_addresses","with_relay_url","Encoding","Error","KIND","Kind","NodeTicket","Postcard","Ticket","Verify","borrow","","borrow_mut","","clone","clone_into","clone_to_uninit","deserialize","","eq","fmt","","","","from","","","","","from_bytes","","from_str","into","","new","node_addr","serialize","","source","to_bytes","","to_owned","to_string","","try_from","","try_into","","type_id","","expected"],"q":[[0,"iroh_base"],[181,"iroh_base::ticket"],[229,"iroh_base::ticket::Error"],[230,"iroh_base::key"],[231,"ed25519"],[232,"iroh_base::node_addr"],[233,"iroh_base::relay_url"],[234,"core::cmp"],[235,"core::result"],[236,"serde::de"],[237,"core::net::socket_addr"],[238,"core::iter::traits::iterator"],[239,"core::fmt"],[240,"alloc::string"],[241,"ed25519_dalek::signature"],[242,"ed25519_dalek::verifying"],[243,"ed25519_dalek::errors"],[244,"data_encoding"],[245,"ed25519_dalek::signing"],[246,"core::option"],[247,"iroh_base::ticket::node"],[248,"url"],[249,"url::parser"],[250,"core::iter::traits::collect"],[251,"signature::error"],[252,"rand_core"],[253,"core::hash"],[254,"serde::ser"],[255,"core::error"],[256,"alloc::vec"],[257,"core::any"],[258,"postcard::error"]],"i":"nBl00`b```````002001A`AbAdBn645321064321643216432142116432122642166664455332110046666445553332222110064362664313416453210222421436226364321350`6636432164531066644453321064532106453210422El`Ej1`1`1Db202000100002200222100020010210002020202F`","f":"`````````````{{{d{b}}}{{d{{h{f}}}}}}{{{d{b}}}{{d{{j{f}}}}}}{d{{d{c}}}{}}2000000{{{d{l}}}{{d{lc}}}{}}000000{{{d{n}}}n}{{{d{b}}}b}{{{d{A`}}}A`}{{{d{Ab}}}Ab}{{{d{Ad}}}Ad}{{d{d{lc}}}Af{}}0000{{df}Af}0000{{{d{b}}{d{b}}}Ah}{{{d{Ab}}{d{Ab}}}Ah}{{{d{Ad}}{d{Ad}}}Ah}{{{d{Ad}}}{{d{c}}}{}}{c{{Aj{n}}}Al}{c{{Aj{b}}}Al}{c{{Aj{A`}}}Al}{c{{Aj{Ab}}}Al}{c{{Aj{Ad}}}Al}{{{d{Ab}}}{{`{{Bb{}{{An{{d{B`}}}}}}}}}}`{{{d{n}}{d{n}}}Bd}{{{d{b}}{d{b}}}Bd}{{{d{Ab}}{d{Ab}}}Bd}{{{d{Ad}}{d{Ad}}}Bd}{{{d{n}}{d{lBf}}}{{Aj{AfBh}}}}000{{{d{b}}{d{lBf}}}Bj}0{{{d{Bl}}{d{lBf}}}Bj}0{{{d{A`}}{d{lBf}}}Bj}0{{{d{Ab}}{d{lBf}}}Bj}{{{d{Ad}}{d{lBf}}}Bj}0{{{d{Bn}}{d{lBf}}}Bj}0{{{d{b}}}C`}{cc{}}{{{d{{h{f}}}}}n}{{{h{f}}}n}{Cbn}3{Cdb}4{CfBl}{ChBl}{{{h{f}}}A`}7{CjA`}{{{Cn{b{Cl{Ad}}{d{{j{B`}}}}}}}Ab}{D`Ab}{DbAb};{DdAd}<{DfBn}=<{{{d{{h{f}}}}}{{Aj{bCf}}}}{{{d{{h{f}}}}}A`}{{{h{f}}{h{f}}}n}{{b{Cl{Ad}}c}Ab{{Dh{}{{An{B`}}}}}}{{{d{{j{f}}}}}{{Aj{nDj}}}}{{{d{Dl}}}{{Aj{nDj}}}}{{{d{Dl}}}{{Aj{bc}}}{}}{{{d{Dl}}}{{Aj{A`c}}}{}}{{{d{Dl}}}{{Aj{Adc}}}{}}{cA`Dn}{{{d{b}}{d{lc}}}AfE`}{{{d{Ad}}{d{lc}}}AfE`}{{}c{}}000000{{{d{Ab}}}Bd}{bAb}`{{{d{b}}{d{b}}}{{Cl{Ah}}}}{{{d{Ab}}{d{Ab}}}{{Cl{Ah}}}}{{{d{Ad}}{d{Ad}}}{{Cl{Ah}}}}{{{d{b}}}Cd}{{{d{A`}}}b}{{{d{n}}}{{d{{h{f}}}}}}{{{d{Ab}}}{{Cl{{d{Ad}}}}}}`1{{{d{A`}}}{{d{Cj}}}}{{{d{n}}c}AjEb}{{{d{b}}c}AjEb}{{{d{A`}}c}AjEb}{{{d{Ab}}c}AjEb}{{{d{Ad}}c}AjEb}{{{d{A`}}{d{{j{f}}}}}n}{{{d{Bl}}}{{Cl{{d{Ed}}}}}}{{{d{Bn}}}{{Cl{{d{Ed}}}}}}`{{{d{n}}}{{h{f}}}}0{{{d{A`}}}{{h{f}}}}{dc{}}0000{dC`}00000{{{d{n}}}{{Ef{f}}}}{c{{Aj{e}}}{}{}}{{{d{{j{f}}}}}{{Aj{nDj}}}}{{{d{{j{f}}}}}{{Aj{bc}}}{}}{{{d{{h{f}}}}}{{Aj{bc}}}{}}333{{{d{{j{f}}}}}{{Aj{A`c}}}{}}444{{}{{Aj{c}}}{}}000000{dEh}000000{{{d{b}}{d{{j{f}}}}{d{n}}}{{Aj{AfCf}}}}{{Abc}Ab{{Dh{}{{An{B`}}}}}}{{AbAd}Ab}````````{d{{d{c}}}{}}0{{{d{l}}}{{d{lc}}}{}}0{{{d{Db}}}Db}{{d{d{lc}}}Af{}}{{df}Af}{{{d{Dl}}}{{Aj{EjEl}}}}{c{{Aj{Db}}}Al}{{{d{Db}}{d{Db}}}Bd}{{{d{Db}}{d{lBf}}}Bj}0{{{d{El}}{d{lBf}}}Bj}0{cc{}}{AbDb}1{ChEl}{EnEl}{{{d{{j{f}}}}}{{Aj{EjEl}}}}{{{d{{j{f}}}}}{{Aj{DbEl}}}}{{{d{Dl}}}{{Aj{Dbc}}}{}}{{}c{}}06{{{d{Db}}}{{d{Ab}}}}{{{d{Ej}}}C`}{{{d{Db}}c}AjEb}{{{d{El}}}{{Cl{{d{Ed}}}}}}{{{d{Ej}}}{{Ef{f}}}}{{{d{Db}}}{{Ef{f}}}}{dc{}}{dC`}0{c{{Aj{e}}}{}{}}0{{}{{Aj{c}}}{}}0{dEh}0`","D":"Il","p":[[5,"PublicKey",0,230],[1,"reference",null,null,1],[1,"u8"],[1,"array"],[1,"slice"],[0,"mut"],[5,"Signature",0,231],[5,"SecretKey",0,230],[5,"NodeAddr",0,232],[5,"RelayUrl",0,233],[1,"unit"],[6,"Ordering",234],[6,"Result",235,null,1],[10,"Deserializer",236],[17,"Item"],[6,"SocketAddr",237],[10,"Iterator",238],[1,"bool"],[5,"Formatter",239],[5,"Error",239],[8,"Result",239],[6,"KeyParsingError",0,230],[5,"RelayUrlParseError",0,233],[5,"String",240],[5,"InternalSignature",241],[5,"VerifyingKey",242],[8,"SignatureError",243],[5,"DecodeError",244],[5,"SigningKey",245],[6,"Option",246,null,1],[1,"tuple",null,null,1],[8,"NodeId",0,230],[5,"NodeTicket",181,247],[5,"Url",248],[6,"ParseError",249],[10,"IntoIterator",250],[5,"Error",251],[1,"str"],[10,"CryptoRngCore",252],[10,"Hasher",253],[10,"Serializer",254],[10,"Error",255],[5,"Vec",256],[5,"TypeId",257],[10,"Ticket",181],[6,"Error",181],[6,"Error",258],[15,"Kind",229]],"r":[[4,230],[6,232],[7,230],[8,230],[9,233],[10,233],[11,230],[12,231],[185,247]],"b":[[60,"impl-Debug-for-Signature"],[61,"impl-Display-for-Signature"],[62,"impl-LowerHex-for-Signature"],[63,"impl-UpperHex-for-Signature"],[64,"impl-Display-for-PublicKey"],[65,"impl-Debug-for-PublicKey"],[66,"impl-Debug-for-KeyParsingError"],[67,"impl-Display-for-KeyParsingError"],[68,"impl-Display-for-SecretKey"],[69,"impl-Debug-for-SecretKey"],[71,"impl-Display-for-RelayUrl"],[72,"impl-Debug-for-RelayUrl"],[73,"impl-Debug-for-RelayUrlParseError"],[74,"impl-Display-for-RelayUrlParseError"],[77,"impl-From%3C%26%5Bu8;+ed25519::::SignatureBytes::%7Bconstant%230%7D%5D%3E-for-Signature"],[78,"impl-From%3C%5Bu8;+ed25519::::SignatureBytes::%7Bconstant%230%7D%5D%3E-for-Signature"],[79,"impl-From%3CInternalSignature%3E-for-Signature"],[83,"impl-From%3CError%3E-for-KeyParsingError"],[84,"impl-From%3CDecodeError%3E-for-KeyParsingError"],[85,"impl-From%3C%5Bu8;+32%5D%3E-for-SecretKey"],[87,"impl-From%3CSigningKey%3E-for-SecretKey"],[88,"impl-From%3C(PublicKey,+Option%3CRelayUrl%3E,+%26%5BSocketAddr%5D)%3E-for-NodeAddr"],[89,"impl-From%3CPublicKey%3E-for-NodeAddr"],[90,"impl-From%3CNodeTicket%3E-for-NodeAddr"],[138,"impl-SignatureEncoding-for-Signature"],[139,"impl-Signature"],[155,"impl-TryFrom%3C%26%5Bu8%5D%3E-for-PublicKey"],[156,"impl-TryFrom%3C%26%5Bu8;+32%5D%3E-for-PublicKey"],[199,"impl-Debug-for-NodeTicket"],[200,"impl-Display-for-NodeTicket"],[201,"impl-Display-for-Error"],[202,"impl-Debug-for-Error"],[206,"impl-From%3CDecodeError%3E-for-Error"],[207,"impl-From%3CError%3E-for-Error"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAJgAFgAPACcAOQASAE4AAgBSAAAAVAACAFgAAgBdAAAAXwAAAGcAAwBsAAEAeAACAIIABACIAAEAiwAAAI4ACgCaABgAvgAGAMYABQDPAAEA0gABANkAAQDcAAkA","P":[[15,"T"],[16,""],[17,"T"],[30,""],[35,"T"],[40,""],[48,"Deref::Target"],[49,"D"],[52,"__D"],[54,""],[76,"T"],[77,""],[80,"T"],[81,""],[82,"T"],[83,""],[86,"T"],[87,""],[91,"T"],[92,""],[93,"T"],[94,""],[95,"T"],[96,""],[100,""],[101,""],[103,"FromStr::Err"],[106,"R"],[107,"H"],[108,"__H"],[109,"U"],[116,""],[129,"S"],[132,"__S"],[134,""],[141,"T"],[146,""],[153,"U,T"],[154,""],[155,"TryFrom::Error"],[157,"U,T"],[160,"TryFrom::Error"],[161,"U,T"],[164,"U"],[171,""],[179,""],[180,""],[189,"T"],[193,""],[194,"T"],[195,""],[197,"D"],[198,""],[203,"T"],[204,""],[205,"T"],[206,""],[210,"FromStr::Err"],[211,"U"],[213,""],[216,"S"],[217,""],[220,"T"],[221,""],[223,"U,T"],[225,"U"],[227,""]]}],["iroh_bench",{"t":"FGGGPPPFPPPPNNNNNNNNNNNNNNNNHONNNNNNNNNNNNHNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNONNNNNCOONCOHCCNOONNNNNNNNNNNNNNNNNNNNNONNNNNOSHHHHHHSHHHHHHFNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFONNNNNNOOOONNNNNNNNNNNOONNNNNNNNNNNNNNONOOOHOOONNNNNNOONNNNNN","n":["ClientStats","Commands","ConnectionSelector","EndpointSelector","Iroh","","","Opt","Quinn","","","S2n","__clone_box","","augment_args","augment_args_for_update","augment_subcommands","augment_subcommands_for_update","borrow","","","","","borrow_mut","","","","","client_handler","clients","clone","","clone_into","","clone_to_uninit","","close","","command","","command_for_update","","configure_tracing_subscriber","default","deref","","","","","deref_mut","","","","","download_size","drop","","","","","fmt","","from","","","","","from_arg_matches","","from_arg_matches_mut","","from_ref","","group_id","has_subcommand","init","","","","","initial_mtu","into","","","","","iroh","max_streams","metrics","print","quinn","read_unordered","rt","s2n","stats","","","streams","to_owned","","try_from","","","","","try_into","","","","","type_id","","","","","update_from_arg_matches","","update_from_arg_matches_mut","","upload_size","vzip","","","","","with_relay","ALPN","client","connect_client","handle_client_stream","server","server_endpoint","transport_config","ALPN","client","connect_client","handle_client_stream","server","server_endpoint","transport_config","Opt","__clone_box","augment_args","augment_args_for_update","borrow","borrow_mut","clone","clone_into","clone_to_uninit","command","command_for_update","deref","deref_mut","drop","fmt","from","from_arg_matches","from_arg_matches_mut","from_ref","group_id","init","into","to_owned","try_from","try_into","type_id","update_from_arg_matches","update_from_arg_matches_mut","vzip","Stats","StreamStats","TransferResult","avg_chunk_size","borrow","","","borrow_mut","","","chunk_size","chunk_time","chunks","","default","","deref","","","deref_mut","","","drop","","","duration","duration_hist","fmt","","","from","","","init","","","into","","","new","print","size","stream_finished","stream_stats","streams","throughput","throughput_bps","throughput_hist","total_duration","total_size","try_from","","","try_into","","","ttfb","ttfb_hist","type_id","","","vzip","",""],"q":[[0,"iroh_bench"],[126,"iroh_bench::iroh"],[133,"iroh_bench::quinn"],[140,"iroh_bench::s2n"],[169,"iroh_bench::stats"],[233,"dyn_clone::sealed"],[234,"clap_builder::builder::command"],[235,"anyhow"],[236,"core::fmt"],[237,"clap_builder::parser::matches::arg_matches"],[238,"clap_builder"],[239,"core::result"],[240,"clap_builder::util::id"],[241,"core::option"],[242,"tokio::runtime::runtime"],[243,"core::any"],[244,"iroh_base::node_addr"],[245,"iroh_base::relay_url"],[246,"iroh::endpoint"],[247,"iroh_quinn::connection"],[248,"iroh_quinn_proto::config"],[249,"core::net::socket_addr"],[250,"rustls_pki_types"],[251,"iroh_quinn::endpoint"],[252,"core::time"]],"i":"````lnAf`21000A`00113210Ab43210`1212121432121`0432104321014321021432102121211243210143210`110`1```3112143210432104321021211432101```````````````E`000000000000000000000000000```DbEbEd2102000210102102102201021021021022121112`01110210220102102","f":"````````````{{bd}f}0{hh}000{b{{b{c}}}{}}0000{{{b{j}}}{{b{jc}}}{}}0000{{lnA`}{{Ad{Ab}}}}`{{{b{Af}}}Af}{{{b{A`}}}A`}{{b{b{jc}}}f{}}0{{bAh}f}0{l{{Ad{f}}}}{{{b{n}}Aj{b{{Al{Ah}}}}}f}{{}h}000{{}f}{{}Ab}{An{{b{c}}}{}}0000{An{{b{jc}}}{}}0000`{Anf}0000{{{b{Af}}{b{jB`}}}Bb}{{{b{A`}}{b{jB`}}}Bb}{cc{}}0000{{{b{Bd}}}{{Bh{AfBf}}}}{{{b{Bd}}}{{Bh{A`Bf}}}}{{{b{jBd}}}{{Bh{AfBf}}}}{{{b{jBd}}}{{Bh{A`Bf}}}}{{{b{c}}}c{}}0{{}{{Bl{Bj}}}}{{{b{Bn}}}C`}{{}An}0000`{{}c{}}0000```{{{b{Ab}}An}f}``{{}Cb}``{{{b{n}}}f}``{bc{}}0{c{{Bh{e}}}{}{}}0000{{}{{Bh{c}}}{}}0000{bCd}0000{{{b{jAf}}{b{Bd}}}{{Bh{fBf}}}}{{{b{jA`}}{b{Bd}}}{{Bh{fBf}}}}{{{b{jAf}}{b{jBd}}}{{Bh{fBf}}}}{{{b{jA`}}{b{jBd}}}{{Bh{fBf}}}}`{{}c{}}0000``{{Cf{Bl{Ch}}A`}{{Ad{Ab}}}}{{Cf{Bl{Ch}}A`}{{Ad{{Cn{CjCl}}}}}}{{{b{Cl}}D`C`}{{Ad{{Cn{DbDb}}}}}}{{CjA`}{{Ad{f}}}}{{{b{Cb}}{b{{Bl{Ch}}}}{b{A`}}}{{Cn{CfCj}}}}{{AnDd}Df}`{{DhDjA`}{{Ad{Ab}}}}{{DhDjA`}{{Ad{{Cn{DlCl}}}}}}5{{DlA`}{{Ad{f}}}}{{{b{Cb}}DjDn{b{A`}}}{{Cn{DhDl}}}}4`{{bd}f}{hh}0{b{{b{c}}}{}}{{{b{j}}}{{b{jc}}}{}}{{{b{E`}}}E`}{{b{b{jc}}}f{}}{{bAh}f}{{}h}0{An{{b{c}}}{}}{An{{b{jc}}}{}}{Anf}{{{b{E`}}{b{jB`}}}Bb}{cc{}}{{{b{Bd}}}{{Bh{E`Bf}}}}{{{b{jBd}}}{{Bh{E`Bf}}}}{{{b{c}}}c{}}{{}{{Bl{Bj}}}}{{}An}{{}c{}}{bc{}}{c{{Bh{e}}}{}{}}{{}{{Bh{c}}}{}}{bCd}{{{b{jE`}}{b{Bd}}}{{Bh{fBf}}}}{{{b{jE`}}{b{jBd}}}{{Bh{fBf}}}}{{}c{}}````{b{{b{c}}}{}}00{{{b{j}}}{{b{jc}}}{}}00````{{}Eb}{{}Ed}{An{{b{c}}}{}}00{An{{b{jc}}}{}}00{Anf}00``{{{b{Eb}}{b{jB`}}}Bb}{{{b{Ed}}{b{jB`}}}Bb}{{{b{Db}}{b{jB`}}}Bb}{cc{}}00{{}An}00{{}c{}}00{{EfD`EfD`}Db}{{{b{Eb}}{b{Bn}}}f}`{{{b{jEb}}Db}f}```{{EfD`}Eh}```{c{{Bh{e}}}{}{}}00{{}{{Bh{c}}}{}}00``{bCd}00{{}c{}}00","D":"Dj","p":[[1,"reference",null,null,1],[5,"Private",233],[1,"unit"],[5,"Command",234],[0,"mut"],[6,"EndpointSelector",0],[6,"ConnectionSelector",0],[5,"Opt",0],[5,"ClientStats",0],[8,"Result",235],[6,"Commands",0],[1,"u8"],[1,"u32"],[1,"slice"],[1,"usize"],[5,"Formatter",236],[8,"Result",236],[5,"ArgMatches",237],[8,"Error",238],[6,"Result",239,null,1],[5,"Id",240],[6,"Option",241,null,1],[1,"str"],[1,"bool"],[5,"Runtime",242],[5,"TypeId",243],[5,"NodeAddr",244],[5,"RelayUrl",245],[5,"Endpoint",246],[5,"Connection",247],[1,"tuple",null,null,1],[1,"u64"],[5,"TransferResult",169],[1,"u16"],[5,"TransportConfig",248],[6,"SocketAddr",249],[5,"CertificateDer",250],[5,"Endpoint",251],[6,"PrivateKeyDer",250],[5,"Opt",140],[5,"Stats",169],[5,"StreamStats",169],[5,"Duration",252],[1,"f64"]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAMQAEgAAABwAHwAXADgABgBEAAwAVwAAAFoAAQBdAAMAYwAUAHkABAB/AAAAggAAAIUAAQCJAAAAjAAPAJ0ABACjACQAywACANEAGAA=","P":[[18,"T"],[28,""],[32,"T"],[34,""],[44,"T"],[55,""],[62,"T"],[67,""],[71,"T"],[73,""],[81,"U"],[89,""],[98,"T"],[100,"U,T"],[105,"U"],[110,""],[120,"V"],[127,""],[144,"T"],[146,""],[147,"T"],[148,""],[151,"T"],[153,""],[155,"T"],[156,""],[158,"T"],[159,""],[161,"U"],[162,"T"],[163,"U,T"],[164,"U"],[165,""],[168,"V"],[173,"T"],[183,""],[185,"T"],[191,""],[199,"T"],[202,""],[205,"U"],[208,""],[219,"U,T"],[222,"U"],[227,""],[230,"V"]]}],["iroh_dns_server",{"t":"FNNNNNNCCNNNNCNNNCNNNCCNNNNNNGFPPFFFNOONNNNNNNNNNNNNNNNNNNNNNNNOOONNNNNNNNNNNOONNNNNNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNOFFFFNNNNONNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNOOOOONNNNNNNNNNNNNNNNNNNNNNNNGPFFFPPGPPPNNNNOONNNNNNNNNNONNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNOOOOOONNNOOOOHNNNOOOOOONNNNNFNNNNNHNNNNNNFNNNNNNONNNONNNNN","n":["ZoneStore","__clone_box","borrow","borrow_mut","clone","clone_into","clone_to_uninit","config","dns","fmt","from","from_ref","get_signed_packet","http","in_memory","insert","into","metrics","new","persistent","resolve","server","state","to_owned","try_from","try_into","type_id","vzip","with_mainline_fallback","BootstrapOption","Config","Custom","Default","MainlineConfig","MetricsConfig","StoreConfig","__clone_box","bind_addr","bootstrap","borrow","","","","","borrow_mut","","","","","clone","clone_into","clone_to_uninit","data_dir","default","","","","deserialize","","","","","disabled","","dns","enabled","fmt","","","","","from","","","","","from_ref","http","https","into","","","","","load","mainline","metrics","pkarr_put_rate_limit","serialize","","","","","signed_packet_store_path","to_owned","try_from","","","","","try_into","","","","","type_id","","","","","vzip","","","","","zone_store","DnsConfig","DnsHandler","DnsServer","Handle","__clone_box","","","answer_request","bind_addr","borrow","","","","borrow_mut","","","","clone","","","clone_into","","","clone_to_uninit","","","default_soa","default_ttl","deserialize","fmt","","","from","","","","from_ref","","","handle_request","into","","","","local_addr","new","origins","port","rr_a","rr_aaaa","rr_ns","run_until_done","send_response","serialize","shutdown","spawn","to_owned","","","try_from","","","","try_into","","","","type_id","","","","vzip","","","","CertMode","Disabled","HttpConfig","HttpServer","HttpsConfig","LetsEncrypt","Manual","RateLimitConfig","SelfSigned","Simple","Smart","__clone_box","","","","bind_addr","","borrow","","","","","borrow_mut","","","","","cert_mode","clone","","","","clone_into","","","","clone_to_uninit","","","","default","","deserialize","","","","domains","eq","equivalent","","","fmt","","","","","from","","","","","from_ref","","","","http_addr","https_addr","into","","","","","letsencrypt_contact","letsencrypt_prod","port","","run_until_done","serialize","","","","shutdown","spawn","to_owned","","","","to_string","try_from","","","","","try_into","","","","","type_id","","","","","vzip","","","","","Metrics","__clone_box","borrow","borrow_mut","clone","clone_into","clone_to_uninit","default","dns_lookup_error","dns_lookup_notfound","dns_lookup_success","dns_requests","dns_requests_https","dns_requests_udp","fmt","from","from_ref","http_requests","http_requests_duration_ms","http_requests_error","http_requests_success","init_metrics","into","iter","name","pkarr_publish_noop","pkarr_publish_update","store_packets_expired","store_packets_inserted","store_packets_removed","store_packets_updated","to_owned","try_from","try_into","type_id","vzip","Server","borrow","borrow_mut","from","into","run_until_error","run_with_config_until_ctrl_c","shutdown","spawn","try_from","try_into","type_id","vzip","AppState","__clone_box","borrow","borrow_mut","clone","clone_into","clone_to_uninit","dns_handler","from","from_ref","into","store","to_owned","try_from","try_into","type_id","vzip"],"q":[[0,"iroh_dns_server"],[29,"iroh_dns_server::config"],[116,"iroh_dns_server::dns"],[191,"iroh_dns_server::http"],[299,"iroh_dns_server::metrics"],[335,"iroh_dns_server::server"],[348,"iroh_dns_server::state"],[365,"dyn_clone::sealed"],[366,"iroh_dns_server::store"],[367,"core::fmt"],[368,"pkarr::signed_packet"],[369,"core::option"],[370,"anyhow"],[371,"std::path"],[372,"core::convert"],[373,"hickory_proto::rr::domain::name"],[374,"hickory_proto::rr::record_type"],[375,"hickory_proto::rr::rr_set"],[376,"alloc::sync"],[377,"core::result"],[378,"core::any"],[379,"serde::de"],[380,"serde::ser"],[381,"hickory_server::server::request_handler"],[382,"bytes::bytes"],[383,"core::future::future"],[384,"alloc::boxed"],[385,"core::pin"],[386,"hickory_server::server::response_handler"],[387,"core::net::socket_addr"],[388,"hickory_server::authority::message_response"],[389,"hickory_proto::rr::resource"],[390,"core::iter::traits::iterator"],[391,"core::marker"],[392,"iroh_dns_server::http::rate_limiting"],[393,"iroh_dns_server::http::tls"],[394,"alloc::string"],[395,"alloc::vec::into_iter"]],"i":"`j00000``0000`000`000``000000``Bj0```BlCfCbC`3214032143330031403214220103214032143000321400000321403032140321403214032140````D`CjDb12Dl32103213213213213333210321321203210233333013003210321032103210321`Ej```El0`01110EnF`10Fd432104321143214321432144432113333433210432143210004321112104321004321304321043210432104321`Fj0000000000000000000`00000000000000`Gd0000`000000`Ff000000000000000","f":"`{{bd}f}{b{{b{c}}}{}}{{{b{h}}}{{b{hc}}}{}}{{{b{j}}}j}{{b{b{hc}}}f{}}{{bl}f}``{{{b{j}}{b{hn}}}A`}{cc{}}{{{b{c}}}c{}}{{{b{j}}{b{`}}}{{Af{{Ad{Ab}}}}}}```{{}c{}}```{{{b{j}}{b{`}}{b{An}}B`}{{Af{{Ad{{Bd{Bb}}}}}}}}``{bc{}}{c{{Bf{e}}}{}{}}{{}{{Bf{c}}}{}}{bBh}{{}c{}}{{jBj}j}```````{{bd}f}``{b{{b{c}}}{}}0000{{{b{h}}}{{b{hc}}}{}}0000{{{b{Bl}}}Bl}{{b{b{hc}}}f{}}{{bl}f}{{}{{Af{Bn}}}}{{}C`}{{}Bl}{{}Cb}{{}Bj}{c{{Bf{C`}}}Cd}{c{{Bf{Bl}}}Cd}{c{{Bf{Cf}}}Cd}{c{{Bf{Cb}}}Cd}{c{{Bf{Bj}}}Cd}{{}Cf}```{{{b{C`}}{b{hn}}}A`}{{{b{Bl}}{b{hn}}}A`}{{{b{Cf}}{b{hn}}}A`}{{{b{Cb}}{b{hn}}}A`}{{{b{Bj}}{b{hn}}}A`}{cc{}}0000{{{b{c}}}c{}}``{{}c{}}0000{c{{Af{C`}}}{{Al{Aj}}}}```{{{b{C`}}c}BfCh}{{{b{Bl}}c}BfCh}{{{b{Cf}}c}BfCh}{{{b{Cb}}c}BfCh}{{{b{Bj}}c}BfCh}{{}{{Af{Bn}}}}{bc{}}{c{{Bf{e}}}{}{}}0000{{}{{Bf{c}}}{}}0000{bBh}0000{{}c{}}0000`````{{bd}f}00{{{b{Cj}}Cl}{{Af{Cn}}}}`{b{{b{c}}}{}}000{{{b{h}}}{{b{hc}}}{}}000{{{b{D`}}}D`}{{{b{Cj}}}Cj}{{{b{Db}}}Db}{{b{b{hc}}}f{}}00{{bl}f}00``{c{{Bf{D`}}}Cd}{{{b{D`}}{b{hn}}}A`}{{{b{Cj}}{b{hn}}}A`}{{{b{Db}}{b{hn}}}A`}{cc{}}000{{{b{c}}}c{}}00{{{b{Cj}}{b{Cl}}c}{{Dh{{Df{Dd}}}}}Dj}{{}c{}}000{{{b{Dl}}}Dn}{{j{b{D`}}}{{Af{Cj}}}}`````{Dl{{Af{f}}}}{{{b{hDb}}{E`{cegi}}}{{Dh{{Df{Dd}}}}}{{Ef{}{{Eb{{b{Ed}}}}}}Eh}{{Ef{}{{Eb{{b{Ed}}}}}}Eh}{{Ef{}{{Eb{{b{Ed}}}}}}Eh}{{Ef{}{{Eb{{b{Ed}}}}}}Eh}}{{{b{D`}}c}BfCh}2{{D`Cj}{{Af{Dl}}}}{bc{}}00{c{{Bf{e}}}{}{}}000{{}{{Bf{c}}}{}}000{bBh}000{{}c{}}000```````````{{bd}f}000``{b{{b{c}}}{}}0000{{{b{h}}}{{b{hc}}}{}}0000`{{{b{Ej}}}Ej}{{{b{El}}}El}{{{b{En}}}En}{{{b{F`}}}F`}{{b{b{hc}}}f{}}000{{bl}f}000{{}{{b{Ej}}}}{{}Ej}{c{{Bf{Ej}}}Cd}{c{{Bf{El}}}Cd}{c{{Bf{En}}}Cd}{c{{Bf{F`}}}Cd}`{{{b{El}}{b{El}}}Ah}{{b{b{c}}}Ah{}}00{{{b{Ej}}{b{hn}}}A`}{{{b{El}}{b{hn}}}A`}{{{b{El}}{b{hn}}}{{Bf{fFb}}}}{{{b{En}}{b{hn}}}A`}{{{b{F`}}{b{hn}}}A`}{cc{}}0000{{{b{c}}}c{}}000{{{b{Fd}}}{{Ad{Dn}}}}0{{}c{}}0000````{Fd{{Af{f}}}}{{{b{Ej}}c}BfCh}{{{b{El}}c}BfCh}{{{b{En}}c}BfCh}{{{b{F`}}c}BfCh}4{{{Ad{En}}{Ad{F`}}EjFf}{{Af{Fd}}}}{bc{}}000{bFh}{c{{Bf{e}}}{}{}}0000{{}{{Bf{c}}}{}}0000{bBh}0000{{}c{}}0000`{{bd}f}{b{{b{c}}}{}}{{{b{h}}}{{b{hc}}}{}}{{{b{Fj}}}Fj}{{b{b{hc}}}f{}}{{bl}f}{{}Fj}``````{{{b{Fj}}{b{hn}}}A`}{cc{}}{{{b{c}}}c{}}````{{}f}{{}c{}}{{{b{Fj}}}{{Gb{{G`{{b{Fl}}{b{Fn}}}}}}}}{{}{{b{Fl}}}}``````{bc{}}{c{{Bf{e}}}{}{}}{{}{{Bf{c}}}{}}{bBh}{{}c{}}`{b{{b{c}}}{}}{{{b{h}}}{{b{hc}}}{}}<9{Gd{{Af{f}}}}{C`{{Af{f}}}}1{{C`j}{{Af{Gd}}}}8765`{{bd}f}54{{{b{Ff}}}Ff}{{b{b{hc}}}f{}}{{bl}f}`{cc{}}{{{b{c}}}c{}}{{}c{}}`{bc{}}{c{{Bf{e}}}{}{}}{{}{{Bf{c}}}{}}{bBh}{{}c{}}","D":"Oj","p":[[1,"reference",null,null,1],[5,"Private",365],[1,"unit"],[0,"mut"],[5,"ZoneStore",0,366],[1,"u8"],[5,"Formatter",367],[8,"Result",367],[5,"SignedPacket",368],[6,"Option",369,null,1],[8,"Result",370],[1,"bool"],[5,"Path",371],[10,"AsRef",372],[5,"Name",373],[6,"RecordType",374],[5,"RecordSet",375],[5,"Arc",376,null,1],[6,"Result",377,null,1],[5,"TypeId",378],[6,"BootstrapOption",29],[5,"StoreConfig",29],[5,"PathBuf",371],[5,"Config",29],[5,"MainlineConfig",29],[10,"Deserializer",379],[5,"MetricsConfig",29],[10,"Serializer",380],[5,"DnsHandler",116],[5,"Request",381],[5,"Bytes",382],[5,"DnsConfig",116],[5,"Handle",116],[10,"Future",383,null,1],[5,"Box",384,null,1],[5,"Pin",385],[10,"ResponseHandler",386],[5,"DnsServer",116],[6,"SocketAddr",387],[5,"MessageResponse",388],[17,"Item"],[5,"Record",389],[10,"Iterator",390],[10,"Send",391],[6,"RateLimitConfig",191,392],[6,"CertMode",191,393],[5,"HttpConfig",191],[5,"HttpsConfig",191],[5,"Error",367],[5,"HttpServer",191],[5,"AppState",348],[5,"String",394],[5,"Metrics",299],[1,"str"],[10,"Any",378],[1,"tuple",null,null,1],[5,"IntoIter",395],[5,"Server",335]],"r":[[0,366],[191,393],[198,392]],"b":[[231,"impl-Default-for-%26RateLimitConfig"],[232,"impl-Default-for-RateLimitConfig"],[243,"impl-Debug-for-CertMode"],[244,"impl-Display-for-CertMode"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAPAAIAACAAUACgAAAAwAAAAYAAQAJQAAACgADAA2AAgAQwAEAE0AAABZAAQAXwAUAHkAAgB+ABAAkQADAJkAAwCpAAEArQASAMsAAwDRAAkA3AARAO8ACAD9AAMADQEDABMBGAAtAQ0APAEEAEMBDABRAQEAWQEDAF4BBQBmAQAAaQEEAA==","P":[[2,"T"],[4,""],[5,"T"],[6,""],[10,"T"],[12,""],[16,"U"],[18,""],[19,""],[20,""],[23,"T"],[24,"U,T"],[25,"U"],[26,""],[27,"V"],[28,""],[39,"T"],[49,""],[50,"T"],[51,""],[57,"__D"],[62,""],[71,"T"],[79,"U"],[84,""],[88,"__S"],[93,""],[94,"T"],[95,"U,T"],[100,"U"],[105,""],[110,"V"],[120,""],[125,"T"],[133,""],[136,"T"],[139,""],[144,"__D"],[145,""],[148,"T"],[155,"R"],[156,"U"],[160,""],[168,",,,"],[169,"__S"],[170,""],[172,"T"],[175,"U,T"],[179,"U"],[183,""],[187,"V"],[202,""],[208,"T"],[219,""],[223,"T"],[227,""],[233,"__D"],[238,""],[239,"K"],[242,""],[247,"T"],[256,""],[258,"U"],[267,""],[268,"__S"],[272,""],[274,"T"],[278,""],[279,"U,T"],[284,"U"],[289,""],[294,"V"],[300,""],[301,"T"],[303,""],[304,"T"],[305,""],[314,"T"],[320,""],[321,"U"],[322,""],[330,"T"],[331,"U,T"],[332,"U"],[333,""],[334,"V"],[336,"T"],[339,"U"],[340,""],[344,"U,T"],[345,"U"],[346,""],[347,"V"],[349,""],[350,"T"],[352,""],[353,"T"],[354,""],[356,"T"],[358,"U"],[360,"T"],[361,"U,T"],[362,"U"],[363,""],[364,"V"]]}],["iroh_net_report",{"t":"FFFFFFFNHNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNOOONNNOONNNNNNNNNNNNNNOOOOOONNOONNHOOONNOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNN","n":["Addr","Client","Metrics","Options","QuicConfig","RelayLatencies","Report","addr","bind_local_stun_socket","borrow","","","","","","","borrow_mut","","","","","","","captive_portal","client_config","clone","","","","","clone_into","","","","","clone_to_uninit","","","","","default","","","","deref","","","","","","","deref_mut","","","","","","","disabled","drop","","","","","","","ep","eq","","equivalent","","","","","","fmt","","","","","","","","from","","","","","","","get_report","get_report_channel","get_report_with_opts","global_v4","global_v6","hair_pinning","https","icmp_v4","icmp_v6","icmpv4","icmpv6","init","","","","","","","into","","","","","","","ipv4","","ipv4_can_send","ipv6","","ipv6_can_send","iter","","mapping_varies_by_dest_ip","mapping_varies_by_dest_ipv6","name","new","os_has_ipv6","","portmap_probe","preferred_relay","quic_config","receive_stun_packet","relay_latency","relay_v4_latency","relay_v6_latency","reports","reports_full","stun_packets_dropped","stun_packets_recv_ipv4","stun_packets_recv_ipv6","stun_packets_sent_ipv4","stun_packets_sent_ipv6","stun_v4","stun_v6","to_owned","","","","","to_string","try_from","","","","","","","try_into","","","","","","","type_id","","","","","","","udp","vzip","","","","","",""],"q":[[0,"iroh_net_report"],[180,"netwatch::ip_family"],[181,"tokio_util::sync::cancellation_token"],[182,"netwatch::udp"],[183,"alloc::sync"],[184,"core::option"],[185,"iroh_net_report::metrics"],[186,"iroh_net_report::reportgen"],[187,"core::fmt"],[188,"iroh_relay::relay_map"],[189,"anyhow"],[190,"tokio::sync::oneshot"],[191,"core::any"],[192,"alloc::vec::into_iter"],[193,"iroh_base::relay_url"],[194,"core::time"],[195,"core::iter::traits::iterator"],[196,"portmapper"],[197,"hickory_resolver::resolver"],[198,"bytes::bytes"],[199,"core::net::socket_addr"],[200,"alloc::string"],[201,"core::result"],[202,"iroh_net_report::stun_utils"]],"i":"```````b`AdAfAhAj4B`f543261034543205432054320532154326105432610154326104323332225433261054326106663331113354326105432610433433523356`3331033355555551154320354326105432610543261035432610","f":"```````{{{d{b}}}f}{{hfj}{{A`{{n{l}}}}}}{d{{d{c}}}{}}000000{{{d{Ab}}}{{d{Abc}}}{}}000000``{{{d{Ad}}}Ad}{{{d{Af}}}Af}{{{d{Ah}}}Ah}{{{d{Aj}}}Aj}{{{d{f}}}f}{{d{d{Abc}}}Al{}}0000{{dAn}Al}0000{{}Ad}{{}Ah}{{}Aj}{{}B`}{Bb{{d{c}}}{}}000000{Bb{{d{Abc}}}{}}0000002{BbAl}000000`{{{d{Ah}}{d{Ah}}}Bd}{{{d{Aj}}{d{Aj}}}Bd}{{d{d{c}}}Bd{}}00000{{{d{Ad}}{d{AbBf}}}Bh}{{{d{Af}}{d{AbBf}}}Bh}{{{d{Ah}}{d{AbBf}}}Bh}0{{{d{Aj}}{d{AbBf}}}Bh}{{{d{b}}{d{AbBf}}}Bh}{{{d{B`}}{d{AbBf}}}Bh}{{{d{f}}{d{AbBf}}}Bh}{cc{}}000000{{{d{Abb}}Bj{A`{{n{l}}}}{A`{{n{l}}}}{A`{Af}}}{{Bl{{n{Ah}}}}}}{{{d{Abb}}BjB`}{{Bl{{Bn{{Bl{{n{Ah}}}}}}}}}}{{{d{Abb}}BjB`}{{Bl{{n{Ah}}}}}}```{{B`Bd}B`}00``{{}Bb}000000{{}c{}}000000``````{{{d{Ad}}}{{Cf{{Cd{{d{C`}}{d{Cb}}}}}}}}{{{d{Aj}}}{{`{{Cn{}{{Ch{{Cd{{d{Cj}}Cl}}}}}}}}}}``{{}{{d{C`}}}}{{{A`{D`}}Db}{{Bl{b}}}}{{}Bd}```{{B`{A`{Af}}}B`}{{{d{f}}DdDf}Al}``````````{{B`{A`{{n{l}}}}}B`}0{dc{}}0000{dDh}{c{{Dj{e}}}{}{}}000000{{}{{Dj{c}}}{}}000000{dDl}000000`{{}c{}}000000","D":"Gj","p":[[5,"Client",0],[1,"reference",null,null,1],[5,"Addr",0],[6,"IpFamily",180],[5,"CancellationToken",181],[5,"UdpSocket",182],[5,"Arc",183,null,1],[6,"Option",184,null,1],[0,"mut"],[5,"Metrics",0,185],[5,"QuicConfig",0,186],[5,"Report",0],[5,"RelayLatencies",0],[1,"unit"],[1,"u8"],[5,"Options",0],[1,"usize"],[1,"bool"],[5,"Formatter",187],[8,"Result",187],[5,"RelayMap",188],[8,"Result",189],[5,"Receiver",190],[1,"str"],[10,"Any",191],[1,"tuple",null,null,1],[5,"IntoIter",192],[17,"Item"],[5,"RelayUrl",193],[5,"Duration",194],[10,"Iterator",195],[5,"Client",196],[8,"TokioResolver",197],[5,"Bytes",198],[6,"SocketAddr",199],[5,"String",200],[6,"Result",201,null,1],[5,"TypeId",191]],"r":[[2,185],[4,186],[8,202]],"b":[[77,"impl-Display-for-Report"],[78,"impl-Debug-for-Report"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAHcACgAKAA0AGgAgADwABgBEAA8AZgAGAHoAAAB+AAAAiQAGAJIAGgCuAAYA","P":[[9,"T"],[25,""],[30,"T"],[35,""],[44,"T"],[58,""],[69,"K"],[75,""],[83,"T"],[90,""],[108,"U"],[121,""],[145,"T"],[150,""],[151,"U,T"],[158,"U"],[165,""],[173,"V"]]}],["iroh_relay",{"t":"EFFFNNNNNNCNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNOCCONNCOONNNNNNNNNNNNNNONNNNPPFFGPPPPPPPPPPPPPPPPPPGPPPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOSSSSSSGSSPPNNNNNNNNNNNNNNNNNNNNNNNCCCSHSPGPPPPPPPPGFPPPPPPPPPPPGFPFPPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNCHHNHHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNSSSSSSFNNNNNNNNNNNNNNNGFSPFPGFPFFPFFFFFPFOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNOOOONONNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOONNNNNNNNNNNNNONNNNNNNNNNNNNONNNNNNNNNNNNNONONNONNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNOOOONNOOONNNNNONOOONONOOOOOONNNONNCONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNOOOHHHHHH","n":["MAX_PACKET_SIZE","RelayMap","RelayNode","RelayQuicConfig","borrow","","","borrow_mut","","","client","clone","","","clone_into","","","clone_to_uninit","","","cmp","","compare","","contains_node","default","default_from_node","defaults","deref","","","deref_mut","","","deserialize","","drop","","","empty","eq","","","equivalent","","","","","","","","","fmt","","","","","from","","","from_nodes","from_url","get_node","http","init","","","into","","","is_empty","len","nodes","partial_cmp","","port","protos","quic","","serialize","","server","stun_only","stun_port","to_owned","","","to_string","","try_from","","","try_into","","","type_id","","","url","urls","vzip","","","ActorGone","Build","Client","ClientBuilder","ClientError","Closed","ConnectTimeout","DialIO","Dns","Health","Http","Hyper","IPDisabled","InvalidUrl","KeepAlive","NoLocalAddr","NodeGone","Ping","PingAborted","PingTimeout","Pong","Proxy","Receive","ReceivedMessage","ReceivedPacket","Send","ServerRestarting","UnexpectedStatusCode","Upgrade","WebsocketError","address_family_selector","borrow","","","","borrow_mut","","","","build","clone","clone_into","clone_to_uninit","close","close_for_reconnect","connect","deref","","","","deref_mut","","","","drop","","","","finish_ping","fmt","","","","","from","","","","","","","","init","","","","insecure_skip_cert_verify","into","","","","is_connected","is_prober","key_cache_capacity","local_addr","make_dangerous_client_config","new","note_preferred","protocol","proxy_url","public_key","recv","send","send_pong","server_public_key","server_url","source","start_ping","to_owned","to_string","try_from","","","","try_into","","","","type_id","","","","vzip","","","","data","problem","reconnect_in","remote_node_id","try_for","DEFAULT_HTTPS_PORT","DEFAULT_HTTP_PORT","DEFAULT_KEY_CACHE_CAPACITY","DEFAULT_METRICS_PORT","DEFAULT_RELAY_QUIC_PORT","DEFAULT_STUN_PORT","Protocol","RELAY_PATH","RELAY_PROBE_PATH","Relay","Websocket","borrow","borrow_mut","clone","clone_into","clone_to_uninit","deref","deref_mut","drop","eq","equivalent","","","fmt","from","init","into","parse_header","to_owned","try_from","try_into","type_id","upgrade_header","vzip","disco","relay","stun","MAGIC","looks_like_disco_wrapper","MAX_PACKET_SIZE","AlternateServer","Error","ErrorCode","ErrorResponse","Fingerprint","Indication","InvalidFingerprint","InvalidMessage","MalformedAttrs","MappedAddress","MessageClass","MessageDecoder","MessageIntegrity","MessageIntegritySha256","NoFingerprint","Nonce","NotBinding","NotSuccessResponse","PasswordAlgorithm","PasswordAlgorithms","Realm","Request","Software","StunAttribute","StunDecodeError","SuccessResponse","TransactionId","Unknown","UnknownAttributes","UserHash","UserName","XorMappedAddress","as_alternate_server","as_bytes","as_error_code","as_fingerprint","as_mapped_address","as_message_integrity","as_message_integrity_sha256","as_nonce","as_password_algorithm","as_password_algorithms","as_realm","as_ref","as_software","as_unknown","as_unknown_attributes","as_user_hash","as_user_name","as_xor_mapped_address","attribute_type","borrow","","","","","","borrow_mut","","","","","","clone","","","","clone_into","","","","clone_to_uninit","","","","cmp","compare","decode","default","","deref","","","","","","","deref_mut","","","","","","drop","","","","","","eq","","equivalent","","","","","","expect_alternate_server","expect_error_code","expect_fingerprint","expect_mapped_address","expect_message_integrity","expect_message_integrity_sha256","expect_nonce","expect_password_algorithm","expect_password_algorithms","expect_realm","expect_software","expect_unknown","expect_unknown_attributes","expect_user_hash","expect_user_name","expect_xor_mapped_address","fmt","","","","","","","","","from","","","","","","","","","","","","","","","","","","","","","","","","get_context","hash","init","","","","","","into","","","","","","is","is_alternate_server","is_error_code","is_fingerprint","is_mapped_address","is_message_integrity","is_message_integrity_sha256","is_nonce","is_password_algorithm","is_password_algorithms","is_realm","is_software","is_unknown","is_unknown_attributes","is_user_hash","is_user_name","is_xor_mapped_address","methods","parse_binding_request","parse_response","partial_cmp","request","response","to_owned","","","","to_string","","","try_from","","","","","","","try_into","","","","","","type_id","","","","","","vzip","","","","","","BINDING","RESERVED","SHARED_SECRET","ALPN_QUIC_ADDR_DISC","QUIC_ADDR_DISC_CLOSE_CODE","QUIC_ADDR_DISC_CLOSE_REASON","QuicClient","borrow","borrow_mut","deref","deref_mut","drop","fmt","from","get_addr_and_latency","init","into","new","try_from","try_into","type_id","vzip","CertConfig","ClientConnRateLimit","DEFAULT_CERT_RELOAD_INTERVAL","LetsEncrypt","Limits","Manual","MaybeTlsStreamServer","Metrics","Plain","QuicConfig","RelayConfig","Reloading","ReloadingResolver","Server","ServerConfig","StunConfig","StunMetrics","Tls","TlsConfig","accept_conn_burst","accept_conn_limit","accepts","bad_requests","bind_addr","","borrow","","","","","","","","","","","","","borrow_mut","","","","","","","","","","","","","bytes_per_second","bytes_recv","bytes_sent","cert","certificates","client_rx","clone","","","clone_into","","","clone_to_uninit","","","conns_rx_ratelimited_total","default","","","","deref","","","","","","","","","","","","","","deref_mut","","","","","","","","","","","","","disco_packets_dropped","disco_packets_recv","disco_packets_sent","disconnects","drop","","","","","","","","","","","","","failures","fmt","","","","","","","","","","","","","frames_rx_ratelimited_total","from","","","","","","","","","","","","","got_ping","http_addr","http_bind_addr","http_url","https_addr","https_bind_addr","https_url","init","","","","","","","","","","","","","","into","","","","","","","","","","","","","ipv4_success","ipv6_success","iter","","key_cache_capacity","limits","max_burst_bytes","metrics_addr","name","","other_packets_dropped","other_packets_recv","other_packets_sent","poll_flush","poll_read","poll_shutdown","poll_write","poll_write_vectored","quic","quic_addr","quic_bind_addr","relay","relay_accepts","reload","requests","resolve","send_packets_dropped","send_packets_recv","send_packets_sent","sent_pong","server_config","","shutdown","","spawn","stun","stun_addr","task_handle","testing","tls","to_owned","","","try_from","","","","","","","","","","","","","try_into","","","","","","","","","","","","","type_id","","","","","","","","","","","","","unique_client_keys","unknown_frames","vzip","","","","","","","","","","","","","websocket_accepts","certs","state","quic_config","relay_config","self_signed_tls_certs_and_config","server_config","stun_config","tls_config"],"q":[[0,"iroh_relay"],[103,"iroh_relay::client"],[219,"iroh_relay::client::ReceivedMessage"],[224,"iroh_relay::defaults"],[230,"iroh_relay::http"],[258,"iroh_relay::protos"],[261,"iroh_relay::protos::disco"],[263,"iroh_relay::protos::relay"],[264,"iroh_relay::protos::stun"],[489,"iroh_relay::protos::stun::methods"],[492,"iroh_relay::quic"],[511,"iroh_relay::server"],[786,"iroh_relay::server::CertConfig"],[788,"iroh_relay::server::testing"],[794,"iroh_relay::relay_map"],[795,"core::cmp"],[796,"iroh_base::relay_url"],[797,"core::result"],[798,"serde::de"],[799,"core::fmt"],[800,"anyhow"],[801,"alloc::sync"],[802,"core::convert"],[803,"core::iter::traits::collect"],[804,"core::option"],[805,"core::iter::traits::iterator"],[806,"serde::ser"],[807,"alloc::string"],[808,"core::any"],[809,"core::ops::function"],[810,"core::marker"],[811,"iroh_base::key"],[812,"hickory_resolver::resolver"],[813,"iroh_relay::client::conn"],[814,"tokio_tungstenite_wasm::error"],[815,"http::error"],[816,"hyper::error"],[817,"std::io::error"],[818,"core::net::socket_addr"],[819,"rustls::client::client_conn"],[820,"url"],[821,"bytes::bytes"],[822,"core::error"],[823,"core::time"],[824,"core::future::future"],[825,"http::header::value"],[826,"stun_rs::attributes"],[827,"stun_rs::attributes::stun::alternate_server"],[828,"stun_rs::error"],[829,"stun_rs::types"],[830,"stun_rs::attributes::stun::error_code"],[831,"stun_rs::attributes::stun::fingerprint"],[832,"stun_rs::attributes::stun::mapped_address"],[833,"stun_rs::attributes::stun::message_integrity"],[834,"stun_rs::attributes::stun::message_integrity_sha256"],[835,"stun_rs::attributes::stun::nonce"],[836,"stun_rs::attributes::stun::password_algorithm"],[837,"stun_rs::attributes::stun::password_algorithms"],[838,"stun_rs::attributes::stun::realm"],[839,"stun_rs::attributes::stun::software"],[840,"stun_rs::attributes::unknown"],[841,"stun_rs::attributes::stun::unknown_attributes"],[842,"stun_rs::attributes::stun::user_hash"],[843,"stun_rs::attributes::stun::user_name"],[844,"stun_rs::attributes::stun::xor_mapped_address"],[845,"stun_rs::context"],[846,"stun_rs::message"],[847,"core::hash"],[848,"alloc::vec"],[849,"iroh_quinn::endpoint"],[850,"rustls_pki_types"],[851,"iroh_relay::server::metrics"],[852,"core::default"],[853,"iroh_relay::server::resolver"],[854,"rustls::crypto::signer"],[855,"reloadable_core"],[856,"alloc::vec::into_iter"],[857,"core::pin"],[858,"core::task::wake"],[859,"core::task::poll"],[860,"tokio::io::read_buf"],[861,"std::io"],[862,"rustls::server::server_conn"],[863,"tokio_util::task::abort_on_drop"],[864,"stun_rs"],[865,"stun_rs::methods"]],"i":"````fhj210`2102102101010202`21021010210221022211100022110210222`210210222100``110`112102121021021012210Dh0```0000Df1111010011011`010111Cf12Dd123011222000230123012301023301233333012301123010110`101100001130232301230123012301NjNlNn20`````````Eh000000000000000000000000``````Fn`0Ih10Jb002``22020022212``1`222222Gd33333333303333333If3142In14253014251425142522112142253014253014253042444222555555555555555514225330014222555555555555555553012142530142530`5555555555555555```2``14252301442530142530142530142530```````Jj00000000000000```Ll`0``Lb``1`````0`Kn0KbKdLfLh32L`6KhLd43Lj8Kf;Jn985;43762:1<019920:9819819819984:9855;43762:1<0985;43762:1<09999985;43762:1<08985;43762:1<09985;43762:1<090300209855;43762:1<0985;43762:1<08898331498999;;;;;40249585999962500400`3981985;43762:1<0985;43762:1<0985;43762:1<099985;43762:1<09O`Ob``````","f":"````{b{{b{c}}}{}}00{{{b{d}}}{{b{dc}}}{}}00`{{{b{f}}}f}{{{b{h}}}h}{{{b{j}}}j}{{b{b{dc}}}l{}}00{{bn}l}00{{{b{h}}{b{h}}}A`}{{{b{j}}{b{j}}}A`}{{b{b{c}}}A`{}}0{{{b{f}}{b{Ab}}}Ad}{{}j}{{AbAf}f}`{Ah{{b{c}}}{}}00{Ah{{b{dc}}}{}}00{c{{Aj{h}}}Al}{c{{Aj{j}}}Al}{Ahl}00{{}f}{{{b{f}}{b{f}}}Ad}{{{b{h}}{b{h}}}Ad}{{{b{j}}{b{j}}}Ad}{{b{b{c}}}Ad{}}00000000{{{b{f}}{b{dAn}}}B`}0{{{b{h}}{b{dAn}}}B`}0{{{b{j}}{b{dAn}}}B`}{cc{}}00{e{{Bb{f}}}{{Bf{{Bd{h}}}}}{{Bj{}{{Bh{c}}}}}}{Abf}{{{b{f}}{b{Ab}}}{{Bl{{b{{Bd{h}}}}}}}}`{{}Ah}00{{}c{}}00{{{b{f}}}Ad}{{{b{f}}}Ah}{{{b{f}}}{{`{{Bn{}{{Bh{{b{{Bd{h}}}}}}}}}}}}{{{b{h}}{b{h}}}{{Bl{A`}}}}{{{b{j}}{b{j}}}{{Bl{A`}}}}````{{{b{h}}c}AjC`}{{{b{j}}c}AjC`}```{bc{}}00{bCb}0{c{{Aj{e}}}{}{}}00{{}{{Aj{c}}}{}}00{bCd}00`{{{b{f}}}{{`{{Bn{}{{Bh{{b{Ab}}}}}}}}}}{{}c{}}00``````````````````````````````{{Cfc}Cf{{Cj{}{{Ch{Ad}}}}ClCn}}{b{{b{c}}}{}}000{{{b{d}}}{{b{dc}}}{}}000{{CfD`Db}Dd}{{{b{Df}}}Df}{{b{b{dc}}}l{}}{{bn}l}{Ddl}{{{b{dDd}}}l}{{{b{dDd}}}{{Aj{lDh}}}}{Ah{{b{c}}}{}}000{Ah{{b{dc}}}{}}000{Ahl}000{{{b{dDd}}{Dj{n}}}l}{{{b{Df}}{b{dAn}}}B`}{{{b{Dh}}{b{dAn}}}B`}0{{{b{Dd}}{b{dAn}}}B`}{{{b{Cf}}{b{dAn}}}B`}{cc{}}{DlDh}1{DnDh}{E`Dh}{EbDh}44{{}Ah}000{{CfAd}Cf}{{}c{}}000{{{b{Dd}}}Ad}2{{CfAh}Cf}{{{b{Dd}}}{{Bl{Ed}}}}{{}Ef}{cCf{{Bf{Ab}}}}{{{b{dDd}}Ad}l}{{CfEh}Cf}{{CfEj}Cf}{{{b{Dd}}}El}{{{b{dDd}}}{{Bl{{Aj{DfDh}}}}}}{{{b{dDd}}EnF`}{{Aj{lDh}}}}{{{b{dDd}}{Dj{n}}}{{Aj{lDh}}}}{{CfEl}Cf}{{Cfc}Cf{{Bf{Ab}}}}{{{b{Dh}}}{{Bl{{b{Fb}}}}}}{{{b{dDd}}}{{Aj{{`{{Ff{}{{Ch{{Aj{FdDh}}}}}}ClCn}}Dh}}}}{bc{}}{bCb}{c{{Aj{e}}}{}{}}000{{}{{Aj{c}}}{}}000{bCd}000{{}c{}}000````````````````{b{{b{c}}}{}}{{{b{d}}}{{b{dc}}}{}}{{{b{Eh}}}Eh}{{b{b{dc}}}l{}}{{bn}l}{Ah{{b{c}}}{}}{Ah{{b{dc}}}{}}{Ahl}{{{b{Eh}}{b{Eh}}}Ad}{{b{b{c}}}Ad{}}00{{{b{Eh}}{b{dAn}}}B`}{cc{}}{{}Ah}{{}c{}}{{{b{Fh}}}{{Bl{Eh}}}}{bc{}}{c{{Aj{e}}}{}{}}{{}{{Aj{c}}}{}}{bCd}{{{b{Eh}}}{{b{Fj}}}}{{}c{}}````{{{b{{Fl{n}}}}}Ad}`````````````````````````````````{{{b{Fn}}}{{Aj{{b{G`}}Gb}}}}{{{b{Gd}}}{{b{{Dj{n}}}}}}{{{b{Fn}}}{{Aj{{b{Gf}}Gb}}}}{{{b{Fn}}}{{Aj{{b{Gh}}Gb}}}}{{{b{Fn}}}{{Aj{{b{Gj}}Gb}}}}{{{b{Fn}}}{{Aj{{b{Gl}}Gb}}}}{{{b{Fn}}}{{Aj{{b{Gn}}Gb}}}}{{{b{Fn}}}{{Aj{{b{H`}}Gb}}}}{{{b{Fn}}}{{Aj{{b{Hb}}Gb}}}}{{{b{Fn}}}{{Aj{{b{Hd}}Gb}}}}{{{b{Fn}}}{{Aj{{b{Hf}}Gb}}}}{{{b{Gd}}}{{b{{Fl{n}}}}}}{{{b{Fn}}}{{Aj{{b{Hh}}Gb}}}}{{{b{Fn}}}{{Aj{{b{Hj}}Gb}}}}{{{b{Fn}}}{{Aj{{b{Hl}}Gb}}}}{{{b{Fn}}}{{Aj{{b{Hn}}Gb}}}}{{{b{Fn}}}{{Aj{{b{I`}}Gb}}}}{{{b{Fn}}}{{Aj{{b{Ib}}Gb}}}}{{{b{Fn}}}Id}{b{{b{c}}}{}}00000{{{b{d}}}{{b{dc}}}{}}00000{{{b{If}}}If}{{{b{Ih}}}Ih}{{{b{Gd}}}Gd}{{{b{Fn}}}Fn}{{b{b{dc}}}l{}}000{{bn}l}000{{{b{Gd}}{b{Gd}}}A`}{{b{b{c}}}A`{}}{{{b{If}}{b{{Fl{n}}}}}{{Aj{{Il{IjAh}}In}}}}{{}If}{{}Gd}{Ah{{b{c}}}{}}00{{{b{Gd}}}{{b{{Fl{n}}}}}}111{Ah{{b{dc}}}{}}00000{Ahl}00000{{{b{Ih}}{b{Ih}}}Ad}{{{b{Gd}}{b{Gd}}}Ad}{{b{b{c}}}Ad{}}00000{{{b{Fn}}}{{b{G`}}}}{{{b{Fn}}}{{b{Gf}}}}{{{b{Fn}}}{{b{Gh}}}}{{{b{Fn}}}{{b{Gj}}}}{{{b{Fn}}}{{b{Gl}}}}{{{b{Fn}}}{{b{Gn}}}}{{{b{Fn}}}{{b{H`}}}}{{{b{Fn}}}{{b{Hb}}}}{{{b{Fn}}}{{b{Hd}}}}{{{b{Fn}}}{{b{Hf}}}}{{{b{Fn}}}{{b{Hh}}}}{{{b{Fn}}}{{b{Hj}}}}{{{b{Fn}}}{{b{Hl}}}}{{{b{Fn}}}{{b{Hn}}}}{{{b{Fn}}}{{b{I`}}}}{{{b{Fn}}}{{b{Ib}}}}{{{b{If}}{b{dAn}}}{{Aj{lJ`}}}}{{{b{Ih}}{b{dAn}}}{{Aj{lJ`}}}}{{{b{Gd}}{b{dAn}}}{{Aj{lJ`}}}}0{{{b{Fn}}{b{dAn}}}{{Aj{lJ`}}}}{{{b{Jb}}{b{dAn}}}B`}0{{{b{In}}{b{dAn}}}{{Aj{lJ`}}}}0{cc{}}00{{{b{{Dj{n}}}}}Gd}{{{Dj{n}}}Gd}{H`Fn}{HhFn}{GfFn}{GhFn}{GjFn}{GlFn}8{HjFn}{IbFn}{GnFn}{I`Fn}{HbFn}{HdFn}{HfFn}{HnFn}{HlFn}{G`Fn}{cc{}}0{{{b{If}}}{{Bl{{b{Jd}}}}}}{{{b{Gd}}{b{dc}}}lJf}{{}Ah}00000{{}c{}}00000{{{b{{Fl{n}}}}}Ad}{{{b{Fn}}}Ad}000000000000000`{{{b{{Fl{n}}}}}{{Aj{GdJb}}}}{{{b{{Fl{n}}}}}{{Aj{{Il{GdEd}}Jb}}}}{{{b{Gd}}{b{Gd}}}{{Bl{A`}}}}{Gd{{Jh{n}}}}{{GdEd}{{Jh{n}}}}{bc{}}000{bCb}00{c{{Aj{e}}}{}{}}0{n{{Aj{Ih}}}}1111{{}{{Aj{c}}}{}}00000{bCd}00000{{}c{}}00000```````{b{{b{c}}}{}}{{{b{d}}}{{b{dc}}}{}}{Ah{{b{c}}}{}}{Ah{{b{dc}}}{}}{Ahl}{{{b{Jj}}{b{dAn}}}B`}{cc{}}{{{b{Jj}}Ed{b{Fj}}}{{Bb{{Il{EdFd}}}}}}{{}Ah}{{}c{}}{{JlEf}{{Bb{Jj}}}}?=<;`````````````````````````:::::::::::::9999999999999````{{{b{Jn}}}{{Bl{{Jh{K`}}}}}}`{{{b{Kb}}}Kb}{{{b{Kd}}}Kd}{{{b{Kf}}}Kf}{{b{b{dc}}}l{}}00{{bn}l}00`{{}Kb}{{}Kd}{{}{{Kh{ce}}}{KjKl}{KjKl}}{{}Kn}{Ah{{b{c}}}{}}00{{{b{{L`{c}}}}}{{b{e}}}Cl{}}1111111111{Ah{{b{dc}}}{}}000000000000````{Ahl}000000000000`{{{b{Kb}}{b{dAn}}}B`}{{{b{Kd}}{b{dAn}}}B`}{{{b{{L`{c}}}}{b{dAn}}}B`{KlCl}}{{{b{Lb}}{b{dAn}}}B`}{{{b{{Kh{ce}}}}{b{dAn}}}B`KlKl}{{{b{{Ld{ce}}}}{b{dAn}}}B`KlKl}{{{b{Lf}}{b{dAn}}}B`}{{{b{Lh}}{b{dAn}}}B`}{{{b{{Lj{ce}}}}{b{dAn}}}B`KlKl}{{{b{Kn}}{b{dAn}}}B`}{{{b{Kf}}{b{dAn}}}B`}{{{b{{Ll{ce}}}}{b{dAn}}}B`KlKl}{{{b{Jn}}{b{dAn}}}B`}`{cc{}}000000000000`{{{b{Jn}}}{{Bl{Ed}}}}`{{{b{Jn}}}{{Bl{Ab}}}}1`0{{}Ah}00{{cFd}{{Bb{{L`{c}}}}}{Cl{Mb{}{{Ln{M`}}}}}}1111111111{{}c{}}000000000000``{{{b{Kb}}}{{Mf{{Il{{b{Fj}}{b{Md}}}}}}}}{{{b{Kd}}}{{Mf{{Il{{b{Fj}}{b{Md}}}}}}}}````{{}{{b{Fj}}}}0```{{{Mh{{b{dLb}}}}{b{dMj}}}{{Ml{{Aj{lEb}}}}}}{{{Mh{{b{dLb}}}}{b{dMj}}{b{dMn}}}{{Ml{{N`{l}}}}}}1{{{Mh{{b{dLb}}}}{b{dMj}}{b{{Fl{n}}}}}{{Ml{{Aj{AhEb}}}}}}{{{Mh{{b{dLb}}}}{b{dMj}}{b{{Fl{Nb}}}}}{{Ml{{Aj{AhEb}}}}}}`;```{{{b{{L`{c}}}}}l{Cl{Mb{}{{Ln{M`}}}}}}`{{{b{{L`{c}}}}Nd}{{Bl{{Bd{M`}}}}}{{Mb{}{{Ln{M`}}}}ClKl}}``````{{{L`{c}}}l{Cl{Mb{}{{Ln{M`}}}}}}{Jn{{Bb{l}}}}{{{Kh{ce}}}{{Bb{Jn}}}KlKl}`{{{b{Jn}}}{{Bl{Ed}}}}{{{b{dJn}}}{{b{d{Nf{{Bb{l}}}}}}}}``{bc{}}00{c{{Aj{e}}}{}{}}000000000000{{}{{Aj{c}}}{}}000000000000{bCd}000000000000``{{}c{}}000000000000```{{}Lh}{{}{{Ld{l}}}}{{}{{Il{{Jh{K`}}Nh}}}}{{}{{Kh{l}}}}{{}Lf}{{}{{Lj{l}}}}","D":"BKb","p":[[1,"reference",null,null,1],[0,"mut"],[5,"RelayMap",0,794],[5,"RelayNode",0,794],[5,"RelayQuicConfig",0,794],[1,"unit"],[1,"u8"],[6,"Ordering",795],[5,"RelayUrl",796],[1,"bool"],[1,"u16"],[1,"usize"],[6,"Result",797,null,1],[10,"Deserializer",798],[5,"Formatter",799],[8,"Result",799],[8,"Result",800],[5,"Arc",801,null,1],[10,"Into",802],[17,"Item"],[10,"IntoIterator",803],[6,"Option",804,null,1],[10,"Iterator",805],[10,"Serializer",806],[5,"String",807],[5,"TypeId",808],[5,"ClientBuilder",103],[17,"Output"],[10,"Fn",809],[10,"Send",810],[10,"Sync",810],[5,"SecretKey",811],[8,"TokioResolver",812],[5,"Client",103],[6,"ReceivedMessage",103,813],[6,"ClientError",103],[1,"array"],[6,"Error",814],[5,"Error",815],[5,"Error",816],[5,"Error",817],[6,"SocketAddr",818],[5,"ClientConfig",819],[6,"Protocol",230],[5,"Url",820],[5,"PublicKey",811],[8,"NodeId",811],[5,"Bytes",821],[10,"Error",822],[5,"Duration",823],[10,"Future",824,null,1],[5,"HeaderValue",825],[1,"str"],[1,"slice"],[6,"StunAttribute",264,826],[5,"AlternateServer",827],[5,"StunError",828],[5,"TransactionId",264,829],[5,"ErrorCode",830],[6,"Fingerprint",831],[5,"MappedAddress",832],[6,"MessageIntegrity",833],[6,"MessageIntegritySha256",834],[5,"Nonce",835],[5,"PasswordAlgorithm",836],[5,"PasswordAlgorithms",837],[5,"Realm",838],[5,"Software",839],[5,"Unknown",840],[5,"UnknownAttributes",841],[5,"UserHash",842],[5,"UserName",843],[5,"XorMappedAddress",844],[5,"AttributeType",826],[5,"MessageDecoder",264,845],[6,"MessageClass",264,846],[5,"StunMessage",846],[1,"tuple",null,null,1],[5,"StunDecodeError",264,828],[5,"Error",799],[6,"Error",264],[5,"DecoderContext",845],[10,"Hasher",847],[5,"Vec",848],[5,"QuicClient",492],[5,"Endpoint",849],[5,"Server",511],[5,"CertificateDer",850],[5,"Metrics",511,851],[5,"StunMetrics",511,851],[5,"ClientConnRateLimit",511],[5,"ServerConfig",511],[10,"Default",852],[10,"Debug",799],[5,"Limits",511],[5,"ReloadingResolver",511,853],[6,"MaybeTlsStreamServer",511],[5,"RelayConfig",511],[5,"StunConfig",511],[5,"QuicConfig",511],[5,"TlsConfig",511],[6,"CertConfig",511],[17,"Value"],[5,"CertifiedKey",854],[10,"Loader",855],[10,"Any",808],[5,"IntoIter",856],[5,"Pin",857],[5,"Context",858],[6,"Poll",859],[5,"ReadBuf",860],[8,"Result",817],[5,"IoSlice",861],[5,"ClientHello",862],[5,"AbortOnDropHandle",863],[5,"ServerConfig",862],[15,"ReceivedPacket",219],[15,"Health",219],[15,"ServerRestarting",219],[15,"Manual",786],[15,"LetsEncrypt",786]],"r":[[0,263],[1,794],[2,794],[3,794],[126,813],[274,846],[275,845],[287,826],[288,828],[290,829],[451,864],[489,865],[490,865],[491,865],[513,853],[518,851],[523,853],[527,851]],"b":[[52,"impl-Display-for-RelayMap"],[53,"impl-Debug-for-RelayMap"],[54,"impl-Display-for-RelayNode"],[55,"impl-Debug-for-RelayNode"],[163,"impl-Display-for-ClientError"],[164,"impl-Debug-for-ClientError"],[168,"impl-From%3CError%3E-for-ClientError"],[170,"impl-From%3CError%3E-for-ClientError"],[171,"impl-From%3CError%3E-for-ClientError"],[172,"impl-From%3CError%3E-for-ClientError"],[389,"impl-Debug-for-TransactionId"],[390,"impl-Display-for-TransactionId"],[392,"impl-Display-for-Error"],[393,"impl-Debug-for-Error"],[394,"impl-Debug-for-StunDecodeError"],[395,"impl-Display-for-StunDecodeError"],[399,"impl-From%3C%26%5Bu8;+stun_rs::::types::%7Bimpl%2313%7D::%7Bconstant%230%7D%5D%3E-for-TransactionId"],[400,"impl-From%3C%5Bu8;+stun_rs::::types::%7Bimpl%2314%7D::%7Bconstant%230%7D%5D%3E-for-TransactionId"],[401,"impl-From%3CNonce%3E-for-StunAttribute"],[402,"impl-From%3CSoftware%3E-for-StunAttribute"],[403,"impl-From%3CErrorCode%3E-for-StunAttribute"],[404,"impl-From%3CFingerprint%3E-for-StunAttribute"],[405,"impl-From%3CMappedAddress%3E-for-StunAttribute"],[406,"impl-From%3CMessageIntegrity%3E-for-StunAttribute"],[408,"impl-From%3CUnknown%3E-for-StunAttribute"],[409,"impl-From%3CXorMappedAddress%3E-for-StunAttribute"],[410,"impl-From%3CMessageIntegritySha256%3E-for-StunAttribute"],[411,"impl-From%3CUserName%3E-for-StunAttribute"],[412,"impl-From%3CPasswordAlgorithm%3E-for-StunAttribute"],[413,"impl-From%3CPasswordAlgorithms%3E-for-StunAttribute"],[414,"impl-From%3CRealm%3E-for-StunAttribute"],[415,"impl-From%3CUserHash%3E-for-StunAttribute"],[416,"impl-From%3CUnknownAttributes%3E-for-StunAttribute"],[417,"impl-From%3CAlternateServer%3E-for-StunAttribute"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAMEBMgABAAAABQAFAAwADAAaAAAAHQAKACkAEABBAAIASgABAFAAAQBVAA0AZQACAIcABwCQAAIAlgALAKMABACpAAAAqwACALAAAwDIAAAAygARAOwADAD6AAAA/QADAAIBAAA0AQAAPAEZAFcBAABZARoAhAEIAJABBwCZAQkApgEGAMcBAADKAR8A8QEFAPkBAAD8AQMAGQIZADkCCABDAh4AZgIMAHQCDACWAgIAmgIJALMCAQC5AgEAvgIEAMoCAADZAikABQMMAA==","P":[[4,"T"],[11,""],[14,"T"],[17,""],[22,"K"],[24,""],[28,"T"],[34,"__D"],[36,""],[43,"K"],[52,""],[57,"T"],[60,"I,"],[61,""],[67,"U"],[70,""],[79,"__S"],[84,"T"],[87,""],[89,"U,T"],[92,"U"],[95,""],[100,"V"],[133,"S"],[134,"T"],[142,""],[144,"T"],[145,""],[149,"T"],[157,""],[167,"T"],[168,""],[169,"T"],[170,""],[173,"T"],[175,""],[180,"U"],[184,""],[189,""],[190,""],[198,""],[199,""],[201,"T"],[202,""],[203,"U,T"],[207,"U"],[211,""],[215,"V"],[235,"T"],[237,""],[238,"T"],[239,""],[240,"T"],[242,""],[244,"K"],[247,""],[248,"T"],[249,""],[250,"U"],[251,""],[252,"T"],[253,"U,T"],[254,"U"],[255,""],[257,"V"],[262,""],[315,"T"],[327,""],[331,"T"],[335,""],[340,"K"],[341,""],[344,"T"],[347,""],[348,"T"],[357,""],[365,"K"],[371,""],[396,"T"],[399,""],[407,"T"],[408,""],[418,"T"],[420,""],[421,"__H"],[422,""],[428,"U"],[434,""],[457,"T"],[461,""],[464,"U,T"],[466,""],[467,"U,T"],[471,"U"],[477,""],[483,"V"],[496,"T"],[500,""],[502,"T"],[503,""],[505,"U"],[506,""],[507,"U,T"],[508,"U"],[509,""],[510,"V"],[536,"T"],[566,""],[571,"T"],[574,""],[580,"EC,EA"],[581,""],[582,"T"],[585,"Loader,Deref::Target"],[586,"T"],[613,""],[629,"Loader"],[630,""],[631,"EC,EA"],[633,""],[635,"EC,EA"],[636,""],[638,"EC,EA"],[639,""],[641,"T"],[655,""],[664,"Loader"],[665,""],[675,"U"],[690,""],[711,"Loader"],[721,""],[722,"EC,EA"],[724,""],[728,"T"],[731,"U,T"],[744,"U"],[757,""],[772,"V"],[788,""]]}],["iroh_test",{"t":"FQNNNNCNCNNNNHHHHH","n":["CallOnDrop","assert_eq_hex","borrow","borrow_mut","drop","from","hexdump","into","logging","new","try_from","try_into","type_id","parse_hexdump","print_hexdump","setup","setup_multithreaded","testing_subscriber"],"q":[[0,"iroh_test"],[13,"iroh_test::hexdump"],[15,"iroh_test::logging"],[18,"core::ops::function"],[19,"core::result"],[20,"core::any"],[21,"alloc::vec"],[22,"anyhow"],[23,"alloc::string"],[24,"core::convert"],[25,"tracing_core::dispatcher"],[26,"tracing_core::subscriber"]],"i":"``f000`0`0000`````","f":"``{b{{b{c}}}{}}{{{b{d}}}{{b{dc}}}{}}{{{b{df}}}h}{cc{}}`{{}c{}}`{cfj}{c{{l{e}}}{}{}}{{}{{l{c}}}{}}{bn}{{{b{A`}}}{{Af{{Ad{Ab}}}}}}{{ce}Ah{{Al{{Aj{Ab}}}}}{{Al{{Aj{An}}}}}}{{}B`}{{}h}{{}{{`{Bb}}}}","D":"Ad","p":[[1,"reference",null,null,1],[0,"mut"],[5,"CallOnDrop",0],[1,"unit"],[10,"FnOnce",18],[6,"Result",19,null,1],[5,"TypeId",20],[1,"str"],[1,"u8"],[5,"Vec",21],[8,"Result",22],[5,"String",23],[1,"slice"],[10,"AsRef",24],[1,"usize"],[5,"DefaultGuard",25],[10,"Subscriber",26]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAAgABAABAAAAAwACAAcAAAAKAAMA","P":[[2,"T"],[4,""],[5,"T"],[7,"U"],[9,""],[10,"U,T"],[11,"U"],[12,""],[14,","],[15,""]]}]]'));
+var searchIndex = new Map(JSON.parse('[["bulk",{"t":"HHHHH","n":["collect_and_print","main","run_iroh","run_quinn","run_s2n"],"q":[[0,"bulk"],[5,"core::option"],[6,"struct_iterable_internal"],[7,"iroh_bench"],[8,"anyhow"],[9,"iroh_bench::s2n"]],"i":"`````","f":"{{{d{b}}{f{{d{c}}}}}hj}{{}h}{l{{n{h}}}}0{A`{{n{h}}}}","D":"`","p":[[1,"str"],[1,"reference",null,null,1],[6,"Option",5,null,1],[1,"unit"],[10,"Iterable",6],[5,"Opt",7],[8,"Result",8],[5,"Opt",9]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAAUAAQAAAAUA","P":[[0,""],[1,""]]}],["iroh",{"t":"PPEPGTFIFFEFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNOCCNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNONNNNNCNNONONNNNNNNNNOOCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNCNNSSSSSCCSSSHHHHSSHHHFKFNNNNNNNNNNNNNNCNNNNNNNNNNNNNNOCOCONNNNCNNNNNNNNNNNFSSNNNNNNNNNNNNNNNNFSNNNNNNNNNNNNNNNNNSSSSFFFNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNTFNNNNNNNNNNNNNNNNNNNNNNIKHMNMNMNMNMNMNMNMNMNMNCHPSGFPFNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNONONNNNNNHNNNNNNNNNNNNNTTFFFFKPFPFTTTPFPFPPFFFPGPPPPPFGGKKFKPPPFFGPPPSFFTTTPFKTTPFFTPPTTPFTTPPFFTFPPPPFGPGGFPPGFPPGFTTPGFFGPPGFPPTPPPFFPFPFPPFFPFGFFPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONONNNOOOMNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNONNONONOONOOOONNNONNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNONNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNONNNNNNNNNNNNNNNOOONOOONNNOOOHNNNONNNOOONNNNNNNNOONNOONONMNMNMNNNNNNNOOONNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOONNNNNNONNNNNNNNOONMNNONMNNNNNNOONNNNNNNNNNNNNNNNNNNONMNNONOONOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNOOFFFFNNNNOOOOOOOOONNNNNNNNOONNNNNNNNNNNNOOONNNNNNNNNNNNOOOONNNNONNNNONNNNNNNNONNNNNNNNNNNNOOONNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNOOOOOOONNNNOKFFNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFNNNNHNNNNNNNNNNNNNNNNOONONHHHNNNNNNNNNFFFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["Decode","DecodeInvalidLength","Endpoint","Key","KeyParsingError","LENGTH","NodeAddr","NodeId","PublicKey","RelayMap","RelayMode","RelayNode","RelayUrl","RelayUrlParseError","SecretKey","__clone_box","","","","","","as_bytes","as_ref","borrow","","","","","","","","","borrow_mut","","","","","","","","clone","","","","","","clone_into","","","","","","clone_to_uninit","","","","","","cmp","","","","compare","","","","contains_node","default_from_node","defaults","deref","","","","","","","","","deref_mut","","","","","","","","deserialize","","","","","direct_addresses","","discovery","dns","drop","","","","","","","","empty","endpoint","eq","","","","","equivalent","","","","","","","","","","","","","","","fmt","","","","","","","","","","","","","","","fmt_short","from","","","","","","","","","","","","","","","","","","","","from_bytes","","from_nodes","from_parts","from_ref","","","","","","from_str","","","from_url","generate","get_node","hash","","init","","","","","","","","into","","","","","","","","is_empty","","len","metrics","new","node_id","nodes","partial_cmp","","","","protocol","public","","quic","relay_url","","secret","serialize","","","","","sign","source","","stun_only","stun_port","test_utils","to_bytes","to_owned","","","","","","to_string","","","","","","","try_from","","","","","","","","","","","try_into","","","","","","","","type_id","","","","","","","","url","urls","verify","vzip","","","","","","","","watchable","with_direct_addresses","with_relay_url","DEFAULT_HTTPS_PORT","DEFAULT_HTTP_PORT","DEFAULT_METRICS_PORT","DEFAULT_RELAY_QUIC_PORT","DEFAULT_STUN_PORT","prod","staging","AP_RELAY_HOSTNAME","EU_RELAY_HOSTNAME","NA_RELAY_HOSTNAME","default_ap_relay_node","default_eu_relay_node","default_na_relay_node","default_relay_map","EU_RELAY_HOSTNAME","NA_RELAY_HOSTNAME","default_eu_relay_node","default_na_relay_node","default_relay_map","ConcurrentDiscovery","Discovery","DiscoveryItem","__clone_box","add","borrow","","borrow_mut","","clone","clone_into","clone_to_uninit","default","deref","","deref_mut","","dns","drop","","empty","fmt","","from","","","from_ref","from_services","init","","into","","last_updated","local_swarm_discovery","node_addr","pkarr","provenance","publish","","resolve","","static_provider","subscribe","","to_owned","try_from","","try_into","","type_id","","vzip","","DnsDiscovery","N0_DNS_NODE_ORIGIN_PROD","N0_DNS_NODE_ORIGIN_STAGING","borrow","borrow_mut","deref","deref_mut","drop","fmt","from","init","into","n0_dns","new","resolve","try_from","try_into","type_id","vzip","LocalSwarmDiscovery","NAME","borrow","borrow_mut","deref","deref_mut","drop","fmt","from","init","into","new","publish","resolve","subscribe","try_from","try_into","type_id","vzip","DEFAULT_PKARR_TTL","DEFAULT_REPUBLISH_INTERVAL","N0_DNS_PKARR_RELAY_PROD","N0_DNS_PKARR_RELAY_STAGING","PkarrPublisher","PkarrRelayClient","PkarrResolver","__clone_box","","","borrow","","","borrow_mut","","","clone","","","clone_into","","","clone_to_uninit","","","deref","","","deref_mut","","","dht","drop","","","","fmt","","","from","","","from_ref","","","init","","","into","","","n0_dns","","new","","","publish","","resolve","","to_owned","","","try_from","","","try_into","","","type_id","","","update_addr_info","vzip","","","with_options","Builder","DhtDiscovery","__clone_box","borrow","","borrow_mut","","build","builder","client","clone","clone_into","clone_to_uninit","default","","deref","","deref_mut","","dht","drop","","fmt","","from","","from_ref","include_direct_addresses","init","","initial_publish_delay","into","","n0_dns_pkarr_relay","pkarr_relay","publish","republish_delay","resolve","secret_key","to_owned","try_from","","try_into","","ttl","type_id","","vzip","","PROVENANCE","StaticProvider","add_node_addr","borrow","borrow_mut","default","deref","deref_mut","drop","fmt","from","from_node_addrs","get_node_addr","init","into","new","publish","remove_node_addr","resolve","set_node_addr","try_from","try_into","type_id","vzip","DnsResolver","ResolverExt","default_resolver","lookup_by_id","","lookup_by_id_staggered","","lookup_by_name","","lookup_by_name_staggered","","lookup_ipv4","","lookup_ipv4_ipv6","","lookup_ipv4_ipv6_staggered","","lookup_ipv4_staggered","","lookup_ipv6","","lookup_ipv6_staggered","","node_info","resolver","Addr","IROH_TXT_NAME","IrohAttr","NodeInfo","Relay","TxtAttrs","__clone_box","as_ref","attrs","borrow","","","borrow_mut","","","clone","clone_into","clone_to_uninit","cmp","compare","deref","","","deref_mut","","","direct_addresses","drop","","","eq","","equivalent","","","","","","fmt","","","","from","","","","","","from_hickory_records","","from_parts","from_pkarr_signed_packet","","from_ref","from_str","from_strings","from_z32","hash","init","","","into","","","lookup_by_id","lookup_by_name","new","node_id","","partial_cmp","relay_url","to_hickory_records","","to_owned","to_pkarr_signed_packet","","to_string","to_z32","try_from","","","","try_into","","","type_id","","","vzip","","","AEAD_LIMIT_REACHED","APPLICATION_ERROR","Accept","AcceptBi","AcceptUni","AckFrequencyConfig","AeadKey","App","ApplicationClose","ApplicationClosed","Builder","CONNECTION_ID_LIMIT_ERROR","CONNECTION_REFUSED","CRYPTO_BUFFER_EXCEEDED","CallMeMaybe","Chunk","CidsExhausted","ClosedStream","","","Connecting","Connection","ConnectionClose","ConnectionClosed","ConnectionError","ConnectionLost","","","","","ConnectionStats","ConnectionType","ControlMsg","Controller","ControllerFactory","CryptoError","CryptoServerConfig","Custom","Default","Direct","DirectAddr","DirectAddrInfo","DirectAddrType","Disabled","","Discovery","ENV_FORCE_STAGING_RELAYS","Endpoint","ExportKeyingMaterialError","FINAL_SIZE_ERROR","FLOW_CONTROL_ERROR","FRAME_ENCODING_ERROR","FinishedEarly","FrameStats","HandshakeTokenKey","INTERNAL_ERROR","INVALID_TOKEN","IllegalOrderedRead","Incoming","IncomingFuture","KEY_UPDATE_ERROR","Local","LocallyClosed","MAX","MAX_SIZE","Mixed","MtuDiscoveryConfig","NO_ERROR","NO_VIABLE_PATH","NamedApp","None","OpenBi","OpenUni","PROTOCOL_VIOLATION","PathStats","Ping","Pong","Portmapped","Read","ReadDatagram","ReadError","","ReadExactError","ReadToEndError","RecvStream","Relay","","RelayMode","RemoteInfo","Reset","","ResetError","RetryError","STREAM_LIMIT_ERROR","STREAM_STATE_ERROR","Saved","SendDatagramError","SendStream","ServerConfig","Source","Staging","Stopped","StoppedError","StreamId","Stun","Stun4LocalPort","TRANSPORT_PARAMETER_ERROR","TimedOut","TooLarge","TooLong","TransportConfig","TransportError","","TransportErrorCode","Udp","UdpStats","Unknown","UnsupportedByPeer","UnsupportedVersion","VarInt","VersionMismatch","WeakConnectionHandle","WriteError","Written","ZeroRttAccepted","ZeroRttRejected","","","","__clone_box","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","accept","","accept_bi","accept_uni","accept_with","ack_eliciting_threshold","ack_frequency","ack_frequency_config","acks","add_discovery","add_node_addr","add_node_addr_with_source","addr","","addrs","aead_from_hkdf","allow_spin","alpn","alpns","bind","bind_addr_v4","bind_addr_v6","black_hole_cooldown","black_holes_detected","borrow","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","borrow_mut","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bound_sockets","build","builder","bytes","","","chunks","clear_discovery","clone","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","clone_box","clone_into","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","clone_to_uninit","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","close","","close_reason","closed","cmp","","","","code","compare","","","","congestion_controller_factory","congestion_events","congestion_state","conn_type","","connect","connection_close","crypto","","","crypto_buffer_size","current_mtu","cwnd","data_blocked","datagram","datagram_receive_buffer_size","datagram_send_buffer_size","datagram_send_buffer_space","datagrams","default","","","","","","","","","","","default_relay_mode","deref","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","deref_mut","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","deserialize","","","","","dir","direct_addresses","discovery","","discovery_dht","discovery_local_network","discovery_n0","dns_resolver","","drop","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","enable_segmentation_offload","eq","","","","","","","","","","","","","","","","","","","","","","","","","","equivalent","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","error_code","","export_keying_material","finish","fmt","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","force_staging_infra","frame","frame_rx","frame_tx","frame_type","from","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","from_ref","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","from_u32","from_u64","from_u64_unchecked","get_remote_node_id","handshake_data","","handshake_done","has_send_address","hash","","","","","home_relay","id","","ignore","immediate_ack","incoming_buffer_size","incoming_buffer_size_total","index","init","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","initial_keys","initial_mtu","initial_rtt","initial_window","initiator","insecure_skip_relay_cert_verify","interval","into","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","into_0rtt","into_any","into_future","","","","","","","","","","into_incoming","into_inner","ios","is_0rtt","is_alive","is_closed","join","","","","","","","","","keep_alive_interval","keylog","known_nodes","last_alive","last_control","last_payload","last_received","last_used","latency","","local_ip","","","lost_bytes","lost_packets","lost_plpmtud_probes","make_server_config","max_ack_delay","max_concurrent_bidi_streams","max_concurrent_uni_streams","max_data","max_datagram_size","max_idle_timeout","max_incoming","max_stream_data","max_streams_bidi","max_streams_uni","migration","min_mtu","minimum_change","mtu_discovery_config","network_change","network_path_changed","new","","new_connection_id","new_token","node_addr","node_id","","observed_addr","observed_external_addr","offset","on_ack","on_congestion_event","on_end_acks","on_mtu_update","on_sent","open","open_bi","open_uni","packet_threshold","partial_cmp","","","","path","path_challenge","path_response","peer_identity","persistent_congestion_threshold","ping","poll","","","","","","","","","poll_flush","poll_read","","poll_shutdown","poll_write","","preferred_address_v4","preferred_address_v6","priority","proxy_from_env","proxy_url","race","","","","","","","","","read","read_chunk","read_chunks","read_datagram","read_exact","read_to_end","reason","","","receive_observed_address_reports","receive_window","received_reset","refuse","relay_map","relay_mode","relay_url","remote_address","","","remote_address_validated","remote_info","remote_info_iter","reordering_threshold","reset","reset_stream","retire_connection_id","retry","retry_tag","retry_token_lifetime","rtt","","saturating_add","seal","secret_key","","send_datagram","send_datagram_wait","send_observed_address_reports","send_window","sent_packets","sent_plpmtud_probes","serialize","","","","","set_alpns","set_max_concurrent_bi_streams","set_max_concurrent_uni_streams","set_priority","set_receive_window","source","","","","","","","","sources","","stable_id","start_session","stats","stop","stop_sending","stopped","stream","stream_data_blocked","stream_receive_window","streams_blocked_bidi","streams_blocked_uni","time_threshold","to_owned","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","to_string","","","","","","","","","","","","","","","","","","","","token_key","transport","transport_config","","try_from","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","try_into","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","try_poll","","","","","","","typ","type_id","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","udp_rx","udp_tx","upper_bound","vzip","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","weak_handle","window","with_crypto","with_single_cert","write","write_all","write_all_chunks","write_chunk","write_chunks","name","","MagicsockMetrics","NetReportMetrics","PortmapMetrics","RelayMetrics","__clone_box","","","","accepts","actor_link_change","actor_tick_direct_addr_heartbeat","actor_tick_direct_addr_update_receiver","actor_tick_main","actor_tick_msg","actor_tick_other","actor_tick_portmap_changed","actor_tick_re_stun","borrow","","","","borrow_mut","","","","bytes_recv","bytes_sent","clone","","","","clone_into","","","","clone_to_uninit","","","","connection_became_direct","connection_handshake_success","conns_rx_ratelimited_total","default","","","","deref","","","","deref_mut","","","","disco_packets_dropped","disco_packets_recv","disco_packets_sent","disconnects","drop","","","","external_address_updated","fmt","","","","frames_rx_ratelimited_total","from","","","","from_ref","","","","got_ping","init","","","","into","","","","iter","","","","local_port_updates","mapping_attempts","mapping_failures","name","","","","nodes_contacted","nodes_contacted_directly","num_direct_conns_added","num_direct_conns_removed","num_relay_conns_added","num_relay_conns_removed","other_packets_dropped","other_packets_recv","other_packets_sent","pcp_available","pcp_probes","probes_started","re_stun_calls","recv_data_ipv4","recv_data_ipv6","recv_data_relay","recv_datagrams","recv_disco_bad_key","recv_disco_bad_parse","recv_disco_call_me_maybe","recv_disco_call_me_maybe_bad_disco","recv_disco_ping","recv_disco_pong","recv_disco_relay","recv_disco_udp","recv_gro_datagrams","relay_accepts","relay_home_change","reports","reports_full","send_data","send_data_network_down","send_disco_relay","send_disco_udp","send_ipv4","send_ipv6","send_packets_dropped","send_packets_recv","send_packets_sent","send_relay","send_relay_error","sent_disco_call_me_maybe","sent_disco_ping","sent_disco_pong","sent_disco_relay","sent_disco_udp","sent_pong","stun_packets_dropped","stun_packets_recv_ipv4","stun_packets_recv_ipv6","stun_packets_sent_ipv4","stun_packets_sent_ipv6","to_owned","","","","try_from","","","","try_into","","","","type_id","","","","unique_client_keys","unknown_frames","update_direct_addrs","upnp_available","upnp_gateway_updated","upnp_probes","upnp_probes_failed","vzip","","","","websocket_accepts","ProtocolHandler","Router","RouterBuilder","__clone_box","accept","","borrow","","borrow_mut","","builder","clone","clone_into","clone_to_uninit","deref","","deref_mut","","drop","","endpoint","","fmt","","from","","from_ref","init","","into","","is_shutdown","new","shutdown","","spawn","to_owned","try_from","","try_into","","type_id","","vzip","","CleanupDropGuard","DnsPkarrServer","borrow","","borrow_mut","","create_dns_resolver","deref","","deref_mut","","discovery","dns_resolver","drop","","fmt","","from","","init","","into","","nameserver","node_origin","on_node","pkarr_url","run","run_relay_server","run_relay_server_with","run_relay_server_with_stun","run_with_origin","try_from","","try_into","","type_id","","vzip","","Disconnected","WatchInitializedFut","WatchNextFut","Watchable","Watcher","WatcherStream","__clone_box","","","borrow","","","","","","borrow_mut","","","","","","chain","clone","","","clone_into","","","clone_to_uninit","","","default","deref","","","","","","deref_mut","","","","","","drop","","","","","","fmt","","","","","","","from","","","","","","from_ref","","","get","","init","","","","","","initialized","into","","","","","","into_future","","into_stream","join","","merge","new","poll","","poll_next","race","","ratelimit_stream","ratelimit_stream_with_jitter","set","stream","stream_updates_only","to_owned","","","to_string","try_from","","","","","","try_into","","","","","","try_poll","","try_poll_next","type_id","","","","","","updated","vzip","","","","","","watch","zip"],"q":[[0,"iroh"],[279,"iroh::defaults"],[286,"iroh::defaults::prod"],[293,"iroh::defaults::staging"],[298,"iroh::discovery"],[351,"iroh::discovery::dns"],[370,"iroh::discovery::local_swarm_discovery"],[389,"iroh::discovery::pkarr"],[466,"iroh::discovery::pkarr::dht"],[515,"iroh::discovery::static_provider"],[539,"iroh::dns"],[564,"iroh::dns::node_info"],[655,"iroh::endpoint"],[2181,"iroh::endpoint::Source"],[2183,"iroh::metrics"],[2359,"iroh::protocol"],[2404,"iroh::test_utils"],[2444,"iroh::watchable"],[2576,"dyn_clone::sealed"],[2577,"iroh_base::key"],[2578,"iroh_base::node_addr"],[2579,"iroh_base::relay_url"],[2580,"iroh_relay::relay_map"],[2581,"core::cmp"],[2582,"core::result"],[2583,"serde::de"],[2584,"core::net::socket_addr"],[2585,"core::iter::traits::iterator"],[2586,"core::fmt"],[2587,"alloc::string"],[2588,"ed25519_dalek::verifying"],[2589,"signature::error"],[2590,"data_encoding"],[2591,"ed25519_dalek::signing"],[2592,"core::option"],[2593,"iroh_base::ticket::node"],[2594,"iroh::magicsock::node_map::node_state"],[2595,"url"],[2596,"url::parser"],[2597,"anyhow"],[2598,"alloc::sync"],[2599,"core::convert"],[2600,"core::iter::traits::collect"],[2601,"rand_core"],[2602,"core::hash"],[2603,"serde::ser"],[2604,"ed25519"],[2605,"core::error"],[2606,"core::any"],[2607,"alloc::boxed"],[2608,"alloc::vec"],[2609,"alloc::collections::btree::set"],[2610,"futures_lite::stream"],[2611,"pkarr::signed_packet"],[2612,"futures_core::stream"],[2613,"core::time"],[2614,"pkarr::client"],[2615,"core::future::future"],[2616,"core::net::ip_addr"],[2617,"hickory_proto::rr::domain::name"],[2618,"core::clone"],[2619,"hickory_resolver::resolver"],[2620,"alloc::collections::btree::map"],[2621,"core::str::traits"],[2622,"hickory_proto::rr::resource"],[2623,"iroh_quinn_proto::connection"],[2624,"iroh_quinn::connection"],[2625,"iroh_quinn_proto::config"],[2626,"iroh_quinn_proto::varint"],[2627,"core::ops::function"],[2628,"core::marker"],[2629,"iroh_quinn_proto::crypto"],[2630,"iroh_quinn_proto::congestion"],[2631,"std::time"],[2632,"iroh_quinn::recv_stream"],[2633,"iroh_quinn::send_stream"],[2634,"iroh_quinn_proto::connection::stats"],[2635,"iroh_quinn_proto::connection::streams::send"],[2636,"iroh_quinn_proto::connection::streams"],[2637,"iroh::magicsock::node_map"],[2638,"iroh_quinn_proto::frame"],[2639,"iroh::magicsock"],[2640,"iroh_quinn_proto"],[2641,"iroh_quinn_proto::connection::assembler"],[2642,"iroh_quinn::incoming"],[2643,"iroh_quinn_proto::connection::streams::recv"],[2644,"ring::error"],[2645,"iroh_quinn_proto::transport_parameters"],[2646,"iroh_quinn_proto::shared"],[2647,"futures_concurrency::future::join::tuple"],[2648,"core::future::into_future"],[2649,"tokio::sync::watch"],[2650,"iroh_quinn_proto::connection::paths"],[2651,"core::pin"],[2652,"core::task::wake"],[2653,"core::task::poll"],[2654,"std::io::error"],[2655,"tokio::io::read_buf"],[2656,"futures_concurrency::future::race::tuple"],[2657,"bytes::bytes"],[2658,"rustls_pki_types"],[2659,"rustls::error"],[2660,"alloc::vec::into_iter"],[2661,"futures_lite::future"],[2662,"iroh::test_utils::dns_and_pkarr_servers"],[2663,"iroh_relay::server"],[2664,"futures_concurrency::stream::chain::tuple"],[2665,"futures_concurrency::stream::into_stream"],[2666,"core::default"],[2667,"futures_concurrency::stream::merge::tuple"],[2668,"governor::state::direct"],[2669,"governor::state"],[2670,"governor::state::direct::streams"],[2671,"governor::clock::with_std"],[2672,"governor::middleware"],[2673,"governor::jitter"],[2674,"futures_concurrency::stream::zip::tuple"],[2675,"iroh_relay::defaults"],[2676,"iroh::test_utils::dns_server"]],"i":"Cb0`0`h`````````0AbAdAfAhAj55556432Cd21675430216543216543216543216431643122`675433021675430216543144``675430212`643216664443332221116677554330022116667775554444443300216524654321653252636754302167543021422`4426431`6514456543157011`5654321675302166675543021675430216754302112667543021`44``````````````````````FhFd101011101010`100101001010101`1`1Ff101`01221212121```Gj000000000000000``Gl0000000000000000```````GnH`Hb210210210210210210210`221021021021021021021210201021021021021022102``Hn0Hl10010111101010010101010100100010101101001010Ib`0000000000000000000000```IfId101010101010101010``Jf```0`Df1Jh21021011122210210121021222111221021110010010120`22102100010121101102`2210210210210A@n0`````A@f`Kn`222Ol`1`NjO````3`Nf2Nl2Ob```````AAf0A@b```419```:::Nn``;;7``;AAb:Lj03`==<3``=`::1Nh``3```4=``:<``>>=````59``22><80``<`=`28``<````:796L`91;84:72OdOfOhOjOlOnA@`Dh=A@dA@fKnLhMnLfA@hA@jA@lA@nAA`AAbAAdGbAAf1KjL`01=OfLl1Ln66On:DhMf4Kl4444MnOhADd:AEdAEbLdLbAElABdNfABfAAlNhNjNlNnAAnO`ObLlLjAB`OdOfOhOjOlOnA@`DhA@bA@dA@fKnLhMnLfABbABhABjA@hA@jA@lA@nAA`AAbAAdLnGbKhKjABlKlAAfADdL`AEdAEbLdLbAElABdNfABfAAlNhNjNlNnAAnO`ObLlLjAB`OdOfOhOjOlOnA@`DhA@bA@dA@fKnLhMnLfABbABhABjA@hA@jA@lA@nAA`AAbAAdLnGbKhKjABlKlAAf5N`6AB`OdA@`0:L`NfNhNjNlNnO`ObLj:OfOhOjOlOn>DhA@bA@dA@fKnLhMnLfA@hA@jA@lA@nAA`AAbAAdGbAAfNdL`NfNhNjNlNnO`ObLjOdOfOhOjOlOnA@`DhA@bA@dA@fKnLhMnLfA@hA@jA@lA@nAA`AAbAAdGbAAfL`NfNhNjNlNnO`ObLjOdOfOhOjOlOnA@`DhA@bA@dA@fKnLhMnLfA@hA@jA@lA@nAA`AAbAAdGbAAfL`200Lj65480654LlOh35Dh6Of;0?32200335Od45013OjA@`A@bLhMnLn`ADd=AEdAEbLdLbAElABdNfABfAAlNhNjNlNnAAnO`ObLlLjAB`OdOfOhOjOlOnA@`DhA@bA@dA@fKnLhMnLfABbABhABjA@hA@jA@lA@nAA`AAbAAdLnGbKhKjABlKlAAfADdL`AEdAEbLdLbAElABdNfABfAAlNhNjNlNnAAnO`ObLlLjAB`OdOfOhOjOlOnA@`DhA@bA@dA@fKnLhMnLfABbABhABjA@hA@jA@lA@nAA`AAbAAdLnGbKhKjABlKlAAfOlOnDhA@bA@f<:;:;;;;:ADdL`AEdAEbLdLbAElABdNfABfAAl0NhNjNlNnAAn0O`ObLlLjAB`OdOfOhOjOlOnA@`DhA@bA@dA@fKnLhMnLfABbABhABjA@hA@jA@lA@nAA`AAbAAdLnGbKhKjABlKlAAfLlNfNhNjNlNnO`ObLjAB`OlOnA@`DhA@bA@dA@fKnABbA@hA@jA@lA@nAA`AAbAAdAAfNf00Nh00Nj00Nl00Nn00O`00Ob00Lj00AB`00Ol00On00A@`00Dh00A@b00A@d00A@f00Kn00ABb00A@h00A@j00A@l00A@n00AA`00AAb00AAd00AAf0076L`AAn1ABdNf0ABf0AAlNh0Nj0Nl0Nn08O`0Ob0LlLj0AB`OdOfOhOjOl0OnA@`DhA@b0A@d0A@f0Kn0LhMnLfABbABhABjA@h0A@j0A@l0A@n0AA`AAb0AAd0LnGbKhKjABlKlAAf`;Oj0>ADdL`AEdAEbLdLbAElABdNf0ABfAAlNh0Nj000Nl0Nn0AAnO`000Ob0LlLj0000AB`OdOfOhOjOlOnA@`DhA@bA@dA@fKn00LhMnLfABbABh0ABjA@h0A@jA@l000A@nAA`AAbAAd0LnGbKhKjABlKlAAfL`NfNhNjNlNnO`ObLjOdOfOhOjOlOnA@`DhA@bA@dA@fKnLhMnLfA@hA@jA@lA@nAA`AAbAAdGbAAfLj00`L`KlOfDh4A@f:987AAlAAnKj5Lf0?1AAd33??837AB`Nd0000Mh::>LjAA`AAb6Oj::>Ll;ADdAEdAEbLdLbAElKhABlKlAAnAAl0111Lf02Ln0<;:987654222L`33A@hA@jA@lLl07KjAAf7Dh72<2Gb0Lh=Of05ACl=;OhLjMh?6>>::22OlOn9A@bA@f:L`0AAn1NfNhNjNlNnO`ObKnDh=:ACl;AAlOf<00Ll110><;:9876LjOd3OhOjOlOnA@`;A@bA@dA@f?LhMnLfA@hA@jA@lA@nAA`AAbAAdGbAAfNfABfNhNjNlNnO`ObLjOlA@bA@dA@fKnA@hA@jA@lA@nAAbAAdLf00LnADdL`AEdAEbLdLbAElABdNfABfAAlNhNjNlNnAAnO`ObLlLj000AB`OdOfOhOjOlOnA@`DhA@bA@dA@fKnLhMnLfABbABhABjA@hA@jA@lA@nAA`AAbAAdLnGbKhKjABlKlAAfADdL`AEdAEbLdLbAElABdNfABfAAlNhNjNlNnAAnO`ObLlLjAB`OdOfOhOjOlOnA@`DhA@bA@dA@fKnLhMnLfABbABhABjA@hA@jA@lA@nAA`AAbAAdLnGbKhKjABlKlAAfAEdAEbLdLbAEl76>ADdL`65432ABdNfABfAAlNhNjNlNnAAnO`ObLlLjAB`OdOfOhOjOlOnA@`DhA@bA@dA@fKnLhMnLfABbABhABjA@hA@jA@lA@nAA`AAbAAdLnGbKhKjABlKlAAfOj0MnADdL`AEdAEbLdLbAElABdNfABfAAlNhNjNlNnAAnO`ObLlLjAB`OdOfOhOjOlOnA@`DhA@bA@dA@fKnLhMnLfABbABhABjA@hA@jA@lA@nAA`AAbAAdLnGbKhKjABlKlAAfL`NdLf0AAn0000AKjAKl````AGhAGjAGlAGn011111111321032100032103210321011032103210321000003210332100321032100321032103210333321011111100033311111111111111012211111100011111110222223210321032103210001333332100```AHjAHbAHf202022222020202020202202020120220202020``AHnAHl10`101000101010101000000```010101010``````AIjAAhAIl21AJ`AJb2AJd542130354354354355421305421305421305421300542130543545421304542130213213521321335445430542130542130213542130454213053","f":"```````````````{{bd}f}00000{{{b{h}}}{{b{{l{j}}}}}}{{{b{h}}}{{b{{n{j}}}}}}1{b{{b{c}}}{}}0000000{{{b{A`}}}{{b{A`c}}}{}}0000000{{{b{h}}}h}{{{b{Ab}}}Ab}{{{b{Ad}}}Ad}{{{b{Af}}}Af}{{{b{Ah}}}Ah}{{{b{Aj}}}Aj}{{b{b{A`c}}}f{}}00000{{bj}f}00000{{{b{h}}{b{h}}}Al}{{{b{Ad}}{b{Ad}}}Al}{{{b{Af}}{b{Af}}}Al}{{{b{Aj}}{b{Aj}}}Al}{{b{b{c}}}Al{}}000{{{b{Ah}}{b{Af}}}An}{{AfB`}Ah}`{Bb{{b{c}}}{}}0000{{{b{Af}}}b}111{Bb{{b{A`c}}}{}}0000000{c{{Bd{h}}}Bf}{c{{Bd{Ab}}}Bf}{c{{Bd{Ad}}}Bf}{c{{Bd{Af}}}Bf}{c{{Bd{Aj}}}Bf}{{{b{Ad}}}{{`{{Bl{}{{Bh{{b{Bj}}}}}}}}}}```{Bbf}0000000{{}Ah}`{{{b{h}}{b{h}}}An}{{{b{Ad}}{b{Ad}}}An}{{{b{Af}}{b{Af}}}An}{{{b{Ah}}{b{Ah}}}An}{{{b{Aj}}{b{Aj}}}An}{{b{b{c}}}An{}}00000000000000{{{b{h}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Cb}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Ab}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Ad}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Af}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Cd}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Ah}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Aj}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{h}}}Cf}{Chh}{cc{}}{CjCb}1{ClCb}{{{l{j}}}Ab}3{CnAb}4{hAd}{{{Db{h{D`{Af}}{b{{n{Bj}}}}}}}Ad}{DdAd}{DfAd}{DhAd}9{DjAf}:{DlCd};;{{{b{{l{j}}}}}{{Bd{hCj}}}}{{{b{{l{j}}}}}Ab}{e{{Bd{AhDn}}}{{Eb{{E`{Aj}}}}}{{Ed{}{{Bh{c}}}}}}{{h{D`{Af}}c}Ad{{Ed{}{{Bh{Bj}}}}}}{{{b{c}}}c{}}00000{{{b{Ef}}}{{Bd{h}}}}{{{b{Ef}}}{{Bd{Ab}}}}{{{b{Ef}}}{{Bd{Af}}}}{AfAh}{cAbEh}{{{b{Ah}}{b{Af}}}{{D`{{b{{E`{Aj}}}}}}}}{{{b{h}}{b{A`c}}}fEj}{{{b{Af}}{b{A`c}}}fEj}{{}Bb}0000000{{}c{}}0000000{{{b{Ad}}}An}{{{b{Ah}}}An}{{{b{Ah}}}Bb}`{hAd}`{{{b{Ah}}}{{`{{Bl{}{{Bh{{b{{E`{Aj}}}}}}}}}}}}{{{b{h}}{b{h}}}{{D`{Al}}}}{{{b{Ad}}{b{Ad}}}{{D`{Al}}}}{{{b{Af}}{b{Af}}}{{D`{Al}}}}{{{b{Aj}}{b{Aj}}}{{D`{Al}}}}`{{{b{h}}}Ch}{{{b{Ab}}}h}`{{{b{Ad}}}{{D`{{b{Af}}}}}}`{{{b{Ab}}}{{b{Cn}}}}{{{b{h}}c}BdEl}{{{b{Ab}}c}BdEl}{{{b{Ad}}c}BdEl}{{{b{Af}}c}BdEl}{{{b{Aj}}c}BdEl}{{{b{Ab}}{b{{n{j}}}}}En}{{{b{Cb}}}{{D`{{b{F`}}}}}}{{{b{Cd}}}{{D`{{b{F`}}}}}}```{{{b{Ab}}}{{l{j}}}}{bc{}}00000{bCf}000000{c{{Bd{e}}}{}{}}{{{b{{n{j}}}}}{{Bd{h}}}}{{{b{{l{j}}}}}{{Bd{h}}}}22{{{b{{n{j}}}}}{{Bd{Ab}}}}33333{{}{{Bd{c}}}{}}0000000{bFb}0000000`{{{b{Ah}}}{{`{{Bl{}{{Bh{{b{Af}}}}}}}}}}{{{b{h}}{b{{n{j}}}}{b{En}}}{{Bd{fCj}}}}{{}c{}}0000000`{{Adc}Ad{{Ed{}{{Bh{Bj}}}}}}{{AdAf}Ad}``````````{{}Aj}00{{}Ah}``110```{{bd}f}{{{b{A`Fd}}c}fFf}{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}0{{{b{Fh}}}Fh}{{b{b{A`c}}}f{}}{{bj}f}{{}Fd}{Bb{{b{c}}}{}}0{Bb{{b{A`c}}}{}}0`{Bbf}03{{{b{Fh}}{b{A`Bn}}}Fj}{{{b{Fd}}{b{A`Bn}}}Fj}{cc{}}0{cFd{{Ed{}{{Bh{{Fl{Ff}}}}}}}}{{{b{c}}}c{}}{{{Fn{{Fl{Ff}}}}}Fd}{{}Bb}0{{}c{}}0`````{{{b{Ff}}{D`{{b{Af}}}}{b{{G`{Bj}}}}}f}{{{b{Fd}}{D`{{b{Af}}}}{b{{G`{Bj}}}}}f}{{{b{Ff}}GbGd}{{D`{{Gh{{Gf{Fh}}}}}}}}{{{b{Fd}}GbGd}{{D`{{Gh{{Gf{Fh}}}}}}}}`{{{b{Ff}}}{{D`{{Gh{Fh}}}}}}{{{b{Fd}}}{{D`{{Gh{Fh}}}}}}{bc{}}{c{{Bd{e}}}{}{}}0{{}{{Bd{c}}}{}}0{bFb}0{{}c{}}0```{b{{b{c}}}{}}{{{b{A`}}}{{b{A`c}}}{}}{Bb{{b{c}}}{}}{Bb{{b{A`c}}}{}}{Bbf}{{{b{Gj}}{b{A`Bn}}}Fj}{cc{}}{{}Bb}{{}c{}}{{}Gj}{CfGj}{{{b{Gj}}GbGd}{{D`{{Gh{{Gf{Fh}}}}}}}}?>=<``;:987{{{b{Gl}}{b{A`Bn}}}Fj}654{Gd{{Gf{Gl}}}}{{{b{Gl}}{D`{{b{Af}}}}{b{{G`{Bj}}}}}f}{{{b{Gl}}GbGd}{{D`{{Gh{{Gf{Fh}}}}}}}}{{{b{Gl}}}{{D`{{Gh{Fh}}}}}}{c{{Bd{e}}}{}{}}{{}{{Bd{c}}}{}}{bFb}{{}c{}}```````{{bd}f}00{b{{b{c}}}{}}00{{{b{A`}}}{{b{A`c}}}{}}00{{{b{Gn}}}Gn}{{{b{H`}}}H`}{{{b{Hb}}}Hb}{{b{b{A`c}}}f{}}00{{bj}f}00{Bb{{b{c}}}{}}00{Bb{{b{A`c}}}{}}00`{Bbf}{{{b{A`Gn}}}f}11{{{b{Gn}}{b{A`Bn}}}Fj}{{{b{H`}}{b{A`Bn}}}Fj}{{{b{Hb}}{b{A`Bn}}}Fj}{cc{}}00{{{b{c}}}c{}}00{{}Bb}00{{}c{}}00{AbGn}{{}H`}{{AbDj}Gn}{DjH`}{DjHb}{{{b{Gn}}{D`{{b{Af}}}}{b{{G`{Bj}}}}}f}{{{b{Hb}}{b{Hd}}}{{Gf{f}}}}{{{b{H`}}GbGd}{{D`{{Hf{{Gf{Fh}}}}}}}}{{{b{Hb}}Gd}{{Gf{Hd}}}}{bc{}}00{c{{Bd{e}}}{}{}}00{{}{{Bd{c}}}{}}00{bFb}007{{}c{}}00{{AbDjHhHj}Gn}``{{bd}f}{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}0{Hl{{Gf{Hn}}}}{{}Hl}{{HlI`}Hl}{{{b{Hn}}}Hn}{{b{b{A`c}}}f{}}{{bj}f}{{}Hn}5{Bb{{b{c}}}{}}0{Bb{{b{A`c}}}{}}0{{HlAn}Hl}{Bbf}0{{{b{Hn}}{b{A`Bn}}}Fj}{{{b{Hl}}{b{A`Bn}}}Fj}{cc{}}0{{{b{c}}}c{}}5{{}Bb}0{{HlHj}Hl}{{}c{}}0{HlHl}{{HlDj}Hl}{{{b{Hn}}{D`{{b{Af}}}}{b{{G`{Bj}}}}}f}4{{{b{Hn}}GbGd}{{D`{{Gh{{Gf{Fh}}}}}}}}{{HlAb}Hl}{bc{}}{c{{Bd{e}}}{}{}}0{{}{{Bd{c}}}{}}0{{HlHh}Hl}{bFb}0{{}c{}}0``{{{b{Ib}}c}f{{Eb{Ad}}}}{b{{b{c}}}{}}{{{b{A`}}}{{b{A`c}}}{}}{{}Ib}{Bb{{b{c}}}{}}{Bb{{b{A`c}}}{}}{Bbf}{{{b{Ib}}{b{A`Bn}}}Fj}{cc{}}{eIb{{Eb{Ad}}}{{Ed{}{{Bh{c}}}}}}{{{b{Ib}}Gd}{{D`{Ad}}}}{{}Bb}{{}c{}}9{{{b{Ib}}{D`{{b{Af}}}}{b{{G`{Bj}}}}}f}3{{{b{Ib}}GbGd}{{D`{{Gh{{Gf{Fh}}}}}}}}{{{b{Ib}}c}{{D`{Ad}}}{{Eb{Ad}}}}{c{{Bd{e}}}{}{}}{{}{{Bd{c}}}{}}{bFb}{{}c{}}``{{}{{b{Id}}}}{{{b{If}}{b{Gd}}{b{Ef}}}{{`{{Ij{}{{Ih{{Gf{Ad}}}}}}}}}}{{{b{Id}}{b{Gd}}{b{Ef}}}{{Gf{Ad}}}}{{{b{If}}{b{Gd}}{b{Ef}}{b{{n{Il}}}}}{{`{{Ij{}{{Ih{{Gf{Ad}}}}}}}}}}{{{b{Id}}{b{Gd}}{b{Ef}}{b{{n{Il}}}}}{{Gf{Ad}}}}{{{b{If}}{b{Ef}}}{{`{{Ij{}{{Ih{{Gf{Ad}}}}}}}}}}{{{b{Id}}{b{Ef}}}{{Gf{Ad}}}}{{{b{If}}{b{Ef}}{b{{n{Il}}}}}{{`{{Ij{}{{Ih{{Gf{Ad}}}}}}}}}}{{{b{Id}}{b{Ef}}{b{{n{Il}}}}}{{Gf{Ad}}}}{{{b{If}}cHj}{{`{{Ij{}{{Ih{{Gf{{`{{Bl{}{{Bh{In}}}}}}}}}}}}}}}J`}{{{b{Id}}cHj}{{Gf{{`{{Bl{}{{Bh{In}}}}}}}}}J`}{{{b{If}}cHj}{{`{{Ij{}{{Ih{{Gf{{`{{Bl{}{{Bh{In}}}}}}}}}}}}}}}{J`Jb}}{{{b{Id}}cHj}{{Gf{{`{{Bl{}{{Bh{In}}}}}}}}}{J`Jb}}{{{b{If}}cHj{b{{n{Il}}}}}{{`{{Ij{}{{Ih{{Gf{{`{{Bl{}{{Bh{In}}}}}}}}}}}}}}}{J`Jb}}{{{b{Id}}cHj{b{{n{Il}}}}}{{Gf{{`{{Bl{}{{Bh{In}}}}}}}}}{J`Jb}}105410`{{}{{b{Jd}}}}``````{{bd}f}{{{b{Jf}}}{{b{Ef}}}}{{{b{{Jh{c}}}}}{{b{{Jj{c{Fn{Cf}}}}}}}{JlJnK`Kb}}{b{{b{c}}}{}}00{{{b{A`}}}{{b{A`c}}}{}}00{{{b{Df}}}Df}{{b{b{A`c}}}f{}}{{bj}f}{{{b{Jf}}{b{Jf}}}Al}{{b{b{c}}}Al{}}{Bb{{b{c}}}{}}00{Bb{{b{A`c}}}{}}00`{Bbf}00{{{b{Jf}}{b{Jf}}}An}{{{b{Df}}{b{Df}}}An}{{b{b{c}}}An{}}00000{{{b{Jf}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Jf}}{b{A`Bn}}}Fj}{{{b{Df}}{b{A`Bn}}}Fj}{{{b{{Jh{c}}}}{b{A`Bn}}}FjKd}{cc{}}0{{{Jh{Jf}}}Df}{{{b{{Jh{Jf}}}}}Df}2{{{b{Df}}}{{Jh{Jf}}}}{{{b{{n{Kf}}}}}{{Gf{Df}}}}{{{b{{n{Kf}}}}}{{Gf{{Jh{c}}}}}{JlJnK`Kb}}{{Gde}{{Jh{c}}}{JlJnK`Kb}{{Bl{}{{Bh{{Db{cCf}}}}}}}}{{{b{Hd}}}{{Gf{Df}}}}{{{b{Hd}}}{{Gf{{Jh{c}}}}}{JlJnK`Kb}}{{{b{c}}}c{}}{{{b{Ef}}}{{Bd{Jfc}}}{}}{{Gdc}{{Gf{{Jh{e}}}}}{{Bl{}{{Bh{Cf}}}}}{JlJnK`Kb}}{{{b{Ef}}}{{Gf{Gd}}}}{{{b{Jf}}{b{A`c}}}fEj}{{}Bb}00{{}c{}}00{{{b{Jd}}{b{Gd}}{b{Ef}}}{{Gf{{Jh{c}}}}}{JlJnK`Kb}}{{{b{Jd}}{b{Ef}}}{{Gf{{Jh{c}}}}}{JlJnK`Kb}}{{Gd{D`{Dj}}{G`{Bj}}}Df}{{{b{{Jh{c}}}}}Gd{JlJnK`Kb}}`{{{b{Jf}}{b{Jf}}}{{D`{Al}}}}`{{{b{Df}}{b{Ef}}Hh}{{Gf{{`{{Bl{}{{Bh{Kf}}}}}}}}}}{{{b{{Jh{c}}}}{b{Ef}}Hh}{{Gf{{`{{Bl{}{{Bh{Kf}}}}}}}}}{JlJnK`Kb}}{bc{}}{{{b{Df}}{b{Ab}}Hh}{{Gf{Hd}}}}{{{b{{Jh{c}}}}{b{Ab}}Hh}{{Gf{Hd}}}{JlJnK`Kb}}{bCf}{{{b{Gd}}}Cf}{{{b{Ef}}}{{Bd{Jfc}}}{}}{c{{Bd{e}}}{}{}}00{{}{{Bd{c}}}{}}00{bFb}00{{}c{}}00`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{{bd}f}00000000000000000000000000000000{{{b{Gb}}}Kh}{Kj{{Gf{KlKn}}}}{{{b{L`}}}Lb}{{{b{L`}}}Ld}{{Kj{E`{Lf}}}{{Gf{KlKn}}}}{{{b{A`Lh}}Lj}{{b{A`Lh}}}}`{{{b{A`Ll}}{D`{Lh}}}{{b{A`Ll}}}}`{{Lne}LnFf{{M`{{b{Ab}}}{{Ih{{D`{c}}}}}}MbMd}}{{{b{Gb}}Ad}{{Gf{f}}}}{{{b{Gb}}Ad{b{Ef}}}{{Gf{f}}}}```{{{b{Mf}}{b{{n{j}}}}}{{Fl{Mh}}}}{{{b{A`Ll}}An}{{b{A`Ll}}}}{{{b{A`Kl}}}{{Gf{{Fn{j}}}}}}{{Ln{Fn{{Fn{j}}}}}Ln}{Ln{{Gf{Gb}}}}{{LnMj}Ln}{{LnMl}Ln}{{{b{A`Mn}}Hj}{{b{A`Mn}}}}`{b{{b{c}}}{}}0000000000000000000000000000000000000000000000000000{{{b{A`}}}{{b{A`c}}}{}}0000000000000000000000000000000000000000000000000000{{{b{Gb}}}{{Db{Bj{D`{Bj}}}}}}{{{E`{N`}}NbB`}{{Fl{Nd}}}}{{}Ln}````{LnLn}{{{b{L`}}}L`}{{{b{Nf}}}Nf}{{{b{Nh}}}Nh}{{{b{Nj}}}Nj}{{{b{Nl}}}Nl}{{{b{Nn}}}Nn}{{{b{O`}}}O`}{{{b{Ob}}}Ob}{{{b{Lj}}}Lj}{{{b{Od}}}Od}{{{b{Of}}}Of}{{{b{Oh}}}Oh}{{{b{Oj}}}Oj}{{{b{Ol}}}Ol}{{{b{On}}}On}{{{b{A@`}}}A@`}{{{b{Dh}}}Dh}{{{b{A@b}}}A@b}{{{b{A@d}}}A@d}{{{b{A@f}}}A@f}{{{b{Kn}}}Kn}{{{b{Lh}}}Lh}{{{b{Mn}}}Mn}{{{b{Lf}}}Lf}{{{b{A@h}}}A@h}{{{b{A@j}}}A@j}{{{b{A@l}}}A@l}{{{b{A@n}}}A@n}{{{b{AA`}}}AA`}{{{b{AAb}}}AAb}{{{b{AAd}}}AAd}{{{b{Gb}}}Gb}{{{b{AAf}}}AAf}{{{b{Nd}}}{{Fl{Nd}}}}{{b{b{A`c}}}f{}}00000000000000000000000000000000{{bj}f}00000000000000000000000000000000{{{b{L`}}Lj{b{{n{j}}}}}f}{{{b{Gb}}}{{Gf{f}}}}{{{b{L`}}}{{D`{Kn}}}}{{{b{L`}}}Kn}{{{b{Lj}}{b{Lj}}}Al}{{{b{AA`}}{b{AA`}}}Al}{{{b{AAb}}{b{AAb}}}Al}{{{b{AAd}}{b{AAd}}}Al}`{{b{b{c}}}Al{}}000{{{b{A`Ll}}{E`{N`}}}{{b{A`Ll}}}}`{{{b{L`}}}{{Fl{Nd}}}}{{{b{Gb}}Gd}{{Gf{{AAh{A@b}}}}}}`{{{b{Gb}}c{b{{n{j}}}}}{{Gf{L`}}}{{Eb{Ad}}}}`{jA@n}``{{{b{A`Ll}}Bb}{{b{A`Ll}}}}````{{{b{A`Ll}}{D`{Bb}}}{{b{A`Ll}}}}1{{{b{L`}}}Bb}`{{}Ll}{{}Lj}{{}Od}{{}Of}{{}Oh}{{}Oj}{{}A@`}{{}A@b}{{}Lh}{{}Mn}{{}Ln}{{}AAf}{Bb{{b{c}}}{}}0000000000000000000000000000000000000000000000000000{Bb{{b{A`c}}}{}}0000000000000000000000000000000000000000000000000000{c{{Bd{Ol}}}Bf}{c{{Bd{On}}}Bf}{c{{Bd{Dh}}}Bf}{c{{Bd{A@b}}}Bf}{c{{Bd{A@f}}}Bf}{AAdAAj}{{{b{Gb}}}{{AAh{{D`{{G`{AA`}}}}}}}}{{Ln{Fl{Ff}}}Ln}{{{b{Gb}}}{{D`{{b{Ff}}}}}}{LnLn}00{{LnId}Ln}{{{b{Gb}}}{{b{Id}}}}{Bbf}000000000{{{b{A`AAl}}}f}11111{{{b{A`AAn}}}f}22222222222222222222222222222222222222{{{b{A`Ll}}An}{{b{A`Ll}}}}{{{b{Nf}}{b{Nf}}}An}{{{b{Nh}}{b{Nh}}}An}{{{b{Nj}}{b{Nj}}}An}{{{b{Nl}}{b{Nl}}}An}{{{b{Nn}}{b{Nn}}}An}{{{b{O`}}{b{O`}}}An}{{{b{Ob}}{b{Ob}}}An}{{{b{Lj}}{b{Lj}}}An}{{{b{AB`}}{b{AB`}}}An}{{{b{Ol}}{b{Ol}}}An}{{{b{On}}{b{On}}}An}{{{b{A@`}}{b{A@`}}}An}{{{b{Dh}}{b{Dh}}}An}{{{b{A@b}}{b{A@b}}}An}{{{b{A@d}}{b{A@d}}}An}{{{b{A@f}}{b{A@f}}}An}{{{b{Kn}}{b{Kn}}}An}{{{b{ABb}}{b{ABb}}}An}{{{b{A@h}}{b{A@h}}}An}{{{b{A@j}}{b{A@j}}}An}{{{b{A@l}}{b{A@l}}}An}{{{b{A@n}}{b{A@n}}}An}{{{b{AA`}}{b{AA`}}}An}{{{b{AAb}}{b{AAb}}}An}{{{b{AAd}}{b{AAd}}}An}{{{b{AAf}}{b{AAf}}}An}{{b{b{c}}}An{}}00000000000000000000000000000000000000000000000000000000000000000000000000000``{{{b{L`}}{b{A`{n{j}}}}{b{{n{j}}}}{b{{n{j}}}}}{{Bd{fABb}}}}{{{b{A`AAn}}}{{Bd{fA@d}}}}{{{b{L`}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{ABd}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Nf}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{ABf}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{AAl}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Nh}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Nj}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Nl}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Nn}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{AAn}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{O`}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Ob}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Ll}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Lj}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{AB`}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Od}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Of}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Oh}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Oj}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Ol}}{b{A`Bn}}}Fj}0{{{b{On}}{b{A`Bn}}}Fj}{{{b{A@`}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Dh}}{b{A`Bn}}}Fj}{{{b{A@b}}{b{A`Bn}}}Fj}0{{{b{A@d}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{A@f}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{A@f}}{b{A`Bn}}}Fj}{{{b{Kn}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Lh}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Mn}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{Lf}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{ABb}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{ABh}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{ABj}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{A@h}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{A@j}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{A@l}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{A@n}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{AA`}}{b{A`Bn}}}Fj}{{{b{AAb}}{b{A`Bn}}}Fj}0{{{b{AAd}}{b{A`Bn}}}{{Bd{fC`}}}}0{{{b{Ln}}{b{A`Bn}}}Fj}{{{b{Gb}}{b{A`Bn}}}Fj}{{{b{Kh}}{b{A`Bn}}}Fj}{{{b{Kj}}{b{A`Bn}}}Fj}{{{b{ABl}}{b{A`Bn}}}Fj}{{{b{Kl}}{b{A`Bn}}}Fj}{{{b{AAf}}{b{A`Bn}}}Fj}{{}An}````{cc{}}0000000{KnNf}111{NjNh}22{NlNj}{KnNj}{ABnNj}{KnNl}6{NjNn}77{A@dO`}8{ObO`}{KnO`}:{KnOb};{B`Lj}<{jLj}{AAdLj}{HhLj}????????????{AC`Kn}{A@lKn}{cc{}}0000{ACbABh}111{A@lA@h}2{A@nA@l}{ACdA@l}4{ACfA@l}5555{LjAAd}6666666{{{b{c}}}c{}}00000000000000000000000000000000:{Il{{Bd{LjACh}}}}{IlLj}{{{b{L`}}}{{Gf{h}}}}{{{b{L`}}}{{D`{{Fl{ACj}}}}}}{{{b{A`Kl}}}{{Gf{{Fl{ACj}}Kn}}}}`{{{b{Dh}}}An}{{{b{Lj}}{b{A`c}}}fEj}{{{b{A@f}}{b{A`c}}}fEj}{{{b{AA`}}{b{A`c}}}fEj}{{{b{AAb}}{b{A`c}}}fEj}{{{b{AAd}}{b{A`c}}}fEj}{{{b{Gb}}}{{AAh{{D`{Af}}}}}}{{{b{AAl}}}AAd}{{{b{AAn}}}AAd}{Kjf}`{{{b{A`Lf}}Il}{{b{A`Lf}}}}0{AAdIl}{{}Bb}0000000000000000000000000000000000000000000000000000{{{b{ACl}}Hh{b{ACn}}}{{Bd{AD`ABj}}}}{{{b{A`Ll}}B`}{{b{A`Ll}}}}{{{b{A`Ll}}Hj}{{b{A`Ll}}}}{{{b{Nd}}}Il}{AAdADb}{{LnAn}Ln}{{{b{A`Mn}}Hj}{{b{A`Mn}}}}{{}c{}}0000000000000000000000000000000000000000000000000000{Kl{{Gf{{Db{L`ADd}}Kl}}}}{{{Fl{Nd}}}{{Fl{ACj}}}}{{}}000000{Kjc{}}11{ABfADf}{LjIl}`{{{b{AAl}}}An}{{{b{ABd}}}An}{{{b{Gb}}}An}{c{{ADh{e}}}ADjIj}00000000{{{b{A`Ll}}{D`{Hj}}}{{b{A`Ll}}}}={{Ln{Fn{Ad}}}Ln}```{{{b{Dh}}}{{D`{Hj}}}}```{{{b{L`}}}{{D`{In}}}}{{{b{Kj}}}{{D`{In}}}}{{{b{Kl}}}{{D`{In}}}}```{{{b{Ab}}{Fn{{Fn{j}}}}{E`{Ll}}An}{{Gf{Lf}}}}{{{b{A`Lh}}{D`{Hj}}}{{b{A`Lh}}}}{{{b{A`Ll}}Lj}{{b{A`Ll}}}}0`{{{b{L`}}}{{D`{Bb}}}}{{{b{A`Ll}}{D`{ADl}}}{{b{A`Ll}}}}{{{b{A`Lf}}Bb}{{b{A`Lf}}}}```{{{b{A`Lf}}An}{{b{A`Lf}}}}{{{b{A`Ll}}B`}{{b{A`Ll}}}}{{{b{A`Mn}}B`}{{b{A`Mn}}}}{{{b{A`Ll}}{D`{Mn}}}{{b{A`Ll}}}}{{{b{Gb}}}f}{{{b{ABd}}}An}{{{E`{ACl}}{E`{Mf}}}Lf}{{ADbAAjIl}AAd}``{{{b{Gb}}}{{Gf{Ad}}}}{{{b{Gb}}}Gd}``{{{b{L`}}}{{ADn{{D`{Bj}}}}}}`{{{b{A`Nd}}NbNbIlAn{b{AE`}}}f}{{{b{A`Nd}}NbNbAnIl}f}{{{b{A`Nd}}NbIlAn{D`{Il}}}f}{{{b{A`Nd}}B`}f}{{{b{A`Nd}}NbIlIl}f}{{{b{Mh}}{b{A`{n{j}}}}{b{{n{j}}}}}{{Bd{{b{A`{n{j}}}}ABh}}}}{{{b{L`}}}AEb}{{{b{L`}}}AEd}{{{b{A`Ll}}Hh}{{b{A`Ll}}}}{{{b{Lj}}{b{Lj}}}{{D`{Al}}}}{{{b{AA`}}{b{AA`}}}{{D`{Al}}}}{{{b{AAb}}{b{AAb}}}{{D`{Al}}}}{{{b{AAd}}{b{AAd}}}{{D`{Al}}}}```{{{b{L`}}}{{D`{{Fl{ACj}}}}}}5`{{{AEf{{b{A`ADd}}}}{b{A`AEh}}}AEj}{{{AEf{{b{A`AEd}}}}{b{A`AEh}}}AEj}{{{AEf{{b{A`AEb}}}}{b{A`AEh}}}AEj}{{{AEf{{b{A`Ld}}}}{b{A`AEh}}}AEj}{{{AEf{{b{A`Lb}}}}{b{A`AEh}}}AEj}{{{AEf{{b{A`AEl}}}}{b{A`AEh}}}AEj}{{{AEf{{b{A`Kh}}}}{b{A`AEh}}}{{AEj{c}}}{}}{{{AEf{{b{A`ABl}}}}{b{A`AEh}}}{{AEj{c}}}{}}{{{AEf{{b{A`Kl}}}}{b{A`AEh}}}{{AEj{c}}}{}}{{{AEf{{b{A`AAn}}}}{b{A`AEh}}}{{AEj{{Bd{fAEn}}}}}}{{{b{A`AAl}}{b{A`AEh}}{b{A`{n{j}}}}}{{AEj{{Bd{BbNj}}}}}}{{{AEf{{b{A`AAl}}}}{b{A`AEh}}{b{A`AF`}}}{{AEj{{Bd{fAEn}}}}}}2{{{AEf{{b{A`AAn}}}}{b{A`AEh}}{b{{n{j}}}}}{{AEj{{Bd{BbAEn}}}}}}{{{AEf{{b{A`AAn}}}}{b{A`AEh}}{b{{n{j}}}}}{{AEj{{Bd{BbO`}}}}}}{{{b{A`Lf}}{D`{Mj}}}{{b{A`Lf}}}}{{{b{A`Lf}}{D`{Ml}}}{{b{A`Lf}}}}{{{b{AAn}}}{{Bd{AFbA@d}}}}{LnLn}{{LnDj}Ln}{e{{AFd{cg}}}{}{{ADj{}{{Ih{c}}}}}{{Ij{}{{Ih{c}}}}}}00000000{{{b{A`AAl}}{b{A`{n{j}}}}}{{Bd{{D`{Bb}}Nj}}}}{{{b{A`AAl}}BbAn}{{Bd{{D`{AB`}}Nj}}}}{{{b{A`AAl}}{b{A`{n{AFf}}}}}{{Bd{{D`{Bb}}Nj}}}}{{{b{L`}}}AEl}{{{b{A`AAl}}{b{A`{n{j}}}}}{{Bd{fNn}}}}{{{b{A`AAl}}Bb}{{Bd{{Fn{j}}Nh}}}}```{{{b{A`Ll}}An}{{b{A`Ll}}}}{{{b{A`Ll}}Lj}{{b{A`Ll}}}}{{{b{A`AAl}}}{{Bd{{D`{Lj}}Nl}}}}{Kjf}{{{b{AAf}}}Ah}{{LnAAf}Ln}`{{{b{L`}}}Bj}{{{b{Kj}}}Bj}{{{b{Kl}}}Bj}{{{b{Kj}}}An}{{{b{Gb}}Gd}{{D`{Dh}}}}{{{b{Gb}}}{{`{{Bl{}{{Bh{Dh}}}}}}}}{{{b{A`Lh}}Lj}{{b{A`Lh}}}}{{{b{A`AAn}}Lj}{{Bd{fA@d}}}}``{Kj{{Gf{fABf}}}}{{{b{ACl}}Hh{b{ACn}}{b{{n{j}}}}}{{l{j}}}}{{{b{A`Lf}}Hj}{{b{A`Lf}}}}{{{b{L`}}}Hj}`{{Ljc}Lj{{Eb{Lj}}}}{{{b{Mh}}{b{A`{Fn{j}}}}{b{{n{j}}}}}{{Bd{fABh}}}}{{LnAb}Ln}{{{b{Gb}}}{{b{Ab}}}}{{{b{L`}}AFf}{{Bd{fNf}}}}{{{b{L`}}AFf}AFh}{{{b{A`Ll}}An}{{b{A`Ll}}}}{{{b{A`Ll}}Il}{{b{A`Ll}}}}``{{{b{Ol}}c}BdEl}{{{b{On}}c}BdEl}{{{b{Dh}}c}BdEl}{{{b{A@b}}c}BdEl}{{{b{A@f}}c}BdEl}{{{b{Gb}}{Fn{{Fn{j}}}}}{{Gf{f}}}}{{{b{L`}}Lj}f}0{{{b{AAn}}AFb}{{Bd{fA@d}}}}1{{{b{Nf}}}{{D`{{b{F`}}}}}}{{{b{Nh}}}{{D`{{b{F`}}}}}}{{{b{Nj}}}{{D`{{b{F`}}}}}}{{{b{Nl}}}{{D`{{b{F`}}}}}}{{{b{Nn}}}{{D`{{b{F`}}}}}}{{{b{O`}}}{{D`{{b{F`}}}}}}{{{b{Ob}}}{{D`{{b{F`}}}}}}{{{b{Kn}}}{{D`{{b{F`}}}}}}{{{b{Dh}}}{{Fn{{Db{A@fHj}}}}}}`{{{b{L`}}}Bb}{{{E`{ACl}}Hh{b{AFj}}}{{Fl{AFl}}}}{{{b{L`}}}Oj}{{{b{A`AAl}}Lj}{{Bd{fA@d}}}}`{{{b{A`AAn}}}{{Bd{{D`{Lj}}Ob}}}}``{{{b{A`Ll}}Lj}{{b{A`Ll}}}}``{{{b{A`Ll}}AFn}{{b{A`Ll}}}}{bc{}}00000000000000000000000000000000{bCf}0000000000000000000{{{b{A`Lf}}{E`{Mf}}}{{b{A`Lf}}}}`{{{b{A`Lf}}{E`{Ll}}}{{b{A`Lf}}}}{{LnLl}Ln}{c{{Bd{e}}}{}{}}000000000000000000{Il{{Bd{LjACh}}}}1{AG`{{Bd{LjACh}}}}{Bb{{Bd{LjACh}}}}333333333333333333333333333333333{{}{{Bd{c}}}{}}0000000000000000000000000000000000000000000000000000{{{AEf{{b{A`c}}}}{b{A`AEh}}}AEj{}}000000`{bFb}0000000000000000000000000000000000000000000000000000``{{{b{A`Mn}}B`}{{b{A`Mn}}}}{{}c{}}0000000000000000000000000000000000000000000000000000{{{b{L`}}}ABd}{{{b{Nd}}}Il}{{{E`{ACl}}}Lf}{{{Fn{AGb}}AGd}{{Bd{LfAGf}}}}{{{b{A`AAn}}{b{{n{j}}}}}{{Bd{BbO`}}}}{{{b{A`AAn}}{b{{n{j}}}}}{{Bd{fO`}}}}{{{b{A`AAn}}{b{A`{n{AFf}}}}}{{Bd{fO`}}}}{{{b{A`AAn}}AFf}{{Bd{fO`}}}}{{{b{A`AAn}}{b{A`{n{AFf}}}}}{{Bd{A@`O`}}}}``````{{bd}f}000`````````{b{{b{c}}}{}}000{{{b{A`}}}{{b{A`c}}}{}}000``{{{b{AGh}}}AGh}{{{b{AGj}}}AGj}{{{b{AGl}}}AGl}{{{b{AGn}}}AGn}{{b{b{A`c}}}f{}}000{{bj}f}000```{{}AGh}{{}AGj}{{}AGl}{{}AGn}{Bb{{b{c}}}{}}000{Bb{{b{A`c}}}{}}000````{Bbf}000`{{{b{AGh}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{AGj}}{b{A`Bn}}}{{Bd{fC`}}}}{{{b{AGl}}{b{A`Bn}}}Fj}{{{b{AGn}}{b{A`Bn}}}{{Bd{fC`}}}}`{cc{}}000{{{b{c}}}c{}}000`{{}Bb}000{{}c{}}000{{{b{AGh}}}{{AH`{{Db{{b{Ef}}{b{ACj}}}}}}}}{{{b{AGj}}}{{AH`{{Db{{b{Ef}}{b{ACj}}}}}}}}{{{b{AGl}}}{{AH`{{Db{{b{Ef}}{b{ACj}}}}}}}}{{{b{AGn}}}{{AH`{{Db{{b{Ef}}{b{ACj}}}}}}}}```{{}{{b{Ef}}}}000````````````````````````````````````````````````````{bc{}}000{c{{Bd{e}}}{}{}}000{{}{{Bd{c}}}{}}000{bFb}000```````{{}c{}}000````{{bd}f}{{{b{AHb}}Kl}{{AHd{{Gf{f}}}}}}{{AHfce}AHf{{AHh{{n{j}}}}}AHb}{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}0{GbAHf}{{{b{AHj}}}AHj}{{b{b{A`c}}}f{}}{{bj}f}{Bb{{b{c}}}{}}0{Bb{{b{A`c}}}{}}0{Bbf}0{{{b{AHj}}}{{b{Gb}}}}{{{b{AHf}}}{{b{Gb}}}}{{{b{AHj}}{b{A`Bn}}}Fj}{{{b{AHf}}{b{A`Bn}}}Fj}{cc{}}0{{{b{c}}}c{}}{{}Bb}0{{}c{}}0{{{b{AHj}}}An}?{{{b{AHb}}}{{AHd{f}}}}{{{b{AHj}}}{{Gf{f}}}}{AHf{{Gf{AHj}}}}{bc{}}{c{{Bd{e}}}{}{}}0{{}{{Bd{c}}}{}}0{bFb}0{{}c{}}0``{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}0{Bj{{Gf{Jd}}}}{Bb{{b{c}}}{}}0{Bb{{b{A`c}}}{}}0{{{b{AHl}}Ab}{{Fl{Fd}}}}{{{b{AHl}}}Id}{Bbf}0{{{b{AHn}}{b{A`Bn}}}Fj}{{{b{AHl}}{b{A`Bn}}}Fj}{cc{}}0{{}Bb}0{{}c{}}0``{{{b{AHl}}{b{Gd}}Hj}{{Gf{f}}}}`{{}{{Gf{AHl}}}}{{}{{Gf{{Db{AhAfAI`}}}}}}{{{D`{AIb}}An}{{Gf{{Db{AhAfAI`}}}}}}1{Cf{{Gf{AHl}}}}{c{{Bd{e}}}{}{}}0{{}{{Bd{c}}}{}}0{bFb}0{{}c{}}0``````{{bd}f}00{b{{b{c}}}{}}00000{{{b{A`}}}{{b{A`c}}}{}}00000{e{{AId{g}}}{}{{AIf{}{{Bh{c}}}}}{{AIh{}{{Bh{c}}}}}}{{{b{{AIj{c}}}}}{{AIj{c}}}{}}{{{b{{AAh{c}}}}}{{AAh{c}}}Jb}{{{b{{AIl{c}}}}}{{AIl{c}}}Jb}{{b{b{A`c}}}f{}}00{{bj}f}00{{}{{AIj{c}}}AIn}{Bb{{b{c}}}{}}00000{Bb{{b{A`c}}}{}}00000{Bbf}00000{{{b{{AIj{c}}}}{b{A`Bn}}}FjKd}{{{b{{AAh{c}}}}{b{A`Bn}}}FjKd}{{{b{{AJ`{c}}}}{b{A`Bn}}}FjKd}{{{b{{AJb{c}}}}{b{A`Bn}}}FjKd}{{{b{{AIl{c}}}}{b{A`Bn}}}FjKd}{{{b{AJd}}{b{A`Bn}}}Fj}0{cc{}}00000{{{b{c}}}c{}}00{{{b{{AIj{c}}}}}c{JbAJf}}{{{b{{AAh{c}}}}}{{Bd{cAJd}}}{JbAJf}}{{}Bb}00000{{{b{A`{AAh{{D`{c}}}}}}}{{AJb{c}}}{JbAJf}}{{}c{}}00000{{}}0{{}c{}}{c{{ADh{e}}}ADjIj}0{e{{AJh{cg}}}{}{{AIf{}{{Bh{c}}}}}{{AIh{}{{Bh{c}}}}}}{c{{AIj{c}}}{JbAJf}}{{{AEf{{b{A`{AJ`{c}}}}}}{b{A`AEh}}}{{AEj{e}}}{JbAJf}{}}{{{AEf{{b{A`{AJb{c}}}}}}{b{A`AEh}}}{{AEj{e}}}{JbAJf}{}}{{{AEf{{b{A`{AIl{c}}}}}}{b{A`AEh}}}{{AEj{{D`{e}}}}}{JbAJf}{}}{e{{AFd{cg}}}{}{{ADj{}{{Ih{c}}}}}{{Ij{}{{Ih{c}}}}}}0{{{b{{AJl{AJjceg}}}}}{{AJn{iceg}}}AK`AKbAKd{}}{{{b{{AJl{AJjceg}}}}AKf}{{AJn{iceg}}}AK`AKbAKd{}}{{{b{{AIj{c}}}}c}{{Bd{cc}}}{JbAJf}}{{{AAh{c}}}{{AIl{c}}}{JbAJf}}0{bc{}}00{bCf}{c{{Bd{e}}}{}{}}00000{{}{{Bd{c}}}{}}00000{{{AEf{{b{A`c}}}}{b{A`AEh}}}AEj{}}0{{{AEf{{b{A`c}}}}{b{A`AEh}}}{{AEj{{D`{Bd}}}}}{}}{bFb}00000{{{b{A`{AAh{c}}}}}{{AJ`{c}}}{JbAJf}}{{}c{}}00000{{{b{{AIj{c}}}}}{{AAh{c}}}{JbAJf}}{e{{AKh{g}}}{}{{AIf{}{{Bh{c}}}}}{{AIh{}{{Bh{c}}}}}}","D":"FD`","p":[[1,"reference",null,null,1],[5,"Private",2576],[1,"unit"],[5,"PublicKey",0,2577],[1,"u8"],[1,"array"],[1,"slice"],[0,"mut"],[5,"SecretKey",0,2577],[5,"NodeAddr",0,2578],[5,"RelayUrl",0,2579],[5,"RelayMap",0,2580],[5,"RelayNode",0,2580],[6,"Ordering",2581],[1,"bool"],[1,"u16"],[1,"usize"],[6,"Result",2582,null,1],[10,"Deserializer",2583],[17,"Item"],[6,"SocketAddr",2584],[10,"Iterator",2585],[5,"Formatter",2586],[5,"Error",2586],[6,"KeyParsingError",0,2577],[5,"RelayUrlParseError",0,2579],[5,"String",2587],[5,"VerifyingKey",2588],[5,"Error",2589],[5,"DecodeError",2590],[5,"SigningKey",2591],[6,"Option",2592,null,1],[1,"tuple",null,null,1],[5,"NodeTicket",2593],[5,"NodeInfo",564],[5,"RemoteInfo",655,2594],[5,"Url",2595],[6,"ParseError",2596],[5,"Error",2597],[5,"Arc",2598,null,1],[10,"Into",2599],[10,"IntoIterator",2600],[1,"str"],[10,"CryptoRngCore",2601],[10,"Hasher",2602],[10,"Serializer",2603],[5,"Signature",2604],[10,"Error",2605],[5,"TypeId",2606],[5,"ConcurrentDiscovery",298],[10,"Discovery",298],[5,"DiscoveryItem",298],[8,"Result",2586],[5,"Box",2607,null,1],[5,"Vec",2608],[5,"BTreeSet",2609],[5,"Endpoint",655],[8,"NodeId",0,2577],[8,"Result",2597],[8,"Boxed",2610],[5,"DnsDiscovery",351],[5,"LocalSwarmDiscovery",370],[5,"PkarrPublisher",389],[5,"PkarrResolver",389],[5,"PkarrRelayClient",389],[5,"SignedPacket",2611],[8,"BoxStream",2612],[1,"u32"],[5,"Duration",2613],[5,"Builder",466],[5,"DhtDiscovery",466],[5,"PkarrClient",2614],[5,"StaticProvider",515],[8,"DnsResolver",539],[10,"ResolverExt",539],[17,"Output"],[10,"Future",2615,null,1],[1,"u64"],[6,"IpAddr",2616],[10,"IntoName",2617],[10,"Clone",2618],[8,"TokioResolver",2619],[6,"IrohAttr",564],[5,"TxtAttrs",564],[5,"BTreeMap",2620],[10,"FromStr",2621],[10,"Display",2586],[10,"Hash",2602],[10,"Ord",2581],[10,"Debug",2586],[5,"Record",2622],[5,"Accept",655],[5,"Incoming",655],[5,"Connecting",655],[6,"ConnectionError",655,2623],[5,"Connection",655,2624],[5,"AcceptBi",655,2624],[5,"AcceptUni",655,2624],[5,"ServerConfig",655,2625],[5,"AckFrequencyConfig",655,2625],[5,"VarInt",655,2626],[5,"TransportConfig",655,2625],[5,"Builder",655],[10,"FnOnce",2627],[10,"Send",2628],[10,"Sync",2628],[10,"HandshakeTokenKey",655,2629],[10,"AeadKey",655,2629],[5,"SocketAddrV4",2584],[5,"SocketAddrV6",2584],[5,"MtuDiscoveryConfig",655,2625],[10,"ControllerFactory",655,2630],[5,"Instant",2631],[10,"Controller",655,2630],[6,"SendDatagramError",655,2624],[6,"ReadToEndError",655,2632],[6,"ReadError",655,2632],[6,"ResetError",655,2632],[6,"ReadExactError",655,2632],[6,"WriteError",655,2633],[6,"StoppedError",655,2633],[5,"UdpStats",655,2634],[5,"FrameStats",655,2634],[5,"PathStats",655,2634],[5,"ConnectionStats",655,2634],[6,"ControlMsg",655,2594],[5,"DirectAddrInfo",655,2594],[5,"Written",655,2635],[6,"ConnectionType",655,2594],[5,"ClosedStream",655,2636],[6,"Source",655,2637],[5,"ConnectionClose",655,2638],[5,"ApplicationClose",655,2638],[5,"TransportError",655],[5,"TransportErrorCode",655],[5,"DirectAddr",655,2639],[6,"DirectAddrType",655,2639],[5,"StreamId",655,2640],[6,"RelayMode",655],[5,"Watcher",2444],[6,"Dir",2640],[5,"RecvStream",655,2632],[5,"SendStream",655,2633],[5,"Chunk",655,2641],[5,"ExportKeyingMaterialError",655,2629],[5,"WeakConnectionHandle",655,2624],[5,"RetryError",655,2642],[5,"CryptoError",655,2629],[5,"UnsupportedVersion",655,2629],[5,"IncomingFuture",655],[6,"ReadableError",2643],[6,"Close",2638],[5,"Unspecified",2644],[5,"InvalidFrame",2638],[6,"Error",2645],[5,"VarIntBoundsExceeded",2626],[10,"Any",2606],[10,"CryptoServerConfig",655],[5,"ConnectionId",2646],[5,"Keys",2629],[6,"Side",2640],[5,"ZeroRttAccepted",655,2624],[5,"Incoming",2642],[5,"Join2",2647],[10,"IntoFuture",2648],[5,"IdleTimeout",2625],[5,"Receiver",2649],[5,"RttEstimator",2650],[5,"OpenBi",655,2624],[5,"OpenUni",655,2624],[5,"Pin",2651],[5,"Context",2652],[6,"Poll",2653],[5,"ReadDatagram",655,2624],[5,"Error",2654],[5,"ReadBuf",2655],[1,"i32"],[5,"Race2",2656],[5,"Bytes",2657],[5,"SendDatagram",2624],[5,"TransportParameters",2645],[10,"Session",2629],[1,"f32"],[1,"u128"],[5,"CertificateDer",2658],[6,"PrivateKeyDer",2658],[6,"Error",2659],[5,"PortmapMetrics",2183],[5,"NetReportMetrics",2183],[5,"MagicsockMetrics",2183],[5,"RelayMetrics",2183],[5,"IntoIter",2660],[10,"ProtocolHandler",2359],[8,"Boxed",2661],[5,"RouterBuilder",2359],[10,"AsRef",2599],[5,"Router",2359],[5,"DnsPkarrServer",2404,2662],[5,"CleanupDropGuard",2404],[5,"Server",2663],[5,"StunConfig",2663],[5,"Chain2",2664],[10,"IntoStream",2665],[10,"Stream",2612],[5,"Watchable",2444],[5,"WatcherStream",2444],[10,"Default",2666],[5,"WatchNextFut",2444],[5,"WatchInitializedFut",2444],[5,"Disconnected",2444],[10,"Eq",2581],[5,"Merge2",2667],[6,"NotKeyed",2668],[5,"RateLimiter",2669],[5,"RatelimitedStream",2670],[10,"DirectStateStore",2668],[10,"ReasonablyRealtime",2671],[10,"RateLimitingMiddleware",2672],[5,"Jitter",2673],[5,"Zip2",2674],[15,"Discovery",2181],[15,"NamedApp",2181]],"r":[[2,655],[4,2577],[6,2578],[7,2577],[8,2577],[9,2580],[10,655],[11,2580],[12,2579],[13,2579],[14,2577],[282,2675],[283,2675],[658,2624],[659,2624],[660,2625],[661,2629],[663,2638],[670,2641],[672,2636],[676,2624],[677,2638],[679,2623],[685,2634],[686,2594],[687,2594],[688,2630],[689,2630],[690,2629],[695,2639],[696,2594],[697,2639],[703,2629],[708,2634],[709,2629],[721,2625],[726,2624],[727,2624],[729,2634],[734,2624],[735,2632],[737,2632],[738,2632],[739,2632],[743,2594],[746,2632],[747,2642],[751,2624],[752,2633],[753,2625],[754,2637],[757,2633],[758,2640],[765,2625],[770,2634],[773,2629],[774,2626],[776,2624],[777,2633],[778,2635],[779,2624],[2405,2662],[2410,2676]],"b":[[125,"impl-Debug-for-PublicKey"],[126,"impl-Display-for-PublicKey"],[127,"impl-Debug-for-KeyParsingError"],[128,"impl-Display-for-KeyParsingError"],[129,"impl-Debug-for-SecretKey"],[130,"impl-Display-for-SecretKey"],[132,"impl-Display-for-RelayUrl"],[133,"impl-Debug-for-RelayUrl"],[134,"impl-Display-for-RelayUrlParseError"],[135,"impl-Debug-for-RelayUrlParseError"],[136,"impl-Debug-for-RelayMap"],[137,"impl-Display-for-RelayMap"],[138,"impl-Display-for-RelayNode"],[139,"impl-Debug-for-RelayNode"],[143,"impl-From%3CError%3E-for-KeyParsingError"],[145,"impl-From%3CDecodeError%3E-for-KeyParsingError"],[146,"impl-From%3C%5Bu8;+32%5D%3E-for-SecretKey"],[148,"impl-From%3CSigningKey%3E-for-SecretKey"],[150,"impl-From%3CPublicKey%3E-for-NodeAddr"],[151,"impl-From%3C(PublicKey,+Option%3CRelayUrl%3E,+%26%5BSocketAddr%5D)%3E-for-NodeAddr"],[152,"impl-From%3CNodeTicket%3E-for-NodeAddr"],[153,"impl-From%3CNodeInfo%3E-for-NodeAddr"],[154,"impl-From%3CRemoteInfo%3E-for-NodeAddr"],[239,"impl-TryFrom%3C%26%5Bu8%5D%3E-for-PublicKey"],[240,"impl-TryFrom%3C%26%5Bu8;+32%5D%3E-for-PublicKey"],[602,"impl-Display-for-IrohAttr"],[603,"impl-Debug-for-IrohAttr"],[608,"impl-From%3CTxtAttrs%3CIrohAttr%3E%3E-for-NodeInfo"],[609,"impl-From%3C%26TxtAttrs%3CIrohAttr%3E%3E-for-NodeInfo"],[1385,"impl-Display-for-SendDatagramError"],[1386,"impl-Debug-for-SendDatagramError"],[1387,"impl-Display-for-RetryError"],[1388,"impl-Debug-for-RetryError"],[1390,"impl-Debug-for-ReadToEndError"],[1391,"impl-Display-for-ReadToEndError"],[1392,"impl-Debug-for-ReadError"],[1393,"impl-Display-for-ReadError"],[1394,"impl-Display-for-ResetError"],[1395,"impl-Debug-for-ResetError"],[1396,"impl-Debug-for-ReadExactError"],[1397,"impl-Display-for-ReadExactError"],[1399,"impl-Display-for-WriteError"],[1400,"impl-Debug-for-WriteError"],[1401,"impl-Debug-for-StoppedError"],[1402,"impl-Display-for-StoppedError"],[1404,"impl-Debug-for-VarInt"],[1405,"impl-Display-for-VarInt"],[1411,"impl-Debug-for-ControlMsg"],[1412,"impl-Display-for-ControlMsg"],[1416,"impl-Display-for-ConnectionType"],[1417,"impl-Debug-for-ConnectionType"],[1418,"impl-Debug-for-ClosedStream"],[1419,"impl-Display-for-ClosedStream"],[1420,"impl-Display-for-Source"],[1421,"impl-Debug-for-Source"],[1422,"impl-Display-for-ConnectionError"],[1423,"impl-Debug-for-ConnectionError"],[1430,"impl-Debug-for-ConnectionClose"],[1431,"impl-Display-for-ConnectionClose"],[1432,"impl-Display-for-ApplicationClose"],[1433,"impl-Debug-for-ApplicationClose"],[1434,"impl-Display-for-TransportError"],[1435,"impl-Debug-for-TransportError"],[1436,"impl-Display-for-TransportErrorCode"],[1437,"impl-Debug-for-TransportErrorCode"],[1439,"impl-Display-for-DirectAddrType"],[1440,"impl-Debug-for-DirectAddrType"],[1441,"impl-Display-for-StreamId"],[1442,"impl-Debug-for-StreamId"],[1470,"impl-From%3CResetError%3E-for-ReadError"],[1471,"impl-From%3CConnectionError%3E-for-ReadError"],[1472,"impl-From%3CReadableError%3E-for-ReadError"],[1478,"impl-From%3CClosedStream%3E-for-WriteError"],[1480,"impl-From%3CStoppedError%3E-for-WriteError"],[1481,"impl-From%3CConnectionError%3E-for-WriteError"],[1485,"impl-From%3Cu16%3E-for-VarInt"],[1487,"impl-From%3Cu8%3E-for-VarInt"],[1488,"impl-From%3CStreamId%3E-for-VarInt"],[1489,"impl-From%3Cu32%3E-for-VarInt"],[1502,"impl-From%3CClose%3E-for-ConnectionError"],[1503,"impl-From%3CTransportError%3E-for-ConnectionError"],[1515,"impl-From%3CTransportErrorCode%3E-for-TransportError"],[1516,"impl-From%3CInvalidFrame%3E-for-TransportError"],[1518,"impl-From%3CError%3E-for-TransportError"],[1797,"impl-RecvStream"],[1798,"impl-AsyncRead-for-RecvStream"],[1800,"impl-AsyncWrite-for-SendStream"],[1801,"impl-SendStream"],[1965,"impl-TryFrom%3Cu64%3E-for-VarInt"],[1967,"impl-TryFrom%3Cu128%3E-for-VarInt"],[1968,"impl-TryFrom%3Cusize%3E-for-VarInt"],[2499,"impl-Debug-for-Disconnected"],[2500,"impl-Display-for-Disconnected"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAPAGowADAAAACwAAABAABQAXACsARgAVAGAABwBqACIAjgAAAJAAAACSAAEAlQAAAJcAAQCaAAEAnQAAAJ8AAACmAAgAsgAJAMsAAwDWAAQA3AABAOIAJwANAQcALgEAADABCwA9AQEAQAEBAEQBAQBHAQEAUQEAAFMBAABWAQkAYwEFAGoBAABuAQQAdQEFAHwBAAB/AQYAjQEXAKYBBgCwAQUAvgEAAMABAADCAQsAzwECANUBBADdAQgA5wEDAO0BAADvAQEA9gEAAPgBAAD6AQQAAAIDAAcCBgARAgAAFAIAABYCAAAYAgMAKAIAADACAAA7AgEAPgIQAFACDgBhAgEAZAIAAGoCAQBuAgMAegIAAH4CAACBAgAAgwIMABEDIAA4AwAAOgMAAEoDaQC8AyAA3gNBACQEAwApBAMAMwQAADUEAAA6BAEAQAQKAEwEbgDEBDYA/ARnAGgFQgC4BQAAvAUAAL8FAwDEBQAAxwUAAMkFAQDMBQAAzgUAANAFAgDfBQEA5gUAAOoFAADsBQEA7wUAAPQFAAD8BSAAIwYAACUGBAAuBgAAMgY0AKUGCQC1BggA0gYAANYGAgDhBgEA5gYAAPIGAwD3BgEA+wYKAAcHAgAQBwgAMQcBAEIHBABMBwcAWgcAAFwHAQBfBwEAYgc0AJsHEgCvBwAAsgdcABAINABICDQAjAgDAJEIDwCjCAsAsggLAMIICADQCAMA1QgDAN0ICgDxCAYA+QgHAAMJCAAPCQYAFwkUAC4JCAA7CQAAPgkDAEMJCABOCQEAUgkCAFwJCABnCQMAbAkDAHIJAwB4CQEAhQkHAJMJMgDMCQIA0QkFAN4JBQDlCQYA7wkYAAkKBQAQCgAA","P":[[24,"T"],[40,""],[46,"T"],[52,""],[62,"K"],[66,""],[69,"T"],[74,""],[75,"T"],[86,"D"],[88,"__D"],[91,""],[110,"K"],[125,""],[142,"T"],[143,""],[144,"T"],[145,""],[147,"T"],[148,""],[149,"T"],[150,""],[155,"T"],[156,""],[157,"T"],[158,""],[159,"T"],[161,""],[163,"I,"],[164,""],[165,"T"],[171,""],[175,"R"],[176,""],[177,"H"],[178,"__H"],[179,""],[187,"U"],[195,""],[213,"S"],[215,"__S"],[218,""],[225,"T"],[231,""],[238,"U,T"],[239,""],[241,"U,T"],[243,""],[244,"U,T"],[249,"U"],[257,""],[268,"V"],[277,""],[278,""],[302,""],[303,"T"],[307,""],[308,"T"],[309,""],[311,"T"],[316,""],[321,"T"],[325,""],[328,"U"],[335,""],[342,"T"],[343,"U,T"],[345,"U"],[347,""],[349,"V"],[354,"T"],[358,""],[360,"T"],[361,""],[362,"U"],[363,""],[366,"U,T"],[367,"U"],[368,""],[369,"V"],[372,"T"],[376,""],[378,"T"],[379,""],[380,"U"],[381,""],[385,"U,T"],[386,"U"],[387,""],[388,"V"],[396,""],[399,"T"],[405,""],[408,"T"],[411,""],[414,"T"],[421,""],[428,"T"],[434,""],[437,"U"],[440,""],[449,"T"],[452,"U,T"],[455,"U"],[458,""],[462,"V"],[465,""],[469,"T"],[473,""],[477,"T"],[478,""],[481,"T"],[485,""],[490,"T"],[493,""],[497,"U"],[499,""],[505,"T"],[506,"U,T"],[508,"U"],[510,""],[513,"V"],[517,""],[518,"T"],[520,""],[521,"T"],[523,""],[525,"T"],[526,","],[527,""],[529,"U"],[530,""],[534,""],[535,"U,T"],[536,"U"],[537,""],[538,"V"],[541,""],[550,"N"],[563,""],[572,"T"],[579,""],[580,"T"],[581,""],[583,"K"],[584,"T"],[591,""],[596,"K"],[602,""],[605,"T"],[608,""],[610,"T"],[611,""],[613,"T"],[614,"T,"],[615,""],[616,"T"],[618,"FromStr::Err"],[619,",T"],[620,""],[621,"__H"],[622,""],[625,"U"],[628,"T"],[630,""],[631,"T"],[633,""],[636,"T"],[638,""],[639,"T"],[640,""],[642,"TryFrom::Error"],[643,"U,T"],[646,"U"],[649,""],[652,"V"],[784,""],[826,"D,F"],[827,""],[841,"T"],[947,""],[989,"T"],[1022,""],[1064,"K"],[1068,""],[1073,""],[1075,""],[1099,"T"],[1205,"__D"],[1210,""],[1301,"K"],[1381,""],[1455,"T"],[1463,""],[1464,"T"],[1467,""],[1468,"T"],[1470,""],[1474,"T"],[1475,""],[1476,"T"],[1478,""],[1479,"T"],[1480,""],[1482,"T"],[1483,""],[1484,"T"],[1485,""],[1486,"T"],[1487,""],[1490,"T"],[1502,""],[1504,"T"],[1509,""],[1510,"T"],[1513,""],[1514,"T"],[1515,""],[1517,"T"],[1518,""],[1519,"T"],[1523,""],[1524,"T"],[1564,""],[1572,"__H"],[1577,""],[1645,"U"],[1698,""],[1707,"IntoFuture::IntoFuture"],[1708,""],[1716,"F2,F1"],[1725,""],[1793,"Future::Output"],[1796,""],[1807,"T,S2,F1"],[1816,""],[1847,""],[1848,""],[1857,"__S"],[1862,""],[1889,"T"],[1922,""],[1946,"U,T"],[1965,""],[1966,"U,T"],[1967,""],[1969,"U,T"],[2002,"U"],[2055,"F"],[2063,""],[2119,"V"],[2172,""],[2200,"T"],[2210,""],[2214,"T"],[2218,""],[2229,"T"],[2241,""],[2251,"T"],[2260,""],[2264,"U"],[2268,""],[2331,"T"],[2335,"U,T"],[2339,"U"],[2343,""],[2354,"V"],[2362,""],[2364,",T"],[2365,"T"],[2369,""],[2371,"T"],[2372,""],[2373,"T"],[2377,""],[2383,"T"],[2386,""],[2388,"U"],[2390,""],[2395,"T"],[2396,"U,T"],[2398,"U"],[2400,""],[2402,"V"],[2406,"T"],[2410,""],[2411,"T"],[2415,""],[2421,"T"],[2423,""],[2425,"U"],[2429,""],[2436,"U,T"],[2438,"U"],[2440,""],[2442,"V"],[2450,""],[2453,"T"],[2465,"T,S2,S1"],[2466,"T"],[2472,""],[2475,"T"],[2488,""],[2494,"T"],[2499,""],[2501,"T"],[2512,""],[2518,"T"],[2519,"U"],[2525,""],[2527,"S"],[2528,"F2,F1"],[2530,"T,S2,S1"],[2531,"T"],[2532,"T,Future::Output"],[2534,"T,Stream::Item"],[2535,"T,S2,F1"],[2537,"D,C,MW,S"],[2539,"T"],[2545,""],[2546,"U,T"],[2552,"U"],[2558,"F"],[2560,"S"],[2561,""],[2567,"T"],[2568,"V"],[2574,"T"],[2575,"T,S2,S1"]]}],["iroh_base",{"t":"TPPPGTFIFFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNONNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPGTPFPKPNNNNNNNNNNNNNNNNNNNMNNNNNNNNNMNNNNNNNNNNO","n":["BYTE_SIZE","Decode","DecodeInvalidLength","Key","KeyParsingError","LENGTH","NodeAddr","NodeId","PublicKey","RelayUrl","RelayUrlParseError","SecretKey","Signature","as_bytes","as_ref","borrow","","","","","","","","borrow_mut","","","","","","","clone","","","","","clone_into","","","","","clone_to_uninit","","","","","cmp","","","deref","deserialize","","","","","direct_addresses","","eq","","","","fmt","","","","","","","","","","","","","","","fmt_short","from","","","","","","","","","","","","","","","","","","","","from_bytes","","","from_components","from_parts","from_slice","from_str","","","","generate","hash","","into","","","","","","","is_empty","new","node_id","partial_cmp","","","public","","r_bytes","relay_url","","s_bytes","secret","serialize","","","","","sign","source","","ticket","to_bytes","","","to_owned","","","","","to_string","","","","","","to_vec","try_from","","","","","","","","","","","try_into","","","","","","","type_id","","","","","","","verify","with_direct_addresses","with_relay_url","Encoding","Error","KIND","Kind","NodeTicket","Postcard","Ticket","Verify","borrow","","borrow_mut","","clone","clone_into","clone_to_uninit","deserialize","","eq","fmt","","","","from","","","","","from_bytes","","from_str","into","","new","node_addr","serialize","","source","to_bytes","","to_owned","to_string","","try_from","","try_into","","type_id","","expected"],"q":[[0,"iroh_base"],[181,"iroh_base::ticket"],[229,"iroh_base::ticket::Error"],[230,"iroh_base::key"],[231,"ed25519"],[232,"iroh_base::node_addr"],[233,"iroh_base::relay_url"],[234,"core::cmp"],[235,"core::result"],[236,"serde::de"],[237,"core::net::socket_addr"],[238,"core::iter::traits::iterator"],[239,"core::fmt"],[240,"alloc::string"],[241,"ed25519_dalek::signature"],[242,"ed25519_dalek::verifying"],[243,"ed25519_dalek::errors"],[244,"data_encoding"],[245,"ed25519_dalek::signing"],[246,"core::option"],[247,"iroh_base::ticket::node"],[248,"url"],[249,"url::parser"],[250,"core::iter::traits::collect"],[251,"signature::error"],[252,"rand_core"],[253,"core::hash"],[254,"serde::ser"],[255,"core::error"],[256,"alloc::vec"],[257,"core::any"],[258,"postcard::error"]],"i":"nBl00`b```````002001A`AbAdBn645321064321643216432142116432122642166664455332110046666445553332222110064362664313416453210222421436226364321350`6636432164531066644453321064532106453210422El`Ej1`1`1Db202000100002200222100020010210002020202F`","f":"`````````````{{{d{b}}}{{d{{h{f}}}}}}{{{d{b}}}{{d{{j{f}}}}}}{d{{d{c}}}{}}2000000{{{d{l}}}{{d{lc}}}{}}000000{{{d{n}}}n}{{{d{b}}}b}{{{d{A`}}}A`}{{{d{Ab}}}Ab}{{{d{Ad}}}Ad}{{d{d{lc}}}Af{}}0000{{df}Af}0000{{{d{b}}{d{b}}}Ah}{{{d{Ab}}{d{Ab}}}Ah}{{{d{Ad}}{d{Ad}}}Ah}{{{d{Ad}}}{{d{c}}}{}}{c{{Aj{n}}}Al}{c{{Aj{b}}}Al}{c{{Aj{A`}}}Al}{c{{Aj{Ab}}}Al}{c{{Aj{Ad}}}Al}{{{d{Ab}}}{{`{{Bb{}{{An{{d{B`}}}}}}}}}}`{{{d{n}}{d{n}}}Bd}{{{d{b}}{d{b}}}Bd}{{{d{Ab}}{d{Ab}}}Bd}{{{d{Ad}}{d{Ad}}}Bd}{{{d{n}}{d{lBf}}}{{Aj{AfBh}}}}000{{{d{b}}{d{lBf}}}Bj}0{{{d{Bl}}{d{lBf}}}Bj}0{{{d{A`}}{d{lBf}}}Bj}0{{{d{Ab}}{d{lBf}}}Bj}{{{d{Ad}}{d{lBf}}}Bj}0{{{d{Bn}}{d{lBf}}}Bj}0{{{d{b}}}C`}{cc{}}{{{d{{h{f}}}}}n}{{{h{f}}}n}{Cbn}3{Cdb}4{CfBl}{ChBl}{{{h{f}}}A`}7{CjA`}{{{Cn{b{Cl{Ad}}{d{{j{B`}}}}}}}Ab}{D`Ab}{DbAb};{DdAd}<{DfBn}=<{{{d{{h{f}}}}}{{Aj{bCf}}}}{{{d{{h{f}}}}}A`}{{{h{f}}{h{f}}}n}{{b{Cl{Ad}}c}Ab{{Dh{}{{An{B`}}}}}}{{{d{{j{f}}}}}{{Aj{nDj}}}}{{{d{Dl}}}{{Aj{nDj}}}}{{{d{Dl}}}{{Aj{bc}}}{}}{{{d{Dl}}}{{Aj{A`c}}}{}}{{{d{Dl}}}{{Aj{Adc}}}{}}{cA`Dn}{{{d{b}}{d{lc}}}AfE`}{{{d{Ad}}{d{lc}}}AfE`}{{}c{}}000000{{{d{Ab}}}Bd}{bAb}`{{{d{b}}{d{b}}}{{Cl{Ah}}}}{{{d{Ab}}{d{Ab}}}{{Cl{Ah}}}}{{{d{Ad}}{d{Ad}}}{{Cl{Ah}}}}{{{d{b}}}Cd}{{{d{A`}}}b}{{{d{n}}}{{d{{h{f}}}}}}{{{d{Ab}}}{{Cl{{d{Ad}}}}}}`1{{{d{A`}}}{{d{Cj}}}}{{{d{n}}c}AjEb}{{{d{b}}c}AjEb}{{{d{A`}}c}AjEb}{{{d{Ab}}c}AjEb}{{{d{Ad}}c}AjEb}{{{d{A`}}{d{{j{f}}}}}n}{{{d{Bl}}}{{Cl{{d{Ed}}}}}}{{{d{Bn}}}{{Cl{{d{Ed}}}}}}`{{{d{n}}}{{h{f}}}}0{{{d{A`}}}{{h{f}}}}{dc{}}0000{dC`}00000{{{d{n}}}{{Ef{f}}}}{c{{Aj{e}}}{}{}}{{{d{{j{f}}}}}{{Aj{nDj}}}}{{{d{{j{f}}}}}{{Aj{bc}}}{}}{{{d{{h{f}}}}}{{Aj{bc}}}{}}333{{{d{{j{f}}}}}{{Aj{A`c}}}{}}444{{}{{Aj{c}}}{}}000000{dEh}000000{{{d{b}}{d{{j{f}}}}{d{n}}}{{Aj{AfCf}}}}{{Abc}Ab{{Dh{}{{An{B`}}}}}}{{AbAd}Ab}````````{d{{d{c}}}{}}0{{{d{l}}}{{d{lc}}}{}}0{{{d{Db}}}Db}{{d{d{lc}}}Af{}}{{df}Af}{{{d{Dl}}}{{Aj{EjEl}}}}{c{{Aj{Db}}}Al}{{{d{Db}}{d{Db}}}Bd}{{{d{Db}}{d{lBf}}}Bj}0{{{d{El}}{d{lBf}}}Bj}0{cc{}}{AbDb}1{ChEl}{EnEl}{{{d{{j{f}}}}}{{Aj{EjEl}}}}{{{d{{j{f}}}}}{{Aj{DbEl}}}}{{{d{Dl}}}{{Aj{Dbc}}}{}}{{}c{}}06{{{d{Db}}}{{d{Ab}}}}{{{d{Ej}}}C`}{{{d{Db}}c}AjEb}{{{d{El}}}{{Cl{{d{Ed}}}}}}{{{d{Ej}}}{{Ef{f}}}}{{{d{Db}}}{{Ef{f}}}}{dc{}}{dC`}0{c{{Aj{e}}}{}{}}0{{}{{Aj{c}}}{}}0{dEh}0`","D":"Il","p":[[5,"PublicKey",0,230],[1,"reference",null,null,1],[1,"u8"],[1,"array"],[1,"slice"],[0,"mut"],[5,"Signature",0,231],[5,"SecretKey",0,230],[5,"NodeAddr",0,232],[5,"RelayUrl",0,233],[1,"unit"],[6,"Ordering",234],[6,"Result",235,null,1],[10,"Deserializer",236],[17,"Item"],[6,"SocketAddr",237],[10,"Iterator",238],[1,"bool"],[5,"Formatter",239],[5,"Error",239],[8,"Result",239],[6,"KeyParsingError",0,230],[5,"RelayUrlParseError",0,233],[5,"String",240],[5,"InternalSignature",241],[5,"VerifyingKey",242],[8,"SignatureError",243],[5,"DecodeError",244],[5,"SigningKey",245],[6,"Option",246,null,1],[1,"tuple",null,null,1],[8,"NodeId",0,230],[5,"NodeTicket",181,247],[5,"Url",248],[6,"ParseError",249],[10,"IntoIterator",250],[5,"Error",251],[1,"str"],[10,"CryptoRngCore",252],[10,"Hasher",253],[10,"Serializer",254],[10,"Error",255],[5,"Vec",256],[5,"TypeId",257],[10,"Ticket",181],[6,"Error",181],[6,"Error",258],[15,"Kind",229]],"r":[[4,230],[6,232],[7,230],[8,230],[9,233],[10,233],[11,230],[12,231],[185,247]],"b":[[60,"impl-Debug-for-Signature"],[61,"impl-Display-for-Signature"],[62,"impl-LowerHex-for-Signature"],[63,"impl-UpperHex-for-Signature"],[64,"impl-Display-for-PublicKey"],[65,"impl-Debug-for-PublicKey"],[66,"impl-Debug-for-KeyParsingError"],[67,"impl-Display-for-KeyParsingError"],[68,"impl-Display-for-SecretKey"],[69,"impl-Debug-for-SecretKey"],[71,"impl-Display-for-RelayUrl"],[72,"impl-Debug-for-RelayUrl"],[73,"impl-Debug-for-RelayUrlParseError"],[74,"impl-Display-for-RelayUrlParseError"],[77,"impl-From%3C%26%5Bu8;+ed25519::::SignatureBytes::%7Bconstant%230%7D%5D%3E-for-Signature"],[78,"impl-From%3C%5Bu8;+ed25519::::SignatureBytes::%7Bconstant%230%7D%5D%3E-for-Signature"],[79,"impl-From%3CInternalSignature%3E-for-Signature"],[83,"impl-From%3CError%3E-for-KeyParsingError"],[84,"impl-From%3CDecodeError%3E-for-KeyParsingError"],[85,"impl-From%3C%5Bu8;+32%5D%3E-for-SecretKey"],[87,"impl-From%3CSigningKey%3E-for-SecretKey"],[88,"impl-From%3C(PublicKey,+Option%3CRelayUrl%3E,+%26%5BSocketAddr%5D)%3E-for-NodeAddr"],[89,"impl-From%3CPublicKey%3E-for-NodeAddr"],[90,"impl-From%3CNodeTicket%3E-for-NodeAddr"],[138,"impl-SignatureEncoding-for-Signature"],[139,"impl-Signature"],[155,"impl-TryFrom%3C%26%5Bu8%5D%3E-for-PublicKey"],[156,"impl-TryFrom%3C%26%5Bu8;+32%5D%3E-for-PublicKey"],[199,"impl-Debug-for-NodeTicket"],[200,"impl-Display-for-NodeTicket"],[201,"impl-Display-for-Error"],[202,"impl-Debug-for-Error"],[206,"impl-From%3CDecodeError%3E-for-Error"],[207,"impl-From%3CError%3E-for-Error"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAJgAFgAPACcAOQASAE4AAgBSAAAAVAACAFgAAgBdAAAAXwAAAGcAAwBsAAEAeAACAIIABACIAAEAiwAAAI4ACgCaABgAvgAGAMYABQDPAAEA0gABANkAAQDcAAkA","P":[[15,"T"],[16,""],[17,"T"],[30,""],[35,"T"],[40,""],[48,"Deref::Target"],[49,"D"],[52,"__D"],[54,""],[76,"T"],[77,""],[80,"T"],[81,""],[82,"T"],[83,""],[86,"T"],[87,""],[91,"T"],[92,""],[93,"T"],[94,""],[95,"T"],[96,""],[100,""],[101,""],[103,"FromStr::Err"],[106,"R"],[107,"H"],[108,"__H"],[109,"U"],[116,""],[129,"S"],[132,"__S"],[134,""],[141,"T"],[146,""],[153,"U,T"],[154,""],[155,"TryFrom::Error"],[157,"U,T"],[160,"TryFrom::Error"],[161,"U,T"],[164,"U"],[171,""],[179,""],[180,""],[189,"T"],[193,""],[194,"T"],[195,""],[197,"D"],[198,""],[203,"T"],[204,""],[205,"T"],[206,""],[210,"FromStr::Err"],[211,"U"],[213,""],[216,"S"],[217,""],[220,"T"],[221,""],[223,"U,T"],[225,"U"],[227,""]]}],["iroh_bench",{"t":"FGGGPPPFPPPPNNNNNNNNNNNNNNNNHONNNNNNNNNNNNHNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNONNNNNCOONCOHCCNOONNNNNNNNNNNNNNNNNNNNNONNNNNOSHHHHHHSHHHHHHFNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFONNNNNNOOOONNNNNNNNNNNOONNNNNNNNNNNNNNONOOOHOOONNNNNNOONNNNNN","n":["ClientStats","Commands","ConnectionSelector","EndpointSelector","Iroh","","","Opt","Quinn","","","S2n","__clone_box","","augment_args","augment_args_for_update","augment_subcommands","augment_subcommands_for_update","borrow","","","","","borrow_mut","","","","","client_handler","clients","clone","","clone_into","","clone_to_uninit","","close","","command","","command_for_update","","configure_tracing_subscriber","default","deref","","","","","deref_mut","","","","","download_size","drop","","","","","fmt","","from","","","","","from_arg_matches","","from_arg_matches_mut","","from_ref","","group_id","has_subcommand","init","","","","","initial_mtu","into","","","","","iroh","max_streams","metrics","print","quinn","read_unordered","rt","s2n","stats","","","streams","to_owned","","try_from","","","","","try_into","","","","","type_id","","","","","update_from_arg_matches","","update_from_arg_matches_mut","","upload_size","vzip","","","","","with_relay","ALPN","client","connect_client","handle_client_stream","server","server_endpoint","transport_config","ALPN","client","connect_client","handle_client_stream","server","server_endpoint","transport_config","Opt","__clone_box","augment_args","augment_args_for_update","borrow","borrow_mut","clone","clone_into","clone_to_uninit","command","command_for_update","deref","deref_mut","drop","fmt","from","from_arg_matches","from_arg_matches_mut","from_ref","group_id","init","into","to_owned","try_from","try_into","type_id","update_from_arg_matches","update_from_arg_matches_mut","vzip","Stats","StreamStats","TransferResult","avg_chunk_size","borrow","","","borrow_mut","","","chunk_size","chunk_time","chunks","","default","","deref","","","deref_mut","","","drop","","","duration","duration_hist","fmt","","","from","","","init","","","into","","","new","print","size","stream_finished","stream_stats","streams","throughput","throughput_bps","throughput_hist","total_duration","total_size","try_from","","","try_into","","","ttfb","ttfb_hist","type_id","","","vzip","",""],"q":[[0,"iroh_bench"],[126,"iroh_bench::iroh"],[133,"iroh_bench::quinn"],[140,"iroh_bench::s2n"],[169,"iroh_bench::stats"],[233,"dyn_clone::sealed"],[234,"clap_builder::builder::command"],[235,"anyhow"],[236,"core::fmt"],[237,"clap_builder::parser::matches::arg_matches"],[238,"clap_builder"],[239,"core::result"],[240,"clap_builder::util::id"],[241,"core::option"],[242,"tokio::runtime::runtime"],[243,"core::any"],[244,"iroh_base::node_addr"],[245,"iroh_base::relay_url"],[246,"iroh::endpoint"],[247,"iroh_quinn::connection"],[248,"iroh_quinn_proto::config"],[249,"core::net::socket_addr"],[250,"rustls_pki_types"],[251,"iroh_quinn::endpoint"],[252,"core::time"]],"i":"````lnAf`21000A`00113210Ab43210`1212121432121`0432104321014321021432102121211243210143210`110`1```3112143210432104321021211432101```````````````E`000000000000000000000000000```DbEbEd2102000210102102102201021021021022121112`01110210220102102","f":"````````````{{bd}f}0{hh}000{b{{b{c}}}{}}0000{{{b{j}}}{{b{jc}}}{}}0000{{lnA`}{{Ad{Ab}}}}`{{{b{Af}}}Af}{{{b{A`}}}A`}{{b{b{jc}}}f{}}0{{bAh}f}0{l{{Ad{f}}}}{{{b{n}}Aj{b{{Al{Ah}}}}}f}{{}h}000{{}f}{{}Ab}{An{{b{c}}}{}}0000{An{{b{jc}}}{}}0000`{Anf}0000{{{b{Af}}{b{jB`}}}Bb}{{{b{A`}}{b{jB`}}}Bb}{cc{}}0000{{{b{Bd}}}{{Bh{AfBf}}}}{{{b{Bd}}}{{Bh{A`Bf}}}}{{{b{jBd}}}{{Bh{AfBf}}}}{{{b{jBd}}}{{Bh{A`Bf}}}}{{{b{c}}}c{}}0{{}{{Bl{Bj}}}}{{{b{Bn}}}C`}{{}An}0000`{{}c{}}0000```{{{b{Ab}}An}f}``{{}Cb}``{{{b{n}}}f}``{bc{}}0{c{{Bh{e}}}{}{}}0000{{}{{Bh{c}}}{}}0000{bCd}0000{{{b{jAf}}{b{Bd}}}{{Bh{fBf}}}}{{{b{jA`}}{b{Bd}}}{{Bh{fBf}}}}{{{b{jAf}}{b{jBd}}}{{Bh{fBf}}}}{{{b{jA`}}{b{jBd}}}{{Bh{fBf}}}}`{{}c{}}0000``{{Cf{Bl{Ch}}A`}{{Ad{Ab}}}}{{Cf{Bl{Ch}}A`}{{Ad{{Cn{CjCl}}}}}}{{{b{Cl}}D`C`}{{Ad{{Cn{DbDb}}}}}}{{CjA`}{{Ad{f}}}}{{{b{Cb}}{b{{Bl{Ch}}}}{b{A`}}}{{Cn{CfCj}}}}{{AnDd}Df}`{{DhDjA`}{{Ad{Ab}}}}{{DhDjA`}{{Ad{{Cn{DlCl}}}}}}5{{DlA`}{{Ad{f}}}}{{{b{Cb}}DjDn{b{A`}}}{{Cn{DhDl}}}}4`{{bd}f}{hh}0{b{{b{c}}}{}}{{{b{j}}}{{b{jc}}}{}}{{{b{E`}}}E`}{{b{b{jc}}}f{}}{{bAh}f}{{}h}0{An{{b{c}}}{}}{An{{b{jc}}}{}}{Anf}{{{b{E`}}{b{jB`}}}Bb}{cc{}}{{{b{Bd}}}{{Bh{E`Bf}}}}{{{b{jBd}}}{{Bh{E`Bf}}}}{{{b{c}}}c{}}{{}{{Bl{Bj}}}}{{}An}{{}c{}}{bc{}}{c{{Bh{e}}}{}{}}{{}{{Bh{c}}}{}}{bCd}{{{b{jE`}}{b{Bd}}}{{Bh{fBf}}}}{{{b{jE`}}{b{jBd}}}{{Bh{fBf}}}}{{}c{}}````{b{{b{c}}}{}}00{{{b{j}}}{{b{jc}}}{}}00````{{}Eb}{{}Ed}{An{{b{c}}}{}}00{An{{b{jc}}}{}}00{Anf}00``{{{b{Eb}}{b{jB`}}}Bb}{{{b{Ed}}{b{jB`}}}Bb}{{{b{Db}}{b{jB`}}}Bb}{cc{}}00{{}An}00{{}c{}}00{{EfD`EfD`}Db}{{{b{Eb}}{b{Bn}}}f}`{{{b{jEb}}Db}f}```{{EfD`}Eh}```{c{{Bh{e}}}{}{}}00{{}{{Bh{c}}}{}}00``{bCd}00{{}c{}}00","D":"Dj","p":[[1,"reference",null,null,1],[5,"Private",233],[1,"unit"],[5,"Command",234],[0,"mut"],[6,"EndpointSelector",0],[6,"ConnectionSelector",0],[5,"Opt",0],[5,"ClientStats",0],[8,"Result",235],[6,"Commands",0],[1,"u8"],[1,"u32"],[1,"slice"],[1,"usize"],[5,"Formatter",236],[8,"Result",236],[5,"ArgMatches",237],[8,"Error",238],[6,"Result",239,null,1],[5,"Id",240],[6,"Option",241,null,1],[1,"str"],[1,"bool"],[5,"Runtime",242],[5,"TypeId",243],[5,"NodeAddr",244],[5,"RelayUrl",245],[5,"Endpoint",246],[5,"Connection",247],[1,"tuple",null,null,1],[1,"u64"],[5,"TransferResult",169],[1,"u16"],[5,"TransportConfig",248],[6,"SocketAddr",249],[5,"CertificateDer",250],[5,"Endpoint",251],[6,"PrivateKeyDer",250],[5,"Opt",140],[5,"Stats",169],[5,"StreamStats",169],[5,"Duration",252],[1,"f64"]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAMQAEgAAABwAHwAXADgABgBEAAwAVwAAAFoAAQBdAAMAYwAUAHkABAB/AAAAggAAAIUAAQCJAAAAjAAPAJ0ABACjACQAywACANEAGAA=","P":[[18,"T"],[28,""],[32,"T"],[34,""],[44,"T"],[55,""],[62,"T"],[67,""],[71,"T"],[73,""],[81,"U"],[89,""],[98,"T"],[100,"U,T"],[105,"U"],[110,""],[120,"V"],[127,""],[144,"T"],[146,""],[147,"T"],[148,""],[151,"T"],[153,""],[155,"T"],[156,""],[158,"T"],[159,""],[161,"U"],[162,"T"],[163,"U,T"],[164,"U"],[165,""],[168,"V"],[173,"T"],[183,""],[185,"T"],[191,""],[199,"T"],[202,""],[205,"U"],[208,""],[219,"U,T"],[222,"U"],[227,""],[230,"V"]]}],["iroh_dns_server",{"t":"FNNNNNNCCNNNNCNNNCNNNCCNNNNNNGFPPFFFNOONNNNNNNNNNNNNNNNNNNNNNNNOOONNNNNNNNNNNOONNNNNNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNOFFFFNNNNONNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNOOOOONNNNNNNNNNNNNNNNNNNNNNNNGPFFFPPGPPPNNNNOONNNNNNNNNNONNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNOOOOOONNNOOOOHNNNOOOOOONNNNNFNNNNNHNNNNNNFNNNNNNONNNONNNNN","n":["ZoneStore","__clone_box","borrow","borrow_mut","clone","clone_into","clone_to_uninit","config","dns","fmt","from","from_ref","get_signed_packet","http","in_memory","insert","into","metrics","new","persistent","resolve","server","state","to_owned","try_from","try_into","type_id","vzip","with_mainline_fallback","BootstrapOption","Config","Custom","Default","MainlineConfig","MetricsConfig","StoreConfig","__clone_box","bind_addr","bootstrap","borrow","","","","","borrow_mut","","","","","clone","clone_into","clone_to_uninit","data_dir","default","","","","deserialize","","","","","disabled","","dns","enabled","fmt","","","","","from","","","","","from_ref","http","https","into","","","","","load","mainline","metrics","pkarr_put_rate_limit","serialize","","","","","signed_packet_store_path","to_owned","try_from","","","","","try_into","","","","","type_id","","","","","vzip","","","","","zone_store","DnsConfig","DnsHandler","DnsServer","Handle","__clone_box","","","answer_request","bind_addr","borrow","","","","borrow_mut","","","","clone","","","clone_into","","","clone_to_uninit","","","default_soa","default_ttl","deserialize","fmt","","","from","","","","from_ref","","","handle_request","into","","","","local_addr","new","origins","port","rr_a","rr_aaaa","rr_ns","run_until_done","send_response","serialize","shutdown","spawn","to_owned","","","try_from","","","","try_into","","","","type_id","","","","vzip","","","","CertMode","Disabled","HttpConfig","HttpServer","HttpsConfig","LetsEncrypt","Manual","RateLimitConfig","SelfSigned","Simple","Smart","__clone_box","","","","bind_addr","","borrow","","","","","borrow_mut","","","","","cert_mode","clone","","","","clone_into","","","","clone_to_uninit","","","","default","","deserialize","","","","domains","eq","equivalent","","","fmt","","","","","from","","","","","from_ref","","","","http_addr","https_addr","into","","","","","letsencrypt_contact","letsencrypt_prod","port","","run_until_done","serialize","","","","shutdown","spawn","to_owned","","","","to_string","try_from","","","","","try_into","","","","","type_id","","","","","vzip","","","","","Metrics","__clone_box","borrow","borrow_mut","clone","clone_into","clone_to_uninit","default","dns_lookup_error","dns_lookup_notfound","dns_lookup_success","dns_requests","dns_requests_https","dns_requests_udp","fmt","from","from_ref","http_requests","http_requests_duration_ms","http_requests_error","http_requests_success","init_metrics","into","iter","name","pkarr_publish_noop","pkarr_publish_update","store_packets_expired","store_packets_inserted","store_packets_removed","store_packets_updated","to_owned","try_from","try_into","type_id","vzip","Server","borrow","borrow_mut","from","into","run_until_error","run_with_config_until_ctrl_c","shutdown","spawn","try_from","try_into","type_id","vzip","AppState","__clone_box","borrow","borrow_mut","clone","clone_into","clone_to_uninit","dns_handler","from","from_ref","into","store","to_owned","try_from","try_into","type_id","vzip"],"q":[[0,"iroh_dns_server"],[29,"iroh_dns_server::config"],[116,"iroh_dns_server::dns"],[191,"iroh_dns_server::http"],[299,"iroh_dns_server::metrics"],[335,"iroh_dns_server::server"],[348,"iroh_dns_server::state"],[365,"dyn_clone::sealed"],[366,"iroh_dns_server::store"],[367,"core::fmt"],[368,"pkarr::signed_packet"],[369,"core::option"],[370,"anyhow"],[371,"std::path"],[372,"core::convert"],[373,"hickory_proto::rr::domain::name"],[374,"hickory_proto::rr::record_type"],[375,"hickory_proto::rr::rr_set"],[376,"alloc::sync"],[377,"core::result"],[378,"core::any"],[379,"serde::de"],[380,"serde::ser"],[381,"hickory_server::server::request_handler"],[382,"bytes::bytes"],[383,"core::future::future"],[384,"alloc::boxed"],[385,"core::pin"],[386,"hickory_server::server::response_handler"],[387,"core::net::socket_addr"],[388,"hickory_server::authority::message_response"],[389,"hickory_proto::rr::resource"],[390,"core::iter::traits::iterator"],[391,"core::marker"],[392,"iroh_dns_server::http::rate_limiting"],[393,"iroh_dns_server::http::tls"],[394,"alloc::string"],[395,"alloc::vec::into_iter"]],"i":"`j00000``0000`000`000``000000``Bj0```BlCfCbC`3214032143330031403214220103214032143000321400000321403032140321403214032140````D`CjDb12Dl32103213213213213333210321321203210233333013003210321032103210321`Ej```El0`01110EnF`10Fd432104321143214321432144432113333433210432143210004321112104321004321304321043210432104321`Fj0000000000000000000`00000000000000`Gd0000`000000`Ff000000000000000","f":"`{{bd}f}{b{{b{c}}}{}}{{{b{h}}}{{b{hc}}}{}}{{{b{j}}}j}{{b{b{hc}}}f{}}{{bl}f}``{{{b{j}}{b{hn}}}A`}{cc{}}{{{b{c}}}c{}}{{{b{j}}{b{`}}}{{Af{{Ad{Ab}}}}}}```{{}c{}}```{{{b{j}}{b{`}}{b{An}}B`}{{Af{{Ad{{Bd{Bb}}}}}}}}``{bc{}}{c{{Bf{e}}}{}{}}{{}{{Bf{c}}}{}}{bBh}{{}c{}}{{jBj}j}```````{{bd}f}``{b{{b{c}}}{}}0000{{{b{h}}}{{b{hc}}}{}}0000{{{b{Bl}}}Bl}{{b{b{hc}}}f{}}{{bl}f}{{}{{Af{Bn}}}}{{}C`}{{}Bl}{{}Cb}{{}Bj}{c{{Bf{C`}}}Cd}{c{{Bf{Bl}}}Cd}{c{{Bf{Cf}}}Cd}{c{{Bf{Cb}}}Cd}{c{{Bf{Bj}}}Cd}{{}Cf}```{{{b{C`}}{b{hn}}}A`}{{{b{Bl}}{b{hn}}}A`}{{{b{Cf}}{b{hn}}}A`}{{{b{Cb}}{b{hn}}}A`}{{{b{Bj}}{b{hn}}}A`}{cc{}}0000{{{b{c}}}c{}}``{{}c{}}0000{c{{Af{C`}}}{{Al{Aj}}}}```{{{b{C`}}c}BfCh}{{{b{Bl}}c}BfCh}{{{b{Cf}}c}BfCh}{{{b{Cb}}c}BfCh}{{{b{Bj}}c}BfCh}{{}{{Af{Bn}}}}{bc{}}{c{{Bf{e}}}{}{}}0000{{}{{Bf{c}}}{}}0000{bBh}0000{{}c{}}0000`````{{bd}f}00{{{b{Cj}}Cl}{{Af{Cn}}}}`{b{{b{c}}}{}}000{{{b{h}}}{{b{hc}}}{}}000{{{b{D`}}}D`}{{{b{Cj}}}Cj}{{{b{Db}}}Db}{{b{b{hc}}}f{}}00{{bl}f}00``{c{{Bf{D`}}}Cd}{{{b{D`}}{b{hn}}}A`}{{{b{Cj}}{b{hn}}}A`}{{{b{Db}}{b{hn}}}A`}{cc{}}000{{{b{c}}}c{}}00{{{b{Cj}}{b{Cl}}c}{{Dh{{Df{Dd}}}}}Dj}{{}c{}}000{{{b{Dl}}}Dn}{{j{b{D`}}}{{Af{Cj}}}}`````{Dl{{Af{f}}}}{{{b{hDb}}{E`{cegi}}}{{Dh{{Df{Dd}}}}}{{Ef{}{{Eb{{b{Ed}}}}}}Eh}{{Ef{}{{Eb{{b{Ed}}}}}}Eh}{{Ef{}{{Eb{{b{Ed}}}}}}Eh}{{Ef{}{{Eb{{b{Ed}}}}}}Eh}}{{{b{D`}}c}BfCh}2{{D`Cj}{{Af{Dl}}}}{bc{}}00{c{{Bf{e}}}{}{}}000{{}{{Bf{c}}}{}}000{bBh}000{{}c{}}000```````````{{bd}f}000``{b{{b{c}}}{}}0000{{{b{h}}}{{b{hc}}}{}}0000`{{{b{Ej}}}Ej}{{{b{El}}}El}{{{b{En}}}En}{{{b{F`}}}F`}{{b{b{hc}}}f{}}000{{bl}f}000{{}{{b{Ej}}}}{{}Ej}{c{{Bf{Ej}}}Cd}{c{{Bf{El}}}Cd}{c{{Bf{En}}}Cd}{c{{Bf{F`}}}Cd}`{{{b{El}}{b{El}}}Ah}{{b{b{c}}}Ah{}}00{{{b{Ej}}{b{hn}}}A`}{{{b{El}}{b{hn}}}A`}{{{b{El}}{b{hn}}}{{Bf{fFb}}}}{{{b{En}}{b{hn}}}A`}{{{b{F`}}{b{hn}}}A`}{cc{}}0000{{{b{c}}}c{}}000{{{b{Fd}}}{{Ad{Dn}}}}0{{}c{}}0000````{Fd{{Af{f}}}}{{{b{Ej}}c}BfCh}{{{b{El}}c}BfCh}{{{b{En}}c}BfCh}{{{b{F`}}c}BfCh}4{{{Ad{En}}{Ad{F`}}EjFf}{{Af{Fd}}}}{bc{}}000{bFh}{c{{Bf{e}}}{}{}}0000{{}{{Bf{c}}}{}}0000{bBh}0000{{}c{}}0000`{{bd}f}{b{{b{c}}}{}}{{{b{h}}}{{b{hc}}}{}}{{{b{Fj}}}Fj}{{b{b{hc}}}f{}}{{bl}f}{{}Fj}``````{{{b{Fj}}{b{hn}}}A`}{cc{}}{{{b{c}}}c{}}````{{}f}{{}c{}}{{{b{Fj}}}{{Gb{{G`{{b{Fl}}{b{Fn}}}}}}}}{{}{{b{Fl}}}}``````{bc{}}{c{{Bf{e}}}{}{}}{{}{{Bf{c}}}{}}{bBh}{{}c{}}`{b{{b{c}}}{}}{{{b{h}}}{{b{hc}}}{}}<9{Gd{{Af{f}}}}{C`{{Af{f}}}}1{{C`j}{{Af{Gd}}}}8765`{{bd}f}54{{{b{Ff}}}Ff}{{b{b{hc}}}f{}}{{bl}f}`{cc{}}{{{b{c}}}c{}}{{}c{}}`{bc{}}{c{{Bf{e}}}{}{}}{{}{{Bf{c}}}{}}{bBh}{{}c{}}","D":"Oj","p":[[1,"reference",null,null,1],[5,"Private",365],[1,"unit"],[0,"mut"],[5,"ZoneStore",0,366],[1,"u8"],[5,"Formatter",367],[8,"Result",367],[5,"SignedPacket",368],[6,"Option",369,null,1],[8,"Result",370],[1,"bool"],[5,"Path",371],[10,"AsRef",372],[5,"Name",373],[6,"RecordType",374],[5,"RecordSet",375],[5,"Arc",376,null,1],[6,"Result",377,null,1],[5,"TypeId",378],[6,"BootstrapOption",29],[5,"StoreConfig",29],[5,"PathBuf",371],[5,"Config",29],[5,"MainlineConfig",29],[10,"Deserializer",379],[5,"MetricsConfig",29],[10,"Serializer",380],[5,"DnsHandler",116],[5,"Request",381],[5,"Bytes",382],[5,"DnsConfig",116],[5,"Handle",116],[10,"Future",383,null,1],[5,"Box",384,null,1],[5,"Pin",385],[10,"ResponseHandler",386],[5,"DnsServer",116],[6,"SocketAddr",387],[5,"MessageResponse",388],[17,"Item"],[5,"Record",389],[10,"Iterator",390],[10,"Send",391],[6,"RateLimitConfig",191,392],[6,"CertMode",191,393],[5,"HttpConfig",191],[5,"HttpsConfig",191],[5,"Error",367],[5,"HttpServer",191],[5,"AppState",348],[5,"String",394],[5,"Metrics",299],[1,"str"],[10,"Any",378],[1,"tuple",null,null,1],[5,"IntoIter",395],[5,"Server",335]],"r":[[0,366],[191,393],[198,392]],"b":[[231,"impl-Default-for-%26RateLimitConfig"],[232,"impl-Default-for-RateLimitConfig"],[243,"impl-Debug-for-CertMode"],[244,"impl-Display-for-CertMode"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAPAAIAACAAUACgAAAAwAAAAYAAQAJQAAACgADAA2AAgAQwAEAE0AAABZAAQAXwAUAHkAAgB+ABAAkQADAJkAAwCpAAEArQASAMsAAwDRAAkA3AARAO8ACAD9AAMADQEDABMBGAAtAQ0APAEEAEMBDABRAQEAWQEDAF4BBQBmAQAAaQEEAA==","P":[[2,"T"],[4,""],[5,"T"],[6,""],[10,"T"],[12,""],[16,"U"],[18,""],[19,""],[20,""],[23,"T"],[24,"U,T"],[25,"U"],[26,""],[27,"V"],[28,""],[39,"T"],[49,""],[50,"T"],[51,""],[57,"__D"],[62,""],[71,"T"],[79,"U"],[84,""],[88,"__S"],[93,""],[94,"T"],[95,"U,T"],[100,"U"],[105,""],[110,"V"],[120,""],[125,"T"],[133,""],[136,"T"],[139,""],[144,"__D"],[145,""],[148,"T"],[155,"R"],[156,"U"],[160,""],[168,",,,"],[169,"__S"],[170,""],[172,"T"],[175,"U,T"],[179,"U"],[183,""],[187,"V"],[202,""],[208,"T"],[219,""],[223,"T"],[227,""],[233,"__D"],[238,""],[239,"K"],[242,""],[247,"T"],[256,""],[258,"U"],[267,""],[268,"__S"],[272,""],[274,"T"],[278,""],[279,"U,T"],[284,"U"],[289,""],[294,"V"],[300,""],[301,"T"],[303,""],[304,"T"],[305,""],[314,"T"],[320,""],[321,"U"],[322,""],[330,"T"],[331,"U,T"],[332,"U"],[333,""],[334,"V"],[336,"T"],[339,"U"],[340,""],[344,"U,T"],[345,"U"],[346,""],[347,"V"],[349,""],[350,"T"],[352,""],[353,"T"],[354,""],[356,"T"],[358,"U"],[360,"T"],[361,"U,T"],[362,"U"],[363,""],[364,"V"]]}],["iroh_net_report",{"t":"FFFFFFFNHNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNOOONNNOONNNNNNNNNNNNNNOOOOOONNOONNHOOONNOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNN","n":["Addr","Client","Metrics","Options","QuicConfig","RelayLatencies","Report","addr","bind_local_stun_socket","borrow","","","","","","","borrow_mut","","","","","","","captive_portal","client_config","clone","","","","","clone_into","","","","","clone_to_uninit","","","","","default","","","","deref","","","","","","","deref_mut","","","","","","","disabled","drop","","","","","","","ep","eq","","equivalent","","","","","","fmt","","","","","","","","from","","","","","","","get_report","get_report_channel","get_report_with_opts","global_v4","global_v6","hair_pinning","https","icmp_v4","icmp_v6","icmpv4","icmpv6","init","","","","","","","into","","","","","","","ipv4","","ipv4_can_send","ipv6","","ipv6_can_send","iter","","mapping_varies_by_dest_ip","mapping_varies_by_dest_ipv6","name","new","os_has_ipv6","","portmap_probe","preferred_relay","quic_config","receive_stun_packet","relay_latency","relay_v4_latency","relay_v6_latency","reports","reports_full","stun_packets_dropped","stun_packets_recv_ipv4","stun_packets_recv_ipv6","stun_packets_sent_ipv4","stun_packets_sent_ipv6","stun_v4","stun_v6","to_owned","","","","","to_string","try_from","","","","","","","try_into","","","","","","","type_id","","","","","","","udp","vzip","","","","","",""],"q":[[0,"iroh_net_report"],[180,"netwatch::ip_family"],[181,"tokio_util::sync::cancellation_token"],[182,"netwatch::udp"],[183,"alloc::sync"],[184,"core::option"],[185,"iroh_net_report::metrics"],[186,"iroh_net_report::reportgen"],[187,"core::fmt"],[188,"iroh_relay::relay_map"],[189,"anyhow"],[190,"tokio::sync::oneshot"],[191,"core::any"],[192,"alloc::vec::into_iter"],[193,"iroh_base::relay_url"],[194,"core::time"],[195,"core::iter::traits::iterator"],[196,"portmapper"],[197,"hickory_resolver::resolver"],[198,"bytes::bytes"],[199,"core::net::socket_addr"],[200,"alloc::string"],[201,"core::result"],[202,"iroh_net_report::stun_utils"]],"i":"```````b`AdAfAhAj4B`f543261034543205432054320532154326105432610154326104323332225433261054326106663331113354326105432610433433523356`3331033355555551154320354326105432610543261035432610","f":"```````{{{d{b}}}f}{{hfj}{{A`{{n{l}}}}}}{d{{d{c}}}{}}000000{{{d{Ab}}}{{d{Abc}}}{}}000000``{{{d{Ad}}}Ad}{{{d{Af}}}Af}{{{d{Ah}}}Ah}{{{d{Aj}}}Aj}{{{d{f}}}f}{{d{d{Abc}}}Al{}}0000{{dAn}Al}0000{{}Ad}{{}Ah}{{}Aj}{{}B`}{Bb{{d{c}}}{}}000000{Bb{{d{Abc}}}{}}0000002{BbAl}000000`{{{d{Ah}}{d{Ah}}}Bd}{{{d{Aj}}{d{Aj}}}Bd}{{d{d{c}}}Bd{}}00000{{{d{Ad}}{d{AbBf}}}Bh}{{{d{Af}}{d{AbBf}}}Bh}{{{d{Ah}}{d{AbBf}}}Bh}0{{{d{Aj}}{d{AbBf}}}Bh}{{{d{b}}{d{AbBf}}}Bh}{{{d{B`}}{d{AbBf}}}Bh}{{{d{f}}{d{AbBf}}}Bh}{cc{}}000000{{{d{Abb}}Bj{A`{{n{l}}}}{A`{{n{l}}}}{A`{Af}}}{{Bl{{n{Ah}}}}}}{{{d{Abb}}BjB`}{{Bl{{Bn{{Bl{{n{Ah}}}}}}}}}}{{{d{Abb}}BjB`}{{Bl{{n{Ah}}}}}}```{{B`Bd}B`}00``{{}Bb}000000{{}c{}}000000``````{{{d{Ad}}}{{Cf{{Cd{{d{C`}}{d{Cb}}}}}}}}{{{d{Aj}}}{{`{{Cn{}{{Ch{{Cd{{d{Cj}}Cl}}}}}}}}}}``{{}{{d{C`}}}}{{{A`{D`}}Db}{{Bl{b}}}}{{}Bd}```{{B`{A`{Af}}}B`}{{{d{f}}DdDf}Al}``````````{{B`{A`{{n{l}}}}}B`}0{dc{}}0000{dDh}{c{{Dj{e}}}{}{}}000000{{}{{Dj{c}}}{}}000000{dDl}000000`{{}c{}}000000","D":"Gj","p":[[5,"Client",0],[1,"reference",null,null,1],[5,"Addr",0],[6,"IpFamily",180],[5,"CancellationToken",181],[5,"UdpSocket",182],[5,"Arc",183,null,1],[6,"Option",184,null,1],[0,"mut"],[5,"Metrics",0,185],[5,"QuicConfig",0,186],[5,"Report",0],[5,"RelayLatencies",0],[1,"unit"],[1,"u8"],[5,"Options",0],[1,"usize"],[1,"bool"],[5,"Formatter",187],[8,"Result",187],[5,"RelayMap",188],[8,"Result",189],[5,"Receiver",190],[1,"str"],[10,"Any",191],[1,"tuple",null,null,1],[5,"IntoIter",192],[17,"Item"],[5,"RelayUrl",193],[5,"Duration",194],[10,"Iterator",195],[5,"Client",196],[8,"TokioResolver",197],[5,"Bytes",198],[6,"SocketAddr",199],[5,"String",200],[6,"Result",201,null,1],[5,"TypeId",191]],"r":[[2,185],[4,186],[8,202]],"b":[[77,"impl-Display-for-Report"],[78,"impl-Debug-for-Report"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAHcACgAKAA0AGgAgADwABgBEAA8AZgAGAHoAAAB+AAAAiQAGAJIAGgCuAAYA","P":[[9,"T"],[25,""],[30,"T"],[35,""],[44,"T"],[58,""],[69,"K"],[75,""],[83,"T"],[90,""],[108,"U"],[121,""],[145,"T"],[150,""],[151,"U,T"],[158,"U"],[165,""],[173,"V"]]}],["iroh_relay",{"t":"EFFFNNNNNNCNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNOCCONNCOONNNNNNNNNNNNNNONNNNPPFFGPPPPPPPPPPPPPPPPPPGPPPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOSSSSSSGSSPPNNNNNNNNNNNNNNNNNNNNNNNCCCSHSPGPPPPPPPPGFPPPPPPPPPPPGFPFPPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNCHHNHHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNSSSSSSFNNNNNNNNNNNNNNNGFSPFPGFPFFPFFFFFPFOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNOOOONONNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOONNNNNNNNNNNNNONNNNNNNNNNNNNONNNNNNNNNNNNNONONNONNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNOOOONNOOONNNNNONOOONONOOOOOONNNONNCONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNOOOHHHHHH","n":["MAX_PACKET_SIZE","RelayMap","RelayNode","RelayQuicConfig","borrow","","","borrow_mut","","","client","clone","","","clone_into","","","clone_to_uninit","","","cmp","","compare","","contains_node","default","default_from_node","defaults","deref","","","deref_mut","","","deserialize","","drop","","","empty","eq","","","equivalent","","","","","","","","","fmt","","","","","from","","","from_nodes","from_url","get_node","http","init","","","into","","","is_empty","len","nodes","partial_cmp","","port","protos","quic","","serialize","","server","stun_only","stun_port","to_owned","","","to_string","","try_from","","","try_into","","","type_id","","","url","urls","vzip","","","ActorGone","Build","Client","ClientBuilder","ClientError","Closed","ConnectTimeout","DialIO","Dns","Health","Http","Hyper","IPDisabled","InvalidUrl","KeepAlive","NoLocalAddr","NodeGone","Ping","PingAborted","PingTimeout","Pong","Proxy","Receive","ReceivedMessage","ReceivedPacket","Send","ServerRestarting","UnexpectedStatusCode","Upgrade","WebsocketError","address_family_selector","borrow","","","","borrow_mut","","","","build","clone","clone_into","clone_to_uninit","close","connect","deref","","","","deref_mut","","","","drop","","","","finish_ping","fmt","","","","","from","","","","","","","","init","","","","insecure_skip_cert_verify","into","","","","is_connected","is_prober","key_cache_capacity","local_addr","make_dangerous_client_config","new","note_preferred","protocol","proxy_url","recv","send","send_pong","server_public_key","server_url","source","start_ping","to_owned","to_string","try_from","","","","try_into","","","","type_id","","","","vzip","","","","data","problem","reconnect_in","remote_node_id","try_for","DEFAULT_HTTPS_PORT","DEFAULT_HTTP_PORT","DEFAULT_KEY_CACHE_CAPACITY","DEFAULT_METRICS_PORT","DEFAULT_RELAY_QUIC_PORT","DEFAULT_STUN_PORT","Protocol","RELAY_PATH","RELAY_PROBE_PATH","Relay","Websocket","borrow","borrow_mut","clone","clone_into","clone_to_uninit","deref","deref_mut","drop","eq","equivalent","","","fmt","from","init","into","parse_header","to_owned","try_from","try_into","type_id","upgrade_header","vzip","disco","relay","stun","MAGIC","looks_like_disco_wrapper","MAX_PACKET_SIZE","AlternateServer","Error","ErrorCode","ErrorResponse","Fingerprint","Indication","InvalidFingerprint","InvalidMessage","MalformedAttrs","MappedAddress","MessageClass","MessageDecoder","MessageIntegrity","MessageIntegritySha256","NoFingerprint","Nonce","NotBinding","NotSuccessResponse","PasswordAlgorithm","PasswordAlgorithms","Realm","Request","Software","StunAttribute","StunDecodeError","SuccessResponse","TransactionId","Unknown","UnknownAttributes","UserHash","UserName","XorMappedAddress","as_alternate_server","as_bytes","as_error_code","as_fingerprint","as_mapped_address","as_message_integrity","as_message_integrity_sha256","as_nonce","as_password_algorithm","as_password_algorithms","as_realm","as_ref","as_software","as_unknown","as_unknown_attributes","as_user_hash","as_user_name","as_xor_mapped_address","attribute_type","borrow","","","","","","borrow_mut","","","","","","clone","","","","clone_into","","","","clone_to_uninit","","","","cmp","compare","decode","default","","deref","","","","","","","deref_mut","","","","","","drop","","","","","","eq","","equivalent","","","","","","expect_alternate_server","expect_error_code","expect_fingerprint","expect_mapped_address","expect_message_integrity","expect_message_integrity_sha256","expect_nonce","expect_password_algorithm","expect_password_algorithms","expect_realm","expect_software","expect_unknown","expect_unknown_attributes","expect_user_hash","expect_user_name","expect_xor_mapped_address","fmt","","","","","","","","","from","","","","","","","","","","","","","","","","","","","","","","","","get_context","hash","init","","","","","","into","","","","","","is","is_alternate_server","is_error_code","is_fingerprint","is_mapped_address","is_message_integrity","is_message_integrity_sha256","is_nonce","is_password_algorithm","is_password_algorithms","is_realm","is_software","is_unknown","is_unknown_attributes","is_user_hash","is_user_name","is_xor_mapped_address","methods","parse_binding_request","parse_response","partial_cmp","request","response","to_owned","","","","to_string","","","try_from","","","","","","","try_into","","","","","","type_id","","","","","","vzip","","","","","","BINDING","RESERVED","SHARED_SECRET","ALPN_QUIC_ADDR_DISC","QUIC_ADDR_DISC_CLOSE_CODE","QUIC_ADDR_DISC_CLOSE_REASON","QuicClient","borrow","borrow_mut","deref","deref_mut","drop","fmt","from","get_addr_and_latency","init","into","new","try_from","try_into","type_id","vzip","CertConfig","ClientConnRateLimit","DEFAULT_CERT_RELOAD_INTERVAL","LetsEncrypt","Limits","Manual","MaybeTlsStreamServer","Metrics","Plain","QuicConfig","RelayConfig","Reloading","ReloadingResolver","Server","ServerConfig","StunConfig","StunMetrics","Tls","TlsConfig","accept_conn_burst","accept_conn_limit","accepts","bad_requests","bind_addr","","borrow","","","","","","","","","","","","","borrow_mut","","","","","","","","","","","","","bytes_per_second","bytes_recv","bytes_sent","cert","certificates","client_rx","clone","","","clone_into","","","clone_to_uninit","","","conns_rx_ratelimited_total","default","","","","deref","","","","","","","","","","","","","","deref_mut","","","","","","","","","","","","","disco_packets_dropped","disco_packets_recv","disco_packets_sent","disconnects","drop","","","","","","","","","","","","","failures","fmt","","","","","","","","","","","","","frames_rx_ratelimited_total","from","","","","","","","","","","","","","got_ping","http_addr","http_bind_addr","http_url","https_addr","https_bind_addr","https_url","init","","","","","","","","","","","","","","into","","","","","","","","","","","","","ipv4_success","ipv6_success","iter","","key_cache_capacity","limits","max_burst_bytes","metrics_addr","name","","other_packets_dropped","other_packets_recv","other_packets_sent","poll_flush","poll_read","poll_shutdown","poll_write","poll_write_vectored","quic","quic_addr","quic_bind_addr","relay","relay_accepts","reload","requests","resolve","send_packets_dropped","send_packets_recv","send_packets_sent","sent_pong","server_config","","shutdown","","spawn","stun","stun_addr","task_handle","testing","tls","to_owned","","","try_from","","","","","","","","","","","","","try_into","","","","","","","","","","","","","type_id","","","","","","","","","","","","","unique_client_keys","unknown_frames","vzip","","","","","","","","","","","","","websocket_accepts","certs","state","quic_config","relay_config","self_signed_tls_certs_and_config","server_config","stun_config","tls_config"],"q":[[0,"iroh_relay"],[103,"iroh_relay::client"],[217,"iroh_relay::client::ReceivedMessage"],[222,"iroh_relay::defaults"],[228,"iroh_relay::http"],[256,"iroh_relay::protos"],[259,"iroh_relay::protos::disco"],[261,"iroh_relay::protos::relay"],[262,"iroh_relay::protos::stun"],[487,"iroh_relay::protos::stun::methods"],[490,"iroh_relay::quic"],[509,"iroh_relay::server"],[784,"iroh_relay::server::CertConfig"],[786,"iroh_relay::server::testing"],[792,"iroh_relay::relay_map"],[793,"core::cmp"],[794,"iroh_base::relay_url"],[795,"core::result"],[796,"serde::de"],[797,"core::fmt"],[798,"anyhow"],[799,"alloc::sync"],[800,"core::convert"],[801,"core::iter::traits::collect"],[802,"core::option"],[803,"core::iter::traits::iterator"],[804,"serde::ser"],[805,"alloc::string"],[806,"core::any"],[807,"core::ops::function"],[808,"core::marker"],[809,"iroh_base::key"],[810,"hickory_resolver::resolver"],[811,"iroh_relay::client::conn"],[812,"hyper::error"],[813,"http::error"],[814,"tokio_tungstenite_wasm::error"],[815,"std::io::error"],[816,"core::net::socket_addr"],[817,"rustls::client::client_conn"],[818,"url"],[819,"bytes::bytes"],[820,"core::error"],[821,"core::time"],[822,"core::future::future"],[823,"http::header::value"],[824,"stun_rs::attributes"],[825,"stun_rs::attributes::stun::alternate_server"],[826,"stun_rs::error"],[827,"stun_rs::types"],[828,"stun_rs::attributes::stun::error_code"],[829,"stun_rs::attributes::stun::fingerprint"],[830,"stun_rs::attributes::stun::mapped_address"],[831,"stun_rs::attributes::stun::message_integrity"],[832,"stun_rs::attributes::stun::message_integrity_sha256"],[833,"stun_rs::attributes::stun::nonce"],[834,"stun_rs::attributes::stun::password_algorithm"],[835,"stun_rs::attributes::stun::password_algorithms"],[836,"stun_rs::attributes::stun::realm"],[837,"stun_rs::attributes::stun::software"],[838,"stun_rs::attributes::unknown"],[839,"stun_rs::attributes::stun::unknown_attributes"],[840,"stun_rs::attributes::stun::user_hash"],[841,"stun_rs::attributes::stun::user_name"],[842,"stun_rs::attributes::stun::xor_mapped_address"],[843,"stun_rs::context"],[844,"stun_rs::message"],[845,"core::hash"],[846,"alloc::vec"],[847,"iroh_quinn::endpoint"],[848,"rustls_pki_types"],[849,"iroh_relay::server::metrics"],[850,"core::default"],[851,"iroh_relay::server::resolver"],[852,"rustls::crypto::signer"],[853,"reloadable_core"],[854,"alloc::vec::into_iter"],[855,"core::pin"],[856,"core::task::wake"],[857,"core::task::poll"],[858,"tokio::io::read_buf"],[859,"std::io"],[860,"rustls::server::server_conn"],[861,"tokio_util::task::abort_on_drop"],[862,"stun_rs"],[863,"stun_rs::methods"]],"i":"````fhj210`2102102101010202`21021010210221022211100022110210222`210210222100``110`112102121021021012210Dh0```0000Df1111010011011`010111Cf12Dd12301122200230123012301023301233333012301123010110`10110001130232301230123012301NjNlNn20`````````Eh000000000000000000000000``````Fn`0Ih10Jb002``22020022212``1`222222Gd33333333303333333If3142In14253014251425142522112142253014253014253042444222555555555555555514225330014222555555555555555553012142530142530`5555555555555555```2``14252301442530142530142530142530```````Jj00000000000000```Ll`0``Lb``1`````0`Kn0KbKdLfLh32L`6KhLd43Lj8Kf;Jn985;43762:1<019920:9819819819984:9855;43762:1<0985;43762:1<09999985;43762:1<08985;43762:1<09985;43762:1<090300209855;43762:1<0985;43762:1<08898331498999;;;;;40249585999962500400`3981985;43762:1<0985;43762:1<0985;43762:1<099985;43762:1<09O`Ob``````","f":"````{b{{b{c}}}{}}00{{{b{d}}}{{b{dc}}}{}}00`{{{b{f}}}f}{{{b{h}}}h}{{{b{j}}}j}{{b{b{dc}}}l{}}00{{bn}l}00{{{b{h}}{b{h}}}A`}{{{b{j}}{b{j}}}A`}{{b{b{c}}}A`{}}0{{{b{f}}{b{Ab}}}Ad}{{}j}{{AbAf}f}`{Ah{{b{c}}}{}}00{Ah{{b{dc}}}{}}00{c{{Aj{h}}}Al}{c{{Aj{j}}}Al}{Ahl}00{{}f}{{{b{f}}{b{f}}}Ad}{{{b{h}}{b{h}}}Ad}{{{b{j}}{b{j}}}Ad}{{b{b{c}}}Ad{}}00000000{{{b{f}}{b{dAn}}}B`}0{{{b{h}}{b{dAn}}}B`}0{{{b{j}}{b{dAn}}}B`}{cc{}}00{e{{Bb{f}}}{{Bf{{Bd{h}}}}}{{Bj{}{{Bh{c}}}}}}{Abf}{{{b{f}}{b{Ab}}}{{Bl{{b{{Bd{h}}}}}}}}`{{}Ah}00{{}c{}}00{{{b{f}}}Ad}{{{b{f}}}Ah}{{{b{f}}}{{`{{Bn{}{{Bh{{b{{Bd{h}}}}}}}}}}}}{{{b{h}}{b{h}}}{{Bl{A`}}}}{{{b{j}}{b{j}}}{{Bl{A`}}}}````{{{b{h}}c}AjC`}{{{b{j}}c}AjC`}```{bc{}}00{bCb}0{c{{Aj{e}}}{}{}}00{{}{{Aj{c}}}{}}00{bCd}00`{{{b{f}}}{{`{{Bn{}{{Bh{{b{Ab}}}}}}}}}}{{}c{}}00``````````````````````````````{{Cfc}Cf{{Cj{}{{Ch{Ad}}}}ClCn}}{b{{b{c}}}{}}000{{{b{d}}}{{b{dc}}}{}}000{{CfD`Db}Dd}{{{b{Df}}}Df}{{b{b{dc}}}l{}}{{bn}l}{Ddl}{{{b{dDd}}}{{Aj{lDh}}}}{Ah{{b{c}}}{}}000{Ah{{b{dc}}}{}}000{Ahl}000{{{b{dDd}}{Dj{n}}}l}{{{b{Df}}{b{dAn}}}B`}{{{b{Dh}}{b{dAn}}}B`}0{{{b{Dd}}{b{dAn}}}B`}{{{b{Cf}}{b{dAn}}}B`}{cc{}}{DlDh}{DnDh}{E`Dh}3{EbDh}44{{}Ah}000{{CfAd}Cf}{{}c{}}000{{{b{Dd}}}Ad}2{{CfAh}Cf}{{{b{Dd}}}{{Bl{Ed}}}}{{}Ef}{cCf{{Bf{Ab}}}}{{{b{dDd}}Ad}l}{{CfEh}Cf}{{CfEj}Cf}{{{b{dDd}}}{{Bl{{Aj{DfDh}}}}}}{{{b{dDd}}ElEn}{{Aj{lDh}}}}{{{b{dDd}}{Dj{n}}}{{Aj{lDh}}}}{{CfF`}Cf}{{Cfc}Cf{{Bf{Ab}}}}{{{b{Dh}}}{{Bl{{b{Fb}}}}}}{{{b{dDd}}}{{Aj{{`{{Ff{}{{Ch{{Aj{FdDh}}}}}}ClCn}}Dh}}}}{bc{}}{bCb}{c{{Aj{e}}}{}{}}000{{}{{Aj{c}}}{}}000{bCd}000{{}c{}}000````````````````{b{{b{c}}}{}}{{{b{d}}}{{b{dc}}}{}}{{{b{Eh}}}Eh}{{b{b{dc}}}l{}}{{bn}l}{Ah{{b{c}}}{}}{Ah{{b{dc}}}{}}{Ahl}{{{b{Eh}}{b{Eh}}}Ad}{{b{b{c}}}Ad{}}00{{{b{Eh}}{b{dAn}}}B`}{cc{}}{{}Ah}{{}c{}}{{{b{Fh}}}{{Bl{Eh}}}}{bc{}}{c{{Aj{e}}}{}{}}{{}{{Aj{c}}}{}}{bCd}{{{b{Eh}}}{{b{Fj}}}}{{}c{}}````{{{b{{Fl{n}}}}}Ad}`````````````````````````````````{{{b{Fn}}}{{Aj{{b{G`}}Gb}}}}{{{b{Gd}}}{{b{{Dj{n}}}}}}{{{b{Fn}}}{{Aj{{b{Gf}}Gb}}}}{{{b{Fn}}}{{Aj{{b{Gh}}Gb}}}}{{{b{Fn}}}{{Aj{{b{Gj}}Gb}}}}{{{b{Fn}}}{{Aj{{b{Gl}}Gb}}}}{{{b{Fn}}}{{Aj{{b{Gn}}Gb}}}}{{{b{Fn}}}{{Aj{{b{H`}}Gb}}}}{{{b{Fn}}}{{Aj{{b{Hb}}Gb}}}}{{{b{Fn}}}{{Aj{{b{Hd}}Gb}}}}{{{b{Fn}}}{{Aj{{b{Hf}}Gb}}}}{{{b{Gd}}}{{b{{Fl{n}}}}}}{{{b{Fn}}}{{Aj{{b{Hh}}Gb}}}}{{{b{Fn}}}{{Aj{{b{Hj}}Gb}}}}{{{b{Fn}}}{{Aj{{b{Hl}}Gb}}}}{{{b{Fn}}}{{Aj{{b{Hn}}Gb}}}}{{{b{Fn}}}{{Aj{{b{I`}}Gb}}}}{{{b{Fn}}}{{Aj{{b{Ib}}Gb}}}}{{{b{Fn}}}Id}{b{{b{c}}}{}}00000{{{b{d}}}{{b{dc}}}{}}00000{{{b{If}}}If}{{{b{Ih}}}Ih}{{{b{Gd}}}Gd}{{{b{Fn}}}Fn}{{b{b{dc}}}l{}}000{{bn}l}000{{{b{Gd}}{b{Gd}}}A`}{{b{b{c}}}A`{}}{{{b{If}}{b{{Fl{n}}}}}{{Aj{{Il{IjAh}}In}}}}{{}If}{{}Gd}{Ah{{b{c}}}{}}0{{{b{Gd}}}{{b{{Fl{n}}}}}}1111{Ah{{b{dc}}}{}}00000{Ahl}00000{{{b{Ih}}{b{Ih}}}Ad}{{{b{Gd}}{b{Gd}}}Ad}{{b{b{c}}}Ad{}}00000{{{b{Fn}}}{{b{G`}}}}{{{b{Fn}}}{{b{Gf}}}}{{{b{Fn}}}{{b{Gh}}}}{{{b{Fn}}}{{b{Gj}}}}{{{b{Fn}}}{{b{Gl}}}}{{{b{Fn}}}{{b{Gn}}}}{{{b{Fn}}}{{b{H`}}}}{{{b{Fn}}}{{b{Hb}}}}{{{b{Fn}}}{{b{Hd}}}}{{{b{Fn}}}{{b{Hf}}}}{{{b{Fn}}}{{b{Hh}}}}{{{b{Fn}}}{{b{Hj}}}}{{{b{Fn}}}{{b{Hl}}}}{{{b{Fn}}}{{b{Hn}}}}{{{b{Fn}}}{{b{I`}}}}{{{b{Fn}}}{{b{Ib}}}}{{{b{If}}{b{dAn}}}{{Aj{lJ`}}}}{{{b{Ih}}{b{dAn}}}{{Aj{lJ`}}}}{{{b{Gd}}{b{dAn}}}{{Aj{lJ`}}}}0{{{b{Fn}}{b{dAn}}}{{Aj{lJ`}}}}{{{b{Jb}}{b{dAn}}}B`}0{{{b{In}}{b{dAn}}}{{Aj{lJ`}}}}0{cc{}}0{{{b{{Dj{n}}}}}Gd}{{{Dj{n}}}Gd}2{HfFn}3{H`Fn}{HbFn}{GnFn}{HjFn}{GlFn}{HdFn}{I`Fn}{HnFn}{GhFn}{HhFn}{G`Fn}{GjFn}{HlFn}{IbFn}{GfFn}{cc{}}0{{{b{If}}}{{Bl{{b{Jd}}}}}}{{{b{Gd}}{b{dc}}}lJf}{{}Ah}00000{{}c{}}00000{{{b{{Fl{n}}}}}Ad}{{{b{Fn}}}Ad}000000000000000`{{{b{{Fl{n}}}}}{{Aj{GdJb}}}}{{{b{{Fl{n}}}}}{{Aj{{Il{GdEd}}Jb}}}}{{{b{Gd}}{b{Gd}}}{{Bl{A`}}}}{Gd{{Jh{n}}}}{{GdEd}{{Jh{n}}}}{bc{}}000{bCb}00{c{{Aj{e}}}{}{}}{n{{Aj{Ih}}}}11111{{}{{Aj{c}}}{}}00000{bCd}00000{{}c{}}00000```````{b{{b{c}}}{}}{{{b{d}}}{{b{dc}}}{}}{Ah{{b{c}}}{}}{Ah{{b{dc}}}{}}{Ahl}{{{b{Jj}}{b{dAn}}}B`}{cc{}}{{{b{Jj}}Ed{b{Fj}}}{{Bb{{Il{EdFd}}}}}}{{}Ah}{{}c{}}{{JlEf}{{Bb{Jj}}}}?=<;`````````````````````````:::::::::::::9999999999999````{{{b{Jn}}}{{Bl{{Jh{K`}}}}}}`{{{b{Kb}}}Kb}{{{b{Kd}}}Kd}{{{b{Kf}}}Kf}{{b{b{dc}}}l{}}00{{bn}l}00`{{}Kb}{{}Kd}{{}{{Kh{ce}}}{KjKl}{KjKl}}{{}Kn}{Ah{{b{c}}}{}}00{{{b{{L`{c}}}}}{{b{e}}}Cl{}}1111111111{Ah{{b{dc}}}{}}000000000000````{Ahl}000000000000`{{{b{Kb}}{b{dAn}}}B`}{{{b{Kd}}{b{dAn}}}B`}{{{b{{L`{c}}}}{b{dAn}}}B`{KlCl}}{{{b{Lb}}{b{dAn}}}B`}{{{b{{Kh{ce}}}}{b{dAn}}}B`KlKl}{{{b{{Ld{ce}}}}{b{dAn}}}B`KlKl}{{{b{Lf}}{b{dAn}}}B`}{{{b{Lh}}{b{dAn}}}B`}{{{b{{Lj{ce}}}}{b{dAn}}}B`KlKl}{{{b{Kn}}{b{dAn}}}B`}{{{b{Kf}}{b{dAn}}}B`}{{{b{{Ll{ce}}}}{b{dAn}}}B`KlKl}{{{b{Jn}}{b{dAn}}}B`}`{cc{}}000000000000`{{{b{Jn}}}{{Bl{Ed}}}}`{{{b{Jn}}}{{Bl{Ab}}}}1`0{{}Ah}00{{cFd}{{Bb{{L`{c}}}}}{Cl{Mb{}{{Ln{M`}}}}}}1111111111{{}c{}}000000000000``{{{b{Kb}}}{{Mf{{Il{{b{Fj}}{b{Md}}}}}}}}{{{b{Kd}}}{{Mf{{Il{{b{Fj}}{b{Md}}}}}}}}````{{}{{b{Fj}}}}0```{{{Mh{{b{dLb}}}}{b{dMj}}}{{Ml{{Aj{lEb}}}}}}{{{Mh{{b{dLb}}}}{b{dMj}}{b{dMn}}}{{Ml{{N`{l}}}}}}1{{{Mh{{b{dLb}}}}{b{dMj}}{b{{Fl{n}}}}}{{Ml{{Aj{AhEb}}}}}}{{{Mh{{b{dLb}}}}{b{dMj}}{b{{Fl{Nb}}}}}{{Ml{{Aj{AhEb}}}}}}`;```{{{b{{L`{c}}}}}l{Cl{Mb{}{{Ln{M`}}}}}}`{{{b{{L`{c}}}}Nd}{{Bl{{Bd{M`}}}}}{{Mb{}{{Ln{M`}}}}ClKl}}``````{{{L`{c}}}l{Cl{Mb{}{{Ln{M`}}}}}}{Jn{{Bb{l}}}}{{{Kh{ce}}}{{Bb{Jn}}}KlKl}`{{{b{Jn}}}{{Bl{Ed}}}}{{{b{dJn}}}{{b{d{Nf{{Bb{l}}}}}}}}``{bc{}}00{c{{Aj{e}}}{}{}}000000000000{{}{{Aj{c}}}{}}000000000000{bCd}000000000000``{{}c{}}000000000000```{{}Lh}{{}{{Ld{l}}}}{{}{{Il{{Jh{K`}}Nh}}}}{{}{{Kh{l}}}}{{}Lf}{{}{{Lj{l}}}}","D":"BJn","p":[[1,"reference",null,null,1],[0,"mut"],[5,"RelayMap",0,792],[5,"RelayNode",0,792],[5,"RelayQuicConfig",0,792],[1,"unit"],[1,"u8"],[6,"Ordering",793],[5,"RelayUrl",794],[1,"bool"],[1,"u16"],[1,"usize"],[6,"Result",795,null,1],[10,"Deserializer",796],[5,"Formatter",797],[8,"Result",797],[8,"Result",798],[5,"Arc",799,null,1],[10,"Into",800],[17,"Item"],[10,"IntoIterator",801],[6,"Option",802,null,1],[10,"Iterator",803],[10,"Serializer",804],[5,"String",805],[5,"TypeId",806],[5,"ClientBuilder",103],[17,"Output"],[10,"Fn",807],[10,"Send",808],[10,"Sync",808],[5,"SecretKey",809],[8,"TokioResolver",810],[5,"Client",103],[6,"ReceivedMessage",103,811],[6,"ClientError",103],[1,"array"],[5,"Error",812],[5,"Error",813],[6,"Error",814],[5,"Error",815],[6,"SocketAddr",816],[5,"ClientConfig",817],[6,"Protocol",228],[5,"Url",818],[8,"NodeId",809],[5,"Bytes",819],[5,"PublicKey",809],[10,"Error",820],[5,"Duration",821],[10,"Future",822,null,1],[5,"HeaderValue",823],[1,"str"],[1,"slice"],[6,"StunAttribute",262,824],[5,"AlternateServer",825],[5,"StunError",826],[5,"TransactionId",262,827],[5,"ErrorCode",828],[6,"Fingerprint",829],[5,"MappedAddress",830],[6,"MessageIntegrity",831],[6,"MessageIntegritySha256",832],[5,"Nonce",833],[5,"PasswordAlgorithm",834],[5,"PasswordAlgorithms",835],[5,"Realm",836],[5,"Software",837],[5,"Unknown",838],[5,"UnknownAttributes",839],[5,"UserHash",840],[5,"UserName",841],[5,"XorMappedAddress",842],[5,"AttributeType",824],[5,"MessageDecoder",262,843],[6,"MessageClass",262,844],[5,"StunMessage",844],[1,"tuple",null,null,1],[5,"StunDecodeError",262,826],[5,"Error",797],[6,"Error",262],[5,"DecoderContext",843],[10,"Hasher",845],[5,"Vec",846],[5,"QuicClient",490],[5,"Endpoint",847],[5,"Server",509],[5,"CertificateDer",848],[5,"Metrics",509,849],[5,"StunMetrics",509,849],[5,"ClientConnRateLimit",509],[5,"ServerConfig",509],[10,"Default",850],[10,"Debug",797],[5,"Limits",509],[5,"ReloadingResolver",509,851],[6,"MaybeTlsStreamServer",509],[5,"RelayConfig",509],[5,"StunConfig",509],[5,"QuicConfig",509],[5,"TlsConfig",509],[6,"CertConfig",509],[17,"Value"],[5,"CertifiedKey",852],[10,"Loader",853],[10,"Any",806],[5,"IntoIter",854],[5,"Pin",855],[5,"Context",856],[6,"Poll",857],[5,"ReadBuf",858],[8,"Result",815],[5,"IoSlice",859],[5,"ClientHello",860],[5,"AbortOnDropHandle",861],[5,"ServerConfig",860],[15,"ReceivedPacket",217],[15,"Health",217],[15,"ServerRestarting",217],[15,"Manual",784],[15,"LetsEncrypt",784]],"r":[[0,261],[1,792],[2,792],[3,792],[126,811],[272,844],[273,843],[285,824],[286,826],[288,827],[449,862],[487,863],[488,863],[489,863],[511,851],[516,849],[521,851],[525,849]],"b":[[52,"impl-Display-for-RelayMap"],[53,"impl-Debug-for-RelayMap"],[54,"impl-Display-for-RelayNode"],[55,"impl-Debug-for-RelayNode"],[162,"impl-Debug-for-ClientError"],[163,"impl-Display-for-ClientError"],[167,"impl-From%3CError%3E-for-ClientError"],[168,"impl-From%3CError%3E-for-ClientError"],[169,"impl-From%3CError%3E-for-ClientError"],[171,"impl-From%3CError%3E-for-ClientError"],[387,"impl-Display-for-TransactionId"],[388,"impl-Debug-for-TransactionId"],[390,"impl-Display-for-Error"],[391,"impl-Debug-for-Error"],[392,"impl-Debug-for-StunDecodeError"],[393,"impl-Display-for-StunDecodeError"],[396,"impl-From%3C%26%5Bu8;+stun_rs::::types::%7Bimpl%2313%7D::%7Bconstant%230%7D%5D%3E-for-TransactionId"],[397,"impl-From%3C%5Bu8;+stun_rs::::types::%7Bimpl%2314%7D::%7Bconstant%230%7D%5D%3E-for-TransactionId"],[399,"impl-From%3CRealm%3E-for-StunAttribute"],[401,"impl-From%3CNonce%3E-for-StunAttribute"],[402,"impl-From%3CPasswordAlgorithm%3E-for-StunAttribute"],[403,"impl-From%3CMessageIntegritySha256%3E-for-StunAttribute"],[404,"impl-From%3CUnknown%3E-for-StunAttribute"],[405,"impl-From%3CMessageIntegrity%3E-for-StunAttribute"],[406,"impl-From%3CPasswordAlgorithms%3E-for-StunAttribute"],[407,"impl-From%3CUserName%3E-for-StunAttribute"],[408,"impl-From%3CUserHash%3E-for-StunAttribute"],[409,"impl-From%3CFingerprint%3E-for-StunAttribute"],[410,"impl-From%3CSoftware%3E-for-StunAttribute"],[411,"impl-From%3CAlternateServer%3E-for-StunAttribute"],[412,"impl-From%3CMappedAddress%3E-for-StunAttribute"],[413,"impl-From%3CUnknownAttributes%3E-for-StunAttribute"],[414,"impl-From%3CXorMappedAddress%3E-for-StunAttribute"],[415,"impl-From%3CErrorCode%3E-for-StunAttribute"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAMEBMwABAAAABQAFAAwADAAaAAAAHQAKACkAEABBAAIASgABAFAAAQBVAA0AZQACAIcABwCQAAIAlQALAKIABACoAAIArAAAAK8AAwDGAAAAyAARAOoADAD4AAAA+wADAAABAAAyAQAAOgEZAFUBAABXARoAggEIAI0BAQCQAQAAkgEOAKQBBgDFAQAAyAEfAO8BBQD3AQAA+gEDABcCGQA3AggAQQIeAGQCDAByAgwAlAICAJgCCQCxAgEAtwIBALwCBADIAgAA1wIpAAMDDAA=","P":[[4,"T"],[11,""],[14,"T"],[17,""],[22,"K"],[24,""],[28,"T"],[34,"__D"],[36,""],[43,"K"],[52,""],[57,"T"],[60,"I,"],[61,""],[67,"U"],[70,""],[79,"__S"],[84,"T"],[87,""],[89,"U,T"],[92,"U"],[95,""],[100,"V"],[133,"S"],[134,"T"],[142,""],[144,"T"],[145,""],[148,"T"],[156,""],[166,"T"],[167,""],[170,"T"],[171,""],[172,"T"],[174,""],[179,"U"],[183,""],[188,""],[189,""],[196,""],[197,""],[199,"T"],[200,""],[201,"U,T"],[205,"U"],[209,""],[213,"V"],[233,"T"],[235,""],[236,"T"],[237,""],[238,"T"],[240,""],[242,"K"],[245,""],[246,"T"],[247,""],[248,"U"],[249,""],[250,"T"],[251,"U,T"],[252,"U"],[253,""],[255,"V"],[260,""],[313,"T"],[325,""],[329,"T"],[333,""],[338,"K"],[339,""],[342,"T"],[344,""],[345,"T"],[355,""],[363,"K"],[369,""],[394,"T"],[396,""],[398,"T"],[399,""],[400,"T"],[401,""],[416,"T"],[418,""],[419,"__H"],[420,""],[426,"U"],[432,""],[455,"T"],[459,""],[462,"U,T"],[463,""],[464,"U,T"],[469,"U"],[475,""],[481,"V"],[494,"T"],[498,""],[500,"T"],[501,""],[503,"U"],[504,""],[505,"U,T"],[506,"U"],[507,""],[508,"V"],[534,"T"],[564,""],[569,"T"],[572,""],[578,"EC,EA"],[579,""],[580,"T"],[583,"Loader,Deref::Target"],[584,"T"],[611,""],[627,"Loader"],[628,""],[629,"EC,EA"],[631,""],[633,"EC,EA"],[634,""],[636,"EC,EA"],[637,""],[639,"T"],[653,""],[662,"Loader"],[663,""],[673,"U"],[688,""],[709,"Loader"],[719,""],[720,"EC,EA"],[722,""],[726,"T"],[729,"U,T"],[742,"U"],[755,""],[770,"V"],[786,""]]}],["iroh_test",{"t":"FQNNNNCNCNNNNHHHHH","n":["CallOnDrop","assert_eq_hex","borrow","borrow_mut","drop","from","hexdump","into","logging","new","try_from","try_into","type_id","parse_hexdump","print_hexdump","setup","setup_multithreaded","testing_subscriber"],"q":[[0,"iroh_test"],[13,"iroh_test::hexdump"],[15,"iroh_test::logging"],[18,"core::ops::function"],[19,"core::result"],[20,"core::any"],[21,"alloc::vec"],[22,"anyhow"],[23,"alloc::string"],[24,"core::convert"],[25,"tracing_core::dispatcher"],[26,"tracing_core::subscriber"]],"i":"``f000`0`0000`````","f":"``{b{{b{c}}}{}}{{{b{d}}}{{b{dc}}}{}}{{{b{df}}}h}{cc{}}`{{}c{}}`{cfj}{c{{l{e}}}{}{}}{{}{{l{c}}}{}}{bn}{{{b{A`}}}{{Af{{Ad{Ab}}}}}}{{ce}Ah{{Al{{Aj{Ab}}}}}{{Al{{Aj{An}}}}}}{{}B`}{{}h}{{}{{`{Bb}}}}","D":"Ad","p":[[1,"reference",null,null,1],[0,"mut"],[5,"CallOnDrop",0],[1,"unit"],[10,"FnOnce",18],[6,"Result",19,null,1],[5,"TypeId",20],[1,"str"],[1,"u8"],[5,"Vec",21],[8,"Result",22],[5,"String",23],[1,"slice"],[10,"AsRef",24],[1,"usize"],[5,"DefaultGuard",25],[10,"Subscriber",26]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAAgABAABAAAAAwACAAcAAAAKAAMA","P":[[2,"T"],[4,""],[5,"T"],[7,"U"],[9,""],[10,"U,T"],[11,"U"],[12,""],[14,","],[15,""]]}]]'));
if (typeof exports !== 'undefined') exports.searchIndex = searchIndex;
else if (window.initSearch) window.initSearch(searchIndex);
-//{"start":39,"fragment_lengths":[500,60604,8260,6205,9917,4330,22447,1211]}
\ No newline at end of file
+//{"start":39,"fragment_lengths":[500,60604,8260,6205,9917,4330,22405,1211]}
\ No newline at end of file
diff --git a/pr/3069/docs/search.desc/iroh_relay/iroh_relay-desc-0-.js b/pr/3069/docs/search.desc/iroh_relay/iroh_relay-desc-0-.js
index dbb0c58333..6c9aa4ae36 100644
--- a/pr/3069/docs/search.desc/iroh_relay/iroh_relay-desc-0-.js
+++ b/pr/3069/docs/search.desc/iroh_relay/iroh_relay-desc-0-.js
@@ -1 +1 @@
-searchState.loadedDescShard("iroh_relay", 0, "Iroh’s relay is a feature within iroh, a peer-to-peer …\nConfiguration of all the relay servers that can be used.\nInformation on a specific relay server.\nConfiguration for speaking to the QUIC endpoint on the …\nExposes Client
, which allows to establish connections to a …\nIs this a known node?\nCreates a new RelayMap
with a single relay server …\nDefault values used in the relay.\nCreate an empty relay map.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nConstructs the RelayMap
from an iterator of RelayNode
s.\nReturns a RelayMap
from a RelayUrl
.\nGet the given node.\nHTTP-specific constants for the relay server and client.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nAre there any nodes in this map?\nHow many nodes are known?\nReturns an Iterator
over all known nodes.\nThe port on which the connection should be bound to.\nProtocols used by the iroh-relay\nCreate a QUIC server that accepts connections for QUIC …\nConfiguration to speak to the QUIC endpoint on the relay …\nA fully-fledged iroh-relay server over HTTP or HTTPS.\nWhether this relay server should only be used for STUN …\nThe stun port of the relay server.\nThe RelayUrl
where this relay server can be dialed.\nReturns the sorted relay URLs.\nThe inner actor is gone, likely means things are shutdown.\nThe relay super::client::Client
failed to build\nAn HTTP Relay client.\nBuild a Client.\nPossible connection errors on the Client
\nThe client is closed\nThere was a connection timeout error\nThere was an error dialing\nThere was an error with DNS resolution\nA one-way message from server to client, declaring the …\nThere was an http error http::Error
.\nThere was http server hyper::Error
\nBoth IPv4 and IPv6 are disabled for this relay node\nThe given Url
is invalid\nA one-way empty message from server to client, just to …\nNo local addresses exist\nIndicates that the client identified by the underlying …\nRequest from a client or server to reply to the other side …\nThe ping request was aborted\nThe ping request timed out\nReply to a ReceivedMessage::Ping
from a client or server …\nThe connection failed to proxy\nThere was an error receiving a packet\nThe messages received from a framed relay stream.\nRepresents an incoming packet.\nThere was an error sending a packet\nA one-way message from server to client, advertising that …\nThere was an unexpected status code\nThe connection failed to upgrade\nAn error related to websockets, either errors with parsing …\nReturns if we should prefer ipv6 it replaces the …\nBuild the Client
\nClose the http relay connection.\nDisconnect the http relay connection.\nConnects to a relay Server and returns the underlying …\nFinish a ping message\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nSkip the verification of the relay server’s SSL …\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nReturns true
if the underlying relay connection is …\nIndicates this client is a prober\nSet the capacity of the cache for public keys.\nGet the local addr of the connection. If there is no …\nCreates a client config that trusts any servers without …\nCreate a new ClientBuilder
\nLet the server know that this client is the preferred …\nSets whether to connect to the relay via websockets or not.\nSet an explicit proxy url to proxy all HTTP(S) traffic …\nThe public key for this client\nReads a message from the server.\nSend a packet to the server.\nSend a pong back to the server.\nThe expected PublicKey
of the relay server we are …\nSets the server url\nSend a ping to the server. Return once we get an expected …\nThe received packet bytes.\nIf set, is a description of why the connection is …\nAn advisory duration that the client should wait before …\nThe NodeId
of the packet sender.\nAn advisory duration for how long the client should …\nThe default HTTPS port used by the Relay server.\nThe default HTTP port used by the Relay server.\nThe default capacity of the key cache for the relay server.\nThe default metrics port used by the Relay server.\nThe default QUIC port used by the Relay server to accept …\nThe default STUN port used by the Relay server.\nThe HTTP upgrade protocol used for relaying.\nThe HTTP path under which the relay accepts relaying …\nThe HTTP path under which the relay allows doing latency …\nRelays over the custom relaying protocol with a custom …\nRelays over websockets.\nReturns the argument unchanged.\nCalls U::from(self)
.\nTries to match the value of an HTTP upgrade header to …\nThe HTTP upgrade header used or expected.\nThis module exports looks_like_disco_wrapper
as the only …\nThis module implements the relaying protocol used by the …\nSTUN packets sending and receiving.\nThe 6 byte header of all discovery messages.\nReports whether p looks like it’s a packet containing an …\nThe maximum size of a packet sent over relay. (This only …\nThe AlternateServer
atribute\nErrors that can occur when handling a STUN packet.\nThe ErrorCode
atribute\nerror response\nThe Fingerprint
atribute\nindication\nSTUN request had bogus fingerprint.\nThe STUN message could not be parsed or is otherwise …\nSTUN response has malformed attributes.\nThe MappedAddress
atribute\nThe STUN message class. Although there are four message …\nClass used to decode STUN messages\nThe MessageIntegrity
atribute\nThe MessageIntegritySha256
atribute\nSTUN request didn’t end in fingerprint.\nThe Nonce
atribute\nSTUN request is not a binding request when it should be.\nSTUN packet is not a response when it should be.\nThe PasswordAlgorithm
atribute\nThe PasswordAlgorithms
atribute\nThe Realm
atribute\nrequest\nThe Software
atribute\nSTUN Attributes that can be attached to a StunMessage
\nDescribes an error decoding a StunMessage
\nsuccess response\nThe transaction ID is a 96-bit identifier, used to …\nThe Unknown
atribute\nThe UnknownAttributes
atribute\nThe UserHash
atribute\nThe UserName
atribute\nThe XorMappedAddress
atribute\nReturns a reference to the internal attribute value or an …\nReturns a reference to the bytes that represents the …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns the STUN attribute type of this instance.\nDecodes the STUN raw buffer\nCreates a cryptographically random transaction ID chosen …\nReturns a reference to the AlternateServer
attribute.\nReturns a reference to the ErrorCode
attribute.\nReturns a reference to the Fingerprint
attribute.\nReturns a reference to the MappedAddress
attribute.\nReturns a reference to the MessageIntegrity
attribute.\nReturns a reference to the MessageIntegritySha256
…\nReturns a reference to the Nonce
attribute.\nReturns a reference to the PasswordAlgorithm
attribute.\nReturns a reference to the PasswordAlgorithms
attribute.\nReturns a reference to the Realm
attribute.\nReturns a reference to the Software
attribute.\nReturns a reference to the Unknown
attribute.\nReturns a reference to the UnknownAttributes
attribute.\nReturns a reference to the UserHash
attribute.\nReturns a reference to the UserName
attribute.\nReturns a reference to the XorMappedAddress
attribute.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nGets the context associated to this decoder\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nReports whether b is a STUN message.\nReturns true if this StunAttribute
is AlternateServer
\nReturns true if this StunAttribute
is ErrorCode
\nReturns true if this StunAttribute
is Fingerprint
\nReturns true if this StunAttribute
is MappedAddress
\nReturns true if this StunAttribute
is MessageIntegrity
\nReturns true if this StunAttribute
is …\nReturns true if this StunAttribute
is Nonce
\nReturns true if this StunAttribute
is PasswordAlgorithm
\nReturns true if this StunAttribute
is PasswordAlgorithms
\nReturns true if this StunAttribute
is Realm
\nReturns true if this StunAttribute
is Software
\nReturns true if this StunAttribute
is Unknown
\nReturns true if this StunAttribute
is UnknownAttributes
\nReturns true if this StunAttribute
is UserHash
\nReturns true if this StunAttribute
is UserName
\nReturns true if this StunAttribute
is XorMappedAddress
\nSTUN Methods Registry\nParses a STUN binding request.\nParses a successful binding response STUN packet. The IP …\nGenerates a binding request STUN packet.\nGenerates a binding response.\nBinding\nReserved\nShared secret\nALPN for our quic addr discovery\nEndpoint close error code\nEndpoint close reason\nHandles the client side of QUIC address discovery.\nReturns the argument unchanged.\nClient side of QUIC address discovery.\nCalls U::from(self)
.\nCreate a new QuicClient to handle the client side of QUIC …\nTLS certificate configuration.\nPer-client rate limit configuration.\nThe default certificate reload interval.\nUse Let’s Encrypt.\nRate limits.\nUse a static TLS key and certificate chain.\nThe main underlying IO stream type used for the relay …\nMetrics tracked for the relay server\nA plain non-Tls tokio::net::TcpStream
\nConfiguration for the QUIC server.\nConfiguration for the Relay HTTP and HTTPS server.\nUse a TLS key and certificate chain that can be reloaded.\nA Certificate resolver that reloads the certificate every …\nA running Relay + STUN server.\nConfiguration for the full Relay & STUN server.\nConfiguration for the STUN server.\nStunMetrics tracked for the relay server\nA Tls wrapped tokio::net::TcpStream
\nTLS configuration for Relay server.\nBurst limit for accepting new connection. Unlimited if not …\nRate limit for accepting new connection. Unlimited if not …\nNumber of connections we have accepted\nNumber of bad requests, either non-stun packets or …\nThe socket address on which the STUN server should bind.\nThe socket address on which the QUIC server should bind.\nMax number of bytes per second to read from the client …\nBytes received from a FrameType::SendPacket
\nBytes sent from a FrameType::SendPacket
\nMode for getting a cert.\nThe certificates chain if configured with manual TLS …\nRate limits for incoming traffic from a client connection.\nNumber of client connections which have had any frames …\nFrameType::SendPacket
dropped that are disco messages\nFrameType::SendPacket
received that are disco messages\nFrameType::SendPacket
sent that are disco messages\nNumber of connections we have removed because of an error\nNumber of failures\nNumber of frames received from client connection which …\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nNumber of FrameType::Ping
s received\nThe socket address the HTTP server is listening on.\nThe socket address on which the Relay HTTP server should …\nGet the server’s http RelayUrl
.\nThe socket address the HTTPS server is listening on.\nThe socket address on which to serve the HTTPS server.\nGet the server’s https RelayUrl
.\nPerform the initial load and construct the …\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nNumber of successful requests over ipv4\nNumber of successful requests over ipv6\nKey cache capacity.\nRate limits.\nMax number of bytes to read in a single burst.\nSocket to serve metrics on.\nPackets of other FrameType
s dropped\nPackets of other FrameType
s received\nPackets of other FrameType
s sent\nConfiguration for the QUIC server, disabled if None
.\nThe socket address the QUIC server is listening on.\nThe socket address on which to server the QUIC server is …\nConfiguration for the Relay server, disabled if None
.\nNumber of accepted ‘iroh derp http’ connection upgrades\nReload the certificate.\nNumber of stun requests made\nFrameType::SendPacket
dropped, that are not disco messages\nFrameType::SendPacket
received, that are not disco messages\nFrameType::SendPacket
sent, that are not disco messages\nNumber of FrameType::Pong
s sent\nThe TLS server configuration for the QUIC server.\nThe server configuration.\nShutdown the resolver.\nRequests graceful shutdown.\nStarts the server.\nConfiguration for the STUN server, disabled if None
.\nThe socket address the STUN server is listening on.\nReturns the handle for the task.\nExposes functions to quickly configure a server suitable …\nTLS configuration for the HTTPS server.\nNumber of unique client keys per day\nNumber of FrameType::Unknown
received\nNumber of accepted websocket connections\nThe TLS certificate chain.\nState for Let’s Encrypt certificates.\nCreates a QuicConfig
suitable for testing.\nCreates a RelayConfig
suitable for testing.\nCreates a rustls::ServerConfig
and certificates suitable …\nCreates a ServerConfig
suitable for testing.\nCreates a StunConfig
suitable for testing.\nCreates a TlsConfig
suitable for testing.")
\ No newline at end of file
+searchState.loadedDescShard("iroh_relay", 0, "Iroh’s relay is a feature within iroh, a peer-to-peer …\nConfiguration of all the relay servers that can be used.\nInformation on a specific relay server.\nConfiguration for speaking to the QUIC endpoint on the …\nExposes Client
, which allows to establish connections to a …\nIs this a known node?\nCreates a new RelayMap
with a single relay server …\nDefault values used in the relay.\nCreate an empty relay map.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nConstructs the RelayMap
from an iterator of RelayNode
s.\nReturns a RelayMap
from a RelayUrl
.\nGet the given node.\nHTTP-specific constants for the relay server and client.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nAre there any nodes in this map?\nHow many nodes are known?\nReturns an Iterator
over all known nodes.\nThe port on which the connection should be bound to.\nProtocols used by the iroh-relay\nCreate a QUIC server that accepts connections for QUIC …\nConfiguration to speak to the QUIC endpoint on the relay …\nA fully-fledged iroh-relay server over HTTP or HTTPS.\nWhether this relay server should only be used for STUN …\nThe stun port of the relay server.\nThe RelayUrl
where this relay server can be dialed.\nReturns the sorted relay URLs.\nThe inner actor is gone, likely means things are shutdown.\nThe relay super::client::Client
failed to build\nAn HTTP Relay client.\nBuild a Client.\nPossible connection errors on the Client
\nThe client is closed\nThere was a connection timeout error\nThere was an error dialing\nThere was an error with DNS resolution\nA one-way message from server to client, declaring the …\nThere was an http error http::Error
.\nThere was http server hyper::Error
\nBoth IPv4 and IPv6 are disabled for this relay node\nThe given Url
is invalid\nA one-way empty message from server to client, just to …\nNo local addresses exist\nIndicates that the client identified by the underlying …\nRequest from a client or server to reply to the other side …\nThe ping request was aborted\nThe ping request timed out\nReply to a ReceivedMessage::Ping
from a client or server …\nThe connection failed to proxy\nThere was an error receiving a packet\nThe messages received from a framed relay stream.\nRepresents an incoming packet.\nThere was an error sending a packet\nA one-way message from server to client, advertising that …\nThere was an unexpected status code\nThe connection failed to upgrade\nAn error related to websockets, either errors with parsing …\nReturns if we should prefer ipv6 it replaces the …\nBuild the Client
\nClose the http relay connection.\nConnects to a relay Server and returns the underlying …\nFinish a ping message\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nSkip the verification of the relay server’s SSL …\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nReturns true
if the underlying relay connection is …\nIndicates this client is a prober\nSet the capacity of the cache for public keys.\nGet the local addr of the connection. If there is no …\nCreates a client config that trusts any servers without …\nCreate a new ClientBuilder
\nLet the server know that this client is the preferred …\nSets whether to connect to the relay via websockets or not.\nSet an explicit proxy url to proxy all HTTP(S) traffic …\nReads a message from the server.\nSend a packet to the server.\nSend a pong back to the server.\nThe expected PublicKey
of the relay server we are …\nSets the server url\nSend a ping to the server. Return once we get an expected …\nThe received packet bytes.\nIf set, is a description of why the connection is …\nAn advisory duration that the client should wait before …\nThe NodeId
of the packet sender.\nAn advisory duration for how long the client should …\nThe default HTTPS port used by the Relay server.\nThe default HTTP port used by the Relay server.\nThe default capacity of the key cache for the relay server.\nThe default metrics port used by the Relay server.\nThe default QUIC port used by the Relay server to accept …\nThe default STUN port used by the Relay server.\nThe HTTP upgrade protocol used for relaying.\nThe HTTP path under which the relay accepts relaying …\nThe HTTP path under which the relay allows doing latency …\nRelays over the custom relaying protocol with a custom …\nRelays over websockets.\nReturns the argument unchanged.\nCalls U::from(self)
.\nTries to match the value of an HTTP upgrade header to …\nThe HTTP upgrade header used or expected.\nThis module exports looks_like_disco_wrapper
as the only …\nThis module implements the relaying protocol used by the …\nSTUN packets sending and receiving.\nThe 6 byte header of all discovery messages.\nReports whether p looks like it’s a packet containing an …\nThe maximum size of a packet sent over relay. (This only …\nThe AlternateServer
atribute\nErrors that can occur when handling a STUN packet.\nThe ErrorCode
atribute\nerror response\nThe Fingerprint
atribute\nindication\nSTUN request had bogus fingerprint.\nThe STUN message could not be parsed or is otherwise …\nSTUN response has malformed attributes.\nThe MappedAddress
atribute\nThe STUN message class. Although there are four message …\nClass used to decode STUN messages\nThe MessageIntegrity
atribute\nThe MessageIntegritySha256
atribute\nSTUN request didn’t end in fingerprint.\nThe Nonce
atribute\nSTUN request is not a binding request when it should be.\nSTUN packet is not a response when it should be.\nThe PasswordAlgorithm
atribute\nThe PasswordAlgorithms
atribute\nThe Realm
atribute\nrequest\nThe Software
atribute\nSTUN Attributes that can be attached to a StunMessage
\nDescribes an error decoding a StunMessage
\nsuccess response\nThe transaction ID is a 96-bit identifier, used to …\nThe Unknown
atribute\nThe UnknownAttributes
atribute\nThe UserHash
atribute\nThe UserName
atribute\nThe XorMappedAddress
atribute\nReturns a reference to the internal attribute value or an …\nReturns a reference to the bytes that represents the …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns the STUN attribute type of this instance.\nDecodes the STUN raw buffer\nCreates a cryptographically random transaction ID chosen …\nReturns a reference to the AlternateServer
attribute.\nReturns a reference to the ErrorCode
attribute.\nReturns a reference to the Fingerprint
attribute.\nReturns a reference to the MappedAddress
attribute.\nReturns a reference to the MessageIntegrity
attribute.\nReturns a reference to the MessageIntegritySha256
…\nReturns a reference to the Nonce
attribute.\nReturns a reference to the PasswordAlgorithm
attribute.\nReturns a reference to the PasswordAlgorithms
attribute.\nReturns a reference to the Realm
attribute.\nReturns a reference to the Software
attribute.\nReturns a reference to the Unknown
attribute.\nReturns a reference to the UnknownAttributes
attribute.\nReturns a reference to the UserHash
attribute.\nReturns a reference to the UserName
attribute.\nReturns a reference to the XorMappedAddress
attribute.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nGets the context associated to this decoder\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nReports whether b is a STUN message.\nReturns true if this StunAttribute
is AlternateServer
\nReturns true if this StunAttribute
is ErrorCode
\nReturns true if this StunAttribute
is Fingerprint
\nReturns true if this StunAttribute
is MappedAddress
\nReturns true if this StunAttribute
is MessageIntegrity
\nReturns true if this StunAttribute
is …\nReturns true if this StunAttribute
is Nonce
\nReturns true if this StunAttribute
is PasswordAlgorithm
\nReturns true if this StunAttribute
is PasswordAlgorithms
\nReturns true if this StunAttribute
is Realm
\nReturns true if this StunAttribute
is Software
\nReturns true if this StunAttribute
is Unknown
\nReturns true if this StunAttribute
is UnknownAttributes
\nReturns true if this StunAttribute
is UserHash
\nReturns true if this StunAttribute
is UserName
\nReturns true if this StunAttribute
is XorMappedAddress
\nSTUN Methods Registry\nParses a STUN binding request.\nParses a successful binding response STUN packet. The IP …\nGenerates a binding request STUN packet.\nGenerates a binding response.\nBinding\nReserved\nShared secret\nALPN for our quic addr discovery\nEndpoint close error code\nEndpoint close reason\nHandles the client side of QUIC address discovery.\nReturns the argument unchanged.\nClient side of QUIC address discovery.\nCalls U::from(self)
.\nCreate a new QuicClient to handle the client side of QUIC …\nTLS certificate configuration.\nPer-client rate limit configuration.\nThe default certificate reload interval.\nUse Let’s Encrypt.\nRate limits.\nUse a static TLS key and certificate chain.\nThe main underlying IO stream type used for the relay …\nMetrics tracked for the relay server\nA plain non-Tls tokio::net::TcpStream
\nConfiguration for the QUIC server.\nConfiguration for the Relay HTTP and HTTPS server.\nUse a TLS key and certificate chain that can be reloaded.\nA Certificate resolver that reloads the certificate every …\nA running Relay + STUN server.\nConfiguration for the full Relay & STUN server.\nConfiguration for the STUN server.\nStunMetrics tracked for the relay server\nA Tls wrapped tokio::net::TcpStream
\nTLS configuration for Relay server.\nBurst limit for accepting new connection. Unlimited if not …\nRate limit for accepting new connection. Unlimited if not …\nNumber of connections we have accepted\nNumber of bad requests, either non-stun packets or …\nThe socket address on which the STUN server should bind.\nThe socket address on which the QUIC server should bind.\nMax number of bytes per second to read from the client …\nBytes received from a FrameType::SendPacket
\nBytes sent from a FrameType::SendPacket
\nMode for getting a cert.\nThe certificates chain if configured with manual TLS …\nRate limits for incoming traffic from a client connection.\nNumber of client connections which have had any frames …\nFrameType::SendPacket
dropped that are disco messages\nFrameType::SendPacket
received that are disco messages\nFrameType::SendPacket
sent that are disco messages\nNumber of connections we have removed because of an error\nNumber of failures\nNumber of frames received from client connection which …\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nNumber of FrameType::Ping
s received\nThe socket address the HTTP server is listening on.\nThe socket address on which the Relay HTTP server should …\nGet the server’s http RelayUrl
.\nThe socket address the HTTPS server is listening on.\nThe socket address on which to serve the HTTPS server.\nGet the server’s https RelayUrl
.\nPerform the initial load and construct the …\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nNumber of successful requests over ipv4\nNumber of successful requests over ipv6\nKey cache capacity.\nRate limits.\nMax number of bytes to read in a single burst.\nSocket to serve metrics on.\nPackets of other FrameType
s dropped\nPackets of other FrameType
s received\nPackets of other FrameType
s sent\nConfiguration for the QUIC server, disabled if None
.\nThe socket address the QUIC server is listening on.\nThe socket address on which to server the QUIC server is …\nConfiguration for the Relay server, disabled if None
.\nNumber of accepted ‘iroh derp http’ connection upgrades\nReload the certificate.\nNumber of stun requests made\nFrameType::SendPacket
dropped, that are not disco messages\nFrameType::SendPacket
received, that are not disco messages\nFrameType::SendPacket
sent, that are not disco messages\nNumber of FrameType::Pong
s sent\nThe TLS server configuration for the QUIC server.\nThe server configuration.\nShutdown the resolver.\nRequests graceful shutdown.\nStarts the server.\nConfiguration for the STUN server, disabled if None
.\nThe socket address the STUN server is listening on.\nReturns the handle for the task.\nExposes functions to quickly configure a server suitable …\nTLS configuration for the HTTPS server.\nNumber of unique client keys per day\nNumber of FrameType::Unknown
received\nNumber of accepted websocket connections\nThe TLS certificate chain.\nState for Let’s Encrypt certificates.\nCreates a QuicConfig
suitable for testing.\nCreates a RelayConfig
suitable for testing.\nCreates a rustls::ServerConfig
and certificates suitable …\nCreates a ServerConfig
suitable for testing.\nCreates a StunConfig
suitable for testing.\nCreates a TlsConfig
suitable for testing.")
\ No newline at end of file
diff --git a/pr/3069/docs/src/iroh_relay/client.rs.html b/pr/3069/docs/src/iroh_relay/client.rs.html
index 548b0b68ad..e2ebf00915 100644
--- a/pr/3069/docs/src/iroh_relay/client.rs.html
+++ b/pr/3069/docs/src/iroh_relay/client.rs.html
@@ -981,19 +981,7 @@
980
981
982
-983
-984
-985
-986
-987
-988
-989
-990
-991
-992
-993
-994
-995
Client
, which allows to establish connections to a …\nIs this a known node?\nCreates a new RelayMap
with a single relay server …\nDefault values used in the relay.\nCreate an empty relay map.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nConstructs the RelayMap
from an iterator of RelayNode
s.\nReturns a RelayMap
from a RelayUrl
.\nGet the given node.\nHTTP-specific constants for the relay server and client.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nAre there any nodes in this map?\nHow many nodes are known?\nReturns an Iterator
over all known nodes.\nThe port on which the connection should be bound to.\nProtocols used by the iroh-relay\nCreate a QUIC server that accepts connections for QUIC …\nConfiguration to speak to the QUIC endpoint on the relay …\nA fully-fledged iroh-relay server over HTTP or HTTPS.\nWhether this relay server should only be used for STUN …\nThe stun port of the relay server.\nThe RelayUrl
where this relay server can be dialed.\nReturns the sorted relay URLs.\nThe inner actor is gone, likely means things are shutdown.\nThe relay super::client::Client
failed to build\nAn HTTP Relay client.\nBuild a Client.\nPossible connection errors on the Client
\nThe client is closed\nThere was a connection timeout error\nThere was an error dialing\nThere was an error with DNS resolution\nA one-way message from server to client, declaring the …\nThere was an http error http::Error
.\nThere was http server hyper::Error
\nBoth IPv4 and IPv6 are disabled for this relay node\nThe given Url
is invalid\nA one-way empty message from server to client, just to …\nNo local addresses exist\nIndicates that the client identified by the underlying …\nRequest from a client or server to reply to the other side …\nThe ping request was aborted\nThe ping request timed out\nReply to a ReceivedMessage::Ping
from a client or server …\nThe connection failed to proxy\nThere was an error receiving a packet\nThe messages received from a framed relay stream.\nRepresents an incoming packet.\nThere was an error sending a packet\nA one-way message from server to client, advertising that …\nThere was an unexpected status code\nThe connection failed to upgrade\nAn error related to websockets, either errors with parsing …\nReturns if we should prefer ipv6 it replaces the …\nBuild the Client
\nClose the http relay connection.\nDisconnect the http relay connection.\nConnects to a relay Server and returns the underlying …\nFinish a ping message\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nSkip the verification of the relay server’s SSL …\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nReturns true
if the underlying relay connection is …\nIndicates this client is a prober\nSet the capacity of the cache for public keys.\nGet the local addr of the connection. If there is no …\nCreates a client config that trusts any servers without …\nCreate a new ClientBuilder
\nLet the server know that this client is the preferred …\nSets whether to connect to the relay via websockets or not.\nSet an explicit proxy url to proxy all HTTP(S) traffic …\nThe public key for this client\nReads a message from the server.\nSend a packet to the server.\nSend a pong back to the server.\nThe expected PublicKey
of the relay server we are …\nSets the server url\nSend a ping to the server. Return once we get an expected …\nThe received packet bytes.\nIf set, is a description of why the connection is …\nAn advisory duration that the client should wait before …\nThe NodeId
of the packet sender.\nAn advisory duration for how long the client should …\nThe default HTTPS port used by the Relay server.\nThe default HTTP port used by the Relay server.\nThe default capacity of the key cache for the relay server.\nThe default metrics port used by the Relay server.\nThe default QUIC port used by the Relay server to accept …\nThe default STUN port used by the Relay server.\nThe HTTP upgrade protocol used for relaying.\nThe HTTP path under which the relay accepts relaying …\nThe HTTP path under which the relay allows doing latency …\nRelays over the custom relaying protocol with a custom …\nRelays over websockets.\nReturns the argument unchanged.\nCalls U::from(self)
.\nTries to match the value of an HTTP upgrade header to …\nThe HTTP upgrade header used or expected.\nThis module exports looks_like_disco_wrapper
as the only …\nThis module implements the relaying protocol used by the …\nSTUN packets sending and receiving.\nThe 6 byte header of all discovery messages.\nReports whether p looks like it’s a packet containing an …\nThe maximum size of a packet sent over relay. (This only …\nThe AlternateServer
atribute\nErrors that can occur when handling a STUN packet.\nThe ErrorCode
atribute\nerror response\nThe Fingerprint
atribute\nindication\nSTUN request had bogus fingerprint.\nThe STUN message could not be parsed or is otherwise …\nSTUN response has malformed attributes.\nThe MappedAddress
atribute\nThe STUN message class. Although there are four message …\nClass used to decode STUN messages\nThe MessageIntegrity
atribute\nThe MessageIntegritySha256
atribute\nSTUN request didn’t end in fingerprint.\nThe Nonce
atribute\nSTUN request is not a binding request when it should be.\nSTUN packet is not a response when it should be.\nThe PasswordAlgorithm
atribute\nThe PasswordAlgorithms
atribute\nThe Realm
atribute\nrequest\nThe Software
atribute\nSTUN Attributes that can be attached to a StunMessage
\nDescribes an error decoding a StunMessage
\nsuccess response\nThe transaction ID is a 96-bit identifier, used to …\nThe Unknown
atribute\nThe UnknownAttributes
atribute\nThe UserHash
atribute\nThe UserName
atribute\nThe XorMappedAddress
atribute\nReturns a reference to the internal attribute value or an …\nReturns a reference to the bytes that represents the …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns the STUN attribute type of this instance.\nDecodes the STUN raw buffer\nCreates a cryptographically random transaction ID chosen …\nReturns a reference to the AlternateServer
attribute.\nReturns a reference to the ErrorCode
attribute.\nReturns a reference to the Fingerprint
attribute.\nReturns a reference to the MappedAddress
attribute.\nReturns a reference to the MessageIntegrity
attribute.\nReturns a reference to the MessageIntegritySha256
…\nReturns a reference to the Nonce
attribute.\nReturns a reference to the PasswordAlgorithm
attribute.\nReturns a reference to the PasswordAlgorithms
attribute.\nReturns a reference to the Realm
attribute.\nReturns a reference to the Software
attribute.\nReturns a reference to the Unknown
attribute.\nReturns a reference to the UnknownAttributes
attribute.\nReturns a reference to the UserHash
attribute.\nReturns a reference to the UserName
attribute.\nReturns a reference to the XorMappedAddress
attribute.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nGets the context associated to this decoder\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nReports whether b is a STUN message.\nReturns true if this StunAttribute
is AlternateServer
\nReturns true if this StunAttribute
is ErrorCode
\nReturns true if this StunAttribute
is Fingerprint
\nReturns true if this StunAttribute
is MappedAddress
\nReturns true if this StunAttribute
is MessageIntegrity
\nReturns true if this StunAttribute
is …\nReturns true if this StunAttribute
is Nonce
\nReturns true if this StunAttribute
is PasswordAlgorithm
\nReturns true if this StunAttribute
is PasswordAlgorithms
\nReturns true if this StunAttribute
is Realm
\nReturns true if this StunAttribute
is Software
\nReturns true if this StunAttribute
is Unknown
\nReturns true if this StunAttribute
is UnknownAttributes
\nReturns true if this StunAttribute
is UserHash
\nReturns true if this StunAttribute
is UserName
\nReturns true if this StunAttribute
is XorMappedAddress
\nSTUN Methods Registry\nParses a STUN binding request.\nParses a successful binding response STUN packet. The IP …\nGenerates a binding request STUN packet.\nGenerates a binding response.\nBinding\nReserved\nShared secret\nALPN for our quic addr discovery\nEndpoint close error code\nEndpoint close reason\nHandles the client side of QUIC address discovery.\nReturns the argument unchanged.\nClient side of QUIC address discovery.\nCalls U::from(self)
.\nCreate a new QuicClient to handle the client side of QUIC …\nTLS certificate configuration.\nPer-client rate limit configuration.\nThe default certificate reload interval.\nUse Let’s Encrypt.\nRate limits.\nUse a static TLS key and certificate chain.\nThe main underlying IO stream type used for the relay …\nMetrics tracked for the relay server\nA plain non-Tls tokio::net::TcpStream
\nConfiguration for the QUIC server.\nConfiguration for the Relay HTTP and HTTPS server.\nUse a TLS key and certificate chain that can be reloaded.\nA Certificate resolver that reloads the certificate every …\nA running Relay + STUN server.\nConfiguration for the full Relay & STUN server.\nConfiguration for the STUN server.\nStunMetrics tracked for the relay server\nA Tls wrapped tokio::net::TcpStream
\nTLS configuration for Relay server.\nBurst limit for accepting new connection. Unlimited if not …\nRate limit for accepting new connection. Unlimited if not …\nNumber of connections we have accepted\nNumber of bad requests, either non-stun packets or …\nThe socket address on which the STUN server should bind.\nThe socket address on which the QUIC server should bind.\nMax number of bytes per second to read from the client …\nBytes received from a FrameType::SendPacket
\nBytes sent from a FrameType::SendPacket
\nMode for getting a cert.\nThe certificates chain if configured with manual TLS …\nRate limits for incoming traffic from a client connection.\nNumber of client connections which have had any frames …\nFrameType::SendPacket
dropped that are disco messages\nFrameType::SendPacket
received that are disco messages\nFrameType::SendPacket
sent that are disco messages\nNumber of connections we have removed because of an error\nNumber of failures\nNumber of frames received from client connection which …\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nNumber of FrameType::Ping
s received\nThe socket address the HTTP server is listening on.\nThe socket address on which the Relay HTTP server should …\nGet the server’s http RelayUrl
.\nThe socket address the HTTPS server is listening on.\nThe socket address on which to serve the HTTPS server.\nGet the server’s https RelayUrl
.\nPerform the initial load and construct the …\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nNumber of successful requests over ipv4\nNumber of successful requests over ipv6\nKey cache capacity.\nRate limits.\nMax number of bytes to read in a single burst.\nSocket to serve metrics on.\nPackets of other FrameType
s dropped\nPackets of other FrameType
s received\nPackets of other FrameType
s sent\nConfiguration for the QUIC server, disabled if None
.\nThe socket address the QUIC server is listening on.\nThe socket address on which to server the QUIC server is …\nConfiguration for the Relay server, disabled if None
.\nNumber of accepted ‘iroh derp http’ connection upgrades\nReload the certificate.\nNumber of stun requests made\nFrameType::SendPacket
dropped, that are not disco messages\nFrameType::SendPacket
received, that are not disco messages\nFrameType::SendPacket
sent, that are not disco messages\nNumber of FrameType::Pong
s sent\nThe TLS server configuration for the QUIC server.\nThe server configuration.\nShutdown the resolver.\nRequests graceful shutdown.\nStarts the server.\nConfiguration for the STUN server, disabled if None
.\nThe socket address the STUN server is listening on.\nReturns the handle for the task.\nExposes functions to quickly configure a server suitable …\nTLS configuration for the HTTPS server.\nNumber of unique client keys per day\nNumber of FrameType::Unknown
received\nNumber of accepted websocket connections\nThe TLS certificate chain.\nState for Let’s Encrypt certificates.\nCreates a QuicConfig
suitable for testing.\nCreates a RelayConfig
suitable for testing.\nCreates a rustls::ServerConfig
and certificates suitable …\nCreates a ServerConfig
suitable for testing.\nCreates a StunConfig
suitable for testing.\nCreates a TlsConfig
suitable for testing.")
\ No newline at end of file
+searchState.loadedDescShard("iroh_relay", 0, "Iroh’s relay is a feature within iroh, a peer-to-peer …\nConfiguration of all the relay servers that can be used.\nInformation on a specific relay server.\nConfiguration for speaking to the QUIC endpoint on the …\nExposes Client
, which allows to establish connections to a …\nIs this a known node?\nCreates a new RelayMap
with a single relay server …\nDefault values used in the relay.\nCreate an empty relay map.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nConstructs the RelayMap
from an iterator of RelayNode
s.\nReturns a RelayMap
from a RelayUrl
.\nGet the given node.\nHTTP-specific constants for the relay server and client.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nAre there any nodes in this map?\nHow many nodes are known?\nReturns an Iterator
over all known nodes.\nThe port on which the connection should be bound to.\nProtocols used by the iroh-relay\nCreate a QUIC server that accepts connections for QUIC …\nConfiguration to speak to the QUIC endpoint on the relay …\nA fully-fledged iroh-relay server over HTTP or HTTPS.\nWhether this relay server should only be used for STUN …\nThe stun port of the relay server.\nThe RelayUrl
where this relay server can be dialed.\nReturns the sorted relay URLs.\nThe inner actor is gone, likely means things are shutdown.\nThe relay super::client::Client
failed to build\nAn HTTP Relay client.\nBuild a Client.\nPossible connection errors on the Client
\nThe client is closed\nThere was a connection timeout error\nThere was an error dialing\nThere was an error with DNS resolution\nA one-way message from server to client, declaring the …\nThere was an http error http::Error
.\nThere was http server hyper::Error
\nBoth IPv4 and IPv6 are disabled for this relay node\nThe given Url
is invalid\nA one-way empty message from server to client, just to …\nNo local addresses exist\nIndicates that the client identified by the underlying …\nRequest from a client or server to reply to the other side …\nThe ping request was aborted\nThe ping request timed out\nReply to a ReceivedMessage::Ping
from a client or server …\nThe connection failed to proxy\nThere was an error receiving a packet\nThe messages received from a framed relay stream.\nRepresents an incoming packet.\nThere was an error sending a packet\nA one-way message from server to client, advertising that …\nThere was an unexpected status code\nThe connection failed to upgrade\nAn error related to websockets, either errors with parsing …\nReturns if we should prefer ipv6 it replaces the …\nBuild the Client
\nClose the http relay connection.\nConnects to a relay Server and returns the underlying …\nFinish a ping message\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nSkip the verification of the relay server’s SSL …\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nReturns true
if the underlying relay connection is …\nIndicates this client is a prober\nSet the capacity of the cache for public keys.\nGet the local addr of the connection. If there is no …\nCreates a client config that trusts any servers without …\nCreate a new ClientBuilder
\nLet the server know that this client is the preferred …\nSets whether to connect to the relay via websockets or not.\nSet an explicit proxy url to proxy all HTTP(S) traffic …\nReads a message from the server.\nSend a packet to the server.\nSend a pong back to the server.\nThe expected PublicKey
of the relay server we are …\nSets the server url\nSend a ping to the server. Return once we get an expected …\nThe received packet bytes.\nIf set, is a description of why the connection is …\nAn advisory duration that the client should wait before …\nThe NodeId
of the packet sender.\nAn advisory duration for how long the client should …\nThe default HTTPS port used by the Relay server.\nThe default HTTP port used by the Relay server.\nThe default capacity of the key cache for the relay server.\nThe default metrics port used by the Relay server.\nThe default QUIC port used by the Relay server to accept …\nThe default STUN port used by the Relay server.\nThe HTTP upgrade protocol used for relaying.\nThe HTTP path under which the relay accepts relaying …\nThe HTTP path under which the relay allows doing latency …\nRelays over the custom relaying protocol with a custom …\nRelays over websockets.\nReturns the argument unchanged.\nCalls U::from(self)
.\nTries to match the value of an HTTP upgrade header to …\nThe HTTP upgrade header used or expected.\nThis module exports looks_like_disco_wrapper
as the only …\nThis module implements the relaying protocol used by the …\nSTUN packets sending and receiving.\nThe 6 byte header of all discovery messages.\nReports whether p looks like it’s a packet containing an …\nThe maximum size of a packet sent over relay. (This only …\nThe AlternateServer
atribute\nErrors that can occur when handling a STUN packet.\nThe ErrorCode
atribute\nerror response\nThe Fingerprint
atribute\nindication\nSTUN request had bogus fingerprint.\nThe STUN message could not be parsed or is otherwise …\nSTUN response has malformed attributes.\nThe MappedAddress
atribute\nThe STUN message class. Although there are four message …\nClass used to decode STUN messages\nThe MessageIntegrity
atribute\nThe MessageIntegritySha256
atribute\nSTUN request didn’t end in fingerprint.\nThe Nonce
atribute\nSTUN request is not a binding request when it should be.\nSTUN packet is not a response when it should be.\nThe PasswordAlgorithm
atribute\nThe PasswordAlgorithms
atribute\nThe Realm
atribute\nrequest\nThe Software
atribute\nSTUN Attributes that can be attached to a StunMessage
\nDescribes an error decoding a StunMessage
\nsuccess response\nThe transaction ID is a 96-bit identifier, used to …\nThe Unknown
atribute\nThe UnknownAttributes
atribute\nThe UserHash
atribute\nThe UserName
atribute\nThe XorMappedAddress
atribute\nReturns a reference to the internal attribute value or an …\nReturns a reference to the bytes that represents the …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns a reference to the internal attribute value or an …\nReturns the STUN attribute type of this instance.\nDecodes the STUN raw buffer\nCreates a cryptographically random transaction ID chosen …\nReturns a reference to the AlternateServer
attribute.\nReturns a reference to the ErrorCode
attribute.\nReturns a reference to the Fingerprint
attribute.\nReturns a reference to the MappedAddress
attribute.\nReturns a reference to the MessageIntegrity
attribute.\nReturns a reference to the MessageIntegritySha256
…\nReturns a reference to the Nonce
attribute.\nReturns a reference to the PasswordAlgorithm
attribute.\nReturns a reference to the PasswordAlgorithms
attribute.\nReturns a reference to the Realm
attribute.\nReturns a reference to the Software
attribute.\nReturns a reference to the Unknown
attribute.\nReturns a reference to the UnknownAttributes
attribute.\nReturns a reference to the UserHash
attribute.\nReturns a reference to the UserName
attribute.\nReturns a reference to the XorMappedAddress
attribute.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nGets the context associated to this decoder\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nReports whether b is a STUN message.\nReturns true if this StunAttribute
is AlternateServer
\nReturns true if this StunAttribute
is ErrorCode
\nReturns true if this StunAttribute
is Fingerprint
\nReturns true if this StunAttribute
is MappedAddress
\nReturns true if this StunAttribute
is MessageIntegrity
\nReturns true if this StunAttribute
is …\nReturns true if this StunAttribute
is Nonce
\nReturns true if this StunAttribute
is PasswordAlgorithm
\nReturns true if this StunAttribute
is PasswordAlgorithms
\nReturns true if this StunAttribute
is Realm
\nReturns true if this StunAttribute
is Software
\nReturns true if this StunAttribute
is Unknown
\nReturns true if this StunAttribute
is UnknownAttributes
\nReturns true if this StunAttribute
is UserHash
\nReturns true if this StunAttribute
is UserName
\nReturns true if this StunAttribute
is XorMappedAddress
\nSTUN Methods Registry\nParses a STUN binding request.\nParses a successful binding response STUN packet. The IP …\nGenerates a binding request STUN packet.\nGenerates a binding response.\nBinding\nReserved\nShared secret\nALPN for our quic addr discovery\nEndpoint close error code\nEndpoint close reason\nHandles the client side of QUIC address discovery.\nReturns the argument unchanged.\nClient side of QUIC address discovery.\nCalls U::from(self)
.\nCreate a new QuicClient to handle the client side of QUIC …\nTLS certificate configuration.\nPer-client rate limit configuration.\nThe default certificate reload interval.\nUse Let’s Encrypt.\nRate limits.\nUse a static TLS key and certificate chain.\nThe main underlying IO stream type used for the relay …\nMetrics tracked for the relay server\nA plain non-Tls tokio::net::TcpStream
\nConfiguration for the QUIC server.\nConfiguration for the Relay HTTP and HTTPS server.\nUse a TLS key and certificate chain that can be reloaded.\nA Certificate resolver that reloads the certificate every …\nA running Relay + STUN server.\nConfiguration for the full Relay & STUN server.\nConfiguration for the STUN server.\nStunMetrics tracked for the relay server\nA Tls wrapped tokio::net::TcpStream
\nTLS configuration for Relay server.\nBurst limit for accepting new connection. Unlimited if not …\nRate limit for accepting new connection. Unlimited if not …\nNumber of connections we have accepted\nNumber of bad requests, either non-stun packets or …\nThe socket address on which the STUN server should bind.\nThe socket address on which the QUIC server should bind.\nMax number of bytes per second to read from the client …\nBytes received from a FrameType::SendPacket
\nBytes sent from a FrameType::SendPacket
\nMode for getting a cert.\nThe certificates chain if configured with manual TLS …\nRate limits for incoming traffic from a client connection.\nNumber of client connections which have had any frames …\nFrameType::SendPacket
dropped that are disco messages\nFrameType::SendPacket
received that are disco messages\nFrameType::SendPacket
sent that are disco messages\nNumber of connections we have removed because of an error\nNumber of failures\nNumber of frames received from client connection which …\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nNumber of FrameType::Ping
s received\nThe socket address the HTTP server is listening on.\nThe socket address on which the Relay HTTP server should …\nGet the server’s http RelayUrl
.\nThe socket address the HTTPS server is listening on.\nThe socket address on which to serve the HTTPS server.\nGet the server’s https RelayUrl
.\nPerform the initial load and construct the …\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nCalls U::from(self)
.\nNumber of successful requests over ipv4\nNumber of successful requests over ipv6\nKey cache capacity.\nRate limits.\nMax number of bytes to read in a single burst.\nSocket to serve metrics on.\nPackets of other FrameType
s dropped\nPackets of other FrameType
s received\nPackets of other FrameType
s sent\nConfiguration for the QUIC server, disabled if None
.\nThe socket address the QUIC server is listening on.\nThe socket address on which to server the QUIC server is …\nConfiguration for the Relay server, disabled if None
.\nNumber of accepted ‘iroh derp http’ connection upgrades\nReload the certificate.\nNumber of stun requests made\nFrameType::SendPacket
dropped, that are not disco messages\nFrameType::SendPacket
received, that are not disco messages\nFrameType::SendPacket
sent, that are not disco messages\nNumber of FrameType::Pong
s sent\nThe TLS server configuration for the QUIC server.\nThe server configuration.\nShutdown the resolver.\nRequests graceful shutdown.\nStarts the server.\nConfiguration for the STUN server, disabled if None
.\nThe socket address the STUN server is listening on.\nReturns the handle for the task.\nExposes functions to quickly configure a server suitable …\nTLS configuration for the HTTPS server.\nNumber of unique client keys per day\nNumber of FrameType::Unknown
received\nNumber of accepted websocket connections\nThe TLS certificate chain.\nState for Let’s Encrypt certificates.\nCreates a QuicConfig
suitable for testing.\nCreates a RelayConfig
suitable for testing.\nCreates a rustls::ServerConfig
and certificates suitable …\nCreates a ServerConfig
suitable for testing.\nCreates a StunConfig
suitable for testing.\nCreates a TlsConfig
suitable for testing.")
\ No newline at end of file
diff --git a/pr/3069/docs/src/iroh_relay/client.rs.html b/pr/3069/docs/src/iroh_relay/client.rs.html
index 548b0b68ad..e2ebf00915 100644
--- a/pr/3069/docs/src/iroh_relay/client.rs.html
+++ b/pr/3069/docs/src/iroh_relay/client.rs.html
@@ -981,19 +981,7 @@
980
981
982
-983
-984
-985
-986
-987
-988
-989
-990
-991
-992
-993
-994
-995//! Exposes [`Client`], which allows to establish connections to a relay server.
+983
//! Exposes [`Client`], which allows to establish connections to a relay server.
//!
//! Based on tailscale/derp/derphttp/derphttp_client.go
@@ -1109,7 +1097,6 @@
/// Cheaply clonable.
#[derive(derive_more::Debug)]
pub struct Client {
- public_key: PublicKey,
secret_key: SecretKey,
is_preferred: bool,
relay_conn: Option<(Conn, Option<SocketAddr>)>,
@@ -1265,10 +1252,8 @@
config.resumption = Resumption::default();
let tls_connector: tokio_rustls::TlsConnector = Arc::new(config).into();
- let public_key = key.public();
let mut client = Client {
- public_key,
secret_key: key,
is_preferred: false,
relay_conn: None,
@@ -1316,9 +1301,30 @@
}
impl Client {
- /// The public key for this client
- pub fn public_key(&self) -> PublicKey {
- self.public_key
+ /// Reads a message from the server.
+ pub async fn recv(&mut self) -> Option<Result<ReceivedMessage, ClientError>> {
+ if let Some((conn, _)) = self.relay_conn.as_mut() {
+ match tokio::time::timeout(CLIENT_RECV_TIMEOUT, conn.next()).await {
+ Ok(Some(Ok(msg))) => Some(Ok(msg)),
+ Ok(Some(Err(e))) => {
+ self.close_for_reconnect().await;
+ if self.is_closed {
+ return Some(Err(ClientError::Closed));
+ }
+ Some(Err(ClientError::Receive(e)))
+ }
+ Ok(None) => {
+ self.close_for_reconnect().await;
+ None
+ }
+ Err(_) => {
+ self.close_for_reconnect().await;
+ Some(Err(ClientError::Closed))
+ }
+ }
+ } else {
+ future::pending().await
+ }
}
/// Connects to a relay Server and returns the underlying relay connection.
@@ -1524,11 +1530,7 @@
if self.is_closed {
return None;
}
- if let Some((_, local_addr)) = self.relay_conn {
- local_addr
- } else {
- None
- }
+ self.relay_conn.as_ref().and_then(|(_, addr)| *addr)
}
/// Send a ping to the server. Return once we get an expected pong.
@@ -1789,37 +1791,11 @@
}
}
- /// Reads a message from the server.
- pub async fn recv(&mut self) -> Option<Result<ReceivedMessage, ClientError>> {
- if let Some((conn, _)) = self.relay_conn.as_mut() {
- match tokio::time::timeout(CLIENT_RECV_TIMEOUT, conn.next()).await {
- Ok(Some(Ok(msg))) => Some(Ok(msg)),
- Ok(Some(Err(e))) => {
- self.close_for_reconnect().await;
- if self.is_closed {
- return Some(Err(ClientError::Closed));
- }
- Some(Err(ClientError::Receive(e)))
- }
- Ok(None) => {
- self.close_for_reconnect().await;
- None
- }
- Err(_) => {
- self.close_for_reconnect().await;
- Some(Err(ClientError::Closed))
- }
- }
- } else {
- future::pending().await
- }
- }
-
/// Disconnect the http relay connection.
///
/// Closes the underlying relay connection. The next time the client takes some action that
/// requires a connection, it will call `connect`.
- pub async fn close_for_reconnect(&mut self) {
+ async fn close_for_reconnect(&mut self) {
debug!("close for reconnect");
if let Some((ref mut conn, _)) = self.relay_conn.take() {
conn.close().await