From 20acf8d30163d9d03038dcae73f7c2f46927d9a9 Mon Sep 17 00:00:00 2001 From: matheus23 Date: Thu, 12 Dec 2024 16:20:57 +0000 Subject: [PATCH] deploy: 8b43126530fbd63c65786c6f60820f91a2152131 --- pr/2806/docs/bulk/fn.run_iroh.html | 2 +- pr/2806/docs/bulk/fn.run_quinn.html | 2 +- pr/2806/docs/bulk/fn.run_s2n.html | 2 +- .../discovery/dns/struct.DnsDiscovery.html | 2 +- .../struct.LocalSwarmDiscovery.html | 4 +- .../discovery/pkarr/dht/struct.Builder.html | 2 +- .../pkarr/dht/struct.DhtDiscovery.html | 2 +- .../pkarr/struct.PkarrPublisher.html | 2 +- .../pkarr/struct.PkarrRelayClient.html | 4 +- .../discovery/pkarr/struct.PkarrResolver.html | 2 +- .../struct.StaticProvider.html | 2 +- .../discovery/struct.ConcurrentDiscovery.html | 2 +- .../docs/iroh/discovery/trait.Discovery.html | 4 +- .../docs/iroh/dns/node_info/fn.from_z32.html | 2 +- .../iroh/dns/node_info/struct.NodeInfo.html | 8 +- .../iroh/dns/node_info/struct.TxtAttrs.html | 14 +- pr/2806/docs/iroh/dns/trait.ResolverExt.html | 40 ++-- pr/2806/docs/iroh/dns/type.DnsResolver.html | 20 +- .../iroh/endpoint/enum.ConnectionType.html | 12 +- .../docs/iroh/endpoint/enum.ControlMsg.html | 12 +- pr/2806/docs/iroh/endpoint/enum.Source.html | 12 +- .../iroh/endpoint/fn.get_remote_node_id.html | 2 +- .../iroh/endpoint/fn.make_server_config.html | 2 +- .../docs/iroh/endpoint/struct.Builder.html | 2 +- .../docs/iroh/endpoint/struct.Connecting.html | 6 +- .../iroh/endpoint/struct.DirectAddrInfo.html | 12 +- .../docs/iroh/endpoint/struct.Endpoint.html | 14 +- .../docs/iroh/endpoint/struct.Incoming.html | 6 +- .../docs/iroh/endpoint/struct.RemoteInfo.html | 12 +- pr/2806/docs/iroh/protocol/struct.Router.html | 2 +- .../iroh/protocol/struct.RouterBuilder.html | 2 +- .../iroh/protocol/trait.ProtocolHandler.html | 6 +- pr/2806/docs/iroh/struct.NodeAddr.html | 16 +- pr/2806/docs/iroh/struct.PublicKey.html | 16 +- pr/2806/docs/iroh/struct.RelayMap.html | 2 +- pr/2806/docs/iroh/struct.RelayNode.html | 16 +- pr/2806/docs/iroh/struct.RelayUrl.html | 22 +-- pr/2806/docs/iroh/struct.SecretKey.html | 16 +- .../test_utils/fn.create_dns_resolver.html | 2 +- .../iroh/test_utils/fn.run_relay_server.html | 2 +- .../test_utils/fn.run_relay_server_with.html | 2 +- .../fn.run_relay_server_with_stun.html | 2 +- .../test_utils/struct.DnsPkarrServer.html | 6 +- pr/2806/docs/iroh_base/struct.NodeAddr.html | 12 +- pr/2806/docs/iroh_base/struct.PublicKey.html | 12 +- pr/2806/docs/iroh_base/struct.RelayUrl.html | 18 +- pr/2806/docs/iroh_base/struct.SecretKey.html | 12 +- .../docs/iroh_base/struct.SharedSecret.html | 2 +- pr/2806/docs/iroh_base/struct.Signature.html | 16 +- .../iroh_base/ticket/struct.NodeTicket.html | 10 +- .../iroh_bench/enum.EndpointSelector.html | 2 +- .../docs/iroh_bench/fn.client_handler.html | 2 +- pr/2806/docs/iroh_bench/iroh/fn.client.html | 2 +- .../iroh_bench/iroh/fn.connect_client.html | 2 +- .../iroh/fn.handle_client_stream.html | 2 +- pr/2806/docs/iroh_bench/iroh/fn.server.html | 2 +- pr/2806/docs/iroh_bench/quinn/fn.client.html | 2 +- .../iroh_bench/quinn/fn.connect_client.html | 2 +- .../quinn/fn.handle_client_stream.html | 2 +- pr/2806/docs/iroh_bench/quinn/fn.server.html | 2 +- .../config/enum.BootstrapOption.html | 10 +- .../iroh_dns_server/config/struct.Config.html | 16 +- .../config/struct.MainlineConfig.html | 10 +- .../config/struct.MetricsConfig.html | 10 +- .../config/struct.StoreConfig.html | 10 +- .../iroh_dns_server/dns/struct.DnsConfig.html | 10 +- .../dns/struct.DnsHandler.html | 4 +- .../iroh_dns_server/dns/struct.DnsServer.html | 6 +- .../iroh_dns_server/http/enum.CertMode.html | 12 +- .../http/enum.RateLimitConfig.html | 10 +- .../http/struct.HttpConfig.html | 10 +- .../http/struct.HttpServer.html | 6 +- .../http/struct.HttpsConfig.html | 10 +- .../fn.run_with_config_until_ctrl_c.html | 2 +- .../iroh_dns_server/server/struct.Server.html | 6 +- .../iroh_dns_server/struct.ZoneStore.html | 10 +- .../docs/iroh_net_report/struct.Client.html | 6 +- pr/2806/docs/iroh_relay/all.html | 2 +- .../iroh_relay/client/enum.ClientError.html | 8 +- .../iroh_relay/quic/struct.QuicClient.html | 4 +- ...constant.DEFAULT_CERT_RELOAD_INTERVAL.html | 2 + .../iroh_relay/server/enum.CertConfig.html | 6 +- pr/2806/docs/iroh_relay/server/index.html | 4 +- ...constant.DEFAULT_CERT_RELOAD_INTERVAL.html | 11 ++ .../resolver/struct.ReloadingResolver.html | 11 ++ .../docs/iroh_relay/server/sidebar-items.js | 2 +- .../server/struct.ClientConnRateLimit.html | 4 +- .../docs/iroh_relay/server/struct.Limits.html | 4 +- .../iroh_relay/server/struct.QuicConfig.html | 4 +- .../iroh_relay/server/struct.RelayConfig.html | 6 +- .../server/struct.ReloadingResolver.html | 38 ++++ .../docs/iroh_relay/server/struct.Server.html | 24 +-- .../server/struct.ServerConfig.html | 6 +- .../iroh_relay/server/struct.StunConfig.html | 4 +- .../iroh_relay/server/struct.TlsConfig.html | 6 +- pr/2806/docs/iroh_relay/struct.RelayConn.html | 8 +- pr/2806/docs/iroh_relay/struct.RelayMap.html | 2 +- pr/2806/docs/iroh_relay/struct.RelayNode.html | 12 +- .../iroh_relay/struct.RelayQuicConfig.html | 12 +- .../iroh_test/hexdump/fn.parse_hexdump.html | 2 +- pr/2806/docs/search-index.js | 4 +- .../iroh_relay/iroh_relay-desc-0-.js | 2 +- pr/2806/docs/src-files.js | 4 +- pr/2806/docs/src/iroh/watchable.rs.html | 12 +- pr/2806/docs/src/iroh_relay/server.rs.html | 14 +- .../src/iroh_relay/server/resolver.rs.html | 187 ++++++++++++++++++ .../docs/trait.impl/core/fmt/trait.Debug.js | 4 +- .../trait.impl/core/marker/trait.Freeze.js | 4 +- .../docs/trait.impl/core/marker/trait.Send.js | 4 +- .../docs/trait.impl/core/marker/trait.Sync.js | 4 +- .../trait.impl/core/marker/trait.Unpin.js | 4 +- .../trait.impl/core/ops/deref/trait.Deref.js | 4 +- .../panic/unwind_safe/trait.RefUnwindSafe.js | 4 +- .../panic/unwind_safe/trait.UnwindSafe.js | 4 +- .../server_conn/trait.ResolvesServerCert.js | 9 + .../trait.impl/serde/de/trait.Deserialize.js | 2 +- .../trait.impl/serde/ser/trait.Serialize.js | 2 +- .../docs/type.impl/iroh/struct.PublicKey.js | 2 +- .../type.impl/iroh_base/struct.PublicKey.js | 2 +- 119 files changed, 647 insertions(+), 377 deletions(-) create mode 100644 pr/2806/docs/iroh_relay/server/constant.DEFAULT_CERT_RELOAD_INTERVAL.html create mode 100644 pr/2806/docs/iroh_relay/server/resolver/constant.DEFAULT_CERT_RELOAD_INTERVAL.html create mode 100644 pr/2806/docs/iroh_relay/server/resolver/struct.ReloadingResolver.html create mode 100644 pr/2806/docs/iroh_relay/server/struct.ReloadingResolver.html create mode 100644 pr/2806/docs/src/iroh_relay/server/resolver.rs.html create mode 100644 pr/2806/docs/trait.impl/rustls/server/server_conn/trait.ResolvesServerCert.js diff --git a/pr/2806/docs/bulk/fn.run_iroh.html b/pr/2806/docs/bulk/fn.run_iroh.html index e1b626e201..de138fac8c 100644 --- a/pr/2806/docs/bulk/fn.run_iroh.html +++ b/pr/2806/docs/bulk/fn.run_iroh.html @@ -1 +1 @@ -run_iroh in bulk - Rust
bulk

Function run_iroh

Source
pub fn run_iroh(opt: Opt) -> Result<()>
\ No newline at end of file +run_iroh in bulk - Rust
bulk

Function run_iroh

Source
pub fn run_iroh(opt: Opt) -> Result<()>
\ No newline at end of file diff --git a/pr/2806/docs/bulk/fn.run_quinn.html b/pr/2806/docs/bulk/fn.run_quinn.html index d666314062..12f36bca75 100644 --- a/pr/2806/docs/bulk/fn.run_quinn.html +++ b/pr/2806/docs/bulk/fn.run_quinn.html @@ -1 +1 @@ -run_quinn in bulk - Rust
bulk

Function run_quinn

Source
pub fn run_quinn(opt: Opt) -> Result<()>
\ No newline at end of file +run_quinn in bulk - Rust
bulk

Function run_quinn

Source
pub fn run_quinn(opt: Opt) -> Result<()>
\ No newline at end of file diff --git a/pr/2806/docs/bulk/fn.run_s2n.html b/pr/2806/docs/bulk/fn.run_s2n.html index 197aba81ff..9ac00c8852 100644 --- a/pr/2806/docs/bulk/fn.run_s2n.html +++ b/pr/2806/docs/bulk/fn.run_s2n.html @@ -1 +1 @@ -run_s2n in bulk - Rust
bulk

Function run_s2n

Source
pub fn run_s2n(_opt: Opt) -> Result<()>
\ No newline at end of file +run_s2n in bulk - Rust
bulk

Function run_s2n

Source
pub fn run_s2n(_opt: Opt) -> Result<()>
\ No newline at end of file diff --git a/pr/2806/docs/iroh/discovery/dns/struct.DnsDiscovery.html b/pr/2806/docs/iroh/discovery/dns/struct.DnsDiscovery.html index ddea46dccb..801a8972c0 100644 --- a/pr/2806/docs/iroh/discovery/dns/struct.DnsDiscovery.html +++ b/pr/2806/docs/iroh/discovery/dns/struct.DnsDiscovery.html @@ -26,7 +26,7 @@
§< &self, ep: Endpoint, node_id: NodeId, -) -> Option<BoxStream<Result<DiscoveryItem>>>
Resolves the DiscoveryItem for the given NodeId. Read more
Source§

fn publish(&self, _url: Option<&RelayUrl>, _addrs: &BTreeSet<SocketAddr>)

Publishes the given RelayUrl and direct addreesses to the discovery mechanism. Read more
Source§

fn subscribe(&self) -> Option<BoxStream<DiscoveryItem>>

Subscribe to all addresses that get passively discovered. Read more

Auto Trait Implementations§

§

impl Freeze for DnsDiscovery

§

impl RefUnwindSafe for DnsDiscovery

§

impl Send for DnsDiscovery

§

impl Sync for DnsDiscovery

§

impl Unpin for DnsDiscovery

§

impl UnwindSafe for DnsDiscovery

Blanket Implementations§

Source§

impl<T> Any for T
where +) -> Option<BoxStream<Result<DiscoveryItem>>>

Resolves the DiscoveryItem for the given NodeId. Read more
Source§

fn publish(&self, _url: Option<&RelayUrl>, _addrs: &BTreeSet<SocketAddr>)

Publishes the given RelayUrl and direct addreesses to the discovery mechanism. Read more
Source§

fn subscribe(&self) -> Option<BoxStream<DiscoveryItem>>

Subscribe to all addresses that get passively discovered. Read more

Auto Trait Implementations§

§

impl Freeze for DnsDiscovery

§

impl RefUnwindSafe for DnsDiscovery

§

impl Send for DnsDiscovery

§

impl Sync for DnsDiscovery

§

impl Unpin for DnsDiscovery

§

impl UnwindSafe for DnsDiscovery

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

§

fn implicit( diff --git a/pr/2806/docs/iroh/discovery/local_swarm_discovery/struct.LocalSwarmDiscovery.html b/pr/2806/docs/iroh/discovery/local_swarm_discovery/struct.LocalSwarmDiscovery.html index e964cff238..f51a66ab04 100644 --- a/pr/2806/docs/iroh/discovery/local_swarm_discovery/struct.LocalSwarmDiscovery.html +++ b/pr/2806/docs/iroh/discovery/local_swarm_discovery/struct.LocalSwarmDiscovery.html @@ -1,5 +1,5 @@ LocalSwarmDiscovery in iroh::discovery::local_swarm_discovery - Rust
iroh::discovery::local_swarm_discovery

Struct LocalSwarmDiscovery

Source
pub struct LocalSwarmDiscovery { /* private fields */ }
Available on crate feature discovery-local-network only.
Expand description

Discovery using swarm-discovery, a variation on mdns

-

Implementations§

Source§

impl LocalSwarmDiscovery

Source

pub fn new(node_id: NodeId) -> Result<Self>

Create a new LocalSwarmDiscovery Service.

+

Implementations§

Source§

impl LocalSwarmDiscovery

Source

pub fn new(node_id: NodeId) -> Result<Self>

Create a new LocalSwarmDiscovery Service.

This starts a [Discoverer] that broadcasts your addresses and receives addresses from other nodes in your local network.

§Errors

Returns an error if the network does not allow ipv4 OR ipv6.

@@ -9,7 +9,7 @@
§Panics
&self, _ep: Endpoint, node_id: NodeId, -) -> Option<BoxStream<Result<DiscoveryItem>>>

Resolves the DiscoveryItem for the given NodeId. Read more
Source§

fn publish(&self, url: Option<&RelayUrl>, addrs: &BTreeSet<SocketAddr>)

Publishes the given RelayUrl and direct addreesses to the discovery mechanism. Read more
Source§

fn subscribe(&self) -> Option<BoxStream<DiscoveryItem>>

Subscribe to all addresses that get passively discovered. Read more

Auto Trait Implementations§

§

impl Freeze for LocalSwarmDiscovery

§

impl RefUnwindSafe for LocalSwarmDiscovery

§

impl Send for LocalSwarmDiscovery

§

impl Sync for LocalSwarmDiscovery

§

impl Unpin for LocalSwarmDiscovery

§

impl UnwindSafe for LocalSwarmDiscovery

Blanket Implementations§

Source§

impl<T> Any for T
where +) -> Option<BoxStream<Result<DiscoveryItem>>>

Resolves the DiscoveryItem for the given NodeId. Read more
Source§

fn publish(&self, url: Option<&RelayUrl>, addrs: &BTreeSet<SocketAddr>)

Publishes the given RelayUrl and direct addreesses to the discovery mechanism. Read more
Source§

fn subscribe(&self) -> Option<BoxStream<DiscoveryItem>>

Subscribe to all addresses that get passively discovered. Read more

Auto Trait Implementations§

§

impl Freeze for LocalSwarmDiscovery

§

impl RefUnwindSafe for LocalSwarmDiscovery

§

impl Send for LocalSwarmDiscovery

§

impl Sync for LocalSwarmDiscovery

§

impl Unpin for LocalSwarmDiscovery

§

impl UnwindSafe for LocalSwarmDiscovery

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

§

fn implicit( diff --git a/pr/2806/docs/iroh/discovery/pkarr/dht/struct.Builder.html b/pr/2806/docs/iroh/discovery/pkarr/dht/struct.Builder.html index a7df3cd1db..f1990a656d 100644 --- a/pr/2806/docs/iroh/discovery/pkarr/dht/struct.Builder.html +++ b/pr/2806/docs/iroh/discovery/pkarr/dht/struct.Builder.html @@ -10,7 +10,7 @@

Source

pub fn include_direct_addresses(self, include_direct_addresses: bool) -> Self

Sets whether to include the direct addresses in the DNS packet.

Source

pub fn initial_publish_delay(self, initial_publish_delay: Duration) -> Self

Sets the initial delay before the first publish.

Source

pub fn republish_delay(self, republish_delay: Duration) -> Self

Sets the republish delay for the DHT.

-
Source

pub fn build(self) -> Result<DhtDiscovery>

Builds the discovery mechanism.

+
Source

pub fn build(self) -> Result<DhtDiscovery>

Builds the discovery mechanism.

Trait Implementations§

Source§

impl Debug for Builder

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for Builder

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

§

impl !Freeze for Builder

§

impl !RefUnwindSafe for Builder

§

impl Send for Builder

§

impl Sync for Builder

§

impl Unpin for Builder

§

impl !UnwindSafe for Builder

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where diff --git a/pr/2806/docs/iroh/discovery/pkarr/dht/struct.DhtDiscovery.html b/pr/2806/docs/iroh/discovery/pkarr/dht/struct.DhtDiscovery.html index 8840a6a90d..c6235008ed 100644 --- a/pr/2806/docs/iroh/discovery/pkarr/dht/struct.DhtDiscovery.html +++ b/pr/2806/docs/iroh/discovery/pkarr/dht/struct.DhtDiscovery.html @@ -9,7 +9,7 @@ &self, _endpoint: Endpoint, node_id: NodeId, -) -> Option<Boxed<Result<DiscoveryItem>>>

Resolves the DiscoveryItem for the given NodeId. Read more
Source§

fn subscribe(&self) -> Option<BoxStream<DiscoveryItem>>

Subscribe to all addresses that get passively discovered. Read more

Auto Trait Implementations§

§

impl Freeze for DhtDiscovery

§

impl !RefUnwindSafe for DhtDiscovery

§

impl Send for DhtDiscovery

§

impl Sync for DhtDiscovery

§

impl Unpin for DhtDiscovery

§

impl !UnwindSafe for DhtDiscovery

Blanket Implementations§

Source§

impl<T> Any for T
where +) -> Option<Boxed<Result<DiscoveryItem>>>

Resolves the DiscoveryItem for the given NodeId. Read more
Source§

fn subscribe(&self) -> Option<BoxStream<DiscoveryItem>>

Subscribe to all addresses that get passively discovered. Read more

Auto Trait Implementations§

§

impl Freeze for DhtDiscovery

§

impl !RefUnwindSafe for DhtDiscovery

§

impl Send for DhtDiscovery

§

impl Sync for DhtDiscovery

§

impl Unpin for DhtDiscovery

§

impl !UnwindSafe for DhtDiscovery

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

§

fn implicit( diff --git a/pr/2806/docs/iroh/discovery/pkarr/struct.PkarrPublisher.html b/pr/2806/docs/iroh/discovery/pkarr/struct.PkarrPublisher.html index a631052c97..fd8f4176a1 100644 --- a/pr/2806/docs/iroh/discovery/pkarr/struct.PkarrPublisher.html +++ b/pr/2806/docs/iroh/discovery/pkarr/struct.PkarrPublisher.html @@ -34,7 +34,7 @@ &self, _endpoint: Endpoint, _node_id: NodeId, -) -> Option<BoxStream<Result<DiscoveryItem>>>

Resolves the DiscoveryItem for the given NodeId. Read more
Source§

fn subscribe(&self) -> Option<BoxStream<DiscoveryItem>>

Subscribe to all addresses that get passively discovered. Read more
Source§

impl Drop for PkarrPublisher

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more

Auto Trait Implementations§

§

impl Freeze for PkarrPublisher

§

impl RefUnwindSafe for PkarrPublisher

§

impl Send for PkarrPublisher

§

impl Sync for PkarrPublisher

§

impl Unpin for PkarrPublisher

§

impl UnwindSafe for PkarrPublisher

Blanket Implementations§

Source§

impl<T> Any for T
where +) -> Option<BoxStream<Result<DiscoveryItem>>>

Resolves the DiscoveryItem for the given NodeId. Read more
Source§

fn subscribe(&self) -> Option<BoxStream<DiscoveryItem>>

Subscribe to all addresses that get passively discovered. Read more
Source§

impl Drop for PkarrPublisher

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more

Auto Trait Implementations§

§

impl Freeze for PkarrPublisher

§

impl RefUnwindSafe for PkarrPublisher

§

impl Send for PkarrPublisher

§

impl Sync for PkarrPublisher

§

impl Unpin for PkarrPublisher

§

impl UnwindSafe for PkarrPublisher

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

§

fn implicit( diff --git a/pr/2806/docs/iroh/discovery/pkarr/struct.PkarrRelayClient.html b/pr/2806/docs/iroh/discovery/pkarr/struct.PkarrRelayClient.html index 8f6467ff7f..0ded9fc9fb 100644 --- a/pr/2806/docs/iroh/discovery/pkarr/struct.PkarrRelayClient.html +++ b/pr/2806/docs/iroh/discovery/pkarr/struct.PkarrRelayClient.html @@ -1,7 +1,7 @@ PkarrRelayClient in iroh::discovery::pkarr - Rust
iroh::discovery::pkarr

Struct PkarrRelayClient

Source
pub struct PkarrRelayClient { /* private fields */ }
Expand description

A pkarr client to publish [pkarr::SignedPacket]s to a pkarr relay.

Implementations§

Source§

impl PkarrRelayClient

Source

pub fn new(pkarr_relay_url: Url) -> Self

Creates a new client.

-
Source

pub async fn resolve(&self, node_id: NodeId) -> Result<SignedPacket>

Resolves a [SignedPacket] for the given NodeId.

-
Source

pub async fn publish(&self, signed_packet: &SignedPacket) -> Result<()>

Publishes a [SignedPacket].

+
Source

pub async fn resolve(&self, node_id: NodeId) -> Result<SignedPacket>

Resolves a [SignedPacket] for the given NodeId.

+
Source

pub async fn publish(&self, signed_packet: &SignedPacket) -> Result<()>

Publishes a [SignedPacket].

Trait Implementations§

Source§

impl Clone for PkarrRelayClient

Source§

fn clone(&self) -> PkarrRelayClient

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for PkarrRelayClient

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where diff --git a/pr/2806/docs/iroh/discovery/pkarr/struct.PkarrResolver.html b/pr/2806/docs/iroh/discovery/pkarr/struct.PkarrResolver.html index 9a195ea749..79b09ad8bf 100644 --- a/pr/2806/docs/iroh/discovery/pkarr/struct.PkarrResolver.html +++ b/pr/2806/docs/iroh/discovery/pkarr/struct.PkarrResolver.html @@ -15,7 +15,7 @@ &self, _ep: Endpoint, node_id: NodeId, -) -> Option<BoxStream<'static, Result<DiscoveryItem>>>

Resolves the DiscoveryItem for the given NodeId. Read more
Source§

fn publish(&self, _url: Option<&RelayUrl>, _addrs: &BTreeSet<SocketAddr>)

Publishes the given RelayUrl and direct addreesses to the discovery mechanism. Read more
Source§

fn subscribe(&self) -> Option<BoxStream<DiscoveryItem>>

Subscribe to all addresses that get passively discovered. Read more

Auto Trait Implementations§

§

impl Freeze for PkarrResolver

§

impl !RefUnwindSafe for PkarrResolver

§

impl Send for PkarrResolver

§

impl Sync for PkarrResolver

§

impl Unpin for PkarrResolver

§

impl !UnwindSafe for PkarrResolver

Blanket Implementations§

Source§

impl<T> Any for T
where +) -> Option<BoxStream<'static, Result<DiscoveryItem>>>

Resolves the DiscoveryItem for the given NodeId. Read more
Source§

fn publish(&self, _url: Option<&RelayUrl>, _addrs: &BTreeSet<SocketAddr>)

Publishes the given RelayUrl and direct addreesses to the discovery mechanism. Read more
Source§

fn subscribe(&self) -> Option<BoxStream<DiscoveryItem>>

Subscribe to all addresses that get passively discovered. Read more

Auto Trait Implementations§

§

impl Freeze for PkarrResolver

§

impl !RefUnwindSafe for PkarrResolver

§

impl Send for PkarrResolver

§

impl Sync for PkarrResolver

§

impl Unpin for PkarrResolver

§

impl !UnwindSafe for PkarrResolver

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

§

fn implicit( diff --git a/pr/2806/docs/iroh/discovery/static_provider/struct.StaticProvider.html b/pr/2806/docs/iroh/discovery/static_provider/struct.StaticProvider.html index bfe16cb257..ba3b39e6ab 100644 --- a/pr/2806/docs/iroh/discovery/static_provider/struct.StaticProvider.html +++ b/pr/2806/docs/iroh/discovery/static_provider/struct.StaticProvider.html @@ -30,7 +30,7 @@ &self, _endpoint: Endpoint, node_id: NodeId, -) -> Option<Boxed<Result<DiscoveryItem>>>

Resolves the DiscoveryItem for the given NodeId. Read more
Source§

fn subscribe(&self) -> Option<BoxStream<DiscoveryItem>>

Subscribe to all addresses that get passively discovered. Read more

Auto Trait Implementations§

§

impl Freeze for StaticProvider

§

impl RefUnwindSafe for StaticProvider

§

impl Send for StaticProvider

§

impl Sync for StaticProvider

§

impl Unpin for StaticProvider

§

impl UnwindSafe for StaticProvider

Blanket Implementations§

Source§

impl<T> Any for T
where +) -> Option<Boxed<Result<DiscoveryItem>>>

Resolves the DiscoveryItem for the given NodeId. Read more
Source§

fn subscribe(&self) -> Option<BoxStream<DiscoveryItem>>

Subscribe to all addresses that get passively discovered. Read more

Auto Trait Implementations§

§

impl Freeze for StaticProvider

§

impl RefUnwindSafe for StaticProvider

§

impl Send for StaticProvider

§

impl Sync for StaticProvider

§

impl Unpin for StaticProvider

§

impl UnwindSafe for StaticProvider

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

§

fn implicit( diff --git a/pr/2806/docs/iroh/discovery/struct.ConcurrentDiscovery.html b/pr/2806/docs/iroh/discovery/struct.ConcurrentDiscovery.html index a435fc5b7d..947dd92c09 100644 --- a/pr/2806/docs/iroh/discovery/struct.ConcurrentDiscovery.html +++ b/pr/2806/docs/iroh/discovery/struct.ConcurrentDiscovery.html @@ -7,7 +7,7 @@ &self, endpoint: Endpoint, node_id: NodeId, -) -> Option<BoxStream<Result<DiscoveryItem>>>

Resolves the DiscoveryItem for the given NodeId. Read more
Source§

fn subscribe(&self) -> Option<BoxStream<DiscoveryItem>>

Subscribe to all addresses that get passively discovered. Read more
Source§

impl<T> From<T> for ConcurrentDiscovery
where +) -> Option<BoxStream<Result<DiscoveryItem>>>

Resolves the DiscoveryItem for the given NodeId. Read more
Source§

fn subscribe(&self) -> Option<BoxStream<DiscoveryItem>>

Subscribe to all addresses that get passively discovered. Read more
Source§

impl<T> From<T> for ConcurrentDiscovery
where T: IntoIterator<Item = Box<dyn Discovery>>,

Source§

fn from(iter: T) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

§

impl Freeze for ConcurrentDiscovery

§

impl !RefUnwindSafe for ConcurrentDiscovery

§

impl Send for ConcurrentDiscovery

§

impl Sync for ConcurrentDiscovery

§

impl Unpin for ConcurrentDiscovery

§

impl !UnwindSafe for ConcurrentDiscovery

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where diff --git a/pr/2806/docs/iroh/discovery/trait.Discovery.html b/pr/2806/docs/iroh/discovery/trait.Discovery.html index 7dae7b386b..5700c3a95b 100644 --- a/pr/2806/docs/iroh/discovery/trait.Discovery.html +++ b/pr/2806/docs/iroh/discovery/trait.Discovery.html @@ -8,7 +8,7 @@ &self, _endpoint: Endpoint, _node_id: NodeId, - ) -> Option<BoxStream<Result<DiscoveryItem>>> { ... } + ) -> Option<BoxStream<Result<DiscoveryItem>>> { ... } fn subscribe(&self) -> Option<BoxStream<DiscoveryItem>> { ... } }
Expand description

Node discovery for super::Endpoint.

This trait defines publishing and resolving addressing information for a NodeId. @@ -30,7 +30,7 @@ &self, _endpoint: Endpoint, _node_id: NodeId, -) -> Option<BoxStream<Result<DiscoveryItem>>>

Resolves the DiscoveryItem for the given NodeId.

+) -> Option<BoxStream<Result<DiscoveryItem>>>

Resolves the DiscoveryItem for the given NodeId.

Once the returned [BoxStream] is dropped, the service should stop any pending work.

Source

fn subscribe(&self) -> Option<BoxStream<DiscoveryItem>>

Subscribe to all addresses that get passively discovered.

diff --git a/pr/2806/docs/iroh/dns/node_info/fn.from_z32.html b/pr/2806/docs/iroh/dns/node_info/fn.from_z32.html index 168633c8f3..69e4a60c04 100644 --- a/pr/2806/docs/iroh/dns/node_info/fn.from_z32.html +++ b/pr/2806/docs/iroh/dns/node_info/fn.from_z32.html @@ -1,2 +1,2 @@ -from_z32 in iroh::dns::node_info - Rust
iroh::dns::node_info

Function from_z32

Source
pub fn from_z32(s: &str) -> Result<NodeId>
Expand description

Parses a NodeId from [z-base-32] encoding.

+from_z32 in iroh::dns::node_info - Rust
iroh::dns::node_info

Function from_z32

Source
pub fn from_z32(s: &str) -> Result<NodeId>
Expand description

Parses a NodeId from [z-base-32] encoding.

\ No newline at end of file diff --git a/pr/2806/docs/iroh/dns/node_info/struct.NodeInfo.html b/pr/2806/docs/iroh/dns/node_info/struct.NodeInfo.html index 568d9e30f1..3df4e09d0e 100644 --- a/pr/2806/docs/iroh/dns/node_info/struct.NodeInfo.html +++ b/pr/2806/docs/iroh/dns/node_info/struct.NodeInfo.html @@ -11,19 +11,19 @@ relay_url: Option<Url>, direct_addresses: BTreeSet<SocketAddr>, ) -> Self

Creates a new NodeInfo from its parts.

-
Source

pub fn from_hickory_records(records: &[Record]) -> Result<Self>

Parses a NodeInfo from a set of DNS records.

-
Source

pub fn from_pkarr_signed_packet(packet: &SignedPacket) -> Result<Self>

Parses a NodeInfo from a [pkarr::SignedPacket].

+
Source

pub fn from_hickory_records(records: &[Record]) -> Result<Self>

Parses a NodeInfo from a set of DNS records.

+
Source

pub fn from_pkarr_signed_packet(packet: &SignedPacket) -> Result<Self>

Parses a NodeInfo from a [pkarr::SignedPacket].

Source

pub fn to_pkarr_signed_packet( &self, secret_key: &SecretKey, ttl: u32, -) -> Result<SignedPacket>

Creates a [pkarr::SignedPacket].

+) -> Result<SignedPacket>

Creates a [pkarr::SignedPacket].

This constructs a DNS packet and signs it with a SecretKey.

Source

pub fn to_hickory_records( &self, origin: &str, ttl: u32, -) -> Result<impl Iterator<Item = Record> + 'static>

Converts into a [hickory_resolver::proto::rr::Record] DNS record.

+) -> Result<impl Iterator<Item = Record> + 'static>

Converts into a [hickory_resolver::proto::rr::Record] DNS record.

Trait Implementations§

Source§

impl Clone for NodeInfo

Source§

fn clone(&self) -> NodeInfo

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for NodeInfo

Source§

fn fmt(&self, __derive_more_f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl From<&NodeInfo> for TxtAttrs<IrohAttr>

Source§

fn from(info: &NodeInfo) -> Self

Converts to this type from the input type.
Source§

impl From<&TxtAttrs<IrohAttr>> for NodeInfo

Source§

fn from(attrs: &TxtAttrs<IrohAttr>) -> Self

Converts to this type from the input type.
Source§

impl From<NodeInfo> for NodeAddr

Source§

fn from(value: NodeInfo) -> Self

Converts to this type from the input type.
Source§

impl From<TxtAttrs<IrohAttr>> for NodeInfo

Source§

fn from(attrs: TxtAttrs<IrohAttr>) -> Self

Converts to this type from the input type.
Source§

impl PartialEq for NodeInfo

Source§

fn eq(&self, other: &NodeInfo) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Eq for NodeInfo

Source§

impl StructuralPartialEq for NodeInfo

Auto Trait Implementations§

§

impl Freeze for NodeInfo

§

impl RefUnwindSafe for NodeInfo

§

impl Send for NodeInfo

§

impl Sync for NodeInfo

§

impl Unpin for NodeInfo

§

impl UnwindSafe for NodeInfo

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where diff --git a/pr/2806/docs/iroh/dns/node_info/struct.TxtAttrs.html b/pr/2806/docs/iroh/dns/node_info/struct.TxtAttrs.html index 273222d8ac..0672817caa 100644 --- a/pr/2806/docs/iroh/dns/node_info/struct.TxtAttrs.html +++ b/pr/2806/docs/iroh/dns/node_info/struct.TxtAttrs.html @@ -9,30 +9,30 @@

Source

pub fn from_strings( node_id: NodeId, strings: impl Iterator<Item = String>, -) -> Result<Self>

Creates TxtAttrs from a node id and an iterator of “{key}={value}” strings.

+) -> Result<Self>

Creates TxtAttrs from a node id and an iterator of “{key}={value}” strings.

Source

pub async fn lookup_by_id( resolver: &TokioResolver, node_id: &NodeId, origin: &str, -) -> Result<Self>

Looks up attributes by NodeId and origin domain.

+) -> Result<Self>

Looks up attributes by NodeId and origin domain.

Source

pub async fn lookup_by_name( resolver: &TokioResolver, name: &str, -) -> Result<Self>

Looks up attributes by DNS name.

+) -> Result<Self>

Looks up attributes by DNS name.

Source

pub fn attrs(&self) -> &BTreeMap<T, Vec<String>>

Returns the parsed attributes.

Source

pub fn node_id(&self) -> NodeId

Returns the node id.

-
Source

pub fn from_pkarr_signed_packet(packet: &SignedPacket) -> Result<Self>

Parses a [pkarr::SignedPacket].

-
Source

pub fn from_hickory_records(records: &[Record]) -> Result<Self>

Parses a set of DNS resource records.

+
Source

pub fn from_pkarr_signed_packet(packet: &SignedPacket) -> Result<Self>

Parses a [pkarr::SignedPacket].

+
Source

pub fn from_hickory_records(records: &[Record]) -> Result<Self>

Parses a set of DNS resource records.

Source

pub fn to_hickory_records( &self, origin: &str, ttl: u32, -) -> Result<impl Iterator<Item = Record> + '_>

Converts to a list of [hickory_resolver::proto::rr::Record] resource records.

+) -> Result<impl Iterator<Item = Record> + '_>

Converts to a list of [hickory_resolver::proto::rr::Record] resource records.

Source

pub fn to_pkarr_signed_packet( &self, secret_key: &SecretKey, ttl: u32, -) -> Result<SignedPacket>

Creates a [pkarr::SignedPacket]

+) -> Result<SignedPacket>

Creates a [pkarr::SignedPacket]

This constructs a DNS packet and signs it with a SecretKey.

Trait Implementations§

Source§

impl<T: Debug> Debug for TxtAttrs<T>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl From<&NodeInfo> for TxtAttrs<IrohAttr>

Source§

fn from(info: &NodeInfo) -> Self

Converts to this type from the input type.
Source§

impl From<&TxtAttrs<IrohAttr>> for NodeInfo

Source§

fn from(attrs: &TxtAttrs<IrohAttr>) -> Self

Converts to this type from the input type.
Source§

impl From<TxtAttrs<IrohAttr>> for NodeInfo

Source§

fn from(attrs: TxtAttrs<IrohAttr>) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

§

impl<T> Freeze for TxtAttrs<T>

§

impl<T> RefUnwindSafe for TxtAttrs<T>
where T: RefUnwindSafe,

§

impl<T> Send for TxtAttrs<T>
where diff --git a/pr/2806/docs/iroh/dns/trait.ResolverExt.html b/pr/2806/docs/iroh/dns/trait.ResolverExt.html index cfc62503be..edd38a285b 100644 --- a/pr/2806/docs/iroh/dns/trait.ResolverExt.html +++ b/pr/2806/docs/iroh/dns/trait.ResolverExt.html @@ -4,83 +4,83 @@ &self, host: N, timeout: Duration, - ) -> impl Future<Output = Result<impl Iterator<Item = IpAddr>>>; + ) -> impl Future<Output = Result<impl Iterator<Item = IpAddr>>>; fn lookup_ipv6<N: IntoName>( &self, host: N, timeout: Duration, - ) -> impl Future<Output = Result<impl Iterator<Item = IpAddr>>>; + ) -> impl Future<Output = Result<impl Iterator<Item = IpAddr>>>; fn lookup_ipv4_ipv6<N: IntoName + Clone>( &self, host: N, timeout: Duration, - ) -> impl Future<Output = Result<impl Iterator<Item = IpAddr>>>; + ) -> impl Future<Output = Result<impl Iterator<Item = IpAddr>>>; fn lookup_by_name( &self, name: &str, - ) -> impl Future<Output = Result<NodeAddr>>; + ) -> impl Future<Output = Result<NodeAddr>>; fn lookup_by_id( &self, node_id: &NodeId, origin: &str, - ) -> impl Future<Output = Result<NodeAddr>>; + ) -> impl Future<Output = Result<NodeAddr>>; fn lookup_ipv4_staggered<N: IntoName + Clone>( &self, host: N, timeout: Duration, delays_ms: &[u64], - ) -> impl Future<Output = Result<impl Iterator<Item = IpAddr>>>; + ) -> impl Future<Output = Result<impl Iterator<Item = IpAddr>>>; fn lookup_ipv6_staggered<N: IntoName + Clone>( &self, host: N, timeout: Duration, delays_ms: &[u64], - ) -> impl Future<Output = Result<impl Iterator<Item = IpAddr>>>; + ) -> impl Future<Output = Result<impl Iterator<Item = IpAddr>>>; fn lookup_ipv4_ipv6_staggered<N: IntoName + Clone>( &self, host: N, timeout: Duration, delays_ms: &[u64], - ) -> impl Future<Output = Result<impl Iterator<Item = IpAddr>>>; + ) -> impl Future<Output = Result<impl Iterator<Item = IpAddr>>>; fn lookup_by_name_staggered( &self, name: &str, delays_ms: &[u64], - ) -> impl Future<Output = Result<NodeAddr>>; + ) -> impl Future<Output = Result<NodeAddr>>; fn lookup_by_id_staggered( &self, node_id: &NodeId, origin: &str, delays_ms: &[u64], - ) -> impl Future<Output = Result<NodeAddr>>; + ) -> impl Future<Output = Result<NodeAddr>>; }
Expand description

Extension trait to DnsResolver.

Required Methods§

Source

fn lookup_ipv4<N: IntoName>( &self, host: N, timeout: Duration, -) -> impl Future<Output = Result<impl Iterator<Item = IpAddr>>>

Perform an ipv4 lookup with a timeout.

+) -> impl Future<Output = Result<impl Iterator<Item = IpAddr>>>

Perform an ipv4 lookup with a timeout.

Source

fn lookup_ipv6<N: IntoName>( &self, host: N, timeout: Duration, -) -> impl Future<Output = Result<impl Iterator<Item = IpAddr>>>

Perform an ipv6 lookup with a timeout.

+) -> impl Future<Output = Result<impl Iterator<Item = IpAddr>>>

Perform an ipv6 lookup with a timeout.

Source

fn lookup_ipv4_ipv6<N: IntoName + Clone>( &self, host: N, timeout: Duration, -) -> impl Future<Output = Result<impl Iterator<Item = IpAddr>>>

Race an ipv4 and ipv6 lookup with a timeout.

-
Source

fn lookup_by_name(&self, name: &str) -> impl Future<Output = Result<NodeAddr>>

Looks up node info by DNS name.

+) -> impl Future<Output = Result<impl Iterator<Item = IpAddr>>>

Race an ipv4 and ipv6 lookup with a timeout.

+
Source

fn lookup_by_name(&self, name: &str) -> impl Future<Output = Result<NodeAddr>>

Looks up node info by DNS name.

Source

fn lookup_by_id( &self, node_id: &NodeId, origin: &str, -) -> impl Future<Output = Result<NodeAddr>>

Looks up node info by NodeId and origin domain name.

+) -> impl Future<Output = Result<NodeAddr>>

Looks up node info by NodeId and origin domain name.

Source

fn lookup_ipv4_staggered<N: IntoName + Clone>( &self, host: N, timeout: Duration, delays_ms: &[u64], -) -> impl Future<Output = Result<impl Iterator<Item = IpAddr>>>

Perform an ipv4 lookup with a timeout in a staggered fashion.

+) -> impl Future<Output = Result<impl Iterator<Item = IpAddr>>>

Perform an ipv4 lookup with a timeout in a staggered fashion.

From the moment this function is called, each lookup is scheduled after the delays in delays_ms with the first call being done immediately. [200ms, 300ms] results in calls at T+0ms, T+200ms and T+300ms. The timeout is applied to each call individually. The @@ -90,7 +90,7 @@ host: N, timeout: Duration, delays_ms: &[u64], -) -> impl Future<Output = Result<impl Iterator<Item = IpAddr>>>

Perform an ipv6 lookup with a timeout in a staggered fashion.

+) -> impl Future<Output = Result<impl Iterator<Item = IpAddr>>>

Perform an ipv6 lookup with a timeout in a staggered fashion.

From the moment this function is called, each lookup is scheduled after the delays in delays_ms with the first call being done immediately. [200ms, 300ms] results in calls at T+0ms, T+200ms and T+300ms. The timeout is applied to each call individually. The @@ -100,7 +100,7 @@ host: N, timeout: Duration, delays_ms: &[u64], -) -> impl Future<Output = Result<impl Iterator<Item = IpAddr>>>

Race an ipv4 and ipv6 lookup with a timeout in a staggered fashion.

+) -> impl Future<Output = Result<impl Iterator<Item = IpAddr>>>

Race an ipv4 and ipv6 lookup with a timeout in a staggered fashion.

From the moment this function is called, each lookup is scheduled after the delays in delays_ms with the first call being done immediately. [200ms, 300ms] results in calls at T+0ms, T+200ms and T+300ms. The timeout is applied as stated in @@ -110,7 +110,7 @@ &self, name: &str, delays_ms: &[u64], -) -> impl Future<Output = Result<NodeAddr>>

Looks up node info by DNS name in a staggered fashion.

+) -> impl Future<Output = Result<NodeAddr>>

Looks up node info by DNS name in a staggered fashion.

From the moment this function is called, each lookup is scheduled after the delays in delays_ms with the first call being done immediately. [200ms, 300ms] results in calls at T+0ms, T+200ms and T+300ms. The result of the first successful call is returned, or a @@ -120,7 +120,7 @@ node_id: &NodeId, origin: &str, delays_ms: &[u64], -) -> impl Future<Output = Result<NodeAddr>>

Looks up node info by NodeId and origin domain name.

+) -> impl Future<Output = Result<NodeAddr>>

Looks up node info by NodeId and origin domain name.

From the moment this function is called, each lookup is scheduled after the delays in delays_ms with the first call being done immediately. [200ms, 300ms] results in calls at T+0ms, T+200ms and T+300ms. The result of the first successful call is returned, or a diff --git a/pr/2806/docs/iroh/dns/type.DnsResolver.html b/pr/2806/docs/iroh/dns/type.DnsResolver.html index c0abbdde53..da37645b54 100644 --- a/pr/2806/docs/iroh/dns/type.DnsResolver.html +++ b/pr/2806/docs/iroh/dns/type.DnsResolver.html @@ -3,20 +3,20 @@ &self, host: N, timeout: Duration, -) -> Result<impl Iterator<Item = IpAddr>>

Resolve IPv4 and IPv6 in parallel.

+) -> Result<impl Iterator<Item = IpAddr>>

Resolve IPv4 and IPv6 in parallel.

LookupIpStrategy::Ipv4AndIpv6 will wait for ipv6 resolution timeout, even if it is not usable on the stack, so we manually query both lookups concurrently and time them out individually.

-
Source§

async fn lookup_by_name(&self, name: &str) -> Result<NodeAddr>

Looks up node info by DNS name.

+
Source§

async fn lookup_by_name(&self, name: &str) -> Result<NodeAddr>

Looks up node info by DNS name.

The resource records returned for name must either contain an node_info::IROH_TXT_NAME TXT record or be a CNAME record that leads to an node_info::IROH_TXT_NAME TXT record.

-
Source§

async fn lookup_by_id(&self, node_id: &NodeId, origin: &str) -> Result<NodeAddr>

Looks up node info by NodeId and origin domain name.

+
Source§

async fn lookup_by_id(&self, node_id: &NodeId, origin: &str) -> Result<NodeAddr>

Looks up node info by NodeId and origin domain name.

Source§

async fn lookup_ipv4_staggered<N: IntoName + Clone>( &self, host: N, timeout: Duration, delays_ms: &[u64], -) -> Result<impl Iterator<Item = IpAddr>>

Perform an ipv4 lookup with a timeout in a staggered fashion.

+) -> Result<impl Iterator<Item = IpAddr>>

Perform an ipv4 lookup with a timeout in a staggered fashion.

From the moment this function is called, each lookup is scheduled after the delays in delays_ms with the first call being done immediately. [200ms, 300ms] results in calls at T+0ms, T+200ms and T+300ms. The timeout is applied to each call individually. The @@ -26,7 +26,7 @@ host: N, timeout: Duration, delays_ms: &[u64], -) -> Result<impl Iterator<Item = IpAddr>>

Perform an ipv6 lookup with a timeout in a staggered fashion.

+) -> Result<impl Iterator<Item = IpAddr>>

Perform an ipv6 lookup with a timeout in a staggered fashion.

From the moment this function is called, each lookup is scheduled after the delays in delays_ms with the first call being done immediately. [200ms, 300ms] results in calls at T+0ms, T+200ms and T+300ms. The timeout is applied to each call individually. The @@ -36,7 +36,7 @@ host: N, timeout: Duration, delays_ms: &[u64], -) -> Result<impl Iterator<Item = IpAddr>>

Race an ipv4 and ipv6 lookup with a timeout in a staggered fashion.

+) -> Result<impl Iterator<Item = IpAddr>>

Race an ipv4 and ipv6 lookup with a timeout in a staggered fashion.

From the moment this function is called, each lookup is scheduled after the delays in delays_ms with the first call being done immediately. [200ms, 300ms] results in calls at T+0ms, T+200ms and T+300ms. The timeout is applied as stated in @@ -46,7 +46,7 @@ &self, name: &str, delays_ms: &[u64], -) -> Result<NodeAddr>

Looks up node info by DNS name in a staggered fashion.

+) -> Result<NodeAddr>

Looks up node info by DNS name in a staggered fashion.

From the moment this function is called, each lookup is scheduled after the delays in delays_ms with the first call being done immediately. [200ms, 300ms] results in calls at T+0ms, T+200ms and T+300ms. The result of the first successful call is returned, or a @@ -56,7 +56,7 @@ node_id: &NodeId, origin: &str, delays_ms: &[u64], -) -> Result<NodeAddr>

Looks up node info by NodeId and origin domain name.

+) -> Result<NodeAddr>

Looks up node info by NodeId and origin domain name.

From the moment this function is called, each lookup is scheduled after the delays in delays_ms with the first call being done immediately. [200ms, 300ms] results in calls at T+0ms, T+200ms and T+300ms. The result of the first successful call is returned, or a @@ -65,8 +65,8 @@ &self, host: N, timeout: Duration, -) -> Result<impl Iterator<Item = IpAddr>>

Perform an ipv4 lookup with a timeout.
Source§

async fn lookup_ipv6<N: IntoName>( +) -> Result<impl Iterator<Item = IpAddr>>

Perform an ipv4 lookup with a timeout.
Source§

async fn lookup_ipv6<N: IntoName>( &self, host: N, timeout: Duration, -) -> Result<impl Iterator<Item = IpAddr>>

Perform an ipv6 lookup with a timeout.
\ No newline at end of file +) -> Result<impl Iterator<Item = IpAddr>>
Perform an ipv6 lookup with a timeout.
\ No newline at end of file diff --git a/pr/2806/docs/iroh/endpoint/enum.ConnectionType.html b/pr/2806/docs/iroh/endpoint/enum.ConnectionType.html index 8c68c84d1b..b82406176c 100644 --- a/pr/2806/docs/iroh/endpoint/enum.ConnectionType.html +++ b/pr/2806/docs/iroh/endpoint/enum.ConnectionType.html @@ -10,10 +10,10 @@

This is the case if we do have a UDP address, but are missing a recent confirmation that the address works.

§

None

We have no verified connection to this PublicKey

-

Trait Implementations§

Source§

impl Clone for ConnectionType

Source§

fn clone(&self) -> ConnectionType

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for ConnectionType

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for ConnectionType

Source§

fn default() -> ConnectionType

Returns the “default value” for a type. Read more
Source§

impl<'de> Deserialize<'de> for ConnectionType

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where - __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Display for ConnectionType

Source§

fn fmt(&self, __derive_more_f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for ConnectionType

Source§

fn eq(&self, other: &ConnectionType) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
Source§

impl Serialize for ConnectionType

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where - __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl Eq for ConnectionType

Source§

impl StructuralPartialEq for ConnectionType

Auto Trait Implementations§

§

impl Freeze for ConnectionType

§

impl RefUnwindSafe for ConnectionType

§

impl Send for ConnectionType

§

impl Sync for ConnectionType

§

impl Unpin for ConnectionType

§

impl UnwindSafe for ConnectionType

Blanket Implementations§

Source§

impl<T> Any for T
where +

Trait Implementations§

Source§

impl Clone for ConnectionType

Source§

fn clone(&self) -> ConnectionType

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for ConnectionType

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for ConnectionType

Source§

fn default() -> ConnectionType

Returns the “default value” for a type. Read more
Source§

impl<'de> Deserialize<'de> for ConnectionType

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where + __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Display for ConnectionType

Source§

fn fmt(&self, __derive_more_f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for ConnectionType

Source§

fn eq(&self, other: &ConnectionType) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
Source§

impl Serialize for ConnectionType

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where + __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl Eq for ConnectionType

Source§

impl StructuralPartialEq for ConnectionType

Auto Trait Implementations§

§

impl Freeze for ConnectionType

§

impl RefUnwindSafe for ConnectionType

§

impl Send for ConnectionType

§

impl Sync for ConnectionType

§

impl Unpin for ConnectionType

§

impl UnwindSafe for ConnectionType

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

§

fn implicit( @@ -45,6 +45,6 @@ V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a -[WithDispatch] wrapper. Read more
Source§

impl<T> DeserializeOwned for T
where - T: for<'de> Deserialize<'de>,

§

impl<T> ErasedDestructor for T
where +[WithDispatch] wrapper. Read more

Source§

impl<T> DeserializeOwned for T
where + T: for<'de> Deserialize<'de>,

§

impl<T> ErasedDestructor for T
where T: 'static,

§

impl<T> MaybeSendSync for T

\ No newline at end of file diff --git a/pr/2806/docs/iroh/endpoint/enum.ControlMsg.html b/pr/2806/docs/iroh/endpoint/enum.ControlMsg.html index 653c6baa68..48236406d4 100644 --- a/pr/2806/docs/iroh/endpoint/enum.ControlMsg.html +++ b/pr/2806/docs/iroh/endpoint/enum.ControlMsg.html @@ -6,10 +6,10 @@

Variants§

§

Ping

We received a Ping from the node.

§

Pong

We received a Pong from the node.

§

CallMeMaybe

We received a CallMeMaybe.

-

Trait Implementations§

Source§

impl Clone for ControlMsg

Source§

fn clone(&self) -> ControlMsg

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for ControlMsg

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for ControlMsg

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where - __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Display for ControlMsg

Source§

fn fmt(&self, __derive_more_f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for ControlMsg

Source§

fn eq(&self, other: &ControlMsg) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
Source§

impl Serialize for ControlMsg

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where - __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl Copy for ControlMsg

Source§

impl Eq for ControlMsg

Source§

impl StructuralPartialEq for ControlMsg

Auto Trait Implementations§

§

impl Freeze for ControlMsg

§

impl RefUnwindSafe for ControlMsg

§

impl Send for ControlMsg

§

impl Sync for ControlMsg

§

impl Unpin for ControlMsg

§

impl UnwindSafe for ControlMsg

Blanket Implementations§

Source§

impl<T> Any for T
where +

Trait Implementations§

Source§

impl Clone for ControlMsg

Source§

fn clone(&self) -> ControlMsg

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for ControlMsg

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for ControlMsg

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where + __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Display for ControlMsg

Source§

fn fmt(&self, __derive_more_f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for ControlMsg

Source§

fn eq(&self, other: &ControlMsg) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
Source§

impl Serialize for ControlMsg

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where + __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl Copy for ControlMsg

Source§

impl Eq for ControlMsg

Source§

impl StructuralPartialEq for ControlMsg

Auto Trait Implementations§

§

impl Freeze for ControlMsg

§

impl RefUnwindSafe for ControlMsg

§

impl Send for ControlMsg

§

impl Sync for ControlMsg

§

impl Unpin for ControlMsg

§

impl UnwindSafe for ControlMsg

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

§

fn implicit( @@ -41,6 +41,6 @@ V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a -[WithDispatch] wrapper. Read more
Source§

impl<T> DeserializeOwned for T
where - T: for<'de> Deserialize<'de>,

§

impl<T> ErasedDestructor for T
where +[WithDispatch] wrapper. Read more

Source§

impl<T> DeserializeOwned for T
where + T: for<'de> Deserialize<'de>,

§

impl<T> ErasedDestructor for T
where T: 'static,

§

impl<T> MaybeSendSync for T

\ No newline at end of file diff --git a/pr/2806/docs/iroh/endpoint/enum.Source.html b/pr/2806/docs/iroh/endpoint/enum.Source.html index 1c903a99bd..da626e409e 100644 --- a/pr/2806/docs/iroh/endpoint/enum.Source.html +++ b/pr/2806/docs/iroh/endpoint/enum.Source.html @@ -30,12 +30,12 @@

Fields

§name: String

The name of the discovery service that discovered the address.

§

NamedApp

Application layer with a specific name added the node directly.

Fields

§name: String

The name of the application that added the node

-

Trait Implementations§

Source§

impl Clone for Source

Source§

fn clone(&self) -> Source

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Source

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for Source

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where - __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Display for Source

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl Hash for Source

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where +

Trait Implementations§

Source§

impl Clone for Source

Source§

fn clone(&self) -> Source

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Source

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for Source

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where + __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Display for Source

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl Hash for Source

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for Source

Source§

fn eq(&self, other: &Source) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
Source§

impl Serialize for Source

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where - __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl Eq for Source

Source§

impl StructuralPartialEq for Source

Auto Trait Implementations§

§

impl Freeze for Source

§

impl RefUnwindSafe for Source

§

impl Send for Source

§

impl Sync for Source

§

impl Unpin for Source

§

impl UnwindSafe for Source

Blanket Implementations§

Source§

impl<T> Any for T
where +and should not be overridden without very good reason.

Source§

impl Serialize for Source

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where + __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl Eq for Source

Source§

impl StructuralPartialEq for Source

Auto Trait Implementations§

§

impl Freeze for Source

§

impl RefUnwindSafe for Source

§

impl Send for Source

§

impl Sync for Source

§

impl Unpin for Source

§

impl UnwindSafe for Source

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

§

fn implicit( @@ -67,6 +67,6 @@ V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a -[WithDispatch] wrapper. Read more
Source§

impl<T> DeserializeOwned for T
where - T: for<'de> Deserialize<'de>,

§

impl<T> ErasedDestructor for T
where +[WithDispatch] wrapper. Read more

Source§

impl<T> DeserializeOwned for T
where + T: for<'de> Deserialize<'de>,

§

impl<T> ErasedDestructor for T
where T: 'static,

§

impl<T> MaybeSendSync for T

\ No newline at end of file diff --git a/pr/2806/docs/iroh/endpoint/fn.get_remote_node_id.html b/pr/2806/docs/iroh/endpoint/fn.get_remote_node_id.html index 8628d63241..a03be0583a 100644 --- a/pr/2806/docs/iroh/endpoint/fn.get_remote_node_id.html +++ b/pr/2806/docs/iroh/endpoint/fn.get_remote_node_id.html @@ -1,2 +1,2 @@ -get_remote_node_id in iroh::endpoint - Rust
iroh::endpoint

Function get_remote_node_id

Source
pub fn get_remote_node_id(connection: &Connection) -> Result<PublicKey>
Expand description

Extract the PublicKey from the peer’s TLS certificate.

+get_remote_node_id in iroh::endpoint - Rust
iroh::endpoint

Function get_remote_node_id

Source
pub fn get_remote_node_id(connection: &Connection) -> Result<PublicKey>
Expand description

Extract the PublicKey from the peer’s TLS certificate.

\ No newline at end of file diff --git a/pr/2806/docs/iroh/endpoint/fn.make_server_config.html b/pr/2806/docs/iroh/endpoint/fn.make_server_config.html index 30efe0d664..bc01bf0240 100644 --- a/pr/2806/docs/iroh/endpoint/fn.make_server_config.html +++ b/pr/2806/docs/iroh/endpoint/fn.make_server_config.html @@ -3,5 +3,5 @@ alpn_protocols: Vec<Vec<u8>>, transport_config: Arc<TransportConfig>, keylog: bool, -) -> Result<ServerConfig>
Expand description

Creates a ServerConfig with the given secret key and limits.

+) -> Result<ServerConfig>
Expand description

Creates a ServerConfig with the given secret key and limits.

\ No newline at end of file diff --git a/pr/2806/docs/iroh/endpoint/struct.Builder.html b/pr/2806/docs/iroh/endpoint/struct.Builder.html index d4c7a5379a..c49a27298a 100644 --- a/pr/2806/docs/iroh/endpoint/struct.Builder.html +++ b/pr/2806/docs/iroh/endpoint/struct.Builder.html @@ -2,7 +2,7 @@

By default the endpoint will generate a new random SecretKey, which will result in a new NodeId.

To create the Endpoint call Builder::bind.

-

Implementations§

Source§

impl Builder

Source

pub async fn bind(self) -> Result<Endpoint>

Binds the magic endpoint.

+

Implementations§

Source§

impl Builder

Source

pub async fn bind(self) -> Result<Endpoint>

Binds the magic endpoint.

Source

pub fn bind_addr_v4(self, addr: SocketAddrV4) -> Self

Sets the IPv4 bind address.

Setting the port to 0 will use a random port. If the port specified is already in use, it will fallback to choosing a random port.

diff --git a/pr/2806/docs/iroh/endpoint/struct.Connecting.html b/pr/2806/docs/iroh/endpoint/struct.Connecting.html index a1e9ee1869..e46f1b3dd8 100644 --- a/pr/2806/docs/iroh/endpoint/struct.Connecting.html +++ b/pr/2806/docs/iroh/endpoint/struct.Connecting.html @@ -1,9 +1,9 @@ Connecting in iroh::endpoint - Rust
iroh::endpoint

Struct Connecting

Source
pub struct Connecting { /* private fields */ }
Expand description

In-progress connection attempt future

-

Implementations§

Source§

impl Connecting

Source

pub fn into_0rtt(self) -> Result<(Connection, ZeroRttAccepted), Self>

Convert into a 0-RTT or 0.5-RTT connection at the cost of weakened security.

-
Source

pub async fn handshake_data(&mut self) -> Result<Box<dyn Any>, ConnectionError>

Parameters negotiated during the handshake

+

Implementations§

Source§

impl Connecting

Source

pub fn into_0rtt(self) -> Result<(Connection, ZeroRttAccepted), Self>

Convert into a 0-RTT or 0.5-RTT connection at the cost of weakened security.

+
Source

pub async fn handshake_data(&mut self) -> Result<Box<dyn Any>, ConnectionError>

Parameters negotiated during the handshake

Source

pub fn local_ip(&self) -> Option<IpAddr>

The local IP address which was used when the peer established the connection.

Source

pub fn remote_address(&self) -> SocketAddr

The peer’s UDP address.

-
Source

pub async fn alpn(&mut self) -> Result<Vec<u8>>

Extracts the ALPN protocol from the peer’s handshake data.

+
Source

pub async fn alpn(&mut self) -> Result<Vec<u8>>

Extracts the ALPN protocol from the peer’s handshake data.

Trait Implementations§

Source§

impl Debug for Connecting

Source§

fn fmt(&self, __derive_more_f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Future for Connecting

Source§

type Output = Result<Connection, ConnectionError>

The type of value produced on completion.
Source§

fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Self::Output>

Attempts to resolve the future to a final value, registering the current task for wakeup if the value is not yet available. Read more
Source§

impl<'pin> Unpin for Connecting
where PinnedFieldsOf<__Connecting<'pin>>: Unpin,

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where diff --git a/pr/2806/docs/iroh/endpoint/struct.DirectAddrInfo.html b/pr/2806/docs/iroh/endpoint/struct.DirectAddrInfo.html index 68ce2a406b..9f67b0bb99 100644 --- a/pr/2806/docs/iroh/endpoint/struct.DirectAddrInfo.html +++ b/pr/2806/docs/iroh/endpoint/struct.DirectAddrInfo.html @@ -36,10 +36,10 @@ recorded this address.

The Duration will always indicate the most recent time the source recorded this address.

-

Trait Implementations§

Source§

impl Clone for DirectAddrInfo

Source§

fn clone(&self) -> DirectAddrInfo

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for DirectAddrInfo

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for DirectAddrInfo

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where - __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl PartialEq for DirectAddrInfo

Source§

fn eq(&self, other: &DirectAddrInfo) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
Source§

impl Serialize for DirectAddrInfo

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where - __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl Eq for DirectAddrInfo

Source§

impl StructuralPartialEq for DirectAddrInfo

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where +

Trait Implementations§

Source§

impl Clone for DirectAddrInfo

Source§

fn clone(&self) -> DirectAddrInfo

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for DirectAddrInfo

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for DirectAddrInfo

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where + __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl PartialEq for DirectAddrInfo

Source§

fn eq(&self, other: &DirectAddrInfo) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
Source§

impl Serialize for DirectAddrInfo

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where + __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl Eq for DirectAddrInfo

Source§

impl StructuralPartialEq for DirectAddrInfo

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

§

fn implicit( @@ -70,6 +70,6 @@ V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a -[WithDispatch] wrapper. Read more
Source§

impl<T> DeserializeOwned for T
where - T: for<'de> Deserialize<'de>,

§

impl<T> ErasedDestructor for T
where +[WithDispatch] wrapper. Read more

Source§

impl<T> DeserializeOwned for T
where + T: for<'de> Deserialize<'de>,

§

impl<T> ErasedDestructor for T
where T: 'static,

§

impl<T> MaybeSendSync for T

\ No newline at end of file diff --git a/pr/2806/docs/iroh/endpoint/struct.Endpoint.html b/pr/2806/docs/iroh/endpoint/struct.Endpoint.html index 1800062233..7f570bc7d5 100644 --- a/pr/2806/docs/iroh/endpoint/struct.Endpoint.html +++ b/pr/2806/docs/iroh/endpoint/struct.Endpoint.html @@ -15,14 +15,14 @@

Note that due to the light-weight properties of streams a stream will only be accepted once the initiating peer has sent some data on it.

Implementations§

Source§

impl Endpoint

Source

pub fn builder() -> Builder

Returns the builder for an Endpoint, with a production configuration.

-
Source

pub fn set_alpns(&self, alpns: Vec<Vec<u8>>) -> Result<()>

Sets the list of accepted ALPN protocols.

+
Source

pub fn set_alpns(&self, alpns: Vec<Vec<u8>>) -> Result<()>

Sets the list of accepted ALPN protocols.

This will only affect new incoming connections. Note that this overrides the current list of ALPNs.

Source

pub async fn connect( &self, node_addr: impl Into<NodeAddr>, alpn: &[u8], -) -> Result<Connection>

Connects to a remote Endpoint.

+) -> Result<Connection>

Connects to a remote Endpoint.

A value that can be converted into a NodeAddr is required. This can be either a NodeAddr, a NodeId or a iroh_base::ticket::NodeTicket.

The NodeAddr must contain the NodeId to dial and may also contain a RelayUrl @@ -45,7 +45,7 @@ the connection using Connecting::alpn.

The returned future will yield None if the endpoint is closed by calling Endpoint::close.

-
Source

pub fn add_node_addr(&self, node_addr: NodeAddr) -> Result<()>

Informs this Endpoint about addresses of the iroh node.

+
Source

pub fn add_node_addr(&self, node_addr: NodeAddr) -> Result<()>

Informs this Endpoint about addresses of the iroh node.

This updates the local state for the remote node. If the provided NodeAddr contains a RelayUrl this will be used as the new relay server for this node. If it contains any new IP endpoints they will also be stored and tried when next @@ -59,7 +59,7 @@

§Errors
&self, node_addr: NodeAddr, source: &'static str, -) -> Result<()>

Informs this Endpoint about addresses of the iroh node, noting the source.

+) -> Result<()>

Informs this Endpoint about addresses of the iroh node, noting the source.

This updates the local state for the remote node. If the provided NodeAddr contains a RelayUrl this will be used as the new relay server for this node. If it contains any new IP endpoints they will also be stored and tried when next connecting to this node. Any @@ -72,7 +72,7 @@

§Errors
Source

pub fn node_id(&self) -> NodeId

Returns the node id of this endpoint.

This ID is the unique addressing information of this node and other peers must know it to be able to connect to this node.

-
Source

pub async fn node_addr(&self) -> Result<NodeAddr>

Returns the current NodeAddr for this endpoint.

+
Source

pub async fn node_addr(&self) -> Result<NodeAddr>

Returns the current NodeAddr for this endpoint.

The returned NodeAddr will have the current RelayUrl and direct addresses as they would be returned by Endpoint::home_relay and Endpoint::direct_addresses.

@@ -134,7 +134,7 @@
§Examples
the best path to a node. This returns all the nodes it knows about, regardless of whether a connection was ever made or is even possible.

See also Endpoint::remote_info to only retrieve information about a single node.

-
Source

pub fn conn_type(&self, node_id: NodeId) -> Result<Watcher<ConnectionType>>

Returns a Watcher that reports the current connection type and any changes for +

Source

pub fn conn_type(&self, node_id: NodeId) -> Result<Watcher<ConnectionType>>

Returns a Watcher that reports the current connection type and any changes for given remote node.

This watcher allows observing a stream of ConnectionType items by calling Watcher::stream(). If the underlying connection to a remote node changes, it will @@ -165,7 +165,7 @@

§Errors
this.

Even when the network did not change, or iroh was already able to detect the network change itself, there is no harm in calling this function.

-
Source

pub async fn close(&self) -> Result<()>

Closes the QUIC endpoint and the magic socket.

+
Source

pub async fn close(&self) -> Result<()>

Closes the QUIC endpoint and the magic socket.

This will close any remaining open Connections with an error code of 0 and an empty reason. Though it is best practice to close those explicitly before with a custom error code and reason.

diff --git a/pr/2806/docs/iroh/endpoint/struct.Incoming.html b/pr/2806/docs/iroh/endpoint/struct.Incoming.html index 4b670fa329..78a9429359 100644 --- a/pr/2806/docs/iroh/endpoint/struct.Incoming.html +++ b/pr/2806/docs/iroh/endpoint/struct.Incoming.html @@ -1,6 +1,6 @@ Incoming in iroh::endpoint - Rust
iroh::endpoint

Struct Incoming

Source
pub struct Incoming { /* private fields */ }
Expand description

An incoming connection for which the server has not yet begun its parts of the handshake.

-

Implementations§

Source§

impl Incoming

Source

pub fn accept(self) -> Result<Connecting, ConnectionError>

Attempts to accept this incoming connection (an error may still occur).

+

Implementations§

Source§

impl Incoming

Source

pub fn accept(self) -> Result<Connecting, ConnectionError>

Attempts to accept this incoming connection (an error may still occur).

Errors occurring here are likely not caused by the application or remote. The QUIC connection listens on a normal UDP socket and any reachable network endpoint can send datagrams to it, solicited or not. Even if the first few bytes look like a @@ -10,10 +10,10 @@

Source

pub fn accept_with( self, server_config: Arc<ServerConfig>, -) -> Result<Connecting, ConnectionError>

Accepts this incoming connection using a custom configuration.

+) -> Result<Connecting, ConnectionError>

Accepts this incoming connection using a custom configuration.

See accept() for more details.

Source

pub fn refuse(self)

Rejects this incoming connection attempt.

-
Source

pub fn retry(self) -> Result<(), RetryError>

Responds with a retry packet.

+
Source

pub fn retry(self) -> Result<(), RetryError>

Responds with a retry packet.

This requires the client to retry with address validation.

Errors if remote_address_validated() is true.

Source

pub fn ignore(self)

Ignores this incoming connection attempt, not sending any packet in response.

diff --git a/pr/2806/docs/iroh/endpoint/struct.RemoteInfo.html b/pr/2806/docs/iroh/endpoint/struct.RemoteInfo.html index 37adfb1877..ed5367d41d 100644 --- a/pr/2806/docs/iroh/endpoint/struct.RemoteInfo.html +++ b/pr/2806/docs/iroh/endpoint/struct.RemoteInfo.html @@ -31,10 +31,10 @@ for each Source variant, if different addresses were discovered from the same Source at different times.

The list is sorted from least to most recent Source.

-

Trait Implementations§

Source§

impl Clone for RemoteInfo

Source§

fn clone(&self) -> RemoteInfo

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for RemoteInfo

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for RemoteInfo

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where - __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl From<RemoteInfo> for NodeAddr

Source§

fn from(info: RemoteInfo) -> Self

Converts to this type from the input type.
Source§

impl PartialEq for RemoteInfo

Source§

fn eq(&self, other: &RemoteInfo) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
Source§

impl Serialize for RemoteInfo

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where - __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl Eq for RemoteInfo

Source§

impl StructuralPartialEq for RemoteInfo

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where +

Trait Implementations§

Source§

impl Clone for RemoteInfo

Source§

fn clone(&self) -> RemoteInfo

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for RemoteInfo

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for RemoteInfo

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where + __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl From<RemoteInfo> for NodeAddr

Source§

fn from(info: RemoteInfo) -> Self

Converts to this type from the input type.
Source§

impl PartialEq for RemoteInfo

Source§

fn eq(&self, other: &RemoteInfo) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
Source§

impl Serialize for RemoteInfo

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where + __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl Eq for RemoteInfo

Source§

impl StructuralPartialEq for RemoteInfo

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

§

fn implicit( @@ -65,6 +65,6 @@ V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a -[WithDispatch] wrapper. Read more
Source§

impl<T> DeserializeOwned for T
where - T: for<'de> Deserialize<'de>,

§

impl<T> ErasedDestructor for T
where +[WithDispatch] wrapper. Read more

Source§

impl<T> DeserializeOwned for T
where + T: for<'de> Deserialize<'de>,

§

impl<T> ErasedDestructor for T
where T: 'static,

§

impl<T> MaybeSendSync for T

\ No newline at end of file diff --git a/pr/2806/docs/iroh/protocol/struct.Router.html b/pr/2806/docs/iroh/protocol/struct.Router.html index ed3aa72978..f3befd8e4d 100644 --- a/pr/2806/docs/iroh/protocol/struct.Router.html +++ b/pr/2806/docs/iroh/protocol/struct.Router.html @@ -19,7 +19,7 @@

Implementations§

Source§

impl Router

Source

pub fn builder(endpoint: Endpoint) -> RouterBuilder

Creates a new Router using given Endpoint.

Source

pub fn endpoint(&self) -> &Endpoint

Returns the Endpoint stored in this router.

Source

pub fn is_shutdown(&self) -> bool

Checks if the router is already shutdown.

-
Source

pub async fn shutdown(&self) -> Result<()>

Shuts down the accept loop cleanly.

+
Source

pub async fn shutdown(&self) -> Result<()>

Shuts down the accept loop cleanly.

When this function returns, all ProtocolHandlers will be shutdown and Endpoint::close will have been called.

If already shutdown, it returns Ok.

diff --git a/pr/2806/docs/iroh/protocol/struct.RouterBuilder.html b/pr/2806/docs/iroh/protocol/struct.RouterBuilder.html index 1e8f680214..64a74392b3 100644 --- a/pr/2806/docs/iroh/protocol/struct.RouterBuilder.html +++ b/pr/2806/docs/iroh/protocol/struct.RouterBuilder.html @@ -7,7 +7,7 @@ ) -> Self

Configures the router to accept the ProtocolHandler when receiving a connection with this alpn.

Source

pub fn endpoint(&self) -> &Endpoint

Returns the Endpoint of the node.

-
Source

pub async fn spawn(self) -> Result<Router>

Spawns an accept loop and returns a handle to it encapsulated as the Router.

+
Source

pub async fn spawn(self) -> Result<Router>

Spawns an accept loop and returns a handle to it encapsulated as the Router.

Trait Implementations§

Source§

impl Debug for RouterBuilder

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl Freeze for RouterBuilder

§

impl !RefUnwindSafe for RouterBuilder

§

impl Send for RouterBuilder

§

impl Sync for RouterBuilder

§

impl Unpin for RouterBuilder

§

impl !UnwindSafe for RouterBuilder

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where diff --git a/pr/2806/docs/iroh/protocol/trait.ProtocolHandler.html b/pr/2806/docs/iroh/protocol/trait.ProtocolHandler.html index 12e5971eb0..c318ce9fe0 100644 --- a/pr/2806/docs/iroh/protocol/trait.ProtocolHandler.html +++ b/pr/2806/docs/iroh/protocol/trait.ProtocolHandler.html @@ -4,7 +4,7 @@ + Debug + 'static { // Required method - fn accept(&self, conn: Connecting) -> BoxedFuture<Result<()>>; + fn accept(&self, conn: Connecting) -> BoxedFuture<Result<()>>; // Provided method fn shutdown(&self) -> BoxedFuture<()> { ... } @@ -14,7 +14,7 @@

Implement this trait on a struct that should handle incoming connections. The protocol handler must then be registered on the node for an ALPN protocol with crate::protocol::RouterBuilder::accept.

-

Required Methods§

Source

fn accept(&self, conn: Connecting) -> BoxedFuture<Result<()>>

Handle an incoming connection.

+

Required Methods§

Source

fn accept(&self, conn: Connecting) -> BoxedFuture<Result<()>>

Handle an incoming connection.

This runs on a freshly spawned tokio task so this can be long-running.

Provided Methods§

Source

fn shutdown(&self) -> BoxedFuture<()>

Called when the node shuts down.

-

Implementations on Foreign Types§

Source§

impl<T: ProtocolHandler> ProtocolHandler for Box<T>

Source§

fn accept(&self, conn: Connecting) -> BoxedFuture<Result<()>>

Source§

fn shutdown(&self) -> BoxedFuture<()>

Source§

impl<T: ProtocolHandler> ProtocolHandler for Arc<T>

Source§

fn accept(&self, conn: Connecting) -> BoxedFuture<Result<()>>

Source§

fn shutdown(&self) -> BoxedFuture<()>

Implementors§

\ No newline at end of file +

Implementations on Foreign Types§

Source§

impl<T: ProtocolHandler> ProtocolHandler for Box<T>

Source§

fn accept(&self, conn: Connecting) -> BoxedFuture<Result<()>>

Source§

fn shutdown(&self) -> BoxedFuture<()>

Source§

impl<T: ProtocolHandler> ProtocolHandler for Arc<T>

Source§

fn accept(&self, conn: Connecting) -> BoxedFuture<Result<()>>

Source§

fn shutdown(&self) -> BoxedFuture<()>

Implementors§

\ No newline at end of file diff --git a/pr/2806/docs/iroh/struct.NodeAddr.html b/pr/2806/docs/iroh/struct.NodeAddr.html index 1341528d55..f105b5ee78 100644 --- a/pr/2806/docs/iroh/struct.NodeAddr.html +++ b/pr/2806/docs/iroh/struct.NodeAddr.html @@ -41,10 +41,10 @@
Source

pub fn is_empty(&self) -> bool

Returns true, if only a NodeId is present.

Source

pub fn direct_addresses(&self) -> impl Iterator<Item = &SocketAddr>

Returns the direct addresses of this peer.

Source

pub fn relay_url(&self) -> Option<&RelayUrl>

Returns the relay url of this peer.

-

Trait Implementations§

Source§

impl Clone for NodeAddr

Source§

fn clone(&self) -> NodeAddr

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for NodeAddr

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for NodeAddr

Trait Implementations§

Source§

impl Clone for NodeAddr

Source§

fn clone(&self) -> NodeAddr

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for NodeAddr

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for NodeAddr

Source§

fn deserialize<__D>( __deserializer: __D, -) -> Result<NodeAddr, <__D as Deserializer<'de>>::Error>
where - __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl From<(PublicKey, Option<RelayUrl>, &[SocketAddr])> for NodeAddr

Source§

fn from(value: (PublicKey, Option<RelayUrl>, &[SocketAddr])) -> NodeAddr

Converts to this type from the input type.
Source§

impl From<NodeInfo> for NodeAddr

Source§

fn from(value: NodeInfo) -> Self

Converts to this type from the input type.
Source§

impl From<NodeTicket> for NodeAddr

Source§

fn from(ticket: NodeTicket) -> NodeAddr

Returns the addressing info from given ticket.

+) -> Result<NodeAddr, <__D as Deserializer<'de>>::Error>
where + __D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Source§

impl From<(PublicKey, Option<RelayUrl>, &[SocketAddr])> for NodeAddr

Source§

fn from(value: (PublicKey, Option<RelayUrl>, &[SocketAddr])) -> NodeAddr

Converts to this type from the input type.
Source§

impl From<NodeInfo> for NodeAddr

Source§

fn from(value: NodeInfo) -> Self

Converts to this type from the input type.
Source§

impl From<NodeTicket> for NodeAddr

Source§

fn from(ticket: NodeTicket) -> NodeAddr

Returns the addressing info from given ticket.

Source§

impl From<PublicKey> for NodeAddr

Source§

fn from(node_id: PublicKey) -> NodeAddr

Converts to this type from the input type.
Source§

impl From<RemoteInfo> for NodeAddr

Source§

fn from(info: RemoteInfo) -> Self

Converts to this type from the input type.
Source§

impl Ord for NodeAddr

Source§

fn cmp(&self, other: &NodeAddr) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · Source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · Source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · Source§

fn clamp(self, min: Self, max: Self) -> Self
where @@ -52,11 +52,11 @@ and should not be overridden without very good reason.

Source§

impl PartialOrd for NodeAddr

Source§

fn partial_cmp(&self, other: &NodeAddr) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · Source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · Source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · Source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · Source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by -the >= operator. Read more
Source§

impl Serialize for NodeAddr

Source§

fn serialize<__S>( +the >= operator. Read more

Source§

impl Serialize for NodeAddr

Source§

fn serialize<__S>( &self, __serializer: __S, -) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>
where - __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl Eq for NodeAddr

Source§

impl StructuralPartialEq for NodeAddr

Auto Trait Implementations§

§

impl Freeze for NodeAddr

§

impl RefUnwindSafe for NodeAddr

§

impl Send for NodeAddr

§

impl Sync for NodeAddr

§

impl Unpin for NodeAddr

§

impl UnwindSafe for NodeAddr

Blanket Implementations§

Source§

impl<T> Any for T
where +) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>
where + __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl Eq for NodeAddr

Source§

impl StructuralPartialEq for NodeAddr

Auto Trait Implementations§

§

impl Freeze for NodeAddr

§

impl RefUnwindSafe for NodeAddr

§

impl Send for NodeAddr

§

impl Sync for NodeAddr

§

impl Unpin for NodeAddr

§

impl UnwindSafe for NodeAddr

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

§

fn implicit( @@ -89,6 +89,6 @@ V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a -[WithDispatch] wrapper. Read more
Source§

impl<T> DeserializeOwned for T
where - T: for<'de> Deserialize<'de>,

§

impl<T> ErasedDestructor for T
where +[WithDispatch] wrapper. Read more

Source§

impl<T> DeserializeOwned for T
where + T: for<'de> Deserialize<'de>,

§

impl<T> ErasedDestructor for T
where T: 'static,

§

impl<T> MaybeSendSync for T

\ No newline at end of file diff --git a/pr/2806/docs/iroh/struct.PublicKey.html b/pr/2806/docs/iroh/struct.PublicKey.html index 389f747cee..2b23745c99 100644 --- a/pr/2806/docs/iroh/struct.PublicKey.html +++ b/pr/2806/docs/iroh/struct.PublicKey.html @@ -16,10 +16,10 @@
§Return

Returns Ok(()) if the signature is valid, and Err otherwise.

Source

pub fn fmt_short(&self) -> String

Convert to a base32 string limited to the first 10 bytes for a friendly string representation of the key.

-

Trait Implementations§

Source§

impl AsRef<[u8]> for PublicKey

Source§

fn as_ref(&self) -> &[u8]

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl Clone for PublicKey

Source§

fn clone(&self) -> PublicKey

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for PublicKey

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for PublicKey

Trait Implementations§

Source§

impl AsRef<[u8]> for PublicKey

Source§

fn as_ref(&self) -> &[u8]

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl Clone for PublicKey

Source§

fn clone(&self) -> PublicKey

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for PublicKey

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for PublicKey

Source§

fn deserialize<D>( deserializer: D, -) -> Result<PublicKey, <D as Deserializer<'de>>::Error>
where - D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Display for PublicKey

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl From<PublicKey> for NodeAddr

Source§

fn from(node_id: PublicKey) -> NodeAddr

Converts to this type from the input type.
Source§

impl From<VerifyingKey> for PublicKey

Source§

fn from(verifying_key: VerifyingKey) -> PublicKey

Converts to this type from the input type.
Source§

impl FromStr for PublicKey

Deserialises the PublicKey from it’s base32 encoding.

+) -> Result<PublicKey, <D as Deserializer<'de>>::Error>
where + D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Source§

impl Display for PublicKey

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl From<PublicKey> for NodeAddr

Source§

fn from(node_id: PublicKey) -> NodeAddr

Converts to this type from the input type.
Source§

impl From<VerifyingKey> for PublicKey

Source§

fn from(verifying_key: VerifyingKey) -> PublicKey

Converts to this type from the input type.
Source§

impl FromStr for PublicKey

Deserialises the PublicKey from it’s base32 encoding.

Display is capable of serialising this format.

Source§

type Err = KeyParsingError

The associated error which can be returned from parsing.
Source§

fn from_str(s: &str) -> Result<PublicKey, <PublicKey as FromStr>::Err>

Parses a string s to return a value of this type. Read more
Source§

impl Hash for PublicKey

Source§

fn hash<H>(&self, state: &mut H)
where H: Hasher,

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where @@ -31,11 +31,11 @@
§Return
and should not be overridden without very good reason.

Source§

impl PartialOrd for PublicKey

Source§

fn partial_cmp(&self, other: &PublicKey) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · Source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · Source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · Source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · Source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by -the >= operator. Read more
Source§

impl Serialize for PublicKey

Source§

fn serialize<S>( +the >= operator. Read more

Source§

impl Serialize for PublicKey

Source§

fn serialize<S>( &self, serializer: S, -) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>
where - S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl TryFrom<&[u8]> for PublicKey

Source§

type Error = Error

The type returned in the event of a conversion error.
Source§

fn try_from( +) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>
where + S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl TryFrom<&[u8]> for PublicKey

Source§

type Error = Error

The type returned in the event of a conversion error.
Source§

fn try_from( bytes: &[u8], ) -> Result<PublicKey, <PublicKey as TryFrom<&[u8]>>::Error>

Performs the conversion.
Source§

impl TryFrom<&[u8; 32]> for PublicKey

Source§

type Error = Error

The type returned in the event of a conversion error.
Source§

fn try_from( bytes: &[u8; 32], @@ -78,7 +78,7 @@

§Return
V: MultiLane<T>,
§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a -[WithDispatch] wrapper. Read more
Source§

impl<T> DeserializeOwned for T
where - T: for<'de> Deserialize<'de>,

§

impl<T> ErasedDestructor for T
where +[WithDispatch] wrapper. Read more
Source§

impl<T> DeserializeOwned for T
where + T: for<'de> Deserialize<'de>,

§

impl<T> ErasedDestructor for T
where T: 'static,

§

impl<T> MaybeSendSync for T

Source§

impl<T> RuleType for T
where T: Copy + Debug + Eq + Hash + Ord,

\ No newline at end of file diff --git a/pr/2806/docs/iroh/struct.RelayMap.html b/pr/2806/docs/iroh/struct.RelayMap.html index 263b2b3913..07fe891628 100644 --- a/pr/2806/docs/iroh/struct.RelayMap.html +++ b/pr/2806/docs/iroh/struct.RelayMap.html @@ -17,7 +17,7 @@ relay nodes are specified at <../../docs/relay_nodes.md>

pub fn from_nodes<I>( value: impl IntoIterator<Item = I>, -) -> Result<RelayMap, Error>
where +) -> Result<RelayMap, Error>
where I: Into<Arc<RelayNode>>,

Constructs the RelayMap from an iterator of RelayNodes.

Trait Implementations§

§

impl Clone for RelayMap

§

fn clone(&self) -> RelayMap

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
§

impl Debug for RelayMap

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl Display for RelayMap

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl PartialEq for RelayMap

§

fn eq(&self, other: &RelayMap) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
§

impl Eq for RelayMap

§

impl StructuralPartialEq for RelayMap

Auto Trait Implementations§

§

impl Freeze for RelayMap

§

impl RefUnwindSafe for RelayMap

§

impl Send for RelayMap

§

impl Sync for RelayMap

§

impl Unpin for RelayMap

§

impl UnwindSafe for RelayMap

Blanket Implementations§

Source§

impl<T> Any for T
where diff --git a/pr/2806/docs/iroh/struct.RelayNode.html b/pr/2806/docs/iroh/struct.RelayNode.html index 31841597d5..44a4f3c45d 100644 --- a/pr/2806/docs/iroh/struct.RelayNode.html +++ b/pr/2806/docs/iroh/struct.RelayNode.html @@ -14,21 +14,21 @@
§quic: Option<RelayQuicConfig>

Configuration to speak to the QUIC endpoint on the relay server.

When None, we will not attempt to do QUIC address discovery with this relay server.

-

Trait Implementations§

§

impl Clone for RelayNode

§

fn clone(&self) -> RelayNode

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
§

impl Debug for RelayNode

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl<'de> Deserialize<'de> for RelayNode

§

fn deserialize<__D>( +

Trait Implementations§

§

impl Clone for RelayNode

§

fn clone(&self) -> RelayNode

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
§

impl Debug for RelayNode

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl<'de> Deserialize<'de> for RelayNode

§

fn deserialize<__D>( __deserializer: __D, -) -> Result<RelayNode, <__D as Deserializer<'de>>::Error>
where - __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
§

impl Display for RelayNode

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl Ord for RelayNode

§

fn cmp(&self, other: &RelayNode) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · Source§

fn max(self, other: Self) -> Self
where +) -> Result<RelayNode, <__D as Deserializer<'de>>::Error>
where + __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
§

impl Display for RelayNode

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl Ord for RelayNode

§

fn cmp(&self, other: &RelayNode) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · Source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · Source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · Source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized,

Restrict a value to a certain interval. Read more
§

impl PartialEq for RelayNode

§

fn eq(&self, other: &RelayNode) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
§

impl PartialOrd for RelayNode

§

fn partial_cmp(&self, other: &RelayNode) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · Source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · Source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · Source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · Source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by -the >= operator. Read more
§

impl Serialize for RelayNode

§

fn serialize<__S>( +the >= operator. Read more

§

impl Serialize for RelayNode

§

fn serialize<__S>( &self, __serializer: __S, -) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>
where - __S: Serializer,

Serialize this value into the given Serde serializer. Read more
§

impl Eq for RelayNode

§

impl StructuralPartialEq for RelayNode

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where +) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>
where + __S: Serializer,

Serialize this value into the given Serde serializer. Read more
§

impl Eq for RelayNode

§

impl StructuralPartialEq for RelayNode

Auto Trait Implementations§

§

impl Freeze for RelayNode

§

impl RefUnwindSafe for RelayNode

§

impl Send for RelayNode

§

impl Sync for RelayNode

§

impl Unpin for RelayNode

§

impl UnwindSafe for RelayNode

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

§

fn implicit( @@ -62,6 +62,6 @@ V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a -[WithDispatch] wrapper. Read more
Source§

impl<T> DeserializeOwned for T
where - T: for<'de> Deserialize<'de>,

§

impl<T> ErasedDestructor for T
where +[WithDispatch] wrapper. Read more

Source§

impl<T> DeserializeOwned for T
where + T: for<'de> Deserialize<'de>,

§

impl<T> ErasedDestructor for T
where T: 'static,

§

impl<T> MaybeSendSync for T

\ No newline at end of file diff --git a/pr/2806/docs/iroh/struct.RelayUrl.html b/pr/2806/docs/iroh/struct.RelayUrl.html index 94bf80fa46..8f18bf2dfe 100644 --- a/pr/2806/docs/iroh/struct.RelayUrl.html +++ b/pr/2806/docs/iroh/struct.RelayUrl.html @@ -425,8 +425,8 @@
§Examples
Source

pub fn serialize_internal<S>( &self, serializer: S, -) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>
where - S: Serializer,

Available on crate feature serde only.

Serialize with Serde using the internal representation of the Url struct.

+) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>
where + S: Serializer,
Available on crate feature serde only.

Serialize with Serde using the internal representation of the Url struct.

The corresponding deserialize_internal method sacrifices some invariant-checking for speed, compared to the Deserialize trait impl.

This method is only available if the serde Cargo feature is enabled.

@@ -446,13 +446,13 @@
§Examples

Trait Implementations§

Source§

impl Clone for RelayUrl

Source§

fn clone(&self) -> RelayUrl

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for RelayUrl

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl Deref for RelayUrl

Dereferences to the wrapped Url.

Note that DerefMut is not implemented on purpose, so this type has more flexibility to change the inner later.

-
Source§

type Target = Url

The resulting type after dereferencing.
Source§

fn deref(&self) -> &<RelayUrl as Deref>::Target

Dereferences the value.
Source§

impl<'de> Deserialize<'de> for RelayUrl

Source§

type Target = Url

The resulting type after dereferencing.
Source§

fn deref(&self) -> &<RelayUrl as Deref>::Target

Dereferences the value.
Source§

impl<'de> Deserialize<'de> for RelayUrl

Source§

fn deserialize<__D>( __deserializer: __D, -) -> Result<RelayUrl, <__D as Deserializer<'de>>::Error>
where - __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Display for RelayUrl

Source§

fn fmt(&self, __derive_more_f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl From<RelayUrl> for Url

Source§

fn from(value: RelayUrl) -> Url

Converts to this type from the input type.
Source§

impl From<Url> for RelayUrl

Source§

fn from(url: Url) -> RelayUrl

Converts to this type from the input type.
Source§

impl FromStr for RelayUrl

Support for parsing strings directly.

+) -> Result<RelayUrl, <__D as Deserializer<'de>>::Error>
where + __D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Source§

impl Display for RelayUrl

Source§

fn fmt(&self, __derive_more_f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl From<RelayUrl> for Url

Source§

fn from(value: RelayUrl) -> Url

Converts to this type from the input type.
Source§

impl From<Url> for RelayUrl

Source§

fn from(url: Url) -> RelayUrl

Converts to this type from the input type.
Source§

impl FromStr for RelayUrl

Support for parsing strings directly.

If you need more control over the error first create a Url and use RelayUrl::from instead.

-
Source§

type Err = Error

The associated error which can be returned from parsing.
Source§

fn from_str(s: &str) -> Result<RelayUrl, <RelayUrl as FromStr>::Err>

Parses a string s to return a value of this type. Read more
Source§

impl Hash for RelayUrl

Source§

fn hash<__H>(&self, state: &mut __H)
where +
Source§

type Err = Error

The associated error which can be returned from parsing.
Source§

fn from_str(s: &str) -> Result<RelayUrl, <RelayUrl as FromStr>::Err>

Parses a string s to return a value of this type. Read more

Source§

impl Hash for RelayUrl

Source§

fn hash<__H>(&self, state: &mut __H)
where __H: Hasher,

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl Ord for RelayUrl

Source§

fn cmp(&self, other: &RelayUrl) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · Source§

fn max(self, other: Self) -> Self
where @@ -462,11 +462,11 @@
§Examples

Source§

impl PartialOrd for RelayUrl

Source§

fn partial_cmp(&self, other: &RelayUrl) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · Source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · Source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · Source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · Source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by -the >= operator. Read more
Source§

impl Serialize for RelayUrl

Source§

fn serialize<__S>( +the >= operator. Read more

Source§

impl Serialize for RelayUrl

Source§

fn serialize<__S>( &self, __serializer: __S, -) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>
where - __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl Eq for RelayUrl

Source§

impl StructuralPartialEq for RelayUrl

Auto Trait Implementations§

§

impl Freeze for RelayUrl

§

impl RefUnwindSafe for RelayUrl

§

impl Send for RelayUrl

§

impl Sync for RelayUrl

§

impl Unpin for RelayUrl

§

impl UnwindSafe for RelayUrl

Blanket Implementations§

Source§

impl<T> Any for T
where +) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>
where + __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl Eq for RelayUrl

Source§

impl StructuralPartialEq for RelayUrl

Auto Trait Implementations§

§

impl Freeze for RelayUrl

§

impl RefUnwindSafe for RelayUrl

§

impl Send for RelayUrl

§

impl Sync for RelayUrl

§

impl Unpin for RelayUrl

§

impl UnwindSafe for RelayUrl

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

§

fn implicit( @@ -502,6 +502,6 @@

§Examples
§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a -[WithDispatch] wrapper. Read more
Source§

impl<T> DeserializeOwned for T
where - T: for<'de> Deserialize<'de>,

§

impl<T> ErasedDestructor for T
where +[WithDispatch] wrapper. Read more

Source§

impl<T> DeserializeOwned for T
where + T: for<'de> Deserialize<'de>,

§

impl<T> ErasedDestructor for T
where T: 'static,

§

impl<T> MaybeSendSync for T

\ No newline at end of file diff --git a/pr/2806/docs/iroh/struct.SecretKey.html b/pr/2806/docs/iroh/struct.SecretKey.html index 6fbc7eb804..7f18461b22 100644 --- a/pr/2806/docs/iroh/struct.SecretKey.html +++ b/pr/2806/docs/iroh/struct.SecretKey.html @@ -5,20 +5,20 @@
Source

pub fn generate_with_rng<R>(csprng: &mut R) -> SecretKey
where R: CryptoRngCore + ?Sized,

Generate a new SecretKey with a randomness generator.

Source

pub fn to_openssh(&self) -> Result<Zeroizing<String>, Error>

Serialise this key to OpenSSH format.

-
Source

pub fn try_from_openssh<T>(data: T) -> Result<SecretKey, Error>
where +

Source

pub fn try_from_openssh<T>(data: T) -> Result<SecretKey, Error>
where T: AsRef<[u8]>,

Deserialise this key from OpenSSH format.

Source

pub fn sign(&self, msg: &[u8]) -> Signature

Sign the given message and return a digital signature

Source

pub fn to_bytes(&self) -> [u8; 32]

Convert this to the bytes representing the secret part. The public part can always be recovered.

Source

pub fn from_bytes(bytes: &[u8; 32]) -> SecretKey

Create a secret key from its byte representation.

-

Trait Implementations§

Source§

impl Clone for SecretKey

Source§

fn clone(&self) -> SecretKey

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for SecretKey

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for SecretKey

Trait Implementations§

Source§

impl Clone for SecretKey

Source§

fn clone(&self) -> SecretKey

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for SecretKey

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for SecretKey

Source§

fn deserialize<D>( deserializer: D, -) -> Result<SecretKey, <D as Deserializer<'de>>::Error>
where - D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Display for SecretKey

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl From<[u8; 32]> for SecretKey

Source§

fn from(value: [u8; 32]) -> SecretKey

Converts to this type from the input type.
Source§

impl From<SigningKey> for SecretKey

Source§

fn from(secret: SigningKey) -> SecretKey

Converts to this type from the input type.
Source§

impl FromStr for SecretKey

Source§

type Err = KeyParsingError

The associated error which can be returned from parsing.
Source§

fn from_str(s: &str) -> Result<SecretKey, <SecretKey as FromStr>::Err>

Parses a string s to return a value of this type. Read more
Source§

impl Serialize for SecretKey

Source§

fn serialize<S>( +) -> Result<SecretKey, <D as Deserializer<'de>>::Error>
where + D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Display for SecretKey

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl From<[u8; 32]> for SecretKey

Source§

fn from(value: [u8; 32]) -> SecretKey

Converts to this type from the input type.
Source§

impl From<SigningKey> for SecretKey

Source§

fn from(secret: SigningKey) -> SecretKey

Converts to this type from the input type.
Source§

impl FromStr for SecretKey

Source§

type Err = KeyParsingError

The associated error which can be returned from parsing.
Source§

fn from_str(s: &str) -> Result<SecretKey, <SecretKey as FromStr>::Err>

Parses a string s to return a value of this type. Read more
Source§

impl Serialize for SecretKey

Source§

fn serialize<S>( &self, serializer: S, -) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>
where - S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl TryFrom<&[u8]> for SecretKey

Source§

type Error = Error

The type returned in the event of a conversion error.
Source§

fn try_from( +) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>
where + S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl TryFrom<&[u8]> for SecretKey

Source§

type Error = Error

The type returned in the event of a conversion error.
Source§

fn try_from( bytes: &[u8], ) -> Result<SecretKey, <SecretKey as TryFrom<&[u8]>>::Error>

Performs the conversion.

Auto Trait Implementations§

§

impl !Freeze for SecretKey

§

impl RefUnwindSafe for SecretKey

§

impl Send for SecretKey

§

impl Sync for SecretKey

§

impl Unpin for SecretKey

§

impl UnwindSafe for SecretKey

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where @@ -48,6 +48,6 @@ V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a -[WithDispatch] wrapper. Read more
Source§

impl<T> DeserializeOwned for T
where - T: for<'de> Deserialize<'de>,

§

impl<T> ErasedDestructor for T
where +[WithDispatch] wrapper. Read more

Source§

impl<T> DeserializeOwned for T
where + T: for<'de> Deserialize<'de>,

§

impl<T> ErasedDestructor for T
where T: 'static,

§

impl<T> MaybeSendSync for T

\ No newline at end of file diff --git a/pr/2806/docs/iroh/test_utils/fn.create_dns_resolver.html b/pr/2806/docs/iroh/test_utils/fn.create_dns_resolver.html index af06b402d0..11c43b3e9e 100644 --- a/pr/2806/docs/iroh/test_utils/fn.create_dns_resolver.html +++ b/pr/2806/docs/iroh/test_utils/fn.create_dns_resolver.html @@ -1,2 +1,2 @@ -create_dns_resolver in iroh::test_utils - Rust
iroh::test_utils

Function create_dns_resolver

Source
pub fn create_dns_resolver(nameserver: SocketAddr) -> Result<TokioResolver>
Available on crate feature test-utils only.
Expand description

Create a DNS resolver with a single nameserver.

+create_dns_resolver in iroh::test_utils - Rust
iroh::test_utils

Function create_dns_resolver

Source
pub fn create_dns_resolver(nameserver: SocketAddr) -> Result<TokioResolver>
Available on crate feature test-utils only.
Expand description

Create a DNS resolver with a single nameserver.

\ No newline at end of file diff --git a/pr/2806/docs/iroh/test_utils/fn.run_relay_server.html b/pr/2806/docs/iroh/test_utils/fn.run_relay_server.html index f04726bda2..ec046e3803 100644 --- a/pr/2806/docs/iroh/test_utils/fn.run_relay_server.html +++ b/pr/2806/docs/iroh/test_utils/fn.run_relay_server.html @@ -1,4 +1,4 @@ -run_relay_server in iroh::test_utils - Rust
iroh::test_utils

Function run_relay_server

Source
pub async fn run_relay_server() -> Result<(RelayMap, RelayUrl, Server)>
Available on crate feature test-utils only.
Expand description

Runs a relay server with STUN and QUIC enabled suitable for tests.

+run_relay_server in iroh::test_utils - Rust
iroh::test_utils

Function run_relay_server

Source
pub async fn run_relay_server() -> Result<(RelayMap, RelayUrl, Server)>
Available on crate feature test-utils only.
Expand description

Runs a relay server with STUN and QUIC enabled suitable for tests.

The returned Url is the url of the relay server in the returned RelayMap. When dropped, the returned [Server] does will stop running.

\ No newline at end of file diff --git a/pr/2806/docs/iroh/test_utils/fn.run_relay_server_with.html b/pr/2806/docs/iroh/test_utils/fn.run_relay_server_with.html index 3254089c2f..59352a976a 100644 --- a/pr/2806/docs/iroh/test_utils/fn.run_relay_server_with.html +++ b/pr/2806/docs/iroh/test_utils/fn.run_relay_server_with.html @@ -1,7 +1,7 @@ run_relay_server_with in iroh::test_utils - Rust
iroh::test_utils

Function run_relay_server_with

Source
pub async fn run_relay_server_with(
     stun: Option<StunConfig>,
     quic: bool,
-) -> Result<(RelayMap, RelayUrl, Server)>
Available on crate feature test-utils only.
Expand description

Runs a relay server.

+) -> Result<(RelayMap, RelayUrl, Server)>
Available on crate feature test-utils only.
Expand description

Runs a relay server.

stun can be set to None to disable stun, or set to Some StunConfig, to enable stun on a specific socket.

If quic is set to true, it will make the appropriate [QuicConfig] from the generated tls certificates and run the quic server at a random free port.

diff --git a/pr/2806/docs/iroh/test_utils/fn.run_relay_server_with_stun.html b/pr/2806/docs/iroh/test_utils/fn.run_relay_server_with_stun.html index 8d83201d26..c45673b4f2 100644 --- a/pr/2806/docs/iroh/test_utils/fn.run_relay_server_with_stun.html +++ b/pr/2806/docs/iroh/test_utils/fn.run_relay_server_with_stun.html @@ -1,4 +1,4 @@ -run_relay_server_with_stun in iroh::test_utils - Rust
iroh::test_utils

Function run_relay_server_with_stun

Source
pub async fn run_relay_server_with_stun() -> Result<(RelayMap, RelayUrl, Server)>
Available on crate feature test-utils only.
Expand description

Runs a relay server with STUN enabled suitable for tests.

+run_relay_server_with_stun in iroh::test_utils - Rust
iroh::test_utils

Function run_relay_server_with_stun

Source
pub async fn run_relay_server_with_stun() -> Result<(RelayMap, RelayUrl, Server)>
Available on crate feature test-utils only.
Expand description

Runs a relay server with STUN enabled suitable for tests.

The returned Url is the url of the relay server in the returned RelayMap. When dropped, the returned [Server] does will stop running.

\ No newline at end of file diff --git a/pr/2806/docs/iroh/test_utils/struct.DnsPkarrServer.html b/pr/2806/docs/iroh/test_utils/struct.DnsPkarrServer.html index 3a2b936b2c..839999e379 100644 --- a/pr/2806/docs/iroh/test_utils/struct.DnsPkarrServer.html +++ b/pr/2806/docs/iroh/test_utils/struct.DnsPkarrServer.html @@ -8,12 +8,12 @@

Fields§

§node_origin: String

The node origin domain.

§nameserver: SocketAddr

The socket address of the DNS server.

§pkarr_url: Url

The HTTP URL of the Pkarr server.

-

Implementations§

Source§

impl DnsPkarrServer

Source

pub async fn run() -> Result<Self>

Run DNS and Pkarr servers on localhost.

-
Source

pub async fn run_with_origin(node_origin: String) -> Result<Self>

Run DNS and Pkarr servers on localhost with the specified node_origin domain.

+

Implementations§

Source§

impl DnsPkarrServer

Source

pub async fn run() -> Result<Self>

Run DNS and Pkarr servers on localhost.

+
Source

pub async fn run_with_origin(node_origin: String) -> Result<Self>

Run DNS and Pkarr servers on localhost with the specified node_origin domain.

Source

pub fn discovery(&self, secret_key: SecretKey) -> Box<ConcurrentDiscovery>

Create a ConcurrentDiscovery with DnsDiscovery and PkarrPublisher configured to use the test servers.

Source

pub fn dns_resolver(&self) -> DnsResolver

Create a DnsResolver configured to use the test DNS server.

-
Source

pub async fn on_node(&self, node_id: &NodeId, timeout: Duration) -> Result<()>

Wait until a Pkarr announce for a node is published to the server.

+
Source

pub async fn on_node(&self, node_id: &NodeId, timeout: Duration) -> Result<()>

Wait until a Pkarr announce for a node is published to the server.

If timeout elapses an error is returned.

Trait Implementations§

Source§

impl Debug for DnsPkarrServer

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where diff --git a/pr/2806/docs/iroh_base/struct.NodeAddr.html b/pr/2806/docs/iroh_base/struct.NodeAddr.html index 380909fc9a..65dda809f5 100644 --- a/pr/2806/docs/iroh_base/struct.NodeAddr.html +++ b/pr/2806/docs/iroh_base/struct.NodeAddr.html @@ -41,8 +41,8 @@

Source

pub fn is_empty(&self) -> bool

Returns true, if only a NodeId is present.

Source

pub fn direct_addresses(&self) -> impl Iterator<Item = &SocketAddr>

Returns the direct addresses of this peer.

Source

pub fn relay_url(&self) -> Option<&RelayUrl>

Returns the relay url of this peer.

-

Trait Implementations§

Source§

impl Clone for NodeAddr

Source§

fn clone(&self) -> NodeAddr

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for NodeAddr

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for NodeAddr

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where - __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl From<(PublicKey, Option<RelayUrl>, &[SocketAddr])> for NodeAddr

Source§

fn from(value: (PublicKey, Option<RelayUrl>, &[SocketAddr])) -> Self

Converts to this type from the input type.
Source§

impl From<NodeAddr> for NodeTicket

Available on crate feature ticket only.
Source§

fn from(addr: NodeAddr) -> Self

Creates a ticket from given addressing info.

+

Trait Implementations§

Source§

impl Clone for NodeAddr

Source§

fn clone(&self) -> NodeAddr

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for NodeAddr

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for NodeAddr

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where + __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl From<(PublicKey, Option<RelayUrl>, &[SocketAddr])> for NodeAddr

Source§

fn from(value: (PublicKey, Option<RelayUrl>, &[SocketAddr])) -> Self

Converts to this type from the input type.
Source§

impl From<NodeAddr> for NodeTicket

Available on crate feature ticket only.
Source§

fn from(addr: NodeAddr) -> Self

Creates a ticket from given addressing info.

Source§

impl From<NodeTicket> for NodeAddr

Available on crate feature ticket only.
Source§

fn from(ticket: NodeTicket) -> Self

Returns the addressing info from given ticket.

Source§

impl From<PublicKey> for NodeAddr

Source§

fn from(node_id: NodeId) -> Self

Converts to this type from the input type.
Source§

impl Ord for NodeAddr

Source§

fn cmp(&self, other: &NodeAddr) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · Source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · Source§

fn min(self, other: Self) -> Self
where @@ -51,8 +51,8 @@ and should not be overridden without very good reason.

Source§

impl PartialOrd for NodeAddr

Source§

fn partial_cmp(&self, other: &NodeAddr) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · Source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · Source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · Source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · Source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by -the >= operator. Read more
Source§

impl Serialize for NodeAddr

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where - __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl Eq for NodeAddr

Source§

impl StructuralPartialEq for NodeAddr

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where +the >= operator. Read more

Source§

impl Serialize for NodeAddr

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where + __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl Eq for NodeAddr

Source§

impl StructuralPartialEq for NodeAddr

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where @@ -65,6 +65,6 @@ T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where - V: MultiLane<T>,

§

fn vzip(self) -> V

Source§

impl<T> DeserializeOwned for T
where - T: for<'de> Deserialize<'de>,

§

impl<T> ErasedDestructor for T
where + V: MultiLane<T>,

§

fn vzip(self) -> V

Source§

impl<T> DeserializeOwned for T
where + T: for<'de> Deserialize<'de>,

§

impl<T> ErasedDestructor for T
where T: 'static,

§

impl<T> MaybeSendSync for T

\ No newline at end of file diff --git a/pr/2806/docs/iroh_base/struct.PublicKey.html b/pr/2806/docs/iroh_base/struct.PublicKey.html index 913ef36086..03e9898180 100644 --- a/pr/2806/docs/iroh_base/struct.PublicKey.html +++ b/pr/2806/docs/iroh_base/struct.PublicKey.html @@ -20,8 +20,8 @@
§Return

Returns Ok(()) if the signature is valid, and Err otherwise.

Source

pub fn fmt_short(&self) -> String

Convert to a base32 string limited to the first 10 bytes for a friendly string representation of the key.

-

Trait Implementations§

Source§

impl AsRef<[u8]> for PublicKey

Source§

fn as_ref(&self) -> &[u8]

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl Clone for PublicKey

Source§

fn clone(&self) -> PublicKey

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for PublicKey

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for PublicKey

Source§

fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where - D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Display for PublicKey

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl From<PublicKey> for NodeAddr

Source§

fn from(node_id: NodeId) -> Self

Converts to this type from the input type.
Source§

impl From<VerifyingKey> for PublicKey

Source§

fn from(verifying_key: VerifyingKey) -> Self

Converts to this type from the input type.
Source§

impl FromStr for PublicKey

Deserialises the PublicKey from it’s base32 encoding.

+

Trait Implementations§

Source§

impl AsRef<[u8]> for PublicKey

Source§

fn as_ref(&self) -> &[u8]

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl Clone for PublicKey

Source§

fn clone(&self) -> PublicKey

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for PublicKey

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for PublicKey

Source§

fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where + D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Display for PublicKey

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl From<PublicKey> for NodeAddr

Source§

fn from(node_id: NodeId) -> Self

Converts to this type from the input type.
Source§

impl From<VerifyingKey> for PublicKey

Source§

fn from(verifying_key: VerifyingKey) -> Self

Converts to this type from the input type.
Source§

impl FromStr for PublicKey

Deserialises the PublicKey from it’s base32 encoding.

Display is capable of serialising this format.

Source§

type Err = KeyParsingError

The associated error which can be returned from parsing.
Source§

fn from_str(s: &str) -> Result<Self, Self::Err>

Parses a string s to return a value of this type. Read more
Source§

impl Hash for PublicKey

Source§

fn hash<H: Hasher>(&self, state: &mut H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, @@ -32,8 +32,8 @@
§Return
and should not be overridden without very good reason.

Source§

impl PartialOrd for PublicKey

Source§

fn partial_cmp(&self, other: &PublicKey) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · Source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · Source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · Source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · Source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by -the >= operator. Read more
Source§

impl Serialize for PublicKey

Source§

fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where - S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl TryFrom<&[u8]> for PublicKey

Source§

type Error = Error

The type returned in the event of a conversion error.
Source§

fn try_from(bytes: &[u8]) -> Result<Self, Self::Error>

Performs the conversion.
Source§

impl TryFrom<&[u8; 32]> for PublicKey

Source§

type Error = Error

The type returned in the event of a conversion error.
Source§

fn try_from(bytes: &[u8; 32]) -> Result<Self, Self::Error>

Performs the conversion.
Source§

impl Copy for PublicKey

Source§

impl Eq for PublicKey

Source§

impl StructuralPartialEq for PublicKey

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where +the >= operator. Read more

Source§

impl Serialize for PublicKey

Source§

fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where + S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl TryFrom<&[u8]> for PublicKey

Source§

type Error = Error

The type returned in the event of a conversion error.
Source§

fn try_from(bytes: &[u8]) -> Result<Self, Self::Error>

Performs the conversion.
Source§

impl TryFrom<&[u8; 32]> for PublicKey

Source§

type Error = Error

The type returned in the event of a conversion error.
Source§

fn try_from(bytes: &[u8; 32]) -> Result<Self, Self::Error>

Performs the conversion.
Source§

impl Copy for PublicKey

Source§

impl Eq for PublicKey

Source§

impl StructuralPartialEq for PublicKey

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where @@ -52,6 +52,6 @@
§Return
T: Display + ?Sized,

Source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where - V: MultiLane<T>,

§

fn vzip(self) -> V

Source§

impl<T> DeserializeOwned for T
where - T: for<'de> Deserialize<'de>,

§

impl<T> ErasedDestructor for T
where + V: MultiLane<T>,

§

fn vzip(self) -> V

Source§

impl<T> DeserializeOwned for T
where + T: for<'de> Deserialize<'de>,

§

impl<T> ErasedDestructor for T
where T: 'static,

§

impl<T> MaybeSendSync for T

\ No newline at end of file diff --git a/pr/2806/docs/iroh_base/struct.RelayUrl.html b/pr/2806/docs/iroh_base/struct.RelayUrl.html index 2653cf454c..5ab9bf3295 100644 --- a/pr/2806/docs/iroh_base/struct.RelayUrl.html +++ b/pr/2806/docs/iroh_base/struct.RelayUrl.html @@ -425,8 +425,8 @@
§Examples
Source

pub fn serialize_internal<S>( &self, serializer: S, -) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>
where - S: Serializer,

Available on crate feature serde only.

Serialize with Serde using the internal representation of the Url struct.

+) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>
where + S: Serializer,
Available on crate feature serde only.

Serialize with Serde using the internal representation of the Url struct.

The corresponding deserialize_internal method sacrifices some invariant-checking for speed, compared to the Deserialize trait impl.

This method is only available if the serde Cargo feature is enabled.

@@ -446,11 +446,11 @@
§Examples

Trait Implementations§

Source§

impl Clone for RelayUrl

Source§

fn clone(&self) -> RelayUrl

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for RelayUrl

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Deref for RelayUrl

Dereferences to the wrapped Url.

Note that DerefMut is not implemented on purpose, so this type has more flexibility to change the inner later.

-
Source§

type Target = Url

The resulting type after dereferencing.
Source§

fn deref(&self) -> &Self::Target

Dereferences the value.
Source§

impl<'de> Deserialize<'de> for RelayUrl

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where - __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Display for RelayUrl

Source§

fn fmt(&self, __derive_more_f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl From<RelayUrl> for Url

Source§

fn from(value: RelayUrl) -> Self

Converts to this type from the input type.
Source§

impl From<Url> for RelayUrl

Source§

fn from(url: Url) -> Self

Converts to this type from the input type.
Source§

impl FromStr for RelayUrl

Support for parsing strings directly.

+
Source§

type Target = Url

The resulting type after dereferencing.
Source§

fn deref(&self) -> &Self::Target

Dereferences the value.
Source§

impl<'de> Deserialize<'de> for RelayUrl

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where + __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Display for RelayUrl

Source§

fn fmt(&self, __derive_more_f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl From<RelayUrl> for Url

Source§

fn from(value: RelayUrl) -> Self

Converts to this type from the input type.
Source§

impl From<Url> for RelayUrl

Source§

fn from(url: Url) -> Self

Converts to this type from the input type.
Source§

impl FromStr for RelayUrl

Support for parsing strings directly.

If you need more control over the error first create a Url and use RelayUrl::from instead.

-
Source§

type Err = Error

The associated error which can be returned from parsing.
Source§

fn from_str(s: &str) -> Result<Self, Self::Err>

Parses a string s to return a value of this type. Read more
Source§

impl Hash for RelayUrl

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where +
Source§

type Err = Error

The associated error which can be returned from parsing.
Source§

fn from_str(s: &str) -> Result<Self, Self::Err>

Parses a string s to return a value of this type. Read more

Source§

impl Hash for RelayUrl

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl Ord for RelayUrl

Source§

fn cmp(&self, other: &RelayUrl) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · Source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · Source§

fn min(self, other: Self) -> Self
where @@ -459,8 +459,8 @@
§Examples

Source§

impl PartialOrd for RelayUrl

Source§

fn partial_cmp(&self, other: &RelayUrl) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · Source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · Source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · Source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · Source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by -the >= operator. Read more
Source§

impl Serialize for RelayUrl

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where - __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl Eq for RelayUrl

Source§

impl StructuralPartialEq for RelayUrl

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where +the >= operator. Read more

Source§

impl Serialize for RelayUrl

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where + __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl Eq for RelayUrl

Source§

impl StructuralPartialEq for RelayUrl

Auto Trait Implementations§

§

impl Freeze for RelayUrl

§

impl RefUnwindSafe for RelayUrl

§

impl Send for RelayUrl

§

impl Sync for RelayUrl

§

impl Unpin for RelayUrl

§

impl UnwindSafe for RelayUrl

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where @@ -476,6 +476,6 @@
§ExamplesDisplay + ?Sized,

Source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where - V: MultiLane<T>,

§

fn vzip(self) -> V

Source§

impl<T> DeserializeOwned for T
where - T: for<'de> Deserialize<'de>,

§

impl<T> ErasedDestructor for T
where + V: MultiLane<T>,

§

fn vzip(self) -> V

Source§

impl<T> DeserializeOwned for T
where + T: for<'de> Deserialize<'de>,

§

impl<T> ErasedDestructor for T
where T: 'static,

§

impl<T> MaybeSendSync for T

\ No newline at end of file diff --git a/pr/2806/docs/iroh_base/struct.SecretKey.html b/pr/2806/docs/iroh_base/struct.SecretKey.html index f3fb3e788a..9d66c03a98 100644 --- a/pr/2806/docs/iroh_base/struct.SecretKey.html +++ b/pr/2806/docs/iroh_base/struct.SecretKey.html @@ -4,14 +4,14 @@
Source

pub fn generate() -> Self

Generate a new SecretKey with the default randomness generator.

Source

pub fn generate_with_rng<R: CryptoRngCore + ?Sized>(csprng: &mut R) -> Self

Generate a new SecretKey with a randomness generator.

Source

pub fn to_openssh(&self) -> Result<Zeroizing<String>>

Serialise this key to OpenSSH format.

-
Source

pub fn try_from_openssh<T: AsRef<[u8]>>(data: T) -> Result<Self>

Deserialise this key from OpenSSH format.

+
Source

pub fn try_from_openssh<T: AsRef<[u8]>>(data: T) -> Result<Self>

Deserialise this key from OpenSSH format.

Source

pub fn sign(&self, msg: &[u8]) -> Signature

Sign the given message and return a digital signature

Source

pub fn to_bytes(&self) -> [u8; 32]

Convert this to the bytes representing the secret part. The public part can always be recovered.

Source

pub fn from_bytes(bytes: &[u8; 32]) -> Self

Create a secret key from its byte representation.

-

Trait Implementations§

Source§

impl Clone for SecretKey

Source§

fn clone(&self) -> SecretKey

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for SecretKey

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for SecretKey

Source§

fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where - D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Display for SecretKey

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl From<[u8; 32]> for SecretKey

Source§

fn from(value: [u8; 32]) -> Self

Converts to this type from the input type.
Source§

impl From<SigningKey> for SecretKey

Source§

fn from(secret: SigningKey) -> Self

Converts to this type from the input type.
Source§

impl FromStr for SecretKey

Source§

type Err = KeyParsingError

The associated error which can be returned from parsing.
Source§

fn from_str(s: &str) -> Result<Self, Self::Err>

Parses a string s to return a value of this type. Read more
Source§

impl Serialize for SecretKey

Source§

fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where - S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl TryFrom<&[u8]> for SecretKey

Source§

type Error = Error

The type returned in the event of a conversion error.
Source§

fn try_from(bytes: &[u8]) -> Result<Self, Self::Error>

Performs the conversion.

Auto Trait Implementations§

§

impl !Freeze for SecretKey

§

impl RefUnwindSafe for SecretKey

§

impl Send for SecretKey

§

impl Sync for SecretKey

§

impl Unpin for SecretKey

§

impl UnwindSafe for SecretKey

Blanket Implementations§

Source§

impl<T> Any for T
where +

Trait Implementations§

Source§

impl Clone for SecretKey

Source§

fn clone(&self) -> SecretKey

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for SecretKey

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for SecretKey

Source§

fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where + D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Display for SecretKey

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl From<[u8; 32]> for SecretKey

Source§

fn from(value: [u8; 32]) -> Self

Converts to this type from the input type.
Source§

impl From<SigningKey> for SecretKey

Source§

fn from(secret: SigningKey) -> Self

Converts to this type from the input type.
Source§

impl FromStr for SecretKey

Source§

type Err = KeyParsingError

The associated error which can be returned from parsing.
Source§

fn from_str(s: &str) -> Result<Self, Self::Err>

Parses a string s to return a value of this type. Read more
Source§

impl Serialize for SecretKey

Source§

fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where + S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl TryFrom<&[u8]> for SecretKey

Source§

type Error = Error

The type returned in the event of a conversion error.
Source§

fn try_from(bytes: &[u8]) -> Result<Self, Self::Error>

Performs the conversion.

Auto Trait Implementations§

§

impl !Freeze for SecretKey

§

impl RefUnwindSafe for SecretKey

§

impl Send for SecretKey

§

impl Sync for SecretKey

§

impl Unpin for SecretKey

§

impl UnwindSafe for SecretKey

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where @@ -25,6 +25,6 @@ T: Display + ?Sized,

Source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where - V: MultiLane<T>,

§

fn vzip(self) -> V

Source§

impl<T> DeserializeOwned for T
where - T: for<'de> Deserialize<'de>,

§

impl<T> ErasedDestructor for T
where + V: MultiLane<T>,

§

fn vzip(self) -> V

Source§

impl<T> DeserializeOwned for T
where + T: for<'de> Deserialize<'de>,

§

impl<T> ErasedDestructor for T
where T: 'static,

§

impl<T> MaybeSendSync for T

\ No newline at end of file diff --git a/pr/2806/docs/iroh_base/struct.SharedSecret.html b/pr/2806/docs/iroh_base/struct.SharedSecret.html index 4399e9eaf5..40e8fa650c 100644 --- a/pr/2806/docs/iroh_base/struct.SharedSecret.html +++ b/pr/2806/docs/iroh_base/struct.SharedSecret.html @@ -1,6 +1,6 @@ SharedSecret in iroh_base - Rust
iroh_base

Struct SharedSecret

Source
pub struct SharedSecret(/* private fields */);
Available on crate feature key only.
Expand description

Shared Secret.

Implementations§

Source§

impl SharedSecret

Source

pub fn seal(&self, buffer: &mut dyn Buffer)

Seals the provided cleartext.

-
Source

pub fn open(&self, buffer: &mut dyn Buffer) -> Result<()>

Opens the ciphertext, which must have been created using Self::seal, and places the clear text into the provided buffer.

+
Source

pub fn open(&self, buffer: &mut dyn Buffer) -> Result<()>

Opens the ciphertext, which must have been created using Self::seal, and places the clear text into the provided buffer.

Trait Implementations§

Source§

impl Debug for SharedSecret

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where diff --git a/pr/2806/docs/iroh_base/struct.Signature.html b/pr/2806/docs/iroh_base/struct.Signature.html index f2c1b4bb84..7a953153bf 100644 --- a/pr/2806/docs/iroh_base/struct.Signature.html +++ b/pr/2806/docs/iroh_base/struct.Signature.html @@ -17,18 +17,18 @@
§Returns

pub fn s_bytes(&self) -> &[u8; 32]

Bytes for the s component of a signature.

pub fn to_bytes(&self) -> [u8; 64]

Return the inner byte array.

pub fn to_vec(&self) -> Vec<u8>

Available on crate feature alloc only.

Convert this signature into a byte vector.

-

Trait Implementations§

§

impl Clone for Signature

§

fn clone(&self) -> Signature

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
§

impl Debug for Signature

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl<'de> Deserialize<'de> for Signature

§

fn deserialize<D>( +

Trait Implementations§

§

impl Clone for Signature

§

fn clone(&self) -> Signature

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
§

impl Debug for Signature

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl<'de> Deserialize<'de> for Signature

§

fn deserialize<D>( deserializer: D, -) -> Result<Signature, <D as Deserializer<'de>>::Error>
where - D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
§

impl Display for Signature

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl From<&[u8; 64]> for Signature

§

fn from(bytes: &[u8; 64]) -> Signature

Converts to this type from the input type.
§

impl From<[u8; 64]> for Signature

§

fn from(bytes: [u8; 64]) -> Signature

Converts to this type from the input type.
§

impl From<InternalSignature> for Signature

§

fn from(sig: InternalSignature) -> Signature

Converts to this type from the input type.
§

impl FromStr for Signature

Decode a signature from hexadecimal.

+) -> Result<Signature, <D as Deserializer<'de>>::Error>
where + D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
§

impl Display for Signature

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl From<&[u8; 64]> for Signature

§

fn from(bytes: &[u8; 64]) -> Signature

Converts to this type from the input type.
§

impl From<[u8; 64]> for Signature

§

fn from(bytes: [u8; 64]) -> Signature

Converts to this type from the input type.
§

impl From<InternalSignature> for Signature

§

fn from(sig: InternalSignature) -> Signature

Converts to this type from the input type.
§

impl FromStr for Signature

Decode a signature from hexadecimal.

Upper and lower case hexadecimal are both accepted, however mixed case is rejected.

§

type Err = Error

The associated error which can be returned from parsing.
§

fn from_str(hex: &str) -> Result<Signature, Error>

Parses a string s to return a value of this type. Read more
§

impl LowerHex for Signature

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl PartialEq for Signature

§

fn eq(&self, other: &Signature) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
§

impl Serialize for Signature

§

fn serialize<S>( +and should not be overridden without very good reason.

§

impl Serialize for Signature

§

fn serialize<S>( &self, serializer: S, -) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>
where - S: Serializer,

Serialize this value into the given Serde serializer. Read more
§

impl SignatureEncoding for Signature

§

type Repr = [u8; 64]

Byte representation of a signature.
§

fn to_bytes(&self) -> [u8; 64]

Encode signature as its byte representation.
§

fn to_vec(&self) -> Vec<u8>

Available on crate feature alloc only.
Encode signature as a byte vector.
§

fn encoded_len(&self) -> usize

Get the length of this signature when encoded.
§

impl TryFrom<&[u8]> for Signature

§

type Error = Error

The type returned in the event of a conversion error.
§

fn try_from(bytes: &[u8]) -> Result<Signature, Error>

Performs the conversion.
§

impl TryFrom<&Signature> for Signature

Available on crate feature ed25519 only.
§

type Error = Error

The type returned in the event of a conversion error.
§

fn try_from(signature: &Signature) -> Result<Signature, Error>

Performs the conversion.
§

impl TryFrom<Signature> for Signature

Available on crate feature ed25519 only.
§

type Error = Error

The type returned in the event of a conversion error.
§

fn try_from(signature: Signature) -> Result<Signature, Error>

Performs the conversion.
§

impl UpperHex for Signature

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl Copy for Signature

§

impl Eq for Signature

§

impl StructuralPartialEq for Signature

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where +) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>
where + S: Serializer,

Serialize this value into the given Serde serializer. Read more
§

impl SignatureEncoding for Signature

§

type Repr = [u8; 64]

Byte representation of a signature.
§

fn to_bytes(&self) -> [u8; 64]

Encode signature as its byte representation.
§

fn to_vec(&self) -> Vec<u8>

Available on crate feature alloc only.
Encode signature as a byte vector.
§

fn encoded_len(&self) -> usize

Get the length of this signature when encoded.
§

impl TryFrom<&[u8]> for Signature

§

type Error = Error

The type returned in the event of a conversion error.
§

fn try_from(bytes: &[u8]) -> Result<Signature, Error>

Performs the conversion.
§

impl TryFrom<&Signature> for Signature

Available on crate feature ed25519 only.
§

type Error = Error

The type returned in the event of a conversion error.
§

fn try_from(signature: &Signature) -> Result<Signature, Error>

Performs the conversion.
§

impl TryFrom<Signature> for Signature

Available on crate feature ed25519 only.
§

type Error = Error

The type returned in the event of a conversion error.
§

fn try_from(signature: Signature) -> Result<Signature, Error>

Performs the conversion.
§

impl UpperHex for Signature

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl Copy for Signature

§

impl Eq for Signature

§

impl StructuralPartialEq for Signature

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where @@ -42,6 +42,6 @@
§Returns
T: Display + ?Sized,

Source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where - V: MultiLane<T>,

§

fn vzip(self) -> V

Source§

impl<T> DeserializeOwned for T
where - T: for<'de> Deserialize<'de>,

§

impl<T> ErasedDestructor for T
where + V: MultiLane<T>,

§

fn vzip(self) -> V

Source§

impl<T> DeserializeOwned for T
where + T: for<'de> Deserialize<'de>,

§

impl<T> ErasedDestructor for T
where T: 'static,

§

impl<T> MaybeSendSync for T

\ No newline at end of file diff --git a/pr/2806/docs/iroh_base/ticket/struct.NodeTicket.html b/pr/2806/docs/iroh_base/ticket/struct.NodeTicket.html index 73eb613397..6e3cb804f5 100644 --- a/pr/2806/docs/iroh_base/ticket/struct.NodeTicket.html +++ b/pr/2806/docs/iroh_base/ticket/struct.NodeTicket.html @@ -12,10 +12,10 @@ used to round-trip the ticket to string.

Implementations§

Source§

impl NodeTicket

Source

pub fn new(node: NodeAddr) -> Self

Creates a new ticket.

Source

pub fn node_addr(&self) -> &NodeAddr

The NodeAddr of the provider for this ticket.

-

Trait Implementations§

Source§

impl Clone for NodeTicket

Source§

fn clone(&self) -> NodeTicket

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for NodeTicket

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for NodeTicket

Source§

fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error>

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Display for NodeTicket

Source§

fn fmt(&self, __derive_more_f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl From<NodeAddr> for NodeTicket

Source§

fn from(addr: NodeAddr) -> Self

Creates a ticket from given addressing info.

+

Trait Implementations§

Source§

impl Clone for NodeTicket

Source§

fn clone(&self) -> NodeTicket

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for NodeTicket

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for NodeTicket

Source§

fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error>

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Display for NodeTicket

Source§

fn fmt(&self, __derive_more_f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl From<NodeAddr> for NodeTicket

Source§

fn from(addr: NodeAddr) -> Self

Creates a ticket from given addressing info.

Source§

impl From<NodeTicket> for NodeAddr

Source§

fn from(ticket: NodeTicket) -> Self

Returns the addressing info from given ticket.

-
Source§

impl FromStr for NodeTicket

Source§

type Err = Error

The associated error which can be returned from parsing.
Source§

fn from_str(s: &str) -> Result<Self, Self::Err>

Parses a string s to return a value of this type. Read more
Source§

impl PartialEq for NodeTicket

Source§

fn eq(&self, other: &NodeTicket) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
Source§

impl Serialize for NodeTicket

Source§

fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error>

Serialize this value into the given Serde serializer. Read more
Source§

impl Ticket for NodeTicket

Source§

const KIND: &'static str = "node"

String prefix describing the kind of iroh ticket. Read more
Source§

fn to_bytes(&self) -> Vec<u8>

Serialize to bytes used in the base32 string representation.
Source§

fn from_bytes(bytes: &[u8]) -> Result<Self, Error>

Deserialize from the base32 string representation bytes.
Source§

fn serialize(&self) -> String

Serialize to string.
Source§

fn deserialize(str: &str) -> Result<Self, Error>

Deserialize from a string.
Source§

impl Eq for NodeTicket

Source§

impl StructuralPartialEq for NodeTicket

Auto Trait Implementations§

§

impl Freeze for NodeTicket

§

impl RefUnwindSafe for NodeTicket

§

impl Send for NodeTicket

§

impl Sync for NodeTicket

§

impl Unpin for NodeTicket

§

impl UnwindSafe for NodeTicket

Blanket Implementations§

Source§

impl<T> Any for T
where +

Source§

impl FromStr for NodeTicket

Source§

type Err = Error

The associated error which can be returned from parsing.
Source§

fn from_str(s: &str) -> Result<Self, Self::Err>

Parses a string s to return a value of this type. Read more
Source§

impl PartialEq for NodeTicket

Source§

fn eq(&self, other: &NodeTicket) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
Source§

impl Serialize for NodeTicket

Source§

fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error>

Serialize this value into the given Serde serializer. Read more
Source§

impl Ticket for NodeTicket

Source§

const KIND: &'static str = "node"

String prefix describing the kind of iroh ticket. Read more
Source§

fn to_bytes(&self) -> Vec<u8>

Serialize to bytes used in the base32 string representation.
Source§

fn from_bytes(bytes: &[u8]) -> Result<Self, Error>

Deserialize from the base32 string representation bytes.
Source§

fn serialize(&self) -> String

Serialize to string.
Source§

fn deserialize(str: &str) -> Result<Self, Error>

Deserialize from a string.
Source§

impl Eq for NodeTicket

Source§

impl StructuralPartialEq for NodeTicket

Auto Trait Implementations§

§

impl Freeze for NodeTicket

§

impl RefUnwindSafe for NodeTicket

§

impl Send for NodeTicket

§

impl Sync for NodeTicket

§

impl Unpin for NodeTicket

§

impl UnwindSafe for NodeTicket

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where @@ -29,6 +29,6 @@ T: Display + ?Sized,

Source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where - V: MultiLane<T>,

§

fn vzip(self) -> V

Source§

impl<T> DeserializeOwned for T
where - T: for<'de> Deserialize<'de>,

§

impl<T> ErasedDestructor for T
where + V: MultiLane<T>,

§

fn vzip(self) -> V

Source§

impl<T> DeserializeOwned for T
where + T: for<'de> Deserialize<'de>,

§

impl<T> ErasedDestructor for T
where T: 'static,

§

impl<T> MaybeSendSync for T

\ No newline at end of file diff --git a/pr/2806/docs/iroh_bench/enum.EndpointSelector.html b/pr/2806/docs/iroh_bench/enum.EndpointSelector.html index f5f6c94e08..ccb83e4063 100644 --- a/pr/2806/docs/iroh_bench/enum.EndpointSelector.html +++ b/pr/2806/docs/iroh_bench/enum.EndpointSelector.html @@ -1,7 +1,7 @@ EndpointSelector in iroh_bench - Rust
iroh_bench

Enum EndpointSelector

Source
pub enum EndpointSelector {
     Iroh(Endpoint),
     Quinn(Endpoint),
-}

Variants§

§

Iroh(Endpoint)

§

Quinn(Endpoint)

Implementations§

Source§

impl EndpointSelector

Source

pub async fn close(self) -> Result<()>

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where +}

Variants§

§

Iroh(Endpoint)

§

Quinn(Endpoint)

Implementations§

Source§

impl EndpointSelector

Source

pub async fn close(self) -> Result<()>

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

§

fn implicit( diff --git a/pr/2806/docs/iroh_bench/fn.client_handler.html b/pr/2806/docs/iroh_bench/fn.client_handler.html index 8f68dce34e..a8f9d284dd 100644 --- a/pr/2806/docs/iroh_bench/fn.client_handler.html +++ b/pr/2806/docs/iroh_bench/fn.client_handler.html @@ -2,5 +2,5 @@ endpoint: EndpointSelector, connection: ConnectionSelector, opt: Opt, -) -> Result<ClientStats>
Expand description

Take the provided endpoint and run the client benchmark

+) -> Result<ClientStats>
Expand description

Take the provided endpoint and run the client benchmark

\ No newline at end of file diff --git a/pr/2806/docs/iroh_bench/iroh/fn.client.html b/pr/2806/docs/iroh_bench/iroh/fn.client.html index 991a97c3ee..ba387b0cb6 100644 --- a/pr/2806/docs/iroh_bench/iroh/fn.client.html +++ b/pr/2806/docs/iroh_bench/iroh/fn.client.html @@ -2,5 +2,5 @@ server_addr: NodeAddr, relay_url: Option<RelayUrl>, opt: Opt, -) -> Result<ClientStats>
Expand description

Create and run a client

+) -> Result<ClientStats>
Expand description

Create and run a client

\ No newline at end of file diff --git a/pr/2806/docs/iroh_bench/iroh/fn.connect_client.html b/pr/2806/docs/iroh_bench/iroh/fn.connect_client.html index 3d348ac232..985998614e 100644 --- a/pr/2806/docs/iroh_bench/iroh/fn.connect_client.html +++ b/pr/2806/docs/iroh_bench/iroh/fn.connect_client.html @@ -2,5 +2,5 @@ server_addr: NodeAddr, relay_url: Option<RelayUrl>, opt: Opt, -) -> Result<(Endpoint, Connection)>
Expand description

Create a client endpoint and client connection

+) -> Result<(Endpoint, Connection)>
Expand description

Create a client endpoint and client connection

\ No newline at end of file diff --git a/pr/2806/docs/iroh_bench/iroh/fn.handle_client_stream.html b/pr/2806/docs/iroh_bench/iroh/fn.handle_client_stream.html index 6c707d13ae..15dcefd17f 100644 --- a/pr/2806/docs/iroh_bench/iroh/fn.handle_client_stream.html +++ b/pr/2806/docs/iroh_bench/iroh/fn.handle_client_stream.html @@ -2,4 +2,4 @@ connection: &Connection, upload_size: u64, read_unordered: bool, -) -> Result<(TransferResult, TransferResult)> \ No newline at end of file +) -> Result<(TransferResult, TransferResult)> \ No newline at end of file diff --git a/pr/2806/docs/iroh_bench/iroh/fn.server.html b/pr/2806/docs/iroh_bench/iroh/fn.server.html index 15f01aa3ed..855deaad24 100644 --- a/pr/2806/docs/iroh_bench/iroh/fn.server.html +++ b/pr/2806/docs/iroh_bench/iroh/fn.server.html @@ -1,2 +1,2 @@ -server in iroh_bench::iroh - Rust
iroh_bench::iroh

Function server

Source
pub async fn server(endpoint: Endpoint, opt: Opt) -> Result<()>
Expand description

Take the provided endpoint and run the server

+server in iroh_bench::iroh - Rust
iroh_bench::iroh

Function server

Source
pub async fn server(endpoint: Endpoint, opt: Opt) -> Result<()>
Expand description

Take the provided endpoint and run the server

\ No newline at end of file diff --git a/pr/2806/docs/iroh_bench/quinn/fn.client.html b/pr/2806/docs/iroh_bench/quinn/fn.client.html index 900fc0073a..709cf1a01f 100644 --- a/pr/2806/docs/iroh_bench/quinn/fn.client.html +++ b/pr/2806/docs/iroh_bench/quinn/fn.client.html @@ -2,5 +2,5 @@ server_addr: SocketAddr, server_cert: CertificateDer<'static>, opt: Opt, -) -> Result<ClientStats>
Expand description

Create and run a client

+) -> Result<ClientStats>
Expand description

Create and run a client

\ No newline at end of file diff --git a/pr/2806/docs/iroh_bench/quinn/fn.connect_client.html b/pr/2806/docs/iroh_bench/quinn/fn.connect_client.html index 604735be44..5f69b48d56 100644 --- a/pr/2806/docs/iroh_bench/quinn/fn.connect_client.html +++ b/pr/2806/docs/iroh_bench/quinn/fn.connect_client.html @@ -2,5 +2,5 @@ server_addr: SocketAddr, server_cert: CertificateDer<'_>, opt: Opt, -) -> Result<(Endpoint, Connection)>
Expand description

Create a client endpoint and client connection

+) -> Result<(Endpoint, Connection)>
Expand description

Create a client endpoint and client connection

\ No newline at end of file diff --git a/pr/2806/docs/iroh_bench/quinn/fn.handle_client_stream.html b/pr/2806/docs/iroh_bench/quinn/fn.handle_client_stream.html index db8244cada..276e8e74ea 100644 --- a/pr/2806/docs/iroh_bench/quinn/fn.handle_client_stream.html +++ b/pr/2806/docs/iroh_bench/quinn/fn.handle_client_stream.html @@ -2,4 +2,4 @@ connection: &Connection, upload_size: u64, read_unordered: bool, -) -> Result<(TransferResult, TransferResult)> \ No newline at end of file +) -> Result<(TransferResult, TransferResult)> \ No newline at end of file diff --git a/pr/2806/docs/iroh_bench/quinn/fn.server.html b/pr/2806/docs/iroh_bench/quinn/fn.server.html index fd0695d1db..ec3837d6d0 100644 --- a/pr/2806/docs/iroh_bench/quinn/fn.server.html +++ b/pr/2806/docs/iroh_bench/quinn/fn.server.html @@ -1,2 +1,2 @@ -server in iroh_bench::quinn - Rust
iroh_bench::quinn

Function server

Source
pub async fn server(endpoint: Endpoint, opt: Opt) -> Result<()>
Expand description

Take the provided endpoint and run the server

+server in iroh_bench::quinn - Rust
iroh_bench::quinn

Function server

Source
pub async fn server(endpoint: Endpoint, opt: Opt) -> Result<()>
Expand description

Take the provided endpoint and run the server

\ No newline at end of file diff --git a/pr/2806/docs/iroh_dns_server/config/enum.BootstrapOption.html b/pr/2806/docs/iroh_dns_server/config/enum.BootstrapOption.html index 85ea703476..3aa2cb4eb4 100644 --- a/pr/2806/docs/iroh_dns_server/config/enum.BootstrapOption.html +++ b/pr/2806/docs/iroh_dns_server/config/enum.BootstrapOption.html @@ -4,9 +4,9 @@ }
Expand description

Configure the bootstrap servers for mainline DHT resolution.

Variants§

§

Default

Use the default bootstrap servers.

§

Custom(Vec<String>)

Use custom bootstrap servers.

-

Trait Implementations§

Source§

impl Debug for BootstrapOption

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for BootstrapOption

Source§

fn default() -> BootstrapOption

Returns the “default value” for a type. Read more
Source§

impl<'de> Deserialize<'de> for BootstrapOption

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where - __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Serialize for BootstrapOption

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where - __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where +

Trait Implementations§

Source§

impl Debug for BootstrapOption

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for BootstrapOption

Source§

fn default() -> BootstrapOption

Returns the “default value” for a type. Read more
Source§

impl<'de> Deserialize<'de> for BootstrapOption

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where + __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Serialize for BootstrapOption

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where + __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

§

fn implicit( @@ -29,6 +29,6 @@ V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a -[WithDispatch] wrapper. Read more
Source§

impl<T> DeserializeOwned for T
where - T: for<'de> Deserialize<'de>,

§

impl<T> ErasedDestructor for T
where +[WithDispatch] wrapper. Read more

Source§

impl<T> DeserializeOwned for T
where + T: for<'de> Deserialize<'de>,

§

impl<T> ErasedDestructor for T
where T: 'static,

§

impl<T> MaybeSendSync for T

\ No newline at end of file diff --git a/pr/2806/docs/iroh_dns_server/config/struct.Config.html b/pr/2806/docs/iroh_dns_server/config/struct.Config.html index 5caed79de5..950101c31c 100644 --- a/pr/2806/docs/iroh_dns_server/config/struct.Config.html +++ b/pr/2806/docs/iroh_dns_server/config/struct.Config.html @@ -21,12 +21,12 @@ §mainline: Option<MainlineConfig>

Config for the mainline lookup.

§zone_store: Option<StoreConfig>

Config for the zone store.

§pkarr_put_rate_limit: RateLimitConfig

Config for pkarr rate limit

-

Implementations§

Source§

impl Config

Source

pub async fn load(path: impl AsRef<Path>) -> Result<Config>

Load the config from a file.

-
Source

pub fn data_dir() -> Result<PathBuf>

Get the data directory.

-
Source

pub fn signed_packet_store_path() -> Result<PathBuf>

Get the path to the store database file.

-

Trait Implementations§

Source§

impl Debug for Config

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for Config

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl<'de> Deserialize<'de> for Config

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where - __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Serialize for Config

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where - __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

§

impl Freeze for Config

§

impl RefUnwindSafe for Config

§

impl Send for Config

§

impl Sync for Config

§

impl Unpin for Config

§

impl UnwindSafe for Config

Blanket Implementations§

Source§

impl<T> Any for T
where +

Implementations§

Source§

impl Config

Source

pub async fn load(path: impl AsRef<Path>) -> Result<Config>

Load the config from a file.

+
Source

pub fn data_dir() -> Result<PathBuf>

Get the data directory.

+
Source

pub fn signed_packet_store_path() -> Result<PathBuf>

Get the path to the store database file.

+

Trait Implementations§

Source§

impl Debug for Config

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for Config

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl<'de> Deserialize<'de> for Config

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where + __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Serialize for Config

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where + __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

§

impl Freeze for Config

§

impl RefUnwindSafe for Config

§

impl Send for Config

§

impl Sync for Config

§

impl Unpin for Config

§

impl UnwindSafe for Config

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

§

fn implicit( @@ -49,6 +49,6 @@ V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a -[WithDispatch] wrapper. Read more
Source§

impl<T> DeserializeOwned for T
where - T: for<'de> Deserialize<'de>,

§

impl<T> ErasedDestructor for T
where +[WithDispatch] wrapper. Read more

Source§

impl<T> DeserializeOwned for T
where + T: for<'de> Deserialize<'de>,

§

impl<T> ErasedDestructor for T
where T: 'static,

§

impl<T> MaybeSendSync for T

\ No newline at end of file diff --git a/pr/2806/docs/iroh_dns_server/config/struct.MainlineConfig.html b/pr/2806/docs/iroh_dns_server/config/struct.MainlineConfig.html index 27b5421a7f..661d33bfa1 100644 --- a/pr/2806/docs/iroh_dns_server/config/struct.MainlineConfig.html +++ b/pr/2806/docs/iroh_dns_server/config/struct.MainlineConfig.html @@ -6,9 +6,9 @@ §bootstrap: Option<Vec<String>>

Set custom bootstrap nodes.

Addresses can either be domain:port or ipv4:port.

If empty this will use the default bittorrent mainline bootstrap nodes as defined by pkarr.

-

Trait Implementations§

Source§

impl Debug for MainlineConfig

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for MainlineConfig

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl<'de> Deserialize<'de> for MainlineConfig

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where - __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Serialize for MainlineConfig

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where - __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

§

impl Freeze for MainlineConfig

§

impl RefUnwindSafe for MainlineConfig

§

impl Send for MainlineConfig

§

impl Sync for MainlineConfig

§

impl Unpin for MainlineConfig

§

impl UnwindSafe for MainlineConfig

Blanket Implementations§

Source§

impl<T> Any for T
where +

Trait Implementations§

Source§

impl Debug for MainlineConfig

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for MainlineConfig

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl<'de> Deserialize<'de> for MainlineConfig

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where + __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Serialize for MainlineConfig

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where + __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

§

fn implicit( @@ -31,6 +31,6 @@ V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a -[WithDispatch] wrapper. Read more
Source§

impl<T> DeserializeOwned for T
where - T: for<'de> Deserialize<'de>,

§

impl<T> ErasedDestructor for T
where +[WithDispatch] wrapper. Read more

Source§

impl<T> DeserializeOwned for T
where + T: for<'de> Deserialize<'de>,

§

impl<T> ErasedDestructor for T
where T: 'static,

§

impl<T> MaybeSendSync for T

\ No newline at end of file diff --git a/pr/2806/docs/iroh_dns_server/config/struct.MetricsConfig.html b/pr/2806/docs/iroh_dns_server/config/struct.MetricsConfig.html index 38064e8516..3ef5b00b5c 100644 --- a/pr/2806/docs/iroh_dns_server/config/struct.MetricsConfig.html +++ b/pr/2806/docs/iroh_dns_server/config/struct.MetricsConfig.html @@ -5,9 +5,9 @@

Fields§

§disabled: bool

Set to true to disable the metrics server.

§bind_addr: Option<SocketAddr>

Optionally set a custom address to bind to.

Implementations§

Source§

impl MetricsConfig

Source

pub fn disabled() -> Self

Disable the metrics server.

-

Trait Implementations§

Source§

impl Debug for MetricsConfig

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for MetricsConfig

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where - __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Serialize for MetricsConfig

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where - __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

§

impl Freeze for MetricsConfig

§

impl RefUnwindSafe for MetricsConfig

§

impl Send for MetricsConfig

§

impl Sync for MetricsConfig

§

impl Unpin for MetricsConfig

§

impl UnwindSafe for MetricsConfig

Blanket Implementations§

Source§

impl<T> Any for T
where +

Trait Implementations§

Source§

impl Debug for MetricsConfig

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for MetricsConfig

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where + __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Serialize for MetricsConfig

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where + __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

§

impl Freeze for MetricsConfig

§

impl RefUnwindSafe for MetricsConfig

§

impl Send for MetricsConfig

§

impl Sync for MetricsConfig

§

impl Unpin for MetricsConfig

§

impl UnwindSafe for MetricsConfig

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

§

fn implicit( @@ -30,6 +30,6 @@ V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a -[WithDispatch] wrapper. Read more
Source§

impl<T> DeserializeOwned for T
where - T: for<'de> Deserialize<'de>,

§

impl<T> ErasedDestructor for T
where +[WithDispatch] wrapper. Read more

Source§

impl<T> DeserializeOwned for T
where + T: for<'de> Deserialize<'de>,

§

impl<T> ErasedDestructor for T
where T: 'static,

§

impl<T> MaybeSendSync for T

\ No newline at end of file diff --git a/pr/2806/docs/iroh_dns_server/config/struct.StoreConfig.html b/pr/2806/docs/iroh_dns_server/config/struct.StoreConfig.html index 7af47409c1..2f07bb0acf 100644 --- a/pr/2806/docs/iroh_dns_server/config/struct.StoreConfig.html +++ b/pr/2806/docs/iroh_dns_server/config/struct.StoreConfig.html @@ -1,7 +1,7 @@ StoreConfig in iroh_dns_server::config - Rust
iroh_dns_server::config

Struct StoreConfig

Source
pub struct StoreConfig { /* private fields */ }
Expand description

The config for the store.

-

Trait Implementations§

Source§

impl Clone for StoreConfig

Source§

fn clone(&self) -> StoreConfig

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for StoreConfig

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for StoreConfig

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl<'de> Deserialize<'de> for StoreConfig

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where - __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Serialize for StoreConfig

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where - __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where +

Trait Implementations§

Source§

impl Clone for StoreConfig

Source§

fn clone(&self) -> StoreConfig

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for StoreConfig

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for StoreConfig

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl<'de> Deserialize<'de> for StoreConfig

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where + __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Serialize for StoreConfig

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where + __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

§

fn implicit( @@ -28,6 +28,6 @@ V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a -[WithDispatch] wrapper. Read more
Source§

impl<T> DeserializeOwned for T
where - T: for<'de> Deserialize<'de>,

§

impl<T> ErasedDestructor for T
where +[WithDispatch] wrapper. Read more

Source§

impl<T> DeserializeOwned for T
where + T: for<'de> Deserialize<'de>,

§

impl<T> ErasedDestructor for T
where T: 'static,

§

impl<T> MaybeSendSync for T

\ No newline at end of file diff --git a/pr/2806/docs/iroh_dns_server/dns/struct.DnsConfig.html b/pr/2806/docs/iroh_dns_server/dns/struct.DnsConfig.html index 1de04caa10..da43468ceb 100644 --- a/pr/2806/docs/iroh_dns_server/dns/struct.DnsConfig.html +++ b/pr/2806/docs/iroh_dns_server/dns/struct.DnsConfig.html @@ -17,9 +17,9 @@ §rr_a: Option<Ipv4Addr>

A record to set for all origins

§rr_aaaa: Option<Ipv6Addr>

AAAA record to set for all origins

§rr_ns: Option<String>

NS record to set for all origins

-

Trait Implementations§

Source§

impl Clone for DnsConfig

Source§

fn clone(&self) -> DnsConfig

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for DnsConfig

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for DnsConfig

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where - __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Serialize for DnsConfig

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where - __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

§

impl Freeze for DnsConfig

§

impl RefUnwindSafe for DnsConfig

§

impl Send for DnsConfig

§

impl Sync for DnsConfig

§

impl Unpin for DnsConfig

§

impl UnwindSafe for DnsConfig

Blanket Implementations§

Source§

impl<T> Any for T
where +

Trait Implementations§

Source§

impl Clone for DnsConfig

Source§

fn clone(&self) -> DnsConfig

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for DnsConfig

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for DnsConfig

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where + __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Serialize for DnsConfig

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where + __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

§

fn implicit( @@ -46,6 +46,6 @@ V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a -[WithDispatch] wrapper. Read more
Source§

impl<T> DeserializeOwned for T
where - T: for<'de> Deserialize<'de>,

§

impl<T> ErasedDestructor for T
where +[WithDispatch] wrapper. Read more

Source§

impl<T> DeserializeOwned for T
where + T: for<'de> Deserialize<'de>,

§

impl<T> ErasedDestructor for T
where T: 'static,

§

impl<T> MaybeSendSync for T

\ No newline at end of file diff --git a/pr/2806/docs/iroh_dns_server/dns/struct.DnsHandler.html b/pr/2806/docs/iroh_dns_server/dns/struct.DnsHandler.html index db0fe57a51..f43d71d009 100644 --- a/pr/2806/docs/iroh_dns_server/dns/struct.DnsHandler.html +++ b/pr/2806/docs/iroh_dns_server/dns/struct.DnsHandler.html @@ -1,7 +1,7 @@ DnsHandler in iroh_dns_server::dns - Rust
iroh_dns_server::dns

Struct DnsHandler

Source
pub struct DnsHandler { /* private fields */ }
Expand description

State for serving DNS

-

Implementations§

Source§

impl DnsHandler

Source

pub fn new(zone_store: ZoneStore, config: &DnsConfig) -> Result<Self>

Create a DNS server given some settings, a connection to the DB for DID-by-username lookups +

Implementations§

Source§

impl DnsHandler

Source

pub fn new(zone_store: ZoneStore, config: &DnsConfig) -> Result<Self>

Create a DNS server given some settings, a connection to the DB for DID-by-username lookups and the server DID to serve under _did.<origin>.

-
Source

pub async fn answer_request(&self, request: Request) -> Result<Bytes>

Handle a DNS request

+
Source

pub async fn answer_request(&self, request: Request) -> Result<Bytes>

Handle a DNS request

Trait Implementations§

Source§

impl Clone for DnsHandler

Source§

fn clone(&self) -> DnsHandler

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for DnsHandler

Source§

fn fmt(&self, __derive_more_f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl RequestHandler for DnsHandler

Source§

fn handle_request<'life0, 'life1, 'async_trait, R>( &'life0 self, request: &'life1 Request, diff --git a/pr/2806/docs/iroh_dns_server/dns/struct.DnsServer.html b/pr/2806/docs/iroh_dns_server/dns/struct.DnsServer.html index 5d03adc45f..c55394c0cd 100644 --- a/pr/2806/docs/iroh_dns_server/dns/struct.DnsServer.html +++ b/pr/2806/docs/iroh_dns_server/dns/struct.DnsServer.html @@ -1,8 +1,8 @@ DnsServer in iroh_dns_server::dns - Rust
iroh_dns_server::dns

Struct DnsServer

Source
pub struct DnsServer { /* private fields */ }
Expand description

A DNS server that serves pkarr signed packets.

-

Implementations§

Source§

impl DnsServer

Source

pub async fn spawn(config: DnsConfig, dns_handler: DnsHandler) -> Result<Self>

Spawn the server.

+

Implementations§

Source§

impl DnsServer

Source

pub async fn spawn(config: DnsConfig, dns_handler: DnsHandler) -> Result<Self>

Spawn the server.

Source

pub fn local_addr(&self) -> SocketAddr

Get the local address of the UDP/TCP socket.

-
Source

pub async fn shutdown(self) -> Result<()>

Shutdown the server an wait for all tasks to complete.

-
Source

pub async fn run_until_done(self) -> Result<()>

Wait for all tasks to complete.

+
Source

pub async fn shutdown(self) -> Result<()>

Shutdown the server an wait for all tasks to complete.

+
Source

pub async fn run_until_done(self) -> Result<()>

Wait for all tasks to complete.

Runs forever unless tasks fail.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where diff --git a/pr/2806/docs/iroh_dns_server/http/enum.CertMode.html b/pr/2806/docs/iroh_dns_server/http/enum.CertMode.html index 18755e6d69..c9f0105fbf 100644 --- a/pr/2806/docs/iroh_dns_server/http/enum.CertMode.html +++ b/pr/2806/docs/iroh_dns_server/http/enum.CertMode.html @@ -6,10 +6,10 @@

Variants§

§

Manual

Certs are loaded from a the cert_cache path

§

LetsEncrypt

ACME with LetsEncrypt servers

§

SelfSigned

Create self-signed certificates and store them in the cert_cache path

-

Trait Implementations§

Source§

impl Clone for CertMode

Source§

fn clone(&self) -> CertMode

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for CertMode

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for CertMode

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where - __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Display for CertMode

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl PartialEq for CertMode

Source§

fn eq(&self, other: &CertMode) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
Source§

impl Serialize for CertMode

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where - __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl Eq for CertMode

Source§

impl StructuralPartialEq for CertMode

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where +

Trait Implementations§

Source§

impl Clone for CertMode

Source§

fn clone(&self) -> CertMode

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for CertMode

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for CertMode

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where + __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Display for CertMode

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl PartialEq for CertMode

Source§

fn eq(&self, other: &CertMode) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
Source§

impl Serialize for CertMode

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where + __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl Eq for CertMode

Source§

impl StructuralPartialEq for CertMode

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

§

fn implicit( @@ -41,6 +41,6 @@ V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a -[WithDispatch] wrapper. Read more
Source§

impl<T> DeserializeOwned for T
where - T: for<'de> Deserialize<'de>,

§

impl<T> ErasedDestructor for T
where +[WithDispatch] wrapper. Read more

Source§

impl<T> DeserializeOwned for T
where + T: for<'de> Deserialize<'de>,

§

impl<T> ErasedDestructor for T
where T: 'static,

§

impl<T> MaybeSendSync for T

\ No newline at end of file diff --git a/pr/2806/docs/iroh_dns_server/http/enum.RateLimitConfig.html b/pr/2806/docs/iroh_dns_server/http/enum.RateLimitConfig.html index 37ee04f94d..e09a15f0df 100644 --- a/pr/2806/docs/iroh_dns_server/http/enum.RateLimitConfig.html +++ b/pr/2806/docs/iroh_dns_server/http/enum.RateLimitConfig.html @@ -10,9 +10,9 @@

Uses headers commonly used by reverse proxies to extract the original IP address, falling back to the connection’s peer IP address. https://docs.rs/tower_governor/latest/tower_governor/key_extractor/struct.SmartIpKeyExtractor.html

-

Trait Implementations§

Source§

impl Clone for RateLimitConfig

Source§

fn clone(&self) -> RateLimitConfig

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for RateLimitConfig

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for &RateLimitConfig

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl Default for RateLimitConfig

Source§

fn default() -> RateLimitConfig

Returns the “default value” for a type. Read more
Source§

impl<'de> Deserialize<'de> for RateLimitConfig

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where - __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Serialize for RateLimitConfig

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where - __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

§

impl Freeze for RateLimitConfig

§

impl RefUnwindSafe for RateLimitConfig

§

impl Send for RateLimitConfig

§

impl Sync for RateLimitConfig

§

impl Unpin for RateLimitConfig

§

impl UnwindSafe for RateLimitConfig

Blanket Implementations§

Source§

impl<T> Any for T
where +

Trait Implementations§

Source§

impl Clone for RateLimitConfig

Source§

fn clone(&self) -> RateLimitConfig

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for RateLimitConfig

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for &RateLimitConfig

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl Default for RateLimitConfig

Source§

fn default() -> RateLimitConfig

Returns the “default value” for a type. Read more
Source§

impl<'de> Deserialize<'de> for RateLimitConfig

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where + __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Serialize for RateLimitConfig

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where + __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

§

impl Freeze for RateLimitConfig

§

impl RefUnwindSafe for RateLimitConfig

§

impl Send for RateLimitConfig

§

impl Sync for RateLimitConfig

§

impl Unpin for RateLimitConfig

§

impl UnwindSafe for RateLimitConfig

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

§

fn implicit( @@ -39,6 +39,6 @@ V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a -[WithDispatch] wrapper. Read more
Source§

impl<T> DeserializeOwned for T
where - T: for<'de> Deserialize<'de>,

§

impl<T> ErasedDestructor for T
where +[WithDispatch] wrapper. Read more

Source§

impl<T> DeserializeOwned for T
where + T: for<'de> Deserialize<'de>,

§

impl<T> ErasedDestructor for T
where T: 'static,

§

impl<T> MaybeSendSync for T

\ No newline at end of file diff --git a/pr/2806/docs/iroh_dns_server/http/struct.HttpConfig.html b/pr/2806/docs/iroh_dns_server/http/struct.HttpConfig.html index 79112898c8..0bd9216616 100644 --- a/pr/2806/docs/iroh_dns_server/http/struct.HttpConfig.html +++ b/pr/2806/docs/iroh_dns_server/http/struct.HttpConfig.html @@ -4,9 +4,9 @@ }
Expand description

Config for the HTTP server

Fields§

§port: u16

Port to bind to

§bind_addr: Option<IpAddr>

Optionally set a custom bind address (will use 0.0.0.0 if unset)

-

Trait Implementations§

Source§

impl Clone for HttpConfig

Source§

fn clone(&self) -> HttpConfig

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for HttpConfig

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for HttpConfig

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where - __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Serialize for HttpConfig

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where - __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

§

impl Freeze for HttpConfig

§

impl RefUnwindSafe for HttpConfig

§

impl Send for HttpConfig

§

impl Sync for HttpConfig

§

impl Unpin for HttpConfig

§

impl UnwindSafe for HttpConfig

Blanket Implementations§

Source§

impl<T> Any for T
where +

Trait Implementations§

Source§

impl Clone for HttpConfig

Source§

fn clone(&self) -> HttpConfig

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for HttpConfig

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for HttpConfig

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where + __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Serialize for HttpConfig

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where + __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

§

fn implicit( @@ -33,6 +33,6 @@ V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a -[WithDispatch] wrapper. Read more
Source§

impl<T> DeserializeOwned for T
where - T: for<'de> Deserialize<'de>,

§

impl<T> ErasedDestructor for T
where +[WithDispatch] wrapper. Read more

Source§

impl<T> DeserializeOwned for T
where + T: for<'de> Deserialize<'de>,

§

impl<T> ErasedDestructor for T
where T: 'static,

§

impl<T> MaybeSendSync for T

\ No newline at end of file diff --git a/pr/2806/docs/iroh_dns_server/http/struct.HttpServer.html b/pr/2806/docs/iroh_dns_server/http/struct.HttpServer.html index 36af804fc9..7aa1996d76 100644 --- a/pr/2806/docs/iroh_dns_server/http/struct.HttpServer.html +++ b/pr/2806/docs/iroh_dns_server/http/struct.HttpServer.html @@ -4,11 +4,11 @@ https_config: Option<HttpsConfig>, rate_limit_config: RateLimitConfig, state: AppState, -) -> Result<HttpServer>

Spawn the server

+) -> Result<HttpServer>

Spawn the server

Source

pub fn http_addr(&self) -> Option<SocketAddr>

Get the bound address of the HTTP socket.

Source

pub fn https_addr(&self) -> Option<SocketAddr>

Get the bound address of the HTTPS socket.

-
Source

pub async fn shutdown(self) -> Result<()>

Shutdown the server and wait for all tasks to complete.

-
Source

pub async fn run_until_done(self) -> Result<()>

Wait for all tasks to complete.

+
Source

pub async fn shutdown(self) -> Result<()>

Shutdown the server and wait for all tasks to complete.

+
Source

pub async fn run_until_done(self) -> Result<()>

Wait for all tasks to complete.

Runs forever unless tasks fail.

Auto Trait Implementations§

§

impl Freeze for HttpServer

§

impl !RefUnwindSafe for HttpServer

§

impl Send for HttpServer

§

impl Sync for HttpServer

§

impl Unpin for HttpServer

§

impl !UnwindSafe for HttpServer

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where diff --git a/pr/2806/docs/iroh_dns_server/http/struct.HttpsConfig.html b/pr/2806/docs/iroh_dns_server/http/struct.HttpsConfig.html index eb0913e9e4..57f4d778e0 100644 --- a/pr/2806/docs/iroh_dns_server/http/struct.HttpsConfig.html +++ b/pr/2806/docs/iroh_dns_server/http/struct.HttpsConfig.html @@ -12,9 +12,9 @@
§cert_mode: CertMode

The mode of SSL certificate creation

§letsencrypt_contact: Option<String>

Letsencrypt contact email address (required if using CertMode::LetsEncrypt)

§letsencrypt_prod: Option<bool>

Whether to use the letsenrypt production servers (only applies to CertMode::LetsEncrypt)

-

Trait Implementations§

Source§

impl Clone for HttpsConfig

Source§

fn clone(&self) -> HttpsConfig

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for HttpsConfig

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for HttpsConfig

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where - __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Serialize for HttpsConfig

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where - __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where +

Trait Implementations§

Source§

impl Clone for HttpsConfig

Source§

fn clone(&self) -> HttpsConfig

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for HttpsConfig

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for HttpsConfig

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where + __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Serialize for HttpsConfig

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where + __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

§

fn implicit( @@ -41,6 +41,6 @@ V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a -[WithDispatch] wrapper. Read more
Source§

impl<T> DeserializeOwned for T
where - T: for<'de> Deserialize<'de>,

§

impl<T> ErasedDestructor for T
where +[WithDispatch] wrapper. Read more

Source§

impl<T> DeserializeOwned for T
where + T: for<'de> Deserialize<'de>,

§

impl<T> ErasedDestructor for T
where T: 'static,

§

impl<T> MaybeSendSync for T

\ No newline at end of file diff --git a/pr/2806/docs/iroh_dns_server/server/fn.run_with_config_until_ctrl_c.html b/pr/2806/docs/iroh_dns_server/server/fn.run_with_config_until_ctrl_c.html index 3cc470f946..8d5da170e1 100644 --- a/pr/2806/docs/iroh_dns_server/server/fn.run_with_config_until_ctrl_c.html +++ b/pr/2806/docs/iroh_dns_server/server/fn.run_with_config_until_ctrl_c.html @@ -1,2 +1,2 @@ -run_with_config_until_ctrl_c in iroh_dns_server::server - Rust
iroh_dns_server::server

Function run_with_config_until_ctrl_c

Source
pub async fn run_with_config_until_ctrl_c(config: Config) -> Result<()>
Expand description

Spawn the server and run until the Ctrl-C signal is received, then shutdown.

+run_with_config_until_ctrl_c in iroh_dns_server::server - Rust
iroh_dns_server::server

Function run_with_config_until_ctrl_c

Source
pub async fn run_with_config_until_ctrl_c(config: Config) -> Result<()>
Expand description

Spawn the server and run until the Ctrl-C signal is received, then shutdown.

\ No newline at end of file diff --git a/pr/2806/docs/iroh_dns_server/server/struct.Server.html b/pr/2806/docs/iroh_dns_server/server/struct.Server.html index dfee41b751..0b4aa3f8e4 100644 --- a/pr/2806/docs/iroh_dns_server/server/struct.Server.html +++ b/pr/2806/docs/iroh_dns_server/server/struct.Server.html @@ -1,13 +1,13 @@ Server in iroh_dns_server::server - Rust
iroh_dns_server::server

Struct Server

Source
pub struct Server { /* private fields */ }
Expand description

The iroh-dns server.

-

Implementations§

Source§

impl Server

Source

pub async fn spawn(config: Config, store: ZoneStore) -> Result<Self>

Spawn the server.

+

Implementations§

Source§

impl Server

Source

pub async fn spawn(config: Config, store: ZoneStore) -> Result<Self>

Spawn the server.

This will spawn several background tasks:

  • A DNS server task
  • A HTTP server task, if config.http is not empty
  • A HTTPS server task, if config.https is not empty
-
Source

pub async fn shutdown(self) -> Result<()>

Cancel the server tasks and wait for all tasks to complete.

-
Source

pub async fn run_until_error(self) -> Result<()>

Wait for all tasks to complete.

+
Source

pub async fn shutdown(self) -> Result<()>

Cancel the server tasks and wait for all tasks to complete.

+
Source

pub async fn run_until_error(self) -> Result<()>

Wait for all tasks to complete.

This will run forever unless all tasks close with an error, or Self::cancel is called.

Auto Trait Implementations§

§

impl Freeze for Server

§

impl !RefUnwindSafe for Server

§

impl Send for Server

§

impl Sync for Server

§

impl Unpin for Server

§

impl !UnwindSafe for Server

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where diff --git a/pr/2806/docs/iroh_dns_server/struct.ZoneStore.html b/pr/2806/docs/iroh_dns_server/struct.ZoneStore.html index 447f6a860d..1cea4957bd 100644 --- a/pr/2806/docs/iroh_dns_server/struct.ZoneStore.html +++ b/pr/2806/docs/iroh_dns_server/struct.ZoneStore.html @@ -4,8 +4,8 @@

Implementations§

Source§

impl ZoneStore

Source

pub fn persistent( path: impl AsRef<Path>, options: ZoneStoreOptions, -) -> Result<Self>

Create a persistent store

-
Source

pub fn in_memory(options: ZoneStoreOptions) -> Result<Self>

Create an in-memory store.

+) -> Result<Self>

Create a persistent store

+
Source

pub fn in_memory(options: ZoneStoreOptions) -> Result<Self>

Create an in-memory store.

Source

pub fn with_mainline_fallback(self, bootstrap: BootstrapOption) -> Self

Configure a pkarr client for resolution of packets from the bittorrent mainline DHT.

This will be used only as a fallback if there is no local info available.

Optionally set custom bootstrap nodes. If bootstrap is empty it will use the default @@ -16,16 +16,16 @@ pubkey: &PublicKeyBytes, name: &Name, record_type: RecordType, -) -> Result<Option<Arc<RecordSet>>>

Resolve a DNS query.

+) -> Result<Option<Arc<RecordSet>>>

Resolve a DNS query.

Source

pub async fn get_signed_packet( &self, pubkey: &PublicKeyBytes, -) -> Result<Option<SignedPacket>>

Get the latest signed packet for a pubkey.

+) -> Result<Option<SignedPacket>>

Get the latest signed packet for a pubkey.

Source

pub async fn insert( &self, signed_packet: SignedPacket, _source: PacketSource, -) -> Result<bool>

Insert a signed packet into the cache and the store.

+) -> Result<bool>

Insert a signed packet into the cache and the store.

Returns whether this produced an update, i.e. whether the packet is the newest for its pubkey.

Trait Implementations§

Source§

impl Clone for ZoneStore

Source§

fn clone(&self) -> ZoneStore

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for ZoneStore

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where diff --git a/pr/2806/docs/iroh_net_report/struct.Client.html b/pr/2806/docs/iroh_net_report/struct.Client.html index ca431f64c8..02ee2680d3 100644 --- a/pr/2806/docs/iroh_net_report/struct.Client.html +++ b/pr/2806/docs/iroh_net_report/struct.Client.html @@ -8,7 +8,7 @@

Implementations§

Source§

impl Client

Source

pub fn new( port_mapper: Option<Client>, dns_resolver: DnsResolver, -) -> Result<Self>

Creates a new net_report client.

+) -> Result<Self>

Creates a new net_report client.

This starts a connected actor in the background. Once the client is dropped it will stop running.

Source

pub fn addr(&self) -> Addr

Returns a new address to send messages to this actor.

@@ -20,7 +20,7 @@ stun_conn4: Option<Arc<UdpSocket>>, stun_conn6: Option<Arc<UdpSocket>>, quic_config: Option<QuicConfig>, -) -> Result<Arc<Report>>

Runs a net_report, returning the report.

+) -> Result<Arc<Report>>

Runs a net_report, returning the report.

It may not be called concurrently with itself, &mut self takes care of that.

The stun_conn4 and stun_conn6 endpoints are bound UDP sockets to use to send out STUN packets. This function will not read from the sockets, as they may be @@ -41,7 +41,7 @@ stun_conn4: Option<Arc<UdpSocket>>, stun_conn6: Option<Arc<UdpSocket>>, quic_config: Option<QuicConfig>, -) -> Result<Receiver<Result<Arc<Report>>>>

Get report with channel

+) -> Result<Receiver<Result<Arc<Report>>>>

Get report with channel

Trait Implementations§

Source§

impl Debug for Client

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

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§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where diff --git a/pr/2806/docs/iroh_relay/all.html b/pr/2806/docs/iroh_relay/all.html index f33c52825c..ed2bac3fc2 100644 --- a/pr/2806/docs/iroh_relay/all.html +++ b/pr/2806/docs/iroh_relay/all.html @@ -1 +1 @@ -List of all items in this crate
\ No newline at end of file +List of all items in this crate
\ No newline at end of file diff --git a/pr/2806/docs/iroh_relay/client/enum.ClientError.html b/pr/2806/docs/iroh_relay/client/enum.ClientError.html index 231d50f5f3..b531b93096 100644 --- a/pr/2806/docs/iroh_relay/client/enum.ClientError.html +++ b/pr/2806/docs/iroh_relay/client/enum.ClientError.html @@ -1,7 +1,7 @@ ClientError in iroh_relay::client - Rust
iroh_relay::client

Enum ClientError

Source
pub enum ClientError {
 
Show 19 variants Closed, Send, - Receive(Error), + Receive(Error), ConnectTimeout, DialIO(Error), IPDisabled, @@ -15,13 +15,13 @@ PingTimeout, PingAborted, InvalidUrl(String), - Dns(Option<Error>), + Dns(Option<Error>), ActorGone, WebsocketError(Error),
}
Expand description

Possible connection errors on the Client

Variants§

§

Closed

The client is closed

§

Send

There was an error sending a packet

-
§

Receive(Error)

There was an error receiving a packet

+
§

Receive(Error)

There was an error receiving a packet

§

ConnectTimeout

There was a connection timeout error

§

DialIO(Error)

There was an error dialing

§

IPDisabled

Both IPv4 and IPv6 are disabled for this relay node

@@ -35,7 +35,7 @@
§

PingTimeout

The ping request timed out

§

PingAborted

The ping request was aborted

§

InvalidUrl(String)

The given Url is invalid

-
§

Dns(Option<Error>)

There was an error with DNS resolution

+
§

Dns(Option<Error>)

There was an error with DNS resolution

§

ActorGone

The inner actor is gone, likely means things are shutdown.

§

WebsocketError(Error)

An error related to websockets, either errors with parsing ws messages or the handshake

Trait Implementations§

Source§

impl Debug for ClientError

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Display for ClientError

Source§

fn fmt(&self, __formatter: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Error for ClientError

Source§

fn source(&self) -> Option<&(dyn Error + 'static)>

Returns the lower-level source of this error, if any. Read more
1.0.0 · Source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
1.0.0 · Source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
Source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type-based access to context intended for error reports. Read more
Source§

impl From<Error> for ClientError

Source§

fn from(source: Error) -> Self

Converts to this type from the input type.
Source§

impl From<Error> for ClientError

Source§

fn from(source: Error) -> Self

Converts to this type from the input type.
Source§

impl From<Error> for ClientError

Source§

fn from(source: Error) -> Self

Converts to this type from the input type.
Source§

impl From<Error> for ClientError

Source§

fn from(source: Error) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where diff --git a/pr/2806/docs/iroh_relay/quic/struct.QuicClient.html b/pr/2806/docs/iroh_relay/quic/struct.QuicClient.html index aefd5e2f23..4fc554e901 100644 --- a/pr/2806/docs/iroh_relay/quic/struct.QuicClient.html +++ b/pr/2806/docs/iroh_relay/quic/struct.QuicClient.html @@ -1,11 +1,11 @@ QuicClient in iroh_relay::quic - Rust
iroh_relay::quic

Struct QuicClient

Source
pub struct QuicClient { /* private fields */ }
Expand description

Handles the client side of QUIC address discovery.

-

Implementations§

Source§

impl QuicClient

Source

pub fn new(ep: Endpoint, client_config: ClientConfig) -> Result<Self>

Create a new QuicClient to handle the client side of QUIC +

Implementations§

Source§

impl QuicClient

Source

pub fn new(ep: Endpoint, client_config: ClientConfig) -> Result<Self>

Create a new QuicClient to handle the client side of QUIC address discovery.

Source

pub async fn get_addr_and_latency( &self, server_addr: SocketAddr, host: &str, -) -> Result<(SocketAddr, Duration)>

Client side of QUIC address discovery.

+) -> Result<(SocketAddr, Duration)>

Client side of QUIC address discovery.

Creates a connection and returns the observed address and estimated latency of the connection.

Consumes and gracefully closes the connection.

diff --git a/pr/2806/docs/iroh_relay/server/constant.DEFAULT_CERT_RELOAD_INTERVAL.html b/pr/2806/docs/iroh_relay/server/constant.DEFAULT_CERT_RELOAD_INTERVAL.html new file mode 100644 index 0000000000..9a1ab85de3 --- /dev/null +++ b/pr/2806/docs/iroh_relay/server/constant.DEFAULT_CERT_RELOAD_INTERVAL.html @@ -0,0 +1,2 @@ +DEFAULT_CERT_RELOAD_INTERVAL in iroh_relay::server - Rust
iroh_relay::server

Constant DEFAULT_CERT_RELOAD_INTERVAL

Source
pub const DEFAULT_CERT_RELOAD_INTERVAL: Duration;
Available on crate feature server only.
Expand description

The default certificate reload interval.

+
\ No newline at end of file diff --git a/pr/2806/docs/iroh_relay/server/enum.CertConfig.html b/pr/2806/docs/iroh_relay/server/enum.CertConfig.html index 403c6a602f..276aa4e1fc 100644 --- a/pr/2806/docs/iroh_relay/server/enum.CertConfig.html +++ b/pr/2806/docs/iroh_relay/server/enum.CertConfig.html @@ -1,16 +1,18 @@ -CertConfig in iroh_relay::server - Rust
iroh_relay::server

Enum CertConfig

Source
pub enum CertConfig<EC: Debug, EA: Debug = EC> {
+CertConfig in iroh_relay::server - Rust
iroh_relay::server

Enum CertConfig

Source
pub enum CertConfig<EC: Debug, EA: Debug = EC> {
     LetsEncrypt {
         state: AcmeState<EC, EA>,
     },
     Manual {
         certs: Vec<CertificateDer<'static>>,
     },
+    Reloading,
 }
Available on crate feature server only.
Expand description

TLS certificate configuration.

Variants§

§

LetsEncrypt

Use Let’s Encrypt.

Fields

§state: AcmeState<EC, EA>

State for Let’s Encrypt certificates.

§

Manual

Use a static TLS key and certificate chain.

Fields

§certs: Vec<CertificateDer<'static>>

The TLS certificate chain.

-

Trait Implementations§

Source§

impl<EC: Debug, EA: Debug> Debug for CertConfig<EC, EA>

Source§

fn fmt(&self, __derive_more_f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<EC, EA> Freeze for CertConfig<EC, EA>

§

impl<EC, EA = EC> !RefUnwindSafe for CertConfig<EC, EA>

§

impl<EC, EA> Send for CertConfig<EC, EA>

§

impl<EC, EA = EC> !Sync for CertConfig<EC, EA>

§

impl<EC, EA> Unpin for CertConfig<EC, EA>

§

impl<EC, EA = EC> !UnwindSafe for CertConfig<EC, EA>

Blanket Implementations§

Source§

impl<T> Any for T
where +

§

Reloading

Use a TLS key and certificate chain that can be reloaded.

+

Trait Implementations§

Source§

impl<EC: Debug, EA: Debug> Debug for CertConfig<EC, EA>

Source§

fn fmt(&self, __derive_more_f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<EC, EA> Freeze for CertConfig<EC, EA>

§

impl<EC, EA = EC> !RefUnwindSafe for CertConfig<EC, EA>

§

impl<EC, EA> Send for CertConfig<EC, EA>

§

impl<EC, EA = EC> !Sync for CertConfig<EC, EA>

§

impl<EC, EA> Unpin for CertConfig<EC, EA>

§

impl<EC, EA = EC> !UnwindSafe for CertConfig<EC, EA>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

§

fn implicit( diff --git a/pr/2806/docs/iroh_relay/server/index.html b/pr/2806/docs/iroh_relay/server/index.html index 1779da05a8..797e0dc15e 100644 --- a/pr/2806/docs/iroh_relay/server/index.html +++ b/pr/2806/docs/iroh_relay/server/index.html @@ -1,4 +1,4 @@ -iroh_relay::server - Rust
iroh_relay

Module server

Source
Available on crate feature server only.
Expand description

A fully-fledged iroh-relay server over HTTP or HTTPS.

+iroh_relay::server - Rust
iroh_relay

Module server

Source
Available on crate feature server only.
Expand description

A fully-fledged iroh-relay server over HTTP or HTTPS.

This module provides an API to run a full fledged iroh-relay server. It is primarily used by the iroh-relay binary in this crate. It can be used to run a relay server in other locations however.

@@ -13,4 +13,4 @@
  • HTTPS /generate_204: Used for net_report probes.
  • STUN: UDP port for STUN requests/responses.
  • -

    Modules§

    • testingtest-utils
      Exposes functions to quickly configure a server suitable for testing.

    Structs§

    Enums§

    \ No newline at end of file +

    Modules§

    • testingtest-utils
      Exposes functions to quickly configure a server suitable for testing.

    Structs§

    Enums§

    Constants§

    \ No newline at end of file diff --git a/pr/2806/docs/iroh_relay/server/resolver/constant.DEFAULT_CERT_RELOAD_INTERVAL.html b/pr/2806/docs/iroh_relay/server/resolver/constant.DEFAULT_CERT_RELOAD_INTERVAL.html new file mode 100644 index 0000000000..5dffd63782 --- /dev/null +++ b/pr/2806/docs/iroh_relay/server/resolver/constant.DEFAULT_CERT_RELOAD_INTERVAL.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

    Redirecting to ../../../iroh_relay/server/constant.DEFAULT_CERT_RELOAD_INTERVAL.html...

    + + + \ No newline at end of file diff --git a/pr/2806/docs/iroh_relay/server/resolver/struct.ReloadingResolver.html b/pr/2806/docs/iroh_relay/server/resolver/struct.ReloadingResolver.html new file mode 100644 index 0000000000..1a63083536 --- /dev/null +++ b/pr/2806/docs/iroh_relay/server/resolver/struct.ReloadingResolver.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

    Redirecting to ../../../iroh_relay/server/struct.ReloadingResolver.html...

    + + + \ No newline at end of file diff --git a/pr/2806/docs/iroh_relay/server/sidebar-items.js b/pr/2806/docs/iroh_relay/server/sidebar-items.js index 221d689620..e473e66408 100644 --- a/pr/2806/docs/iroh_relay/server/sidebar-items.js +++ b/pr/2806/docs/iroh_relay/server/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"enum":["CertConfig","MaybeTlsStreamServer"],"mod":["testing"],"struct":["ClientConnRateLimit","Limits","Metrics","QuicConfig","RelayConfig","Server","ServerConfig","StunConfig","StunMetrics","TlsConfig"]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"constant":["DEFAULT_CERT_RELOAD_INTERVAL"],"enum":["CertConfig","MaybeTlsStreamServer"],"mod":["testing"],"struct":["ClientConnRateLimit","Limits","Metrics","QuicConfig","RelayConfig","ReloadingResolver","Server","ServerConfig","StunConfig","StunMetrics","TlsConfig"]}; \ No newline at end of file diff --git a/pr/2806/docs/iroh_relay/server/struct.ClientConnRateLimit.html b/pr/2806/docs/iroh_relay/server/struct.ClientConnRateLimit.html index ceb3b54c7e..cc503b4093 100644 --- a/pr/2806/docs/iroh_relay/server/struct.ClientConnRateLimit.html +++ b/pr/2806/docs/iroh_relay/server/struct.ClientConnRateLimit.html @@ -1,10 +1,10 @@ -ClientConnRateLimit in iroh_relay::server - Rust
    iroh_relay::server

    Struct ClientConnRateLimit

    Source
    pub struct ClientConnRateLimit {
    +ClientConnRateLimit in iroh_relay::server - Rust
    iroh_relay::server

    Struct ClientConnRateLimit

    Source
    pub struct ClientConnRateLimit {
         pub bytes_per_second: NonZeroU32,
         pub max_burst_bytes: Option<NonZeroU32>,
     }
    Available on crate feature server only.
    Expand description

    Per-client rate limit configuration.

    Fields§

    §bytes_per_second: NonZeroU32

    Max number of bytes per second to read from the client connection.

    §max_burst_bytes: Option<NonZeroU32>

    Max number of bytes to read in a single burst.

    -

    Trait Implementations§

    Source§

    impl Clone for ClientConnRateLimit

    Source§

    fn clone(&self) -> ClientConnRateLimit

    Returns a copy of the value. Read more
    1.0.0 · Source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    Source§

    impl Debug for ClientConnRateLimit

    Source§

    fn fmt(&self, __derive_more_f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    Source§

    impl Copy for ClientConnRateLimit

    Auto Trait Implementations§

    Blanket Implementations§

    Source§

    impl<T> Any for T
    where +

    Trait Implementations§

    Source§

    impl Clone for ClientConnRateLimit

    Source§

    fn clone(&self) -> ClientConnRateLimit

    Returns a copy of the value. Read more
    1.0.0 · Source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    Source§

    impl Debug for ClientConnRateLimit

    Source§

    fn fmt(&self, __derive_more_f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    Source§

    impl Copy for ClientConnRateLimit

    Auto Trait Implementations§

    Blanket Implementations§

    Source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    Source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    §

    impl<'a, T, E> AsTaggedExplicit<'a, E> for T
    where T: 'a,

    §

    fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

    §

    impl<'a, T, E> AsTaggedImplicit<'a, E> for T
    where T: 'a,

    §

    fn implicit( diff --git a/pr/2806/docs/iroh_relay/server/struct.Limits.html b/pr/2806/docs/iroh_relay/server/struct.Limits.html index 0680f1d4ea..c732a6df04 100644 --- a/pr/2806/docs/iroh_relay/server/struct.Limits.html +++ b/pr/2806/docs/iroh_relay/server/struct.Limits.html @@ -1,4 +1,4 @@ -Limits in iroh_relay::server - Rust
    iroh_relay::server

    Struct Limits

    Source
    pub struct Limits {
    +Limits in iroh_relay::server - Rust
    iroh_relay::server

    Struct Limits

    Source
    pub struct Limits {
         pub accept_conn_limit: Option<f64>,
         pub accept_conn_burst: Option<usize>,
         pub client_rx: Option<ClientConnRateLimit>,
    @@ -6,7 +6,7 @@
     

    Fields§

    §accept_conn_limit: Option<f64>

    Rate limit for accepting new connection. Unlimited if not set.

    §accept_conn_burst: Option<usize>

    Burst limit for accepting new connection. Unlimited if not set.

    §client_rx: Option<ClientConnRateLimit>

    Rate limits for incoming traffic from a client connection.

    -

    Trait Implementations§

    Source§

    impl Debug for Limits

    Source§

    fn fmt(&self, __derive_more_f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    Source§

    impl Default for Limits

    Source§

    fn default() -> Limits

    Returns the “default value” for a type. Read more

    Auto Trait Implementations§

    §

    impl Freeze for Limits

    §

    impl RefUnwindSafe for Limits

    §

    impl Send for Limits

    §

    impl Sync for Limits

    §

    impl Unpin for Limits

    §

    impl UnwindSafe for Limits

    Blanket Implementations§

    Source§

    impl<T> Any for T
    where +

    Trait Implementations§

    Source§

    impl Debug for Limits

    Source§

    fn fmt(&self, __derive_more_f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    Source§

    impl Default for Limits

    Source§

    fn default() -> Limits

    Returns the “default value” for a type. Read more

    Auto Trait Implementations§

    §

    impl Freeze for Limits

    §

    impl RefUnwindSafe for Limits

    §

    impl Send for Limits

    §

    impl Sync for Limits

    §

    impl Unpin for Limits

    §

    impl UnwindSafe for Limits

    Blanket Implementations§

    Source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    Source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    §

    impl<'a, T, E> AsTaggedExplicit<'a, E> for T
    where T: 'a,

    §

    fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

    §

    impl<'a, T, E> AsTaggedImplicit<'a, E> for T
    where T: 'a,

    §

    fn implicit( diff --git a/pr/2806/docs/iroh_relay/server/struct.QuicConfig.html b/pr/2806/docs/iroh_relay/server/struct.QuicConfig.html index fa9342dec2..7eea9276a6 100644 --- a/pr/2806/docs/iroh_relay/server/struct.QuicConfig.html +++ b/pr/2806/docs/iroh_relay/server/struct.QuicConfig.html @@ -1,4 +1,4 @@ -QuicConfig in iroh_relay::server - Rust
    iroh_relay::server

    Struct QuicConfig

    Source
    pub struct QuicConfig {
    +QuicConfig in iroh_relay::server - Rust
    iroh_relay::server

    Struct QuicConfig

    Source
    pub struct QuicConfig {
         pub bind_addr: SocketAddr,
         pub server_config: ServerConfig,
     }
    Available on crate feature server only.
    Expand description

    Configuration for the QUIC server.

    @@ -7,7 +7,7 @@
    §server_config: ServerConfig

    The TLS server configuration for the QUIC server.

    If this [rustls::ServerConfig] does not support TLS 1.3, the QUIC server will fail to spawn.

    -

    Trait Implementations§

    Source§

    impl Debug for QuicConfig

    Source§

    fn fmt(&self, __derive_more_f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Source§

    impl<T> Any for T
    where +

    Trait Implementations§

    Source§

    impl Debug for QuicConfig

    Source§

    fn fmt(&self, __derive_more_f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    Source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    §

    impl<'a, T, E> AsTaggedExplicit<'a, E> for T
    where T: 'a,

    §

    fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

    §

    impl<'a, T, E> AsTaggedImplicit<'a, E> for T
    where T: 'a,

    §

    fn implicit( diff --git a/pr/2806/docs/iroh_relay/server/struct.RelayConfig.html b/pr/2806/docs/iroh_relay/server/struct.RelayConfig.html index a3d3a367cb..86c58932ff 100644 --- a/pr/2806/docs/iroh_relay/server/struct.RelayConfig.html +++ b/pr/2806/docs/iroh_relay/server/struct.RelayConfig.html @@ -1,4 +1,4 @@ -RelayConfig in iroh_relay::server - Rust
    iroh_relay::server

    Struct RelayConfig

    Source
    pub struct RelayConfig<EC: Debug, EA: Debug = EC> {
    +RelayConfig in iroh_relay::server - Rust
    iroh_relay::server

    Struct RelayConfig

    Source
    pub struct RelayConfig<EC: Debug, EA: Debug = EC> {
         pub http_bind_addr: SocketAddr,
         pub tls: Option<TlsConfig<EC, EA>>,
         pub limits: Limits,
    @@ -14,8 +14,8 @@
     

    If None all the HTTP services that would be served here are served from RelayConfig::http_bind_addr.

    §limits: Limits

    Rate limits.

    -

    Trait Implementations§

    Source§

    impl<EC: Debug, EA: Debug> Debug for RelayConfig<EC, EA>
    where - Option<TlsConfig<EC, EA>>: Debug,

    Source§

    fn fmt(&self, __derive_more_f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    §

    impl<EC, EA> Freeze for RelayConfig<EC, EA>

    §

    impl<EC, EA = EC> !RefUnwindSafe for RelayConfig<EC, EA>

    §

    impl<EC, EA> Send for RelayConfig<EC, EA>

    §

    impl<EC, EA = EC> !Sync for RelayConfig<EC, EA>

    §

    impl<EC, EA> Unpin for RelayConfig<EC, EA>

    §

    impl<EC, EA = EC> !UnwindSafe for RelayConfig<EC, EA>

    Blanket Implementations§

    Source§

    impl<T> Any for T
    where +

    Trait Implementations§

    Source§

    impl<EC: Debug, EA: Debug> Debug for RelayConfig<EC, EA>
    where + Option<TlsConfig<EC, EA>>: Debug,

    Source§

    fn fmt(&self, __derive_more_f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    §

    impl<EC, EA> Freeze for RelayConfig<EC, EA>

    §

    impl<EC, EA = EC> !RefUnwindSafe for RelayConfig<EC, EA>

    §

    impl<EC, EA> Send for RelayConfig<EC, EA>

    §

    impl<EC, EA = EC> !Sync for RelayConfig<EC, EA>

    §

    impl<EC, EA> Unpin for RelayConfig<EC, EA>

    §

    impl<EC, EA = EC> !UnwindSafe for RelayConfig<EC, EA>

    Blanket Implementations§

    Source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    Source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    §

    impl<'a, T, E> AsTaggedExplicit<'a, E> for T
    where T: 'a,

    §

    fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

    §

    impl<'a, T, E> AsTaggedImplicit<'a, E> for T
    where T: 'a,

    §

    fn implicit( diff --git a/pr/2806/docs/iroh_relay/server/struct.ReloadingResolver.html b/pr/2806/docs/iroh_relay/server/struct.ReloadingResolver.html new file mode 100644 index 0000000000..ea62096620 --- /dev/null +++ b/pr/2806/docs/iroh_relay/server/struct.ReloadingResolver.html @@ -0,0 +1,38 @@ +ReloadingResolver in iroh_relay::server - Rust
    iroh_relay::server

    Struct ReloadingResolver

    Source
    pub struct ReloadingResolver<Loader: Send + 'static> { /* private fields */ }
    Available on crate feature server only.
    Expand description

    A Certificate resolver that reloads the certificate every interval

    +

    Implementations§

    Source§

    impl<Loader> ReloadingResolver<Loader>
    where + Loader: Send + Loader<Value = CertifiedKey> + 'static,

    Source

    pub async fn init(loader: Loader, interval: Duration) -> Result<Self>

    Perform the initial load and construct the ReloadingResolver.

    +
    Source

    pub fn shutdown(self)

    Shutdown the resolver.

    +
    Source

    pub async fn reload(&self)

    Reload the certificate.

    +

    Methods from Deref<Target = Reloadable<CertifiedKey, Loader>>§

    pub fn get(&self) -> Arc<T>

    Get the currently loaded value.

    +

    pub fn set(&self, value: Arc<T>) -> Arc<T>

    Store new value and return the old one.

    +

    pub async fn reload(&self) -> Result<Arc<T>, <L as Loader>::Error>

    Reload the value, store it and return the newly loaded value.

    +

    If loader fails with an error, the stored value doesn’t change.

    +

    Trait Implementations§

    Source§

    impl<Loader: Debug + Send + 'static> Debug for ReloadingResolver<Loader>

    Source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    Source§

    impl<Loader: Send> Deref for ReloadingResolver<Loader>

    Source§

    type Target = Reloadable<CertifiedKey, Loader>

    The resulting type after dereferencing.
    Source§

    fn deref(&self) -> &Self::Target

    Dereferences the value.
    Source§

    impl<Loader> ResolvesServerCert for ReloadingResolver<Loader>
    where + Loader: Loader<Value = CertifiedKey> + Send + Debug,

    Source§

    fn resolve(&self, _client_hello: ClientHello<'_>) -> Option<Arc<CertifiedKey>>

    Choose a certificate chain and matching key given simplified +ClientHello information. Read more
    §

    fn only_raw_public_keys(&self) -> bool

    Return true when the server only supports raw public keys.

    Auto Trait Implementations§

    §

    impl<Loader> Freeze for ReloadingResolver<Loader>

    §

    impl<Loader> !RefUnwindSafe for ReloadingResolver<Loader>

    §

    impl<Loader> Send for ReloadingResolver<Loader>

    §

    impl<Loader> Sync for ReloadingResolver<Loader>

    §

    impl<Loader> Unpin for ReloadingResolver<Loader>

    §

    impl<Loader> !UnwindSafe for ReloadingResolver<Loader>

    Blanket Implementations§

    Source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    Source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    §

    impl<'a, T, E> AsTaggedExplicit<'a, E> for T
    where + T: 'a,

    §

    fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

    §

    impl<'a, T, E> AsTaggedImplicit<'a, E> for T
    where + T: 'a,

    §

    fn implicit( + self, + class: Class, + constructed: bool, + tag: u32, +) -> TaggedParser<'a, Implicit, Self, E>

    Source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    Source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    Source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    Source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    Source§

    impl<T> From<T> for T

    Source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    §

    impl<T> Instrument for T

    §

    fn instrument(self, span: Span) -> Instrumented<Self>

    Instruments this type with the provided [Span], returning an +Instrumented wrapper. Read more
    §

    fn in_current_span(self) -> Instrumented<Self>

    Instruments this type with the current Span, returning an +Instrumented wrapper. Read more
    Source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    Source§

    fn into(self) -> U

    Calls U::from(self).

    +

    That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

    +
    §

    impl<T> Pointable for T

    §

    const ALIGN: usize = _

    The alignment of pointer.
    §

    type Init = T

    The type for initializers.
    §

    unsafe fn init(init: <T as Pointable>::Init) -> usize

    Initializes a with the given initializer. Read more
    §

    unsafe fn deref<'a>(ptr: usize) -> &'a T

    Dereferences the given pointer. Read more
    §

    unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

    Mutably dereferences the given pointer. Read more
    §

    unsafe fn drop(ptr: usize)

    Drops the object pointed to by the given pointer. Read more
    Source§

    impl<P, T> Receiver for P
    where + P: Deref<Target = T> + ?Sized, + T: ?Sized,

    Source§

    type Target = T

    🔬This is a nightly-only experimental API. (arbitrary_self_types)
    Available on non-bootstrap only.
    The target type on which the method may be called.
    Source§

    impl<T> Same for T

    Source§

    type Output = T

    Should always be Self
    Source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    Source§

    type Error = Infallible

    The type returned in the event of a conversion error.
    Source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    Source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    Source§

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    Source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    §

    impl<T> WithSubscriber for T

    §

    fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
    where + S: Into<Dispatch>,

    Attaches the provided Subscriber to this type, returning a +[WithDispatch] wrapper. Read more
    §

    fn with_current_subscriber(self) -> WithDispatch<Self>

    Attaches the current default Subscriber to this type, returning a +[WithDispatch] wrapper. Read more
    §

    impl<T> ErasedDestructor for T
    where + T: 'static,

    §

    impl<T> MaybeSendSync for T

    \ No newline at end of file diff --git a/pr/2806/docs/iroh_relay/server/struct.Server.html b/pr/2806/docs/iroh_relay/server/struct.Server.html index 4b22a930cd..e467cb7957 100644 --- a/pr/2806/docs/iroh_relay/server/struct.Server.html +++ b/pr/2806/docs/iroh_relay/server/struct.Server.html @@ -1,24 +1,24 @@ -Server in iroh_relay::server - Rust
    iroh_relay::server

    Struct Server

    Source
    pub struct Server { /* private fields */ }
    Available on crate feature server only.
    Expand description

    A running Relay + STUN server.

    +Server in iroh_relay::server - Rust
    iroh_relay::server

    Struct Server

    Source
    pub struct Server { /* private fields */ }
    Available on crate feature server only.
    Expand description

    A running Relay + STUN server.

    This is a full Relay server, including STUN, Relay and various associated HTTP services.

    Dropping this will stop the server.

    -

    Implementations§

    Source§

    impl Server

    Source

    pub async fn spawn<EC, EA>(config: ServerConfig<EC, EA>) -> Result<Self>
    where +

    Implementations§

    Source§

    impl Server

    Source

    pub async fn spawn<EC, EA>(config: ServerConfig<EC, EA>) -> Result<Self>
    where EC: Debug + 'static, EA: Debug + 'static,

    Starts the server.

    -
    Source

    pub async fn shutdown(self) -> Result<()>

    Requests graceful shutdown.

    +
    Source

    pub async fn shutdown(self) -> Result<()>

    Requests graceful shutdown.

    Returns once all server tasks have stopped.

    -
    Source

    pub fn task_handle(&mut self) -> &mut AbortOnDropHandle<Result<()>>

    Returns the handle for the task.

    +
    Source

    pub fn task_handle(&mut self) -> &mut AbortOnDropHandle<Result<()>>

    Returns the handle for the task.

    This allows waiting for the server’s supervisor task to finish. Can be useful in case there is an error in the server before it is shut down.

    -
    Source

    pub fn https_addr(&self) -> Option<SocketAddr>

    The socket address the HTTPS server is listening on.

    -
    Source

    pub fn http_addr(&self) -> Option<SocketAddr>

    The socket address the HTTP server is listening on.

    -
    Source

    pub fn quic_addr(&self) -> Option<SocketAddr>

    The socket address the QUIC server is listening on.

    -
    Source

    pub fn stun_addr(&self) -> Option<SocketAddr>

    The socket address the STUN server is listening on.

    -
    Source

    pub fn certificates(&self) -> Option<Vec<CertificateDer<'static>>>

    The certificates chain if configured with manual TLS certificates.

    -
    Source

    pub fn https_url(&self) -> Option<RelayUrl>

    Available on crate feature test-utils only.

    Get the server’s https RelayUrl.

    +
    Source

    pub fn https_addr(&self) -> Option<SocketAddr>

    The socket address the HTTPS server is listening on.

    +
    Source

    pub fn http_addr(&self) -> Option<SocketAddr>

    The socket address the HTTP server is listening on.

    +
    Source

    pub fn quic_addr(&self) -> Option<SocketAddr>

    The socket address the QUIC server is listening on.

    +
    Source

    pub fn stun_addr(&self) -> Option<SocketAddr>

    The socket address the STUN server is listening on.

    +
    Source

    pub fn certificates(&self) -> Option<Vec<CertificateDer<'static>>>

    The certificates chain if configured with manual TLS certificates.

    +
    Source

    pub fn https_url(&self) -> Option<RelayUrl>

    Available on crate feature test-utils only.

    Get the server’s https RelayUrl.

    This uses Self::https_addr so it’s mostly useful for local development.

    -
    Source

    pub fn http_url(&self) -> Option<RelayUrl>

    Available on crate feature test-utils only.

    Get the server’s http RelayUrl.

    +
    Source

    pub fn http_url(&self) -> Option<RelayUrl>

    Available on crate feature test-utils only.

    Get the server’s http RelayUrl.

    This uses Self::http_addr so it’s mostly useful for local development.

    -

    Trait Implementations§

    Source§

    impl Debug for Server

    Source§

    fn fmt(&self, __derive_more_f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    §

    impl Freeze for Server

    §

    impl RefUnwindSafe for Server

    §

    impl Send for Server

    §

    impl Sync for Server

    §

    impl Unpin for Server

    §

    impl UnwindSafe for Server

    Blanket Implementations§

    Source§

    impl<T> Any for T
    where +

    Trait Implementations§

    Source§

    impl Debug for Server

    Source§

    fn fmt(&self, __derive_more_f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    §

    impl Freeze for Server

    §

    impl RefUnwindSafe for Server

    §

    impl Send for Server

    §

    impl Sync for Server

    §

    impl Unpin for Server

    §

    impl UnwindSafe for Server

    Blanket Implementations§

    Source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    Source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    §

    impl<'a, T, E> AsTaggedExplicit<'a, E> for T
    where T: 'a,

    §

    fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

    §

    impl<'a, T, E> AsTaggedImplicit<'a, E> for T
    where T: 'a,

    §

    fn implicit( diff --git a/pr/2806/docs/iroh_relay/server/struct.ServerConfig.html b/pr/2806/docs/iroh_relay/server/struct.ServerConfig.html index 4323cf0bb4..1472ed154c 100644 --- a/pr/2806/docs/iroh_relay/server/struct.ServerConfig.html +++ b/pr/2806/docs/iroh_relay/server/struct.ServerConfig.html @@ -1,4 +1,4 @@ -ServerConfig in iroh_relay::server - Rust
    iroh_relay::server

    Struct ServerConfig

    Source
    pub struct ServerConfig<EC: Debug, EA: Debug = EC> {
    +ServerConfig in iroh_relay::server - Rust
    iroh_relay::server

    Struct ServerConfig

    Source
    pub struct ServerConfig<EC: Debug, EA: Debug = EC> {
         pub relay: Option<RelayConfig<EC, EA>>,
         pub stun: Option<StunConfig>,
         pub quic: Option<QuicConfig>,
    @@ -10,8 +10,8 @@
     
    §stun: Option<StunConfig>

    Configuration for the STUN server, disabled if None.

    §quic: Option<QuicConfig>

    Configuration for the QUIC server, disabled if None.

    §metrics_addr: Option<SocketAddr>
    Available on crate feature metrics only.

    Socket to serve metrics on.

    -

    Trait Implementations§

    Source§

    impl<EC: Debug, EA: Debug> Debug for ServerConfig<EC, EA>
    where - Option<RelayConfig<EC, EA>>: Debug,

    Source§

    fn fmt(&self, __derive_more_f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    Source§

    impl<EC: Default + Debug, EA: Default + Debug> Default for ServerConfig<EC, EA>

    Source§

    fn default() -> ServerConfig<EC, EA>

    Returns the “default value” for a type. Read more

    Auto Trait Implementations§

    §

    impl<EC, EA> Freeze for ServerConfig<EC, EA>

    §

    impl<EC, EA = EC> !RefUnwindSafe for ServerConfig<EC, EA>

    §

    impl<EC, EA> Send for ServerConfig<EC, EA>

    §

    impl<EC, EA = EC> !Sync for ServerConfig<EC, EA>

    §

    impl<EC, EA> Unpin for ServerConfig<EC, EA>

    §

    impl<EC, EA = EC> !UnwindSafe for ServerConfig<EC, EA>

    Blanket Implementations§

    Source§

    impl<T> Any for T
    where +

    Trait Implementations§

    Source§

    impl<EC: Debug, EA: Debug> Debug for ServerConfig<EC, EA>
    where + Option<RelayConfig<EC, EA>>: Debug,

    Source§

    fn fmt(&self, __derive_more_f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    Source§

    impl<EC: Default + Debug, EA: Default + Debug> Default for ServerConfig<EC, EA>

    Source§

    fn default() -> ServerConfig<EC, EA>

    Returns the “default value” for a type. Read more

    Auto Trait Implementations§

    §

    impl<EC, EA> Freeze for ServerConfig<EC, EA>

    §

    impl<EC, EA = EC> !RefUnwindSafe for ServerConfig<EC, EA>

    §

    impl<EC, EA> Send for ServerConfig<EC, EA>

    §

    impl<EC, EA = EC> !Sync for ServerConfig<EC, EA>

    §

    impl<EC, EA> Unpin for ServerConfig<EC, EA>

    §

    impl<EC, EA = EC> !UnwindSafe for ServerConfig<EC, EA>

    Blanket Implementations§

    Source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    Source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    §

    impl<'a, T, E> AsTaggedExplicit<'a, E> for T
    where T: 'a,

    §

    fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

    §

    impl<'a, T, E> AsTaggedImplicit<'a, E> for T
    where T: 'a,

    §

    fn implicit( diff --git a/pr/2806/docs/iroh_relay/server/struct.StunConfig.html b/pr/2806/docs/iroh_relay/server/struct.StunConfig.html index 21d9fdafbe..f35f9e8631 100644 --- a/pr/2806/docs/iroh_relay/server/struct.StunConfig.html +++ b/pr/2806/docs/iroh_relay/server/struct.StunConfig.html @@ -1,9 +1,9 @@ -StunConfig in iroh_relay::server - Rust
    iroh_relay::server

    Struct StunConfig

    Source
    pub struct StunConfig {
    +StunConfig in iroh_relay::server - Rust
    iroh_relay::server

    Struct StunConfig

    Source
    pub struct StunConfig {
         pub bind_addr: SocketAddr,
     }
    Available on crate feature server only.
    Expand description

    Configuration for the STUN server.

    Fields§

    §bind_addr: SocketAddr

    The socket address on which the STUN server should bind.

    Normally you’d chose port 3478, see crate::defaults::DEFAULT_STUN_PORT.

    -

    Trait Implementations§

    Source§

    impl Debug for StunConfig

    Source§

    fn fmt(&self, __derive_more_f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Source§

    impl<T> Any for T
    where +

    Trait Implementations§

    Source§

    impl Debug for StunConfig

    Source§

    fn fmt(&self, __derive_more_f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    Source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    §

    impl<'a, T, E> AsTaggedExplicit<'a, E> for T
    where T: 'a,

    §

    fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

    §

    impl<'a, T, E> AsTaggedImplicit<'a, E> for T
    where T: 'a,

    §

    fn implicit( diff --git a/pr/2806/docs/iroh_relay/server/struct.TlsConfig.html b/pr/2806/docs/iroh_relay/server/struct.TlsConfig.html index 98d1594971..5f3a539bde 100644 --- a/pr/2806/docs/iroh_relay/server/struct.TlsConfig.html +++ b/pr/2806/docs/iroh_relay/server/struct.TlsConfig.html @@ -1,4 +1,4 @@ -TlsConfig in iroh_relay::server - Rust
    iroh_relay::server

    Struct TlsConfig

    Source
    pub struct TlsConfig<EC: Debug, EA: Debug = EC> {
    +TlsConfig in iroh_relay::server - Rust
    iroh_relay::server

    Struct TlsConfig

    Source
    pub struct TlsConfig<EC: Debug, EA: Debug = EC> {
         pub https_bind_addr: SocketAddr,
         pub quic_bind_addr: SocketAddr,
         pub cert: CertConfig<EC, EA>,
    @@ -13,8 +13,8 @@
     
    §quic_bind_addr: SocketAddr

    The socket address on which to server the QUIC server is QUIC is enabled.

    §cert: CertConfig<EC, EA>

    Mode for getting a cert.

    §server_config: ServerConfig

    The server configuration.

    -

    Trait Implementations§

    Source§

    impl<EC: Debug, EA: Debug> Debug for TlsConfig<EC, EA>
    where - CertConfig<EC, EA>: Debug,

    Source§

    fn fmt(&self, __derive_more_f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    §

    impl<EC, EA> Freeze for TlsConfig<EC, EA>

    §

    impl<EC, EA = EC> !RefUnwindSafe for TlsConfig<EC, EA>

    §

    impl<EC, EA> Send for TlsConfig<EC, EA>

    §

    impl<EC, EA = EC> !Sync for TlsConfig<EC, EA>

    §

    impl<EC, EA> Unpin for TlsConfig<EC, EA>

    §

    impl<EC, EA = EC> !UnwindSafe for TlsConfig<EC, EA>

    Blanket Implementations§

    Source§

    impl<T> Any for T
    where +

    Trait Implementations§

    Source§

    impl<EC: Debug, EA: Debug> Debug for TlsConfig<EC, EA>
    where + CertConfig<EC, EA>: Debug,

    Source§

    fn fmt(&self, __derive_more_f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    §

    impl<EC, EA> Freeze for TlsConfig<EC, EA>

    §

    impl<EC, EA = EC> !RefUnwindSafe for TlsConfig<EC, EA>

    §

    impl<EC, EA> Send for TlsConfig<EC, EA>

    §

    impl<EC, EA = EC> !Sync for TlsConfig<EC, EA>

    §

    impl<EC, EA> Unpin for TlsConfig<EC, EA>

    §

    impl<EC, EA = EC> !UnwindSafe for TlsConfig<EC, EA>

    Blanket Implementations§

    Source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    Source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    §

    impl<'a, T, E> AsTaggedExplicit<'a, E> for T
    where T: 'a,

    §

    fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

    §

    impl<'a, T, E> AsTaggedImplicit<'a, E> for T
    where T: 'a,

    §

    fn implicit( diff --git a/pr/2806/docs/iroh_relay/struct.RelayConn.html b/pr/2806/docs/iroh_relay/struct.RelayConn.html index e7263bae73..8249cad794 100644 --- a/pr/2806/docs/iroh_relay/struct.RelayConn.html +++ b/pr/2806/docs/iroh_relay/struct.RelayConn.html @@ -1,12 +1,12 @@ RelayConn in iroh_relay - Rust
    iroh_relay

    Struct RelayConn

    Source
    pub struct RelayConn { /* private fields */ }
    Expand description

    A connection to a relay server.

    Cheaply clonable. Call close to shut down the write loop and read functionality.

    -

    Implementations§

    Source§

    impl Conn

    Source

    pub async fn send(&self, dst: NodeId, packet: Bytes) -> Result<()>

    Sends a packet to the node identified by dstkey

    +

    Implementations§

    Source§

    impl Conn

    Source

    pub async fn send(&self, dst: NodeId, packet: Bytes) -> Result<()>

    Sends a packet to the node identified by dstkey

    Errors if the packet is larger than MAX_PACKET_SIZE

    -
    Source

    pub async fn send_ping(&self, data: [u8; 8]) -> Result<()>

    Send a ping with 8 bytes of random data.

    -
    Source

    pub async fn send_pong(&self, data: [u8; 8]) -> Result<()>

    Respond to a ping request. The data field should be filled +

    Source

    pub async fn send_ping(&self, data: [u8; 8]) -> Result<()>

    Send a ping with 8 bytes of random data.

    +
    Source

    pub async fn send_pong(&self, data: [u8; 8]) -> Result<()>

    Respond to a ping request. The data field should be filled by the 8 bytes of random data send by the ping.

    -
    Source

    pub async fn note_preferred(&self, preferred: bool) -> Result<()>

    Sends a packet that tells the server whether this +

    Source

    pub async fn note_preferred(&self, preferred: bool) -> Result<()>

    Sends a packet that tells the server whether this connection is to the user’s preferred server. This is only used in the server for stats.

    Source

    pub fn local_addr(&self) -> Option<SocketAddr>

    The local address that the Conn is listening on.

    diff --git a/pr/2806/docs/iroh_relay/struct.RelayMap.html b/pr/2806/docs/iroh_relay/struct.RelayMap.html index f8bf44492b..7cff698b0f 100644 --- a/pr/2806/docs/iroh_relay/struct.RelayMap.html +++ b/pr/2806/docs/iroh_relay/struct.RelayMap.html @@ -17,7 +17,7 @@ relay nodes are specified at <../../docs/relay_nodes.md>

    Source

    pub fn from_nodes<I: Into<Arc<RelayNode>>>( value: impl IntoIterator<Item = I>, -) -> Result<Self>

    Constructs the RelayMap from an iterator of RelayNodes.

    +) -> Result<Self>

    Constructs the RelayMap from an iterator of RelayNodes.

    Trait Implementations§

    Source§

    impl Clone for RelayMap

    Source§

    fn clone(&self) -> RelayMap

    Returns a copy of the value. Read more
    1.0.0 · Source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    Source§

    impl Debug for RelayMap

    Source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    Source§

    impl Display for RelayMap

    Source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    Source§

    impl PartialEq for RelayMap

    Source§

    fn eq(&self, other: &RelayMap) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · Source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
    Source§

    impl Eq for RelayMap

    Source§

    impl StructuralPartialEq for RelayMap

    Auto Trait Implementations§

    Blanket Implementations§

    Source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    Source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    §

    impl<'a, T, E> AsTaggedExplicit<'a, E> for T
    where diff --git a/pr/2806/docs/iroh_relay/struct.RelayNode.html b/pr/2806/docs/iroh_relay/struct.RelayNode.html index 425cf9b7ed..176a3b668a 100644 --- a/pr/2806/docs/iroh_relay/struct.RelayNode.html +++ b/pr/2806/docs/iroh_relay/struct.RelayNode.html @@ -14,16 +14,16 @@
    §quic: Option<RelayQuicConfig>

    Configuration to speak to the QUIC endpoint on the relay server.

    When None, we will not attempt to do QUIC address discovery with this relay server.

    -

    Trait Implementations§

    Source§

    impl Clone for RelayNode

    Source§

    fn clone(&self) -> RelayNode

    Returns a copy of the value. Read more
    1.0.0 · Source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    Source§

    impl Debug for RelayNode

    Source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    Source§

    impl<'de> Deserialize<'de> for RelayNode

    Source§

    fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
    where - __D: Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    Source§

    impl Display for RelayNode

    Source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    Source§

    impl Ord for RelayNode

    Source§

    fn cmp(&self, other: &RelayNode) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · Source§

    fn max(self, other: Self) -> Self
    where +

    Trait Implementations§

    Source§

    impl Clone for RelayNode

    Source§

    fn clone(&self) -> RelayNode

    Returns a copy of the value. Read more
    1.0.0 · Source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    Source§

    impl Debug for RelayNode

    Source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    Source§

    impl<'de> Deserialize<'de> for RelayNode

    Source§

    fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
    where + __D: Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    Source§

    impl Display for RelayNode

    Source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    Source§

    impl Ord for RelayNode

    Source§

    fn cmp(&self, other: &RelayNode) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · Source§

    fn max(self, other: Self) -> Self
    where Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · Source§

    fn min(self, other: Self) -> Self
    where Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · Source§

    fn clamp(self, min: Self, max: Self) -> Self
    where Self: Sized,

    Restrict a value to a certain interval. Read more
    Source§

    impl PartialEq for RelayNode

    Source§

    fn eq(&self, other: &RelayNode) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · Source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
    Source§

    impl PartialOrd for RelayNode

    Source§

    fn partial_cmp(&self, other: &RelayNode) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · Source§

    fn lt(&self, other: &Rhs) -> bool

    Tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · Source§

    fn le(&self, other: &Rhs) -> bool

    Tests less than or equal to (for self and other) and is used by the <= operator. Read more
    1.0.0 · Source§

    fn gt(&self, other: &Rhs) -> bool

    Tests greater than (for self and other) and is used by the > operator. Read more
    1.0.0 · Source§

    fn ge(&self, other: &Rhs) -> bool

    Tests greater than or equal to (for self and other) and is used by -the >= operator. Read more
    Source§

    impl Serialize for RelayNode

    Source§

    fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
    where - __S: Serializer,

    Serialize this value into the given Serde serializer. Read more
    Source§

    impl Eq for RelayNode

    Source§

    impl StructuralPartialEq for RelayNode

    Auto Trait Implementations§

    Blanket Implementations§

    Source§

    impl<T> Any for T
    where +the >= operator. Read more

    Source§

    impl Serialize for RelayNode

    Source§

    fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
    where + __S: Serializer,

    Serialize this value into the given Serde serializer. Read more
    Source§

    impl Eq for RelayNode

    Source§

    impl StructuralPartialEq for RelayNode

    Auto Trait Implementations§

    Blanket Implementations§

    Source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    Source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    §

    impl<'a, T, E> AsTaggedExplicit<'a, E> for T
    where T: 'a,

    §

    fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

    §

    impl<'a, T, E> AsTaggedImplicit<'a, E> for T
    where T: 'a,

    §

    fn implicit( @@ -55,6 +55,6 @@ V: MultiLane<T>,

    §

    fn vzip(self) -> V

    §

    impl<T> WithSubscriber for T

    §

    fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
    where S: Into<Dispatch>,

    Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
    §

    fn with_current_subscriber(self) -> WithDispatch<Self>

    Attaches the current default Subscriber to this type, returning a -[WithDispatch] wrapper. Read more
    Source§

    impl<T> DeserializeOwned for T
    where - T: for<'de> Deserialize<'de>,

    §

    impl<T> ErasedDestructor for T
    where +[WithDispatch] wrapper. Read more

    Source§

    impl<T> DeserializeOwned for T
    where + T: for<'de> Deserialize<'de>,

    §

    impl<T> ErasedDestructor for T
    where T: 'static,

    §

    impl<T> MaybeSendSync for T

    \ No newline at end of file diff --git a/pr/2806/docs/iroh_relay/struct.RelayQuicConfig.html b/pr/2806/docs/iroh_relay/struct.RelayQuicConfig.html index 254be8bba8..c90e95a182 100644 --- a/pr/2806/docs/iroh_relay/struct.RelayQuicConfig.html +++ b/pr/2806/docs/iroh_relay/struct.RelayQuicConfig.html @@ -3,16 +3,16 @@ }
    Expand description

    Configuration for speaking to the QUIC endpoint on the relay server to do QUIC address discovery.

    Fields§

    §port: u16

    The port on which the connection should be bound to.

    -

    Trait Implementations§

    Source§

    impl Clone for RelayQuicConfig

    Source§

    fn clone(&self) -> RelayQuicConfig

    Returns a copy of the value. Read more
    1.0.0 · Source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    Source§

    impl Debug for RelayQuicConfig

    Source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    Source§

    impl Default for RelayQuicConfig

    Source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    Source§

    impl<'de> Deserialize<'de> for RelayQuicConfig

    Source§

    fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
    where - __D: Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    Source§

    impl Ord for RelayQuicConfig

    Source§

    fn cmp(&self, other: &RelayQuicConfig) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · Source§

    fn max(self, other: Self) -> Self
    where +

    Trait Implementations§

    Source§

    impl Clone for RelayQuicConfig

    Source§

    fn clone(&self) -> RelayQuicConfig

    Returns a copy of the value. Read more
    1.0.0 · Source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    Source§

    impl Debug for RelayQuicConfig

    Source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    Source§

    impl Default for RelayQuicConfig

    Source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    Source§

    impl<'de> Deserialize<'de> for RelayQuicConfig

    Source§

    fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
    where + __D: Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    Source§

    impl Ord for RelayQuicConfig

    Source§

    fn cmp(&self, other: &RelayQuicConfig) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · Source§

    fn max(self, other: Self) -> Self
    where Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · Source§

    fn min(self, other: Self) -> Self
    where Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · Source§

    fn clamp(self, min: Self, max: Self) -> Self
    where Self: Sized,

    Restrict a value to a certain interval. Read more
    Source§

    impl PartialEq for RelayQuicConfig

    Source§

    fn eq(&self, other: &RelayQuicConfig) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · Source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
    Source§

    impl PartialOrd for RelayQuicConfig

    Source§

    fn partial_cmp(&self, other: &RelayQuicConfig) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · Source§

    fn lt(&self, other: &Rhs) -> bool

    Tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · Source§

    fn le(&self, other: &Rhs) -> bool

    Tests less than or equal to (for self and other) and is used by the <= operator. Read more
    1.0.0 · Source§

    fn gt(&self, other: &Rhs) -> bool

    Tests greater than (for self and other) and is used by the > operator. Read more
    1.0.0 · Source§

    fn ge(&self, other: &Rhs) -> bool

    Tests greater than or equal to (for self and other) and is used by -the >= operator. Read more
    Source§

    impl Serialize for RelayQuicConfig

    Source§

    fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
    where - __S: Serializer,

    Serialize this value into the given Serde serializer. Read more
    Source§

    impl Eq for RelayQuicConfig

    Source§

    impl StructuralPartialEq for RelayQuicConfig

    Auto Trait Implementations§

    Blanket Implementations§

    Source§

    impl<T> Any for T
    where +the >= operator. Read more

    Source§

    impl Serialize for RelayQuicConfig

    Source§

    fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
    where + __S: Serializer,

    Serialize this value into the given Serde serializer. Read more
    Source§

    impl Eq for RelayQuicConfig

    Source§

    impl StructuralPartialEq for RelayQuicConfig

    Auto Trait Implementations§

    Blanket Implementations§

    Source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    Source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    §

    impl<'a, T, E> AsTaggedExplicit<'a, E> for T
    where T: 'a,

    §

    fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

    §

    impl<'a, T, E> AsTaggedImplicit<'a, E> for T
    where T: 'a,

    §

    fn implicit( @@ -43,6 +43,6 @@ V: MultiLane<T>,

    §

    fn vzip(self) -> V

    §

    impl<T> WithSubscriber for T

    §

    fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
    where S: Into<Dispatch>,

    Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
    §

    fn with_current_subscriber(self) -> WithDispatch<Self>

    Attaches the current default Subscriber to this type, returning a -[WithDispatch] wrapper. Read more
    Source§

    impl<T> DeserializeOwned for T
    where - T: for<'de> Deserialize<'de>,

    §

    impl<T> ErasedDestructor for T
    where +[WithDispatch] wrapper. Read more

    Source§

    impl<T> DeserializeOwned for T
    where + T: for<'de> Deserialize<'de>,

    §

    impl<T> ErasedDestructor for T
    where T: 'static,

    §

    impl<T> MaybeSendSync for T

    \ No newline at end of file diff --git a/pr/2806/docs/iroh_test/hexdump/fn.parse_hexdump.html b/pr/2806/docs/iroh_test/hexdump/fn.parse_hexdump.html index 8fe2445c0d..9abdeb96f3 100644 --- a/pr/2806/docs/iroh_test/hexdump/fn.parse_hexdump.html +++ b/pr/2806/docs/iroh_test/hexdump/fn.parse_hexdump.html @@ -1,3 +1,3 @@ -parse_hexdump in iroh_test::hexdump - Rust
    iroh_test::hexdump

    Function parse_hexdump

    Source
    pub fn parse_hexdump(s: &str) -> Result<Vec<u8>>
    Expand description

    Parses a commented multi line hexdump into a vector of bytes.

    +parse_hexdump in iroh_test::hexdump - Rust
    iroh_test::hexdump

    Function parse_hexdump

    Source
    pub fn parse_hexdump(s: &str) -> Result<Vec<u8>>
    Expand description

    Parses a commented multi line hexdump into a vector of bytes.

    This is useful to write wire level protocol tests.

    \ No newline at end of file diff --git a/pr/2806/docs/search-index.js b/pr/2806/docs/search-index.js index 69aaf93b2e..8297209283 100644 --- a/pr/2806/docs/search-index.js +++ b/pr/2806/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":"PEPGFIFFEFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNOCCNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNONNNNNCNONONNNNNNNNOOCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNCNNSSSSSCCSSSHHHHSSHHHFKFNNNNNNNNNNNNNNCNNNNNNNNNNNNNNOCOCONNNNCNNNNNNNNNNNFSSNNNNNNNNNNNNNNNNFSNNNNNNNNNNNNNNNNNSSSSFFFNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNTFNNNNNNNNNNNNNNNNNNNNNNIKHMNMNMNMNMNMNMNMNMNMNCHPSGFPFNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNONONNNNNNHNNNNNNNNNNNNNTTFFFFKPFPFTTTPFPFPPFFFPGPPPPPFGGKKFKPPPFFGPPPSFFTTTPFKTTPFFTPPTTPFTTPPFFTFPPPPFGPGGFPPGFPPGFTTPGFFGPPGFPPTPPPFFPFPFPPFFPFGFFPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONONNNOOOMNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNONNONONOONOOOONNNONNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNONNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNONNNNNNNNNNNNNNNOOONOOONNNOOOHNNNONNNOOONNNNNNNNOONNOONONMNMNMNNNNNNNOOONNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOONNNNNNONNNNNNNNOONMNNONMNNNNNNOONNNNNNNNNNNNNNNNNNNONMNNONOONOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNOOFFFFNNNNOOOOOOOOONNNNNNNNOONNNNNNNNNNNNOOONNNNNNNNNNNNOOOOONNNNONNNNONNNNNNNNONNNNNNNNNNNNOOONNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNOOOOOOONNNNOKFFNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFNNNNHNNNNNNNNNNNNNNNNOONONHHHNNNNNNNNNFFFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["Base32","Endpoint","Key","KeyParsingError","NodeAddr","NodeId","PublicKey","RelayMap","RelayMode","RelayNode","RelayUrl","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","encode_hex","encode_hex_upper","endpoint","eq","","","","","equivalent","","","","","","","","","","","","","","","fmt","","","","","","","","","","","","","fmt_short","from","","","","","","","","","","","","","","","","","","from_bytes","","from_nodes","from_parts","from_ref","","","","","","from_str","","","from_url","generate","generate_with_rng","get_node","hash","","init","","","","","","","into","","","","","","","is_empty","","len","metrics","new","node_id","nodes","partial_cmp","","","","protocol","public","quic","relay_url","","serialize","","","","","shared","sign","source","stun_only","stun_port","test_utils","to_bytes","to_openssh","to_owned","","","","","","to_string","","","","","","try_from","","","","","","","","","","try_from_openssh","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","","","","derp_accepts","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_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"],[262,"iroh::defaults"],[269,"iroh::defaults::prod"],[276,"iroh::defaults::staging"],[281,"iroh::discovery"],[334,"iroh::discovery::dns"],[353,"iroh::discovery::local_swarm_discovery"],[372,"iroh::discovery::pkarr"],[449,"iroh::discovery::pkarr::dht"],[498,"iroh::discovery::static_provider"],[522,"iroh::dns"],[547,"iroh::dns::node_info"],[638,"iroh::endpoint"],[2164,"iroh::endpoint::Source"],[2166,"iroh::metrics"],[2342,"iroh::protocol"],[2387,"iroh::test_utils"],[2427,"iroh::watchable"],[2559,"dyn_clone::sealed"],[2560,"iroh_base::key"],[2561,"iroh_base::node_addr"],[2562,"iroh_base::relay_url"],[2563,"iroh_relay::relay_map"],[2564,"core::cmp"],[2565,"core::result"],[2566,"serde::de"],[2567,"core::net::socket_addr"],[2568,"core::iter::traits::iterator"],[2569,"core::iter::traits::collect"],[2570,"core::fmt"],[2571,"alloc::string"],[2572,"ed25519_dalek::verifying"],[2573,"signature::error"],[2574,"iroh_base::base32"],[2575,"ed25519_dalek::signing"],[2576,"iroh::magicsock::node_map::node_state"],[2577,"iroh_base::ticket::node"],[2578,"core::option"],[2579,"url"],[2580,"anyhow"],[2581,"alloc::sync"],[2582,"core::convert"],[2583,"rand_core"],[2584,"core::marker"],[2585,"core::hash"],[2586,"serde::ser"],[2587,"iroh_base::key::encryption"],[2588,"ed25519"],[2589,"core::error"],[2590,"zeroize"],[2591,"ssh_key::error"],[2592,"core::any"],[2593,"alloc::boxed"],[2594,"alloc::vec"],[2595,"alloc::collections::btree::set"],[2596,"futures_lite::stream"],[2597,"pkarr::signed_packet"],[2598,"futures_core::stream"],[2599,"core::time"],[2600,"pkarr::client"],[2601,"core::future::future"],[2602,"core::net::ip_addr"],[2603,"hickory_proto::rr::domain::name"],[2604,"core::clone"],[2605,"hickory_resolver::resolver"],[2606,"alloc::collections::btree::map"],[2607,"core::str::traits"],[2608,"hickory_proto::rr::resource"],[2609,"iroh_quinn_proto::connection"],[2610,"iroh_quinn::connection"],[2611,"iroh_quinn_proto::config"],[2612,"iroh_quinn_proto::varint"],[2613,"core::ops::function"],[2614,"iroh_quinn_proto::crypto"],[2615,"iroh_quinn_proto::congestion"],[2616,"std::time"],[2617,"iroh_quinn::recv_stream"],[2618,"iroh_quinn::send_stream"],[2619,"iroh_quinn_proto::connection::stats"],[2620,"iroh_quinn_proto::connection::streams::send"],[2621,"iroh_quinn_proto::connection::streams"],[2622,"iroh::magicsock::node_map"],[2623,"iroh_quinn_proto::frame"],[2624,"iroh::magicsock"],[2625,"iroh_quinn_proto"],[2626,"iroh_quinn_proto::connection::assembler"],[2627,"iroh_quinn::incoming"],[2628,"iroh_quinn_proto::connection::streams::recv"],[2629,"ring::error"],[2630,"iroh_quinn_proto::transport_parameters"],[2631,"iroh_quinn_proto::shared"],[2632,"futures_concurrency::future::join::tuple"],[2633,"core::future::into_future"],[2634,"tokio::sync::watch"],[2635,"iroh_quinn_proto::connection::paths"],[2636,"core::pin"],[2637,"core::task::wake"],[2638,"core::task::poll"],[2639,"std::io::error"],[2640,"tokio::io::read_buf"],[2641,"futures_concurrency::future::race::tuple"],[2642,"bytes::bytes"],[2643,"rustls_pki_types"],[2644,"rustls::error"],[2645,"alloc::vec::into_iter"],[2646,"futures_lite::future"],[2647,"iroh::test_utils::dns_and_pkarr_servers"],[2648,"iroh_relay::server"],[2649,"futures_concurrency::stream::chain::tuple"],[2650,"futures_concurrency::stream::into_stream"],[2651,"core::default"],[2652,"futures_concurrency::stream::merge::tuple"],[2653,"governor::state::direct"],[2654,"governor::state"],[2655,"governor::state::direct::streams"],[2656,"governor::clock::with_std"],[2657,"governor::middleware"],[2658,"governor::jitter"],[2659,"futures_concurrency::stream::zip::tuple"],[2660,"iroh_relay::defaults"],[2661,"iroh::test_utils::dns_server"]],"i":"Cf`0`````````hAbAdAfAhAj55564321056432105432105432105432105320532011`5643221056432105432033``5643210155`5321055533322211100055664432211005556664443333332210541354321054214415256432105643210311`3315320`40335432044600`4454321056421055564432104564321056432100155643210`33``````````````````````GbFn101011101010`100101001010101`1`1G`101`01221212121```Hd000000000000000``Hf0000000000000000```````HhHjHl210210210210210210210`221021021021021021021210201021021021021022102``Ih0If10010111101010010101010100100010101101001010Il`0000000000000000000000```J`In101010101010101010``K````0`Df1Kb21021011122210210121021222111221021110010010120`22102100010121101102`2210210210210AAh0`````AA``Lh`222A@b`1`OdOj```3`O`2Of2Ol```````AB`0A@l```419```:::Oh``;;7``;AAl:Md03`==<3``=`::1Ob``3```4=``:<``>>=````59``22><80``<`=`28``<````:796Lj91;84:72OnA@`>A@dA@fA@hA@jDbDbA@lA@nAA`LhMbNhM`AAbAAdAAfAAhAAjAAlAAnGlAB`NnLjO`ObOdOfOhOjOlMdOnA@`A@bA@dA@fA@hA@jDbA@lA@nAA`LhMbNhM`AAbAAdAAfAAhAAjAAlAAnGlAB`LjO`ObOdOfOhOjOlMdOnA@`A@bA@dA@fA@hA@jDbA@lA@nAA`LhMbNhM`AAbAAdAAfAAhAAjAAlAAnGlAB`Lj200Md65480654MfA@d35Db6A@`;0?32200335On45013A@fA@jA@lMbNhMh`ADn=AEnAElLnLlAFfABnO`AC`ABfObOdOfOhABhOjOlMfMdABjOnA@`A@bA@dA@fA@hA@jDbA@lA@nAA`LhMbNhM`ABlACbACdAAbAAdAAfAAhAAjAAlAAnMhGlLbLdACfLfAB`ADnLjAEnAElLnLlAFfABnO`AC`ABfObOdOfOhABhOjOlMfMdABjOnA@`A@bA@dA@fA@hA@jDbA@lA@nAA`LhMbNhM`ABlACbACdAAbAAdAAfAAhAAjAAlAAnMhGlLbLdACfLfAB`A@bA@hDbA@lAA`<:;:;;;;:ADnLjAEnAElLnLlAFfABnO`AC`ABf0ObOdOfOhABh0OjOlMfMdABjOnA@`A@bA@dA@fA@hA@jDbA@lA@nAA`LhMbNhM`ABlACbACdAAbAAdAAfAAhAAjAAlAAnMhGlLbLdACfLfAB`MfO`ObOdOfOhOjOlMdABjA@bA@hA@jDbA@lA@nAA`LhABlAAbAAdAAfAAhAAjAAlAAnAB`O`00Ob00Od00Of00Oh00Oj00Ol00Md00ABj00A@b00A@h00A@j00Db00A@l00A@n00AA`00Lh00ABl00AAb00AAd00AAf00AAh00AAj00AAl00AAn00AB`0076LjABh1ABnO`0AC`0ABfOb0Od0Of0Oh08Oj0Ol0MfMd0ABjOnA@`A@b0A@dA@fA@hA@jDbA@l0A@n0AA`0Lh0MbNhM`ABlACbACdAAb0AAd0AAf0AAh0AAjAAl0AAn0MhGlLbLdACfLfAB``;A@f0>ADnLjAEnAElLnLlAFfABnO`0AC`ABfOb0Od000Of0Oh0ABhOj000Ol0MfMd0000ABjOnA@`A@bA@dA@fA@hA@jDbA@lA@nAA`Lh00MbNhM`ABlACb0ACdAAb0AAdAAf000AAhAAjAAlAAn0MhGlLbLdACfLfAB`LjO`ObOdOfOhOjOlMdOnA@`A@bA@dA@fA@hA@jDbA@lA@nAA`LhMbNhM`AAbAAdAAfAAhAAjAAlAAnGlAB`Md00`LjLfA@`Db4AA`:987ABfABhLd5M`0?1AAn33??837ABjNn0000Nb::>MdAAjAAl6A@f::>Mf;ADnAEnAElLnLlAFfLbACfLfABhABf0111M`02Mh0<;:987654222Lj33AAbAAdAAfMf07LdAB`7Db72<2Gl0Mb=A@`05ADf=;A@dMdNb?6>>::22A@bA@h9A@lAA`:Lj0ABh1O`ObOdOfOhOjOlLhDb=:ADf;ABfA@`<00Mf110><;:9876MdOn3A@bA@dA@fA@hA@j;A@lA@nAA`?MbNhM`AAbAAdAAfAAhAAjAAlAAnGlAB`O`AC`ObOdOfOhOjOlMdA@bA@lA@nAA`LhAAbAAdAAfAAhAAlAAnM`00MhADnLjAEnAElLnLlAFfABnO`AC`ABfObOdOfOhABhOjOlMfMd000ABjOnA@`A@bA@dA@fA@hA@jDbA@lA@nAA`LhMbNhM`ABlACbACdAAbAAdAAfAAhAAjAAlAAnMhGlLbLdACfLfAB`ADnLjAEnAElLnLlAFfABnO`AC`ABfObOdOfOhABhOjOlMfMdABjOnA@`A@bA@dA@fA@hA@jDbA@lA@nAA`LhMbNhM`ABlACbACdAAbAAdAAfAAhAAjAAlAAnMhGlLbLdACfLfAB`AEnAElLnLlAFf76>ADnLj65432ABnO`AC`ABfObOdOfOhABhOjOlMfMdABjOnA@`A@bA@dA@fA@hA@jDbA@lA@nAA`LhMbNhM`ABlACbACdAAbAAdAAfAAhAAjAAlAAnMhGlLbLdACfLfAB`A@f0NhADnLjAEnAElLnLlAFfABnO`AC`ABfObOdOfOhABhOjOlMfMdABjOnA@`A@bA@dA@fA@hA@jDbA@lA@nAA`LhMbNhM`ABlACbACdAAbAAdAAfAAhAAjAAlAAnMhGlLbLdACfLfAB`LjNnM`0ABh0000ALbALd````AHbAHdAHfAHh011111111321032100032103210321011032103210321000000321033210032103210032103210321033332101111110003331111111111111112211111100011111110222223210321032103210001333332100```AIbAHlAI`202022222020202020202202020120220202020``AIfAId10`101000101010101000000```010101010``````AJbABbAJd21AJhAJj2AJl542130354354354355421305421305421305421300542130543545421304542130213213521321335445430542130542130213542130454213053","f":"````````````{{bd}f}00000{{{b{h}}}{{b{{l{j}}}}}}{{{b{h}}}{{b{{n{j}}}}}}{b{{b{c}}}{}}000000{{{b{A`}}}{{b{A`c}}}{}}000000{{{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}11{Bb{{b{A`c}}}{}}000000{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}000000{{}Ah}{bc{{C`{Bn}}}}0`{{{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`Cb}}}{{Bd{fCd}}}}0{{{b{Cf}}{b{A`Cb}}}{{Bd{fCd}}}}0{{{b{Ab}}{b{A`Cb}}}{{Bd{fCd}}}}0{{{b{Ad}}{b{A`Cb}}}{{Bd{fCd}}}}{{{b{Af}}{b{A`Cb}}}{{Bd{fCd}}}}0{{{b{Ah}}{b{A`Cb}}}{{Bd{fCd}}}}0{{{b{Aj}}{b{A`Cb}}}{{Bd{fCd}}}}0{{{b{h}}}Ch}{cc{}}{Cjh}1{ClCf}{CnCf}{{{l{j}}}Ab}4{D`Ab}5{DbAd}{DdAd}{DfAd}{{{Dj{h{Dh{Af}}{b{{n{Bj}}}}}}}Ad}{hAd}:{DlAf};;{{{b{{l{j}}}}}{{Bd{hCl}}}}{{{b{{l{j}}}}}Ab}{e{{Bd{AhDn}}}{{Eb{{E`{Aj}}}}}{{Ed{}{{Bh{c}}}}}}{{h{Dh{Af}}c}Ad{{Ed{}{{Bh{Bj}}}}}}{{{b{c}}}c{}}00000{{{b{Ef}}}{{Bd{h}}}}{{{b{Ef}}}{{Bd{Ab}}}}{{{b{Ef}}}{{Bd{Af}}}}{AfAh}{{}Ab}{{{b{A`c}}}Ab{EhEj}}{{{b{Ah}}{b{Af}}}{{Dh{{b{{E`{Aj}}}}}}}}{{{b{h}}{b{A`c}}}fEl}{{{b{Af}}{b{A`c}}}fEl}{{}Bb}000000{{}c{}}000000{{{b{Ad}}}An}{{{b{Ah}}}An}{{{b{Ah}}}Bb}`{hAd}`{{{b{Ah}}}{{`{{Bl{}{{Bh{{b{{E`{Aj}}}}}}}}}}}}{{{b{h}}{b{h}}}{{Dh{Al}}}}{{{b{Ad}}{b{Ad}}}{{Dh{Al}}}}{{{b{Af}}{b{Af}}}{{Dh{Al}}}}{{{b{Aj}}{b{Aj}}}{{Dh{Al}}}}`{{{b{Ab}}}h}`{{{b{Ad}}}{{Dh{{b{Af}}}}}}`{{{b{h}}c}BdEn}{{{b{Ab}}c}BdEn}{{{b{Ad}}c}BdEn}{{{b{Af}}c}BdEn}{{{b{Aj}}c}BdEn}{{{b{Ab}}{b{h}}}F`}{{{b{Ab}}{b{{n{j}}}}}Fb}{{{b{Cf}}}{{Dh{{b{Fd}}}}}}```{{{b{Ab}}}{{l{j}}}}{{{b{Ab}}}{{Bd{{Ff{Ch}}Fh}}}}{bc{}}00000{bCh}00000{c{{Bd{e}}}{}{}}{{{b{{n{j}}}}}{{Bd{h}}}}{{{b{{l{j}}}}}{{Bd{h}}}}2{{{b{{n{j}}}}}{{Bd{Ab}}}}33333{c{{Bd{AbDn}}}{{Fj{{n{j}}}}}}{{}{{Bd{c}}}{}}000000{bFl}000000`{{{b{Ah}}}{{`{{Bl{}{{Bh{{b{Af}}}}}}}}}}{{{b{h}}{b{{n{j}}}}{b{Fb}}}{{Bd{fCl}}}}{{}c{}}000000`{{Adc}Ad{{Ed{}{{Bh{Bj}}}}}}{{AdAf}Ad}``````````{{}Aj}00{{}Ah}``110```{{bd}f}{{{b{A`Fn}}c}fG`}{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}0{{{b{Gb}}}Gb}{{b{b{A`c}}}f{}}{{bj}f}{{}Fn}{Bb{{b{c}}}{}}0{Bb{{b{A`c}}}{}}0`{Bbf}03{{{b{Gb}}{b{A`Cb}}}Gd}{{{b{Fn}}{b{A`Cb}}}Gd}{cc{}}0{cFn{{Ed{}{{Bh{{Gf{G`}}}}}}}}{{{b{c}}}c{}}{{{Gh{{Gf{G`}}}}}Fn}{{}Bb}0{{}c{}}0`````{{{b{G`}}{Dh{{b{Af}}}}{b{{Gj{Bj}}}}}f}{{{b{Fn}}{Dh{{b{Af}}}}{b{{Gj{Bj}}}}}f}{{{b{G`}}GlGn}{{Dh{{Hb{{H`{Gb}}}}}}}}{{{b{Fn}}GlGn}{{Dh{{Hb{{H`{Gb}}}}}}}}`{{{b{G`}}}{{Dh{{Hb{Gb}}}}}}{{{b{Fn}}}{{Dh{{Hb{Gb}}}}}}{bc{}}{c{{Bd{e}}}{}{}}0{{}{{Bd{c}}}{}}0{bFl}0{{}c{}}0```{b{{b{c}}}{}}{{{b{A`}}}{{b{A`c}}}{}}{Bb{{b{c}}}{}}{Bb{{b{A`c}}}{}}{Bbf}{{{b{Hd}}{b{A`Cb}}}Gd}{cc{}}{{}Bb}{{}c{}}{{}Hd}{ChHd}{{{b{Hd}}GlGn}{{Dh{{Hb{{H`{Gb}}}}}}}}?>=<``;:987{{{b{Hf}}{b{A`Cb}}}Gd}654{Gn{{H`{Hf}}}}{{{b{Hf}}{Dh{{b{Af}}}}{b{{Gj{Bj}}}}}f}{{{b{Hf}}GlGn}{{Dh{{Hb{{H`{Gb}}}}}}}}{{{b{Hf}}}{{Dh{{Hb{Gb}}}}}}{c{{Bd{e}}}{}{}}{{}{{Bd{c}}}{}}{bFl}{{}c{}}```````{{bd}f}00{b{{b{c}}}{}}00{{{b{A`}}}{{b{A`c}}}{}}00{{{b{Hh}}}Hh}{{{b{Hj}}}Hj}{{{b{Hl}}}Hl}{{b{b{A`c}}}f{}}00{{bj}f}00{Bb{{b{c}}}{}}00{Bb{{b{A`c}}}{}}00`{Bbf}{{{b{A`Hh}}}f}11{{{b{Hh}}{b{A`Cb}}}Gd}{{{b{Hj}}{b{A`Cb}}}Gd}{{{b{Hl}}{b{A`Cb}}}Gd}{cc{}}00{{{b{c}}}c{}}00{{}Bb}00{{}c{}}00{AbHh}{{}Hj}{{AbDl}Hh}{DlHj}{DlHl}{{{b{Hh}}{Dh{{b{Af}}}}{b{{Gj{Bj}}}}}f}{{{b{Hl}}{b{Hn}}}{{H`{f}}}}{{{b{Hj}}GlGn}{{Dh{{I`{{H`{Gb}}}}}}}}{{{b{Hl}}Gn}{{H`{Hn}}}}{bc{}}00{c{{Bd{e}}}{}{}}00{{}{{Bd{c}}}{}}00{bFl}007{{}c{}}00{{AbDlIbId}Hh}``{{bd}f}{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}0{If{{H`{Ih}}}}{{}If}{{IfIj}If}{{{b{Ih}}}Ih}{{b{b{A`c}}}f{}}{{bj}f}{{}Ih}5{Bb{{b{c}}}{}}0{Bb{{b{A`c}}}{}}0{{IfAn}If}{Bbf}0{{{b{Ih}}{b{A`Cb}}}Gd}{{{b{If}}{b{A`Cb}}}Gd}{cc{}}0{{{b{c}}}c{}}5{{}Bb}0{{IfId}If}{{}c{}}0{IfIf}{{IfDl}If}{{{b{Ih}}{Dh{{b{Af}}}}{b{{Gj{Bj}}}}}f}4{{{b{Ih}}GlGn}{{Dh{{Hb{{H`{Gb}}}}}}}}{{IfAb}If}{bc{}}{c{{Bd{e}}}{}{}}0{{}{{Bd{c}}}{}}0{{IfIb}If}{bFl}0{{}c{}}0``{{{b{Il}}c}f{{Eb{Ad}}}}{b{{b{c}}}{}}{{{b{A`}}}{{b{A`c}}}{}}{{}Il}{Bb{{b{c}}}{}}{Bb{{b{A`c}}}{}}{Bbf}{{{b{Il}}{b{A`Cb}}}Gd}{cc{}}{eIl{{Eb{Ad}}}{{Ed{}{{Bh{c}}}}}}{{{b{Il}}Gn}{{Dh{Ad}}}}{{}Bb}{{}c{}}9{{{b{Il}}{Dh{{b{Af}}}}{b{{Gj{Bj}}}}}f}3{{{b{Il}}GlGn}{{Dh{{Hb{{H`{Gb}}}}}}}}{{{b{Il}}c}{{Dh{Ad}}}{{Eb{Ad}}}}{c{{Bd{e}}}{}{}}{{}{{Bd{c}}}{}}{bFl}{{}c{}}``{{}{{b{In}}}}{{{b{J`}}{b{Gn}}{b{Ef}}}{{`{{Jd{}{{Jb{{H`{Ad}}}}}}}}}}{{{b{In}}{b{Gn}}{b{Ef}}}{{H`{Ad}}}}{{{b{J`}}{b{Gn}}{b{Ef}}{b{{n{Jf}}}}}{{`{{Jd{}{{Jb{{H`{Ad}}}}}}}}}}{{{b{In}}{b{Gn}}{b{Ef}}{b{{n{Jf}}}}}{{H`{Ad}}}}{{{b{J`}}{b{Ef}}}{{`{{Jd{}{{Jb{{H`{Ad}}}}}}}}}}{{{b{In}}{b{Ef}}}{{H`{Ad}}}}{{{b{J`}}{b{Ef}}{b{{n{Jf}}}}}{{`{{Jd{}{{Jb{{H`{Ad}}}}}}}}}}{{{b{In}}{b{Ef}}{b{{n{Jf}}}}}{{H`{Ad}}}}{{{b{J`}}cId}{{`{{Jd{}{{Jb{{H`{{`{{Bl{}{{Bh{Jh}}}}}}}}}}}}}}}Jj}{{{b{In}}cId}{{H`{{`{{Bl{}{{Bh{Jh}}}}}}}}}Jj}{{{b{J`}}cId}{{`{{Jd{}{{Jb{{H`{{`{{Bl{}{{Bh{Jh}}}}}}}}}}}}}}}{JjJl}}{{{b{In}}cId}{{H`{{`{{Bl{}{{Bh{Jh}}}}}}}}}{JjJl}}{{{b{J`}}cId{b{{n{Jf}}}}}{{`{{Jd{}{{Jb{{H`{{`{{Bl{}{{Bh{Jh}}}}}}}}}}}}}}}{JjJl}}{{{b{In}}cId{b{{n{Jf}}}}}{{H`{{`{{Bl{}{{Bh{Jh}}}}}}}}}{JjJl}}105410`{{}{{b{Jn}}}}``````{{bd}f}{{{b{K`}}}{{b{Ef}}}}{{{b{{Kb{c}}}}}{{b{{Kd{c{Gh{Ch}}}}}}}{KfKhKjKl}}{b{{b{c}}}{}}00{{{b{A`}}}{{b{A`c}}}{}}00{{{b{Df}}}Df}{{b{b{A`c}}}f{}}{{bj}f}{{{b{K`}}{b{K`}}}Al}{{b{b{c}}}Al{}}{Bb{{b{c}}}{}}00{Bb{{b{A`c}}}{}}00`{Bbf}00{{{b{K`}}{b{K`}}}An}{{{b{Df}}{b{Df}}}An}{{b{b{c}}}An{}}00000{{{b{K`}}{b{A`Cb}}}{{Bd{fCd}}}}{{{b{K`}}{b{A`Cb}}}Gd}{{{b{Df}}{b{A`Cb}}}Gd}{{{b{{Kb{c}}}}{b{A`Cb}}}GdKn}{cc{}}0{{{b{{Kb{K`}}}}}Df}{{{Kb{K`}}}Df}{{{b{Df}}}{{Kb{K`}}}}3{{{b{{n{L`}}}}}{{H`{Df}}}}{{{b{{n{L`}}}}}{{H`{{Kb{c}}}}}{KfKhKjKl}}{{Gne}{{Kb{c}}}{KfKhKjKl}{{Bl{}{{Bh{{Dj{cCh}}}}}}}}{{{b{Hn}}}{{H`{Df}}}}{{{b{Hn}}}{{H`{{Kb{c}}}}}{KfKhKjKl}}{{{b{c}}}c{}}{{{b{Ef}}}{{Bd{K`c}}}{}}{{Gnc}{{H`{{Kb{e}}}}}{{Bl{}{{Bh{Ch}}}}}{KfKhKjKl}}{{{b{Ef}}}{{H`{Gn}}}}{{{b{K`}}{b{A`c}}}fEl}{{}Bb}00{{}c{}}00{{{b{Jn}}{b{Gn}}{b{Ef}}}{{H`{{Kb{c}}}}}{KfKhKjKl}}{{{b{Jn}}{b{Ef}}}{{H`{{Kb{c}}}}}{KfKhKjKl}}{{Gn{Dh{Dl}}{Gj{Bj}}}Df}{{{b{{Kb{c}}}}}Gn{KfKhKjKl}}`{{{b{K`}}{b{K`}}}{{Dh{Al}}}}`{{{b{Df}}{b{Ef}}Ib}{{H`{{`{{Bl{}{{Bh{L`}}}}}}}}}}{{{b{{Kb{c}}}}{b{Ef}}Ib}{{H`{{`{{Bl{}{{Bh{L`}}}}}}}}}{KfKhKjKl}}{bc{}}{{{b{Df}}{b{Ab}}Ib}{{H`{Hn}}}}{{{b{{Kb{c}}}}{b{Ab}}Ib}{{H`{Hn}}}{KfKhKjKl}}{bCh}{{{b{Gn}}}Ch}{{{b{Ef}}}{{Bd{K`c}}}{}}{c{{Bd{e}}}{}{}}00{{}{{Bd{c}}}{}}00{bFl}00{{}c{}}00`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{{bd}f}00000000000000000000000000000000{{{b{Gl}}}Lb}{Ld{{H`{LfLh}}}}{{{b{Lj}}}Ll}{{{b{Lj}}}Ln}{{Ld{E`{M`}}}{{H`{LfLh}}}}{{{b{A`Mb}}Md}{{b{A`Mb}}}}`{{{b{A`Mf}}{Dh{Mb}}}{{b{A`Mf}}}}`{{Mhe}MhG`{{Mj{{b{Ab}}}{{Jb{{Dh{c}}}}}}MlMn}}{{{b{Gl}}Ad}{{H`{f}}}}{{{b{Gl}}Ad{b{Ef}}}{{H`{f}}}}```{{{b{N`}}{b{{n{j}}}}}{{Gf{Nb}}}}{{{b{A`Mf}}An}{{b{A`Mf}}}}{{{b{A`Lf}}}{{H`{{Gh{j}}}}}}{{Mh{Gh{{Gh{j}}}}}Mh}{Mh{{H`{Gl}}}}{{MhNd}Mh}{{MhNf}Mh}{{{b{A`Nh}}Id}{{b{A`Nh}}}}`{b{{b{c}}}{}}0000000000000000000000000000000000000000000000000000{{{b{A`}}}{{b{A`c}}}{}}0000000000000000000000000000000000000000000000000000{{{b{Gl}}}{{Dj{Bj{Dh{Bj}}}}}}{{{E`{Nj}}NlB`}{{Gf{Nn}}}}{{}Mh}````{MhMh}{{{b{Lj}}}Lj}{{{b{O`}}}O`}{{{b{Ob}}}Ob}{{{b{Od}}}Od}{{{b{Of}}}Of}{{{b{Oh}}}Oh}{{{b{Oj}}}Oj}{{{b{Ol}}}Ol}{{{b{Md}}}Md}{{{b{On}}}On}{{{b{A@`}}}A@`}{{{b{A@b}}}A@b}{{{b{A@d}}}A@d}{{{b{A@f}}}A@f}{{{b{A@h}}}A@h}{{{b{A@j}}}A@j}{{{b{Db}}}Db}{{{b{A@l}}}A@l}{{{b{A@n}}}A@n}{{{b{AA`}}}AA`}{{{b{Lh}}}Lh}{{{b{Mb}}}Mb}{{{b{Nh}}}Nh}{{{b{M`}}}M`}{{{b{AAb}}}AAb}{{{b{AAd}}}AAd}{{{b{AAf}}}AAf}{{{b{AAh}}}AAh}{{{b{AAj}}}AAj}{{{b{AAl}}}AAl}{{{b{AAn}}}AAn}{{{b{Gl}}}Gl}{{{b{AB`}}}AB`}{{{b{Nn}}}{{Gf{Nn}}}}{{b{b{A`c}}}f{}}00000000000000000000000000000000{{bj}f}00000000000000000000000000000000{{{b{Lj}}Md{b{{n{j}}}}}f}{{{b{Gl}}}{{H`{f}}}}{{{b{Lj}}}{{Dh{Lh}}}}{{{b{Lj}}}Lh}{{{b{Md}}{b{Md}}}Al}{{{b{AAj}}{b{AAj}}}Al}{{{b{AAl}}{b{AAl}}}Al}{{{b{AAn}}{b{AAn}}}Al}`{{b{b{c}}}Al{}}000{{{b{A`Mf}}{E`{Nj}}}{{b{A`Mf}}}}`{{{b{Lj}}}{{Gf{Nn}}}}{{{b{Gl}}Gn}{{H`{{ABb{A@l}}}}}}`{{{b{Gl}}c{b{{n{j}}}}}{{H`{Lj}}}{{Eb{Ad}}}}`{jAAh}``{{{b{A`Mf}}Bb}{{b{A`Mf}}}}````{{{b{A`Mf}}{Dh{Bb}}}{{b{A`Mf}}}}1{{{b{Lj}}}Bb}`{{}Mf}{{}Md}{{}On}{{}A@`}{{}A@d}{{}A@f}{{}A@j}{{}A@l}{{}Mb}{{}Nh}{{}Mh}{{}AB`}{Bb{{b{c}}}{}}0000000000000000000000000000000000000000000000000000{Bb{{b{A`c}}}{}}0000000000000000000000000000000000000000000000000000{c{{Bd{A@b}}}Bf}{c{{Bd{A@h}}}Bf}{c{{Bd{Db}}}Bf}{c{{Bd{A@l}}}Bf}{c{{Bd{AA`}}}Bf}{AAnABd}{{{b{Gl}}}{{ABb{{Dh{{Gj{AAj}}}}}}}}{{Mh{Gf{G`}}}Mh}{{{b{Gl}}}{{Dh{{b{G`}}}}}}{MhMh}00{{MhIn}Mh}{{{b{Gl}}}{{b{In}}}}{Bbf}000000000{{{b{A`ABf}}}f}11111{{{b{A`ABh}}}f}22222222222222222222222222222222222222{{{b{A`Mf}}An}{{b{A`Mf}}}}{{{b{O`}}{b{O`}}}An}{{{b{Ob}}{b{Ob}}}An}{{{b{Od}}{b{Od}}}An}{{{b{Of}}{b{Of}}}An}{{{b{Oh}}{b{Oh}}}An}{{{b{Oj}}{b{Oj}}}An}{{{b{Ol}}{b{Ol}}}An}{{{b{Md}}{b{Md}}}An}{{{b{ABj}}{b{ABj}}}An}{{{b{A@b}}{b{A@b}}}An}{{{b{A@h}}{b{A@h}}}An}{{{b{A@j}}{b{A@j}}}An}{{{b{Db}}{b{Db}}}An}{{{b{A@l}}{b{A@l}}}An}{{{b{A@n}}{b{A@n}}}An}{{{b{AA`}}{b{AA`}}}An}{{{b{Lh}}{b{Lh}}}An}{{{b{ABl}}{b{ABl}}}An}{{{b{AAb}}{b{AAb}}}An}{{{b{AAd}}{b{AAd}}}An}{{{b{AAf}}{b{AAf}}}An}{{{b{AAh}}{b{AAh}}}An}{{{b{AAj}}{b{AAj}}}An}{{{b{AAl}}{b{AAl}}}An}{{{b{AAn}}{b{AAn}}}An}{{{b{AB`}}{b{AB`}}}An}{{b{b{c}}}An{}}00000000000000000000000000000000000000000000000000000000000000000000000000000``{{{b{Lj}}{b{A`{n{j}}}}{b{{n{j}}}}{b{{n{j}}}}}{{Bd{fABl}}}}{{{b{A`ABh}}}{{Bd{fA@n}}}}{{{b{Lj}}{b{A`Cb}}}{{Bd{fCd}}}}{{{b{ABn}}{b{A`Cb}}}{{Bd{fCd}}}}{{{b{O`}}{b{A`Cb}}}{{Bd{fCd}}}}0{{{b{AC`}}{b{A`Cb}}}{{Bd{fCd}}}}0{{{b{ABf}}{b{A`Cb}}}{{Bd{fCd}}}}{{{b{Ob}}{b{A`Cb}}}{{Bd{fCd}}}}0{{{b{Od}}{b{A`Cb}}}{{Bd{fCd}}}}0{{{b{Of}}{b{A`Cb}}}{{Bd{fCd}}}}0{{{b{Oh}}{b{A`Cb}}}{{Bd{fCd}}}}0{{{b{ABh}}{b{A`Cb}}}{{Bd{fCd}}}}{{{b{Oj}}{b{A`Cb}}}{{Bd{fCd}}}}0{{{b{Ol}}{b{A`Cb}}}{{Bd{fCd}}}}0{{{b{Mf}}{b{A`Cb}}}{{Bd{fCd}}}}{{{b{Md}}{b{A`Cb}}}{{Bd{fCd}}}}0{{{b{ABj}}{b{A`Cb}}}{{Bd{fCd}}}}{{{b{On}}{b{A`Cb}}}{{Bd{fCd}}}}{{{b{A@`}}{b{A`Cb}}}{{Bd{fCd}}}}{{{b{A@b}}{b{A`Cb}}}Gd}0{{{b{A@d}}{b{A`Cb}}}{{Bd{fCd}}}}{{{b{A@f}}{b{A`Cb}}}{{Bd{fCd}}}}{{{b{A@h}}{b{A`Cb}}}Gd}{{{b{A@j}}{b{A`Cb}}}{{Bd{fCd}}}}{{{b{Db}}{b{A`Cb}}}Gd}{{{b{A@l}}{b{A`Cb}}}Gd}0{{{b{A@n}}{b{A`Cb}}}{{Bd{fCd}}}}0{{{b{AA`}}{b{A`Cb}}}{{Bd{fCd}}}}{{{b{AA`}}{b{A`Cb}}}Gd}{{{b{Lh}}{b{A`Cb}}}{{Bd{fCd}}}}0{{{b{Mb}}{b{A`Cb}}}{{Bd{fCd}}}}{{{b{Nh}}{b{A`Cb}}}{{Bd{fCd}}}}{{{b{M`}}{b{A`Cb}}}{{Bd{fCd}}}}{{{b{ABl}}{b{A`Cb}}}{{Bd{fCd}}}}{{{b{ACb}}{b{A`Cb}}}{{Bd{fCd}}}}{{{b{ACd}}{b{A`Cb}}}{{Bd{fCd}}}}{{{b{AAb}}{b{A`Cb}}}{{Bd{fCd}}}}0{{{b{AAd}}{b{A`Cb}}}{{Bd{fCd}}}}0{{{b{AAf}}{b{A`Cb}}}{{Bd{fCd}}}}0{{{b{AAh}}{b{A`Cb}}}{{Bd{fCd}}}}0{{{b{AAj}}{b{A`Cb}}}Gd}{{{b{AAl}}{b{A`Cb}}}Gd}0{{{b{AAn}}{b{A`Cb}}}{{Bd{fCd}}}}0{{{b{Mh}}{b{A`Cb}}}Gd}{{{b{Gl}}{b{A`Cb}}}Gd}{{{b{Lb}}{b{A`Cb}}}Gd}{{{b{Ld}}{b{A`Cb}}}Gd}{{{b{ACf}}{b{A`Cb}}}Gd}{{{b{Lf}}{b{A`Cb}}}Gd}{{{b{AB`}}{b{A`Cb}}}Gd}{{}An}````{cc{}}0000000{LhO`}111{OdOb}2{AChOd}3{LhOd}{OfOd}5{LhOf}6{OdOh}77{OlOj}{LhOj}{A@nOj}:{LhOl};{jMd}{B`Md}{AAnMd}{IbMd}?????????????{ACjLh}{AAfLh}{cc{}}00000{AClACb}1{AAfAAb}22{AAhAAf}{ACnAAf}4{AD`AAf}5555{MdAAn}6666666{{{b{c}}}c{}}00000000000000000000000000000000:{Jf{{Bd{MdADb}}}}{JfMd}{{{b{Lj}}}{{H`{h}}}}{{{b{Lj}}}{{Dh{{Gf{ADd}}}}}}{{{b{A`Lf}}}{{H`{{Gf{ADd}}Lh}}}}`{{{b{Db}}}An}{{{b{Md}}{b{A`c}}}fEl}{{{b{AA`}}{b{A`c}}}fEl}{{{b{AAj}}{b{A`c}}}fEl}{{{b{AAl}}{b{A`c}}}fEl}{{{b{AAn}}{b{A`c}}}fEl}{{{b{Gl}}}{{ABb{{Dh{Af}}}}}}{{{b{ABf}}}AAn}{{{b{ABh}}}AAn}{Ldf}`{{{b{A`M`}}Jf}{{b{A`M`}}}}0{AAnJf}{{}Bb}0000000000000000000000000000000000000000000000000000{{{b{ADf}}Ib{b{ADh}}}{{Bd{ADjACd}}}}{{{b{A`Mf}}B`}{{b{A`Mf}}}}{{{b{A`Mf}}Id}{{b{A`Mf}}}}{{{b{Nn}}}Jf}{AAnADl}{{MhAn}Mh}{{{b{A`Nh}}Id}{{b{A`Nh}}}}{{}c{}}0000000000000000000000000000000000000000000000000000{Lf{{H`{{Dj{LjADn}}Lf}}}}{{{Gf{Nn}}}{{Gf{ADd}}}}{{}}000000{Ldc{}}11{AC`AE`}{MdJf}`{{{b{ABf}}}An}{{{b{ABn}}}An}{{{b{Gl}}}An}{c{{AEb{e}}}AEdJd}00000000{{{b{A`Mf}}{Dh{Id}}}{{b{A`Mf}}}}={{Mh{Gh{Ad}}}Mh}```{{{b{Db}}}{{Dh{Id}}}}```{{{b{Lj}}}{{Dh{Jh}}}}{{{b{Ld}}}{{Dh{Jh}}}}{{{b{Lf}}}{{Dh{Jh}}}}```{{{b{Ab}}{Gh{{Gh{j}}}}{E`{Mf}}An}{{H`{M`}}}}{{{b{A`Mb}}{Dh{Id}}}{{b{A`Mb}}}}{{{b{A`Mf}}Md}{{b{A`Mf}}}}0`{{{b{Lj}}}{{Dh{Bb}}}}{{{b{A`Mf}}{Dh{AEf}}}{{b{A`Mf}}}}{{{b{A`M`}}Bb}{{b{A`M`}}}}```{{{b{A`M`}}An}{{b{A`M`}}}}{{{b{A`Mf}}B`}{{b{A`Mf}}}}{{{b{A`Nh}}B`}{{b{A`Nh}}}}{{{b{A`Mf}}{Dh{Nh}}}{{b{A`Mf}}}}{{{b{Gl}}}f}{{{b{ABn}}}An}{{{E`{ADf}}{E`{N`}}}M`}{{ADlABdJf}AAn}``{{{b{Gl}}}{{H`{Ad}}}}{{{b{Gl}}}Gn}``{{{b{Lj}}}{{AEh{{Dh{Bj}}}}}}`{{{b{A`Nn}}NlNlJfAn{b{AEj}}}f}{{{b{A`Nn}}NlNlAnJf}f}{{{b{A`Nn}}NlJfAn{Dh{Jf}}}f}{{{b{A`Nn}}B`}f}{{{b{A`Nn}}NlJfJf}f}{{{b{Nb}}{b{A`{n{j}}}}{b{{n{j}}}}}{{Bd{{b{A`{n{j}}}}ACb}}}}{{{b{Lj}}}AEl}{{{b{Lj}}}AEn}{{{b{A`Mf}}Ib}{{b{A`Mf}}}}{{{b{Md}}{b{Md}}}{{Dh{Al}}}}{{{b{AAj}}{b{AAj}}}{{Dh{Al}}}}{{{b{AAl}}{b{AAl}}}{{Dh{Al}}}}{{{b{AAn}}{b{AAn}}}{{Dh{Al}}}}```{{{b{Lj}}}{{Dh{{Gf{ADd}}}}}}5`{{{AF`{{b{A`ADn}}}}{b{A`AFb}}}AFd}{{{AF`{{b{A`AEn}}}}{b{A`AFb}}}AFd}{{{AF`{{b{A`AEl}}}}{b{A`AFb}}}AFd}{{{AF`{{b{A`Ln}}}}{b{A`AFb}}}AFd}{{{AF`{{b{A`Ll}}}}{b{A`AFb}}}AFd}{{{AF`{{b{A`AFf}}}}{b{A`AFb}}}AFd}{{{AF`{{b{A`Lb}}}}{b{A`AFb}}}{{AFd{c}}}{}}{{{AF`{{b{A`ACf}}}}{b{A`AFb}}}{{AFd{c}}}{}}{{{AF`{{b{A`Lf}}}}{b{A`AFb}}}{{AFd{c}}}{}}{{{AF`{{b{A`ABh}}}}{b{A`AFb}}}{{AFd{{Bd{fAFh}}}}}}{{{b{A`ABf}}{b{A`AFb}}{b{A`{n{j}}}}}{{AFd{{Bd{BbOd}}}}}}{{{AF`{{b{A`ABf}}}}{b{A`AFb}}{b{A`AFj}}}{{AFd{{Bd{fAFh}}}}}}2{{{AF`{{b{A`ABh}}}}{b{A`AFb}}{b{{n{j}}}}}{{AFd{{Bd{BbAFh}}}}}}{{{AF`{{b{A`ABh}}}}{b{A`AFb}}{b{{n{j}}}}}{{AFd{{Bd{BbOj}}}}}}{{{b{A`M`}}{Dh{Nd}}}{{b{A`M`}}}}{{{b{A`M`}}{Dh{Nf}}}{{b{A`M`}}}}{{{b{ABh}}}{{Bd{AFlA@n}}}}{MhMh}{{MhDl}Mh}{e{{AFn{cg}}}{}{{AEd{}{{Jb{c}}}}}{{Jd{}{{Jb{c}}}}}}00000000{{{b{A`ABf}}{b{A`{n{j}}}}}{{Bd{{Dh{Bb}}Od}}}}{{{b{A`ABf}}BbAn}{{Bd{{Dh{ABj}}Od}}}}{{{b{A`ABf}}{b{A`{n{AG`}}}}}{{Bd{{Dh{Bb}}Od}}}}{{{b{Lj}}}AFf}{{{b{A`ABf}}{b{A`{n{j}}}}}{{Bd{fOh}}}}{{{b{A`ABf}}Bb}{{Bd{{Gh{j}}Ob}}}}```{{{b{A`Mf}}An}{{b{A`Mf}}}}{{{b{A`Mf}}Md}{{b{A`Mf}}}}{{{b{A`ABf}}}{{Bd{{Dh{Md}}Of}}}}{Ldf}{{{b{AB`}}}Ah}{{MhAB`}Mh}`{{{b{Lj}}}Bj}{{{b{Ld}}}Bj}{{{b{Lf}}}Bj}{{{b{Ld}}}An}{{{b{Gl}}Gn}{{Dh{Db}}}}{{{b{Gl}}}{{`{{Bl{}{{Bh{Db}}}}}}}}{{{b{A`Mb}}Md}{{b{A`Mb}}}}{{{b{A`ABh}}Md}{{Bd{fA@n}}}}``{Ld{{H`{fAC`}}}}{{{b{ADf}}Ib{b{ADh}}{b{{n{j}}}}}{{l{j}}}}{{{b{A`M`}}Id}{{b{A`M`}}}}{{{b{Lj}}}Id}`{{Mdc}Md{{Eb{Md}}}}{{{b{Nb}}{b{A`{Gh{j}}}}{b{{n{j}}}}}{{Bd{fACb}}}}{{MhAb}Mh}{{{b{Gl}}}{{b{Ab}}}}{{{b{Lj}}AG`}{{Bd{fO`}}}}{{{b{Lj}}AG`}AGb}{{{b{A`Mf}}An}{{b{A`Mf}}}}{{{b{A`Mf}}Jf}{{b{A`Mf}}}}``{{{b{A@b}}c}BdEn}{{{b{A@h}}c}BdEn}{{{b{Db}}c}BdEn}{{{b{A@l}}c}BdEn}{{{b{AA`}}c}BdEn}{{{b{Gl}}{Gh{{Gh{j}}}}}{{H`{f}}}}{{{b{Lj}}Md}f}0{{{b{ABh}}AFl}{{Bd{fA@n}}}}1{{{b{O`}}}{{Dh{{b{Fd}}}}}}{{{b{Ob}}}{{Dh{{b{Fd}}}}}}{{{b{Od}}}{{Dh{{b{Fd}}}}}}{{{b{Of}}}{{Dh{{b{Fd}}}}}}{{{b{Oh}}}{{Dh{{b{Fd}}}}}}{{{b{Oj}}}{{Dh{{b{Fd}}}}}}{{{b{Ol}}}{{Dh{{b{Fd}}}}}}{{{b{Lh}}}{{Dh{{b{Fd}}}}}}{{{b{Db}}}{{Gh{{Dj{AA`Id}}}}}}`{{{b{Lj}}}Bb}{{{E`{ADf}}Ib{b{AGd}}}{{Gf{AGf}}}}{{{b{Lj}}}A@f}{{{b{A`ABf}}Md}{{Bd{fA@n}}}}`{{{b{A`ABh}}}{{Bd{{Dh{Md}}Ol}}}}``{{{b{A`Mf}}Md}{{b{A`Mf}}}}``{{{b{A`Mf}}AGh}{{b{A`Mf}}}}{bc{}}00000000000000000000000000000000{bCh}0000000000000000000{{{b{A`M`}}{E`{N`}}}{{b{A`M`}}}}`{{{b{A`M`}}{E`{Mf}}}{{b{A`M`}}}}{{MhMf}Mh}{c{{Bd{e}}}{}{}}000000000000000000{Jf{{Bd{MdADb}}}}{AGj{{Bd{MdADb}}}}{Bb{{Bd{MdADb}}}}3333333333333333333333333333333333{{}{{Bd{c}}}{}}0000000000000000000000000000000000000000000000000000{{{AF`{{b{A`c}}}}{b{A`AFb}}}AFd{}}000000`{bFl}0000000000000000000000000000000000000000000000000000``{{{b{A`Nh}}B`}{{b{A`Nh}}}}{{}c{}}0000000000000000000000000000000000000000000000000000{{{b{Lj}}}ABn}{{{b{Nn}}}Jf}{{{E`{ADf}}}M`}{{{Gh{AGl}}AGn}{{Bd{M`AH`}}}}{{{b{A`ABh}}{b{{n{j}}}}}{{Bd{BbOj}}}}{{{b{A`ABh}}{b{{n{j}}}}}{{Bd{fOj}}}}{{{b{A`ABh}}{b{A`{n{AG`}}}}}{{Bd{fOj}}}}{{{b{A`ABh}}AG`}{{Bd{fOj}}}}{{{b{A`ABh}}{b{A`{n{AG`}}}}}{{Bd{A@jOj}}}}``````{{bd}f}000`````````{b{{b{c}}}{}}000{{{b{A`}}}{{b{A`c}}}{}}000``{{{b{AHb}}}AHb}{{{b{AHd}}}AHd}{{{b{AHf}}}AHf}{{{b{AHh}}}AHh}{{b{b{A`c}}}f{}}000{{bj}f}000```{{}AHb}{{}AHd}{{}AHf}{{}AHh}{Bb{{b{c}}}{}}000{Bb{{b{A`c}}}{}}000`````{Bbf}000`{{{b{AHb}}{b{A`Cb}}}{{Bd{fCd}}}}{{{b{AHd}}{b{A`Cb}}}{{Bd{fCd}}}}{{{b{AHf}}{b{A`Cb}}}Gd}{{{b{AHh}}{b{A`Cb}}}{{Bd{fCd}}}}`{cc{}}000{{{b{c}}}c{}}000`{{}Bb}000{{}c{}}000{{{b{AHb}}}{{AHj{{Dj{{b{Ef}}{b{ADd}}}}}}}}{{{b{AHd}}}{{AHj{{Dj{{b{Ef}}{b{ADd}}}}}}}}{{{b{AHf}}}{{AHj{{Dj{{b{Ef}}{b{ADd}}}}}}}}{{{b{AHh}}}{{AHj{{Dj{{b{Ef}}{b{ADd}}}}}}}}```{{}{{b{Ef}}}}000```````````````````````````````````````````````````{bc{}}000{c{{Bd{e}}}{}{}}000{{}{{Bd{c}}}{}}000{bFl}000```````{{}c{}}000````{{bd}f}{{{b{AHl}}Lf}{{AHn{{H`{f}}}}}}{{AI`ce}AI`{{Fj{{n{j}}}}}AHl}{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}0{GlAI`}{{{b{AIb}}}AIb}{{b{b{A`c}}}f{}}{{bj}f}{Bb{{b{c}}}{}}0{Bb{{b{A`c}}}{}}0{Bbf}0{{{b{AIb}}}{{b{Gl}}}}{{{b{AI`}}}{{b{Gl}}}}{{{b{AIb}}{b{A`Cb}}}Gd}{{{b{AI`}}{b{A`Cb}}}Gd}{cc{}}0{{{b{c}}}c{}}{{}Bb}0{{}c{}}0{{{b{AIb}}}An}?{{{b{AHl}}}{{AHn{f}}}}{{{b{AIb}}}{{H`{f}}}}{AI`{{H`{AIb}}}}{bc{}}{c{{Bd{e}}}{}{}}0{{}{{Bd{c}}}{}}0{bFl}0{{}c{}}0``{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}0{Bj{{H`{Jn}}}}{Bb{{b{c}}}{}}0{Bb{{b{A`c}}}{}}0{{{b{AId}}Ab}{{Gf{Fn}}}}{{{b{AId}}}In}{Bbf}0{{{b{AIf}}{b{A`Cb}}}Gd}{{{b{AId}}{b{A`Cb}}}Gd}{cc{}}0{{}Bb}0{{}c{}}0``{{{b{AId}}{b{Gn}}Id}{{H`{f}}}}`{{}{{H`{AId}}}}{{}{{H`{{Dj{AhAfAIh}}}}}}{{{Dh{AIj}}An}{{H`{{Dj{AhAfAIh}}}}}}1{Ch{{H`{AId}}}}{c{{Bd{e}}}{}{}}0{{}{{Bd{c}}}{}}0{bFl}0{{}c{}}0``````{{bd}f}00{b{{b{c}}}{}}00000{{{b{A`}}}{{b{A`c}}}{}}00000{e{{AIl{g}}}{}{{AIn{}{{Bh{c}}}}}{{AJ`{}{{Bh{c}}}}}}{{{b{{AJb{c}}}}}{{AJb{c}}}{}}{{{b{{ABb{c}}}}}{{ABb{c}}}Jl}{{{b{{AJd{c}}}}}{{AJd{c}}}Jl}{{b{b{A`c}}}f{}}00{{bj}f}00{{}{{AJb{c}}}AJf}{Bb{{b{c}}}{}}00000{Bb{{b{A`c}}}{}}00000{Bbf}00000{{{b{{AJb{c}}}}{b{A`Cb}}}GdKn}{{{b{{ABb{c}}}}{b{A`Cb}}}GdKn}{{{b{{AJh{c}}}}{b{A`Cb}}}GdKn}{{{b{{AJj{c}}}}{b{A`Cb}}}GdKn}{{{b{{AJd{c}}}}{b{A`Cb}}}GdKn}{{{b{AJl}}{b{A`Cb}}}Gd}0{cc{}}00000{{{b{c}}}c{}}00{{{b{{AJb{c}}}}}c{JlAJn}}{{{b{{ABb{c}}}}}{{Bd{cAJl}}}{JlAJn}}{{}Bb}00000{{{b{A`{ABb{{Dh{c}}}}}}}{{AJj{c}}}{JlAJn}}{{}c{}}00000{{}}0{{}c{}}{c{{AEb{e}}}AEdJd}0{e{{AK`{cg}}}{}{{AIn{}{{Bh{c}}}}}{{AJ`{}{{Bh{c}}}}}}{c{{AJb{c}}}{JlAJn}}{{{AF`{{b{A`{AJh{c}}}}}}{b{A`AFb}}}{{AFd{e}}}{JlAJn}{}}{{{AF`{{b{A`{AJj{c}}}}}}{b{A`AFb}}}{{AFd{e}}}{JlAJn}{}}{{{AF`{{b{A`{AJd{c}}}}}}{b{A`AFb}}}{{AFd{{Dh{e}}}}}{JlAJn}{}}{e{{AFn{cg}}}{}{{AEd{}{{Jb{c}}}}}{{Jd{}{{Jb{c}}}}}}0{{{b{{AKd{AKbceg}}}}}{{AKf{iceg}}}AKhAKjAKl{}}{{{b{{AKd{AKbceg}}}}AKn}{{AKf{iceg}}}AKhAKjAKl{}}{{{b{{AJb{c}}}}c}{{Bd{cc}}}{JlAJn}}{{{ABb{c}}}{{AJd{c}}}{JlAJn}}0{bc{}}00{bCh}{c{{Bd{e}}}{}{}}00000{{}{{Bd{c}}}{}}00000{{{AF`{{b{A`c}}}}{b{A`AFb}}}AFd{}}0{{{AF`{{b{A`c}}}}{b{A`AFb}}}{{AFd{{Dh{Bd}}}}}{}}{bFl}00000{{{b{A`{ABb{c}}}}}{{AJh{c}}}{JlAJn}}{{}c{}}00000{{{b{{AJb{c}}}}}{{ABb{c}}}{JlAJn}}{e{{AL`{g}}}{}{{AIn{}{{Bh{c}}}}}{{AJ`{}{{Bh{c}}}}}}","D":"FCj","p":[[1,"reference",null,null,1],[5,"Private",2559],[1,"unit"],[5,"PublicKey",0,2560],[1,"u8"],[1,"array"],[1,"slice"],[0,"mut"],[5,"SecretKey",0,2560],[5,"NodeAddr",0,2561],[5,"RelayUrl",0,2562],[5,"RelayMap",0,2563],[5,"RelayNode",0,2563],[6,"Ordering",2564],[1,"bool"],[1,"u16"],[1,"usize"],[6,"Result",2565,null,1],[10,"Deserializer",2566],[17,"Item"],[6,"SocketAddr",2567],[10,"Iterator",2568],[1,"char"],[10,"FromIterator",2569],[5,"Formatter",2570],[5,"Error",2570],[6,"KeyParsingError",0,2560],[5,"String",2571],[5,"VerifyingKey",2572],[5,"Error",2573],[6,"HexOrBase32ParseError",2574],[5,"SigningKey",2575],[5,"RemoteInfo",638,2576],[5,"NodeTicket",2577],[5,"NodeInfo",547],[6,"Option",2578,null,1],[1,"tuple",null,null,1],[5,"Url",2579],[5,"Error",2580],[5,"Arc",2581,null,1],[10,"Into",2582],[10,"IntoIterator",2569],[1,"str"],[10,"CryptoRngCore",2583],[10,"Sized",2584],[10,"Hasher",2585],[10,"Serializer",2586],[5,"SharedSecret",2587],[5,"Signature",2588],[10,"Error",2589],[5,"Zeroizing",2590],[6,"Error",2591],[10,"AsRef",2582],[5,"TypeId",2592],[5,"ConcurrentDiscovery",281],[10,"Discovery",281],[5,"DiscoveryItem",281],[8,"Result",2570],[5,"Box",2593,null,1],[5,"Vec",2594],[5,"BTreeSet",2595],[5,"Endpoint",638],[8,"NodeId",0,2560],[8,"Result",2580],[8,"Boxed",2596],[5,"DnsDiscovery",334],[5,"LocalSwarmDiscovery",353],[5,"PkarrPublisher",372],[5,"PkarrResolver",372],[5,"PkarrRelayClient",372],[5,"SignedPacket",2597],[8,"BoxStream",2598],[1,"u32"],[5,"Duration",2599],[5,"Builder",449],[5,"DhtDiscovery",449],[5,"PkarrClient",2600],[5,"StaticProvider",498],[8,"DnsResolver",522],[10,"ResolverExt",522],[17,"Output"],[10,"Future",2601,null,1],[1,"u64"],[6,"IpAddr",2602],[10,"IntoName",2603],[10,"Clone",2604],[8,"TokioResolver",2605],[6,"IrohAttr",547],[5,"TxtAttrs",547],[5,"BTreeMap",2606],[10,"FromStr",2607],[10,"Display",2570],[10,"Hash",2585],[10,"Ord",2564],[10,"Debug",2570],[5,"Record",2608],[5,"Accept",638],[5,"Incoming",638],[5,"Connecting",638],[6,"ConnectionError",638,2609],[5,"Connection",638,2610],[5,"AcceptBi",638,2610],[5,"AcceptUni",638,2610],[5,"ServerConfig",638,2611],[5,"AckFrequencyConfig",638,2611],[5,"VarInt",638,2612],[5,"TransportConfig",638,2611],[5,"Builder",638],[10,"FnOnce",2613],[10,"Send",2584],[10,"Sync",2584],[10,"HandshakeTokenKey",638,2614],[10,"AeadKey",638,2614],[5,"SocketAddrV4",2567],[5,"SocketAddrV6",2567],[5,"MtuDiscoveryConfig",638,2611],[10,"ControllerFactory",638,2615],[5,"Instant",2616],[10,"Controller",638,2615],[6,"SendDatagramError",638,2610],[6,"ReadToEndError",638,2617],[6,"ReadError",638,2617],[6,"ResetError",638,2617],[6,"ReadExactError",638,2617],[6,"WriteError",638,2618],[6,"StoppedError",638,2618],[5,"UdpStats",638,2619],[5,"FrameStats",638,2619],[6,"ControlMsg",638,2576],[5,"PathStats",638,2619],[5,"ConnectionStats",638,2619],[5,"DirectAddrInfo",638,2576],[5,"Written",638,2620],[6,"ConnectionType",638,2576],[5,"ClosedStream",638,2621],[6,"Source",638,2622],[5,"ConnectionClose",638,2623],[5,"ApplicationClose",638,2623],[5,"TransportError",638],[5,"TransportErrorCode",638],[5,"DirectAddr",638,2624],[6,"DirectAddrType",638,2624],[5,"StreamId",638,2625],[6,"RelayMode",638],[5,"Watcher",2427],[6,"Dir",2625],[5,"RecvStream",638,2617],[5,"SendStream",638,2618],[5,"Chunk",638,2626],[5,"ExportKeyingMaterialError",638,2614],[5,"WeakConnectionHandle",638,2610],[5,"RetryError",638,2627],[5,"CryptoError",638,2614],[5,"UnsupportedVersion",638,2614],[5,"IncomingFuture",638],[6,"ReadableError",2628],[6,"Close",2623],[5,"Unspecified",2629],[6,"Error",2630],[5,"InvalidFrame",2623],[5,"VarIntBoundsExceeded",2612],[10,"Any",2592],[10,"CryptoServerConfig",638],[5,"ConnectionId",2631],[5,"Keys",2614],[6,"Side",2625],[5,"ZeroRttAccepted",638,2610],[5,"Incoming",2627],[5,"Join2",2632],[10,"IntoFuture",2633],[5,"IdleTimeout",2611],[5,"Receiver",2634],[5,"RttEstimator",2635],[5,"OpenBi",638,2610],[5,"OpenUni",638,2610],[5,"Pin",2636],[5,"Context",2637],[6,"Poll",2638],[5,"ReadDatagram",638,2610],[5,"Error",2639],[5,"ReadBuf",2640],[1,"i32"],[5,"Race2",2641],[5,"Bytes",2642],[5,"SendDatagram",2610],[5,"TransportParameters",2630],[10,"Session",2614],[1,"f32"],[1,"u128"],[5,"CertificateDer",2643],[6,"PrivateKeyDer",2643],[6,"Error",2644],[5,"PortmapMetrics",2166],[5,"NetReportMetrics",2166],[5,"MagicsockMetrics",2166],[5,"RelayMetrics",2166],[5,"IntoIter",2645],[10,"ProtocolHandler",2342],[8,"Boxed",2646],[5,"RouterBuilder",2342],[5,"Router",2342],[5,"DnsPkarrServer",2387,2647],[5,"CleanupDropGuard",2387],[5,"Server",2648],[5,"StunConfig",2648],[5,"Chain2",2649],[10,"IntoStream",2650],[10,"Stream",2598],[5,"Watchable",2427],[5,"WatcherStream",2427],[10,"Default",2651],[5,"WatchNextFut",2427],[5,"WatchInitializedFut",2427],[5,"Disconnected",2427],[10,"Eq",2564],[5,"Merge2",2652],[6,"NotKeyed",2653],[5,"RateLimiter",2654],[5,"RatelimitedStream",2655],[10,"DirectStateStore",2653],[10,"ReasonablyRealtime",2656],[10,"RateLimitingMiddleware",2657],[5,"Jitter",2658],[5,"Zip2",2659],[15,"Discovery",2164],[15,"NamedApp",2164]],"r":[[1,638],[3,2560],[4,2561],[5,2560],[6,2560],[7,2563],[8,638],[9,2563],[10,2562],[11,2560],[265,2660],[266,2660],[641,2610],[642,2610],[643,2611],[644,2614],[646,2623],[653,2626],[655,2621],[659,2610],[660,2623],[662,2609],[668,2619],[669,2576],[670,2576],[671,2615],[672,2615],[673,2614],[678,2624],[679,2576],[680,2624],[686,2614],[691,2619],[692,2614],[704,2611],[709,2610],[710,2610],[712,2619],[717,2610],[718,2617],[720,2617],[721,2617],[722,2617],[726,2576],[729,2617],[730,2627],[734,2610],[735,2618],[736,2611],[737,2622],[740,2618],[741,2625],[748,2611],[753,2619],[756,2614],[757,2612],[759,2610],[760,2618],[761,2620],[762,2610],[2388,2647],[2393,2661]],"b":[[118,"impl-Debug-for-PublicKey"],[119,"impl-Display-for-PublicKey"],[120,"impl-Display-for-KeyParsingError"],[121,"impl-Debug-for-KeyParsingError"],[122,"impl-Display-for-SecretKey"],[123,"impl-Debug-for-SecretKey"],[125,"impl-Display-for-RelayUrl"],[126,"impl-Debug-for-RelayUrl"],[127,"impl-Debug-for-RelayMap"],[128,"impl-Display-for-RelayMap"],[129,"impl-Debug-for-RelayNode"],[130,"impl-Display-for-RelayNode"],[135,"impl-From%3CError%3E-for-KeyParsingError"],[136,"impl-From%3CHexOrBase32ParseError%3E-for-KeyParsingError"],[137,"impl-From%3C%5Bu8;+32%5D%3E-for-SecretKey"],[139,"impl-From%3CSigningKey%3E-for-SecretKey"],[141,"impl-From%3CRemoteInfo%3E-for-NodeAddr"],[142,"impl-From%3CNodeTicket%3E-for-NodeAddr"],[143,"impl-From%3CNodeInfo%3E-for-NodeAddr"],[144,"impl-From%3C(PublicKey,+Option%3CRelayUrl%3E,+%26%5BSocketAddr%5D)%3E-for-NodeAddr"],[145,"impl-From%3CPublicKey%3E-for-NodeAddr"],[225,"impl-TryFrom%3C%26%5Bu8%5D%3E-for-PublicKey"],[226,"impl-TryFrom%3C%26%5Bu8;+32%5D%3E-for-PublicKey"],[585,"impl-Display-for-IrohAttr"],[586,"impl-Debug-for-IrohAttr"],[591,"impl-From%3C%26TxtAttrs%3CIrohAttr%3E%3E-for-NodeInfo"],[592,"impl-From%3CTxtAttrs%3CIrohAttr%3E%3E-for-NodeInfo"],[1368,"impl-Debug-for-SendDatagramError"],[1369,"impl-Display-for-SendDatagramError"],[1370,"impl-Display-for-RetryError"],[1371,"impl-Debug-for-RetryError"],[1373,"impl-Display-for-ReadToEndError"],[1374,"impl-Debug-for-ReadToEndError"],[1375,"impl-Display-for-ReadError"],[1376,"impl-Debug-for-ReadError"],[1377,"impl-Display-for-ResetError"],[1378,"impl-Debug-for-ResetError"],[1379,"impl-Display-for-ReadExactError"],[1380,"impl-Debug-for-ReadExactError"],[1382,"impl-Debug-for-WriteError"],[1383,"impl-Display-for-WriteError"],[1384,"impl-Debug-for-StoppedError"],[1385,"impl-Display-for-StoppedError"],[1387,"impl-Debug-for-VarInt"],[1388,"impl-Display-for-VarInt"],[1392,"impl-Display-for-ControlMsg"],[1393,"impl-Debug-for-ControlMsg"],[1399,"impl-Display-for-ConnectionType"],[1400,"impl-Debug-for-ConnectionType"],[1401,"impl-Display-for-ClosedStream"],[1402,"impl-Debug-for-ClosedStream"],[1403,"impl-Display-for-Source"],[1404,"impl-Debug-for-Source"],[1405,"impl-Display-for-ConnectionError"],[1406,"impl-Debug-for-ConnectionError"],[1413,"impl-Display-for-ConnectionClose"],[1414,"impl-Debug-for-ConnectionClose"],[1415,"impl-Debug-for-ApplicationClose"],[1416,"impl-Display-for-ApplicationClose"],[1417,"impl-Display-for-TransportError"],[1418,"impl-Debug-for-TransportError"],[1419,"impl-Display-for-TransportErrorCode"],[1420,"impl-Debug-for-TransportErrorCode"],[1422,"impl-Display-for-DirectAddrType"],[1423,"impl-Debug-for-DirectAddrType"],[1424,"impl-Display-for-StreamId"],[1425,"impl-Debug-for-StreamId"],[1452,"impl-From%3CReadableError%3E-for-ReadError"],[1454,"impl-From%3CConnectionError%3E-for-ReadError"],[1455,"impl-From%3CResetError%3E-for-ReadError"],[1462,"impl-From%3CStoppedError%3E-for-WriteError"],[1463,"impl-From%3CConnectionError%3E-for-WriteError"],[1464,"impl-From%3CClosedStream%3E-for-WriteError"],[1468,"impl-From%3Cu8%3E-for-VarInt"],[1469,"impl-From%3Cu16%3E-for-VarInt"],[1470,"impl-From%3CStreamId%3E-for-VarInt"],[1471,"impl-From%3Cu32%3E-for-VarInt"],[1485,"impl-From%3CClose%3E-for-ConnectionError"],[1486,"impl-From%3CTransportError%3E-for-ConnectionError"],[1498,"impl-From%3CTransportErrorCode%3E-for-TransportError"],[1499,"impl-From%3CError%3E-for-TransportError"],[1501,"impl-From%3CInvalidFrame%3E-for-TransportError"],[1780,"impl-RecvStream"],[1781,"impl-AsyncRead-for-RecvStream"],[1783,"impl-AsyncWrite-for-SendStream"],[1784,"impl-SendStream"],[1948,"impl-TryFrom%3Cu64%3E-for-VarInt"],[1949,"impl-TryFrom%3Cu128%3E-for-VarInt"],[1950,"impl-TryFrom%3Cusize%3E-for-VarInt"],[2482,"impl-Display-for-Disconnected"],[2483,"impl-Debug-for-Disconnected"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAOIGoQACAAAACQAAAA0ABQAUACgAQAATAFgABgBgAAEAYwAgAIYAAACIAAIAjAAAAI4AAACQAAIAlAAAAJsACACoAAgAvwADAMgABADPAAAA1QAVAOwADQD9AAYAHQEAAB8BCwAsAQEALwEBADMBAQA2AQEAQAEAAEIBAABFAQkAUgEFAFkBAABdAQQAZAEFAGsBAABuAQYAfAEXAJUBBgCfAQUArQEAAK8BAACxAQsAvgECAMQBBADMAQgA1gEDANwBAADeAQEA5QEAAOcBAADpAQQA7wEDAPYBBgAAAgAAAwIAAAUCAAAHAgMAFwIAAB8CAAAqAgEALQIQAD8CDgBQAgIAWQIBAF0CAwBpAgAAbQIAAHACAAByAgwAAAMgACcDAAApAwAAOQNpAKsDIADNA0EAEwQDABgEAwAiBAAAJAQAACkEAQAvBAoAOwRuALMENgDrBGcAVwVCAKcFAACrBQAArQUAAK8FAQCyBQAAtAUAALcFAgC7BQAAvQUDAM4FAQDWBQAA2AUAANsFAQDeBQAA4wUAAOsFIAASBgAAFAYEAB0GAAAhBjQAlAYJAKQGCADBBgAAxQYCANAGAQDVBgAA4QYDAOYGAQDqBgoA9gYCAP8GCAAgBwEAMQcEADsHBwBJBwAASwcBAE4HAQBRBzQAigcSAKAHXQD/BzQANwg0AHsIAwCACA8AkggLAKEICwCyCAgAwAgDAMUIAwDNCAoA4QgGAOkIBwDyCAgA/ggGAAYJFAAdCQgAKgkAAC0JAwAyCQgAPQkBAEEJAgBLCQgAVgkDAFsJAwBhCQMAZwkBAHQJBwCCCTIAuwkCAMAJBQDNCQUA1AkGAN4JGAD4CQUA/wkAAA==","P":[[20,"T"],[34,""],[40,"T"],[46,""],[56,"K"],[60,""],[63,"T"],[68,""],[69,"T"],[78,"D"],[80,"__D"],[83,""],[95,"U"],[98,""],[103,"K"],[118,""],[132,"T"],[133,""],[134,"T"],[135,""],[138,"T"],[139,""],[140,"T"],[141,""],[146,"T"],[147,""],[148,"T"],[150,""],[152,"I,"],[153,""],[154,"T"],[160,""],[165,"R"],[166,""],[167,"H"],[168,"__H"],[169,""],[176,"U"],[183,""],[199,"S"],[201,"__S"],[204,""],[212,"T"],[218,""],[224,"U,T"],[225,""],[227,"U,T"],[228,""],[229,"U,T"],[234,"T"],[235,"U"],[242,""],[252,"V"],[260,""],[261,""],[285,""],[286,"T"],[290,""],[291,"T"],[292,""],[294,"T"],[299,""],[304,"T"],[308,""],[311,"U"],[318,""],[325,"T"],[326,"U,T"],[328,"U"],[330,""],[332,"V"],[337,"T"],[341,""],[343,"T"],[344,""],[345,"U"],[346,""],[349,"U,T"],[350,"U"],[351,""],[352,"V"],[355,"T"],[359,""],[361,"T"],[362,""],[363,"U"],[364,""],[368,"U,T"],[369,"U"],[370,""],[371,"V"],[379,""],[382,"T"],[388,""],[391,"T"],[394,""],[397,"T"],[404,""],[411,"T"],[417,""],[420,"U"],[423,""],[432,"T"],[435,"U,T"],[438,"U"],[441,""],[445,"V"],[448,""],[452,"T"],[456,""],[460,"T"],[461,""],[464,"T"],[468,""],[473,"T"],[476,""],[480,"U"],[482,""],[488,"T"],[489,"U,T"],[491,"U"],[493,""],[496,"V"],[500,""],[501,"T"],[503,""],[504,"T"],[506,""],[508,"T"],[509,","],[510,""],[512,"U"],[513,""],[517,""],[518,"U,T"],[519,"U"],[520,""],[521,"V"],[524,""],[533,"N"],[546,""],[555,"T"],[562,""],[563,"T"],[564,""],[566,"K"],[567,"T"],[574,""],[579,"K"],[585,""],[588,"T"],[591,""],[594,"T"],[595,""],[596,"T"],[597,"T,"],[598,""],[599,"T"],[601,"FromStr::Err"],[602,",T"],[603,""],[604,"__H"],[605,""],[608,"U"],[611,"T"],[613,""],[614,"T"],[616,""],[619,"T"],[621,""],[622,"T"],[623,""],[625,"TryFrom::Error"],[626,"U,T"],[629,"U"],[632,""],[635,"V"],[767,""],[809,"D,F"],[810,""],[824,"T"],[930,""],[972,"T"],[1005,""],[1047,"K"],[1051,""],[1056,""],[1058,""],[1082,"T"],[1188,"__D"],[1193,""],[1284,"K"],[1364,""],[1438,"T"],[1446,""],[1447,"T"],[1450,""],[1451,"T"],[1452,""],[1453,"T"],[1454,""],[1456,"T"],[1457,""],[1458,"T"],[1459,""],[1460,"T"],[1462,""],[1465,"T"],[1466,""],[1467,"T"],[1468,""],[1472,"T"],[1485,""],[1487,"T"],[1493,""],[1494,"T"],[1495,""],[1496,"T"],[1498,""],[1500,"T"],[1501,""],[1502,"T"],[1506,""],[1507,"T"],[1547,""],[1555,"__H"],[1560,""],[1628,"U"],[1681,""],[1690,"IntoFuture::IntoFuture"],[1691,""],[1699,"F2,F1"],[1708,""],[1776,"Future::Output"],[1779,""],[1790,"T,S2,F1"],[1799,""],[1830,""],[1831,""],[1840,"__S"],[1845,""],[1872,"T"],[1905,""],[1929,"U,T"],[1948,""],[1951,"U,T"],[1985,"U"],[2038,"F"],[2046,""],[2102,"V"],[2155,""],[2183,"T"],[2193,""],[2197,"T"],[2201,""],[2212,"T"],[2225,""],[2235,"T"],[2244,""],[2248,"U"],[2252,""],[2314,"T"],[2318,"U,T"],[2322,"U"],[2326,""],[2337,"V"],[2345,""],[2347,",T"],[2348,"T"],[2352,""],[2354,"T"],[2355,""],[2356,"T"],[2360,""],[2366,"T"],[2369,""],[2371,"U"],[2373,""],[2378,"T"],[2379,"U,T"],[2381,"U"],[2383,""],[2385,"V"],[2389,"T"],[2393,""],[2394,"T"],[2398,""],[2404,"T"],[2406,""],[2408,"U"],[2412,""],[2419,"U,T"],[2421,"U"],[2423,""],[2425,"V"],[2433,""],[2436,"T"],[2448,"T,S2,S1"],[2449,"T"],[2455,""],[2458,"T"],[2471,""],[2477,"T"],[2482,""],[2484,"T"],[2495,""],[2501,"T"],[2502,"U"],[2508,""],[2510,"S"],[2511,"F2,F1"],[2513,"T,S2,S1"],[2514,"T"],[2515,"T,Future::Output"],[2517,"T,Stream::Item"],[2518,"T,S2,F1"],[2520,"D,C,MW,S"],[2522,"T"],[2528,""],[2529,"U,T"],[2535,"U"],[2541,"F"],[2543,"S"],[2544,""],[2550,"T"],[2551,"V"],[2557,"T"],[2558,"T,S2,S1"]]}],["iroh_base",{"t":"TPPGFISFFFFFNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNONNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPFGPGPPPPNNNNNNNNNNNNNNHNNNNNNHHNNNNNNNNOHHHONNNNNNNNNNNNNNNNNNPGTPFPKPNNNNNNNNNNNNNNNNNNNMNNNNNNNNNMNNNNNNNNNNNNO","n":["BYTE_SIZE","Base32","Key","KeyParsingError","NodeAddr","NodeId","PUBLIC_KEY_LENGTH","PublicKey","RelayUrl","SecretKey","SharedSecret","Signature","as_bytes","as_ref","base32","borrow","","","","","","","borrow_mut","","","","","","","clone","","","","","clone_into","","","","","clone_to_uninit","","","","","cmp","","","deref","deserialize","","","","","direct_addresses","","encode_hex","encode_hex_upper","eq","","","","fmt","","","","","","","","","","","","","","fmt_short","from","","","","","","","","","","","","","","","","","","","from_bytes","","","from_components","from_parts","from_slice","from_str","","","","generate","generate_with_rng","hash","","into","","","","","","","is_empty","new","node_id","open","partial_cmp","","","public","r_bytes","relay_url","","s_bytes","seal","serialize","","","","","shared","sign","source","ticket","to_bytes","","","to_openssh","to_owned","","","","","to_string","","","","","to_vec","try_from","","","","","","","","","","","","","try_from_openssh","try_into","","","","","","","type_id","","","","","","","verify","vzip","","","","","","","with_direct_addresses","with_relay_url","Base32","DecodeError","DecodeKind","Hex","HexOrBase32ParseError","Length","Padding","Symbol","Trailing","borrow","","","borrow_mut","","","clone","","clone_into","","clone_to_uninit","","eq","","fmt","","","","","","","fmt_append","fmt_short","from","","","","","into","","","kind","parse_array","parse_array_hex_or_base32","parse_vec","position","source","to_owned","","to_string","","","try_from","","","try_into","","","type_id","","","vzip","","","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","","vzip","","expected"],"q":[[0,"iroh_base"],[191,"iroh_base::base32"],[254,"iroh_base::ticket"],[304,"iroh_base::ticket::Error"],[305,"iroh_base::key"],[306,"ed25519"],[307,"iroh_base::node_addr"],[308,"iroh_base::relay_url"],[309,"core::cmp"],[310,"core::result"],[311,"serde::de"],[312,"core::net::socket_addr"],[313,"core::iter::traits::iterator"],[314,"core::iter::traits::collect"],[315,"iroh_base::key::encryption"],[316,"core::fmt"],[317,"alloc::string"],[318,"ed25519_dalek::signature"],[319,"ed25519_dalek::verifying"],[320,"ed25519_dalek::errors"],[321,"ed25519_dalek::signing"],[322,"iroh_base::ticket::node"],[323,"core::option"],[324,"url"],[325,"signature::error"],[326,"rand_core"],[327,"core::marker"],[328,"core::hash"],[329,"aead"],[330,"anyhow"],[331,"serde::ser"],[332,"core::error"],[333,"zeroize"],[334,"ssh_key::error"],[335,"alloc::vec"],[336,"ssh_key::signature"],[337,"core::convert"],[338,"core::any"],[339,"data_encoding"],[340,"hex::error"],[341,"postcard::error"],[342,"ed25519_dalek::constants"]],"i":"nCb0`````````b0`Bj312A`AbAd3645210642106421064210410064210114464103666644552210043666644555222111100642616642022403645210111341026116364210225`66226421064520636666444522102364521036452104364521011Cj``0`Fl00001Fn12010101010`112200``122201200```0210120120120120120Gd`Gb1`1`1D`20200010000220022210002001021000202020202Gh","f":"````````````{{{d{b}}}{{d{{h{f}}}}}}{{{d{b}}}{{d{{j{f}}}}}}`{d{{d{c}}}{}}000000{{{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`}}}}}}}}}}`{dc{{Bf{Bd}}}}0{{{d{n}}{d{n}}}Bh}{{{d{b}}{d{b}}}Bh}{{{d{Ab}}{d{Ab}}}Bh}{{{d{Ad}}{d{Ad}}}Bh}{{{d{Bj}}{d{lBl}}}Bn}{{{d{n}}{d{lBl}}}{{Aj{AfC`}}}}000{{{d{b}}{d{lBl}}}Bn}0{{{d{Cb}}{d{lBl}}}Bn}0{{{d{A`}}{d{lBl}}}Bn}0{{{d{Ab}}{d{lBl}}}Bn}{{{d{Ad}}{d{lBl}}}Bn}0{{{d{b}}}Cd}{cc{}}{{{d{{h{f}}}}}n}{{{h{f}}}n}2{Cfn}{Chb}4{CjCb}{ClCb}66{CnA`}{{{h{f}}}A`}{D`Ab}{DbAb}:{{{Df{b{Dd{Ad}}{d{{j{B`}}}}}}}Ab}{DhAd}<;{{{d{{h{f}}}}}{{Aj{bCl}}}}{{{d{{h{f}}}}}A`}{{{h{f}}{h{f}}}n}{{b{Dd{Ad}}c}Ab{{Dj{}{{An{B`}}}}}}{{{d{{j{f}}}}}{{Aj{nDl}}}}{{{d{Dn}}}{{Aj{nDl}}}}{{{d{Dn}}}{{Aj{bc}}}{}}{{{d{Dn}}}{{Aj{A`c}}}{}}{{{d{Dn}}}{{Aj{Adc}}}{}}{{}A`}{{{d{lc}}}A`{E`Eb}}{{{d{b}}{d{lc}}}AfEd}{{{d{Ad}}{d{lc}}}AfEd}{{}c{}}000000{{{d{Ab}}}Bh}{bAb}`{{{d{Bj}}{d{lEf}}}{{Eh{Af}}}}{{{d{b}}{d{b}}}{{Dd{Ah}}}}{{{d{Ab}}{d{Ab}}}{{Dd{Ah}}}}{{{d{Ad}}{d{Ad}}}{{Dd{Ah}}}}{{{d{A`}}}b}{{{d{n}}}{{d{{h{f}}}}}}{{{d{Ab}}}{{Dd{{d{Ad}}}}}}`1{{{d{Bj}}{d{lEf}}}Af}{{{d{n}}c}AjEj}{{{d{b}}c}AjEj}{{{d{A`}}c}AjEj}{{{d{Ab}}c}AjEj}{{{d{Ad}}c}AjEj}{{{d{A`}}{d{b}}}Bj}{{{d{A`}}{d{{j{f}}}}}n}{{{d{Cb}}}{{Dd{{d{El}}}}}}`{{{d{n}}}{{h{f}}}}0{{{d{A`}}}{{h{f}}}}{{{d{A`}}}{{F`{{En{Cd}}}}}}{dc{}}0000{dCd}0000{{{d{n}}}{{Fb{f}}}}{c{{Aj{e}}}{}{}}0{{{d{{j{f}}}}}{{Aj{nDl}}}}{{{d{Fd}}}{{Aj{nFf}}}}{Fd{{Aj{nFf}}}}3{{{d{{j{f}}}}}{{Aj{bc}}}{}}{{{d{{h{f}}}}}{{Aj{bc}}}{}}5{{{d{{j{f}}}}}{{Aj{A`c}}}{}}666{c{{Eh{A`}}}{{Fh{{j{f}}}}}}{{}{{Aj{c}}}{}}000000{dFj}000000{{{d{b}}{d{{j{f}}}}{d{n}}}{{Aj{AfCl}}}}{{}c{}}000000{{Abc}Ab{{Dj{}{{An{B`}}}}}}{{AbAd}Ab}`````````{d{{d{c}}}{}}00{{{d{l}}}{{d{lc}}}{}}00{{{d{Fl}}}Fl}{{{d{Fn}}}Fn}{{d{d{lc}}}Af{}}0{{df}Af}0{{{d{Fl}}{d{Fl}}}Bh}{{{d{Fn}}{d{Fn}}}Bh}{cCd{{Fh{{j{f}}}}}}{{{d{Fl}}{d{lBl}}}{{Aj{AfC`}}}}0{{{d{Cj}}{d{lBl}}}Bn}0{{{d{Fn}}{d{lBl}}}{{Aj{AfC`}}}}0{{c{d{lCd}}}Af{{Fh{{j{f}}}}}}4{cc{}}0{G`Cj}{FnCj}2{{}c{}}00`{{{d{Dn}}}{{Aj{{h{f}}Fn}}}}{{{d{Dn}}}{{Aj{{h{f}}Cj}}}}{{{d{Dn}}}{{Aj{{Fb{f}}Fn}}}}`{{{d{Cj}}}{{Dd{{d{El}}}}}}{dc{}}0{dCd}00{c{{Aj{e}}}{}{}}00{{}{{Aj{c}}}{}}00{dFj}00{{}c{}}00````````{d{{d{c}}}{}}0{{{d{l}}}{{d{lc}}}{}}0{{{d{D`}}}D`}{{d{d{lc}}}Af{}}{{df}Af}{{{d{Dn}}}{{Aj{GbGd}}}}{c{{Eh{D`}}}Al}{{{d{D`}}{d{D`}}}Bh}{{{d{D`}}{d{lBl}}}Bn}0{{{d{Gd}}{d{lBl}}}Bn}0{cc{}}{AbD`}{FnGd}{GfGd}3{{{d{{j{f}}}}}{{Aj{GbGd}}}}{{{d{{j{f}}}}}{{Aj{D`Gd}}}}{{{d{Dn}}}{{Eh{D`c}}}{}}{{}c{}}06{{{d{D`}}}{{d{Ab}}}}{{{d{Gb}}}Cd}{{{d{D`}}c}EhEj}{{{d{Gd}}}{{Dd{{d{El}}}}}}{{{d{Gb}}}{{Fb{f}}}}{{{d{D`}}}{{Fb{f}}}}{dc{}}{dCd}0{c{{Aj{e}}}{}{}}0{{}{{Aj{c}}}{}}0{dFj}0{{}c{}}0`","D":"Ll","p":[[5,"PublicKey",0,305],[1,"reference",null,null,1],[1,"u8"],[1,"array"],[1,"slice"],[0,"mut"],[5,"Signature",0,306],[5,"SecretKey",0,305],[5,"NodeAddr",0,307],[5,"RelayUrl",0,308],[1,"unit"],[6,"Ordering",309],[6,"Result",310,null,1],[10,"Deserializer",311],[17,"Item"],[6,"SocketAddr",312],[10,"Iterator",313],[1,"char"],[10,"FromIterator",314],[1,"bool"],[5,"SharedSecret",0,315],[5,"Formatter",316],[8,"Result",316],[5,"Error",316],[6,"KeyParsingError",0,305],[5,"String",317],[5,"InternalSignature",318],[5,"VerifyingKey",319],[6,"HexOrBase32ParseError",191],[8,"SignatureError",320],[5,"SigningKey",321],[5,"NodeTicket",254,322],[8,"NodeId",0,305],[6,"Option",323,null,1],[1,"tuple",null,null,1],[5,"Url",324],[10,"IntoIterator",314],[5,"Error",325],[1,"str"],[10,"CryptoRngCore",326],[10,"Sized",327],[10,"Hasher",328],[10,"Buffer",329],[8,"Result",330],[10,"Serializer",331],[10,"Error",332],[5,"Zeroizing",333],[8,"Result",334],[5,"Vec",335],[5,"Signature",336],[6,"Error",334],[10,"AsRef",337],[5,"TypeId",338],[6,"DecodeKind",191,339],[5,"DecodeError",191,339],[6,"FromHexError",340],[10,"Ticket",254],[6,"Error",254],[6,"Error",341],[15,"Kind",304]],"r":[[3,305],[4,307],[5,305],[6,342],[7,305],[8,308],[9,305],[10,315],[11,306],[192,339],[193,339],[258,322]],"b":[[62,"impl-LowerHex-for-Signature"],[63,"impl-UpperHex-for-Signature"],[64,"impl-Debug-for-Signature"],[65,"impl-Display-for-Signature"],[66,"impl-Display-for-PublicKey"],[67,"impl-Debug-for-PublicKey"],[68,"impl-Debug-for-KeyParsingError"],[69,"impl-Display-for-KeyParsingError"],[70,"impl-Debug-for-SecretKey"],[71,"impl-Display-for-SecretKey"],[73,"impl-Debug-for-RelayUrl"],[74,"impl-Display-for-RelayUrl"],[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"],[80,"impl-From%3CInternalSignature%3E-for-Signature"],[83,"impl-From%3CHexOrBase32ParseError%3E-for-KeyParsingError"],[84,"impl-From%3CError%3E-for-KeyParsingError"],[87,"impl-From%3CSigningKey%3E-for-SecretKey"],[88,"impl-From%3C%5Bu8;+32%5D%3E-for-SecretKey"],[89,"impl-From%3CNodeTicket%3E-for-NodeAddr"],[90,"impl-From%3CPublicKey%3E-for-NodeAddr"],[92,"impl-From%3C(PublicKey,+Option%3CRelayUrl%3E,+%26%5BSocketAddr%5D)%3E-for-NodeAddr"],[138,"impl-SignatureEncoding-for-Signature"],[139,"impl-Signature"],[155,"impl-TryFrom%3C%26%5Bu8%5D%3E-for-Signature"],[156,"impl-TryFrom%3C%26Signature%3E-for-Signature"],[157,"impl-TryFrom%3CSignature%3E-for-Signature"],[159,"impl-TryFrom%3C%26%5Bu8%5D%3E-for-PublicKey"],[160,"impl-TryFrom%3C%26%5Bu8;+32%5D%3E-for-PublicKey"],[215,"impl-Display-for-DecodeKind"],[216,"impl-Debug-for-DecodeKind"],[217,"impl-Display-for-HexOrBase32ParseError"],[218,"impl-Debug-for-HexOrBase32ParseError"],[219,"impl-Debug-for-DecodeError"],[220,"impl-Display-for-DecodeError"],[225,"impl-From%3CFromHexError%3E-for-HexOrBase32ParseError"],[226,"impl-From%3CDecodeError%3E-for-HexOrBase32ParseError"],[272,"impl-Debug-for-NodeTicket"],[273,"impl-Display-for-NodeTicket"],[274,"impl-Debug-for-Error"],[275,"impl-Display-for-Error"],[278,"impl-From%3CDecodeError%3E-for-Error"],[279,"impl-From%3CError%3E-for-Error"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAMsAGwAOACcAOAATAE4AAQBRAAEAVAABAFgAAQBbAAAAXQABAGYAAwBsAAEAeQACAIIABACJAAIAjwAJAJoADACoAA0AtwAGAMkADQDYAAUA4gABAO0AEQAHAQYADwEFABcBAQAbAQEAIgEBACUBDAA=","P":[[15,"T"],[29,""],[34,"T"],[39,""],[47,"Deref::Target"],[48,"D"],[51,"__D"],[53,""],[55,"U"],[57,""],[76,"T"],[77,""],[79,"T"],[80,""],[82,"T"],[83,""],[85,"T"],[87,""],[91,"T"],[92,""],[94,"T"],[95,""],[99,""],[100,""],[102,"FromStr::Err"],[105,""],[106,"R"],[107,"H"],[108,"__H"],[109,"U"],[116,""],[129,"S"],[132,"__S"],[134,""],[142,"T"],[147,""],[153,"U,T"],[155,""],[158,"U,T"],[159,"TryFrom::Error"],[161,"U,T"],[162,"TryFrom::Error"],[163,"U,T"],[166,"T"],[167,"U"],[174,""],[182,"V"],[189,""],[190,""],[200,"T"],[206,""],[208,"T"],[210,""],[214,""],[215,""],[221,""],[223,"T"],[225,""],[227,"T"],[228,"U"],[232,""],[237,"T"],[239,""],[242,"U,T"],[245,"U"],[248,""],[251,"V"],[262,"T"],[266,""],[267,"T"],[268,""],[270,"D"],[271,""],[276,"T"],[277,""],[280,"T"],[281,""],[283,"FromStr::Err"],[284,"U"],[286,""],[289,"S"],[290,""],[293,"T"],[294,""],[296,"U,T"],[298,"U"],[300,""],[302,"V"]]}],["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":"FFFFFFNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNOOOOONNNNNNNNNNNNOOOONNOONNHOOONOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNONNNNNN","n":["Addr","Client","Metrics","QuicConfig","RelayLatencies","Report","addr","borrow","","","","","","borrow_mut","","","","","","captive_portal","client_config","clone","","","","","clone_into","","","","","clone_to_uninit","","","","","default","","","deref","","","","","","deref_mut","","","","","","drop","","","","","","ep","eq","","equivalent","","","","","","fmt","","","","","","","from","","","","","","get_report","get_report_channel","global_v4","global_v6","hair_pinning","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","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","to_owned","","","","","to_string","try_from","","","","","","try_into","","","","","","type_id","","","","","","udp","vzip","","","","",""],"q":[[0,"iroh_net_report"],[154,"iroh_net_report::metrics"],[155,"iroh_net_report::reportgen"],[156,"core::fmt"],[157,"iroh_relay::relay_map"],[158,"netwatch::udp"],[159,"alloc::sync"],[160,"core::option"],[161,"anyhow"],[162,"tokio::sync::oneshot"],[163,"core::any"],[164,"alloc::vec::into_iter"],[165,"iroh_base::relay_url"],[166,"core::time"],[167,"core::iter::traits::iterator"],[168,"portmapper"],[169,"hickory_resolver::resolver"],[170,"bytes::bytes"],[171,"core::net::socket_addr"],[172,"alloc::string"],[173,"core::result"]],"i":"``````bjlnA`4f43215023432104321043210421432150432150432150321222111432215043215055222224321504321502222412245`222022244444444321024321504321504321502432150","f":"``````{{{d{b}}}f}{d{{d{c}}}{}}00000{{{d{h}}}{{d{hc}}}{}}00000``{{{d{j}}}j}{{{d{l}}}l}{{{d{n}}}n}{{{d{A`}}}A`}{{{d{f}}}f}{{d{d{hc}}}Ab{}}0000{{dAd}Ab}0000{{}j}{{}n}{{}A`}{Af{{d{c}}}{}}00000{Af{{d{hc}}}{}}00000{AfAb}00000`{{{d{n}}{d{n}}}Ah}{{{d{A`}}{d{A`}}}Ah}{{d{d{c}}}Ah{}}00000{{{d{j}}{d{hAj}}}Al}{{{d{l}}{d{hAj}}}Al}{{{d{n}}{d{hAj}}}Al}0{{{d{A`}}{d{hAj}}}Al}{{{d{b}}{d{hAj}}}Al}{{{d{f}}{d{hAj}}}Al}{cc{}}00000{{{d{hb}}An{Bd{{Bb{B`}}}}{Bd{{Bb{B`}}}}{Bd{l}}}{{Bf{{Bb{n}}}}}}{{{d{hb}}An{Bd{{Bb{B`}}}}{Bd{{Bb{B`}}}}{Bd{l}}}{{Bf{{Bh{{Bf{{Bb{n}}}}}}}}}}`````{{}Af}00000{{}c{}}00000````{{{d{j}}}{{C`{{Bn{{d{Bj}}{d{Bl}}}}}}}}{{{d{A`}}}{{`{{Ch{}{{Cb{{Bn{{d{Cd}}Cf}}}}}}}}}}``{{}{{d{Bj}}}}{{{Bd{Cj}}Cl}{{Bf{b}}}}{{}Ah}```{{{d{f}}CnD`}Ab}``````````{dc{}}0000{dDb}{c{{Dd{e}}}{}{}}00000{{}{{Dd{c}}}{}}00000{dDf}00000`{{}c{}}00000","D":"En","p":[[5,"Client",0],[1,"reference",null,null,1],[5,"Addr",0],[0,"mut"],[5,"Metrics",0,154],[5,"QuicConfig",0,155],[5,"Report",0],[5,"RelayLatencies",0],[1,"unit"],[1,"u8"],[1,"usize"],[1,"bool"],[5,"Formatter",156],[8,"Result",156],[5,"RelayMap",157],[5,"UdpSocket",158],[5,"Arc",159,null,1],[6,"Option",160,null,1],[8,"Result",161],[5,"Receiver",162],[1,"str"],[10,"Any",163],[1,"tuple",null,null,1],[5,"IntoIter",164],[17,"Item"],[5,"RelayUrl",165],[5,"Duration",166],[10,"Iterator",167],[5,"Client",168],[8,"TokioResolver",169],[5,"Bytes",170],[6,"SocketAddr",171],[5,"String",172],[6,"Result",173,null,1],[5,"TypeId",163]],"r":[[2,154],[3,155]],"b":[[68,"impl-Debug-for-Report"],[69,"impl-Display-for-Report"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAGsACAAIAAsAFgAjADsADgBXAAUAZwAAAGsAAAB1AB4AlQAFAA==","P":[[7,"T"],[21,""],[26,"T"],[31,""],[39,"T"],[51,""],[60,"K"],[66,""],[73,"T"],[79,""],[92,"U"],[102,""],[123,"T"],[128,""],[129,"U,T"],[135,"U"],[141,""],[148,"V"]]}],["iroh_relay",{"t":"PEEEEPEPPPGPFFFFPNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNOCCONNNNNCOONNNNNNNNNNNNNNNNNNNNNNONNNNNNOOOOOPPFFGFPPPPPPPPPPPPPPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNSSSSSGSSPPNNNNNNNNNNNNNNNNNNNNNNNCCCSHSPGPPPPPPPPGFPPPPPPPPPPPGFPFPPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNCHHNHHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNSSSSSSFNNNNNNNNNNNNNNNGFPFPGFPFFFFFFPFOOOOOONNNNNNNNNNNNNNNNNNNNNNNNOOOONONNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOONNNNNNNNNNNNONNNNNNNNNNNNONNNNNNNNNNNNONONNONNNNNNNNNNNNNNNNNNNNNNNNNOONNOOONNOOONNNNNONOOOOOOOOONNONNCONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNOOOHHHHHH","n":["Health","HttpClient","HttpClientBuilder","HttpClientError","HttpClientReceiver","KeepAlive","MAX_PACKET_SIZE","NodeGone","Ping","Pong","ReceivedMessage","ReceivedPacket","RelayConn","RelayMap","RelayNode","RelayQuicConfig","ServerRestarting","borrow","","","","","borrow_mut","","","","","client","clone","","","","","clone_into","","","","","clone_to_uninit","","","","","close","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_closed","is_empty","len","local_addr","nodes","note_preferred","partial_cmp","","port","protos","quic","","send","send_ping","send_pong","serialize","","server","stun_only","stun_port","to_owned","","","","","to_string","","try_from","","","","","try_into","","","","","type_id","","","","","url","urls","vzip","","","","","data","problem","reconnect_in","remote_node_id","try_for","ActorGone","Build","Client","ClientBuilder","ClientError","ClientReceiver","Closed","ConnectTimeout","DialIO","Dns","Http","Hyper","IPDisabled","InvalidUrl","NoLocalAddr","PingAborted","PingTimeout","Proxy","Receive","Send","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","","","","fmt","","","","","from","","","","","","","","init","","","","insecure_skip_cert_verify","into","","","","is_connected","is_preferred","is_prober","local_addr","make_dangerous_client_config","new","note_preferred","ping","protocol","proxy_url","public_key","recv","send","send_pong","server_public_key","server_url","source","to_owned","to_string","try_from","","","","try_into","","","","type_id","","","","vzip","","","","DEFAULT_HTTPS_PORT","DEFAULT_HTTP_PORT","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","","","","","","encode_hex","encode_hex_upper","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","LetsEncrypt","Limits","Manual","MaybeTlsStreamServer","Metrics","Plain","QuicConfig","RelayConfig","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","","","","","","","","","","","","derp_accepts","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","","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","requests","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"],[161,"iroh_relay::ReceivedMessage"],[166,"iroh_relay::client"],[274,"iroh_relay::defaults"],[279,"iroh_relay::http"],[307,"iroh_relay::protos"],[310,"iroh_relay::protos::disco"],[312,"iroh_relay::protos::relay"],[313,"iroh_relay::protos::stun"],[540,"iroh_relay::protos::stun::methods"],[543,"iroh_relay::quic"],[562,"iroh_relay::server"],[815,"iroh_relay::server::CertConfig"],[817,"iroh_relay::server::testing"],[823,"iroh_relay::client::conn"],[824,"iroh_relay::relay_map"],[825,"core::cmp"],[826,"iroh_base::relay_url"],[827,"core::result"],[828,"serde::de"],[829,"core::fmt"],[830,"anyhow"],[831,"alloc::sync"],[832,"core::convert"],[833,"core::iter::traits::collect"],[834,"core::option"],[835,"core::net::socket_addr"],[836,"core::iter::traits::iterator"],[837,"iroh_base::key"],[838,"bytes::bytes"],[839,"serde::ser"],[840,"alloc::string"],[841,"core::any"],[842,"futures_lite::future"],[843,"core::ops::function"],[844,"core::marker"],[845,"hickory_resolver::resolver"],[846,"std::io::error"],[847,"hyper::error"],[848,"http::error"],[849,"tokio_tungstenite_wasm::error"],[850,"rustls::client::client_conn"],[851,"core::time"],[852,"url"],[853,"core::error"],[854,"http::header::value"],[855,"stun_rs::attributes"],[856,"stun_rs::attributes::stun::alternate_server"],[857,"stun_rs::error"],[858,"stun_rs::types"],[859,"stun_rs::attributes::stun::error_code"],[860,"stun_rs::attributes::stun::fingerprint"],[861,"stun_rs::attributes::stun::mapped_address"],[862,"stun_rs::attributes::stun::message_integrity"],[863,"stun_rs::attributes::stun::message_integrity_sha256"],[864,"stun_rs::attributes::stun::nonce"],[865,"stun_rs::attributes::stun::password_algorithm"],[866,"stun_rs::attributes::stun::password_algorithms"],[867,"stun_rs::attributes::stun::realm"],[868,"stun_rs::attributes::stun::software"],[869,"stun_rs::attributes::unknown"],[870,"stun_rs::attributes::stun::unknown_attributes"],[871,"stun_rs::attributes::stun::user_hash"],[872,"stun_rs::attributes::stun::user_name"],[873,"stun_rs::attributes::stun::xor_mapped_address"],[874,"stun_rs::context"],[875,"stun_rs::message"],[876,"core::hash"],[877,"alloc::vec"],[878,"iroh_quinn::endpoint"],[879,"rustls_pki_types"],[880,"iroh_relay::server::metrics"],[881,"core::default"],[882,"alloc::vec::into_iter"],[883,"core::pin"],[884,"core::task::wake"],[885,"core::task::poll"],[886,"tokio::io::read_buf"],[887,"std::io"],[888,"tokio_util::task::abort_on_drop"],[889,"rustls::server::server_conn"],[890,"stun_rs"],[891,"stun_rs::methods"]],"i":"h````0`000`0````0f1jln34210`34210342103421031010202`3421034210103421023210333222111000342211034210222`3421034210322323100``133310`1134210213421034210342101234210NhNjNl20Eh0````00000000000000000Db1EbEd23102211111131023102310233102333331023102231021221`211221011223133102310231023102````````Ff000000000000000000000000``````Gd`0In10Jj002``22020022212``1`222222Gj33333333303333333Il314Jb31425031425142514252211214225031425031425032242444222555555555555555514225003314222555555555555555550312142503142503`5555555555555555```2``14252031442503142503142503142503```````Kb00000000000000``Mb`0``Lh``````0`Lf0KjKlLlLn325L`Lj32M`7Kn:Kf87:4365291;01882098718718718874987:4365291;087:4365291;08888887:4365291;0787:4365291;0887:4365291;0803002087:4365291;087:4365291;0778731487888:::::4024788885200400`387187:4365291;087:4365291;087:4365291;08887:4365291;08NnO```````","f":"`````````````````{b{{b{c}}}{}}0000{{{b{d}}}{{b{dc}}}{}}0000`{{{b{f}}}f}{{{b{h}}}h}{{{b{j}}}j}{{{b{l}}}l}{{{b{n}}}n}{{b{b{dc}}}A`{}}0000{{bAb}A`}0000{{{b{f}}}A`}{{{b{l}}{b{l}}}Ad}{{{b{n}}{b{n}}}Ad}{{b{b{c}}}Ad{}}0{{{b{j}}{b{Af}}}Ah}{{}n}{{AfAj}j}`{Al{{b{c}}}{}}0000{Al{{b{dc}}}{}}0000{c{{An{l}}}B`}{c{{An{n}}}B`}{AlA`}0000{{}j}{{{b{f}}{b{f}}}Ah}{{{b{j}}{b{j}}}Ah}{{{b{l}}{b{l}}}Ah}{{{b{n}}{b{n}}}Ah}{{b{b{c}}}Ah{}}00000000000{{{b{f}}{b{dBb}}}Bd}{{{b{h}}{b{dBb}}}Bd}{{{b{j}}{b{dBb}}}Bd}0{{{b{l}}{b{dBb}}}Bd}0{{{b{n}}{b{dBb}}}Bd}{cc{}}0000{e{{Bf{j}}}{{Bj{{Bh{l}}}}}{{Bn{}{{Bl{c}}}}}}{Afj}{{{b{j}}{b{Af}}}{{C`{{b{{Bh{l}}}}}}}}`{{}Al}0000{{}c{}}0000{{{b{f}}}Ah}{{{b{j}}}Ah}{{{b{j}}}Al}{{{b{f}}}{{C`{Cb}}}}{{{b{j}}}{{`{{Cd{}{{Bl{{b{{Bh{l}}}}}}}}}}}}{{{b{f}}Ah}{{Bf{A`}}}}{{{b{l}}{b{l}}}{{C`{Ad}}}}{{{b{n}}{b{n}}}{{C`{Ad}}}}````{{{b{f}}CfCh}{{Bf{A`}}}}{{{b{f}}{Cj{Ab}}}{{Bf{A`}}}}0{{{b{l}}c}AnCl}{{{b{n}}c}AnCl}```{bc{}}0000{bCn}0{c{{An{e}}}{}{}}0000{{}{{An{c}}}{}}0000{bD`}0000`{{{b{j}}}{{`{{Cd{}{{Bl{{b{Af}}}}}}}}}}{{}c{}}0000````````````````````````````{{Dbc}Db{{Dh{}{{Dd{{Df{Ah}}}}}}DjDl}}{b{{b{c}}}{}}000{{{b{d}}}{{b{dc}}}{}}000{{DbDnE`}{{Ef{EbEd}}}}{{{b{Eb}}}Eb}{{b{b{dc}}}A`{}}{{bAb}A`}{Eb{{An{A`Eh}}}}{{{b{Eb}}}{{An{A`Eh}}}}{{{b{Eb}}}{{An{fEh}}}}{Al{{b{c}}}{}}000{Al{{b{dc}}}{}}000{AlA`}000{{{b{Eh}}{b{dBb}}}Bd}0{{{b{Eb}}{b{dBb}}}Bd}{{{b{Ed}}{b{dBb}}}Bd}{{{b{Db}}{b{dBb}}}Bd}{EjEh}{ElEh}{cc{}}{EnEh}{F`Eh}222{{}Al}000{{DbAh}Db}{{}c{}}000{{{b{Eb}}}{{An{AhEh}}}}22{{{b{Eb}}}{{C`{Cb}}}}{{}Fb}{cDb{{Bj{Af}}}}{{{b{Eb}}Ah}A`}{{{b{Eb}}}{{An{FdEh}}}}{{DbFf}Db}{{DbFh}Db}{{{b{Eb}}}Fj}{{{b{dEd}}}{{C`{{An{hEh}}}}}}{{{b{Eb}}FjCh}{{An{A`Eh}}}}{{{b{Eb}}{Cj{Ab}}}{{An{A`Eh}}}}{{DbFj}Db}{{Dbc}Db{{Bj{Af}}}}{{{b{Eh}}}{{C`{{b{Fl}}}}}}{bc{}}{bCn}{c{{An{e}}}{}{}}000{{}{{An{c}}}{}}000{bD`}000{{}c{}}000``````````{b{{b{c}}}{}}{{{b{d}}}{{b{dc}}}{}}{{{b{Ff}}}Ff}{{b{b{dc}}}A`{}}{{bAb}A`}{Al{{b{c}}}{}}{Al{{b{dc}}}{}}{AlA`}{{{b{Ff}}{b{Ff}}}Ah}{{b{b{c}}}Ah{}}00{{{b{Ff}}{b{dBb}}}Bd}{cc{}}{{}Al}{{}c{}}{{{b{Fn}}}{{C`{Ff}}}}{bc{}}{c{{An{e}}}{}{}}{{}{{An{c}}}{}}{bD`}{{{b{Ff}}}{{b{G`}}}}{{}c{}}````{{{b{{Gb{Ab}}}}}Ah}`````````````````````````````````{{{b{Gd}}}{{An{{b{Gf}}Gh}}}}{{{b{Gj}}}{{b{{Cj{Ab}}}}}}{{{b{Gd}}}{{An{{b{Gl}}Gh}}}}{{{b{Gd}}}{{An{{b{Gn}}Gh}}}}{{{b{Gd}}}{{An{{b{H`}}Gh}}}}{{{b{Gd}}}{{An{{b{Hb}}Gh}}}}{{{b{Gd}}}{{An{{b{Hd}}Gh}}}}{{{b{Gd}}}{{An{{b{Hf}}Gh}}}}{{{b{Gd}}}{{An{{b{Hh}}Gh}}}}{{{b{Gd}}}{{An{{b{Hj}}Gh}}}}{{{b{Gd}}}{{An{{b{Hl}}Gh}}}}{{{b{Gj}}}{{b{{Gb{Ab}}}}}}{{{b{Gd}}}{{An{{b{Hn}}Gh}}}}{{{b{Gd}}}{{An{{b{I`}}Gh}}}}{{{b{Gd}}}{{An{{b{Ib}}Gh}}}}{{{b{Gd}}}{{An{{b{Id}}Gh}}}}{{{b{Gd}}}{{An{{b{If}}Gh}}}}{{{b{Gd}}}{{An{{b{Ih}}Gh}}}}{{{b{Gd}}}Ij}{b{{b{c}}}{}}00000{{{b{d}}}{{b{dc}}}{}}00000{{{b{Il}}}Il}{{{b{In}}}In}{{{b{Gj}}}Gj}{{{b{Gd}}}Gd}{{b{b{dc}}}A`{}}000{{bAb}A`}000{{{b{Gj}}{b{Gj}}}Ad}{{b{b{c}}}Ad{}}{{{b{Il}}{b{{Gb{Ab}}}}}{{An{{Ef{J`Al}}Jb}}}}{{}Il}{{}Gj}{Al{{b{c}}}{}}00{{{b{Gj}}}{{b{{Gb{Ab}}}}}}111{Al{{b{dc}}}{}}00000{AlA`}00000{bc{{Jf{Jd}}}}0{{{b{In}}{b{In}}}Ah}{{{b{Gj}}{b{Gj}}}Ah}{{b{b{c}}}Ah{}}00000{{{b{Gd}}}{{b{Gf}}}}{{{b{Gd}}}{{b{Gl}}}}{{{b{Gd}}}{{b{Gn}}}}{{{b{Gd}}}{{b{H`}}}}{{{b{Gd}}}{{b{Hb}}}}{{{b{Gd}}}{{b{Hd}}}}{{{b{Gd}}}{{b{Hf}}}}{{{b{Gd}}}{{b{Hh}}}}{{{b{Gd}}}{{b{Hj}}}}{{{b{Gd}}}{{b{Hl}}}}{{{b{Gd}}}{{b{Hn}}}}{{{b{Gd}}}{{b{I`}}}}{{{b{Gd}}}{{b{Ib}}}}{{{b{Gd}}}{{b{Id}}}}{{{b{Gd}}}{{b{If}}}}{{{b{Gd}}}{{b{Ih}}}}{{{b{Il}}{b{dBb}}}{{An{A`Jh}}}}{{{b{In}}{b{dBb}}}{{An{A`Jh}}}}{{{b{Gj}}{b{dBb}}}{{An{A`Jh}}}}0{{{b{Gd}}{b{dBb}}}{{An{A`Jh}}}}{{{b{Jb}}{b{dBb}}}{{An{A`Jh}}}}0{{{b{Jj}}{b{dBb}}}Bd}0{cc{}}0{{{Cj{Ab}}}Gj}{{{b{{Cj{Ab}}}}}Gj}2{HfGd}{HlGd}{I`Gd}{GfGd}{GlGd}7{GnGd}{H`Gd}{HbGd}{HdGd}{HhGd}{IhGd}{IfGd}{HjGd}{IbGd}{HnGd}{IdGd}{cc{}}0{{{b{Il}}}{{C`{{b{Jl}}}}}}{{{b{Gj}}{b{dc}}}A`Jn}{{}Al}00000{{}c{}}00000{{{b{{Gb{Ab}}}}}Ah}{{{b{Gd}}}Ah}000000000000000`{{{b{{Gb{Ab}}}}}{{An{GjJj}}}}{{{b{{Gb{Ab}}}}}{{An{{Ef{GjCb}}Jj}}}}{{{b{Gj}}{b{Gj}}}{{C`{Ad}}}}{Gj{{K`{Ab}}}}{{GjCb}{{K`{Ab}}}}{bc{}}000{bCn}00{c{{An{e}}}{}{}}{Ab{{An{In}}}}11111{{}{{An{c}}}{}}00000{bD`}00000{{}c{}}00000```````{b{{b{c}}}{}}{{{b{d}}}{{b{dc}}}{}}{Al{{b{c}}}{}}{Al{{b{dc}}}{}}{AlA`}{{{b{Kb}}{b{dBb}}}Bd}{cc{}}{{{b{Kb}}Cb{b{G`}}}{{Bf{{Ef{CbFd}}}}}}{{}Al}{{}c{}}{{KdFb}{{Bf{Kb}}}}?=<;``````````````````````::::::::::::999999999999````{{{b{Kf}}}{{C`{{K`{Kh}}}}}}`{{{b{Kj}}}Kj}{{{b{Kl}}}Kl}{{{b{Kn}}}Kn}{{b{b{dc}}}A`{}}00{{bAb}A`}00`{{}Kj}{{}Kl}{{}{{L`{ce}}}{LbLd}{LbLd}}{{}Lf}{Al{{b{c}}}{}}00000000000{Al{{b{dc}}}{}}00000000000`````{AlA`}00000000000`{{{b{Kj}}{b{dBb}}}Bd}{{{b{Kl}}{b{dBb}}}Bd}{{{b{Lh}}{b{dBb}}}Bd}{{{b{{L`{ce}}}}{b{dBb}}}BdLdLd}{{{b{{Lj{ce}}}}{b{dBb}}}BdLdLd}{{{b{Ll}}{b{dBb}}}Bd}{{{b{Ln}}{b{dBb}}}Bd}{{{b{{M`{ce}}}}{b{dBb}}}BdLdLd}{{{b{Lf}}{b{dBb}}}Bd}{{{b{Kn}}{b{dBb}}}Bd}{{{b{{Mb{ce}}}}{b{dBb}}}BdLdLd}{{{b{Kf}}{b{dBb}}}Bd}`{cc{}}00000000000`{{{b{Kf}}}{{C`{Cb}}}}`{{{b{Kf}}}{{C`{Af}}}}1`0{{}Al}00000000000{{}c{}}00000000000``{{{b{Kj}}}{{Mf{{Ef{{b{G`}}{b{Md}}}}}}}}{{{b{Kl}}}{{Mf{{Ef{{b{G`}}{b{Md}}}}}}}}```{{}{{b{G`}}}}0```{{{Mh{{b{dLh}}}}{b{dMj}}}{{Ml{{An{A`Ej}}}}}}{{{Mh{{b{dLh}}}}{b{dMj}}{b{dMn}}}{{Ml{{N`{A`}}}}}}1{{{Mh{{b{dLh}}}}{b{dMj}}{b{{Gb{Ab}}}}}{{Ml{{An{AlEj}}}}}}{{{Mh{{b{dLh}}}}{b{dMj}}{b{{Gb{Nb}}}}}{{Ml{{An{AlEj}}}}}}`:`````````{Kf{{Bf{A`}}}}{{{L`{ce}}}{{Bf{Kf}}}LdLd}`<{{{b{dKf}}}{{b{d{Nd{{Bf{A`}}}}}}}}``{bc{}}00{c{{An{e}}}{}{}}00000000000{{}{{An{c}}}{}}00000000000{bD`}00000000000``{{}c{}}00000000000```{{}Ln}{{}{{Lj{A`}}}}{{}{{Ef{{K`{Kh}}Nf}}}}{{}{{L`{A`}}}}{{}Ll}{{}{{M`{A`}}}}","D":"BKf","p":[[1,"reference",null,null,1],[0,"mut"],[5,"RelayConn",0],[6,"ReceivedMessage",0,823],[5,"RelayMap",0,824],[5,"RelayNode",0,824],[5,"RelayQuicConfig",0,824],[1,"unit"],[1,"u8"],[6,"Ordering",825],[5,"RelayUrl",826],[1,"bool"],[1,"u16"],[1,"usize"],[6,"Result",827,null,1],[10,"Deserializer",828],[5,"Formatter",829],[8,"Result",829],[8,"Result",830],[5,"Arc",831,null,1],[10,"Into",832],[17,"Item"],[10,"IntoIterator",833],[6,"Option",834,null,1],[6,"SocketAddr",835],[10,"Iterator",836],[8,"NodeId",837],[5,"Bytes",838],[1,"array"],[10,"Serializer",839],[5,"String",840],[5,"TypeId",841],[5,"ClientBuilder",166],[17,"Output"],[8,"Boxed",842],[10,"Fn",843],[10,"Send",844],[10,"Sync",844],[5,"SecretKey",837],[8,"TokioResolver",845],[5,"Client",166],[5,"ClientReceiver",166],[1,"tuple",null,null,1],[6,"ClientError",166],[5,"Error",846],[5,"Error",847],[5,"Error",848],[6,"Error",849],[5,"ClientConfig",850],[5,"Duration",851],[6,"Protocol",279],[5,"Url",852],[5,"PublicKey",837],[10,"Error",853],[5,"HeaderValue",854],[1,"str"],[1,"slice"],[6,"StunAttribute",313,855],[5,"AlternateServer",856],[5,"StunError",857],[5,"TransactionId",313,858],[5,"ErrorCode",859],[6,"Fingerprint",860],[5,"MappedAddress",861],[6,"MessageIntegrity",862],[6,"MessageIntegritySha256",863],[5,"Nonce",864],[5,"PasswordAlgorithm",865],[5,"PasswordAlgorithms",866],[5,"Realm",867],[5,"Software",868],[5,"Unknown",869],[5,"UnknownAttributes",870],[5,"UserHash",871],[5,"UserName",872],[5,"XorMappedAddress",873],[5,"AttributeType",855],[5,"MessageDecoder",313,874],[6,"MessageClass",313,875],[5,"StunMessage",875],[5,"StunDecodeError",313,857],[1,"char"],[10,"FromIterator",833],[5,"Error",829],[6,"Error",313],[5,"DecoderContext",874],[10,"Hasher",876],[5,"Vec",877],[5,"QuicClient",543],[5,"Endpoint",878],[5,"Server",562],[5,"CertificateDer",879],[5,"Metrics",562,880],[5,"StunMetrics",562,880],[5,"ClientConnRateLimit",562],[5,"ServerConfig",562],[10,"Default",881],[10,"Debug",829],[5,"Limits",562],[6,"MaybeTlsStreamServer",562],[5,"RelayConfig",562],[5,"StunConfig",562],[5,"QuicConfig",562],[5,"TlsConfig",562],[6,"CertConfig",562],[10,"Any",841],[5,"IntoIter",882],[5,"Pin",883],[5,"Context",884],[6,"Poll",885],[5,"ReadBuf",886],[8,"Result",846],[5,"IoSlice",887],[5,"AbortOnDropHandle",888],[5,"ServerConfig",889],[15,"ReceivedPacket",161],[15,"Health",161],[15,"ServerRestarting",161],[15,"Manual",815],[15,"LetsEncrypt",815]],"r":[[6,312],[10,823],[13,824],[14,824],[15,824],[323,875],[324,874],[336,855],[337,857],[339,858],[502,890],[540,891],[541,891],[542,891],[568,880],[575,880]],"b":[[88,"impl-Debug-for-RelayMap"],[89,"impl-Display-for-RelayMap"],[90,"impl-Debug-for-RelayNode"],[91,"impl-Display-for-RelayNode"],[217,"impl-Display-for-ClientError"],[218,"impl-Debug-for-ClientError"],[222,"impl-From%3CError%3E-for-ClientError"],[223,"impl-From%3CError%3E-for-ClientError"],[225,"impl-From%3CError%3E-for-ClientError"],[226,"impl-From%3CError%3E-for-ClientError"],[440,"impl-Debug-for-TransactionId"],[441,"impl-Display-for-TransactionId"],[443,"impl-Debug-for-StunDecodeError"],[444,"impl-Display-for-StunDecodeError"],[445,"impl-Display-for-Error"],[446,"impl-Debug-for-Error"],[449,"impl-From%3C%5Bu8;+stun_rs::::types::%7Bimpl%2314%7D::%7Bconstant%230%7D%5D%3E-for-TransactionId"],[450,"impl-From%3C%26%5Bu8;+stun_rs::::types::%7Bimpl%2313%7D::%7Bconstant%230%7D%5D%3E-for-TransactionId"],[452,"impl-From%3CNonce%3E-for-StunAttribute"],[453,"impl-From%3CRealm%3E-for-StunAttribute"],[454,"impl-From%3CUnknown%3E-for-StunAttribute"],[455,"impl-From%3CAlternateServer%3E-for-StunAttribute"],[456,"impl-From%3CErrorCode%3E-for-StunAttribute"],[458,"impl-From%3CFingerprint%3E-for-StunAttribute"],[459,"impl-From%3CMappedAddress%3E-for-StunAttribute"],[460,"impl-From%3CMessageIntegrity%3E-for-StunAttribute"],[461,"impl-From%3CMessageIntegritySha256%3E-for-StunAttribute"],[462,"impl-From%3CPasswordAlgorithm%3E-for-StunAttribute"],[463,"impl-From%3CXorMappedAddress%3E-for-StunAttribute"],[464,"impl-From%3CUserName%3E-for-StunAttribute"],[465,"impl-From%3CPasswordAlgorithms%3E-for-StunAttribute"],[466,"impl-From%3CUnknownAttributes%3E-for-StunAttribute"],[467,"impl-From%3CSoftware%3E-for-StunAttribute"],[468,"impl-From%3CUserHash%3E-for-StunAttribute"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAANwBMAACAAMABwAAABIACQAdAA4ALQADADIAAAA1ABAARwAWAGcABAB3AAEAgAABAIUAFQCdAAQAvwAHAMgAAgDOABIA4gABAOcAAwAAARIAHQEMACsBAAAuAQMAMwEAAGUBAABtARkAiAEAAIoBHAC3AQgAwgEBAMUBBADLAQoA2QEGAPoBAAD9AR8AJAIFACwCAAAvAgMASQIXAGcCCABxAhsAkgILAJ8CCwC/AgsA2QIBAN4CAQDjAgQA+gImACMDCwA=","P":[[17,"T"],[28,""],[33,"T"],[38,""],[46,"K"],[48,""],[52,"T"],[62,"__D"],[64,""],[74,"K"],[86,""],[93,"T"],[98,"I,"],[99,""],[107,"U"],[112,""],[127,"__S"],[132,"T"],[137,""],[139,"U,T"],[144,"U"],[149,""],[156,"V"],[189,"S"],[190,"T"],[198,""],[200,"T"],[201,""],[205,"T"],[213,""],[224,"T"],[225,""],[227,"T"],[230,""],[235,"U"],[239,""],[244,""],[245,""],[254,""],[255,""],[256,"T"],[257,""],[258,"U,T"],[262,"U"],[266,""],[270,"V"],[284,"T"],[286,""],[287,"T"],[288,""],[289,"T"],[291,""],[293,"K"],[296,""],[297,"T"],[298,""],[299,"U"],[300,""],[301,"T"],[302,"U,T"],[303,"U"],[304,""],[306,"V"],[311,""],[364,"T"],[376,""],[380,"T"],[384,""],[389,"K"],[390,""],[393,"T"],[396,""],[397,"T"],[406,""],[412,"U"],[414,""],[416,"K"],[422,""],[447,"T"],[449,""],[451,"T"],[452,""],[457,"T"],[458,""],[469,"T"],[471,""],[472,"__H"],[473,""],[479,"U"],[485,""],[508,"T"],[512,""],[515,"U,T"],[516,""],[517,"U,T"],[522,"U"],[528,""],[534,"V"],[547,"T"],[551,""],[553,"T"],[554,""],[556,"U"],[557,""],[558,"U,T"],[559,"U"],[560,""],[561,"V"],[584,"T"],[612,""],[617,"T"],[620,""],[626,"EC,EA"],[627,""],[628,"T"],[657,""],[673,"EC,EA"],[675,""],[677,"EC,EA"],[678,""],[680,"EC,EA"],[681,""],[683,"T"],[696,""],[714,"U"],[728,""],[755,"EC,EA"],[757,""],[761,"T"],[764,"U,T"],[776,"U"],[788,""],[802,"V"],[817,""]]}],["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":"PEPGFIFFEFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNOCCNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNONNNNNCNONONNNNNNNNOOCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNCNNSSSSSCCSSSHHHHSSHHHFKFNNNNNNNNNNNNNNCNNNNNNNNNNNNNNOCOCONNNNCNNNNNNNNNNNFSSNNNNNNNNNNNNNNNNFSNNNNNNNNNNNNNNNNNSSSSFFFNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNTFNNNNNNNNNNNNNNNNNNNNNNIKHMNMNMNMNMNMNMNMNMNMNCHPSGFPFNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNONONNNNNNHNNNNNNNNNNNNNTTFFFFKPFPFTTTPFPFPPFFFPGPPPPPFGGKKFKPPPFFGPPPSFFTTTPFKTTPFFTPPTTPFTTPPFFTFPPPPFGPGGFPPGFPPGFTTPGFFGPPGFPPTPPPFFPFPFPPFFPFGFFPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONONNNOOOMNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNONNONONOONOOOONNNONNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNONNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNONNNNNNNNNNNNNNNOOONOOONNNOOOHNNNONNNOOONNNNNNNNOONNOONONMNMNMNNNNNNNOOONNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOONNNNNNONNNNNNNNOONMNNONMNNNNNNOONNNNNNNNNNNNNNNNNNNONMNNONOONOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNOOFFFFNNNNOOOOOOOOONNNNNNNNOONNNNNNNNNNNNOOONNNNNNNNNNNNOOOOONNNNONNNNONNNNNNNNONNNNNNNNNNNNOOONNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNNNNNNNNNNOOOOOOONNNNOKFFNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFNNNNHNNNNNNNNNNNNNNNNOONONHHHNNNNNNNNNFFFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["Base32","Endpoint","Key","KeyParsingError","NodeAddr","NodeId","PublicKey","RelayMap","RelayMode","RelayNode","RelayUrl","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","encode_hex","encode_hex_upper","endpoint","eq","","","","","equivalent","","","","","","","","","","","","","","","fmt","","","","","","","","","","","","","fmt_short","from","","","","","","","","","","","","","","","","","","from_bytes","","from_nodes","from_parts","from_ref","","","","","","from_str","","","from_url","generate","generate_with_rng","get_node","hash","","init","","","","","","","into","","","","","","","is_empty","","len","metrics","new","node_id","nodes","partial_cmp","","","","protocol","public","quic","relay_url","","serialize","","","","","shared","sign","source","stun_only","stun_port","test_utils","to_bytes","to_openssh","to_owned","","","","","","to_string","","","","","","try_from","","","","","","","","","","try_from_openssh","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","","","","derp_accepts","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_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"],[262,"iroh::defaults"],[269,"iroh::defaults::prod"],[276,"iroh::defaults::staging"],[281,"iroh::discovery"],[334,"iroh::discovery::dns"],[353,"iroh::discovery::local_swarm_discovery"],[372,"iroh::discovery::pkarr"],[449,"iroh::discovery::pkarr::dht"],[498,"iroh::discovery::static_provider"],[522,"iroh::dns"],[547,"iroh::dns::node_info"],[638,"iroh::endpoint"],[2164,"iroh::endpoint::Source"],[2166,"iroh::metrics"],[2342,"iroh::protocol"],[2387,"iroh::test_utils"],[2427,"iroh::watchable"],[2559,"dyn_clone::sealed"],[2560,"iroh_base::key"],[2561,"iroh_base::node_addr"],[2562,"iroh_base::relay_url"],[2563,"iroh_relay::relay_map"],[2564,"core::cmp"],[2565,"core::result"],[2566,"serde::de"],[2567,"core::net::socket_addr"],[2568,"core::iter::traits::iterator"],[2569,"core::iter::traits::collect"],[2570,"core::fmt"],[2571,"alloc::string"],[2572,"ed25519_dalek::verifying"],[2573,"signature::error"],[2574,"iroh_base::base32"],[2575,"ed25519_dalek::signing"],[2576,"iroh::magicsock::node_map::node_state"],[2577,"iroh_base::ticket::node"],[2578,"core::option"],[2579,"url"],[2580,"anyhow"],[2581,"alloc::sync"],[2582,"core::convert"],[2583,"rand_core"],[2584,"core::marker"],[2585,"core::hash"],[2586,"serde::ser"],[2587,"iroh_base::key::encryption"],[2588,"ed25519"],[2589,"core::error"],[2590,"zeroize"],[2591,"ssh_key::error"],[2592,"core::any"],[2593,"alloc::boxed"],[2594,"alloc::vec"],[2595,"alloc::collections::btree::set"],[2596,"futures_lite::stream"],[2597,"pkarr::signed_packet"],[2598,"futures_core::stream"],[2599,"core::time"],[2600,"pkarr::client"],[2601,"core::future::future"],[2602,"core::net::ip_addr"],[2603,"hickory_proto::rr::domain::name"],[2604,"core::clone"],[2605,"hickory_resolver::resolver"],[2606,"alloc::collections::btree::map"],[2607,"core::str::traits"],[2608,"hickory_proto::rr::resource"],[2609,"iroh_quinn_proto::connection"],[2610,"iroh_quinn::connection"],[2611,"iroh_quinn_proto::config"],[2612,"iroh_quinn_proto::varint"],[2613,"core::ops::function"],[2614,"iroh_quinn_proto::crypto"],[2615,"iroh_quinn_proto::congestion"],[2616,"std::time"],[2617,"iroh_quinn::recv_stream"],[2618,"iroh_quinn::send_stream"],[2619,"iroh_quinn_proto::connection::stats"],[2620,"iroh_quinn_proto::connection::streams::send"],[2621,"iroh_quinn_proto::connection::streams"],[2622,"iroh::magicsock::node_map"],[2623,"iroh_quinn_proto::frame"],[2624,"iroh::magicsock"],[2625,"iroh_quinn_proto"],[2626,"iroh_quinn_proto::connection::assembler"],[2627,"iroh_quinn::incoming"],[2628,"iroh_quinn_proto::connection::streams::recv"],[2629,"ring::error"],[2630,"iroh_quinn_proto::transport_parameters"],[2631,"iroh_quinn_proto::shared"],[2632,"futures_concurrency::future::join::tuple"],[2633,"core::future::into_future"],[2634,"tokio::sync::watch"],[2635,"iroh_quinn_proto::connection::paths"],[2636,"core::pin"],[2637,"core::task::wake"],[2638,"core::task::poll"],[2639,"std::io::error"],[2640,"tokio::io::read_buf"],[2641,"futures_concurrency::future::race::tuple"],[2642,"bytes::bytes"],[2643,"rustls_pki_types"],[2644,"rustls::error"],[2645,"alloc::vec::into_iter"],[2646,"futures_lite::future"],[2647,"iroh::test_utils::dns_and_pkarr_servers"],[2648,"iroh_relay::server"],[2649,"futures_concurrency::stream::chain::tuple"],[2650,"futures_concurrency::stream::into_stream"],[2651,"core::default"],[2652,"futures_concurrency::stream::merge::tuple"],[2653,"governor::state::direct"],[2654,"governor::state"],[2655,"governor::state::direct::streams"],[2656,"governor::clock::with_std"],[2657,"governor::middleware"],[2658,"governor::jitter"],[2659,"futures_concurrency::stream::zip::tuple"],[2660,"iroh_relay::defaults"],[2661,"iroh::test_utils::dns_server"]],"i":"Cf`0`````````hAbAdAfAhAj55564321056432105432105432105432105320532011`5643221056432105432033``5643210155`5321055533322211100055664432211005556664443333332210541354321054214415256432105643210311`3315320`40335432044600`4454321056421055564432104564321056432100155643210`33``````````````````````GbFn101011101010`100101001010101`1`1G`101`01221212121```Hd000000000000000``Hf0000000000000000```````HhHjHl210210210210210210210`221021021021021021021210201021021021021022102``Ih0If10010111101010010101010100100010101101001010Il`0000000000000000000000```J`In101010101010101010``K````0`Df1Kb21021011122210210121021222111221021110010010120`22102100010121101102`2210210210210AAh0`````AA``Lh`222A@b`1`OdOj```3`O`2Of2Ol```````AB`0A@l```419```:::Oh``;;7``;AAl:Md03`==<3``=`::1Ob``3```4=``:<``>>=````59``22><80``<`=`28``<````:796Lj91;84:72OnA@`>A@dA@fA@hA@jDbDbA@lA@nAA`LhMbNhM`AAbAAdAAfAAhAAjAAlAAnGlAB`NnLjO`ObOdOfOhOjOlMdOnA@`A@bA@dA@fA@hA@jDbA@lA@nAA`LhMbNhM`AAbAAdAAfAAhAAjAAlAAnGlAB`LjO`ObOdOfOhOjOlMdOnA@`A@bA@dA@fA@hA@jDbA@lA@nAA`LhMbNhM`AAbAAdAAfAAhAAjAAlAAnGlAB`Lj200Md65480654MfA@d35Db6A@`;0?32200335On45013A@fA@jA@lMbNhMh`ADn=AEnAElLnLlAFfABnO`AC`ABfObOdOfOhABhOjOlMfMdABjOnA@`A@bA@dA@fA@hA@jDbA@lA@nAA`LhMbNhM`ABlACbACdAAbAAdAAfAAhAAjAAlAAnMhGlLbLdACfLfAB`ADnLjAEnAElLnLlAFfABnO`AC`ABfObOdOfOhABhOjOlMfMdABjOnA@`A@bA@dA@fA@hA@jDbA@lA@nAA`LhMbNhM`ABlACbACdAAbAAdAAfAAhAAjAAlAAnMhGlLbLdACfLfAB`A@bA@hDbA@lAA`<:;:;;;;:ADnLjAEnAElLnLlAFfABnO`AC`ABf0ObOdOfOhABh0OjOlMfMdABjOnA@`A@bA@dA@fA@hA@jDbA@lA@nAA`LhMbNhM`ABlACbACdAAbAAdAAfAAhAAjAAlAAnMhGlLbLdACfLfAB`MfO`ObOdOfOhOjOlMdABjA@bA@hA@jDbA@lA@nAA`LhABlAAbAAdAAfAAhAAjAAlAAnAB`O`00Ob00Od00Of00Oh00Oj00Ol00Md00ABj00A@b00A@h00A@j00Db00A@l00A@n00AA`00Lh00ABl00AAb00AAd00AAf00AAh00AAj00AAl00AAn00AB`0076LjABh1ABnO`0AC`0ABfOb0Od0Of0Oh08Oj0Ol0MfMd0ABjOnA@`A@b0A@dA@fA@hA@jDbA@l0A@n0AA`0Lh0MbNhM`ABlACbACdAAb0AAd0AAf0AAh0AAjAAl0AAn0MhGlLbLdACfLfAB``;A@f0>ADnLjAEnAElLnLlAFfABnO`0AC`ABfOb0Od000Of0Oh0ABhOj000Ol0MfMd0000ABjOnA@`A@bA@dA@fA@hA@jDbA@lA@nAA`Lh00MbNhM`ABlACb0ACdAAb0AAdAAf000AAhAAjAAlAAn0MhGlLbLdACfLfAB`LjO`ObOdOfOhOjOlMdOnA@`A@bA@dA@fA@hA@jDbA@lA@nAA`LhMbNhM`AAbAAdAAfAAhAAjAAlAAnGlAB`Md00`LjLfA@`Db4AA`:987ABfABhLd5M`0?1AAn33??837ABjNn0000Nb::>MdAAjAAl6A@f::>Mf;ADnAEnAElLnLlAFfLbACfLfABhABf0111M`02Mh0<;:987654222Lj33AAbAAdAAfMf07LdAB`7Db72<2Gl0Mb=A@`05ADf=;A@dMdNb?6>>::22A@bA@h9A@lAA`:Lj0ABh1O`ObOdOfOhOjOlLhDb=:ADf;ABfA@`<00Mf110><;:9876MdOn3A@bA@dA@fA@hA@j;A@lA@nAA`?MbNhM`AAbAAdAAfAAhAAjAAlAAnGlAB`O`AC`ObOdOfOhOjOlMdA@bA@lA@nAA`LhAAbAAdAAfAAhAAlAAnM`00MhADnLjAEnAElLnLlAFfABnO`AC`ABfObOdOfOhABhOjOlMfMd000ABjOnA@`A@bA@dA@fA@hA@jDbA@lA@nAA`LhMbNhM`ABlACbACdAAbAAdAAfAAhAAjAAlAAnMhGlLbLdACfLfAB`ADnLjAEnAElLnLlAFfABnO`AC`ABfObOdOfOhABhOjOlMfMdABjOnA@`A@bA@dA@fA@hA@jDbA@lA@nAA`LhMbNhM`ABlACbACdAAbAAdAAfAAhAAjAAlAAnMhGlLbLdACfLfAB`AEnAElLnLlAFf76>ADnLj65432ABnO`AC`ABfObOdOfOhABhOjOlMfMdABjOnA@`A@bA@dA@fA@hA@jDbA@lA@nAA`LhMbNhM`ABlACbACdAAbAAdAAfAAhAAjAAlAAnMhGlLbLdACfLfAB`A@f0NhADnLjAEnAElLnLlAFfABnO`AC`ABfObOdOfOhABhOjOlMfMdABjOnA@`A@bA@dA@fA@hA@jDbA@lA@nAA`LhMbNhM`ABlACbACdAAbAAdAAfAAhAAjAAlAAnMhGlLbLdACfLfAB`LjNnM`0ABh0000ALbALd````AHbAHdAHfAHh011111111321032100032103210321011032103210321000000321033210032103210032103210321033332101111110003331111111111111112211111100011111110222223210321032103210001333332100```AIbAHlAI`202022222020202020202202020120220202020``AIfAId10`101000101010101000000```010101010``````AJbABbAJd21AJhAJj2AJl542130354354354355421305421305421305421300542130543545421304542130213213521321335445430542130542130213542130454213053","f":"````````````{{bd}f}00000{{{b{h}}}{{b{{l{j}}}}}}{{{b{h}}}{{b{{n{j}}}}}}{b{{b{c}}}{}}000000{{{b{A`}}}{{b{A`c}}}{}}000000{{{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}11{Bb{{b{A`c}}}{}}000000{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}000000{{}Ah}{bc{{C`{Bn}}}}0`{{{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`Cb}}}{{Bd{fCd}}}}0{{{b{Cf}}{b{A`Cb}}}{{Bd{fCd}}}}0{{{b{Ab}}{b{A`Cb}}}{{Bd{fCd}}}}0{{{b{Ad}}{b{A`Cb}}}{{Bd{fCd}}}}{{{b{Af}}{b{A`Cb}}}{{Bd{fCd}}}}0{{{b{Ah}}{b{A`Cb}}}{{Bd{fCd}}}}0{{{b{Aj}}{b{A`Cb}}}{{Bd{fCd}}}}0{{{b{h}}}Ch}{cc{}}{Cjh}1{ClCf}{CnCf}{{{l{j}}}Ab}4{D`Ab}5{DbAd}{DdAd}{DfAd}{{{Dj{h{Dh{Af}}{b{{n{Bj}}}}}}}Ad}{hAd}:{DlAf};;{{{b{{l{j}}}}}{{Bd{hCl}}}}{{{b{{l{j}}}}}Ab}{e{{Bd{AhDn}}}{{Eb{{E`{Aj}}}}}{{Ed{}{{Bh{c}}}}}}{{h{Dh{Af}}c}Ad{{Ed{}{{Bh{Bj}}}}}}{{{b{c}}}c{}}00000{{{b{Ef}}}{{Bd{h}}}}{{{b{Ef}}}{{Bd{Ab}}}}{{{b{Ef}}}{{Bd{Af}}}}{AfAh}{{}Ab}{{{b{A`c}}}Ab{EhEj}}{{{b{Ah}}{b{Af}}}{{Dh{{b{{E`{Aj}}}}}}}}{{{b{h}}{b{A`c}}}fEl}{{{b{Af}}{b{A`c}}}fEl}{{}Bb}000000{{}c{}}000000{{{b{Ad}}}An}{{{b{Ah}}}An}{{{b{Ah}}}Bb}`{hAd}`{{{b{Ah}}}{{`{{Bl{}{{Bh{{b{{E`{Aj}}}}}}}}}}}}{{{b{h}}{b{h}}}{{Dh{Al}}}}{{{b{Ad}}{b{Ad}}}{{Dh{Al}}}}{{{b{Af}}{b{Af}}}{{Dh{Al}}}}{{{b{Aj}}{b{Aj}}}{{Dh{Al}}}}`{{{b{Ab}}}h}`{{{b{Ad}}}{{Dh{{b{Af}}}}}}`{{{b{h}}c}BdEn}{{{b{Ab}}c}BdEn}{{{b{Ad}}c}BdEn}{{{b{Af}}c}BdEn}{{{b{Aj}}c}BdEn}{{{b{Ab}}{b{h}}}F`}{{{b{Ab}}{b{{n{j}}}}}Fb}{{{b{Cf}}}{{Dh{{b{Fd}}}}}}```{{{b{Ab}}}{{l{j}}}}{{{b{Ab}}}{{Bd{{Ff{Ch}}Fh}}}}{bc{}}00000{bCh}00000{c{{Bd{e}}}{}{}}{{{b{{n{j}}}}}{{Bd{h}}}}{{{b{{l{j}}}}}{{Bd{h}}}}2{{{b{{n{j}}}}}{{Bd{Ab}}}}33333{c{{Bd{AbDn}}}{{Fj{{n{j}}}}}}{{}{{Bd{c}}}{}}000000{bFl}000000`{{{b{Ah}}}{{`{{Bl{}{{Bh{{b{Af}}}}}}}}}}{{{b{h}}{b{{n{j}}}}{b{Fb}}}{{Bd{fCl}}}}{{}c{}}000000`{{Adc}Ad{{Ed{}{{Bh{Bj}}}}}}{{AdAf}Ad}``````````{{}Aj}00{{}Ah}``110```{{bd}f}{{{b{A`Fn}}c}fG`}{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}0{{{b{Gb}}}Gb}{{b{b{A`c}}}f{}}{{bj}f}{{}Fn}{Bb{{b{c}}}{}}0{Bb{{b{A`c}}}{}}0`{Bbf}03{{{b{Gb}}{b{A`Cb}}}Gd}{{{b{Fn}}{b{A`Cb}}}Gd}{cc{}}0{cFn{{Ed{}{{Bh{{Gf{G`}}}}}}}}{{{b{c}}}c{}}{{{Gh{{Gf{G`}}}}}Fn}{{}Bb}0{{}c{}}0`````{{{b{G`}}{Dh{{b{Af}}}}{b{{Gj{Bj}}}}}f}{{{b{Fn}}{Dh{{b{Af}}}}{b{{Gj{Bj}}}}}f}{{{b{G`}}GlGn}{{Dh{{Hb{{H`{Gb}}}}}}}}{{{b{Fn}}GlGn}{{Dh{{Hb{{H`{Gb}}}}}}}}`{{{b{G`}}}{{Dh{{Hb{Gb}}}}}}{{{b{Fn}}}{{Dh{{Hb{Gb}}}}}}{bc{}}{c{{Bd{e}}}{}{}}0{{}{{Bd{c}}}{}}0{bFl}0{{}c{}}0```{b{{b{c}}}{}}{{{b{A`}}}{{b{A`c}}}{}}{Bb{{b{c}}}{}}{Bb{{b{A`c}}}{}}{Bbf}{{{b{Hd}}{b{A`Cb}}}Gd}{cc{}}{{}Bb}{{}c{}}{{}Hd}{ChHd}{{{b{Hd}}GlGn}{{Dh{{Hb{{H`{Gb}}}}}}}}?>=<``;:987{{{b{Hf}}{b{A`Cb}}}Gd}654{Gn{{H`{Hf}}}}{{{b{Hf}}{Dh{{b{Af}}}}{b{{Gj{Bj}}}}}f}{{{b{Hf}}GlGn}{{Dh{{Hb{{H`{Gb}}}}}}}}{{{b{Hf}}}{{Dh{{Hb{Gb}}}}}}{c{{Bd{e}}}{}{}}{{}{{Bd{c}}}{}}{bFl}{{}c{}}```````{{bd}f}00{b{{b{c}}}{}}00{{{b{A`}}}{{b{A`c}}}{}}00{{{b{Hh}}}Hh}{{{b{Hj}}}Hj}{{{b{Hl}}}Hl}{{b{b{A`c}}}f{}}00{{bj}f}00{Bb{{b{c}}}{}}00{Bb{{b{A`c}}}{}}00`{Bbf}{{{b{A`Hh}}}f}11{{{b{Hh}}{b{A`Cb}}}Gd}{{{b{Hj}}{b{A`Cb}}}Gd}{{{b{Hl}}{b{A`Cb}}}Gd}{cc{}}00{{{b{c}}}c{}}00{{}Bb}00{{}c{}}00{AbHh}{{}Hj}{{AbDl}Hh}{DlHj}{DlHl}{{{b{Hh}}{Dh{{b{Af}}}}{b{{Gj{Bj}}}}}f}{{{b{Hl}}{b{Hn}}}{{H`{f}}}}{{{b{Hj}}GlGn}{{Dh{{I`{{H`{Gb}}}}}}}}{{{b{Hl}}Gn}{{H`{Hn}}}}{bc{}}00{c{{Bd{e}}}{}{}}00{{}{{Bd{c}}}{}}00{bFl}007{{}c{}}00{{AbDlIbId}Hh}``{{bd}f}{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}0{If{{H`{Ih}}}}{{}If}{{IfIj}If}{{{b{Ih}}}Ih}{{b{b{A`c}}}f{}}{{bj}f}{{}Ih}5{Bb{{b{c}}}{}}0{Bb{{b{A`c}}}{}}0{{IfAn}If}{Bbf}0{{{b{Ih}}{b{A`Cb}}}Gd}{{{b{If}}{b{A`Cb}}}Gd}{cc{}}0{{{b{c}}}c{}}5{{}Bb}0{{IfId}If}{{}c{}}0{IfIf}{{IfDl}If}{{{b{Ih}}{Dh{{b{Af}}}}{b{{Gj{Bj}}}}}f}4{{{b{Ih}}GlGn}{{Dh{{Hb{{H`{Gb}}}}}}}}{{IfAb}If}{bc{}}{c{{Bd{e}}}{}{}}0{{}{{Bd{c}}}{}}0{{IfIb}If}{bFl}0{{}c{}}0``{{{b{Il}}c}f{{Eb{Ad}}}}{b{{b{c}}}{}}{{{b{A`}}}{{b{A`c}}}{}}{{}Il}{Bb{{b{c}}}{}}{Bb{{b{A`c}}}{}}{Bbf}{{{b{Il}}{b{A`Cb}}}Gd}{cc{}}{eIl{{Eb{Ad}}}{{Ed{}{{Bh{c}}}}}}{{{b{Il}}Gn}{{Dh{Ad}}}}{{}Bb}{{}c{}}9{{{b{Il}}{Dh{{b{Af}}}}{b{{Gj{Bj}}}}}f}3{{{b{Il}}GlGn}{{Dh{{Hb{{H`{Gb}}}}}}}}{{{b{Il}}c}{{Dh{Ad}}}{{Eb{Ad}}}}{c{{Bd{e}}}{}{}}{{}{{Bd{c}}}{}}{bFl}{{}c{}}``{{}{{b{In}}}}{{{b{J`}}{b{Gn}}{b{Ef}}}{{`{{Jd{}{{Jb{{H`{Ad}}}}}}}}}}{{{b{In}}{b{Gn}}{b{Ef}}}{{H`{Ad}}}}{{{b{J`}}{b{Gn}}{b{Ef}}{b{{n{Jf}}}}}{{`{{Jd{}{{Jb{{H`{Ad}}}}}}}}}}{{{b{In}}{b{Gn}}{b{Ef}}{b{{n{Jf}}}}}{{H`{Ad}}}}{{{b{J`}}{b{Ef}}}{{`{{Jd{}{{Jb{{H`{Ad}}}}}}}}}}{{{b{In}}{b{Ef}}}{{H`{Ad}}}}{{{b{J`}}{b{Ef}}{b{{n{Jf}}}}}{{`{{Jd{}{{Jb{{H`{Ad}}}}}}}}}}{{{b{In}}{b{Ef}}{b{{n{Jf}}}}}{{H`{Ad}}}}{{{b{J`}}cId}{{`{{Jd{}{{Jb{{H`{{`{{Bl{}{{Bh{Jh}}}}}}}}}}}}}}}Jj}{{{b{In}}cId}{{H`{{`{{Bl{}{{Bh{Jh}}}}}}}}}Jj}{{{b{J`}}cId}{{`{{Jd{}{{Jb{{H`{{`{{Bl{}{{Bh{Jh}}}}}}}}}}}}}}}{JjJl}}{{{b{In}}cId}{{H`{{`{{Bl{}{{Bh{Jh}}}}}}}}}{JjJl}}{{{b{J`}}cId{b{{n{Jf}}}}}{{`{{Jd{}{{Jb{{H`{{`{{Bl{}{{Bh{Jh}}}}}}}}}}}}}}}{JjJl}}{{{b{In}}cId{b{{n{Jf}}}}}{{H`{{`{{Bl{}{{Bh{Jh}}}}}}}}}{JjJl}}105410`{{}{{b{Jn}}}}``````{{bd}f}{{{b{K`}}}{{b{Ef}}}}{{{b{{Kb{c}}}}}{{b{{Kd{c{Gh{Ch}}}}}}}{KfKhKjKl}}{b{{b{c}}}{}}00{{{b{A`}}}{{b{A`c}}}{}}00{{{b{Df}}}Df}{{b{b{A`c}}}f{}}{{bj}f}{{{b{K`}}{b{K`}}}Al}{{b{b{c}}}Al{}}{Bb{{b{c}}}{}}00{Bb{{b{A`c}}}{}}00`{Bbf}00{{{b{K`}}{b{K`}}}An}{{{b{Df}}{b{Df}}}An}{{b{b{c}}}An{}}00000{{{b{K`}}{b{A`Cb}}}{{Bd{fCd}}}}{{{b{K`}}{b{A`Cb}}}Gd}{{{b{Df}}{b{A`Cb}}}Gd}{{{b{{Kb{c}}}}{b{A`Cb}}}GdKn}{cc{}}0{{{b{{Kb{K`}}}}}Df}{{{Kb{K`}}}Df}{{{b{Df}}}{{Kb{K`}}}}3{{{b{{n{L`}}}}}{{H`{Df}}}}{{{b{{n{L`}}}}}{{H`{{Kb{c}}}}}{KfKhKjKl}}{{Gne}{{Kb{c}}}{KfKhKjKl}{{Bl{}{{Bh{{Dj{cCh}}}}}}}}{{{b{Hn}}}{{H`{Df}}}}{{{b{Hn}}}{{H`{{Kb{c}}}}}{KfKhKjKl}}{{{b{c}}}c{}}{{{b{Ef}}}{{Bd{K`c}}}{}}{{Gnc}{{H`{{Kb{e}}}}}{{Bl{}{{Bh{Ch}}}}}{KfKhKjKl}}{{{b{Ef}}}{{H`{Gn}}}}{{{b{K`}}{b{A`c}}}fEl}{{}Bb}00{{}c{}}00{{{b{Jn}}{b{Gn}}{b{Ef}}}{{H`{{Kb{c}}}}}{KfKhKjKl}}{{{b{Jn}}{b{Ef}}}{{H`{{Kb{c}}}}}{KfKhKjKl}}{{Gn{Dh{Dl}}{Gj{Bj}}}Df}{{{b{{Kb{c}}}}}Gn{KfKhKjKl}}`{{{b{K`}}{b{K`}}}{{Dh{Al}}}}`{{{b{Df}}{b{Ef}}Ib}{{H`{{`{{Bl{}{{Bh{L`}}}}}}}}}}{{{b{{Kb{c}}}}{b{Ef}}Ib}{{H`{{`{{Bl{}{{Bh{L`}}}}}}}}}{KfKhKjKl}}{bc{}}{{{b{Df}}{b{Ab}}Ib}{{H`{Hn}}}}{{{b{{Kb{c}}}}{b{Ab}}Ib}{{H`{Hn}}}{KfKhKjKl}}{bCh}{{{b{Gn}}}Ch}{{{b{Ef}}}{{Bd{K`c}}}{}}{c{{Bd{e}}}{}{}}00{{}{{Bd{c}}}{}}00{bFl}00{{}c{}}00`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````{{bd}f}00000000000000000000000000000000{{{b{Gl}}}Lb}{Ld{{H`{LfLh}}}}{{{b{Lj}}}Ll}{{{b{Lj}}}Ln}{{Ld{E`{M`}}}{{H`{LfLh}}}}{{{b{A`Mb}}Md}{{b{A`Mb}}}}`{{{b{A`Mf}}{Dh{Mb}}}{{b{A`Mf}}}}`{{Mhe}MhG`{{Mj{{b{Ab}}}{{Jb{{Dh{c}}}}}}MlMn}}{{{b{Gl}}Ad}{{H`{f}}}}{{{b{Gl}}Ad{b{Ef}}}{{H`{f}}}}```{{{b{N`}}{b{{n{j}}}}}{{Gf{Nb}}}}{{{b{A`Mf}}An}{{b{A`Mf}}}}{{{b{A`Lf}}}{{H`{{Gh{j}}}}}}{{Mh{Gh{{Gh{j}}}}}Mh}{Mh{{H`{Gl}}}}{{MhNd}Mh}{{MhNf}Mh}{{{b{A`Nh}}Id}{{b{A`Nh}}}}`{b{{b{c}}}{}}0000000000000000000000000000000000000000000000000000{{{b{A`}}}{{b{A`c}}}{}}0000000000000000000000000000000000000000000000000000{{{b{Gl}}}{{Dj{Bj{Dh{Bj}}}}}}{{{E`{Nj}}NlB`}{{Gf{Nn}}}}{{}Mh}````{MhMh}{{{b{Lj}}}Lj}{{{b{O`}}}O`}{{{b{Ob}}}Ob}{{{b{Od}}}Od}{{{b{Of}}}Of}{{{b{Oh}}}Oh}{{{b{Oj}}}Oj}{{{b{Ol}}}Ol}{{{b{Md}}}Md}{{{b{On}}}On}{{{b{A@`}}}A@`}{{{b{A@b}}}A@b}{{{b{A@d}}}A@d}{{{b{A@f}}}A@f}{{{b{A@h}}}A@h}{{{b{A@j}}}A@j}{{{b{Db}}}Db}{{{b{A@l}}}A@l}{{{b{A@n}}}A@n}{{{b{AA`}}}AA`}{{{b{Lh}}}Lh}{{{b{Mb}}}Mb}{{{b{Nh}}}Nh}{{{b{M`}}}M`}{{{b{AAb}}}AAb}{{{b{AAd}}}AAd}{{{b{AAf}}}AAf}{{{b{AAh}}}AAh}{{{b{AAj}}}AAj}{{{b{AAl}}}AAl}{{{b{AAn}}}AAn}{{{b{Gl}}}Gl}{{{b{AB`}}}AB`}{{{b{Nn}}}{{Gf{Nn}}}}{{b{b{A`c}}}f{}}00000000000000000000000000000000{{bj}f}00000000000000000000000000000000{{{b{Lj}}Md{b{{n{j}}}}}f}{{{b{Gl}}}{{H`{f}}}}{{{b{Lj}}}{{Dh{Lh}}}}{{{b{Lj}}}Lh}{{{b{Md}}{b{Md}}}Al}{{{b{AAj}}{b{AAj}}}Al}{{{b{AAl}}{b{AAl}}}Al}{{{b{AAn}}{b{AAn}}}Al}`{{b{b{c}}}Al{}}000{{{b{A`Mf}}{E`{Nj}}}{{b{A`Mf}}}}`{{{b{Lj}}}{{Gf{Nn}}}}{{{b{Gl}}Gn}{{H`{{ABb{A@l}}}}}}`{{{b{Gl}}c{b{{n{j}}}}}{{H`{Lj}}}{{Eb{Ad}}}}`{jAAh}``{{{b{A`Mf}}Bb}{{b{A`Mf}}}}````{{{b{A`Mf}}{Dh{Bb}}}{{b{A`Mf}}}}1{{{b{Lj}}}Bb}`{{}Mf}{{}Md}{{}On}{{}A@`}{{}A@d}{{}A@f}{{}A@j}{{}A@l}{{}Mb}{{}Nh}{{}Mh}{{}AB`}{Bb{{b{c}}}{}}0000000000000000000000000000000000000000000000000000{Bb{{b{A`c}}}{}}0000000000000000000000000000000000000000000000000000{c{{Bd{A@b}}}Bf}{c{{Bd{A@h}}}Bf}{c{{Bd{Db}}}Bf}{c{{Bd{A@l}}}Bf}{c{{Bd{AA`}}}Bf}{AAnABd}{{{b{Gl}}}{{ABb{{Dh{{Gj{AAj}}}}}}}}{{Mh{Gf{G`}}}Mh}{{{b{Gl}}}{{Dh{{b{G`}}}}}}{MhMh}00{{MhIn}Mh}{{{b{Gl}}}{{b{In}}}}{Bbf}000000000{{{b{A`ABf}}}f}11111{{{b{A`ABh}}}f}22222222222222222222222222222222222222{{{b{A`Mf}}An}{{b{A`Mf}}}}{{{b{O`}}{b{O`}}}An}{{{b{Ob}}{b{Ob}}}An}{{{b{Od}}{b{Od}}}An}{{{b{Of}}{b{Of}}}An}{{{b{Oh}}{b{Oh}}}An}{{{b{Oj}}{b{Oj}}}An}{{{b{Ol}}{b{Ol}}}An}{{{b{Md}}{b{Md}}}An}{{{b{ABj}}{b{ABj}}}An}{{{b{A@b}}{b{A@b}}}An}{{{b{A@h}}{b{A@h}}}An}{{{b{A@j}}{b{A@j}}}An}{{{b{Db}}{b{Db}}}An}{{{b{A@l}}{b{A@l}}}An}{{{b{A@n}}{b{A@n}}}An}{{{b{AA`}}{b{AA`}}}An}{{{b{Lh}}{b{Lh}}}An}{{{b{ABl}}{b{ABl}}}An}{{{b{AAb}}{b{AAb}}}An}{{{b{AAd}}{b{AAd}}}An}{{{b{AAf}}{b{AAf}}}An}{{{b{AAh}}{b{AAh}}}An}{{{b{AAj}}{b{AAj}}}An}{{{b{AAl}}{b{AAl}}}An}{{{b{AAn}}{b{AAn}}}An}{{{b{AB`}}{b{AB`}}}An}{{b{b{c}}}An{}}00000000000000000000000000000000000000000000000000000000000000000000000000000``{{{b{Lj}}{b{A`{n{j}}}}{b{{n{j}}}}{b{{n{j}}}}}{{Bd{fABl}}}}{{{b{A`ABh}}}{{Bd{fA@n}}}}{{{b{Lj}}{b{A`Cb}}}{{Bd{fCd}}}}{{{b{ABn}}{b{A`Cb}}}{{Bd{fCd}}}}{{{b{O`}}{b{A`Cb}}}{{Bd{fCd}}}}0{{{b{AC`}}{b{A`Cb}}}{{Bd{fCd}}}}0{{{b{ABf}}{b{A`Cb}}}{{Bd{fCd}}}}{{{b{Ob}}{b{A`Cb}}}{{Bd{fCd}}}}0{{{b{Od}}{b{A`Cb}}}{{Bd{fCd}}}}0{{{b{Of}}{b{A`Cb}}}{{Bd{fCd}}}}0{{{b{Oh}}{b{A`Cb}}}{{Bd{fCd}}}}0{{{b{ABh}}{b{A`Cb}}}{{Bd{fCd}}}}{{{b{Oj}}{b{A`Cb}}}{{Bd{fCd}}}}0{{{b{Ol}}{b{A`Cb}}}{{Bd{fCd}}}}0{{{b{Mf}}{b{A`Cb}}}{{Bd{fCd}}}}{{{b{Md}}{b{A`Cb}}}{{Bd{fCd}}}}0{{{b{ABj}}{b{A`Cb}}}{{Bd{fCd}}}}{{{b{On}}{b{A`Cb}}}{{Bd{fCd}}}}{{{b{A@`}}{b{A`Cb}}}{{Bd{fCd}}}}{{{b{A@b}}{b{A`Cb}}}Gd}0{{{b{A@d}}{b{A`Cb}}}{{Bd{fCd}}}}{{{b{A@f}}{b{A`Cb}}}{{Bd{fCd}}}}{{{b{A@h}}{b{A`Cb}}}Gd}{{{b{A@j}}{b{A`Cb}}}{{Bd{fCd}}}}{{{b{Db}}{b{A`Cb}}}Gd}{{{b{A@l}}{b{A`Cb}}}Gd}0{{{b{A@n}}{b{A`Cb}}}{{Bd{fCd}}}}0{{{b{AA`}}{b{A`Cb}}}{{Bd{fCd}}}}{{{b{AA`}}{b{A`Cb}}}Gd}{{{b{Lh}}{b{A`Cb}}}{{Bd{fCd}}}}0{{{b{Mb}}{b{A`Cb}}}{{Bd{fCd}}}}{{{b{Nh}}{b{A`Cb}}}{{Bd{fCd}}}}{{{b{M`}}{b{A`Cb}}}{{Bd{fCd}}}}{{{b{ABl}}{b{A`Cb}}}{{Bd{fCd}}}}{{{b{ACb}}{b{A`Cb}}}{{Bd{fCd}}}}{{{b{ACd}}{b{A`Cb}}}{{Bd{fCd}}}}{{{b{AAb}}{b{A`Cb}}}{{Bd{fCd}}}}0{{{b{AAd}}{b{A`Cb}}}{{Bd{fCd}}}}0{{{b{AAf}}{b{A`Cb}}}{{Bd{fCd}}}}0{{{b{AAh}}{b{A`Cb}}}{{Bd{fCd}}}}0{{{b{AAj}}{b{A`Cb}}}Gd}{{{b{AAl}}{b{A`Cb}}}Gd}0{{{b{AAn}}{b{A`Cb}}}{{Bd{fCd}}}}0{{{b{Mh}}{b{A`Cb}}}Gd}{{{b{Gl}}{b{A`Cb}}}Gd}{{{b{Lb}}{b{A`Cb}}}Gd}{{{b{Ld}}{b{A`Cb}}}Gd}{{{b{ACf}}{b{A`Cb}}}Gd}{{{b{Lf}}{b{A`Cb}}}Gd}{{{b{AB`}}{b{A`Cb}}}Gd}{{}An}````{cc{}}0000000{LhO`}111{OdOb}2{AChOd}3{LhOd}{OfOd}5{LhOf}6{OdOh}77{OlOj}{LhOj}{A@nOj}:{LhOl};{jMd}{B`Md}{AAnMd}{IbMd}?????????????{ACjLh}{AAfLh}{cc{}}00000{AClACb}1{AAfAAb}22{AAhAAf}{ACnAAf}4{AD`AAf}5555{MdAAn}6666666{{{b{c}}}c{}}00000000000000000000000000000000:{Jf{{Bd{MdADb}}}}{JfMd}{{{b{Lj}}}{{H`{h}}}}{{{b{Lj}}}{{Dh{{Gf{ADd}}}}}}{{{b{A`Lf}}}{{H`{{Gf{ADd}}Lh}}}}`{{{b{Db}}}An}{{{b{Md}}{b{A`c}}}fEl}{{{b{AA`}}{b{A`c}}}fEl}{{{b{AAj}}{b{A`c}}}fEl}{{{b{AAl}}{b{A`c}}}fEl}{{{b{AAn}}{b{A`c}}}fEl}{{{b{Gl}}}{{ABb{{Dh{Af}}}}}}{{{b{ABf}}}AAn}{{{b{ABh}}}AAn}{Ldf}`{{{b{A`M`}}Jf}{{b{A`M`}}}}0{AAnJf}{{}Bb}0000000000000000000000000000000000000000000000000000{{{b{ADf}}Ib{b{ADh}}}{{Bd{ADjACd}}}}{{{b{A`Mf}}B`}{{b{A`Mf}}}}{{{b{A`Mf}}Id}{{b{A`Mf}}}}{{{b{Nn}}}Jf}{AAnADl}{{MhAn}Mh}{{{b{A`Nh}}Id}{{b{A`Nh}}}}{{}c{}}0000000000000000000000000000000000000000000000000000{Lf{{H`{{Dj{LjADn}}Lf}}}}{{{Gf{Nn}}}{{Gf{ADd}}}}{{}}000000{Ldc{}}11{AC`AE`}{MdJf}`{{{b{ABf}}}An}{{{b{ABn}}}An}{{{b{Gl}}}An}{c{{AEb{e}}}AEdJd}00000000{{{b{A`Mf}}{Dh{Id}}}{{b{A`Mf}}}}={{Mh{Gh{Ad}}}Mh}```{{{b{Db}}}{{Dh{Id}}}}```{{{b{Lj}}}{{Dh{Jh}}}}{{{b{Ld}}}{{Dh{Jh}}}}{{{b{Lf}}}{{Dh{Jh}}}}```{{{b{Ab}}{Gh{{Gh{j}}}}{E`{Mf}}An}{{H`{M`}}}}{{{b{A`Mb}}{Dh{Id}}}{{b{A`Mb}}}}{{{b{A`Mf}}Md}{{b{A`Mf}}}}0`{{{b{Lj}}}{{Dh{Bb}}}}{{{b{A`Mf}}{Dh{AEf}}}{{b{A`Mf}}}}{{{b{A`M`}}Bb}{{b{A`M`}}}}```{{{b{A`M`}}An}{{b{A`M`}}}}{{{b{A`Mf}}B`}{{b{A`Mf}}}}{{{b{A`Nh}}B`}{{b{A`Nh}}}}{{{b{A`Mf}}{Dh{Nh}}}{{b{A`Mf}}}}{{{b{Gl}}}f}{{{b{ABn}}}An}{{{E`{ADf}}{E`{N`}}}M`}{{ADlABdJf}AAn}``{{{b{Gl}}}{{H`{Ad}}}}{{{b{Gl}}}Gn}``{{{b{Lj}}}{{AEh{{Dh{Bj}}}}}}`{{{b{A`Nn}}NlNlJfAn{b{AEj}}}f}{{{b{A`Nn}}NlNlAnJf}f}{{{b{A`Nn}}NlJfAn{Dh{Jf}}}f}{{{b{A`Nn}}B`}f}{{{b{A`Nn}}NlJfJf}f}{{{b{Nb}}{b{A`{n{j}}}}{b{{n{j}}}}}{{Bd{{b{A`{n{j}}}}ACb}}}}{{{b{Lj}}}AEl}{{{b{Lj}}}AEn}{{{b{A`Mf}}Ib}{{b{A`Mf}}}}{{{b{Md}}{b{Md}}}{{Dh{Al}}}}{{{b{AAj}}{b{AAj}}}{{Dh{Al}}}}{{{b{AAl}}{b{AAl}}}{{Dh{Al}}}}{{{b{AAn}}{b{AAn}}}{{Dh{Al}}}}```{{{b{Lj}}}{{Dh{{Gf{ADd}}}}}}5`{{{AF`{{b{A`ADn}}}}{b{A`AFb}}}AFd}{{{AF`{{b{A`AEn}}}}{b{A`AFb}}}AFd}{{{AF`{{b{A`AEl}}}}{b{A`AFb}}}AFd}{{{AF`{{b{A`Ln}}}}{b{A`AFb}}}AFd}{{{AF`{{b{A`Ll}}}}{b{A`AFb}}}AFd}{{{AF`{{b{A`AFf}}}}{b{A`AFb}}}AFd}{{{AF`{{b{A`Lb}}}}{b{A`AFb}}}{{AFd{c}}}{}}{{{AF`{{b{A`ACf}}}}{b{A`AFb}}}{{AFd{c}}}{}}{{{AF`{{b{A`Lf}}}}{b{A`AFb}}}{{AFd{c}}}{}}{{{AF`{{b{A`ABh}}}}{b{A`AFb}}}{{AFd{{Bd{fAFh}}}}}}{{{b{A`ABf}}{b{A`AFb}}{b{A`{n{j}}}}}{{AFd{{Bd{BbOd}}}}}}{{{AF`{{b{A`ABf}}}}{b{A`AFb}}{b{A`AFj}}}{{AFd{{Bd{fAFh}}}}}}2{{{AF`{{b{A`ABh}}}}{b{A`AFb}}{b{{n{j}}}}}{{AFd{{Bd{BbAFh}}}}}}{{{AF`{{b{A`ABh}}}}{b{A`AFb}}{b{{n{j}}}}}{{AFd{{Bd{BbOj}}}}}}{{{b{A`M`}}{Dh{Nd}}}{{b{A`M`}}}}{{{b{A`M`}}{Dh{Nf}}}{{b{A`M`}}}}{{{b{ABh}}}{{Bd{AFlA@n}}}}{MhMh}{{MhDl}Mh}{e{{AFn{cg}}}{}{{AEd{}{{Jb{c}}}}}{{Jd{}{{Jb{c}}}}}}00000000{{{b{A`ABf}}{b{A`{n{j}}}}}{{Bd{{Dh{Bb}}Od}}}}{{{b{A`ABf}}BbAn}{{Bd{{Dh{ABj}}Od}}}}{{{b{A`ABf}}{b{A`{n{AG`}}}}}{{Bd{{Dh{Bb}}Od}}}}{{{b{Lj}}}AFf}{{{b{A`ABf}}{b{A`{n{j}}}}}{{Bd{fOh}}}}{{{b{A`ABf}}Bb}{{Bd{{Gh{j}}Ob}}}}```{{{b{A`Mf}}An}{{b{A`Mf}}}}{{{b{A`Mf}}Md}{{b{A`Mf}}}}{{{b{A`ABf}}}{{Bd{{Dh{Md}}Of}}}}{Ldf}{{{b{AB`}}}Ah}{{MhAB`}Mh}`{{{b{Lj}}}Bj}{{{b{Ld}}}Bj}{{{b{Lf}}}Bj}{{{b{Ld}}}An}{{{b{Gl}}Gn}{{Dh{Db}}}}{{{b{Gl}}}{{`{{Bl{}{{Bh{Db}}}}}}}}{{{b{A`Mb}}Md}{{b{A`Mb}}}}{{{b{A`ABh}}Md}{{Bd{fA@n}}}}``{Ld{{H`{fAC`}}}}{{{b{ADf}}Ib{b{ADh}}{b{{n{j}}}}}{{l{j}}}}{{{b{A`M`}}Id}{{b{A`M`}}}}{{{b{Lj}}}Id}`{{Mdc}Md{{Eb{Md}}}}{{{b{Nb}}{b{A`{Gh{j}}}}{b{{n{j}}}}}{{Bd{fACb}}}}{{MhAb}Mh}{{{b{Gl}}}{{b{Ab}}}}{{{b{Lj}}AG`}{{Bd{fO`}}}}{{{b{Lj}}AG`}AGb}{{{b{A`Mf}}An}{{b{A`Mf}}}}{{{b{A`Mf}}Jf}{{b{A`Mf}}}}``{{{b{A@b}}c}BdEn}{{{b{A@h}}c}BdEn}{{{b{Db}}c}BdEn}{{{b{A@l}}c}BdEn}{{{b{AA`}}c}BdEn}{{{b{Gl}}{Gh{{Gh{j}}}}}{{H`{f}}}}{{{b{Lj}}Md}f}0{{{b{ABh}}AFl}{{Bd{fA@n}}}}1{{{b{O`}}}{{Dh{{b{Fd}}}}}}{{{b{Ob}}}{{Dh{{b{Fd}}}}}}{{{b{Od}}}{{Dh{{b{Fd}}}}}}{{{b{Of}}}{{Dh{{b{Fd}}}}}}{{{b{Oh}}}{{Dh{{b{Fd}}}}}}{{{b{Oj}}}{{Dh{{b{Fd}}}}}}{{{b{Ol}}}{{Dh{{b{Fd}}}}}}{{{b{Lh}}}{{Dh{{b{Fd}}}}}}{{{b{Db}}}{{Gh{{Dj{AA`Id}}}}}}`{{{b{Lj}}}Bb}{{{E`{ADf}}Ib{b{AGd}}}{{Gf{AGf}}}}{{{b{Lj}}}A@f}{{{b{A`ABf}}Md}{{Bd{fA@n}}}}`{{{b{A`ABh}}}{{Bd{{Dh{Md}}Ol}}}}``{{{b{A`Mf}}Md}{{b{A`Mf}}}}``{{{b{A`Mf}}AGh}{{b{A`Mf}}}}{bc{}}00000000000000000000000000000000{bCh}0000000000000000000{{{b{A`M`}}{E`{N`}}}{{b{A`M`}}}}`{{{b{A`M`}}{E`{Mf}}}{{b{A`M`}}}}{{MhMf}Mh}{c{{Bd{e}}}{}{}}000000000000000000{Jf{{Bd{MdADb}}}}{AGj{{Bd{MdADb}}}}{Bb{{Bd{MdADb}}}}3333333333333333333333333333333333{{}{{Bd{c}}}{}}0000000000000000000000000000000000000000000000000000{{{AF`{{b{A`c}}}}{b{A`AFb}}}AFd{}}000000`{bFl}0000000000000000000000000000000000000000000000000000``{{{b{A`Nh}}B`}{{b{A`Nh}}}}{{}c{}}0000000000000000000000000000000000000000000000000000{{{b{Lj}}}ABn}{{{b{Nn}}}Jf}{{{E`{ADf}}}M`}{{{Gh{AGl}}AGn}{{Bd{M`AH`}}}}{{{b{A`ABh}}{b{{n{j}}}}}{{Bd{BbOj}}}}{{{b{A`ABh}}{b{{n{j}}}}}{{Bd{fOj}}}}{{{b{A`ABh}}{b{A`{n{AG`}}}}}{{Bd{fOj}}}}{{{b{A`ABh}}AG`}{{Bd{fOj}}}}{{{b{A`ABh}}{b{A`{n{AG`}}}}}{{Bd{A@jOj}}}}``````{{bd}f}000`````````{b{{b{c}}}{}}000{{{b{A`}}}{{b{A`c}}}{}}000``{{{b{AHb}}}AHb}{{{b{AHd}}}AHd}{{{b{AHf}}}AHf}{{{b{AHh}}}AHh}{{b{b{A`c}}}f{}}000{{bj}f}000```{{}AHb}{{}AHd}{{}AHf}{{}AHh}{Bb{{b{c}}}{}}000{Bb{{b{A`c}}}{}}000`````{Bbf}000`{{{b{AHb}}{b{A`Cb}}}{{Bd{fCd}}}}{{{b{AHd}}{b{A`Cb}}}{{Bd{fCd}}}}{{{b{AHf}}{b{A`Cb}}}Gd}{{{b{AHh}}{b{A`Cb}}}{{Bd{fCd}}}}`{cc{}}000{{{b{c}}}c{}}000`{{}Bb}000{{}c{}}000{{{b{AHb}}}{{AHj{{Dj{{b{Ef}}{b{ADd}}}}}}}}{{{b{AHd}}}{{AHj{{Dj{{b{Ef}}{b{ADd}}}}}}}}{{{b{AHf}}}{{AHj{{Dj{{b{Ef}}{b{ADd}}}}}}}}{{{b{AHh}}}{{AHj{{Dj{{b{Ef}}{b{ADd}}}}}}}}```{{}{{b{Ef}}}}000```````````````````````````````````````````````````{bc{}}000{c{{Bd{e}}}{}{}}000{{}{{Bd{c}}}{}}000{bFl}000```````{{}c{}}000````{{bd}f}{{{b{AHl}}Lf}{{AHn{{H`{f}}}}}}{{AI`ce}AI`{{Fj{{n{j}}}}}AHl}{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}0{GlAI`}{{{b{AIb}}}AIb}{{b{b{A`c}}}f{}}{{bj}f}{Bb{{b{c}}}{}}0{Bb{{b{A`c}}}{}}0{Bbf}0{{{b{AIb}}}{{b{Gl}}}}{{{b{AI`}}}{{b{Gl}}}}{{{b{AIb}}{b{A`Cb}}}Gd}{{{b{AI`}}{b{A`Cb}}}Gd}{cc{}}0{{{b{c}}}c{}}{{}Bb}0{{}c{}}0{{{b{AIb}}}An}?{{{b{AHl}}}{{AHn{f}}}}{{{b{AIb}}}{{H`{f}}}}{AI`{{H`{AIb}}}}{bc{}}{c{{Bd{e}}}{}{}}0{{}{{Bd{c}}}{}}0{bFl}0{{}c{}}0``{b{{b{c}}}{}}0{{{b{A`}}}{{b{A`c}}}{}}0{Bj{{H`{Jn}}}}{Bb{{b{c}}}{}}0{Bb{{b{A`c}}}{}}0{{{b{AId}}Ab}{{Gf{Fn}}}}{{{b{AId}}}In}{Bbf}0{{{b{AIf}}{b{A`Cb}}}Gd}{{{b{AId}}{b{A`Cb}}}Gd}{cc{}}0{{}Bb}0{{}c{}}0``{{{b{AId}}{b{Gn}}Id}{{H`{f}}}}`{{}{{H`{AId}}}}{{}{{H`{{Dj{AhAfAIh}}}}}}{{{Dh{AIj}}An}{{H`{{Dj{AhAfAIh}}}}}}1{Ch{{H`{AId}}}}{c{{Bd{e}}}{}{}}0{{}{{Bd{c}}}{}}0{bFl}0{{}c{}}0``````{{bd}f}00{b{{b{c}}}{}}00000{{{b{A`}}}{{b{A`c}}}{}}00000{e{{AIl{g}}}{}{{AIn{}{{Bh{c}}}}}{{AJ`{}{{Bh{c}}}}}}{{{b{{AJb{c}}}}}{{AJb{c}}}{}}{{{b{{ABb{c}}}}}{{ABb{c}}}Jl}{{{b{{AJd{c}}}}}{{AJd{c}}}Jl}{{b{b{A`c}}}f{}}00{{bj}f}00{{}{{AJb{c}}}AJf}{Bb{{b{c}}}{}}00000{Bb{{b{A`c}}}{}}00000{Bbf}00000{{{b{{AJb{c}}}}{b{A`Cb}}}GdKn}{{{b{{ABb{c}}}}{b{A`Cb}}}GdKn}{{{b{{AJh{c}}}}{b{A`Cb}}}GdKn}{{{b{{AJj{c}}}}{b{A`Cb}}}GdKn}{{{b{{AJd{c}}}}{b{A`Cb}}}GdKn}{{{b{AJl}}{b{A`Cb}}}Gd}0{cc{}}00000{{{b{c}}}c{}}00{{{b{{AJb{c}}}}}c{JlAJn}}{{{b{{ABb{c}}}}}{{Bd{cAJl}}}{JlAJn}}{{}Bb}00000{{{b{A`{ABb{{Dh{c}}}}}}}{{AJj{c}}}{JlAJn}}{{}c{}}00000{{}}0{{}c{}}{c{{AEb{e}}}AEdJd}0{e{{AK`{cg}}}{}{{AIn{}{{Bh{c}}}}}{{AJ`{}{{Bh{c}}}}}}{c{{AJb{c}}}{JlAJn}}{{{AF`{{b{A`{AJh{c}}}}}}{b{A`AFb}}}{{AFd{e}}}{JlAJn}{}}{{{AF`{{b{A`{AJj{c}}}}}}{b{A`AFb}}}{{AFd{e}}}{JlAJn}{}}{{{AF`{{b{A`{AJd{c}}}}}}{b{A`AFb}}}{{AFd{{Dh{e}}}}}{JlAJn}{}}{e{{AFn{cg}}}{}{{AEd{}{{Jb{c}}}}}{{Jd{}{{Jb{c}}}}}}0{{{b{{AKd{AKbceg}}}}}{{AKf{iceg}}}AKhAKjAKl{}}{{{b{{AKd{AKbceg}}}}AKn}{{AKf{iceg}}}AKhAKjAKl{}}{{{b{{AJb{c}}}}c}{{Bd{cc}}}{JlAJn}}{{{ABb{c}}}{{AJd{c}}}{JlAJn}}0{bc{}}00{bCh}{c{{Bd{e}}}{}{}}00000{{}{{Bd{c}}}{}}00000{{{AF`{{b{A`c}}}}{b{A`AFb}}}AFd{}}0{{{AF`{{b{A`c}}}}{b{A`AFb}}}{{AFd{{Dh{Bd}}}}}{}}{bFl}00000{{{b{A`{ABb{c}}}}}{{AJh{c}}}{JlAJn}}{{}c{}}00000{{{b{{AJb{c}}}}}{{ABb{c}}}{JlAJn}}{e{{AL`{g}}}{}{{AIn{}{{Bh{c}}}}}{{AJ`{}{{Bh{c}}}}}}","D":"FCj","p":[[1,"reference",null,null,1],[5,"Private",2559],[1,"unit"],[5,"PublicKey",0,2560],[1,"u8"],[1,"array"],[1,"slice"],[0,"mut"],[5,"SecretKey",0,2560],[5,"NodeAddr",0,2561],[5,"RelayUrl",0,2562],[5,"RelayMap",0,2563],[5,"RelayNode",0,2563],[6,"Ordering",2564],[1,"bool"],[1,"u16"],[1,"usize"],[6,"Result",2565,null,1],[10,"Deserializer",2566],[17,"Item"],[6,"SocketAddr",2567],[10,"Iterator",2568],[1,"char"],[10,"FromIterator",2569],[5,"Formatter",2570],[5,"Error",2570],[6,"KeyParsingError",0,2560],[5,"String",2571],[5,"VerifyingKey",2572],[5,"Error",2573],[6,"HexOrBase32ParseError",2574],[5,"SigningKey",2575],[5,"RemoteInfo",638,2576],[5,"NodeTicket",2577],[5,"NodeInfo",547],[6,"Option",2578,null,1],[1,"tuple",null,null,1],[5,"Url",2579],[5,"Error",2580],[5,"Arc",2581,null,1],[10,"Into",2582],[10,"IntoIterator",2569],[1,"str"],[10,"CryptoRngCore",2583],[10,"Sized",2584],[10,"Hasher",2585],[10,"Serializer",2586],[5,"SharedSecret",2587],[5,"Signature",2588],[10,"Error",2589],[5,"Zeroizing",2590],[6,"Error",2591],[10,"AsRef",2582],[5,"TypeId",2592],[5,"ConcurrentDiscovery",281],[10,"Discovery",281],[5,"DiscoveryItem",281],[8,"Result",2570],[5,"Box",2593,null,1],[5,"Vec",2594],[5,"BTreeSet",2595],[5,"Endpoint",638],[8,"NodeId",0,2560],[8,"Result",2580],[8,"Boxed",2596],[5,"DnsDiscovery",334],[5,"LocalSwarmDiscovery",353],[5,"PkarrPublisher",372],[5,"PkarrResolver",372],[5,"PkarrRelayClient",372],[5,"SignedPacket",2597],[8,"BoxStream",2598],[1,"u32"],[5,"Duration",2599],[5,"Builder",449],[5,"DhtDiscovery",449],[5,"PkarrClient",2600],[5,"StaticProvider",498],[8,"DnsResolver",522],[10,"ResolverExt",522],[17,"Output"],[10,"Future",2601,null,1],[1,"u64"],[6,"IpAddr",2602],[10,"IntoName",2603],[10,"Clone",2604],[8,"TokioResolver",2605],[6,"IrohAttr",547],[5,"TxtAttrs",547],[5,"BTreeMap",2606],[10,"FromStr",2607],[10,"Display",2570],[10,"Hash",2585],[10,"Ord",2564],[10,"Debug",2570],[5,"Record",2608],[5,"Accept",638],[5,"Incoming",638],[5,"Connecting",638],[6,"ConnectionError",638,2609],[5,"Connection",638,2610],[5,"AcceptBi",638,2610],[5,"AcceptUni",638,2610],[5,"ServerConfig",638,2611],[5,"AckFrequencyConfig",638,2611],[5,"VarInt",638,2612],[5,"TransportConfig",638,2611],[5,"Builder",638],[10,"FnOnce",2613],[10,"Send",2584],[10,"Sync",2584],[10,"HandshakeTokenKey",638,2614],[10,"AeadKey",638,2614],[5,"SocketAddrV4",2567],[5,"SocketAddrV6",2567],[5,"MtuDiscoveryConfig",638,2611],[10,"ControllerFactory",638,2615],[5,"Instant",2616],[10,"Controller",638,2615],[6,"SendDatagramError",638,2610],[6,"ReadToEndError",638,2617],[6,"ReadError",638,2617],[6,"ResetError",638,2617],[6,"ReadExactError",638,2617],[6,"WriteError",638,2618],[6,"StoppedError",638,2618],[5,"UdpStats",638,2619],[5,"FrameStats",638,2619],[6,"ControlMsg",638,2576],[5,"PathStats",638,2619],[5,"ConnectionStats",638,2619],[5,"DirectAddrInfo",638,2576],[5,"Written",638,2620],[6,"ConnectionType",638,2576],[5,"ClosedStream",638,2621],[6,"Source",638,2622],[5,"ConnectionClose",638,2623],[5,"ApplicationClose",638,2623],[5,"TransportError",638],[5,"TransportErrorCode",638],[5,"DirectAddr",638,2624],[6,"DirectAddrType",638,2624],[5,"StreamId",638,2625],[6,"RelayMode",638],[5,"Watcher",2427],[6,"Dir",2625],[5,"RecvStream",638,2617],[5,"SendStream",638,2618],[5,"Chunk",638,2626],[5,"ExportKeyingMaterialError",638,2614],[5,"WeakConnectionHandle",638,2610],[5,"RetryError",638,2627],[5,"CryptoError",638,2614],[5,"UnsupportedVersion",638,2614],[5,"IncomingFuture",638],[6,"ReadableError",2628],[6,"Close",2623],[5,"Unspecified",2629],[6,"Error",2630],[5,"InvalidFrame",2623],[5,"VarIntBoundsExceeded",2612],[10,"Any",2592],[10,"CryptoServerConfig",638],[5,"ConnectionId",2631],[5,"Keys",2614],[6,"Side",2625],[5,"ZeroRttAccepted",638,2610],[5,"Incoming",2627],[5,"Join2",2632],[10,"IntoFuture",2633],[5,"IdleTimeout",2611],[5,"Receiver",2634],[5,"RttEstimator",2635],[5,"OpenBi",638,2610],[5,"OpenUni",638,2610],[5,"Pin",2636],[5,"Context",2637],[6,"Poll",2638],[5,"ReadDatagram",638,2610],[5,"Error",2639],[5,"ReadBuf",2640],[1,"i32"],[5,"Race2",2641],[5,"Bytes",2642],[5,"SendDatagram",2610],[5,"TransportParameters",2630],[10,"Session",2614],[1,"f32"],[1,"u128"],[5,"CertificateDer",2643],[6,"PrivateKeyDer",2643],[6,"Error",2644],[5,"PortmapMetrics",2166],[5,"NetReportMetrics",2166],[5,"MagicsockMetrics",2166],[5,"RelayMetrics",2166],[5,"IntoIter",2645],[10,"ProtocolHandler",2342],[8,"Boxed",2646],[5,"RouterBuilder",2342],[5,"Router",2342],[5,"DnsPkarrServer",2387,2647],[5,"CleanupDropGuard",2387],[5,"Server",2648],[5,"StunConfig",2648],[5,"Chain2",2649],[10,"IntoStream",2650],[10,"Stream",2598],[5,"Watchable",2427],[5,"WatcherStream",2427],[10,"Default",2651],[5,"WatchNextFut",2427],[5,"WatchInitializedFut",2427],[5,"Disconnected",2427],[10,"Eq",2564],[5,"Merge2",2652],[6,"NotKeyed",2653],[5,"RateLimiter",2654],[5,"RatelimitedStream",2655],[10,"DirectStateStore",2653],[10,"ReasonablyRealtime",2656],[10,"RateLimitingMiddleware",2657],[5,"Jitter",2658],[5,"Zip2",2659],[15,"Discovery",2164],[15,"NamedApp",2164]],"r":[[1,638],[3,2560],[4,2561],[5,2560],[6,2560],[7,2563],[8,638],[9,2563],[10,2562],[11,2560],[265,2660],[266,2660],[641,2610],[642,2610],[643,2611],[644,2614],[646,2623],[653,2626],[655,2621],[659,2610],[660,2623],[662,2609],[668,2619],[669,2576],[670,2576],[671,2615],[672,2615],[673,2614],[678,2624],[679,2576],[680,2624],[686,2614],[691,2619],[692,2614],[704,2611],[709,2610],[710,2610],[712,2619],[717,2610],[718,2617],[720,2617],[721,2617],[722,2617],[726,2576],[729,2617],[730,2627],[734,2610],[735,2618],[736,2611],[737,2622],[740,2618],[741,2625],[748,2611],[753,2619],[756,2614],[757,2612],[759,2610],[760,2618],[761,2620],[762,2610],[2388,2647],[2393,2661]],"b":[[118,"impl-Debug-for-PublicKey"],[119,"impl-Display-for-PublicKey"],[120,"impl-Display-for-KeyParsingError"],[121,"impl-Debug-for-KeyParsingError"],[122,"impl-Display-for-SecretKey"],[123,"impl-Debug-for-SecretKey"],[125,"impl-Display-for-RelayUrl"],[126,"impl-Debug-for-RelayUrl"],[127,"impl-Debug-for-RelayMap"],[128,"impl-Display-for-RelayMap"],[129,"impl-Debug-for-RelayNode"],[130,"impl-Display-for-RelayNode"],[135,"impl-From%3CError%3E-for-KeyParsingError"],[136,"impl-From%3CHexOrBase32ParseError%3E-for-KeyParsingError"],[137,"impl-From%3C%5Bu8;+32%5D%3E-for-SecretKey"],[139,"impl-From%3CSigningKey%3E-for-SecretKey"],[141,"impl-From%3CRemoteInfo%3E-for-NodeAddr"],[142,"impl-From%3CNodeTicket%3E-for-NodeAddr"],[143,"impl-From%3CNodeInfo%3E-for-NodeAddr"],[144,"impl-From%3C(PublicKey,+Option%3CRelayUrl%3E,+%26%5BSocketAddr%5D)%3E-for-NodeAddr"],[145,"impl-From%3CPublicKey%3E-for-NodeAddr"],[225,"impl-TryFrom%3C%26%5Bu8%5D%3E-for-PublicKey"],[226,"impl-TryFrom%3C%26%5Bu8;+32%5D%3E-for-PublicKey"],[585,"impl-Display-for-IrohAttr"],[586,"impl-Debug-for-IrohAttr"],[591,"impl-From%3C%26TxtAttrs%3CIrohAttr%3E%3E-for-NodeInfo"],[592,"impl-From%3CTxtAttrs%3CIrohAttr%3E%3E-for-NodeInfo"],[1368,"impl-Debug-for-SendDatagramError"],[1369,"impl-Display-for-SendDatagramError"],[1370,"impl-Display-for-RetryError"],[1371,"impl-Debug-for-RetryError"],[1373,"impl-Display-for-ReadToEndError"],[1374,"impl-Debug-for-ReadToEndError"],[1375,"impl-Display-for-ReadError"],[1376,"impl-Debug-for-ReadError"],[1377,"impl-Display-for-ResetError"],[1378,"impl-Debug-for-ResetError"],[1379,"impl-Display-for-ReadExactError"],[1380,"impl-Debug-for-ReadExactError"],[1382,"impl-Debug-for-WriteError"],[1383,"impl-Display-for-WriteError"],[1384,"impl-Debug-for-StoppedError"],[1385,"impl-Display-for-StoppedError"],[1387,"impl-Debug-for-VarInt"],[1388,"impl-Display-for-VarInt"],[1392,"impl-Display-for-ControlMsg"],[1393,"impl-Debug-for-ControlMsg"],[1399,"impl-Display-for-ConnectionType"],[1400,"impl-Debug-for-ConnectionType"],[1401,"impl-Display-for-ClosedStream"],[1402,"impl-Debug-for-ClosedStream"],[1403,"impl-Display-for-Source"],[1404,"impl-Debug-for-Source"],[1405,"impl-Display-for-ConnectionError"],[1406,"impl-Debug-for-ConnectionError"],[1413,"impl-Display-for-ConnectionClose"],[1414,"impl-Debug-for-ConnectionClose"],[1415,"impl-Debug-for-ApplicationClose"],[1416,"impl-Display-for-ApplicationClose"],[1417,"impl-Display-for-TransportError"],[1418,"impl-Debug-for-TransportError"],[1419,"impl-Display-for-TransportErrorCode"],[1420,"impl-Debug-for-TransportErrorCode"],[1422,"impl-Display-for-DirectAddrType"],[1423,"impl-Debug-for-DirectAddrType"],[1424,"impl-Display-for-StreamId"],[1425,"impl-Debug-for-StreamId"],[1452,"impl-From%3CReadableError%3E-for-ReadError"],[1454,"impl-From%3CConnectionError%3E-for-ReadError"],[1455,"impl-From%3CResetError%3E-for-ReadError"],[1462,"impl-From%3CStoppedError%3E-for-WriteError"],[1463,"impl-From%3CConnectionError%3E-for-WriteError"],[1464,"impl-From%3CClosedStream%3E-for-WriteError"],[1468,"impl-From%3Cu8%3E-for-VarInt"],[1469,"impl-From%3Cu16%3E-for-VarInt"],[1470,"impl-From%3CStreamId%3E-for-VarInt"],[1471,"impl-From%3Cu32%3E-for-VarInt"],[1485,"impl-From%3CClose%3E-for-ConnectionError"],[1486,"impl-From%3CTransportError%3E-for-ConnectionError"],[1498,"impl-From%3CTransportErrorCode%3E-for-TransportError"],[1499,"impl-From%3CError%3E-for-TransportError"],[1501,"impl-From%3CInvalidFrame%3E-for-TransportError"],[1780,"impl-RecvStream"],[1781,"impl-AsyncRead-for-RecvStream"],[1783,"impl-AsyncWrite-for-SendStream"],[1784,"impl-SendStream"],[1948,"impl-TryFrom%3Cu64%3E-for-VarInt"],[1949,"impl-TryFrom%3Cu128%3E-for-VarInt"],[1950,"impl-TryFrom%3Cusize%3E-for-VarInt"],[2482,"impl-Display-for-Disconnected"],[2483,"impl-Debug-for-Disconnected"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAOIGoQACAAAACQAAAA0ABQAUACgAQAATAFgABgBgAAEAYwAgAIYAAACIAAIAjAAAAI4AAACQAAIAlAAAAJsACACoAAgAvwADAMgABADPAAAA1QAVAOwADQD9AAYAHQEAAB8BCwAsAQEALwEBADMBAQA2AQEAQAEAAEIBAABFAQkAUgEFAFkBAABdAQQAZAEFAGsBAABuAQYAfAEXAJUBBgCfAQUArQEAAK8BAACxAQsAvgECAMQBBADMAQgA1gEDANwBAADeAQEA5QEAAOcBAADpAQQA7wEDAPYBBgAAAgAAAwIAAAUCAAAHAgMAFwIAAB8CAAAqAgEALQIQAD8CDgBQAgIAWQIBAF0CAwBpAgAAbQIAAHACAAByAgwAAAMgACcDAAApAwAAOQNpAKsDIADNA0EAEwQDABgEAwAiBAAAJAQAACkEAQAvBAoAOwRuALMENgDrBGcAVwVCAKcFAACrBQAArQUAAK8FAQCyBQAAtAUAALcFAgC7BQAAvQUDAM4FAQDWBQAA2AUAANsFAQDeBQAA4wUAAOsFIAASBgAAFAYEAB0GAAAhBjQAlAYJAKQGCADBBgAAxQYCANAGAQDVBgAA4QYDAOYGAQDqBgoA9gYCAP8GCAAgBwEAMQcEADsHBwBJBwAASwcBAE4HAQBRBzQAigcSAKAHXQD/BzQANwg0AHsIAwCACA8AkggLAKEICwCyCAgAwAgDAMUIAwDNCAoA4QgGAOkIBwDyCAgA/ggGAAYJFAAdCQgAKgkAAC0JAwAyCQgAPQkBAEEJAgBLCQgAVgkDAFsJAwBhCQMAZwkBAHQJBwCCCTIAuwkCAMAJBQDNCQUA1AkGAN4JGAD4CQUA/wkAAA==","P":[[20,"T"],[34,""],[40,"T"],[46,""],[56,"K"],[60,""],[63,"T"],[68,""],[69,"T"],[78,"D"],[80,"__D"],[83,""],[95,"U"],[98,""],[103,"K"],[118,""],[132,"T"],[133,""],[134,"T"],[135,""],[138,"T"],[139,""],[140,"T"],[141,""],[146,"T"],[147,""],[148,"T"],[150,""],[152,"I,"],[153,""],[154,"T"],[160,""],[165,"R"],[166,""],[167,"H"],[168,"__H"],[169,""],[176,"U"],[183,""],[199,"S"],[201,"__S"],[204,""],[212,"T"],[218,""],[224,"U,T"],[225,""],[227,"U,T"],[228,""],[229,"U,T"],[234,"T"],[235,"U"],[242,""],[252,"V"],[260,""],[261,""],[285,""],[286,"T"],[290,""],[291,"T"],[292,""],[294,"T"],[299,""],[304,"T"],[308,""],[311,"U"],[318,""],[325,"T"],[326,"U,T"],[328,"U"],[330,""],[332,"V"],[337,"T"],[341,""],[343,"T"],[344,""],[345,"U"],[346,""],[349,"U,T"],[350,"U"],[351,""],[352,"V"],[355,"T"],[359,""],[361,"T"],[362,""],[363,"U"],[364,""],[368,"U,T"],[369,"U"],[370,""],[371,"V"],[379,""],[382,"T"],[388,""],[391,"T"],[394,""],[397,"T"],[404,""],[411,"T"],[417,""],[420,"U"],[423,""],[432,"T"],[435,"U,T"],[438,"U"],[441,""],[445,"V"],[448,""],[452,"T"],[456,""],[460,"T"],[461,""],[464,"T"],[468,""],[473,"T"],[476,""],[480,"U"],[482,""],[488,"T"],[489,"U,T"],[491,"U"],[493,""],[496,"V"],[500,""],[501,"T"],[503,""],[504,"T"],[506,""],[508,"T"],[509,","],[510,""],[512,"U"],[513,""],[517,""],[518,"U,T"],[519,"U"],[520,""],[521,"V"],[524,""],[533,"N"],[546,""],[555,"T"],[562,""],[563,"T"],[564,""],[566,"K"],[567,"T"],[574,""],[579,"K"],[585,""],[588,"T"],[591,""],[594,"T"],[595,""],[596,"T"],[597,"T,"],[598,""],[599,"T"],[601,"FromStr::Err"],[602,",T"],[603,""],[604,"__H"],[605,""],[608,"U"],[611,"T"],[613,""],[614,"T"],[616,""],[619,"T"],[621,""],[622,"T"],[623,""],[625,"TryFrom::Error"],[626,"U,T"],[629,"U"],[632,""],[635,"V"],[767,""],[809,"D,F"],[810,""],[824,"T"],[930,""],[972,"T"],[1005,""],[1047,"K"],[1051,""],[1056,""],[1058,""],[1082,"T"],[1188,"__D"],[1193,""],[1284,"K"],[1364,""],[1438,"T"],[1446,""],[1447,"T"],[1450,""],[1451,"T"],[1452,""],[1453,"T"],[1454,""],[1456,"T"],[1457,""],[1458,"T"],[1459,""],[1460,"T"],[1462,""],[1465,"T"],[1466,""],[1467,"T"],[1468,""],[1472,"T"],[1485,""],[1487,"T"],[1493,""],[1494,"T"],[1495,""],[1496,"T"],[1498,""],[1500,"T"],[1501,""],[1502,"T"],[1506,""],[1507,"T"],[1547,""],[1555,"__H"],[1560,""],[1628,"U"],[1681,""],[1690,"IntoFuture::IntoFuture"],[1691,""],[1699,"F2,F1"],[1708,""],[1776,"Future::Output"],[1779,""],[1790,"T,S2,F1"],[1799,""],[1830,""],[1831,""],[1840,"__S"],[1845,""],[1872,"T"],[1905,""],[1929,"U,T"],[1948,""],[1951,"U,T"],[1985,"U"],[2038,"F"],[2046,""],[2102,"V"],[2155,""],[2183,"T"],[2193,""],[2197,"T"],[2201,""],[2212,"T"],[2225,""],[2235,"T"],[2244,""],[2248,"U"],[2252,""],[2314,"T"],[2318,"U,T"],[2322,"U"],[2326,""],[2337,"V"],[2345,""],[2347,",T"],[2348,"T"],[2352,""],[2354,"T"],[2355,""],[2356,"T"],[2360,""],[2366,"T"],[2369,""],[2371,"U"],[2373,""],[2378,"T"],[2379,"U,T"],[2381,"U"],[2383,""],[2385,"V"],[2389,"T"],[2393,""],[2394,"T"],[2398,""],[2404,"T"],[2406,""],[2408,"U"],[2412,""],[2419,"U,T"],[2421,"U"],[2423,""],[2425,"V"],[2433,""],[2436,"T"],[2448,"T,S2,S1"],[2449,"T"],[2455,""],[2458,"T"],[2471,""],[2477,"T"],[2482,""],[2484,"T"],[2495,""],[2501,"T"],[2502,"U"],[2508,""],[2510,"S"],[2511,"F2,F1"],[2513,"T,S2,S1"],[2514,"T"],[2515,"T,Future::Output"],[2517,"T,Stream::Item"],[2518,"T,S2,F1"],[2520,"D,C,MW,S"],[2522,"T"],[2528,""],[2529,"U,T"],[2535,"U"],[2541,"F"],[2543,"S"],[2544,""],[2550,"T"],[2551,"V"],[2557,"T"],[2558,"T,S2,S1"]]}],["iroh_base",{"t":"TPPGFISFFFFFNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNONNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPFGPGPPPPNNNNNNNNNNNNNNHNNNNNNHHNNNNNNNNOHHHONNNNNNNNNNNNNNNNNNPGTPFPKPNNNNNNNNNNNNNNNNNNNMNNNNNNNNNMNNNNNNNNNNNNO","n":["BYTE_SIZE","Base32","Key","KeyParsingError","NodeAddr","NodeId","PUBLIC_KEY_LENGTH","PublicKey","RelayUrl","SecretKey","SharedSecret","Signature","as_bytes","as_ref","base32","borrow","","","","","","","borrow_mut","","","","","","","clone","","","","","clone_into","","","","","clone_to_uninit","","","","","cmp","","","deref","deserialize","","","","","direct_addresses","","encode_hex","encode_hex_upper","eq","","","","fmt","","","","","","","","","","","","","","fmt_short","from","","","","","","","","","","","","","","","","","","","from_bytes","","","from_components","from_parts","from_slice","from_str","","","","generate","generate_with_rng","hash","","into","","","","","","","is_empty","new","node_id","open","partial_cmp","","","public","r_bytes","relay_url","","s_bytes","seal","serialize","","","","","shared","sign","source","ticket","to_bytes","","","to_openssh","to_owned","","","","","to_string","","","","","to_vec","try_from","","","","","","","","","","","","","try_from_openssh","try_into","","","","","","","type_id","","","","","","","verify","vzip","","","","","","","with_direct_addresses","with_relay_url","Base32","DecodeError","DecodeKind","Hex","HexOrBase32ParseError","Length","Padding","Symbol","Trailing","borrow","","","borrow_mut","","","clone","","clone_into","","clone_to_uninit","","eq","","fmt","","","","","","","fmt_append","fmt_short","from","","","","","into","","","kind","parse_array","parse_array_hex_or_base32","parse_vec","position","source","to_owned","","to_string","","","try_from","","","try_into","","","type_id","","","vzip","","","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","","vzip","","expected"],"q":[[0,"iroh_base"],[191,"iroh_base::base32"],[254,"iroh_base::ticket"],[304,"iroh_base::ticket::Error"],[305,"iroh_base::key"],[306,"ed25519"],[307,"iroh_base::node_addr"],[308,"iroh_base::relay_url"],[309,"core::cmp"],[310,"core::result"],[311,"serde::de"],[312,"core::net::socket_addr"],[313,"core::iter::traits::iterator"],[314,"core::iter::traits::collect"],[315,"iroh_base::key::encryption"],[316,"core::fmt"],[317,"alloc::string"],[318,"ed25519_dalek::signature"],[319,"ed25519_dalek::verifying"],[320,"ed25519_dalek::errors"],[321,"ed25519_dalek::signing"],[322,"iroh_base::ticket::node"],[323,"core::option"],[324,"url"],[325,"signature::error"],[326,"rand_core"],[327,"core::marker"],[328,"core::hash"],[329,"aead"],[330,"anyhow"],[331,"serde::ser"],[332,"core::error"],[333,"zeroize"],[334,"ssh_key::error"],[335,"alloc::vec"],[336,"ssh_key::signature"],[337,"core::convert"],[338,"core::any"],[339,"data_encoding"],[340,"hex::error"],[341,"postcard::error"],[342,"ed25519_dalek::constants"]],"i":"nCb0`````````b0`Bj312A`AbAd3645210642106421064210410064210114464103666644552210043666644555222111100642616642022403645210111341026116364210225`66226421064520636666444522102364521036452104364521011Cj``0`Fl00001Fn12010101010`112200``122201200```0210120120120120120Gd`Gb1`1`1D`20200010000220022210002001021000202020202Gh","f":"````````````{{{d{b}}}{{d{{h{f}}}}}}{{{d{b}}}{{d{{j{f}}}}}}`{d{{d{c}}}{}}000000{{{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`}}}}}}}}}}`{dc{{Bf{Bd}}}}0{{{d{n}}{d{n}}}Bh}{{{d{b}}{d{b}}}Bh}{{{d{Ab}}{d{Ab}}}Bh}{{{d{Ad}}{d{Ad}}}Bh}{{{d{Bj}}{d{lBl}}}Bn}{{{d{n}}{d{lBl}}}{{Aj{AfC`}}}}000{{{d{b}}{d{lBl}}}Bn}0{{{d{Cb}}{d{lBl}}}Bn}0{{{d{A`}}{d{lBl}}}Bn}0{{{d{Ab}}{d{lBl}}}Bn}{{{d{Ad}}{d{lBl}}}Bn}0{{{d{b}}}Cd}{cc{}}{{{d{{h{f}}}}}n}{{{h{f}}}n}2{Cfn}{Chb}4{CjCb}{ClCb}66{CnA`}{{{h{f}}}A`}{D`Ab}{DbAb}:{{{Df{b{Dd{Ad}}{d{{j{B`}}}}}}}Ab}{DhAd}<;{{{d{{h{f}}}}}{{Aj{bCl}}}}{{{d{{h{f}}}}}A`}{{{h{f}}{h{f}}}n}{{b{Dd{Ad}}c}Ab{{Dj{}{{An{B`}}}}}}{{{d{{j{f}}}}}{{Aj{nDl}}}}{{{d{Dn}}}{{Aj{nDl}}}}{{{d{Dn}}}{{Aj{bc}}}{}}{{{d{Dn}}}{{Aj{A`c}}}{}}{{{d{Dn}}}{{Aj{Adc}}}{}}{{}A`}{{{d{lc}}}A`{E`Eb}}{{{d{b}}{d{lc}}}AfEd}{{{d{Ad}}{d{lc}}}AfEd}{{}c{}}000000{{{d{Ab}}}Bh}{bAb}`{{{d{Bj}}{d{lEf}}}{{Eh{Af}}}}{{{d{b}}{d{b}}}{{Dd{Ah}}}}{{{d{Ab}}{d{Ab}}}{{Dd{Ah}}}}{{{d{Ad}}{d{Ad}}}{{Dd{Ah}}}}{{{d{A`}}}b}{{{d{n}}}{{d{{h{f}}}}}}{{{d{Ab}}}{{Dd{{d{Ad}}}}}}`1{{{d{Bj}}{d{lEf}}}Af}{{{d{n}}c}AjEj}{{{d{b}}c}AjEj}{{{d{A`}}c}AjEj}{{{d{Ab}}c}AjEj}{{{d{Ad}}c}AjEj}{{{d{A`}}{d{b}}}Bj}{{{d{A`}}{d{{j{f}}}}}n}{{{d{Cb}}}{{Dd{{d{El}}}}}}`{{{d{n}}}{{h{f}}}}0{{{d{A`}}}{{h{f}}}}{{{d{A`}}}{{F`{{En{Cd}}}}}}{dc{}}0000{dCd}0000{{{d{n}}}{{Fb{f}}}}{c{{Aj{e}}}{}{}}0{{{d{{j{f}}}}}{{Aj{nDl}}}}{{{d{Fd}}}{{Aj{nFf}}}}{Fd{{Aj{nFf}}}}3{{{d{{j{f}}}}}{{Aj{bc}}}{}}{{{d{{h{f}}}}}{{Aj{bc}}}{}}5{{{d{{j{f}}}}}{{Aj{A`c}}}{}}666{c{{Eh{A`}}}{{Fh{{j{f}}}}}}{{}{{Aj{c}}}{}}000000{dFj}000000{{{d{b}}{d{{j{f}}}}{d{n}}}{{Aj{AfCl}}}}{{}c{}}000000{{Abc}Ab{{Dj{}{{An{B`}}}}}}{{AbAd}Ab}`````````{d{{d{c}}}{}}00{{{d{l}}}{{d{lc}}}{}}00{{{d{Fl}}}Fl}{{{d{Fn}}}Fn}{{d{d{lc}}}Af{}}0{{df}Af}0{{{d{Fl}}{d{Fl}}}Bh}{{{d{Fn}}{d{Fn}}}Bh}{cCd{{Fh{{j{f}}}}}}{{{d{Fl}}{d{lBl}}}{{Aj{AfC`}}}}0{{{d{Cj}}{d{lBl}}}Bn}0{{{d{Fn}}{d{lBl}}}{{Aj{AfC`}}}}0{{c{d{lCd}}}Af{{Fh{{j{f}}}}}}4{cc{}}0{G`Cj}{FnCj}2{{}c{}}00`{{{d{Dn}}}{{Aj{{h{f}}Fn}}}}{{{d{Dn}}}{{Aj{{h{f}}Cj}}}}{{{d{Dn}}}{{Aj{{Fb{f}}Fn}}}}`{{{d{Cj}}}{{Dd{{d{El}}}}}}{dc{}}0{dCd}00{c{{Aj{e}}}{}{}}00{{}{{Aj{c}}}{}}00{dFj}00{{}c{}}00````````{d{{d{c}}}{}}0{{{d{l}}}{{d{lc}}}{}}0{{{d{D`}}}D`}{{d{d{lc}}}Af{}}{{df}Af}{{{d{Dn}}}{{Aj{GbGd}}}}{c{{Eh{D`}}}Al}{{{d{D`}}{d{D`}}}Bh}{{{d{D`}}{d{lBl}}}Bn}0{{{d{Gd}}{d{lBl}}}Bn}0{cc{}}{AbD`}{FnGd}{GfGd}3{{{d{{j{f}}}}}{{Aj{GbGd}}}}{{{d{{j{f}}}}}{{Aj{D`Gd}}}}{{{d{Dn}}}{{Eh{D`c}}}{}}{{}c{}}06{{{d{D`}}}{{d{Ab}}}}{{{d{Gb}}}Cd}{{{d{D`}}c}EhEj}{{{d{Gd}}}{{Dd{{d{El}}}}}}{{{d{Gb}}}{{Fb{f}}}}{{{d{D`}}}{{Fb{f}}}}{dc{}}{dCd}0{c{{Aj{e}}}{}{}}0{{}{{Aj{c}}}{}}0{dFj}0{{}c{}}0`","D":"Ll","p":[[5,"PublicKey",0,305],[1,"reference",null,null,1],[1,"u8"],[1,"array"],[1,"slice"],[0,"mut"],[5,"Signature",0,306],[5,"SecretKey",0,305],[5,"NodeAddr",0,307],[5,"RelayUrl",0,308],[1,"unit"],[6,"Ordering",309],[6,"Result",310,null,1],[10,"Deserializer",311],[17,"Item"],[6,"SocketAddr",312],[10,"Iterator",313],[1,"char"],[10,"FromIterator",314],[1,"bool"],[5,"SharedSecret",0,315],[5,"Formatter",316],[8,"Result",316],[5,"Error",316],[6,"KeyParsingError",0,305],[5,"String",317],[5,"InternalSignature",318],[5,"VerifyingKey",319],[6,"HexOrBase32ParseError",191],[8,"SignatureError",320],[5,"SigningKey",321],[5,"NodeTicket",254,322],[8,"NodeId",0,305],[6,"Option",323,null,1],[1,"tuple",null,null,1],[5,"Url",324],[10,"IntoIterator",314],[5,"Error",325],[1,"str"],[10,"CryptoRngCore",326],[10,"Sized",327],[10,"Hasher",328],[10,"Buffer",329],[8,"Result",330],[10,"Serializer",331],[10,"Error",332],[5,"Zeroizing",333],[8,"Result",334],[5,"Vec",335],[5,"Signature",336],[6,"Error",334],[10,"AsRef",337],[5,"TypeId",338],[6,"DecodeKind",191,339],[5,"DecodeError",191,339],[6,"FromHexError",340],[10,"Ticket",254],[6,"Error",254],[6,"Error",341],[15,"Kind",304]],"r":[[3,305],[4,307],[5,305],[6,342],[7,305],[8,308],[9,305],[10,315],[11,306],[192,339],[193,339],[258,322]],"b":[[62,"impl-LowerHex-for-Signature"],[63,"impl-UpperHex-for-Signature"],[64,"impl-Debug-for-Signature"],[65,"impl-Display-for-Signature"],[66,"impl-Display-for-PublicKey"],[67,"impl-Debug-for-PublicKey"],[68,"impl-Debug-for-KeyParsingError"],[69,"impl-Display-for-KeyParsingError"],[70,"impl-Debug-for-SecretKey"],[71,"impl-Display-for-SecretKey"],[73,"impl-Debug-for-RelayUrl"],[74,"impl-Display-for-RelayUrl"],[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"],[80,"impl-From%3CInternalSignature%3E-for-Signature"],[83,"impl-From%3CHexOrBase32ParseError%3E-for-KeyParsingError"],[84,"impl-From%3CError%3E-for-KeyParsingError"],[87,"impl-From%3CSigningKey%3E-for-SecretKey"],[88,"impl-From%3C%5Bu8;+32%5D%3E-for-SecretKey"],[89,"impl-From%3CNodeTicket%3E-for-NodeAddr"],[90,"impl-From%3CPublicKey%3E-for-NodeAddr"],[92,"impl-From%3C(PublicKey,+Option%3CRelayUrl%3E,+%26%5BSocketAddr%5D)%3E-for-NodeAddr"],[138,"impl-SignatureEncoding-for-Signature"],[139,"impl-Signature"],[155,"impl-TryFrom%3C%26%5Bu8%5D%3E-for-Signature"],[156,"impl-TryFrom%3C%26Signature%3E-for-Signature"],[157,"impl-TryFrom%3CSignature%3E-for-Signature"],[159,"impl-TryFrom%3C%26%5Bu8%5D%3E-for-PublicKey"],[160,"impl-TryFrom%3C%26%5Bu8;+32%5D%3E-for-PublicKey"],[215,"impl-Display-for-DecodeKind"],[216,"impl-Debug-for-DecodeKind"],[217,"impl-Display-for-HexOrBase32ParseError"],[218,"impl-Debug-for-HexOrBase32ParseError"],[219,"impl-Debug-for-DecodeError"],[220,"impl-Display-for-DecodeError"],[225,"impl-From%3CFromHexError%3E-for-HexOrBase32ParseError"],[226,"impl-From%3CDecodeError%3E-for-HexOrBase32ParseError"],[272,"impl-Debug-for-NodeTicket"],[273,"impl-Display-for-NodeTicket"],[274,"impl-Debug-for-Error"],[275,"impl-Display-for-Error"],[278,"impl-From%3CDecodeError%3E-for-Error"],[279,"impl-From%3CError%3E-for-Error"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAMsAGwAOACcAOAATAE4AAQBRAAEAVAABAFgAAQBbAAAAXQABAGYAAwBsAAEAeQACAIIABACJAAIAjwAJAJoADACoAA0AtwAGAMkADQDYAAUA4gABAO0AEQAHAQYADwEFABcBAQAbAQEAIgEBACUBDAA=","P":[[15,"T"],[29,""],[34,"T"],[39,""],[47,"Deref::Target"],[48,"D"],[51,"__D"],[53,""],[55,"U"],[57,""],[76,"T"],[77,""],[79,"T"],[80,""],[82,"T"],[83,""],[85,"T"],[87,""],[91,"T"],[92,""],[94,"T"],[95,""],[99,""],[100,""],[102,"FromStr::Err"],[105,""],[106,"R"],[107,"H"],[108,"__H"],[109,"U"],[116,""],[129,"S"],[132,"__S"],[134,""],[142,"T"],[147,""],[153,"U,T"],[155,""],[158,"U,T"],[159,"TryFrom::Error"],[161,"U,T"],[162,"TryFrom::Error"],[163,"U,T"],[166,"T"],[167,"U"],[174,""],[182,"V"],[189,""],[190,""],[200,"T"],[206,""],[208,"T"],[210,""],[214,""],[215,""],[221,""],[223,"T"],[225,""],[227,"T"],[228,"U"],[232,""],[237,"T"],[239,""],[242,"U,T"],[245,"U"],[248,""],[251,"V"],[262,"T"],[266,""],[267,"T"],[268,""],[270,"D"],[271,""],[276,"T"],[277,""],[280,"T"],[281,""],[283,"FromStr::Err"],[284,"U"],[286,""],[289,"S"],[290,""],[293,"T"],[294,""],[296,"U,T"],[298,"U"],[300,""],[302,"V"]]}],["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":"FFFFFFNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNOOOOONNNNNNNNNNNNOOOONNOONNHOOONOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNONNNNNN","n":["Addr","Client","Metrics","QuicConfig","RelayLatencies","Report","addr","borrow","","","","","","borrow_mut","","","","","","captive_portal","client_config","clone","","","","","clone_into","","","","","clone_to_uninit","","","","","default","","","deref","","","","","","deref_mut","","","","","","drop","","","","","","ep","eq","","equivalent","","","","","","fmt","","","","","","","from","","","","","","get_report","get_report_channel","global_v4","global_v6","hair_pinning","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","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","to_owned","","","","","to_string","try_from","","","","","","try_into","","","","","","type_id","","","","","","udp","vzip","","","","",""],"q":[[0,"iroh_net_report"],[154,"iroh_net_report::metrics"],[155,"iroh_net_report::reportgen"],[156,"core::fmt"],[157,"iroh_relay::relay_map"],[158,"netwatch::udp"],[159,"alloc::sync"],[160,"core::option"],[161,"anyhow"],[162,"tokio::sync::oneshot"],[163,"core::any"],[164,"alloc::vec::into_iter"],[165,"iroh_base::relay_url"],[166,"core::time"],[167,"core::iter::traits::iterator"],[168,"portmapper"],[169,"hickory_resolver::resolver"],[170,"bytes::bytes"],[171,"core::net::socket_addr"],[172,"alloc::string"],[173,"core::result"]],"i":"``````bjlnA`4f43215023432104321043210421432150432150432150321222111432215043215055222224321504321502222412245`222022244444444321024321504321504321502432150","f":"``````{{{d{b}}}f}{d{{d{c}}}{}}00000{{{d{h}}}{{d{hc}}}{}}00000``{{{d{j}}}j}{{{d{l}}}l}{{{d{n}}}n}{{{d{A`}}}A`}{{{d{f}}}f}{{d{d{hc}}}Ab{}}0000{{dAd}Ab}0000{{}j}{{}n}{{}A`}{Af{{d{c}}}{}}00000{Af{{d{hc}}}{}}00000{AfAb}00000`{{{d{n}}{d{n}}}Ah}{{{d{A`}}{d{A`}}}Ah}{{d{d{c}}}Ah{}}00000{{{d{j}}{d{hAj}}}Al}{{{d{l}}{d{hAj}}}Al}{{{d{n}}{d{hAj}}}Al}0{{{d{A`}}{d{hAj}}}Al}{{{d{b}}{d{hAj}}}Al}{{{d{f}}{d{hAj}}}Al}{cc{}}00000{{{d{hb}}An{Bd{{Bb{B`}}}}{Bd{{Bb{B`}}}}{Bd{l}}}{{Bf{{Bb{n}}}}}}{{{d{hb}}An{Bd{{Bb{B`}}}}{Bd{{Bb{B`}}}}{Bd{l}}}{{Bf{{Bh{{Bf{{Bb{n}}}}}}}}}}`````{{}Af}00000{{}c{}}00000````{{{d{j}}}{{C`{{Bn{{d{Bj}}{d{Bl}}}}}}}}{{{d{A`}}}{{`{{Ch{}{{Cb{{Bn{{d{Cd}}Cf}}}}}}}}}}``{{}{{d{Bj}}}}{{{Bd{Cj}}Cl}{{Bf{b}}}}{{}Ah}```{{{d{f}}CnD`}Ab}``````````{dc{}}0000{dDb}{c{{Dd{e}}}{}{}}00000{{}{{Dd{c}}}{}}00000{dDf}00000`{{}c{}}00000","D":"En","p":[[5,"Client",0],[1,"reference",null,null,1],[5,"Addr",0],[0,"mut"],[5,"Metrics",0,154],[5,"QuicConfig",0,155],[5,"Report",0],[5,"RelayLatencies",0],[1,"unit"],[1,"u8"],[1,"usize"],[1,"bool"],[5,"Formatter",156],[8,"Result",156],[5,"RelayMap",157],[5,"UdpSocket",158],[5,"Arc",159,null,1],[6,"Option",160,null,1],[8,"Result",161],[5,"Receiver",162],[1,"str"],[10,"Any",163],[1,"tuple",null,null,1],[5,"IntoIter",164],[17,"Item"],[5,"RelayUrl",165],[5,"Duration",166],[10,"Iterator",167],[5,"Client",168],[8,"TokioResolver",169],[5,"Bytes",170],[6,"SocketAddr",171],[5,"String",172],[6,"Result",173,null,1],[5,"TypeId",163]],"r":[[2,154],[3,155]],"b":[[68,"impl-Debug-for-Report"],[69,"impl-Display-for-Report"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAGsACAAIAAsAFgAjADsADgBXAAUAZwAAAGsAAAB1AB4AlQAFAA==","P":[[7,"T"],[21,""],[26,"T"],[31,""],[39,"T"],[51,""],[60,"K"],[66,""],[73,"T"],[79,""],[92,"U"],[102,""],[123,"T"],[128,""],[129,"U,T"],[135,"U"],[141,""],[148,"V"]]}],["iroh_relay",{"t":"PEEEEPEPPPGPFFFFPNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNOCCONNNNNCOONNNNNNNNNNNNNNNNNNNNNNONNNNNNOOOOOPPFFGFPPPPPPPPPPPPPPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNSSSSSGSSPPNNNNNNNNNNNNNNNNNNNNNNNCCCSHSPGPPPPPPPPGFPPPPPPPPPPPGFPFPPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNCHHNHHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNSSSSSSFNNNNNNNNNNNNNNNGFSPFPGFPFFPFFFFFPFOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNOOOONONNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOONNNNNNNNNNNNNONNNNNNNNNNNNNONNNNNNNNNNNNNONONNONNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNOOONNOOONNNNNONOONONOOOOOONNNONNCONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNOOOHHHHHH","n":["Health","HttpClient","HttpClientBuilder","HttpClientError","HttpClientReceiver","KeepAlive","MAX_PACKET_SIZE","NodeGone","Ping","Pong","ReceivedMessage","ReceivedPacket","RelayConn","RelayMap","RelayNode","RelayQuicConfig","ServerRestarting","borrow","","","","","borrow_mut","","","","","client","clone","","","","","clone_into","","","","","clone_to_uninit","","","","","close","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_closed","is_empty","len","local_addr","nodes","note_preferred","partial_cmp","","port","protos","quic","","send","send_ping","send_pong","serialize","","server","stun_only","stun_port","to_owned","","","","","to_string","","try_from","","","","","try_into","","","","","type_id","","","","","url","urls","vzip","","","","","data","problem","reconnect_in","remote_node_id","try_for","ActorGone","Build","Client","ClientBuilder","ClientError","ClientReceiver","Closed","ConnectTimeout","DialIO","Dns","Http","Hyper","IPDisabled","InvalidUrl","NoLocalAddr","PingAborted","PingTimeout","Proxy","Receive","Send","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","","","","fmt","","","","","from","","","","","","","","init","","","","insecure_skip_cert_verify","into","","","","is_connected","is_preferred","is_prober","local_addr","make_dangerous_client_config","new","note_preferred","ping","protocol","proxy_url","public_key","recv","send","send_pong","server_public_key","server_url","source","to_owned","to_string","try_from","","","","try_into","","","","type_id","","","","vzip","","","","DEFAULT_HTTPS_PORT","DEFAULT_HTTP_PORT","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","","","","","","encode_hex","encode_hex_upper","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","","","","","","","","","","","","","derp_accepts","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","","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","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"],[161,"iroh_relay::ReceivedMessage"],[166,"iroh_relay::client"],[274,"iroh_relay::defaults"],[279,"iroh_relay::http"],[307,"iroh_relay::protos"],[310,"iroh_relay::protos::disco"],[312,"iroh_relay::protos::relay"],[313,"iroh_relay::protos::stun"],[540,"iroh_relay::protos::stun::methods"],[543,"iroh_relay::quic"],[562,"iroh_relay::server"],[836,"iroh_relay::server::CertConfig"],[838,"iroh_relay::server::testing"],[844,"iroh_relay::client::conn"],[845,"iroh_relay::relay_map"],[846,"core::cmp"],[847,"iroh_base::relay_url"],[848,"core::result"],[849,"serde::de"],[850,"core::fmt"],[851,"anyhow"],[852,"alloc::sync"],[853,"core::convert"],[854,"core::iter::traits::collect"],[855,"core::option"],[856,"core::net::socket_addr"],[857,"core::iter::traits::iterator"],[858,"iroh_base::key"],[859,"bytes::bytes"],[860,"serde::ser"],[861,"alloc::string"],[862,"core::any"],[863,"futures_lite::future"],[864,"core::ops::function"],[865,"core::marker"],[866,"hickory_resolver::resolver"],[867,"hyper::error"],[868,"tokio_tungstenite_wasm::error"],[869,"http::error"],[870,"std::io::error"],[871,"rustls::client::client_conn"],[872,"core::time"],[873,"url"],[874,"core::error"],[875,"http::header::value"],[876,"stun_rs::attributes"],[877,"stun_rs::attributes::stun::alternate_server"],[878,"stun_rs::error"],[879,"stun_rs::types"],[880,"stun_rs::attributes::stun::error_code"],[881,"stun_rs::attributes::stun::fingerprint"],[882,"stun_rs::attributes::stun::mapped_address"],[883,"stun_rs::attributes::stun::message_integrity"],[884,"stun_rs::attributes::stun::message_integrity_sha256"],[885,"stun_rs::attributes::stun::nonce"],[886,"stun_rs::attributes::stun::password_algorithm"],[887,"stun_rs::attributes::stun::password_algorithms"],[888,"stun_rs::attributes::stun::realm"],[889,"stun_rs::attributes::stun::software"],[890,"stun_rs::attributes::unknown"],[891,"stun_rs::attributes::stun::unknown_attributes"],[892,"stun_rs::attributes::stun::user_hash"],[893,"stun_rs::attributes::stun::user_name"],[894,"stun_rs::attributes::stun::xor_mapped_address"],[895,"stun_rs::context"],[896,"stun_rs::message"],[897,"core::hash"],[898,"alloc::vec"],[899,"iroh_quinn::endpoint"],[900,"rustls_pki_types"],[901,"iroh_relay::server::metrics"],[902,"core::default"],[903,"iroh_relay::server::resolver"],[904,"rustls::crypto::signer"],[905,"reloadable_core"],[906,"alloc::vec::into_iter"],[907,"core::pin"],[908,"core::task::wake"],[909,"core::task::poll"],[910,"tokio::io::read_buf"],[911,"std::io"],[912,"rustls::server::server_conn"],[913,"tokio_util::task::abort_on_drop"],[914,"stun_rs"],[915,"stun_rs::methods"]],"i":"h````0`000`0````0f1jln34210`34210342103421031010202`3421034210103421023210333222111000342211034210222`3421034210322323100``133310`1134210213421034210342101234210ObOdOf20Eh0````00000000000000000Db1EbEd23102211111131023102310233102333331023102231021221`211221011223133102310231023102````````Ff000000000000000000000000``````Gd`0In10Jj002``22020022212``1`222222Gj33333333303333333Il314Jb31425031425142514252211214225031425031425032242444222555555555555555514225003314222555555555555555550312142503142503`5555555555555555```2``14252031442503142503142503142503```````Kb00000000000000```Md`0``Lj``1`````0`Lf0KjKlLnM`32Lh6L`Ll43Mb8Kn;Kf985;43762:1<019920:9819819819984:9855;43762:1<0985;43762:1<099999985;43762:1<08985;43762:1<09985;43762:1<090300209855;43762:1<0985;43762:1<0889831498999;;;;;4024585999962500400`3981985;43762:1<0985;43762:1<0985;43762:1<099985;43762:1<09OhOj``````","f":"`````````````````{b{{b{c}}}{}}0000{{{b{d}}}{{b{dc}}}{}}0000`{{{b{f}}}f}{{{b{h}}}h}{{{b{j}}}j}{{{b{l}}}l}{{{b{n}}}n}{{b{b{dc}}}A`{}}0000{{bAb}A`}0000{{{b{f}}}A`}{{{b{l}}{b{l}}}Ad}{{{b{n}}{b{n}}}Ad}{{b{b{c}}}Ad{}}0{{{b{j}}{b{Af}}}Ah}{{}n}{{AfAj}j}`{Al{{b{c}}}{}}0000{Al{{b{dc}}}{}}0000{c{{An{l}}}B`}{c{{An{n}}}B`}{AlA`}0000{{}j}{{{b{f}}{b{f}}}Ah}{{{b{j}}{b{j}}}Ah}{{{b{l}}{b{l}}}Ah}{{{b{n}}{b{n}}}Ah}{{b{b{c}}}Ah{}}00000000000{{{b{f}}{b{dBb}}}Bd}{{{b{h}}{b{dBb}}}Bd}{{{b{j}}{b{dBb}}}Bd}0{{{b{l}}{b{dBb}}}Bd}0{{{b{n}}{b{dBb}}}Bd}{cc{}}0000{e{{Bf{j}}}{{Bj{{Bh{l}}}}}{{Bn{}{{Bl{c}}}}}}{Afj}{{{b{j}}{b{Af}}}{{C`{{b{{Bh{l}}}}}}}}`{{}Al}0000{{}c{}}0000{{{b{f}}}Ah}{{{b{j}}}Ah}{{{b{j}}}Al}{{{b{f}}}{{C`{Cb}}}}{{{b{j}}}{{`{{Cd{}{{Bl{{b{{Bh{l}}}}}}}}}}}}{{{b{f}}Ah}{{Bf{A`}}}}{{{b{l}}{b{l}}}{{C`{Ad}}}}{{{b{n}}{b{n}}}{{C`{Ad}}}}````{{{b{f}}CfCh}{{Bf{A`}}}}{{{b{f}}{Cj{Ab}}}{{Bf{A`}}}}0{{{b{l}}c}AnCl}{{{b{n}}c}AnCl}```{bc{}}0000{bCn}0{c{{An{e}}}{}{}}0000{{}{{An{c}}}{}}0000{bD`}0000`{{{b{j}}}{{`{{Cd{}{{Bl{{b{Af}}}}}}}}}}{{}c{}}0000````````````````````````````{{Dbc}Db{{Dh{}{{Dd{{Df{Ah}}}}}}DjDl}}{b{{b{c}}}{}}000{{{b{d}}}{{b{dc}}}{}}000{{DbDnE`}{{Ef{EbEd}}}}{{{b{Eb}}}Eb}{{b{b{dc}}}A`{}}{{bAb}A`}{Eb{{An{A`Eh}}}}{{{b{Eb}}}{{An{A`Eh}}}}{{{b{Eb}}}{{An{fEh}}}}{Al{{b{c}}}{}}000{Al{{b{dc}}}{}}000{AlA`}000{{{b{Eh}}{b{dBb}}}Bd}0{{{b{Eb}}{b{dBb}}}Bd}{{{b{Ed}}{b{dBb}}}Bd}{{{b{Db}}{b{dBb}}}Bd}{EjEh}{ElEh}{EnEh}{cc{}}{F`Eh}111{{}Al}000{{DbAh}Db}{{}c{}}000{{{b{Eb}}}{{An{AhEh}}}}22{{{b{Eb}}}{{C`{Cb}}}}{{}Fb}{cDb{{Bj{Af}}}}{{{b{Eb}}Ah}A`}{{{b{Eb}}}{{An{FdEh}}}}{{DbFf}Db}{{DbFh}Db}{{{b{Eb}}}Fj}{{{b{dEd}}}{{C`{{An{hEh}}}}}}{{{b{Eb}}FjCh}{{An{A`Eh}}}}{{{b{Eb}}{Cj{Ab}}}{{An{A`Eh}}}}{{DbFj}Db}{{Dbc}Db{{Bj{Af}}}}{{{b{Eh}}}{{C`{{b{Fl}}}}}}{bc{}}{bCn}{c{{An{e}}}{}{}}000{{}{{An{c}}}{}}000{bD`}000{{}c{}}000``````````{b{{b{c}}}{}}{{{b{d}}}{{b{dc}}}{}}{{{b{Ff}}}Ff}{{b{b{dc}}}A`{}}{{bAb}A`}{Al{{b{c}}}{}}{Al{{b{dc}}}{}}{AlA`}{{{b{Ff}}{b{Ff}}}Ah}{{b{b{c}}}Ah{}}00{{{b{Ff}}{b{dBb}}}Bd}{cc{}}{{}Al}{{}c{}}{{{b{Fn}}}{{C`{Ff}}}}{bc{}}{c{{An{e}}}{}{}}{{}{{An{c}}}{}}{bD`}{{{b{Ff}}}{{b{G`}}}}{{}c{}}````{{{b{{Gb{Ab}}}}}Ah}`````````````````````````````````{{{b{Gd}}}{{An{{b{Gf}}Gh}}}}{{{b{Gj}}}{{b{{Cj{Ab}}}}}}{{{b{Gd}}}{{An{{b{Gl}}Gh}}}}{{{b{Gd}}}{{An{{b{Gn}}Gh}}}}{{{b{Gd}}}{{An{{b{H`}}Gh}}}}{{{b{Gd}}}{{An{{b{Hb}}Gh}}}}{{{b{Gd}}}{{An{{b{Hd}}Gh}}}}{{{b{Gd}}}{{An{{b{Hf}}Gh}}}}{{{b{Gd}}}{{An{{b{Hh}}Gh}}}}{{{b{Gd}}}{{An{{b{Hj}}Gh}}}}{{{b{Gd}}}{{An{{b{Hl}}Gh}}}}{{{b{Gj}}}{{b{{Gb{Ab}}}}}}{{{b{Gd}}}{{An{{b{Hn}}Gh}}}}{{{b{Gd}}}{{An{{b{I`}}Gh}}}}{{{b{Gd}}}{{An{{b{Ib}}Gh}}}}{{{b{Gd}}}{{An{{b{Id}}Gh}}}}{{{b{Gd}}}{{An{{b{If}}Gh}}}}{{{b{Gd}}}{{An{{b{Ih}}Gh}}}}{{{b{Gd}}}Ij}{b{{b{c}}}{}}00000{{{b{d}}}{{b{dc}}}{}}00000{{{b{Il}}}Il}{{{b{In}}}In}{{{b{Gj}}}Gj}{{{b{Gd}}}Gd}{{b{b{dc}}}A`{}}000{{bAb}A`}000{{{b{Gj}}{b{Gj}}}Ad}{{b{b{c}}}Ad{}}{{{b{Il}}{b{{Gb{Ab}}}}}{{An{{Ef{J`Al}}Jb}}}}{{}Il}{{}Gj}{Al{{b{c}}}{}}00{{{b{Gj}}}{{b{{Gb{Ab}}}}}}111{Al{{b{dc}}}{}}00000{AlA`}00000{bc{{Jf{Jd}}}}0{{{b{In}}{b{In}}}Ah}{{{b{Gj}}{b{Gj}}}Ah}{{b{b{c}}}Ah{}}00000{{{b{Gd}}}{{b{Gf}}}}{{{b{Gd}}}{{b{Gl}}}}{{{b{Gd}}}{{b{Gn}}}}{{{b{Gd}}}{{b{H`}}}}{{{b{Gd}}}{{b{Hb}}}}{{{b{Gd}}}{{b{Hd}}}}{{{b{Gd}}}{{b{Hf}}}}{{{b{Gd}}}{{b{Hh}}}}{{{b{Gd}}}{{b{Hj}}}}{{{b{Gd}}}{{b{Hl}}}}{{{b{Gd}}}{{b{Hn}}}}{{{b{Gd}}}{{b{I`}}}}{{{b{Gd}}}{{b{Ib}}}}{{{b{Gd}}}{{b{Id}}}}{{{b{Gd}}}{{b{If}}}}{{{b{Gd}}}{{b{Ih}}}}{{{b{Il}}{b{dBb}}}{{An{A`Jh}}}}{{{b{In}}{b{dBb}}}{{An{A`Jh}}}}{{{b{Gj}}{b{dBb}}}{{An{A`Jh}}}}0{{{b{Gd}}{b{dBb}}}{{An{A`Jh}}}}{{{b{Jb}}{b{dBb}}}{{An{A`Jh}}}}0{{{b{Jj}}{b{dBb}}}Bd}0{cc{}}00{{{Cj{Ab}}}Gj}{{{b{{Cj{Ab}}}}}Gj}{IdGd}{IbGd}{H`Gd}{HbGd}{HdGd}{HfGd}8{HhGd}{HjGd}{I`Gd}{GfGd}{GlGd}{HlGd}{HnGd}{IhGd}{IfGd}{GnGd}{cc{}}0{{{b{Il}}}{{C`{{b{Jl}}}}}}{{{b{Gj}}{b{dc}}}A`Jn}{{}Al}00000{{}c{}}00000{{{b{{Gb{Ab}}}}}Ah}{{{b{Gd}}}Ah}000000000000000`{{{b{{Gb{Ab}}}}}{{An{GjJj}}}}{{{b{{Gb{Ab}}}}}{{An{{Ef{GjCb}}Jj}}}}{{{b{Gj}}{b{Gj}}}{{C`{Ad}}}}{Gj{{K`{Ab}}}}{{GjCb}{{K`{Ab}}}}{bc{}}000{bCn}00{c{{An{e}}}{}{}}{Ab{{An{In}}}}11111{{}{{An{c}}}{}}00000{bD`}00000{{}c{}}00000```````{b{{b{c}}}{}}{{{b{d}}}{{b{dc}}}{}}{Al{{b{c}}}{}}{Al{{b{dc}}}{}}{AlA`}{{{b{Kb}}{b{dBb}}}Bd}{cc{}}{{{b{Kb}}Cb{b{G`}}}{{Bf{{Ef{CbFd}}}}}}{{}Al}{{}c{}}{{KdFb}{{Bf{Kb}}}}?=<;`````````````````````````:::::::::::::9999999999999````{{{b{Kf}}}{{C`{{K`{Kh}}}}}}`{{{b{Kj}}}Kj}{{{b{Kl}}}Kl}{{{b{Kn}}}Kn}{{b{b{dc}}}A`{}}00{{bAb}A`}00`{{}Kj}{{}Kl}{{}{{L`{ce}}}{LbLd}{LbLd}}{{}Lf}{Al{{b{c}}}{}}00{{{b{{Lh{c}}}}}{{b{e}}}Dj{}}1111111111{Al{{b{dc}}}{}}000000000000`````{AlA`}000000000000`{{{b{Kj}}{b{dBb}}}Bd}{{{b{Kl}}{b{dBb}}}Bd}{{{b{{Lh{c}}}}{b{dBb}}}Bd{LdDj}}{{{b{Lj}}{b{dBb}}}Bd}{{{b{{L`{ce}}}}{b{dBb}}}BdLdLd}{{{b{{Ll{ce}}}}{b{dBb}}}BdLdLd}{{{b{Ln}}{b{dBb}}}Bd}{{{b{M`}}{b{dBb}}}Bd}{{{b{{Mb{ce}}}}{b{dBb}}}BdLdLd}{{{b{Lf}}{b{dBb}}}Bd}{{{b{Kn}}{b{dBb}}}Bd}{{{b{{Md{ce}}}}{b{dBb}}}BdLdLd}{{{b{Kf}}{b{dBb}}}Bd}`{cc{}}000000000000`{{{b{Kf}}}{{C`{Cb}}}}`{{{b{Kf}}}{{C`{Af}}}}1`0{{}Al}0{{cFd}{{Bf{{Lh{c}}}}}{Dj{Mj{}{{Mf{Mh}}}}}}11111111111{{}c{}}000000000000``{{{b{Kj}}}{{Mn{{Ef{{b{G`}}{b{Ml}}}}}}}}{{{b{Kl}}}{{Mn{{Ef{{b{G`}}{b{Ml}}}}}}}}```{{}{{b{G`}}}}0```{{{N`{{b{dLj}}}}{b{dNb}}}{{Nd{{An{A`F`}}}}}}{{{N`{{b{dLj}}}}{b{dNb}}{b{dNf}}}{{Nd{{Nh{A`}}}}}}1{{{N`{{b{dLj}}}}{b{dNb}}{b{{Gb{Ab}}}}}{{Nd{{An{AlF`}}}}}}{{{N`{{b{dLj}}}}{b{dNb}}{b{{Gb{Nj}}}}}{{Nd{{An{AlF`}}}}}}`;``{{{b{{Lh{c}}}}}A`{Dj{Mj{}{{Mf{Mh}}}}}}`{{{b{{Lh{c}}}}Nl}{{C`{{Bh{Mh}}}}}{{Mj{}{{Mf{Mh}}}}DjLd}}``````{{{Lh{c}}}A`{Dj{Mj{}{{Mf{Mh}}}}}}{Kf{{Bf{A`}}}}{{{L`{ce}}}{{Bf{Kf}}}LdLd}`{{{b{Kf}}}{{C`{Cb}}}}{{{b{dKf}}}{{b{d{Nn{{Bf{A`}}}}}}}}``{bc{}}00{c{{An{e}}}{}{}}000000000000{{}{{An{c}}}{}}000000000000{bD`}000000000000``{{}c{}}000000000000```{{}M`}{{}{{Ll{A`}}}}{{}{{Ef{{K`{Kh}}O`}}}}{{}{{L`{A`}}}}{{}Ln}{{}{{Mb{A`}}}}","D":"BLf","p":[[1,"reference",null,null,1],[0,"mut"],[5,"RelayConn",0],[6,"ReceivedMessage",0,844],[5,"RelayMap",0,845],[5,"RelayNode",0,845],[5,"RelayQuicConfig",0,845],[1,"unit"],[1,"u8"],[6,"Ordering",846],[5,"RelayUrl",847],[1,"bool"],[1,"u16"],[1,"usize"],[6,"Result",848,null,1],[10,"Deserializer",849],[5,"Formatter",850],[8,"Result",850],[8,"Result",851],[5,"Arc",852,null,1],[10,"Into",853],[17,"Item"],[10,"IntoIterator",854],[6,"Option",855,null,1],[6,"SocketAddr",856],[10,"Iterator",857],[8,"NodeId",858],[5,"Bytes",859],[1,"array"],[10,"Serializer",860],[5,"String",861],[5,"TypeId",862],[5,"ClientBuilder",166],[17,"Output"],[8,"Boxed",863],[10,"Fn",864],[10,"Send",865],[10,"Sync",865],[5,"SecretKey",858],[8,"TokioResolver",866],[5,"Client",166],[5,"ClientReceiver",166],[1,"tuple",null,null,1],[6,"ClientError",166],[5,"Error",867],[6,"Error",868],[5,"Error",869],[5,"Error",870],[5,"ClientConfig",871],[5,"Duration",872],[6,"Protocol",279],[5,"Url",873],[5,"PublicKey",858],[10,"Error",874],[5,"HeaderValue",875],[1,"str"],[1,"slice"],[6,"StunAttribute",313,876],[5,"AlternateServer",877],[5,"StunError",878],[5,"TransactionId",313,879],[5,"ErrorCode",880],[6,"Fingerprint",881],[5,"MappedAddress",882],[6,"MessageIntegrity",883],[6,"MessageIntegritySha256",884],[5,"Nonce",885],[5,"PasswordAlgorithm",886],[5,"PasswordAlgorithms",887],[5,"Realm",888],[5,"Software",889],[5,"Unknown",890],[5,"UnknownAttributes",891],[5,"UserHash",892],[5,"UserName",893],[5,"XorMappedAddress",894],[5,"AttributeType",876],[5,"MessageDecoder",313,895],[6,"MessageClass",313,896],[5,"StunMessage",896],[5,"StunDecodeError",313,878],[1,"char"],[10,"FromIterator",854],[5,"Error",850],[6,"Error",313],[5,"DecoderContext",895],[10,"Hasher",897],[5,"Vec",898],[5,"QuicClient",543],[5,"Endpoint",899],[5,"Server",562],[5,"CertificateDer",900],[5,"Metrics",562,901],[5,"StunMetrics",562,901],[5,"ClientConnRateLimit",562],[5,"ServerConfig",562],[10,"Default",902],[10,"Debug",850],[5,"Limits",562],[5,"ReloadingResolver",562,903],[6,"MaybeTlsStreamServer",562],[5,"RelayConfig",562],[5,"StunConfig",562],[5,"QuicConfig",562],[5,"TlsConfig",562],[6,"CertConfig",562],[17,"Value"],[5,"CertifiedKey",904],[10,"Loader",905],[10,"Any",862],[5,"IntoIter",906],[5,"Pin",907],[5,"Context",908],[6,"Poll",909],[5,"ReadBuf",910],[8,"Result",870],[5,"IoSlice",911],[5,"ClientHello",912],[5,"AbortOnDropHandle",913],[5,"ServerConfig",912],[15,"ReceivedPacket",161],[15,"Health",161],[15,"ServerRestarting",161],[15,"Manual",836],[15,"LetsEncrypt",836]],"r":[[6,312],[10,844],[13,845],[14,845],[15,845],[323,896],[324,895],[336,876],[337,878],[339,879],[502,914],[540,915],[541,915],[542,915],[564,903],[569,901],[574,903],[578,901]],"b":[[88,"impl-Debug-for-RelayMap"],[89,"impl-Display-for-RelayMap"],[90,"impl-Display-for-RelayNode"],[91,"impl-Debug-for-RelayNode"],[217,"impl-Display-for-ClientError"],[218,"impl-Debug-for-ClientError"],[222,"impl-From%3CError%3E-for-ClientError"],[223,"impl-From%3CError%3E-for-ClientError"],[224,"impl-From%3CError%3E-for-ClientError"],[226,"impl-From%3CError%3E-for-ClientError"],[440,"impl-Display-for-TransactionId"],[441,"impl-Debug-for-TransactionId"],[443,"impl-Debug-for-StunDecodeError"],[444,"impl-Display-for-StunDecodeError"],[445,"impl-Debug-for-Error"],[446,"impl-Display-for-Error"],[450,"impl-From%3C%5Bu8;+stun_rs::::types::%7Bimpl%2314%7D::%7Bconstant%230%7D%5D%3E-for-TransactionId"],[451,"impl-From%3C%26%5Bu8;+stun_rs::::types::%7Bimpl%2313%7D::%7Bconstant%230%7D%5D%3E-for-TransactionId"],[452,"impl-From%3CUserHash%3E-for-StunAttribute"],[453,"impl-From%3CUnknownAttributes%3E-for-StunAttribute"],[454,"impl-From%3CMappedAddress%3E-for-StunAttribute"],[455,"impl-From%3CMessageIntegrity%3E-for-StunAttribute"],[456,"impl-From%3CMessageIntegritySha256%3E-for-StunAttribute"],[457,"impl-From%3CNonce%3E-for-StunAttribute"],[459,"impl-From%3CPasswordAlgorithm%3E-for-StunAttribute"],[460,"impl-From%3CPasswordAlgorithms%3E-for-StunAttribute"],[461,"impl-From%3CUnknown%3E-for-StunAttribute"],[462,"impl-From%3CAlternateServer%3E-for-StunAttribute"],[463,"impl-From%3CErrorCode%3E-for-StunAttribute"],[464,"impl-From%3CRealm%3E-for-StunAttribute"],[465,"impl-From%3CSoftware%3E-for-StunAttribute"],[466,"impl-From%3CXorMappedAddress%3E-for-StunAttribute"],[467,"impl-From%3CUserName%3E-for-StunAttribute"],[468,"impl-From%3CFingerprint%3E-for-StunAttribute"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAOkBMQACAAMABwAAABIACQAdAA4ALQADADIAAAA1ABAARwAWAGcABAB3AAEAgAABAIUAFQCdAAQAvwAHAMgAAgDOABMA4wAAAOcAAwAAARIAHQEMACsBAAAuAQMAMwEAAGUBAABtARkAiAEAAIoBHAC3AQgAwwEHAMwBCQDZAQYA+gEAAP0BHwAkAgUALAIAAC8CAwBMAhkAbAIIAHYCHgCaAgwAqAIMAMoCAQDNAgoA5wIBAOwCAQDxAgQA/AIAAAsDKQA3AwwA","P":[[17,"T"],[28,""],[33,"T"],[38,""],[46,"K"],[48,""],[52,"T"],[62,"__D"],[64,""],[74,"K"],[86,""],[93,"T"],[98,"I,"],[99,""],[107,"U"],[112,""],[127,"__S"],[132,"T"],[137,""],[139,"U,T"],[144,"U"],[149,""],[156,"V"],[189,"S"],[190,"T"],[198,""],[200,"T"],[201,""],[205,"T"],[213,""],[225,"T"],[226,""],[227,"T"],[230,""],[235,"U"],[239,""],[244,""],[245,""],[254,""],[255,""],[256,"T"],[257,""],[258,"U,T"],[262,"U"],[266,""],[270,"V"],[284,"T"],[286,""],[287,"T"],[288,""],[289,"T"],[291,""],[293,"K"],[296,""],[297,"T"],[298,""],[299,"U"],[300,""],[301,"T"],[302,"U,T"],[303,"U"],[304,""],[306,"V"],[311,""],[364,"T"],[376,""],[380,"T"],[384,""],[389,"K"],[390,""],[393,"T"],[396,""],[397,"T"],[406,""],[412,"U"],[414,""],[416,"K"],[422,""],[447,"T"],[450,""],[458,"T"],[459,""],[469,"T"],[471,""],[472,"__H"],[473,""],[479,"U"],[485,""],[508,"T"],[512,""],[515,"U,T"],[516,""],[517,"U,T"],[522,"U"],[528,""],[534,"V"],[547,"T"],[551,""],[553,"T"],[554,""],[556,"U"],[557,""],[558,"U,T"],[559,"U"],[560,""],[561,"V"],[587,"T"],[617,""],[622,"T"],[625,""],[631,"EC,EA"],[632,""],[633,"T"],[636,"Loader,Deref::Target"],[637,"T"],[665,""],[681,"Loader"],[682,""],[683,"EC,EA"],[685,""],[687,"EC,EA"],[688,""],[690,"EC,EA"],[691,""],[693,"T"],[707,""],[715,"Loader"],[716,""],[727,"U"],[742,""],[761,"Loader"],[771,""],[772,"EC,EA"],[774,""],[778,"T"],[781,"U,T"],[794,"U"],[807,""],[822,"V"],[838,""]]}],["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,60706,10766,6205,9917,3771,22393,1211]} \ No newline at end of file +//{"start":39,"fragment_lengths":[500,60706,10766,6205,9917,3771,23146,1211]} \ No newline at end of file diff --git a/pr/2806/docs/search.desc/iroh_relay/iroh_relay-desc-0-.js b/pr/2806/docs/search.desc/iroh_relay/iroh_relay-desc-0-.js index 30ef890216..4b89026f10 100644 --- a/pr/2806/docs/search.desc/iroh_relay/iroh_relay-desc-0-.js +++ b/pr/2806/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 …\nA one-way message from server to client, declaring the …\nA one-way empty message from server to client, just to …\nIndicates that the client identified by the underlying …\nRequest from a client or server to reply to the other side …\nReply to a ReceivedMessage::Ping from a client or server …\nThe type of message received by the Conn from a relay …\nRepresents an incoming packet.\nA connection to a relay server.\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 …\nA one-way message from server to client, advertising that …\nExposes Client, which allows to establish connections to a …\nClose the connection\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.\nReturns the argument unchanged.\nReturns the argument unchanged.\nConstructs the RelayMap from an iterator of RelayNodes.\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).\nCalls U::from(self).\nCalls U::from(self).\nWhether or not this Conn is closed.\nAre there any nodes in this map?\nHow many nodes are known?\nThe local address that the Conn is listening on.\nReturns an Iterator over all known nodes.\nSends a packet that tells the server whether this …\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 …\nSends a packet to the node identified by dstkey\nSend a ping with 8 bytes of random data.\nRespond to a ping request. The data field should be filled …\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 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 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\nReceiving end of a Client.\nThe client is closed\nThere was a connection timeout error\nThere was an error dialing\nThere was an error with DNS resolution\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\nNo local addresses exist\nThe ping request was aborted\nThe ping request timed out\nThe connection failed to proxy\nThere was an error receiving a packet\nThere was an error sending a packet\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 …\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 …\nIndicate this client is the preferred way to communicate …\nIndicates this client is a prober\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 …\nSend a ping to the server. Return once we get an expected …\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\nThe default HTTPS port used by the Relay server.\nThe default HTTP port used by 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 AlternateServeratribute\nErrors that can occur when handling a STUN packet.\nThe ErrorCodeatribute\nerror response\nThe Fingerprintatribute\nindication\nSTUN request had bogus fingerprint.\nThe STUN message could not be parsed or is otherwise …\nSTUN response has malformed attributes.\nThe MappedAddressatribute\nThe STUN message class. Although there are four message …\nClass used to decode STUN messages\nThe MessageIntegrityatribute\nThe MessageIntegritySha256atribute\nSTUN request didn’t end in fingerprint.\nThe Nonceatribute\nSTUN request is not a binding request when it should be.\nSTUN packet is not a response when it should be.\nThe PasswordAlgorithmatribute\nThe PasswordAlgorithmsatribute\nThe Realmatribute\nrequest\nThe Softwareatribute\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 Unknownatribute\nThe UnknownAttributesatribute\nThe UserHashatribute\nThe UserNameatribute\nThe XorMappedAddressatribute\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.\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.\nA running Relay + STUN server.\nConfiguration for the full Relay & STUN server.\nConfiguration for the STUN server.\nStunMetrics tracked for the DERPER\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 …\nNumber of accepted ‘iroh derp http’ connection upgrades\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.\nNumber of FrameType::Pings 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.\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\nRate limits.\nMax number of bytes to read in a single burst.\nSocket to serve metrics on.\nPackets of other FrameTypes dropped\nPackets of other FrameTypes received\nPackets of other FrameTypes 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 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::Pongs sent\nThe TLS server configuration for the QUIC server.\nThe server configuration.\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 …\nA one-way message from server to client, declaring the …\nA one-way empty message from server to client, just to …\nIndicates that the client identified by the underlying …\nRequest from a client or server to reply to the other side …\nReply to a ReceivedMessage::Ping from a client or server …\nThe type of message received by the Conn from a relay …\nRepresents an incoming packet.\nA connection to a relay server.\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 …\nA one-way message from server to client, advertising that …\nExposes Client, which allows to establish connections to a …\nClose the connection\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.\nReturns the argument unchanged.\nReturns the argument unchanged.\nConstructs the RelayMap from an iterator of RelayNodes.\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).\nCalls U::from(self).\nCalls U::from(self).\nWhether or not this Conn is closed.\nAre there any nodes in this map?\nHow many nodes are known?\nThe local address that the Conn is listening on.\nReturns an Iterator over all known nodes.\nSends a packet that tells the server whether this …\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 …\nSends a packet to the node identified by dstkey\nSend a ping with 8 bytes of random data.\nRespond to a ping request. The data field should be filled …\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 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 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\nReceiving end of a Client.\nThe client is closed\nThere was a connection timeout error\nThere was an error dialing\nThere was an error with DNS resolution\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\nNo local addresses exist\nThe ping request was aborted\nThe ping request timed out\nThe connection failed to proxy\nThere was an error receiving a packet\nThere was an error sending a packet\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 …\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 …\nIndicate this client is the preferred way to communicate …\nIndicates this client is a prober\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 …\nSend a ping to the server. Return once we get an expected …\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\nThe default HTTPS port used by the Relay server.\nThe default HTTP port used by 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 AlternateServeratribute\nErrors that can occur when handling a STUN packet.\nThe ErrorCodeatribute\nerror response\nThe Fingerprintatribute\nindication\nSTUN request had bogus fingerprint.\nThe STUN message could not be parsed or is otherwise …\nSTUN response has malformed attributes.\nThe MappedAddressatribute\nThe STUN message class. Although there are four message …\nClass used to decode STUN messages\nThe MessageIntegrityatribute\nThe MessageIntegritySha256atribute\nSTUN request didn’t end in fingerprint.\nThe Nonceatribute\nSTUN request is not a binding request when it should be.\nSTUN packet is not a response when it should be.\nThe PasswordAlgorithmatribute\nThe PasswordAlgorithmsatribute\nThe Realmatribute\nrequest\nThe Softwareatribute\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 Unknownatribute\nThe UnknownAttributesatribute\nThe UserHashatribute\nThe UserNameatribute\nThe XorMappedAddressatribute\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 DERPER\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 …\nNumber of accepted ‘iroh derp http’ connection upgrades\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::Pings 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\nRate limits.\nMax number of bytes to read in a single burst.\nSocket to serve metrics on.\nPackets of other FrameTypes dropped\nPackets of other FrameTypes received\nPackets of other FrameTypes 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.\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::Pongs 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/2806/docs/src-files.js b/pr/2806/docs/src-files.js index cefed1e5ac..1bfc5412e0 100644 --- a/pr/2806/docs/src-files.js +++ b/pr/2806/docs/src-files.js @@ -1,3 +1,3 @@ -var srcIndex = new Map(JSON.parse('[["bulk",["",[],["bulk.rs"]]],["iroh",["",[["discovery",[["pkarr",[],["dht.rs"]]],["dns.rs","local_swarm_discovery.rs","pkarr.rs","static_provider.rs"]],["dns",[],["node_info.rs"]],["endpoint",[],["rtt_actor.rs"]],["magicsock",[["node_map",[],["best_addr.rs","node_state.rs","path_state.rs","udp_paths.rs"]]],["metrics.rs","node_map.rs","relay_actor.rs","timer.rs","udp_conn.rs"]],["tls",[],["certificate.rs","verifier.rs"]]],["defaults.rs","disco.rs","discovery.rs","dns.rs","endpoint.rs","lib.rs","magicsock.rs","metrics.rs","protocol.rs","test_utils.rs","tls.rs","util.rs","watchable.rs"]]],["iroh_base",["",[["key",[],["encryption.rs"]],["ticket",[],["node.rs"]]],["base32.rs","key.rs","lib.rs","node_addr.rs","relay_url.rs","ticket.rs"]]],["iroh_bench",["",[],["iroh.rs","lib.rs","quinn.rs","s2n.rs","stats.rs"]]],["iroh_dns_server",["",[["dns",[],["node_authority.rs"]],["http",[["doh",[],["extract.rs","response.rs"]]],["doh.rs","error.rs","pkarr.rs","rate_limiting.rs","tls.rs"]],["store",[],["signed_packets.rs"]]],["config.rs","dns.rs","http.rs","lib.rs","metrics.rs","server.rs","state.rs","store.rs","util.rs"]]],["iroh_net_report",["",[["reportgen",[],["hairpin.rs","probes.rs"]]],["defaults.rs","dns.rs","lib.rs","metrics.rs","ping.rs","reportgen.rs"]]],["iroh_relay",["",[["client",[],["conn.rs","streams.rs","util.rs"]],["protos",[],["disco.rs","relay.rs","stun.rs"]],["server",[],["actor.rs","client_conn.rs","clients.rs","http_server.rs","metrics.rs","streams.rs","testing.rs"]]],["client.rs","defaults.rs","http.rs","lib.rs","protos.rs","quic.rs","relay_map.rs","server.rs"]]],["iroh_test",["",[],["hexdump.rs","lib.rs","logging.rs"]]]]')); +var srcIndex = new Map(JSON.parse('[["bulk",["",[],["bulk.rs"]]],["iroh",["",[["discovery",[["pkarr",[],["dht.rs"]]],["dns.rs","local_swarm_discovery.rs","pkarr.rs","static_provider.rs"]],["dns",[],["node_info.rs"]],["endpoint",[],["rtt_actor.rs"]],["magicsock",[["node_map",[],["best_addr.rs","node_state.rs","path_state.rs","udp_paths.rs"]]],["metrics.rs","node_map.rs","relay_actor.rs","timer.rs","udp_conn.rs"]],["tls",[],["certificate.rs","verifier.rs"]]],["defaults.rs","disco.rs","discovery.rs","dns.rs","endpoint.rs","lib.rs","magicsock.rs","metrics.rs","protocol.rs","test_utils.rs","tls.rs","util.rs","watchable.rs"]]],["iroh_base",["",[["key",[],["encryption.rs"]],["ticket",[],["node.rs"]]],["base32.rs","key.rs","lib.rs","node_addr.rs","relay_url.rs","ticket.rs"]]],["iroh_bench",["",[],["iroh.rs","lib.rs","quinn.rs","s2n.rs","stats.rs"]]],["iroh_dns_server",["",[["dns",[],["node_authority.rs"]],["http",[["doh",[],["extract.rs","response.rs"]]],["doh.rs","error.rs","pkarr.rs","rate_limiting.rs","tls.rs"]],["store",[],["signed_packets.rs"]]],["config.rs","dns.rs","http.rs","lib.rs","metrics.rs","server.rs","state.rs","store.rs","util.rs"]]],["iroh_net_report",["",[["reportgen",[],["hairpin.rs","probes.rs"]]],["defaults.rs","dns.rs","lib.rs","metrics.rs","ping.rs","reportgen.rs"]]],["iroh_relay",["",[["client",[],["conn.rs","streams.rs","util.rs"]],["protos",[],["disco.rs","relay.rs","stun.rs"]],["server",[],["actor.rs","client_conn.rs","clients.rs","http_server.rs","metrics.rs","resolver.rs","streams.rs","testing.rs"]]],["client.rs","defaults.rs","http.rs","lib.rs","protos.rs","quic.rs","relay_map.rs","server.rs"]]],["iroh_test",["",[],["hexdump.rs","lib.rs","logging.rs"]]]]')); createSrcSidebar(); -//{"start":36,"fragment_lengths":[28,564,150,75,306,143,328,59]} \ No newline at end of file +//{"start":36,"fragment_lengths":[28,564,150,75,306,143,342,59]} \ No newline at end of file diff --git a/pr/2806/docs/src/iroh/watchable.rs.html b/pr/2806/docs/src/iroh/watchable.rs.html index acf72d5e42..ae2c75809b 100644 --- a/pr/2806/docs/src/iroh/watchable.rs.html +++ b/pr/2806/docs/src/iroh/watchable.rs.html @@ -613,7 +613,7 @@ // We don't actually write when the value didn't change, but there's unfortunately // no way to upgrade a read guard to a write guard, and locking as read first, then // dropping and locking as write introduces a possible race condition. - let mut state = self.shared.state.write().unwrap(); + let mut state = self.shared.state.write().expect("poisoned"); // Find out if the value changed let changed = state.value != value; @@ -629,7 +629,7 @@ // Notify watchers if changed { - for watcher in self.shared.watchers.lock().unwrap().drain(..) { + for watcher in self.shared.watchers.lock().expect("poisoned").drain(..) { watcher.wake(); } } @@ -639,7 +639,7 @@ /// Creates a [`Watcher`] allowing the value to be observed, but not modified. pub fn watch(&self) -> Watcher<T> { Watcher { - epoch: self.shared.state.read().unwrap().epoch, + epoch: self.shared.state.read().expect("poisoned").epoch, shared: Arc::downgrade(&self.shared), } } @@ -866,7 +866,7 @@ fn poll_next(&self, cx: &mut task::Context<'_>, last_epoch: u64) -> Poll<(u64, T)> { { - let state = self.state.read().unwrap(); + let state = self.state.read().expect("poisoned"); let epoch = state.epoch; if last_epoch < epoch { @@ -885,7 +885,7 @@ loom::thread::yield_now(); { - let state = self.state.read().unwrap(); + let state = self.state.read().expect("poisoned"); let epoch = state.epoch; if last_epoch < epoch { @@ -1069,7 +1069,7 @@ tokio::select! { val = watch.updated() => { let Ok(val) = val else { - return (); + return; }; assert_ne!(val, last_observed, "never observe the same value twice, even with cancellation"); diff --git a/pr/2806/docs/src/iroh_relay/server.rs.html b/pr/2806/docs/src/iroh_relay/server.rs.html index daed59477c..43148e5310 100644 --- a/pr/2806/docs/src/iroh_relay/server.rs.html +++ b/pr/2806/docs/src/iroh_relay/server.rs.html @@ -1124,7 +1124,12 @@ 1123 1124 1125 -1126
    //! A fully-fledged iroh-relay server over HTTP or HTTPS.
    +1126
    +1127
    +1128
    +1129
    +1130
    +1131

    //! A fully-fledged iroh-relay server over HTTP or HTTPS.
     //!
     //! This module provides an API to run a full fledged iroh-relay server.  It is primarily
     //! used by the `iroh-relay` binary in this crate.  It can be used to run a relay server in
    @@ -1172,12 +1177,14 @@
     mod clients;
     mod http_server;
     mod metrics;
    +pub(crate) mod resolver;
     pub(crate) mod streams;
     #[cfg(feature = "test-utils")]
     pub mod testing;
     
     pub use self::{
         metrics::{Metrics, StunMetrics},
    +    resolver::{ReloadingResolver, DEFAULT_CERT_RELOAD_INTERVAL},
         streams::MaybeTlsStream as MaybeTlsStreamServer,
     };
     
    @@ -1324,6 +1331,8 @@
             /// The TLS certificate chain.
             certs: Vec<rustls::pki_types::CertificateDer<'static>>,
         },
    +    /// Use a TLS key and certificate chain that can be reloaded.
    +    Reloading,
     }
     
     /// A running Relay + STUN server.
    @@ -1405,6 +1414,7 @@
                 relay.tls.as_ref().and_then(|tls| match tls.cert {
                     CertConfig::LetsEncrypt { .. } => None,
                     CertConfig::Manual { ref certs, .. } => Some(certs.clone()),
    +                CertConfig::Reloading { .. } => None,
                 })
             });
     
    @@ -1461,7 +1471,7 @@
                                         acceptor,
                                     })
                                 }
    -                            CertConfig::Manual { .. } => {
    +                            CertConfig::Manual { .. } | CertConfig::Reloading { .. } => {
                                     let server_config = Arc::new(tls_config.server_config);
                                     let acceptor =
                                         tokio_rustls::TlsAcceptor::from(server_config.clone());
    diff --git a/pr/2806/docs/src/iroh_relay/server/resolver.rs.html b/pr/2806/docs/src/iroh_relay/server/resolver.rs.html
    new file mode 100644
    index 0000000000..d955a191e8
    --- /dev/null
    +++ b/pr/2806/docs/src/iroh_relay/server/resolver.rs.html
    @@ -0,0 +1,187 @@
    +resolver.rs - source

    iroh_relay/server/
    resolver.rs

    +1
    +2
    +3
    +4
    +5
    +6
    +7
    +8
    +9
    +10
    +11
    +12
    +13
    +14
    +15
    +16
    +17
    +18
    +19
    +20
    +21
    +22
    +23
    +24
    +25
    +26
    +27
    +28
    +29
    +30
    +31
    +32
    +33
    +34
    +35
    +36
    +37
    +38
    +39
    +40
    +41
    +42
    +43
    +44
    +45
    +46
    +47
    +48
    +49
    +50
    +51
    +52
    +53
    +54
    +55
    +56
    +57
    +58
    +59
    +60
    +61
    +62
    +63
    +64
    +65
    +66
    +67
    +68
    +69
    +70
    +71
    +72
    +73
    +74
    +75
    +76
    +77
    +78
    +79
    +80
    +81
    +82
    +83
    +84
    +85
    +86
    +87
    +88
    +89
    +90
    +91
    +92
    +93
    use std::{sync::Arc, time::Duration};
    +
    +use anyhow::{anyhow, Result};
    +use reloadable_state::Reloadable;
    +use rustls::{
    +    server::{ClientHello, ResolvesServerCert},
    +    sign::CertifiedKey,
    +};
    +use tokio_util::{sync::CancellationToken, task::AbortOnDropHandle};
    +
    +/// The default certificate reload interval.
    +pub const DEFAULT_CERT_RELOAD_INTERVAL: Duration = Duration::from_secs(60 * 60 * 24);
    +
    +/// A Certificate resolver that reloads the certificate every interval
    +#[derive(Debug)]
    +pub struct ReloadingResolver<Loader: Send + 'static> {
    +    /// The inner reloadable value.
    +    reloadable: Arc<Reloadable<CertifiedKey, Loader>>,
    +    /// The handle to the task that reloads the certificate.
    +    _handle: AbortOnDropHandle<()>,
    +    /// Cancel token to shutdown the resolver.
    +    cancel_token: CancellationToken,
    +}
    +
    +impl<Loader> ReloadingResolver<Loader>
    +where
    +    Loader: Send + reloadable_state::core::Loader<Value = CertifiedKey> + 'static,
    +{
    +    /// Perform the initial load and construct the [`ReloadingResolver`].
    +    pub async fn init(loader: Loader, interval: Duration) -> Result<Self> {
    +        let (reloadable, _) = Reloadable::init_load(loader)
    +            .await
    +            .map_err(|_| anyhow!("Failed to load the certificate"))?;
    +        let reloadable = Arc::new(reloadable);
    +
    +        let cancel_token = CancellationToken::new();
    +
    +        // Spawn a task to reload the certificate every interval.
    +        let _reloadable = reloadable.clone();
    +        let _cancel_token = cancel_token.clone();
    +        let _handle = tokio::spawn(async move {
    +            let mut interval = tokio::time::interval(interval);
    +            loop {
    +                tokio::select! {
    +                    _ = interval.tick() => {
    +                        let _ = _reloadable.reload().await;
    +                        tracing::info!("Reloaded the certificate");
    +                    },
    +                    _ = _cancel_token.cancelled() => {
    +                        tracing::trace!("shutting down");
    +                        break;
    +                    }
    +                }
    +            }
    +        });
    +        let _handle = AbortOnDropHandle::new(_handle);
    +
    +        Ok(Self {
    +            reloadable,
    +            _handle,
    +            cancel_token,
    +        })
    +    }
    +
    +    /// Shutdown the resolver.
    +    pub fn shutdown(self) {
    +        self.cancel_token.cancel();
    +    }
    +
    +    /// Reload the certificate.
    +    pub async fn reload(&self) {
    +        let _ = self.reloadable.reload().await;
    +    }
    +}
    +
    +impl<Loader> ResolvesServerCert for ReloadingResolver<Loader>
    +where
    +    Loader: reloadable_state::core::Loader<Value = CertifiedKey>,
    +    Loader: Send,
    +    Loader: std::fmt::Debug,
    +{
    +    fn resolve(&self, _client_hello: ClientHello) -> Option<Arc<CertifiedKey>> {
    +        Some(self.reloadable.get())
    +    }
    +}
    +
    +impl<Loader: Send> std::ops::Deref for ReloadingResolver<Loader> {
    +    type Target = Reloadable<CertifiedKey, Loader>;
    +
    +    fn deref(&self) -> &Self::Target {
    +        &self.reloadable
    +    }
    +}
    +
    \ No newline at end of file diff --git a/pr/2806/docs/trait.impl/core/fmt/trait.Debug.js b/pr/2806/docs/trait.impl/core/fmt/trait.Debug.js index fedf6b7fdd..5ed5c24434 100644 --- a/pr/2806/docs/trait.impl/core/fmt/trait.Debug.js +++ b/pr/2806/docs/trait.impl/core/fmt/trait.Debug.js @@ -1,9 +1,9 @@ (function() { - var implementors = Object.fromEntries([["iroh",[["impl Debug for IrohAttr"],["impl Debug for ConnectionType"],["impl Debug for ControlMsg"],["impl Debug for DirectAddrType"],["impl Debug for RelayMode"],["impl Debug for Source"],["impl Debug for DnsDiscovery"],["impl Debug for LocalSwarmDiscovery"],["impl Debug for Builder"],["impl Debug for DhtDiscovery"],["impl Debug for PkarrPublisher"],["impl Debug for PkarrRelayClient"],["impl Debug for PkarrResolver"],["impl Debug for StaticProvider"],["impl Debug for ConcurrentDiscovery"],["impl Debug for DiscoveryItem"],["impl Debug for NodeInfo"],["impl Debug for Builder"],["impl Debug for Connecting"],["impl Debug for DirectAddr"],["impl Debug for DirectAddrInfo"],["impl Debug for Endpoint"],["impl Debug for Incoming"],["impl Debug for IncomingFuture"],["impl Debug for RemoteInfo"],["impl Debug for Metrics"],["impl Debug for Router"],["impl Debug for RouterBuilder"],["impl Debug for CleanupDropGuard"],["impl Debug for DnsPkarrServer"],["impl Debug for Disconnected"],["impl<'a> Debug for Accept<'a>"],["impl<'a, T: Debug> Debug for WatchInitializedFut<'a, T>"],["impl<'a, T: Debug> Debug for WatchNextFut<'a, T>"],["impl<T: Debug> Debug for TxtAttrs<T>"],["impl<T: Debug> Debug for Watchable<T>"],["impl<T: Debug> Debug for Watcher<T>"],["impl<T: Debug> Debug for WatcherStream<T>"]]],["iroh_base",[["impl Debug for HexOrBase32ParseError"],["impl Debug for KeyParsingError"],["impl Debug for Error"],["impl Debug for NodeAddr"],["impl Debug for PublicKey"],["impl Debug for RelayUrl"],["impl Debug for SecretKey"],["impl Debug for SharedSecret"],["impl Debug for NodeTicket"]]],["iroh_bench",[["impl Debug for Commands"],["impl Debug for Opt"],["impl Debug for Stats"],["impl Debug for StreamStats"],["impl Debug for TransferResult"],["impl Debug for Opt"]]],["iroh_dns_server",[["impl Debug for BootstrapOption"],["impl Debug for CertMode"],["impl Debug for RateLimitConfig"],["impl Debug for Config"],["impl Debug for MainlineConfig"],["impl Debug for MetricsConfig"],["impl Debug for StoreConfig"],["impl Debug for DnsConfig"],["impl Debug for DnsHandler"],["impl Debug for Handle"],["impl Debug for HttpConfig"],["impl Debug for HttpsConfig"],["impl Debug for Metrics"],["impl Debug for ZoneStore"]]],["iroh_net_report",[["impl Debug for Addr"],["impl Debug for Client"],["impl Debug for Metrics"],["impl Debug for QuicConfig"],["impl Debug for RelayLatencies"],["impl Debug for Report"]]],["iroh_relay",[["impl Debug for ClientError"],["impl Debug for ReceivedMessage"],["impl Debug for Protocol"],["impl Debug for Error"],["impl Debug for MaybeTlsStream"],["impl Debug for Client"],["impl Debug for ClientBuilder"],["impl Debug for ClientReceiver"],["impl Debug for QuicClient"],["impl Debug for ClientConnRateLimit"],["impl Debug for Limits"],["impl Debug for Metrics"],["impl Debug for QuicConfig"],["impl Debug for Server"],["impl Debug for StunConfig"],["impl Debug for StunMetrics"],["impl Debug for Conn"],["impl Debug for RelayMap"],["impl Debug for RelayNode"],["impl Debug for RelayQuicConfig"],["impl<EC: Debug, EA: Debug> Debug for CertConfig<EC, EA>"],["impl<EC: Debug, EA: Debug> Debug for RelayConfig<EC, EA>
    where\n Option<TlsConfig<EC, EA>>: Debug,
    "],["impl<EC: Debug, EA: Debug> Debug for ServerConfig<EC, EA>
    where\n Option<RelayConfig<EC, EA>>: Debug,
    "],["impl<EC: Debug, EA: Debug> Debug for TlsConfig<EC, EA>
    where\n CertConfig<EC, EA>: Debug,
    "]]]]); + var implementors = Object.fromEntries([["iroh",[["impl Debug for IrohAttr"],["impl Debug for ConnectionType"],["impl Debug for ControlMsg"],["impl Debug for DirectAddrType"],["impl Debug for RelayMode"],["impl Debug for Source"],["impl Debug for DnsDiscovery"],["impl Debug for LocalSwarmDiscovery"],["impl Debug for Builder"],["impl Debug for DhtDiscovery"],["impl Debug for PkarrPublisher"],["impl Debug for PkarrRelayClient"],["impl Debug for PkarrResolver"],["impl Debug for StaticProvider"],["impl Debug for ConcurrentDiscovery"],["impl Debug for DiscoveryItem"],["impl Debug for NodeInfo"],["impl Debug for Builder"],["impl Debug for Connecting"],["impl Debug for DirectAddr"],["impl Debug for DirectAddrInfo"],["impl Debug for Endpoint"],["impl Debug for Incoming"],["impl Debug for IncomingFuture"],["impl Debug for RemoteInfo"],["impl Debug for Metrics"],["impl Debug for Router"],["impl Debug for RouterBuilder"],["impl Debug for CleanupDropGuard"],["impl Debug for DnsPkarrServer"],["impl Debug for Disconnected"],["impl<'a> Debug for Accept<'a>"],["impl<'a, T: Debug> Debug for WatchInitializedFut<'a, T>"],["impl<'a, T: Debug> Debug for WatchNextFut<'a, T>"],["impl<T: Debug> Debug for TxtAttrs<T>"],["impl<T: Debug> Debug for Watchable<T>"],["impl<T: Debug> Debug for Watcher<T>"],["impl<T: Debug> Debug for WatcherStream<T>"]]],["iroh_base",[["impl Debug for HexOrBase32ParseError"],["impl Debug for KeyParsingError"],["impl Debug for Error"],["impl Debug for NodeAddr"],["impl Debug for PublicKey"],["impl Debug for RelayUrl"],["impl Debug for SecretKey"],["impl Debug for SharedSecret"],["impl Debug for NodeTicket"]]],["iroh_bench",[["impl Debug for Commands"],["impl Debug for Opt"],["impl Debug for Stats"],["impl Debug for StreamStats"],["impl Debug for TransferResult"],["impl Debug for Opt"]]],["iroh_dns_server",[["impl Debug for BootstrapOption"],["impl Debug for CertMode"],["impl Debug for RateLimitConfig"],["impl Debug for Config"],["impl Debug for MainlineConfig"],["impl Debug for MetricsConfig"],["impl Debug for StoreConfig"],["impl Debug for DnsConfig"],["impl Debug for DnsHandler"],["impl Debug for Handle"],["impl Debug for HttpConfig"],["impl Debug for HttpsConfig"],["impl Debug for Metrics"],["impl Debug for ZoneStore"]]],["iroh_net_report",[["impl Debug for Addr"],["impl Debug for Client"],["impl Debug for Metrics"],["impl Debug for QuicConfig"],["impl Debug for RelayLatencies"],["impl Debug for Report"]]],["iroh_relay",[["impl Debug for ClientError"],["impl Debug for ReceivedMessage"],["impl Debug for Protocol"],["impl Debug for Error"],["impl Debug for MaybeTlsStream"],["impl Debug for Client"],["impl Debug for ClientBuilder"],["impl Debug for ClientReceiver"],["impl Debug for QuicClient"],["impl Debug for ClientConnRateLimit"],["impl Debug for Limits"],["impl Debug for Metrics"],["impl Debug for QuicConfig"],["impl Debug for Server"],["impl Debug for StunConfig"],["impl Debug for StunMetrics"],["impl Debug for Conn"],["impl Debug for RelayMap"],["impl Debug for RelayNode"],["impl Debug for RelayQuicConfig"],["impl<EC: Debug, EA: Debug> Debug for CertConfig<EC, EA>"],["impl<EC: Debug, EA: Debug> Debug for RelayConfig<EC, EA>
    where\n Option<TlsConfig<EC, EA>>: Debug,
    "],["impl<EC: Debug, EA: Debug> Debug for ServerConfig<EC, EA>
    where\n Option<RelayConfig<EC, EA>>: Debug,
    "],["impl<EC: Debug, EA: Debug> Debug for TlsConfig<EC, EA>
    where\n CertConfig<EC, EA>: Debug,
    "],["impl<Loader: Debug + Send + 'static> Debug for ReloadingResolver<Loader>"]]]]); if (window.register_implementors) { window.register_implementors(implementors); } else { window.pending_implementors = implementors; } })() -//{"start":57,"fragment_lengths":[11544,2404,1583,3987,1615,8989]} \ No newline at end of file +//{"start":57,"fragment_lengths":[11544,2404,1583,3987,1615,9593]} \ No newline at end of file diff --git a/pr/2806/docs/trait.impl/core/marker/trait.Freeze.js b/pr/2806/docs/trait.impl/core/marker/trait.Freeze.js index 68d477b0b5..937a7e016b 100644 --- a/pr/2806/docs/trait.impl/core/marker/trait.Freeze.js +++ b/pr/2806/docs/trait.impl/core/marker/trait.Freeze.js @@ -1,9 +1,9 @@ (function() { - var implementors = Object.fromEntries([["iroh",[["impl !Freeze for Builder",1,["iroh::discovery::pkarr::dht::Builder"]],["impl !Freeze for Builder",1,["iroh::endpoint::Builder"]],["impl !Freeze for Incoming",1,["iroh::endpoint::Incoming"]],["impl !Freeze for IncomingFuture",1,["iroh::endpoint::IncomingFuture"]],["impl Freeze for IrohAttr",1,["iroh::dns::node_info::IrohAttr"]],["impl Freeze for ConnectionType",1,["iroh::magicsock::node_map::node_state::ConnectionType"]],["impl Freeze for ControlMsg",1,["iroh::magicsock::node_map::node_state::ControlMsg"]],["impl Freeze for DirectAddrType",1,["iroh::magicsock::DirectAddrType"]],["impl Freeze for RelayMode",1,["iroh::endpoint::RelayMode"]],["impl Freeze for Source",1,["iroh::magicsock::node_map::Source"]],["impl Freeze for DnsDiscovery",1,["iroh::discovery::dns::DnsDiscovery"]],["impl Freeze for LocalSwarmDiscovery",1,["iroh::discovery::local_swarm_discovery::LocalSwarmDiscovery"]],["impl Freeze for DhtDiscovery",1,["iroh::discovery::pkarr::dht::DhtDiscovery"]],["impl Freeze for PkarrPublisher",1,["iroh::discovery::pkarr::PkarrPublisher"]],["impl Freeze for PkarrRelayClient",1,["iroh::discovery::pkarr::PkarrRelayClient"]],["impl Freeze for PkarrResolver",1,["iroh::discovery::pkarr::PkarrResolver"]],["impl Freeze for StaticProvider",1,["iroh::discovery::static_provider::StaticProvider"]],["impl Freeze for ConcurrentDiscovery",1,["iroh::discovery::ConcurrentDiscovery"]],["impl Freeze for DiscoveryItem",1,["iroh::discovery::DiscoveryItem"]],["impl Freeze for NodeInfo",1,["iroh::dns::node_info::NodeInfo"]],["impl Freeze for Connecting",1,["iroh::endpoint::Connecting"]],["impl Freeze for DirectAddr",1,["iroh::magicsock::DirectAddr"]],["impl Freeze for DirectAddrInfo",1,["iroh::magicsock::node_map::node_state::DirectAddrInfo"]],["impl Freeze for Endpoint",1,["iroh::endpoint::Endpoint"]],["impl Freeze for RemoteInfo",1,["iroh::magicsock::node_map::node_state::RemoteInfo"]],["impl Freeze for Metrics",1,["iroh::magicsock::metrics::Metrics"]],["impl Freeze for Router",1,["iroh::protocol::Router"]],["impl Freeze for RouterBuilder",1,["iroh::protocol::RouterBuilder"]],["impl Freeze for CleanupDropGuard",1,["iroh::test_utils::CleanupDropGuard"]],["impl Freeze for DnsPkarrServer",1,["iroh::test_utils::dns_and_pkarr_servers::DnsPkarrServer"]],["impl Freeze for Disconnected",1,["iroh::watchable::Disconnected"]],["impl<'a> !Freeze for Accept<'a>",1,["iroh::endpoint::Accept"]],["impl<'a, T> Freeze for WatchInitializedFut<'a, T>",1,["iroh::watchable::WatchInitializedFut"]],["impl<'a, T> Freeze for WatchNextFut<'a, T>",1,["iroh::watchable::WatchNextFut"]],["impl<T> Freeze for TxtAttrs<T>",1,["iroh::dns::node_info::TxtAttrs"]],["impl<T> Freeze for Watchable<T>",1,["iroh::watchable::Watchable"]],["impl<T> Freeze for Watcher<T>",1,["iroh::watchable::Watcher"]],["impl<T> Freeze for WatcherStream<T>",1,["iroh::watchable::WatcherStream"]]]],["iroh_base",[["impl !Freeze for SecretKey",1,["iroh_base::key::SecretKey"]],["impl Freeze for HexOrBase32ParseError",1,["iroh_base::base32::HexOrBase32ParseError"]],["impl Freeze for KeyParsingError",1,["iroh_base::key::KeyParsingError"]],["impl Freeze for Error",1,["iroh_base::ticket::Error"]],["impl Freeze for NodeAddr",1,["iroh_base::node_addr::NodeAddr"]],["impl Freeze for PublicKey",1,["iroh_base::key::PublicKey"]],["impl Freeze for RelayUrl",1,["iroh_base::relay_url::RelayUrl"]],["impl Freeze for SharedSecret",1,["iroh_base::key::encryption::SharedSecret"]],["impl Freeze for NodeTicket",1,["iroh_base::ticket::node::NodeTicket"]]]],["iroh_bench",[["impl Freeze for Commands",1,["iroh_bench::Commands"]],["impl Freeze for ConnectionSelector",1,["iroh_bench::ConnectionSelector"]],["impl Freeze for EndpointSelector",1,["iroh_bench::EndpointSelector"]],["impl Freeze for Opt",1,["iroh_bench::s2n::Opt"]],["impl Freeze for Stats",1,["iroh_bench::stats::Stats"]],["impl Freeze for StreamStats",1,["iroh_bench::stats::StreamStats"]],["impl Freeze for TransferResult",1,["iroh_bench::stats::TransferResult"]],["impl Freeze for ClientStats",1,["iroh_bench::ClientStats"]],["impl Freeze for Opt",1,["iroh_bench::Opt"]]]],["iroh_dns_server",[["impl Freeze for BootstrapOption",1,["iroh_dns_server::config::BootstrapOption"]],["impl Freeze for CertMode",1,["iroh_dns_server::http::tls::CertMode"]],["impl Freeze for RateLimitConfig",1,["iroh_dns_server::http::rate_limiting::RateLimitConfig"]],["impl Freeze for Config",1,["iroh_dns_server::config::Config"]],["impl Freeze for MainlineConfig",1,["iroh_dns_server::config::MainlineConfig"]],["impl Freeze for MetricsConfig",1,["iroh_dns_server::config::MetricsConfig"]],["impl Freeze for StoreConfig",1,["iroh_dns_server::config::StoreConfig"]],["impl Freeze for DnsConfig",1,["iroh_dns_server::dns::DnsConfig"]],["impl Freeze for DnsHandler",1,["iroh_dns_server::dns::DnsHandler"]],["impl Freeze for DnsServer",1,["iroh_dns_server::dns::DnsServer"]],["impl Freeze for Handle",1,["iroh_dns_server::dns::Handle"]],["impl Freeze for HttpConfig",1,["iroh_dns_server::http::HttpConfig"]],["impl Freeze for HttpServer",1,["iroh_dns_server::http::HttpServer"]],["impl Freeze for HttpsConfig",1,["iroh_dns_server::http::HttpsConfig"]],["impl Freeze for Metrics",1,["iroh_dns_server::metrics::Metrics"]],["impl Freeze for Server",1,["iroh_dns_server::server::Server"]],["impl Freeze for AppState",1,["iroh_dns_server::state::AppState"]],["impl Freeze for ZoneStore",1,["iroh_dns_server::store::ZoneStore"]]]],["iroh_net_report",[["impl Freeze for Addr",1,["iroh_net_report::Addr"]],["impl Freeze for Client",1,["iroh_net_report::Client"]],["impl Freeze for Metrics",1,["iroh_net_report::metrics::Metrics"]],["impl Freeze for QuicConfig",1,["iroh_net_report::reportgen::QuicConfig"]],["impl Freeze for RelayLatencies",1,["iroh_net_report::RelayLatencies"]],["impl Freeze for Report",1,["iroh_net_report::Report"]]]],["iroh_relay",[["impl !Freeze for ClientError",1,["iroh_relay::client::ClientError"]],["impl !Freeze for ReceivedMessage",1,["iroh_relay::client::conn::ReceivedMessage"]],["impl !Freeze for MaybeTlsStream",1,["iroh_relay::server::streams::MaybeTlsStream"]],["impl Freeze for Protocol",1,["iroh_relay::http::Protocol"]],["impl Freeze for Error",1,["iroh_relay::protos::stun::Error"]],["impl Freeze for Client",1,["iroh_relay::client::Client"]],["impl Freeze for ClientBuilder",1,["iroh_relay::client::ClientBuilder"]],["impl Freeze for ClientReceiver",1,["iroh_relay::client::ClientReceiver"]],["impl Freeze for QuicClient",1,["iroh_relay::quic::QuicClient"]],["impl Freeze for ClientConnRateLimit",1,["iroh_relay::server::ClientConnRateLimit"]],["impl Freeze for Limits",1,["iroh_relay::server::Limits"]],["impl Freeze for Metrics",1,["iroh_relay::server::metrics::Metrics"]],["impl Freeze for QuicConfig",1,["iroh_relay::server::QuicConfig"]],["impl Freeze for Server",1,["iroh_relay::server::Server"]],["impl Freeze for StunConfig",1,["iroh_relay::server::StunConfig"]],["impl Freeze for StunMetrics",1,["iroh_relay::server::metrics::StunMetrics"]],["impl Freeze for Conn",1,["iroh_relay::client::conn::Conn"]],["impl Freeze for RelayMap",1,["iroh_relay::relay_map::RelayMap"]],["impl Freeze for RelayNode",1,["iroh_relay::relay_map::RelayNode"]],["impl Freeze for RelayQuicConfig",1,["iroh_relay::relay_map::RelayQuicConfig"]],["impl<EC, EA> Freeze for CertConfig<EC, EA>",1,["iroh_relay::server::CertConfig"]],["impl<EC, EA> Freeze for RelayConfig<EC, EA>",1,["iroh_relay::server::RelayConfig"]],["impl<EC, EA> Freeze for ServerConfig<EC, EA>",1,["iroh_relay::server::ServerConfig"]],["impl<EC, EA> Freeze for TlsConfig<EC, EA>",1,["iroh_relay::server::TlsConfig"]]]],["iroh_test",[["impl Freeze for CallOnDrop",1,["iroh_test::CallOnDrop"]]]]]); + var implementors = Object.fromEntries([["iroh",[["impl !Freeze for Builder",1,["iroh::discovery::pkarr::dht::Builder"]],["impl !Freeze for Builder",1,["iroh::endpoint::Builder"]],["impl !Freeze for Incoming",1,["iroh::endpoint::Incoming"]],["impl !Freeze for IncomingFuture",1,["iroh::endpoint::IncomingFuture"]],["impl Freeze for IrohAttr",1,["iroh::dns::node_info::IrohAttr"]],["impl Freeze for ConnectionType",1,["iroh::magicsock::node_map::node_state::ConnectionType"]],["impl Freeze for ControlMsg",1,["iroh::magicsock::node_map::node_state::ControlMsg"]],["impl Freeze for DirectAddrType",1,["iroh::magicsock::DirectAddrType"]],["impl Freeze for RelayMode",1,["iroh::endpoint::RelayMode"]],["impl Freeze for Source",1,["iroh::magicsock::node_map::Source"]],["impl Freeze for DnsDiscovery",1,["iroh::discovery::dns::DnsDiscovery"]],["impl Freeze for LocalSwarmDiscovery",1,["iroh::discovery::local_swarm_discovery::LocalSwarmDiscovery"]],["impl Freeze for DhtDiscovery",1,["iroh::discovery::pkarr::dht::DhtDiscovery"]],["impl Freeze for PkarrPublisher",1,["iroh::discovery::pkarr::PkarrPublisher"]],["impl Freeze for PkarrRelayClient",1,["iroh::discovery::pkarr::PkarrRelayClient"]],["impl Freeze for PkarrResolver",1,["iroh::discovery::pkarr::PkarrResolver"]],["impl Freeze for StaticProvider",1,["iroh::discovery::static_provider::StaticProvider"]],["impl Freeze for ConcurrentDiscovery",1,["iroh::discovery::ConcurrentDiscovery"]],["impl Freeze for DiscoveryItem",1,["iroh::discovery::DiscoveryItem"]],["impl Freeze for NodeInfo",1,["iroh::dns::node_info::NodeInfo"]],["impl Freeze for Connecting",1,["iroh::endpoint::Connecting"]],["impl Freeze for DirectAddr",1,["iroh::magicsock::DirectAddr"]],["impl Freeze for DirectAddrInfo",1,["iroh::magicsock::node_map::node_state::DirectAddrInfo"]],["impl Freeze for Endpoint",1,["iroh::endpoint::Endpoint"]],["impl Freeze for RemoteInfo",1,["iroh::magicsock::node_map::node_state::RemoteInfo"]],["impl Freeze for Metrics",1,["iroh::magicsock::metrics::Metrics"]],["impl Freeze for Router",1,["iroh::protocol::Router"]],["impl Freeze for RouterBuilder",1,["iroh::protocol::RouterBuilder"]],["impl Freeze for CleanupDropGuard",1,["iroh::test_utils::CleanupDropGuard"]],["impl Freeze for DnsPkarrServer",1,["iroh::test_utils::dns_and_pkarr_servers::DnsPkarrServer"]],["impl Freeze for Disconnected",1,["iroh::watchable::Disconnected"]],["impl<'a> !Freeze for Accept<'a>",1,["iroh::endpoint::Accept"]],["impl<'a, T> Freeze for WatchInitializedFut<'a, T>",1,["iroh::watchable::WatchInitializedFut"]],["impl<'a, T> Freeze for WatchNextFut<'a, T>",1,["iroh::watchable::WatchNextFut"]],["impl<T> Freeze for TxtAttrs<T>",1,["iroh::dns::node_info::TxtAttrs"]],["impl<T> Freeze for Watchable<T>",1,["iroh::watchable::Watchable"]],["impl<T> Freeze for Watcher<T>",1,["iroh::watchable::Watcher"]],["impl<T> Freeze for WatcherStream<T>",1,["iroh::watchable::WatcherStream"]]]],["iroh_base",[["impl !Freeze for SecretKey",1,["iroh_base::key::SecretKey"]],["impl Freeze for HexOrBase32ParseError",1,["iroh_base::base32::HexOrBase32ParseError"]],["impl Freeze for KeyParsingError",1,["iroh_base::key::KeyParsingError"]],["impl Freeze for Error",1,["iroh_base::ticket::Error"]],["impl Freeze for NodeAddr",1,["iroh_base::node_addr::NodeAddr"]],["impl Freeze for PublicKey",1,["iroh_base::key::PublicKey"]],["impl Freeze for RelayUrl",1,["iroh_base::relay_url::RelayUrl"]],["impl Freeze for SharedSecret",1,["iroh_base::key::encryption::SharedSecret"]],["impl Freeze for NodeTicket",1,["iroh_base::ticket::node::NodeTicket"]]]],["iroh_bench",[["impl Freeze for Commands",1,["iroh_bench::Commands"]],["impl Freeze for ConnectionSelector",1,["iroh_bench::ConnectionSelector"]],["impl Freeze for EndpointSelector",1,["iroh_bench::EndpointSelector"]],["impl Freeze for Opt",1,["iroh_bench::s2n::Opt"]],["impl Freeze for Stats",1,["iroh_bench::stats::Stats"]],["impl Freeze for StreamStats",1,["iroh_bench::stats::StreamStats"]],["impl Freeze for TransferResult",1,["iroh_bench::stats::TransferResult"]],["impl Freeze for ClientStats",1,["iroh_bench::ClientStats"]],["impl Freeze for Opt",1,["iroh_bench::Opt"]]]],["iroh_dns_server",[["impl Freeze for BootstrapOption",1,["iroh_dns_server::config::BootstrapOption"]],["impl Freeze for CertMode",1,["iroh_dns_server::http::tls::CertMode"]],["impl Freeze for RateLimitConfig",1,["iroh_dns_server::http::rate_limiting::RateLimitConfig"]],["impl Freeze for Config",1,["iroh_dns_server::config::Config"]],["impl Freeze for MainlineConfig",1,["iroh_dns_server::config::MainlineConfig"]],["impl Freeze for MetricsConfig",1,["iroh_dns_server::config::MetricsConfig"]],["impl Freeze for StoreConfig",1,["iroh_dns_server::config::StoreConfig"]],["impl Freeze for DnsConfig",1,["iroh_dns_server::dns::DnsConfig"]],["impl Freeze for DnsHandler",1,["iroh_dns_server::dns::DnsHandler"]],["impl Freeze for DnsServer",1,["iroh_dns_server::dns::DnsServer"]],["impl Freeze for Handle",1,["iroh_dns_server::dns::Handle"]],["impl Freeze for HttpConfig",1,["iroh_dns_server::http::HttpConfig"]],["impl Freeze for HttpServer",1,["iroh_dns_server::http::HttpServer"]],["impl Freeze for HttpsConfig",1,["iroh_dns_server::http::HttpsConfig"]],["impl Freeze for Metrics",1,["iroh_dns_server::metrics::Metrics"]],["impl Freeze for Server",1,["iroh_dns_server::server::Server"]],["impl Freeze for AppState",1,["iroh_dns_server::state::AppState"]],["impl Freeze for ZoneStore",1,["iroh_dns_server::store::ZoneStore"]]]],["iroh_net_report",[["impl Freeze for Addr",1,["iroh_net_report::Addr"]],["impl Freeze for Client",1,["iroh_net_report::Client"]],["impl Freeze for Metrics",1,["iroh_net_report::metrics::Metrics"]],["impl Freeze for QuicConfig",1,["iroh_net_report::reportgen::QuicConfig"]],["impl Freeze for RelayLatencies",1,["iroh_net_report::RelayLatencies"]],["impl Freeze for Report",1,["iroh_net_report::Report"]]]],["iroh_relay",[["impl !Freeze for ClientError",1,["iroh_relay::client::ClientError"]],["impl !Freeze for ReceivedMessage",1,["iroh_relay::client::conn::ReceivedMessage"]],["impl !Freeze for MaybeTlsStream",1,["iroh_relay::server::streams::MaybeTlsStream"]],["impl Freeze for Protocol",1,["iroh_relay::http::Protocol"]],["impl Freeze for Error",1,["iroh_relay::protos::stun::Error"]],["impl Freeze for Client",1,["iroh_relay::client::Client"]],["impl Freeze for ClientBuilder",1,["iroh_relay::client::ClientBuilder"]],["impl Freeze for ClientReceiver",1,["iroh_relay::client::ClientReceiver"]],["impl Freeze for QuicClient",1,["iroh_relay::quic::QuicClient"]],["impl Freeze for ClientConnRateLimit",1,["iroh_relay::server::ClientConnRateLimit"]],["impl Freeze for Limits",1,["iroh_relay::server::Limits"]],["impl Freeze for Metrics",1,["iroh_relay::server::metrics::Metrics"]],["impl Freeze for QuicConfig",1,["iroh_relay::server::QuicConfig"]],["impl Freeze for Server",1,["iroh_relay::server::Server"]],["impl Freeze for StunConfig",1,["iroh_relay::server::StunConfig"]],["impl Freeze for StunMetrics",1,["iroh_relay::server::metrics::StunMetrics"]],["impl Freeze for Conn",1,["iroh_relay::client::conn::Conn"]],["impl Freeze for RelayMap",1,["iroh_relay::relay_map::RelayMap"]],["impl Freeze for RelayNode",1,["iroh_relay::relay_map::RelayNode"]],["impl Freeze for RelayQuicConfig",1,["iroh_relay::relay_map::RelayQuicConfig"]],["impl<EC, EA> Freeze for CertConfig<EC, EA>",1,["iroh_relay::server::CertConfig"]],["impl<EC, EA> Freeze for RelayConfig<EC, EA>",1,["iroh_relay::server::RelayConfig"]],["impl<EC, EA> Freeze for ServerConfig<EC, EA>",1,["iroh_relay::server::ServerConfig"]],["impl<EC, EA> Freeze for TlsConfig<EC, EA>",1,["iroh_relay::server::TlsConfig"]],["impl<Loader> Freeze for ReloadingResolver<Loader>",1,["iroh_relay::server::resolver::ReloadingResolver"]]]],["iroh_test",[["impl Freeze for CallOnDrop",1,["iroh_test::CallOnDrop"]]]]]); if (window.register_implementors) { window.register_implementors(implementors); } else { window.pending_implementors = implementors; } })() -//{"start":57,"fragment_lengths":[12670,2829,2769,6014,1880,7860,313]} \ No newline at end of file +//{"start":57,"fragment_lengths":[12670,2829,2769,6014,1880,8249,313]} \ No newline at end of file diff --git a/pr/2806/docs/trait.impl/core/marker/trait.Send.js b/pr/2806/docs/trait.impl/core/marker/trait.Send.js index 69c2f4b7b0..0e395f03fb 100644 --- a/pr/2806/docs/trait.impl/core/marker/trait.Send.js +++ b/pr/2806/docs/trait.impl/core/marker/trait.Send.js @@ -1,9 +1,9 @@ (function() { - var implementors = Object.fromEntries([["iroh",[["impl Send for IrohAttr",1,["iroh::dns::node_info::IrohAttr"]],["impl Send for ConnectionType",1,["iroh::magicsock::node_map::node_state::ConnectionType"]],["impl Send for ControlMsg",1,["iroh::magicsock::node_map::node_state::ControlMsg"]],["impl Send for DirectAddrType",1,["iroh::magicsock::DirectAddrType"]],["impl Send for RelayMode",1,["iroh::endpoint::RelayMode"]],["impl Send for Source",1,["iroh::magicsock::node_map::Source"]],["impl Send for DnsDiscovery",1,["iroh::discovery::dns::DnsDiscovery"]],["impl Send for LocalSwarmDiscovery",1,["iroh::discovery::local_swarm_discovery::LocalSwarmDiscovery"]],["impl Send for Builder",1,["iroh::discovery::pkarr::dht::Builder"]],["impl Send for DhtDiscovery",1,["iroh::discovery::pkarr::dht::DhtDiscovery"]],["impl Send for PkarrPublisher",1,["iroh::discovery::pkarr::PkarrPublisher"]],["impl Send for PkarrRelayClient",1,["iroh::discovery::pkarr::PkarrRelayClient"]],["impl Send for PkarrResolver",1,["iroh::discovery::pkarr::PkarrResolver"]],["impl Send for StaticProvider",1,["iroh::discovery::static_provider::StaticProvider"]],["impl Send for ConcurrentDiscovery",1,["iroh::discovery::ConcurrentDiscovery"]],["impl Send for DiscoveryItem",1,["iroh::discovery::DiscoveryItem"]],["impl Send for NodeInfo",1,["iroh::dns::node_info::NodeInfo"]],["impl Send for Builder",1,["iroh::endpoint::Builder"]],["impl Send for Connecting",1,["iroh::endpoint::Connecting"]],["impl Send for DirectAddr",1,["iroh::magicsock::DirectAddr"]],["impl Send for DirectAddrInfo",1,["iroh::magicsock::node_map::node_state::DirectAddrInfo"]],["impl Send for Endpoint",1,["iroh::endpoint::Endpoint"]],["impl Send for Incoming",1,["iroh::endpoint::Incoming"]],["impl Send for IncomingFuture",1,["iroh::endpoint::IncomingFuture"]],["impl Send for RemoteInfo",1,["iroh::magicsock::node_map::node_state::RemoteInfo"]],["impl Send for Metrics",1,["iroh::magicsock::metrics::Metrics"]],["impl Send for Router",1,["iroh::protocol::Router"]],["impl Send for RouterBuilder",1,["iroh::protocol::RouterBuilder"]],["impl Send for CleanupDropGuard",1,["iroh::test_utils::CleanupDropGuard"]],["impl Send for DnsPkarrServer",1,["iroh::test_utils::dns_and_pkarr_servers::DnsPkarrServer"]],["impl Send for Disconnected",1,["iroh::watchable::Disconnected"]],["impl<'a> Send for Accept<'a>",1,["iroh::endpoint::Accept"]],["impl<'a, T> Send for WatchInitializedFut<'a, T>
    where\n T: Send + Sync,
    ",1,["iroh::watchable::WatchInitializedFut"]],["impl<'a, T> Send for WatchNextFut<'a, T>
    where\n T: Send + Sync,
    ",1,["iroh::watchable::WatchNextFut"]],["impl<T> Send for TxtAttrs<T>
    where\n T: Send,
    ",1,["iroh::dns::node_info::TxtAttrs"]],["impl<T> Send for Watchable<T>
    where\n T: Send + Sync,
    ",1,["iroh::watchable::Watchable"]],["impl<T> Send for Watcher<T>
    where\n T: Send + Sync,
    ",1,["iroh::watchable::Watcher"]],["impl<T> Send for WatcherStream<T>
    where\n T: Send + Sync,
    ",1,["iroh::watchable::WatcherStream"]]]],["iroh_base",[["impl Send for HexOrBase32ParseError",1,["iroh_base::base32::HexOrBase32ParseError"]],["impl Send for KeyParsingError",1,["iroh_base::key::KeyParsingError"]],["impl Send for Error",1,["iroh_base::ticket::Error"]],["impl Send for NodeAddr",1,["iroh_base::node_addr::NodeAddr"]],["impl Send for PublicKey",1,["iroh_base::key::PublicKey"]],["impl Send for RelayUrl",1,["iroh_base::relay_url::RelayUrl"]],["impl Send for SecretKey",1,["iroh_base::key::SecretKey"]],["impl Send for SharedSecret",1,["iroh_base::key::encryption::SharedSecret"]],["impl Send for NodeTicket",1,["iroh_base::ticket::node::NodeTicket"]]]],["iroh_bench",[["impl Send for Commands",1,["iroh_bench::Commands"]],["impl Send for ConnectionSelector",1,["iroh_bench::ConnectionSelector"]],["impl Send for EndpointSelector",1,["iroh_bench::EndpointSelector"]],["impl Send for Opt",1,["iroh_bench::s2n::Opt"]],["impl Send for Stats",1,["iroh_bench::stats::Stats"]],["impl Send for StreamStats",1,["iroh_bench::stats::StreamStats"]],["impl Send for TransferResult",1,["iroh_bench::stats::TransferResult"]],["impl Send for ClientStats",1,["iroh_bench::ClientStats"]],["impl Send for Opt",1,["iroh_bench::Opt"]]]],["iroh_dns_server",[["impl Send for BootstrapOption",1,["iroh_dns_server::config::BootstrapOption"]],["impl Send for CertMode",1,["iroh_dns_server::http::tls::CertMode"]],["impl Send for RateLimitConfig",1,["iroh_dns_server::http::rate_limiting::RateLimitConfig"]],["impl Send for Config",1,["iroh_dns_server::config::Config"]],["impl Send for MainlineConfig",1,["iroh_dns_server::config::MainlineConfig"]],["impl Send for MetricsConfig",1,["iroh_dns_server::config::MetricsConfig"]],["impl Send for StoreConfig",1,["iroh_dns_server::config::StoreConfig"]],["impl Send for DnsConfig",1,["iroh_dns_server::dns::DnsConfig"]],["impl Send for DnsHandler",1,["iroh_dns_server::dns::DnsHandler"]],["impl Send for DnsServer",1,["iroh_dns_server::dns::DnsServer"]],["impl Send for Handle",1,["iroh_dns_server::dns::Handle"]],["impl Send for HttpConfig",1,["iroh_dns_server::http::HttpConfig"]],["impl Send for HttpServer",1,["iroh_dns_server::http::HttpServer"]],["impl Send for HttpsConfig",1,["iroh_dns_server::http::HttpsConfig"]],["impl Send for Metrics",1,["iroh_dns_server::metrics::Metrics"]],["impl Send for Server",1,["iroh_dns_server::server::Server"]],["impl Send for AppState",1,["iroh_dns_server::state::AppState"]],["impl Send for ZoneStore",1,["iroh_dns_server::store::ZoneStore"]]]],["iroh_net_report",[["impl Send for Addr",1,["iroh_net_report::Addr"]],["impl Send for Client",1,["iroh_net_report::Client"]],["impl Send for Metrics",1,["iroh_net_report::metrics::Metrics"]],["impl Send for QuicConfig",1,["iroh_net_report::reportgen::QuicConfig"]],["impl Send for RelayLatencies",1,["iroh_net_report::RelayLatencies"]],["impl Send for Report",1,["iroh_net_report::Report"]]]],["iroh_relay",[["impl Send for ClientError",1,["iroh_relay::client::ClientError"]],["impl Send for ReceivedMessage",1,["iroh_relay::client::conn::ReceivedMessage"]],["impl Send for Protocol",1,["iroh_relay::http::Protocol"]],["impl Send for Error",1,["iroh_relay::protos::stun::Error"]],["impl Send for MaybeTlsStream",1,["iroh_relay::server::streams::MaybeTlsStream"]],["impl Send for Client",1,["iroh_relay::client::Client"]],["impl Send for ClientBuilder",1,["iroh_relay::client::ClientBuilder"]],["impl Send for ClientReceiver",1,["iroh_relay::client::ClientReceiver"]],["impl Send for QuicClient",1,["iroh_relay::quic::QuicClient"]],["impl Send for ClientConnRateLimit",1,["iroh_relay::server::ClientConnRateLimit"]],["impl Send for Limits",1,["iroh_relay::server::Limits"]],["impl Send for Metrics",1,["iroh_relay::server::metrics::Metrics"]],["impl Send for QuicConfig",1,["iroh_relay::server::QuicConfig"]],["impl Send for Server",1,["iroh_relay::server::Server"]],["impl Send for StunConfig",1,["iroh_relay::server::StunConfig"]],["impl Send for StunMetrics",1,["iroh_relay::server::metrics::StunMetrics"]],["impl Send for Conn",1,["iroh_relay::client::conn::Conn"]],["impl Send for RelayMap",1,["iroh_relay::relay_map::RelayMap"]],["impl Send for RelayNode",1,["iroh_relay::relay_map::RelayNode"]],["impl Send for RelayQuicConfig",1,["iroh_relay::relay_map::RelayQuicConfig"]],["impl<EC, EA> Send for CertConfig<EC, EA>",1,["iroh_relay::server::CertConfig"]],["impl<EC, EA> Send for RelayConfig<EC, EA>",1,["iroh_relay::server::RelayConfig"]],["impl<EC, EA> Send for ServerConfig<EC, EA>",1,["iroh_relay::server::ServerConfig"]],["impl<EC, EA> Send for TlsConfig<EC, EA>",1,["iroh_relay::server::TlsConfig"]]]],["iroh_test",[["impl !Send for CallOnDrop",1,["iroh_test::CallOnDrop"]]]]]); + var implementors = Object.fromEntries([["iroh",[["impl Send for IrohAttr",1,["iroh::dns::node_info::IrohAttr"]],["impl Send for ConnectionType",1,["iroh::magicsock::node_map::node_state::ConnectionType"]],["impl Send for ControlMsg",1,["iroh::magicsock::node_map::node_state::ControlMsg"]],["impl Send for DirectAddrType",1,["iroh::magicsock::DirectAddrType"]],["impl Send for RelayMode",1,["iroh::endpoint::RelayMode"]],["impl Send for Source",1,["iroh::magicsock::node_map::Source"]],["impl Send for DnsDiscovery",1,["iroh::discovery::dns::DnsDiscovery"]],["impl Send for LocalSwarmDiscovery",1,["iroh::discovery::local_swarm_discovery::LocalSwarmDiscovery"]],["impl Send for Builder",1,["iroh::discovery::pkarr::dht::Builder"]],["impl Send for DhtDiscovery",1,["iroh::discovery::pkarr::dht::DhtDiscovery"]],["impl Send for PkarrPublisher",1,["iroh::discovery::pkarr::PkarrPublisher"]],["impl Send for PkarrRelayClient",1,["iroh::discovery::pkarr::PkarrRelayClient"]],["impl Send for PkarrResolver",1,["iroh::discovery::pkarr::PkarrResolver"]],["impl Send for StaticProvider",1,["iroh::discovery::static_provider::StaticProvider"]],["impl Send for ConcurrentDiscovery",1,["iroh::discovery::ConcurrentDiscovery"]],["impl Send for DiscoveryItem",1,["iroh::discovery::DiscoveryItem"]],["impl Send for NodeInfo",1,["iroh::dns::node_info::NodeInfo"]],["impl Send for Builder",1,["iroh::endpoint::Builder"]],["impl Send for Connecting",1,["iroh::endpoint::Connecting"]],["impl Send for DirectAddr",1,["iroh::magicsock::DirectAddr"]],["impl Send for DirectAddrInfo",1,["iroh::magicsock::node_map::node_state::DirectAddrInfo"]],["impl Send for Endpoint",1,["iroh::endpoint::Endpoint"]],["impl Send for Incoming",1,["iroh::endpoint::Incoming"]],["impl Send for IncomingFuture",1,["iroh::endpoint::IncomingFuture"]],["impl Send for RemoteInfo",1,["iroh::magicsock::node_map::node_state::RemoteInfo"]],["impl Send for Metrics",1,["iroh::magicsock::metrics::Metrics"]],["impl Send for Router",1,["iroh::protocol::Router"]],["impl Send for RouterBuilder",1,["iroh::protocol::RouterBuilder"]],["impl Send for CleanupDropGuard",1,["iroh::test_utils::CleanupDropGuard"]],["impl Send for DnsPkarrServer",1,["iroh::test_utils::dns_and_pkarr_servers::DnsPkarrServer"]],["impl Send for Disconnected",1,["iroh::watchable::Disconnected"]],["impl<'a> Send for Accept<'a>",1,["iroh::endpoint::Accept"]],["impl<'a, T> Send for WatchInitializedFut<'a, T>
    where\n T: Send + Sync,
    ",1,["iroh::watchable::WatchInitializedFut"]],["impl<'a, T> Send for WatchNextFut<'a, T>
    where\n T: Send + Sync,
    ",1,["iroh::watchable::WatchNextFut"]],["impl<T> Send for TxtAttrs<T>
    where\n T: Send,
    ",1,["iroh::dns::node_info::TxtAttrs"]],["impl<T> Send for Watchable<T>
    where\n T: Send + Sync,
    ",1,["iroh::watchable::Watchable"]],["impl<T> Send for Watcher<T>
    where\n T: Send + Sync,
    ",1,["iroh::watchable::Watcher"]],["impl<T> Send for WatcherStream<T>
    where\n T: Send + Sync,
    ",1,["iroh::watchable::WatcherStream"]]]],["iroh_base",[["impl Send for HexOrBase32ParseError",1,["iroh_base::base32::HexOrBase32ParseError"]],["impl Send for KeyParsingError",1,["iroh_base::key::KeyParsingError"]],["impl Send for Error",1,["iroh_base::ticket::Error"]],["impl Send for NodeAddr",1,["iroh_base::node_addr::NodeAddr"]],["impl Send for PublicKey",1,["iroh_base::key::PublicKey"]],["impl Send for RelayUrl",1,["iroh_base::relay_url::RelayUrl"]],["impl Send for SecretKey",1,["iroh_base::key::SecretKey"]],["impl Send for SharedSecret",1,["iroh_base::key::encryption::SharedSecret"]],["impl Send for NodeTicket",1,["iroh_base::ticket::node::NodeTicket"]]]],["iroh_bench",[["impl Send for Commands",1,["iroh_bench::Commands"]],["impl Send for ConnectionSelector",1,["iroh_bench::ConnectionSelector"]],["impl Send for EndpointSelector",1,["iroh_bench::EndpointSelector"]],["impl Send for Opt",1,["iroh_bench::s2n::Opt"]],["impl Send for Stats",1,["iroh_bench::stats::Stats"]],["impl Send for StreamStats",1,["iroh_bench::stats::StreamStats"]],["impl Send for TransferResult",1,["iroh_bench::stats::TransferResult"]],["impl Send for ClientStats",1,["iroh_bench::ClientStats"]],["impl Send for Opt",1,["iroh_bench::Opt"]]]],["iroh_dns_server",[["impl Send for BootstrapOption",1,["iroh_dns_server::config::BootstrapOption"]],["impl Send for CertMode",1,["iroh_dns_server::http::tls::CertMode"]],["impl Send for RateLimitConfig",1,["iroh_dns_server::http::rate_limiting::RateLimitConfig"]],["impl Send for Config",1,["iroh_dns_server::config::Config"]],["impl Send for MainlineConfig",1,["iroh_dns_server::config::MainlineConfig"]],["impl Send for MetricsConfig",1,["iroh_dns_server::config::MetricsConfig"]],["impl Send for StoreConfig",1,["iroh_dns_server::config::StoreConfig"]],["impl Send for DnsConfig",1,["iroh_dns_server::dns::DnsConfig"]],["impl Send for DnsHandler",1,["iroh_dns_server::dns::DnsHandler"]],["impl Send for DnsServer",1,["iroh_dns_server::dns::DnsServer"]],["impl Send for Handle",1,["iroh_dns_server::dns::Handle"]],["impl Send for HttpConfig",1,["iroh_dns_server::http::HttpConfig"]],["impl Send for HttpServer",1,["iroh_dns_server::http::HttpServer"]],["impl Send for HttpsConfig",1,["iroh_dns_server::http::HttpsConfig"]],["impl Send for Metrics",1,["iroh_dns_server::metrics::Metrics"]],["impl Send for Server",1,["iroh_dns_server::server::Server"]],["impl Send for AppState",1,["iroh_dns_server::state::AppState"]],["impl Send for ZoneStore",1,["iroh_dns_server::store::ZoneStore"]]]],["iroh_net_report",[["impl Send for Addr",1,["iroh_net_report::Addr"]],["impl Send for Client",1,["iroh_net_report::Client"]],["impl Send for Metrics",1,["iroh_net_report::metrics::Metrics"]],["impl Send for QuicConfig",1,["iroh_net_report::reportgen::QuicConfig"]],["impl Send for RelayLatencies",1,["iroh_net_report::RelayLatencies"]],["impl Send for Report",1,["iroh_net_report::Report"]]]],["iroh_relay",[["impl Send for ClientError",1,["iroh_relay::client::ClientError"]],["impl Send for ReceivedMessage",1,["iroh_relay::client::conn::ReceivedMessage"]],["impl Send for Protocol",1,["iroh_relay::http::Protocol"]],["impl Send for Error",1,["iroh_relay::protos::stun::Error"]],["impl Send for MaybeTlsStream",1,["iroh_relay::server::streams::MaybeTlsStream"]],["impl Send for Client",1,["iroh_relay::client::Client"]],["impl Send for ClientBuilder",1,["iroh_relay::client::ClientBuilder"]],["impl Send for ClientReceiver",1,["iroh_relay::client::ClientReceiver"]],["impl Send for QuicClient",1,["iroh_relay::quic::QuicClient"]],["impl Send for ClientConnRateLimit",1,["iroh_relay::server::ClientConnRateLimit"]],["impl Send for Limits",1,["iroh_relay::server::Limits"]],["impl Send for Metrics",1,["iroh_relay::server::metrics::Metrics"]],["impl Send for QuicConfig",1,["iroh_relay::server::QuicConfig"]],["impl Send for Server",1,["iroh_relay::server::Server"]],["impl Send for StunConfig",1,["iroh_relay::server::StunConfig"]],["impl Send for StunMetrics",1,["iroh_relay::server::metrics::StunMetrics"]],["impl Send for Conn",1,["iroh_relay::client::conn::Conn"]],["impl Send for RelayMap",1,["iroh_relay::relay_map::RelayMap"]],["impl Send for RelayNode",1,["iroh_relay::relay_map::RelayNode"]],["impl Send for RelayQuicConfig",1,["iroh_relay::relay_map::RelayQuicConfig"]],["impl<EC, EA> Send for CertConfig<EC, EA>",1,["iroh_relay::server::CertConfig"]],["impl<EC, EA> Send for RelayConfig<EC, EA>",1,["iroh_relay::server::RelayConfig"]],["impl<EC, EA> Send for ServerConfig<EC, EA>",1,["iroh_relay::server::ServerConfig"]],["impl<EC, EA> Send for TlsConfig<EC, EA>",1,["iroh_relay::server::TlsConfig"]],["impl<Loader> Send for ReloadingResolver<Loader>",1,["iroh_relay::server::resolver::ReloadingResolver"]]]],["iroh_test",[["impl !Send for CallOnDrop",1,["iroh_test::CallOnDrop"]]]]]); if (window.register_implementors) { window.register_implementors(implementors); } else { window.pending_implementors = implementors; } })() -//{"start":57,"fragment_lengths":[14167,2774,2715,5906,1844,7713,308]} \ No newline at end of file +//{"start":57,"fragment_lengths":[14167,2774,2715,5906,1844,8096,308]} \ No newline at end of file diff --git a/pr/2806/docs/trait.impl/core/marker/trait.Sync.js b/pr/2806/docs/trait.impl/core/marker/trait.Sync.js index 01430050c2..abecef79fe 100644 --- a/pr/2806/docs/trait.impl/core/marker/trait.Sync.js +++ b/pr/2806/docs/trait.impl/core/marker/trait.Sync.js @@ -1,9 +1,9 @@ (function() { - var implementors = Object.fromEntries([["iroh",[["impl Sync for IrohAttr",1,["iroh::dns::node_info::IrohAttr"]],["impl Sync for ConnectionType",1,["iroh::magicsock::node_map::node_state::ConnectionType"]],["impl Sync for ControlMsg",1,["iroh::magicsock::node_map::node_state::ControlMsg"]],["impl Sync for DirectAddrType",1,["iroh::magicsock::DirectAddrType"]],["impl Sync for RelayMode",1,["iroh::endpoint::RelayMode"]],["impl Sync for Source",1,["iroh::magicsock::node_map::Source"]],["impl Sync for DnsDiscovery",1,["iroh::discovery::dns::DnsDiscovery"]],["impl Sync for LocalSwarmDiscovery",1,["iroh::discovery::local_swarm_discovery::LocalSwarmDiscovery"]],["impl Sync for Builder",1,["iroh::discovery::pkarr::dht::Builder"]],["impl Sync for DhtDiscovery",1,["iroh::discovery::pkarr::dht::DhtDiscovery"]],["impl Sync for PkarrPublisher",1,["iroh::discovery::pkarr::PkarrPublisher"]],["impl Sync for PkarrRelayClient",1,["iroh::discovery::pkarr::PkarrRelayClient"]],["impl Sync for PkarrResolver",1,["iroh::discovery::pkarr::PkarrResolver"]],["impl Sync for StaticProvider",1,["iroh::discovery::static_provider::StaticProvider"]],["impl Sync for ConcurrentDiscovery",1,["iroh::discovery::ConcurrentDiscovery"]],["impl Sync for DiscoveryItem",1,["iroh::discovery::DiscoveryItem"]],["impl Sync for NodeInfo",1,["iroh::dns::node_info::NodeInfo"]],["impl Sync for Builder",1,["iroh::endpoint::Builder"]],["impl Sync for Connecting",1,["iroh::endpoint::Connecting"]],["impl Sync for DirectAddr",1,["iroh::magicsock::DirectAddr"]],["impl Sync for DirectAddrInfo",1,["iroh::magicsock::node_map::node_state::DirectAddrInfo"]],["impl Sync for Endpoint",1,["iroh::endpoint::Endpoint"]],["impl Sync for Incoming",1,["iroh::endpoint::Incoming"]],["impl Sync for IncomingFuture",1,["iroh::endpoint::IncomingFuture"]],["impl Sync for RemoteInfo",1,["iroh::magicsock::node_map::node_state::RemoteInfo"]],["impl Sync for Metrics",1,["iroh::magicsock::metrics::Metrics"]],["impl Sync for Router",1,["iroh::protocol::Router"]],["impl Sync for RouterBuilder",1,["iroh::protocol::RouterBuilder"]],["impl Sync for CleanupDropGuard",1,["iroh::test_utils::CleanupDropGuard"]],["impl Sync for DnsPkarrServer",1,["iroh::test_utils::dns_and_pkarr_servers::DnsPkarrServer"]],["impl Sync for Disconnected",1,["iroh::watchable::Disconnected"]],["impl<'a> Sync for Accept<'a>",1,["iroh::endpoint::Accept"]],["impl<'a, T> Sync for WatchInitializedFut<'a, T>
    where\n T: Send + Sync,
    ",1,["iroh::watchable::WatchInitializedFut"]],["impl<'a, T> Sync for WatchNextFut<'a, T>
    where\n T: Send + Sync,
    ",1,["iroh::watchable::WatchNextFut"]],["impl<T> Sync for TxtAttrs<T>
    where\n T: Sync,
    ",1,["iroh::dns::node_info::TxtAttrs"]],["impl<T> Sync for Watchable<T>
    where\n T: Send + Sync,
    ",1,["iroh::watchable::Watchable"]],["impl<T> Sync for Watcher<T>
    where\n T: Send + Sync,
    ",1,["iroh::watchable::Watcher"]],["impl<T> Sync for WatcherStream<T>
    where\n T: Send + Sync,
    ",1,["iroh::watchable::WatcherStream"]]]],["iroh_base",[["impl Sync for HexOrBase32ParseError",1,["iroh_base::base32::HexOrBase32ParseError"]],["impl Sync for KeyParsingError",1,["iroh_base::key::KeyParsingError"]],["impl Sync for Error",1,["iroh_base::ticket::Error"]],["impl Sync for NodeAddr",1,["iroh_base::node_addr::NodeAddr"]],["impl Sync for PublicKey",1,["iroh_base::key::PublicKey"]],["impl Sync for RelayUrl",1,["iroh_base::relay_url::RelayUrl"]],["impl Sync for SecretKey",1,["iroh_base::key::SecretKey"]],["impl Sync for SharedSecret",1,["iroh_base::key::encryption::SharedSecret"]],["impl Sync for NodeTicket",1,["iroh_base::ticket::node::NodeTicket"]]]],["iroh_bench",[["impl Sync for Commands",1,["iroh_bench::Commands"]],["impl Sync for ConnectionSelector",1,["iroh_bench::ConnectionSelector"]],["impl Sync for EndpointSelector",1,["iroh_bench::EndpointSelector"]],["impl Sync for Opt",1,["iroh_bench::s2n::Opt"]],["impl Sync for Stats",1,["iroh_bench::stats::Stats"]],["impl Sync for StreamStats",1,["iroh_bench::stats::StreamStats"]],["impl Sync for TransferResult",1,["iroh_bench::stats::TransferResult"]],["impl Sync for ClientStats",1,["iroh_bench::ClientStats"]],["impl Sync for Opt",1,["iroh_bench::Opt"]]]],["iroh_dns_server",[["impl Sync for BootstrapOption",1,["iroh_dns_server::config::BootstrapOption"]],["impl Sync for CertMode",1,["iroh_dns_server::http::tls::CertMode"]],["impl Sync for RateLimitConfig",1,["iroh_dns_server::http::rate_limiting::RateLimitConfig"]],["impl Sync for Config",1,["iroh_dns_server::config::Config"]],["impl Sync for MainlineConfig",1,["iroh_dns_server::config::MainlineConfig"]],["impl Sync for MetricsConfig",1,["iroh_dns_server::config::MetricsConfig"]],["impl Sync for StoreConfig",1,["iroh_dns_server::config::StoreConfig"]],["impl Sync for DnsConfig",1,["iroh_dns_server::dns::DnsConfig"]],["impl Sync for DnsHandler",1,["iroh_dns_server::dns::DnsHandler"]],["impl Sync for DnsServer",1,["iroh_dns_server::dns::DnsServer"]],["impl Sync for Handle",1,["iroh_dns_server::dns::Handle"]],["impl Sync for HttpConfig",1,["iroh_dns_server::http::HttpConfig"]],["impl Sync for HttpServer",1,["iroh_dns_server::http::HttpServer"]],["impl Sync for HttpsConfig",1,["iroh_dns_server::http::HttpsConfig"]],["impl Sync for Metrics",1,["iroh_dns_server::metrics::Metrics"]],["impl Sync for Server",1,["iroh_dns_server::server::Server"]],["impl Sync for AppState",1,["iroh_dns_server::state::AppState"]],["impl Sync for ZoneStore",1,["iroh_dns_server::store::ZoneStore"]]]],["iroh_net_report",[["impl Sync for Addr",1,["iroh_net_report::Addr"]],["impl Sync for Client",1,["iroh_net_report::Client"]],["impl Sync for Metrics",1,["iroh_net_report::metrics::Metrics"]],["impl Sync for QuicConfig",1,["iroh_net_report::reportgen::QuicConfig"]],["impl Sync for RelayLatencies",1,["iroh_net_report::RelayLatencies"]],["impl Sync for Report",1,["iroh_net_report::Report"]]]],["iroh_relay",[["impl Sync for ClientError",1,["iroh_relay::client::ClientError"]],["impl Sync for ReceivedMessage",1,["iroh_relay::client::conn::ReceivedMessage"]],["impl Sync for Protocol",1,["iroh_relay::http::Protocol"]],["impl Sync for Error",1,["iroh_relay::protos::stun::Error"]],["impl Sync for MaybeTlsStream",1,["iroh_relay::server::streams::MaybeTlsStream"]],["impl Sync for Client",1,["iroh_relay::client::Client"]],["impl Sync for ClientBuilder",1,["iroh_relay::client::ClientBuilder"]],["impl Sync for ClientReceiver",1,["iroh_relay::client::ClientReceiver"]],["impl Sync for QuicClient",1,["iroh_relay::quic::QuicClient"]],["impl Sync for ClientConnRateLimit",1,["iroh_relay::server::ClientConnRateLimit"]],["impl Sync for Limits",1,["iroh_relay::server::Limits"]],["impl Sync for Metrics",1,["iroh_relay::server::metrics::Metrics"]],["impl Sync for QuicConfig",1,["iroh_relay::server::QuicConfig"]],["impl Sync for Server",1,["iroh_relay::server::Server"]],["impl Sync for StunConfig",1,["iroh_relay::server::StunConfig"]],["impl Sync for StunMetrics",1,["iroh_relay::server::metrics::StunMetrics"]],["impl Sync for Conn",1,["iroh_relay::client::conn::Conn"]],["impl Sync for RelayMap",1,["iroh_relay::relay_map::RelayMap"]],["impl Sync for RelayNode",1,["iroh_relay::relay_map::RelayNode"]],["impl Sync for RelayQuicConfig",1,["iroh_relay::relay_map::RelayQuicConfig"]],["impl<EC, EA = EC> !Sync for CertConfig<EC, EA>",1,["iroh_relay::server::CertConfig"]],["impl<EC, EA = EC> !Sync for RelayConfig<EC, EA>",1,["iroh_relay::server::RelayConfig"]],["impl<EC, EA = EC> !Sync for ServerConfig<EC, EA>",1,["iroh_relay::server::ServerConfig"]],["impl<EC, EA = EC> !Sync for TlsConfig<EC, EA>",1,["iroh_relay::server::TlsConfig"]]]],["iroh_test",[["impl !Sync for CallOnDrop",1,["iroh_test::CallOnDrop"]]]]]); + var implementors = Object.fromEntries([["iroh",[["impl Sync for IrohAttr",1,["iroh::dns::node_info::IrohAttr"]],["impl Sync for ConnectionType",1,["iroh::magicsock::node_map::node_state::ConnectionType"]],["impl Sync for ControlMsg",1,["iroh::magicsock::node_map::node_state::ControlMsg"]],["impl Sync for DirectAddrType",1,["iroh::magicsock::DirectAddrType"]],["impl Sync for RelayMode",1,["iroh::endpoint::RelayMode"]],["impl Sync for Source",1,["iroh::magicsock::node_map::Source"]],["impl Sync for DnsDiscovery",1,["iroh::discovery::dns::DnsDiscovery"]],["impl Sync for LocalSwarmDiscovery",1,["iroh::discovery::local_swarm_discovery::LocalSwarmDiscovery"]],["impl Sync for Builder",1,["iroh::discovery::pkarr::dht::Builder"]],["impl Sync for DhtDiscovery",1,["iroh::discovery::pkarr::dht::DhtDiscovery"]],["impl Sync for PkarrPublisher",1,["iroh::discovery::pkarr::PkarrPublisher"]],["impl Sync for PkarrRelayClient",1,["iroh::discovery::pkarr::PkarrRelayClient"]],["impl Sync for PkarrResolver",1,["iroh::discovery::pkarr::PkarrResolver"]],["impl Sync for StaticProvider",1,["iroh::discovery::static_provider::StaticProvider"]],["impl Sync for ConcurrentDiscovery",1,["iroh::discovery::ConcurrentDiscovery"]],["impl Sync for DiscoveryItem",1,["iroh::discovery::DiscoveryItem"]],["impl Sync for NodeInfo",1,["iroh::dns::node_info::NodeInfo"]],["impl Sync for Builder",1,["iroh::endpoint::Builder"]],["impl Sync for Connecting",1,["iroh::endpoint::Connecting"]],["impl Sync for DirectAddr",1,["iroh::magicsock::DirectAddr"]],["impl Sync for DirectAddrInfo",1,["iroh::magicsock::node_map::node_state::DirectAddrInfo"]],["impl Sync for Endpoint",1,["iroh::endpoint::Endpoint"]],["impl Sync for Incoming",1,["iroh::endpoint::Incoming"]],["impl Sync for IncomingFuture",1,["iroh::endpoint::IncomingFuture"]],["impl Sync for RemoteInfo",1,["iroh::magicsock::node_map::node_state::RemoteInfo"]],["impl Sync for Metrics",1,["iroh::magicsock::metrics::Metrics"]],["impl Sync for Router",1,["iroh::protocol::Router"]],["impl Sync for RouterBuilder",1,["iroh::protocol::RouterBuilder"]],["impl Sync for CleanupDropGuard",1,["iroh::test_utils::CleanupDropGuard"]],["impl Sync for DnsPkarrServer",1,["iroh::test_utils::dns_and_pkarr_servers::DnsPkarrServer"]],["impl Sync for Disconnected",1,["iroh::watchable::Disconnected"]],["impl<'a> Sync for Accept<'a>",1,["iroh::endpoint::Accept"]],["impl<'a, T> Sync for WatchInitializedFut<'a, T>
    where\n T: Send + Sync,
    ",1,["iroh::watchable::WatchInitializedFut"]],["impl<'a, T> Sync for WatchNextFut<'a, T>
    where\n T: Send + Sync,
    ",1,["iroh::watchable::WatchNextFut"]],["impl<T> Sync for TxtAttrs<T>
    where\n T: Sync,
    ",1,["iroh::dns::node_info::TxtAttrs"]],["impl<T> Sync for Watchable<T>
    where\n T: Send + Sync,
    ",1,["iroh::watchable::Watchable"]],["impl<T> Sync for Watcher<T>
    where\n T: Send + Sync,
    ",1,["iroh::watchable::Watcher"]],["impl<T> Sync for WatcherStream<T>
    where\n T: Send + Sync,
    ",1,["iroh::watchable::WatcherStream"]]]],["iroh_base",[["impl Sync for HexOrBase32ParseError",1,["iroh_base::base32::HexOrBase32ParseError"]],["impl Sync for KeyParsingError",1,["iroh_base::key::KeyParsingError"]],["impl Sync for Error",1,["iroh_base::ticket::Error"]],["impl Sync for NodeAddr",1,["iroh_base::node_addr::NodeAddr"]],["impl Sync for PublicKey",1,["iroh_base::key::PublicKey"]],["impl Sync for RelayUrl",1,["iroh_base::relay_url::RelayUrl"]],["impl Sync for SecretKey",1,["iroh_base::key::SecretKey"]],["impl Sync for SharedSecret",1,["iroh_base::key::encryption::SharedSecret"]],["impl Sync for NodeTicket",1,["iroh_base::ticket::node::NodeTicket"]]]],["iroh_bench",[["impl Sync for Commands",1,["iroh_bench::Commands"]],["impl Sync for ConnectionSelector",1,["iroh_bench::ConnectionSelector"]],["impl Sync for EndpointSelector",1,["iroh_bench::EndpointSelector"]],["impl Sync for Opt",1,["iroh_bench::s2n::Opt"]],["impl Sync for Stats",1,["iroh_bench::stats::Stats"]],["impl Sync for StreamStats",1,["iroh_bench::stats::StreamStats"]],["impl Sync for TransferResult",1,["iroh_bench::stats::TransferResult"]],["impl Sync for ClientStats",1,["iroh_bench::ClientStats"]],["impl Sync for Opt",1,["iroh_bench::Opt"]]]],["iroh_dns_server",[["impl Sync for BootstrapOption",1,["iroh_dns_server::config::BootstrapOption"]],["impl Sync for CertMode",1,["iroh_dns_server::http::tls::CertMode"]],["impl Sync for RateLimitConfig",1,["iroh_dns_server::http::rate_limiting::RateLimitConfig"]],["impl Sync for Config",1,["iroh_dns_server::config::Config"]],["impl Sync for MainlineConfig",1,["iroh_dns_server::config::MainlineConfig"]],["impl Sync for MetricsConfig",1,["iroh_dns_server::config::MetricsConfig"]],["impl Sync for StoreConfig",1,["iroh_dns_server::config::StoreConfig"]],["impl Sync for DnsConfig",1,["iroh_dns_server::dns::DnsConfig"]],["impl Sync for DnsHandler",1,["iroh_dns_server::dns::DnsHandler"]],["impl Sync for DnsServer",1,["iroh_dns_server::dns::DnsServer"]],["impl Sync for Handle",1,["iroh_dns_server::dns::Handle"]],["impl Sync for HttpConfig",1,["iroh_dns_server::http::HttpConfig"]],["impl Sync for HttpServer",1,["iroh_dns_server::http::HttpServer"]],["impl Sync for HttpsConfig",1,["iroh_dns_server::http::HttpsConfig"]],["impl Sync for Metrics",1,["iroh_dns_server::metrics::Metrics"]],["impl Sync for Server",1,["iroh_dns_server::server::Server"]],["impl Sync for AppState",1,["iroh_dns_server::state::AppState"]],["impl Sync for ZoneStore",1,["iroh_dns_server::store::ZoneStore"]]]],["iroh_net_report",[["impl Sync for Addr",1,["iroh_net_report::Addr"]],["impl Sync for Client",1,["iroh_net_report::Client"]],["impl Sync for Metrics",1,["iroh_net_report::metrics::Metrics"]],["impl Sync for QuicConfig",1,["iroh_net_report::reportgen::QuicConfig"]],["impl Sync for RelayLatencies",1,["iroh_net_report::RelayLatencies"]],["impl Sync for Report",1,["iroh_net_report::Report"]]]],["iroh_relay",[["impl Sync for ClientError",1,["iroh_relay::client::ClientError"]],["impl Sync for ReceivedMessage",1,["iroh_relay::client::conn::ReceivedMessage"]],["impl Sync for Protocol",1,["iroh_relay::http::Protocol"]],["impl Sync for Error",1,["iroh_relay::protos::stun::Error"]],["impl Sync for MaybeTlsStream",1,["iroh_relay::server::streams::MaybeTlsStream"]],["impl Sync for Client",1,["iroh_relay::client::Client"]],["impl Sync for ClientBuilder",1,["iroh_relay::client::ClientBuilder"]],["impl Sync for ClientReceiver",1,["iroh_relay::client::ClientReceiver"]],["impl Sync for QuicClient",1,["iroh_relay::quic::QuicClient"]],["impl Sync for ClientConnRateLimit",1,["iroh_relay::server::ClientConnRateLimit"]],["impl Sync for Limits",1,["iroh_relay::server::Limits"]],["impl Sync for Metrics",1,["iroh_relay::server::metrics::Metrics"]],["impl Sync for QuicConfig",1,["iroh_relay::server::QuicConfig"]],["impl Sync for Server",1,["iroh_relay::server::Server"]],["impl Sync for StunConfig",1,["iroh_relay::server::StunConfig"]],["impl Sync for StunMetrics",1,["iroh_relay::server::metrics::StunMetrics"]],["impl Sync for Conn",1,["iroh_relay::client::conn::Conn"]],["impl Sync for RelayMap",1,["iroh_relay::relay_map::RelayMap"]],["impl Sync for RelayNode",1,["iroh_relay::relay_map::RelayNode"]],["impl Sync for RelayQuicConfig",1,["iroh_relay::relay_map::RelayQuicConfig"]],["impl<EC, EA = EC> !Sync for CertConfig<EC, EA>",1,["iroh_relay::server::CertConfig"]],["impl<EC, EA = EC> !Sync for RelayConfig<EC, EA>",1,["iroh_relay::server::RelayConfig"]],["impl<EC, EA = EC> !Sync for ServerConfig<EC, EA>",1,["iroh_relay::server::ServerConfig"]],["impl<EC, EA = EC> !Sync for TlsConfig<EC, EA>",1,["iroh_relay::server::TlsConfig"]],["impl<Loader> Sync for ReloadingResolver<Loader>",1,["iroh_relay::server::resolver::ReloadingResolver"]]]],["iroh_test",[["impl !Sync for CallOnDrop",1,["iroh_test::CallOnDrop"]]]]]); if (window.register_implementors) { window.register_implementors(implementors); } else { window.pending_implementors = implementors; } })() -//{"start":57,"fragment_lengths":[14167,2774,2715,5906,1844,7737,308]} \ No newline at end of file +//{"start":57,"fragment_lengths":[14167,2774,2715,5906,1844,8120,308]} \ No newline at end of file diff --git a/pr/2806/docs/trait.impl/core/marker/trait.Unpin.js b/pr/2806/docs/trait.impl/core/marker/trait.Unpin.js index 1ebd2d9fe0..072049c3e7 100644 --- a/pr/2806/docs/trait.impl/core/marker/trait.Unpin.js +++ b/pr/2806/docs/trait.impl/core/marker/trait.Unpin.js @@ -1,9 +1,9 @@ (function() { - var implementors = Object.fromEntries([["iroh",[["impl Unpin for IrohAttr",1,["iroh::dns::node_info::IrohAttr"]],["impl Unpin for ConnectionType",1,["iroh::magicsock::node_map::node_state::ConnectionType"]],["impl Unpin for ControlMsg",1,["iroh::magicsock::node_map::node_state::ControlMsg"]],["impl Unpin for DirectAddrType",1,["iroh::magicsock::DirectAddrType"]],["impl Unpin for RelayMode",1,["iroh::endpoint::RelayMode"]],["impl Unpin for Source",1,["iroh::magicsock::node_map::Source"]],["impl Unpin for DnsDiscovery",1,["iroh::discovery::dns::DnsDiscovery"]],["impl Unpin for LocalSwarmDiscovery",1,["iroh::discovery::local_swarm_discovery::LocalSwarmDiscovery"]],["impl Unpin for Builder",1,["iroh::discovery::pkarr::dht::Builder"]],["impl Unpin for DhtDiscovery",1,["iroh::discovery::pkarr::dht::DhtDiscovery"]],["impl Unpin for PkarrPublisher",1,["iroh::discovery::pkarr::PkarrPublisher"]],["impl Unpin for PkarrRelayClient",1,["iroh::discovery::pkarr::PkarrRelayClient"]],["impl Unpin for PkarrResolver",1,["iroh::discovery::pkarr::PkarrResolver"]],["impl Unpin for StaticProvider",1,["iroh::discovery::static_provider::StaticProvider"]],["impl Unpin for ConcurrentDiscovery",1,["iroh::discovery::ConcurrentDiscovery"]],["impl Unpin for DiscoveryItem",1,["iroh::discovery::DiscoveryItem"]],["impl Unpin for NodeInfo",1,["iroh::dns::node_info::NodeInfo"]],["impl Unpin for Builder",1,["iroh::endpoint::Builder"]],["impl Unpin for DirectAddr",1,["iroh::magicsock::DirectAddr"]],["impl Unpin for DirectAddrInfo",1,["iroh::magicsock::node_map::node_state::DirectAddrInfo"]],["impl Unpin for Endpoint",1,["iroh::endpoint::Endpoint"]],["impl Unpin for Incoming",1,["iroh::endpoint::Incoming"]],["impl Unpin for RemoteInfo",1,["iroh::magicsock::node_map::node_state::RemoteInfo"]],["impl Unpin for Metrics",1,["iroh::magicsock::metrics::Metrics"]],["impl Unpin for Router",1,["iroh::protocol::Router"]],["impl Unpin for RouterBuilder",1,["iroh::protocol::RouterBuilder"]],["impl Unpin for CleanupDropGuard",1,["iroh::test_utils::CleanupDropGuard"]],["impl Unpin for DnsPkarrServer",1,["iroh::test_utils::dns_and_pkarr_servers::DnsPkarrServer"]],["impl Unpin for Disconnected",1,["iroh::watchable::Disconnected"]],["impl<'a, T> Unpin for WatchInitializedFut<'a, T>",1,["iroh::watchable::WatchInitializedFut"]],["impl<'a, T> Unpin for WatchNextFut<'a, T>",1,["iroh::watchable::WatchNextFut"]],["impl<'pin> Unpin for Connecting
    where\n PinnedFieldsOf<__Connecting<'pin>>: Unpin,
    "],["impl<'pin> Unpin for IncomingFuture
    where\n PinnedFieldsOf<__IncomingFuture<'pin>>: Unpin,
    "],["impl<'pin, 'a> Unpin for Accept<'a>
    where\n PinnedFieldsOf<__Accept<'pin, 'a>>: Unpin,
    "],["impl<T> Unpin for TxtAttrs<T>",1,["iroh::dns::node_info::TxtAttrs"]],["impl<T> Unpin for Watchable<T>",1,["iroh::watchable::Watchable"]],["impl<T> Unpin for Watcher<T>",1,["iroh::watchable::Watcher"]],["impl<T> Unpin for WatcherStream<T>",1,["iroh::watchable::WatcherStream"]]]],["iroh_base",[["impl Unpin for HexOrBase32ParseError",1,["iroh_base::base32::HexOrBase32ParseError"]],["impl Unpin for KeyParsingError",1,["iroh_base::key::KeyParsingError"]],["impl Unpin for Error",1,["iroh_base::ticket::Error"]],["impl Unpin for NodeAddr",1,["iroh_base::node_addr::NodeAddr"]],["impl Unpin for PublicKey",1,["iroh_base::key::PublicKey"]],["impl Unpin for RelayUrl",1,["iroh_base::relay_url::RelayUrl"]],["impl Unpin for SecretKey",1,["iroh_base::key::SecretKey"]],["impl Unpin for SharedSecret",1,["iroh_base::key::encryption::SharedSecret"]],["impl Unpin for NodeTicket",1,["iroh_base::ticket::node::NodeTicket"]]]],["iroh_bench",[["impl Unpin for Commands",1,["iroh_bench::Commands"]],["impl Unpin for ConnectionSelector",1,["iroh_bench::ConnectionSelector"]],["impl Unpin for EndpointSelector",1,["iroh_bench::EndpointSelector"]],["impl Unpin for Opt",1,["iroh_bench::s2n::Opt"]],["impl Unpin for Stats",1,["iroh_bench::stats::Stats"]],["impl Unpin for StreamStats",1,["iroh_bench::stats::StreamStats"]],["impl Unpin for TransferResult",1,["iroh_bench::stats::TransferResult"]],["impl Unpin for ClientStats",1,["iroh_bench::ClientStats"]],["impl Unpin for Opt",1,["iroh_bench::Opt"]]]],["iroh_dns_server",[["impl Unpin for BootstrapOption",1,["iroh_dns_server::config::BootstrapOption"]],["impl Unpin for CertMode",1,["iroh_dns_server::http::tls::CertMode"]],["impl Unpin for RateLimitConfig",1,["iroh_dns_server::http::rate_limiting::RateLimitConfig"]],["impl Unpin for Config",1,["iroh_dns_server::config::Config"]],["impl Unpin for MainlineConfig",1,["iroh_dns_server::config::MainlineConfig"]],["impl Unpin for MetricsConfig",1,["iroh_dns_server::config::MetricsConfig"]],["impl Unpin for StoreConfig",1,["iroh_dns_server::config::StoreConfig"]],["impl Unpin for DnsConfig",1,["iroh_dns_server::dns::DnsConfig"]],["impl Unpin for DnsHandler",1,["iroh_dns_server::dns::DnsHandler"]],["impl Unpin for DnsServer",1,["iroh_dns_server::dns::DnsServer"]],["impl Unpin for Handle",1,["iroh_dns_server::dns::Handle"]],["impl Unpin for HttpConfig",1,["iroh_dns_server::http::HttpConfig"]],["impl Unpin for HttpServer",1,["iroh_dns_server::http::HttpServer"]],["impl Unpin for HttpsConfig",1,["iroh_dns_server::http::HttpsConfig"]],["impl Unpin for Metrics",1,["iroh_dns_server::metrics::Metrics"]],["impl Unpin for Server",1,["iroh_dns_server::server::Server"]],["impl Unpin for AppState",1,["iroh_dns_server::state::AppState"]],["impl Unpin for ZoneStore",1,["iroh_dns_server::store::ZoneStore"]]]],["iroh_net_report",[["impl Unpin for Addr",1,["iroh_net_report::Addr"]],["impl Unpin for Client",1,["iroh_net_report::Client"]],["impl Unpin for Metrics",1,["iroh_net_report::metrics::Metrics"]],["impl Unpin for QuicConfig",1,["iroh_net_report::reportgen::QuicConfig"]],["impl Unpin for RelayLatencies",1,["iroh_net_report::RelayLatencies"]],["impl Unpin for Report",1,["iroh_net_report::Report"]]]],["iroh_relay",[["impl Unpin for ClientError",1,["iroh_relay::client::ClientError"]],["impl Unpin for ReceivedMessage",1,["iroh_relay::client::conn::ReceivedMessage"]],["impl Unpin for Protocol",1,["iroh_relay::http::Protocol"]],["impl Unpin for Error",1,["iroh_relay::protos::stun::Error"]],["impl Unpin for MaybeTlsStream",1,["iroh_relay::server::streams::MaybeTlsStream"]],["impl Unpin for Client",1,["iroh_relay::client::Client"]],["impl Unpin for ClientBuilder",1,["iroh_relay::client::ClientBuilder"]],["impl Unpin for ClientReceiver",1,["iroh_relay::client::ClientReceiver"]],["impl Unpin for QuicClient",1,["iroh_relay::quic::QuicClient"]],["impl Unpin for ClientConnRateLimit",1,["iroh_relay::server::ClientConnRateLimit"]],["impl Unpin for Limits",1,["iroh_relay::server::Limits"]],["impl Unpin for Metrics",1,["iroh_relay::server::metrics::Metrics"]],["impl Unpin for QuicConfig",1,["iroh_relay::server::QuicConfig"]],["impl Unpin for Server",1,["iroh_relay::server::Server"]],["impl Unpin for StunConfig",1,["iroh_relay::server::StunConfig"]],["impl Unpin for StunMetrics",1,["iroh_relay::server::metrics::StunMetrics"]],["impl Unpin for Conn",1,["iroh_relay::client::conn::Conn"]],["impl Unpin for RelayMap",1,["iroh_relay::relay_map::RelayMap"]],["impl Unpin for RelayNode",1,["iroh_relay::relay_map::RelayNode"]],["impl Unpin for RelayQuicConfig",1,["iroh_relay::relay_map::RelayQuicConfig"]],["impl<EC, EA> Unpin for CertConfig<EC, EA>",1,["iroh_relay::server::CertConfig"]],["impl<EC, EA> Unpin for RelayConfig<EC, EA>",1,["iroh_relay::server::RelayConfig"]],["impl<EC, EA> Unpin for ServerConfig<EC, EA>",1,["iroh_relay::server::ServerConfig"]],["impl<EC, EA> Unpin for TlsConfig<EC, EA>",1,["iroh_relay::server::TlsConfig"]]]],["iroh_test",[["impl Unpin for CallOnDrop",1,["iroh_test::CallOnDrop"]]]]]); + var implementors = Object.fromEntries([["iroh",[["impl Unpin for IrohAttr",1,["iroh::dns::node_info::IrohAttr"]],["impl Unpin for ConnectionType",1,["iroh::magicsock::node_map::node_state::ConnectionType"]],["impl Unpin for ControlMsg",1,["iroh::magicsock::node_map::node_state::ControlMsg"]],["impl Unpin for DirectAddrType",1,["iroh::magicsock::DirectAddrType"]],["impl Unpin for RelayMode",1,["iroh::endpoint::RelayMode"]],["impl Unpin for Source",1,["iroh::magicsock::node_map::Source"]],["impl Unpin for DnsDiscovery",1,["iroh::discovery::dns::DnsDiscovery"]],["impl Unpin for LocalSwarmDiscovery",1,["iroh::discovery::local_swarm_discovery::LocalSwarmDiscovery"]],["impl Unpin for Builder",1,["iroh::discovery::pkarr::dht::Builder"]],["impl Unpin for DhtDiscovery",1,["iroh::discovery::pkarr::dht::DhtDiscovery"]],["impl Unpin for PkarrPublisher",1,["iroh::discovery::pkarr::PkarrPublisher"]],["impl Unpin for PkarrRelayClient",1,["iroh::discovery::pkarr::PkarrRelayClient"]],["impl Unpin for PkarrResolver",1,["iroh::discovery::pkarr::PkarrResolver"]],["impl Unpin for StaticProvider",1,["iroh::discovery::static_provider::StaticProvider"]],["impl Unpin for ConcurrentDiscovery",1,["iroh::discovery::ConcurrentDiscovery"]],["impl Unpin for DiscoveryItem",1,["iroh::discovery::DiscoveryItem"]],["impl Unpin for NodeInfo",1,["iroh::dns::node_info::NodeInfo"]],["impl Unpin for Builder",1,["iroh::endpoint::Builder"]],["impl Unpin for DirectAddr",1,["iroh::magicsock::DirectAddr"]],["impl Unpin for DirectAddrInfo",1,["iroh::magicsock::node_map::node_state::DirectAddrInfo"]],["impl Unpin for Endpoint",1,["iroh::endpoint::Endpoint"]],["impl Unpin for Incoming",1,["iroh::endpoint::Incoming"]],["impl Unpin for RemoteInfo",1,["iroh::magicsock::node_map::node_state::RemoteInfo"]],["impl Unpin for Metrics",1,["iroh::magicsock::metrics::Metrics"]],["impl Unpin for Router",1,["iroh::protocol::Router"]],["impl Unpin for RouterBuilder",1,["iroh::protocol::RouterBuilder"]],["impl Unpin for CleanupDropGuard",1,["iroh::test_utils::CleanupDropGuard"]],["impl Unpin for DnsPkarrServer",1,["iroh::test_utils::dns_and_pkarr_servers::DnsPkarrServer"]],["impl Unpin for Disconnected",1,["iroh::watchable::Disconnected"]],["impl<'a, T> Unpin for WatchInitializedFut<'a, T>",1,["iroh::watchable::WatchInitializedFut"]],["impl<'a, T> Unpin for WatchNextFut<'a, T>",1,["iroh::watchable::WatchNextFut"]],["impl<'pin> Unpin for Connecting
    where\n PinnedFieldsOf<__Connecting<'pin>>: Unpin,
    "],["impl<'pin> Unpin for IncomingFuture
    where\n PinnedFieldsOf<__IncomingFuture<'pin>>: Unpin,
    "],["impl<'pin, 'a> Unpin for Accept<'a>
    where\n PinnedFieldsOf<__Accept<'pin, 'a>>: Unpin,
    "],["impl<T> Unpin for TxtAttrs<T>",1,["iroh::dns::node_info::TxtAttrs"]],["impl<T> Unpin for Watchable<T>",1,["iroh::watchable::Watchable"]],["impl<T> Unpin for Watcher<T>",1,["iroh::watchable::Watcher"]],["impl<T> Unpin for WatcherStream<T>",1,["iroh::watchable::WatcherStream"]]]],["iroh_base",[["impl Unpin for HexOrBase32ParseError",1,["iroh_base::base32::HexOrBase32ParseError"]],["impl Unpin for KeyParsingError",1,["iroh_base::key::KeyParsingError"]],["impl Unpin for Error",1,["iroh_base::ticket::Error"]],["impl Unpin for NodeAddr",1,["iroh_base::node_addr::NodeAddr"]],["impl Unpin for PublicKey",1,["iroh_base::key::PublicKey"]],["impl Unpin for RelayUrl",1,["iroh_base::relay_url::RelayUrl"]],["impl Unpin for SecretKey",1,["iroh_base::key::SecretKey"]],["impl Unpin for SharedSecret",1,["iroh_base::key::encryption::SharedSecret"]],["impl Unpin for NodeTicket",1,["iroh_base::ticket::node::NodeTicket"]]]],["iroh_bench",[["impl Unpin for Commands",1,["iroh_bench::Commands"]],["impl Unpin for ConnectionSelector",1,["iroh_bench::ConnectionSelector"]],["impl Unpin for EndpointSelector",1,["iroh_bench::EndpointSelector"]],["impl Unpin for Opt",1,["iroh_bench::s2n::Opt"]],["impl Unpin for Stats",1,["iroh_bench::stats::Stats"]],["impl Unpin for StreamStats",1,["iroh_bench::stats::StreamStats"]],["impl Unpin for TransferResult",1,["iroh_bench::stats::TransferResult"]],["impl Unpin for ClientStats",1,["iroh_bench::ClientStats"]],["impl Unpin for Opt",1,["iroh_bench::Opt"]]]],["iroh_dns_server",[["impl Unpin for BootstrapOption",1,["iroh_dns_server::config::BootstrapOption"]],["impl Unpin for CertMode",1,["iroh_dns_server::http::tls::CertMode"]],["impl Unpin for RateLimitConfig",1,["iroh_dns_server::http::rate_limiting::RateLimitConfig"]],["impl Unpin for Config",1,["iroh_dns_server::config::Config"]],["impl Unpin for MainlineConfig",1,["iroh_dns_server::config::MainlineConfig"]],["impl Unpin for MetricsConfig",1,["iroh_dns_server::config::MetricsConfig"]],["impl Unpin for StoreConfig",1,["iroh_dns_server::config::StoreConfig"]],["impl Unpin for DnsConfig",1,["iroh_dns_server::dns::DnsConfig"]],["impl Unpin for DnsHandler",1,["iroh_dns_server::dns::DnsHandler"]],["impl Unpin for DnsServer",1,["iroh_dns_server::dns::DnsServer"]],["impl Unpin for Handle",1,["iroh_dns_server::dns::Handle"]],["impl Unpin for HttpConfig",1,["iroh_dns_server::http::HttpConfig"]],["impl Unpin for HttpServer",1,["iroh_dns_server::http::HttpServer"]],["impl Unpin for HttpsConfig",1,["iroh_dns_server::http::HttpsConfig"]],["impl Unpin for Metrics",1,["iroh_dns_server::metrics::Metrics"]],["impl Unpin for Server",1,["iroh_dns_server::server::Server"]],["impl Unpin for AppState",1,["iroh_dns_server::state::AppState"]],["impl Unpin for ZoneStore",1,["iroh_dns_server::store::ZoneStore"]]]],["iroh_net_report",[["impl Unpin for Addr",1,["iroh_net_report::Addr"]],["impl Unpin for Client",1,["iroh_net_report::Client"]],["impl Unpin for Metrics",1,["iroh_net_report::metrics::Metrics"]],["impl Unpin for QuicConfig",1,["iroh_net_report::reportgen::QuicConfig"]],["impl Unpin for RelayLatencies",1,["iroh_net_report::RelayLatencies"]],["impl Unpin for Report",1,["iroh_net_report::Report"]]]],["iroh_relay",[["impl Unpin for ClientError",1,["iroh_relay::client::ClientError"]],["impl Unpin for ReceivedMessage",1,["iroh_relay::client::conn::ReceivedMessage"]],["impl Unpin for Protocol",1,["iroh_relay::http::Protocol"]],["impl Unpin for Error",1,["iroh_relay::protos::stun::Error"]],["impl Unpin for MaybeTlsStream",1,["iroh_relay::server::streams::MaybeTlsStream"]],["impl Unpin for Client",1,["iroh_relay::client::Client"]],["impl Unpin for ClientBuilder",1,["iroh_relay::client::ClientBuilder"]],["impl Unpin for ClientReceiver",1,["iroh_relay::client::ClientReceiver"]],["impl Unpin for QuicClient",1,["iroh_relay::quic::QuicClient"]],["impl Unpin for ClientConnRateLimit",1,["iroh_relay::server::ClientConnRateLimit"]],["impl Unpin for Limits",1,["iroh_relay::server::Limits"]],["impl Unpin for Metrics",1,["iroh_relay::server::metrics::Metrics"]],["impl Unpin for QuicConfig",1,["iroh_relay::server::QuicConfig"]],["impl Unpin for Server",1,["iroh_relay::server::Server"]],["impl Unpin for StunConfig",1,["iroh_relay::server::StunConfig"]],["impl Unpin for StunMetrics",1,["iroh_relay::server::metrics::StunMetrics"]],["impl Unpin for Conn",1,["iroh_relay::client::conn::Conn"]],["impl Unpin for RelayMap",1,["iroh_relay::relay_map::RelayMap"]],["impl Unpin for RelayNode",1,["iroh_relay::relay_map::RelayNode"]],["impl Unpin for RelayQuicConfig",1,["iroh_relay::relay_map::RelayQuicConfig"]],["impl<EC, EA> Unpin for CertConfig<EC, EA>",1,["iroh_relay::server::CertConfig"]],["impl<EC, EA> Unpin for RelayConfig<EC, EA>",1,["iroh_relay::server::RelayConfig"]],["impl<EC, EA> Unpin for ServerConfig<EC, EA>",1,["iroh_relay::server::ServerConfig"]],["impl<EC, EA> Unpin for TlsConfig<EC, EA>",1,["iroh_relay::server::TlsConfig"]],["impl<Loader> Unpin for ReloadingResolver<Loader>",1,["iroh_relay::server::resolver::ReloadingResolver"]]]],["iroh_test",[["impl Unpin for CallOnDrop",1,["iroh_test::CallOnDrop"]]]]]); if (window.register_implementors) { window.register_implementors(implementors); } else { window.pending_implementors = implementors; } })() -//{"start":57,"fragment_lengths":[13155,2801,2742,5960,1862,7785,310]} \ No newline at end of file +//{"start":57,"fragment_lengths":[13155,2801,2742,5960,1862,8171,310]} \ No newline at end of file diff --git a/pr/2806/docs/trait.impl/core/ops/deref/trait.Deref.js b/pr/2806/docs/trait.impl/core/ops/deref/trait.Deref.js index 60a01813b5..55abfdcb91 100644 --- a/pr/2806/docs/trait.impl/core/ops/deref/trait.Deref.js +++ b/pr/2806/docs/trait.impl/core/ops/deref/trait.Deref.js @@ -1,9 +1,9 @@ (function() { - var implementors = Object.fromEntries([["iroh_base",[["impl Deref for RelayUrl"]]]]); + var implementors = Object.fromEntries([["iroh_base",[["impl Deref for RelayUrl"]]],["iroh_relay",[["impl<Loader: Send> Deref for ReloadingResolver<Loader>"]]]]); if (window.register_implementors) { window.register_implementors(implementors); } else { window.pending_implementors = implementors; } })() -//{"start":57,"fragment_lengths":[282]} \ No newline at end of file +//{"start":57,"fragment_lengths":[282,491]} \ No newline at end of file diff --git a/pr/2806/docs/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js b/pr/2806/docs/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js index 76e37957ee..5fe2e2d619 100644 --- a/pr/2806/docs/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js +++ b/pr/2806/docs/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js @@ -1,9 +1,9 @@ (function() { - var implementors = Object.fromEntries([["iroh",[["impl !RefUnwindSafe for Builder",1,["iroh::discovery::pkarr::dht::Builder"]],["impl !RefUnwindSafe for DhtDiscovery",1,["iroh::discovery::pkarr::dht::DhtDiscovery"]],["impl !RefUnwindSafe for PkarrRelayClient",1,["iroh::discovery::pkarr::PkarrRelayClient"]],["impl !RefUnwindSafe for PkarrResolver",1,["iroh::discovery::pkarr::PkarrResolver"]],["impl !RefUnwindSafe for ConcurrentDiscovery",1,["iroh::discovery::ConcurrentDiscovery"]],["impl !RefUnwindSafe for Builder",1,["iroh::endpoint::Builder"]],["impl !RefUnwindSafe for Connecting",1,["iroh::endpoint::Connecting"]],["impl !RefUnwindSafe for Endpoint",1,["iroh::endpoint::Endpoint"]],["impl !RefUnwindSafe for Incoming",1,["iroh::endpoint::Incoming"]],["impl !RefUnwindSafe for IncomingFuture",1,["iroh::endpoint::IncomingFuture"]],["impl !RefUnwindSafe for Router",1,["iroh::protocol::Router"]],["impl !RefUnwindSafe for RouterBuilder",1,["iroh::protocol::RouterBuilder"]],["impl !RefUnwindSafe for CleanupDropGuard",1,["iroh::test_utils::CleanupDropGuard"]],["impl !RefUnwindSafe for DnsPkarrServer",1,["iroh::test_utils::dns_and_pkarr_servers::DnsPkarrServer"]],["impl RefUnwindSafe for IrohAttr",1,["iroh::dns::node_info::IrohAttr"]],["impl RefUnwindSafe for ConnectionType",1,["iroh::magicsock::node_map::node_state::ConnectionType"]],["impl RefUnwindSafe for ControlMsg",1,["iroh::magicsock::node_map::node_state::ControlMsg"]],["impl RefUnwindSafe for DirectAddrType",1,["iroh::magicsock::DirectAddrType"]],["impl RefUnwindSafe for RelayMode",1,["iroh::endpoint::RelayMode"]],["impl RefUnwindSafe for Source",1,["iroh::magicsock::node_map::Source"]],["impl RefUnwindSafe for DnsDiscovery",1,["iroh::discovery::dns::DnsDiscovery"]],["impl RefUnwindSafe for LocalSwarmDiscovery",1,["iroh::discovery::local_swarm_discovery::LocalSwarmDiscovery"]],["impl RefUnwindSafe for PkarrPublisher",1,["iroh::discovery::pkarr::PkarrPublisher"]],["impl RefUnwindSafe for StaticProvider",1,["iroh::discovery::static_provider::StaticProvider"]],["impl RefUnwindSafe for DiscoveryItem",1,["iroh::discovery::DiscoveryItem"]],["impl RefUnwindSafe for NodeInfo",1,["iroh::dns::node_info::NodeInfo"]],["impl RefUnwindSafe for DirectAddr",1,["iroh::magicsock::DirectAddr"]],["impl RefUnwindSafe for DirectAddrInfo",1,["iroh::magicsock::node_map::node_state::DirectAddrInfo"]],["impl RefUnwindSafe for RemoteInfo",1,["iroh::magicsock::node_map::node_state::RemoteInfo"]],["impl RefUnwindSafe for Metrics",1,["iroh::magicsock::metrics::Metrics"]],["impl RefUnwindSafe for Disconnected",1,["iroh::watchable::Disconnected"]],["impl<'a> !RefUnwindSafe for Accept<'a>",1,["iroh::endpoint::Accept"]],["impl<'a, T> RefUnwindSafe for WatchInitializedFut<'a, T>",1,["iroh::watchable::WatchInitializedFut"]],["impl<'a, T> RefUnwindSafe for WatchNextFut<'a, T>",1,["iroh::watchable::WatchNextFut"]],["impl<T> RefUnwindSafe for TxtAttrs<T>
    where\n T: RefUnwindSafe,
    ",1,["iroh::dns::node_info::TxtAttrs"]],["impl<T> RefUnwindSafe for Watchable<T>",1,["iroh::watchable::Watchable"]],["impl<T> RefUnwindSafe for Watcher<T>",1,["iroh::watchable::Watcher"]],["impl<T> RefUnwindSafe for WatcherStream<T>",1,["iroh::watchable::WatcherStream"]]]],["iroh_base",[["impl !RefUnwindSafe for KeyParsingError",1,["iroh_base::key::KeyParsingError"]],["impl RefUnwindSafe for HexOrBase32ParseError",1,["iroh_base::base32::HexOrBase32ParseError"]],["impl RefUnwindSafe for Error",1,["iroh_base::ticket::Error"]],["impl RefUnwindSafe for NodeAddr",1,["iroh_base::node_addr::NodeAddr"]],["impl RefUnwindSafe for PublicKey",1,["iroh_base::key::PublicKey"]],["impl RefUnwindSafe for RelayUrl",1,["iroh_base::relay_url::RelayUrl"]],["impl RefUnwindSafe for SecretKey",1,["iroh_base::key::SecretKey"]],["impl RefUnwindSafe for SharedSecret",1,["iroh_base::key::encryption::SharedSecret"]],["impl RefUnwindSafe for NodeTicket",1,["iroh_base::ticket::node::NodeTicket"]]]],["iroh_bench",[["impl !RefUnwindSafe for EndpointSelector",1,["iroh_bench::EndpointSelector"]],["impl RefUnwindSafe for Commands",1,["iroh_bench::Commands"]],["impl RefUnwindSafe for ConnectionSelector",1,["iroh_bench::ConnectionSelector"]],["impl RefUnwindSafe for Opt",1,["iroh_bench::s2n::Opt"]],["impl RefUnwindSafe for Stats",1,["iroh_bench::stats::Stats"]],["impl RefUnwindSafe for StreamStats",1,["iroh_bench::stats::StreamStats"]],["impl RefUnwindSafe for TransferResult",1,["iroh_bench::stats::TransferResult"]],["impl RefUnwindSafe for ClientStats",1,["iroh_bench::ClientStats"]],["impl RefUnwindSafe for Opt",1,["iroh_bench::Opt"]]]],["iroh_dns_server",[["impl !RefUnwindSafe for DnsHandler",1,["iroh_dns_server::dns::DnsHandler"]],["impl !RefUnwindSafe for DnsServer",1,["iroh_dns_server::dns::DnsServer"]],["impl !RefUnwindSafe for Handle",1,["iroh_dns_server::dns::Handle"]],["impl !RefUnwindSafe for HttpServer",1,["iroh_dns_server::http::HttpServer"]],["impl !RefUnwindSafe for Server",1,["iroh_dns_server::server::Server"]],["impl !RefUnwindSafe for AppState",1,["iroh_dns_server::state::AppState"]],["impl !RefUnwindSafe for ZoneStore",1,["iroh_dns_server::store::ZoneStore"]],["impl RefUnwindSafe for BootstrapOption",1,["iroh_dns_server::config::BootstrapOption"]],["impl RefUnwindSafe for CertMode",1,["iroh_dns_server::http::tls::CertMode"]],["impl RefUnwindSafe for RateLimitConfig",1,["iroh_dns_server::http::rate_limiting::RateLimitConfig"]],["impl RefUnwindSafe for Config",1,["iroh_dns_server::config::Config"]],["impl RefUnwindSafe for MainlineConfig",1,["iroh_dns_server::config::MainlineConfig"]],["impl RefUnwindSafe for MetricsConfig",1,["iroh_dns_server::config::MetricsConfig"]],["impl RefUnwindSafe for StoreConfig",1,["iroh_dns_server::config::StoreConfig"]],["impl RefUnwindSafe for DnsConfig",1,["iroh_dns_server::dns::DnsConfig"]],["impl RefUnwindSafe for HttpConfig",1,["iroh_dns_server::http::HttpConfig"]],["impl RefUnwindSafe for HttpsConfig",1,["iroh_dns_server::http::HttpsConfig"]],["impl RefUnwindSafe for Metrics",1,["iroh_dns_server::metrics::Metrics"]]]],["iroh_net_report",[["impl !RefUnwindSafe for QuicConfig",1,["iroh_net_report::reportgen::QuicConfig"]],["impl RefUnwindSafe for Addr",1,["iroh_net_report::Addr"]],["impl RefUnwindSafe for Client",1,["iroh_net_report::Client"]],["impl RefUnwindSafe for Metrics",1,["iroh_net_report::metrics::Metrics"]],["impl RefUnwindSafe for RelayLatencies",1,["iroh_net_report::RelayLatencies"]],["impl RefUnwindSafe for Report",1,["iroh_net_report::Report"]]]],["iroh_relay",[["impl !RefUnwindSafe for ClientError",1,["iroh_relay::client::ClientError"]],["impl !RefUnwindSafe for MaybeTlsStream",1,["iroh_relay::server::streams::MaybeTlsStream"]],["impl !RefUnwindSafe for ClientBuilder",1,["iroh_relay::client::ClientBuilder"]],["impl !RefUnwindSafe for QuicClient",1,["iroh_relay::quic::QuicClient"]],["impl !RefUnwindSafe for QuicConfig",1,["iroh_relay::server::QuicConfig"]],["impl RefUnwindSafe for ReceivedMessage",1,["iroh_relay::client::conn::ReceivedMessage"]],["impl RefUnwindSafe for Protocol",1,["iroh_relay::http::Protocol"]],["impl RefUnwindSafe for Error",1,["iroh_relay::protos::stun::Error"]],["impl RefUnwindSafe for Client",1,["iroh_relay::client::Client"]],["impl RefUnwindSafe for ClientReceiver",1,["iroh_relay::client::ClientReceiver"]],["impl RefUnwindSafe for ClientConnRateLimit",1,["iroh_relay::server::ClientConnRateLimit"]],["impl RefUnwindSafe for Limits",1,["iroh_relay::server::Limits"]],["impl RefUnwindSafe for Metrics",1,["iroh_relay::server::metrics::Metrics"]],["impl RefUnwindSafe for Server",1,["iroh_relay::server::Server"]],["impl RefUnwindSafe for StunConfig",1,["iroh_relay::server::StunConfig"]],["impl RefUnwindSafe for StunMetrics",1,["iroh_relay::server::metrics::StunMetrics"]],["impl RefUnwindSafe for Conn",1,["iroh_relay::client::conn::Conn"]],["impl RefUnwindSafe for RelayMap",1,["iroh_relay::relay_map::RelayMap"]],["impl RefUnwindSafe for RelayNode",1,["iroh_relay::relay_map::RelayNode"]],["impl RefUnwindSafe for RelayQuicConfig",1,["iroh_relay::relay_map::RelayQuicConfig"]],["impl<EC, EA = EC> !RefUnwindSafe for CertConfig<EC, EA>",1,["iroh_relay::server::CertConfig"]],["impl<EC, EA = EC> !RefUnwindSafe for RelayConfig<EC, EA>",1,["iroh_relay::server::RelayConfig"]],["impl<EC, EA = EC> !RefUnwindSafe for ServerConfig<EC, EA>",1,["iroh_relay::server::ServerConfig"]],["impl<EC, EA = EC> !RefUnwindSafe for TlsConfig<EC, EA>",1,["iroh_relay::server::TlsConfig"]]]],["iroh_test",[["impl !RefUnwindSafe for CallOnDrop",1,["iroh_test::CallOnDrop"]]]]]); + var implementors = Object.fromEntries([["iroh",[["impl !RefUnwindSafe for Builder",1,["iroh::discovery::pkarr::dht::Builder"]],["impl !RefUnwindSafe for DhtDiscovery",1,["iroh::discovery::pkarr::dht::DhtDiscovery"]],["impl !RefUnwindSafe for PkarrRelayClient",1,["iroh::discovery::pkarr::PkarrRelayClient"]],["impl !RefUnwindSafe for PkarrResolver",1,["iroh::discovery::pkarr::PkarrResolver"]],["impl !RefUnwindSafe for ConcurrentDiscovery",1,["iroh::discovery::ConcurrentDiscovery"]],["impl !RefUnwindSafe for Builder",1,["iroh::endpoint::Builder"]],["impl !RefUnwindSafe for Connecting",1,["iroh::endpoint::Connecting"]],["impl !RefUnwindSafe for Endpoint",1,["iroh::endpoint::Endpoint"]],["impl !RefUnwindSafe for Incoming",1,["iroh::endpoint::Incoming"]],["impl !RefUnwindSafe for IncomingFuture",1,["iroh::endpoint::IncomingFuture"]],["impl !RefUnwindSafe for Router",1,["iroh::protocol::Router"]],["impl !RefUnwindSafe for RouterBuilder",1,["iroh::protocol::RouterBuilder"]],["impl !RefUnwindSafe for CleanupDropGuard",1,["iroh::test_utils::CleanupDropGuard"]],["impl !RefUnwindSafe for DnsPkarrServer",1,["iroh::test_utils::dns_and_pkarr_servers::DnsPkarrServer"]],["impl RefUnwindSafe for IrohAttr",1,["iroh::dns::node_info::IrohAttr"]],["impl RefUnwindSafe for ConnectionType",1,["iroh::magicsock::node_map::node_state::ConnectionType"]],["impl RefUnwindSafe for ControlMsg",1,["iroh::magicsock::node_map::node_state::ControlMsg"]],["impl RefUnwindSafe for DirectAddrType",1,["iroh::magicsock::DirectAddrType"]],["impl RefUnwindSafe for RelayMode",1,["iroh::endpoint::RelayMode"]],["impl RefUnwindSafe for Source",1,["iroh::magicsock::node_map::Source"]],["impl RefUnwindSafe for DnsDiscovery",1,["iroh::discovery::dns::DnsDiscovery"]],["impl RefUnwindSafe for LocalSwarmDiscovery",1,["iroh::discovery::local_swarm_discovery::LocalSwarmDiscovery"]],["impl RefUnwindSafe for PkarrPublisher",1,["iroh::discovery::pkarr::PkarrPublisher"]],["impl RefUnwindSafe for StaticProvider",1,["iroh::discovery::static_provider::StaticProvider"]],["impl RefUnwindSafe for DiscoveryItem",1,["iroh::discovery::DiscoveryItem"]],["impl RefUnwindSafe for NodeInfo",1,["iroh::dns::node_info::NodeInfo"]],["impl RefUnwindSafe for DirectAddr",1,["iroh::magicsock::DirectAddr"]],["impl RefUnwindSafe for DirectAddrInfo",1,["iroh::magicsock::node_map::node_state::DirectAddrInfo"]],["impl RefUnwindSafe for RemoteInfo",1,["iroh::magicsock::node_map::node_state::RemoteInfo"]],["impl RefUnwindSafe for Metrics",1,["iroh::magicsock::metrics::Metrics"]],["impl RefUnwindSafe for Disconnected",1,["iroh::watchable::Disconnected"]],["impl<'a> !RefUnwindSafe for Accept<'a>",1,["iroh::endpoint::Accept"]],["impl<'a, T> RefUnwindSafe for WatchInitializedFut<'a, T>",1,["iroh::watchable::WatchInitializedFut"]],["impl<'a, T> RefUnwindSafe for WatchNextFut<'a, T>",1,["iroh::watchable::WatchNextFut"]],["impl<T> RefUnwindSafe for TxtAttrs<T>
    where\n T: RefUnwindSafe,
    ",1,["iroh::dns::node_info::TxtAttrs"]],["impl<T> RefUnwindSafe for Watchable<T>",1,["iroh::watchable::Watchable"]],["impl<T> RefUnwindSafe for Watcher<T>",1,["iroh::watchable::Watcher"]],["impl<T> RefUnwindSafe for WatcherStream<T>",1,["iroh::watchable::WatcherStream"]]]],["iroh_base",[["impl !RefUnwindSafe for KeyParsingError",1,["iroh_base::key::KeyParsingError"]],["impl RefUnwindSafe for HexOrBase32ParseError",1,["iroh_base::base32::HexOrBase32ParseError"]],["impl RefUnwindSafe for Error",1,["iroh_base::ticket::Error"]],["impl RefUnwindSafe for NodeAddr",1,["iroh_base::node_addr::NodeAddr"]],["impl RefUnwindSafe for PublicKey",1,["iroh_base::key::PublicKey"]],["impl RefUnwindSafe for RelayUrl",1,["iroh_base::relay_url::RelayUrl"]],["impl RefUnwindSafe for SecretKey",1,["iroh_base::key::SecretKey"]],["impl RefUnwindSafe for SharedSecret",1,["iroh_base::key::encryption::SharedSecret"]],["impl RefUnwindSafe for NodeTicket",1,["iroh_base::ticket::node::NodeTicket"]]]],["iroh_bench",[["impl !RefUnwindSafe for EndpointSelector",1,["iroh_bench::EndpointSelector"]],["impl RefUnwindSafe for Commands",1,["iroh_bench::Commands"]],["impl RefUnwindSafe for ConnectionSelector",1,["iroh_bench::ConnectionSelector"]],["impl RefUnwindSafe for Opt",1,["iroh_bench::s2n::Opt"]],["impl RefUnwindSafe for Stats",1,["iroh_bench::stats::Stats"]],["impl RefUnwindSafe for StreamStats",1,["iroh_bench::stats::StreamStats"]],["impl RefUnwindSafe for TransferResult",1,["iroh_bench::stats::TransferResult"]],["impl RefUnwindSafe for ClientStats",1,["iroh_bench::ClientStats"]],["impl RefUnwindSafe for Opt",1,["iroh_bench::Opt"]]]],["iroh_dns_server",[["impl !RefUnwindSafe for DnsHandler",1,["iroh_dns_server::dns::DnsHandler"]],["impl !RefUnwindSafe for DnsServer",1,["iroh_dns_server::dns::DnsServer"]],["impl !RefUnwindSafe for Handle",1,["iroh_dns_server::dns::Handle"]],["impl !RefUnwindSafe for HttpServer",1,["iroh_dns_server::http::HttpServer"]],["impl !RefUnwindSafe for Server",1,["iroh_dns_server::server::Server"]],["impl !RefUnwindSafe for AppState",1,["iroh_dns_server::state::AppState"]],["impl !RefUnwindSafe for ZoneStore",1,["iroh_dns_server::store::ZoneStore"]],["impl RefUnwindSafe for BootstrapOption",1,["iroh_dns_server::config::BootstrapOption"]],["impl RefUnwindSafe for CertMode",1,["iroh_dns_server::http::tls::CertMode"]],["impl RefUnwindSafe for RateLimitConfig",1,["iroh_dns_server::http::rate_limiting::RateLimitConfig"]],["impl RefUnwindSafe for Config",1,["iroh_dns_server::config::Config"]],["impl RefUnwindSafe for MainlineConfig",1,["iroh_dns_server::config::MainlineConfig"]],["impl RefUnwindSafe for MetricsConfig",1,["iroh_dns_server::config::MetricsConfig"]],["impl RefUnwindSafe for StoreConfig",1,["iroh_dns_server::config::StoreConfig"]],["impl RefUnwindSafe for DnsConfig",1,["iroh_dns_server::dns::DnsConfig"]],["impl RefUnwindSafe for HttpConfig",1,["iroh_dns_server::http::HttpConfig"]],["impl RefUnwindSafe for HttpsConfig",1,["iroh_dns_server::http::HttpsConfig"]],["impl RefUnwindSafe for Metrics",1,["iroh_dns_server::metrics::Metrics"]]]],["iroh_net_report",[["impl !RefUnwindSafe for QuicConfig",1,["iroh_net_report::reportgen::QuicConfig"]],["impl RefUnwindSafe for Addr",1,["iroh_net_report::Addr"]],["impl RefUnwindSafe for Client",1,["iroh_net_report::Client"]],["impl RefUnwindSafe for Metrics",1,["iroh_net_report::metrics::Metrics"]],["impl RefUnwindSafe for RelayLatencies",1,["iroh_net_report::RelayLatencies"]],["impl RefUnwindSafe for Report",1,["iroh_net_report::Report"]]]],["iroh_relay",[["impl !RefUnwindSafe for ClientError",1,["iroh_relay::client::ClientError"]],["impl !RefUnwindSafe for MaybeTlsStream",1,["iroh_relay::server::streams::MaybeTlsStream"]],["impl !RefUnwindSafe for ClientBuilder",1,["iroh_relay::client::ClientBuilder"]],["impl !RefUnwindSafe for QuicClient",1,["iroh_relay::quic::QuicClient"]],["impl !RefUnwindSafe for QuicConfig",1,["iroh_relay::server::QuicConfig"]],["impl RefUnwindSafe for ReceivedMessage",1,["iroh_relay::client::conn::ReceivedMessage"]],["impl RefUnwindSafe for Protocol",1,["iroh_relay::http::Protocol"]],["impl RefUnwindSafe for Error",1,["iroh_relay::protos::stun::Error"]],["impl RefUnwindSafe for Client",1,["iroh_relay::client::Client"]],["impl RefUnwindSafe for ClientReceiver",1,["iroh_relay::client::ClientReceiver"]],["impl RefUnwindSafe for ClientConnRateLimit",1,["iroh_relay::server::ClientConnRateLimit"]],["impl RefUnwindSafe for Limits",1,["iroh_relay::server::Limits"]],["impl RefUnwindSafe for Metrics",1,["iroh_relay::server::metrics::Metrics"]],["impl RefUnwindSafe for Server",1,["iroh_relay::server::Server"]],["impl RefUnwindSafe for StunConfig",1,["iroh_relay::server::StunConfig"]],["impl RefUnwindSafe for StunMetrics",1,["iroh_relay::server::metrics::StunMetrics"]],["impl RefUnwindSafe for Conn",1,["iroh_relay::client::conn::Conn"]],["impl RefUnwindSafe for RelayMap",1,["iroh_relay::relay_map::RelayMap"]],["impl RefUnwindSafe for RelayNode",1,["iroh_relay::relay_map::RelayNode"]],["impl RefUnwindSafe for RelayQuicConfig",1,["iroh_relay::relay_map::RelayQuicConfig"]],["impl<EC, EA = EC> !RefUnwindSafe for CertConfig<EC, EA>",1,["iroh_relay::server::CertConfig"]],["impl<EC, EA = EC> !RefUnwindSafe for RelayConfig<EC, EA>",1,["iroh_relay::server::RelayConfig"]],["impl<EC, EA = EC> !RefUnwindSafe for ServerConfig<EC, EA>",1,["iroh_relay::server::ServerConfig"]],["impl<EC, EA = EC> !RefUnwindSafe for TlsConfig<EC, EA>",1,["iroh_relay::server::TlsConfig"]],["impl<Loader> !RefUnwindSafe for ReloadingResolver<Loader>",1,["iroh_relay::server::resolver::ReloadingResolver"]]]],["iroh_test",[["impl !RefUnwindSafe for CallOnDrop",1,["iroh_test::CallOnDrop"]]]]]); if (window.register_implementors) { window.register_implementors(implementors); } else { window.pending_implementors = implementors; } })() -//{"start":57,"fragment_lengths":[14577,3225,3166,6813,2145,8942,358]} \ No newline at end of file +//{"start":57,"fragment_lengths":[14577,3225,3166,6813,2145,9376,358]} \ No newline at end of file diff --git a/pr/2806/docs/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js b/pr/2806/docs/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js index c325e6af03..c4f6e385d4 100644 --- a/pr/2806/docs/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js +++ b/pr/2806/docs/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js @@ -1,9 +1,9 @@ (function() { - var implementors = Object.fromEntries([["iroh",[["impl !UnwindSafe for Builder",1,["iroh::discovery::pkarr::dht::Builder"]],["impl !UnwindSafe for DhtDiscovery",1,["iroh::discovery::pkarr::dht::DhtDiscovery"]],["impl !UnwindSafe for PkarrRelayClient",1,["iroh::discovery::pkarr::PkarrRelayClient"]],["impl !UnwindSafe for PkarrResolver",1,["iroh::discovery::pkarr::PkarrResolver"]],["impl !UnwindSafe for ConcurrentDiscovery",1,["iroh::discovery::ConcurrentDiscovery"]],["impl !UnwindSafe for Builder",1,["iroh::endpoint::Builder"]],["impl !UnwindSafe for Connecting",1,["iroh::endpoint::Connecting"]],["impl !UnwindSafe for Endpoint",1,["iroh::endpoint::Endpoint"]],["impl !UnwindSafe for Incoming",1,["iroh::endpoint::Incoming"]],["impl !UnwindSafe for IncomingFuture",1,["iroh::endpoint::IncomingFuture"]],["impl !UnwindSafe for Router",1,["iroh::protocol::Router"]],["impl !UnwindSafe for RouterBuilder",1,["iroh::protocol::RouterBuilder"]],["impl !UnwindSafe for CleanupDropGuard",1,["iroh::test_utils::CleanupDropGuard"]],["impl !UnwindSafe for DnsPkarrServer",1,["iroh::test_utils::dns_and_pkarr_servers::DnsPkarrServer"]],["impl UnwindSafe for IrohAttr",1,["iroh::dns::node_info::IrohAttr"]],["impl UnwindSafe for ConnectionType",1,["iroh::magicsock::node_map::node_state::ConnectionType"]],["impl UnwindSafe for ControlMsg",1,["iroh::magicsock::node_map::node_state::ControlMsg"]],["impl UnwindSafe for DirectAddrType",1,["iroh::magicsock::DirectAddrType"]],["impl UnwindSafe for RelayMode",1,["iroh::endpoint::RelayMode"]],["impl UnwindSafe for Source",1,["iroh::magicsock::node_map::Source"]],["impl UnwindSafe for DnsDiscovery",1,["iroh::discovery::dns::DnsDiscovery"]],["impl UnwindSafe for LocalSwarmDiscovery",1,["iroh::discovery::local_swarm_discovery::LocalSwarmDiscovery"]],["impl UnwindSafe for PkarrPublisher",1,["iroh::discovery::pkarr::PkarrPublisher"]],["impl UnwindSafe for StaticProvider",1,["iroh::discovery::static_provider::StaticProvider"]],["impl UnwindSafe for DiscoveryItem",1,["iroh::discovery::DiscoveryItem"]],["impl UnwindSafe for NodeInfo",1,["iroh::dns::node_info::NodeInfo"]],["impl UnwindSafe for DirectAddr",1,["iroh::magicsock::DirectAddr"]],["impl UnwindSafe for DirectAddrInfo",1,["iroh::magicsock::node_map::node_state::DirectAddrInfo"]],["impl UnwindSafe for RemoteInfo",1,["iroh::magicsock::node_map::node_state::RemoteInfo"]],["impl UnwindSafe for Metrics",1,["iroh::magicsock::metrics::Metrics"]],["impl UnwindSafe for Disconnected",1,["iroh::watchable::Disconnected"]],["impl<'a> !UnwindSafe for Accept<'a>",1,["iroh::endpoint::Accept"]],["impl<'a, T> !UnwindSafe for WatchInitializedFut<'a, T>",1,["iroh::watchable::WatchInitializedFut"]],["impl<'a, T> !UnwindSafe for WatchNextFut<'a, T>",1,["iroh::watchable::WatchNextFut"]],["impl<T> UnwindSafe for TxtAttrs<T>
    where\n T: RefUnwindSafe,
    ",1,["iroh::dns::node_info::TxtAttrs"]],["impl<T> UnwindSafe for Watchable<T>",1,["iroh::watchable::Watchable"]],["impl<T> UnwindSafe for Watcher<T>",1,["iroh::watchable::Watcher"]],["impl<T> UnwindSafe for WatcherStream<T>",1,["iroh::watchable::WatcherStream"]]]],["iroh_base",[["impl !UnwindSafe for KeyParsingError",1,["iroh_base::key::KeyParsingError"]],["impl UnwindSafe for HexOrBase32ParseError",1,["iroh_base::base32::HexOrBase32ParseError"]],["impl UnwindSafe for Error",1,["iroh_base::ticket::Error"]],["impl UnwindSafe for NodeAddr",1,["iroh_base::node_addr::NodeAddr"]],["impl UnwindSafe for PublicKey",1,["iroh_base::key::PublicKey"]],["impl UnwindSafe for RelayUrl",1,["iroh_base::relay_url::RelayUrl"]],["impl UnwindSafe for SecretKey",1,["iroh_base::key::SecretKey"]],["impl UnwindSafe for SharedSecret",1,["iroh_base::key::encryption::SharedSecret"]],["impl UnwindSafe for NodeTicket",1,["iroh_base::ticket::node::NodeTicket"]]]],["iroh_bench",[["impl !UnwindSafe for EndpointSelector",1,["iroh_bench::EndpointSelector"]],["impl UnwindSafe for Commands",1,["iroh_bench::Commands"]],["impl UnwindSafe for ConnectionSelector",1,["iroh_bench::ConnectionSelector"]],["impl UnwindSafe for Opt",1,["iroh_bench::s2n::Opt"]],["impl UnwindSafe for Stats",1,["iroh_bench::stats::Stats"]],["impl UnwindSafe for StreamStats",1,["iroh_bench::stats::StreamStats"]],["impl UnwindSafe for TransferResult",1,["iroh_bench::stats::TransferResult"]],["impl UnwindSafe for ClientStats",1,["iroh_bench::ClientStats"]],["impl UnwindSafe for Opt",1,["iroh_bench::Opt"]]]],["iroh_dns_server",[["impl !UnwindSafe for DnsHandler",1,["iroh_dns_server::dns::DnsHandler"]],["impl !UnwindSafe for DnsServer",1,["iroh_dns_server::dns::DnsServer"]],["impl !UnwindSafe for Handle",1,["iroh_dns_server::dns::Handle"]],["impl !UnwindSafe for HttpServer",1,["iroh_dns_server::http::HttpServer"]],["impl !UnwindSafe for Server",1,["iroh_dns_server::server::Server"]],["impl !UnwindSafe for AppState",1,["iroh_dns_server::state::AppState"]],["impl !UnwindSafe for ZoneStore",1,["iroh_dns_server::store::ZoneStore"]],["impl UnwindSafe for BootstrapOption",1,["iroh_dns_server::config::BootstrapOption"]],["impl UnwindSafe for CertMode",1,["iroh_dns_server::http::tls::CertMode"]],["impl UnwindSafe for RateLimitConfig",1,["iroh_dns_server::http::rate_limiting::RateLimitConfig"]],["impl UnwindSafe for Config",1,["iroh_dns_server::config::Config"]],["impl UnwindSafe for MainlineConfig",1,["iroh_dns_server::config::MainlineConfig"]],["impl UnwindSafe for MetricsConfig",1,["iroh_dns_server::config::MetricsConfig"]],["impl UnwindSafe for StoreConfig",1,["iroh_dns_server::config::StoreConfig"]],["impl UnwindSafe for DnsConfig",1,["iroh_dns_server::dns::DnsConfig"]],["impl UnwindSafe for HttpConfig",1,["iroh_dns_server::http::HttpConfig"]],["impl UnwindSafe for HttpsConfig",1,["iroh_dns_server::http::HttpsConfig"]],["impl UnwindSafe for Metrics",1,["iroh_dns_server::metrics::Metrics"]]]],["iroh_net_report",[["impl !UnwindSafe for QuicConfig",1,["iroh_net_report::reportgen::QuicConfig"]],["impl UnwindSafe for Addr",1,["iroh_net_report::Addr"]],["impl UnwindSafe for Client",1,["iroh_net_report::Client"]],["impl UnwindSafe for Metrics",1,["iroh_net_report::metrics::Metrics"]],["impl UnwindSafe for RelayLatencies",1,["iroh_net_report::RelayLatencies"]],["impl UnwindSafe for Report",1,["iroh_net_report::Report"]]]],["iroh_relay",[["impl !UnwindSafe for ClientError",1,["iroh_relay::client::ClientError"]],["impl !UnwindSafe for MaybeTlsStream",1,["iroh_relay::server::streams::MaybeTlsStream"]],["impl !UnwindSafe for ClientBuilder",1,["iroh_relay::client::ClientBuilder"]],["impl !UnwindSafe for QuicClient",1,["iroh_relay::quic::QuicClient"]],["impl !UnwindSafe for QuicConfig",1,["iroh_relay::server::QuicConfig"]],["impl UnwindSafe for ReceivedMessage",1,["iroh_relay::client::conn::ReceivedMessage"]],["impl UnwindSafe for Protocol",1,["iroh_relay::http::Protocol"]],["impl UnwindSafe for Error",1,["iroh_relay::protos::stun::Error"]],["impl UnwindSafe for Client",1,["iroh_relay::client::Client"]],["impl UnwindSafe for ClientReceiver",1,["iroh_relay::client::ClientReceiver"]],["impl UnwindSafe for ClientConnRateLimit",1,["iroh_relay::server::ClientConnRateLimit"]],["impl UnwindSafe for Limits",1,["iroh_relay::server::Limits"]],["impl UnwindSafe for Metrics",1,["iroh_relay::server::metrics::Metrics"]],["impl UnwindSafe for Server",1,["iroh_relay::server::Server"]],["impl UnwindSafe for StunConfig",1,["iroh_relay::server::StunConfig"]],["impl UnwindSafe for StunMetrics",1,["iroh_relay::server::metrics::StunMetrics"]],["impl UnwindSafe for Conn",1,["iroh_relay::client::conn::Conn"]],["impl UnwindSafe for RelayMap",1,["iroh_relay::relay_map::RelayMap"]],["impl UnwindSafe for RelayNode",1,["iroh_relay::relay_map::RelayNode"]],["impl UnwindSafe for RelayQuicConfig",1,["iroh_relay::relay_map::RelayQuicConfig"]],["impl<EC, EA = EC> !UnwindSafe for CertConfig<EC, EA>",1,["iroh_relay::server::CertConfig"]],["impl<EC, EA = EC> !UnwindSafe for RelayConfig<EC, EA>",1,["iroh_relay::server::RelayConfig"]],["impl<EC, EA = EC> !UnwindSafe for ServerConfig<EC, EA>",1,["iroh_relay::server::ServerConfig"]],["impl<EC, EA = EC> !UnwindSafe for TlsConfig<EC, EA>",1,["iroh_relay::server::TlsConfig"]]]],["iroh_test",[["impl !UnwindSafe for CallOnDrop",1,["iroh_test::CallOnDrop"]]]]]); + var implementors = Object.fromEntries([["iroh",[["impl !UnwindSafe for Builder",1,["iroh::discovery::pkarr::dht::Builder"]],["impl !UnwindSafe for DhtDiscovery",1,["iroh::discovery::pkarr::dht::DhtDiscovery"]],["impl !UnwindSafe for PkarrRelayClient",1,["iroh::discovery::pkarr::PkarrRelayClient"]],["impl !UnwindSafe for PkarrResolver",1,["iroh::discovery::pkarr::PkarrResolver"]],["impl !UnwindSafe for ConcurrentDiscovery",1,["iroh::discovery::ConcurrentDiscovery"]],["impl !UnwindSafe for Builder",1,["iroh::endpoint::Builder"]],["impl !UnwindSafe for Connecting",1,["iroh::endpoint::Connecting"]],["impl !UnwindSafe for Endpoint",1,["iroh::endpoint::Endpoint"]],["impl !UnwindSafe for Incoming",1,["iroh::endpoint::Incoming"]],["impl !UnwindSafe for IncomingFuture",1,["iroh::endpoint::IncomingFuture"]],["impl !UnwindSafe for Router",1,["iroh::protocol::Router"]],["impl !UnwindSafe for RouterBuilder",1,["iroh::protocol::RouterBuilder"]],["impl !UnwindSafe for CleanupDropGuard",1,["iroh::test_utils::CleanupDropGuard"]],["impl !UnwindSafe for DnsPkarrServer",1,["iroh::test_utils::dns_and_pkarr_servers::DnsPkarrServer"]],["impl UnwindSafe for IrohAttr",1,["iroh::dns::node_info::IrohAttr"]],["impl UnwindSafe for ConnectionType",1,["iroh::magicsock::node_map::node_state::ConnectionType"]],["impl UnwindSafe for ControlMsg",1,["iroh::magicsock::node_map::node_state::ControlMsg"]],["impl UnwindSafe for DirectAddrType",1,["iroh::magicsock::DirectAddrType"]],["impl UnwindSafe for RelayMode",1,["iroh::endpoint::RelayMode"]],["impl UnwindSafe for Source",1,["iroh::magicsock::node_map::Source"]],["impl UnwindSafe for DnsDiscovery",1,["iroh::discovery::dns::DnsDiscovery"]],["impl UnwindSafe for LocalSwarmDiscovery",1,["iroh::discovery::local_swarm_discovery::LocalSwarmDiscovery"]],["impl UnwindSafe for PkarrPublisher",1,["iroh::discovery::pkarr::PkarrPublisher"]],["impl UnwindSafe for StaticProvider",1,["iroh::discovery::static_provider::StaticProvider"]],["impl UnwindSafe for DiscoveryItem",1,["iroh::discovery::DiscoveryItem"]],["impl UnwindSafe for NodeInfo",1,["iroh::dns::node_info::NodeInfo"]],["impl UnwindSafe for DirectAddr",1,["iroh::magicsock::DirectAddr"]],["impl UnwindSafe for DirectAddrInfo",1,["iroh::magicsock::node_map::node_state::DirectAddrInfo"]],["impl UnwindSafe for RemoteInfo",1,["iroh::magicsock::node_map::node_state::RemoteInfo"]],["impl UnwindSafe for Metrics",1,["iroh::magicsock::metrics::Metrics"]],["impl UnwindSafe for Disconnected",1,["iroh::watchable::Disconnected"]],["impl<'a> !UnwindSafe for Accept<'a>",1,["iroh::endpoint::Accept"]],["impl<'a, T> !UnwindSafe for WatchInitializedFut<'a, T>",1,["iroh::watchable::WatchInitializedFut"]],["impl<'a, T> !UnwindSafe for WatchNextFut<'a, T>",1,["iroh::watchable::WatchNextFut"]],["impl<T> UnwindSafe for TxtAttrs<T>
    where\n T: RefUnwindSafe,
    ",1,["iroh::dns::node_info::TxtAttrs"]],["impl<T> UnwindSafe for Watchable<T>",1,["iroh::watchable::Watchable"]],["impl<T> UnwindSafe for Watcher<T>",1,["iroh::watchable::Watcher"]],["impl<T> UnwindSafe for WatcherStream<T>",1,["iroh::watchable::WatcherStream"]]]],["iroh_base",[["impl !UnwindSafe for KeyParsingError",1,["iroh_base::key::KeyParsingError"]],["impl UnwindSafe for HexOrBase32ParseError",1,["iroh_base::base32::HexOrBase32ParseError"]],["impl UnwindSafe for Error",1,["iroh_base::ticket::Error"]],["impl UnwindSafe for NodeAddr",1,["iroh_base::node_addr::NodeAddr"]],["impl UnwindSafe for PublicKey",1,["iroh_base::key::PublicKey"]],["impl UnwindSafe for RelayUrl",1,["iroh_base::relay_url::RelayUrl"]],["impl UnwindSafe for SecretKey",1,["iroh_base::key::SecretKey"]],["impl UnwindSafe for SharedSecret",1,["iroh_base::key::encryption::SharedSecret"]],["impl UnwindSafe for NodeTicket",1,["iroh_base::ticket::node::NodeTicket"]]]],["iroh_bench",[["impl !UnwindSafe for EndpointSelector",1,["iroh_bench::EndpointSelector"]],["impl UnwindSafe for Commands",1,["iroh_bench::Commands"]],["impl UnwindSafe for ConnectionSelector",1,["iroh_bench::ConnectionSelector"]],["impl UnwindSafe for Opt",1,["iroh_bench::s2n::Opt"]],["impl UnwindSafe for Stats",1,["iroh_bench::stats::Stats"]],["impl UnwindSafe for StreamStats",1,["iroh_bench::stats::StreamStats"]],["impl UnwindSafe for TransferResult",1,["iroh_bench::stats::TransferResult"]],["impl UnwindSafe for ClientStats",1,["iroh_bench::ClientStats"]],["impl UnwindSafe for Opt",1,["iroh_bench::Opt"]]]],["iroh_dns_server",[["impl !UnwindSafe for DnsHandler",1,["iroh_dns_server::dns::DnsHandler"]],["impl !UnwindSafe for DnsServer",1,["iroh_dns_server::dns::DnsServer"]],["impl !UnwindSafe for Handle",1,["iroh_dns_server::dns::Handle"]],["impl !UnwindSafe for HttpServer",1,["iroh_dns_server::http::HttpServer"]],["impl !UnwindSafe for Server",1,["iroh_dns_server::server::Server"]],["impl !UnwindSafe for AppState",1,["iroh_dns_server::state::AppState"]],["impl !UnwindSafe for ZoneStore",1,["iroh_dns_server::store::ZoneStore"]],["impl UnwindSafe for BootstrapOption",1,["iroh_dns_server::config::BootstrapOption"]],["impl UnwindSafe for CertMode",1,["iroh_dns_server::http::tls::CertMode"]],["impl UnwindSafe for RateLimitConfig",1,["iroh_dns_server::http::rate_limiting::RateLimitConfig"]],["impl UnwindSafe for Config",1,["iroh_dns_server::config::Config"]],["impl UnwindSafe for MainlineConfig",1,["iroh_dns_server::config::MainlineConfig"]],["impl UnwindSafe for MetricsConfig",1,["iroh_dns_server::config::MetricsConfig"]],["impl UnwindSafe for StoreConfig",1,["iroh_dns_server::config::StoreConfig"]],["impl UnwindSafe for DnsConfig",1,["iroh_dns_server::dns::DnsConfig"]],["impl UnwindSafe for HttpConfig",1,["iroh_dns_server::http::HttpConfig"]],["impl UnwindSafe for HttpsConfig",1,["iroh_dns_server::http::HttpsConfig"]],["impl UnwindSafe for Metrics",1,["iroh_dns_server::metrics::Metrics"]]]],["iroh_net_report",[["impl !UnwindSafe for QuicConfig",1,["iroh_net_report::reportgen::QuicConfig"]],["impl UnwindSafe for Addr",1,["iroh_net_report::Addr"]],["impl UnwindSafe for Client",1,["iroh_net_report::Client"]],["impl UnwindSafe for Metrics",1,["iroh_net_report::metrics::Metrics"]],["impl UnwindSafe for RelayLatencies",1,["iroh_net_report::RelayLatencies"]],["impl UnwindSafe for Report",1,["iroh_net_report::Report"]]]],["iroh_relay",[["impl !UnwindSafe for ClientError",1,["iroh_relay::client::ClientError"]],["impl !UnwindSafe for MaybeTlsStream",1,["iroh_relay::server::streams::MaybeTlsStream"]],["impl !UnwindSafe for ClientBuilder",1,["iroh_relay::client::ClientBuilder"]],["impl !UnwindSafe for QuicClient",1,["iroh_relay::quic::QuicClient"]],["impl !UnwindSafe for QuicConfig",1,["iroh_relay::server::QuicConfig"]],["impl UnwindSafe for ReceivedMessage",1,["iroh_relay::client::conn::ReceivedMessage"]],["impl UnwindSafe for Protocol",1,["iroh_relay::http::Protocol"]],["impl UnwindSafe for Error",1,["iroh_relay::protos::stun::Error"]],["impl UnwindSafe for Client",1,["iroh_relay::client::Client"]],["impl UnwindSafe for ClientReceiver",1,["iroh_relay::client::ClientReceiver"]],["impl UnwindSafe for ClientConnRateLimit",1,["iroh_relay::server::ClientConnRateLimit"]],["impl UnwindSafe for Limits",1,["iroh_relay::server::Limits"]],["impl UnwindSafe for Metrics",1,["iroh_relay::server::metrics::Metrics"]],["impl UnwindSafe for Server",1,["iroh_relay::server::Server"]],["impl UnwindSafe for StunConfig",1,["iroh_relay::server::StunConfig"]],["impl UnwindSafe for StunMetrics",1,["iroh_relay::server::metrics::StunMetrics"]],["impl UnwindSafe for Conn",1,["iroh_relay::client::conn::Conn"]],["impl UnwindSafe for RelayMap",1,["iroh_relay::relay_map::RelayMap"]],["impl UnwindSafe for RelayNode",1,["iroh_relay::relay_map::RelayNode"]],["impl UnwindSafe for RelayQuicConfig",1,["iroh_relay::relay_map::RelayQuicConfig"]],["impl<EC, EA = EC> !UnwindSafe for CertConfig<EC, EA>",1,["iroh_relay::server::CertConfig"]],["impl<EC, EA = EC> !UnwindSafe for RelayConfig<EC, EA>",1,["iroh_relay::server::RelayConfig"]],["impl<EC, EA = EC> !UnwindSafe for ServerConfig<EC, EA>",1,["iroh_relay::server::ServerConfig"]],["impl<EC, EA = EC> !UnwindSafe for TlsConfig<EC, EA>",1,["iroh_relay::server::TlsConfig"]],["impl<Loader> !UnwindSafe for ReloadingResolver<Loader>",1,["iroh_relay::server::resolver::ReloadingResolver"]]]],["iroh_test",[["impl !UnwindSafe for CallOnDrop",1,["iroh_test::CallOnDrop"]]]]]); if (window.register_implementors) { window.register_implementors(implementors); } else { window.pending_implementors = implementors; } })() -//{"start":57,"fragment_lengths":[14237,3144,3085,6651,2091,8726,349]} \ No newline at end of file +//{"start":57,"fragment_lengths":[14237,3144,3085,6651,2091,9151,349]} \ No newline at end of file diff --git a/pr/2806/docs/trait.impl/rustls/server/server_conn/trait.ResolvesServerCert.js b/pr/2806/docs/trait.impl/rustls/server/server_conn/trait.ResolvesServerCert.js new file mode 100644 index 0000000000..6c165b12bd --- /dev/null +++ b/pr/2806/docs/trait.impl/rustls/server/server_conn/trait.ResolvesServerCert.js @@ -0,0 +1,9 @@ +(function() { + var implementors = Object.fromEntries([["iroh_relay",[["impl<Loader> ResolvesServerCert for ReloadingResolver<Loader>
    where\n Loader: Loader<Value = CertifiedKey> + Send + Debug,
    "]]]]); + if (window.register_implementors) { + window.register_implementors(implementors); + } else { + window.pending_implementors = implementors; + } +})() +//{"start":57,"fragment_lengths":[580]} \ No newline at end of file diff --git a/pr/2806/docs/trait.impl/serde/de/trait.Deserialize.js b/pr/2806/docs/trait.impl/serde/de/trait.Deserialize.js index 4f2d11ec75..aff35bd7cf 100644 --- a/pr/2806/docs/trait.impl/serde/de/trait.Deserialize.js +++ b/pr/2806/docs/trait.impl/serde/de/trait.Deserialize.js @@ -1,5 +1,5 @@ (function() { - var implementors = Object.fromEntries([["iroh",[["impl<'de> Deserialize<'de> for ConnectionType"],["impl<'de> Deserialize<'de> for ControlMsg"],["impl<'de> Deserialize<'de> for Source"],["impl<'de> Deserialize<'de> for DirectAddrInfo"],["impl<'de> Deserialize<'de> for RemoteInfo"]]],["iroh_base",[["impl<'de> Deserialize<'de> for NodeAddr"],["impl<'de> Deserialize<'de> for PublicKey"],["impl<'de> Deserialize<'de> for RelayUrl"],["impl<'de> Deserialize<'de> for SecretKey"],["impl<'de> Deserialize<'de> for NodeTicket"]]],["iroh_dns_server",[["impl<'de> Deserialize<'de> for BootstrapOption"],["impl<'de> Deserialize<'de> for CertMode"],["impl<'de> Deserialize<'de> for RateLimitConfig"],["impl<'de> Deserialize<'de> for Config"],["impl<'de> Deserialize<'de> for MainlineConfig"],["impl<'de> Deserialize<'de> for MetricsConfig"],["impl<'de> Deserialize<'de> for StoreConfig"],["impl<'de> Deserialize<'de> for DnsConfig"],["impl<'de> Deserialize<'de> for HttpConfig"],["impl<'de> Deserialize<'de> for HttpsConfig"]]],["iroh_relay",[["impl<'de> Deserialize<'de> for RelayNode"],["impl<'de> Deserialize<'de> for RelayQuicConfig"]]]]); + var implementors = Object.fromEntries([["iroh",[["impl<'de> Deserialize<'de> for ConnectionType"],["impl<'de> Deserialize<'de> for ControlMsg"],["impl<'de> Deserialize<'de> for Source"],["impl<'de> Deserialize<'de> for DirectAddrInfo"],["impl<'de> Deserialize<'de> for RemoteInfo"]]],["iroh_base",[["impl<'de> Deserialize<'de> for NodeAddr"],["impl<'de> Deserialize<'de> for PublicKey"],["impl<'de> Deserialize<'de> for RelayUrl"],["impl<'de> Deserialize<'de> for SecretKey"],["impl<'de> Deserialize<'de> for NodeTicket"]]],["iroh_dns_server",[["impl<'de> Deserialize<'de> for BootstrapOption"],["impl<'de> Deserialize<'de> for CertMode"],["impl<'de> Deserialize<'de> for RateLimitConfig"],["impl<'de> Deserialize<'de> for Config"],["impl<'de> Deserialize<'de> for MainlineConfig"],["impl<'de> Deserialize<'de> for MetricsConfig"],["impl<'de> Deserialize<'de> for StoreConfig"],["impl<'de> Deserialize<'de> for DnsConfig"],["impl<'de> Deserialize<'de> for HttpConfig"],["impl<'de> Deserialize<'de> for HttpsConfig"]]],["iroh_relay",[["impl<'de> Deserialize<'de> for RelayNode"],["impl<'de> Deserialize<'de> for RelayQuicConfig"]]]]); if (window.register_implementors) { window.register_implementors(implementors); } else { diff --git a/pr/2806/docs/trait.impl/serde/ser/trait.Serialize.js b/pr/2806/docs/trait.impl/serde/ser/trait.Serialize.js index 8ae1f0930e..34885fbb2e 100644 --- a/pr/2806/docs/trait.impl/serde/ser/trait.Serialize.js +++ b/pr/2806/docs/trait.impl/serde/ser/trait.Serialize.js @@ -1,5 +1,5 @@ (function() { - var implementors = Object.fromEntries([["iroh",[["impl Serialize for ConnectionType"],["impl Serialize for ControlMsg"],["impl Serialize for Source"],["impl Serialize for DirectAddrInfo"],["impl Serialize for RemoteInfo"]]],["iroh_base",[["impl Serialize for NodeAddr"],["impl Serialize for PublicKey"],["impl Serialize for RelayUrl"],["impl Serialize for SecretKey"],["impl Serialize for NodeTicket"]]],["iroh_dns_server",[["impl Serialize for BootstrapOption"],["impl Serialize for CertMode"],["impl Serialize for RateLimitConfig"],["impl Serialize for Config"],["impl Serialize for MainlineConfig"],["impl Serialize for MetricsConfig"],["impl Serialize for StoreConfig"],["impl Serialize for DnsConfig"],["impl Serialize for HttpConfig"],["impl Serialize for HttpsConfig"]]],["iroh_relay",[["impl Serialize for RelayNode"],["impl Serialize for RelayQuicConfig"]]]]); + var implementors = Object.fromEntries([["iroh",[["impl Serialize for ConnectionType"],["impl Serialize for ControlMsg"],["impl Serialize for Source"],["impl Serialize for DirectAddrInfo"],["impl Serialize for RemoteInfo"]]],["iroh_base",[["impl Serialize for NodeAddr"],["impl Serialize for PublicKey"],["impl Serialize for RelayUrl"],["impl Serialize for SecretKey"],["impl Serialize for NodeTicket"]]],["iroh_dns_server",[["impl Serialize for BootstrapOption"],["impl Serialize for CertMode"],["impl Serialize for RateLimitConfig"],["impl Serialize for Config"],["impl Serialize for MainlineConfig"],["impl Serialize for MetricsConfig"],["impl Serialize for StoreConfig"],["impl Serialize for DnsConfig"],["impl Serialize for HttpConfig"],["impl Serialize for HttpsConfig"]]],["iroh_relay",[["impl Serialize for RelayNode"],["impl Serialize for RelayQuicConfig"]]]]); if (window.register_implementors) { window.register_implementors(implementors); } else { diff --git a/pr/2806/docs/type.impl/iroh/struct.PublicKey.js b/pr/2806/docs/type.impl/iroh/struct.PublicKey.js index 7854fc8c5b..eb19c81775 100644 --- a/pr/2806/docs/type.impl/iroh/struct.PublicKey.js +++ b/pr/2806/docs/type.impl/iroh/struct.PublicKey.js @@ -1,5 +1,5 @@ (function() { - var type_impls = Object.fromEntries([["iroh",[["
    Source§

    impl AsRef<[u8]> for PublicKey

    Source§

    fn as_ref(&self) -> &[u8]

    Converts this type into a shared reference of the (usually inferred) input type.
    ","AsRef<[u8]>","iroh::NodeId"],["
    Source§

    impl Clone for PublicKey

    Source§

    fn clone(&self) -> PublicKey

    Returns a copy of the value. Read more
    1.0.0 · Source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    ","Clone","iroh::NodeId"],["
    Source§

    impl Debug for PublicKey

    Source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

    Formats the value using the given formatter. Read more
    ","Debug","iroh::NodeId"],["
    Source§

    impl<'de> Deserialize<'de> for PublicKey

    Source§

    fn deserialize<D>(\n deserializer: D,\n) -> Result<PublicKey, <D as Deserializer<'de>>::Error>
    where\n D: Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    ","Deserialize<'de>","iroh::NodeId"],["
    Source§

    impl Display for PublicKey

    Source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

    Formats the value using the given formatter. Read more
    ","Display","iroh::NodeId"],["
    Source§

    impl From<VerifyingKey> for PublicKey

    Source§

    fn from(verifying_key: VerifyingKey) -> PublicKey

    Converts to this type from the input type.
    ","From","iroh::NodeId"],["
    Source§

    impl FromStr for PublicKey

    Deserialises the PublicKey from it’s base32 encoding.

    \n

    Display is capable of serialising this format.

    \n
    Source§

    type Err = KeyParsingError

    The associated error which can be returned from parsing.
    Source§

    fn from_str(s: &str) -> Result<PublicKey, <PublicKey as FromStr>::Err>

    Parses a string s to return a value of this type. Read more
    ","FromStr","iroh::NodeId"],["
    Source§

    impl Hash for PublicKey

    Source§

    fn hash<H>(&self, state: &mut H)
    where\n H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · Source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where\n H: Hasher,\n Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    ","Hash","iroh::NodeId"],["
    Source§

    impl Ord for PublicKey

    Source§

    fn cmp(&self, other: &PublicKey) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · Source§

    fn max(self, other: Self) -> Self
    where\n Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · Source§

    fn min(self, other: Self) -> Self
    where\n Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · Source§

    fn clamp(self, min: Self, max: Self) -> Self
    where\n Self: Sized,

    Restrict a value to a certain interval. Read more
    ","Ord","iroh::NodeId"],["
    Source§

    impl PartialEq for PublicKey

    Source§

    fn eq(&self, other: &PublicKey) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · Source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient,\nand should not be overridden without very good reason.
    ","PartialEq","iroh::NodeId"],["
    Source§

    impl PartialOrd for PublicKey

    Source§

    fn partial_cmp(&self, other: &PublicKey) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · Source§

    fn lt(&self, other: &Rhs) -> bool

    Tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · Source§

    fn le(&self, other: &Rhs) -> bool

    Tests less than or equal to (for self and other) and is used by the\n<= operator. Read more
    1.0.0 · Source§

    fn gt(&self, other: &Rhs) -> bool

    Tests greater than (for self and other) and is used by the >\noperator. Read more
    1.0.0 · Source§

    fn ge(&self, other: &Rhs) -> bool

    Tests greater than or equal to (for self and other) and is used by\nthe >= operator. Read more
    ","PartialOrd","iroh::NodeId"],["
    Source§

    impl PublicKey

    Source

    pub fn as_bytes(&self) -> &[u8; 32]

    Get this public key as a byte array.

    \n
    Source

    pub fn from_bytes(bytes: &[u8; 32]) -> Result<PublicKey, Error>

    Construct a PublicKey from a slice of bytes.

    \n
    §Warning
    \n

    This will return a [SignatureError] if the bytes passed into this method do not represent\na valid ed25519_dalek curve point. Will never fail for bytes return from Self::as_bytes.\nSee [VerifyingKey::from_bytes] for details.

    \n
    Source

    pub fn verify(&self, message: &[u8], signature: &Signature) -> Result<(), Error>

    Verify a signature on a message with this secret key’s public key.

    \n
    §Return
    \n

    Returns Ok(()) if the signature is valid, and Err otherwise.

    \n
    Source

    pub fn fmt_short(&self) -> String

    Convert to a base32 string limited to the first 10 bytes for a friendly string\nrepresentation of the key.

    \n
    ",0,"iroh::NodeId"],["
    Source§

    impl Serialize for PublicKey

    Source§

    fn serialize<S>(\n &self,\n serializer: S,\n) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>
    where\n S: Serializer,

    Serialize this value into the given Serde serializer. Read more
    ","Serialize","iroh::NodeId"],["
    Source§

    impl TryFrom<&[u8]> for PublicKey

    Source§

    type Error = Error

    The type returned in the event of a conversion error.
    Source§

    fn try_from(\n bytes: &[u8],\n) -> Result<PublicKey, <PublicKey as TryFrom<&[u8]>>::Error>

    Performs the conversion.
    ","TryFrom<&[u8]>","iroh::NodeId"],["
    Source§

    impl TryFrom<&[u8; 32]> for PublicKey

    Source§

    type Error = Error

    The type returned in the event of a conversion error.
    Source§

    fn try_from(\n bytes: &[u8; 32],\n) -> Result<PublicKey, <PublicKey as TryFrom<&[u8; 32]>>::Error>

    Performs the conversion.
    ","TryFrom<&[u8; 32]>","iroh::NodeId"],["
    Source§

    impl Copy for PublicKey

    ","Copy","iroh::NodeId"],["
    Source§

    impl Eq for PublicKey

    ","Eq","iroh::NodeId"],["
    Source§

    impl StructuralPartialEq for PublicKey

    ","StructuralPartialEq","iroh::NodeId"]]]]); + var type_impls = Object.fromEntries([["iroh",[["
    Source§

    impl AsRef<[u8]> for PublicKey

    Source§

    fn as_ref(&self) -> &[u8]

    Converts this type into a shared reference of the (usually inferred) input type.
    ","AsRef<[u8]>","iroh::NodeId"],["
    Source§

    impl Clone for PublicKey

    Source§

    fn clone(&self) -> PublicKey

    Returns a copy of the value. Read more
    1.0.0 · Source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    ","Clone","iroh::NodeId"],["
    Source§

    impl Debug for PublicKey

    Source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

    Formats the value using the given formatter. Read more
    ","Debug","iroh::NodeId"],["
    Source§

    impl<'de> Deserialize<'de> for PublicKey

    Source§

    fn deserialize<D>(\n deserializer: D,\n) -> Result<PublicKey, <D as Deserializer<'de>>::Error>
    where\n D: Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    ","Deserialize<'de>","iroh::NodeId"],["
    Source§

    impl Display for PublicKey

    Source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

    Formats the value using the given formatter. Read more
    ","Display","iroh::NodeId"],["
    Source§

    impl From<VerifyingKey> for PublicKey

    Source§

    fn from(verifying_key: VerifyingKey) -> PublicKey

    Converts to this type from the input type.
    ","From","iroh::NodeId"],["
    Source§

    impl FromStr for PublicKey

    Deserialises the PublicKey from it’s base32 encoding.

    \n

    Display is capable of serialising this format.

    \n
    Source§

    type Err = KeyParsingError

    The associated error which can be returned from parsing.
    Source§

    fn from_str(s: &str) -> Result<PublicKey, <PublicKey as FromStr>::Err>

    Parses a string s to return a value of this type. Read more
    ","FromStr","iroh::NodeId"],["
    Source§

    impl Hash for PublicKey

    Source§

    fn hash<H>(&self, state: &mut H)
    where\n H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · Source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where\n H: Hasher,\n Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    ","Hash","iroh::NodeId"],["
    Source§

    impl Ord for PublicKey

    Source§

    fn cmp(&self, other: &PublicKey) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · Source§

    fn max(self, other: Self) -> Self
    where\n Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · Source§

    fn min(self, other: Self) -> Self
    where\n Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · Source§

    fn clamp(self, min: Self, max: Self) -> Self
    where\n Self: Sized,

    Restrict a value to a certain interval. Read more
    ","Ord","iroh::NodeId"],["
    Source§

    impl PartialEq for PublicKey

    Source§

    fn eq(&self, other: &PublicKey) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · Source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient,\nand should not be overridden without very good reason.
    ","PartialEq","iroh::NodeId"],["
    Source§

    impl PartialOrd for PublicKey

    Source§

    fn partial_cmp(&self, other: &PublicKey) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · Source§

    fn lt(&self, other: &Rhs) -> bool

    Tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · Source§

    fn le(&self, other: &Rhs) -> bool

    Tests less than or equal to (for self and other) and is used by the\n<= operator. Read more
    1.0.0 · Source§

    fn gt(&self, other: &Rhs) -> bool

    Tests greater than (for self and other) and is used by the >\noperator. Read more
    1.0.0 · Source§

    fn ge(&self, other: &Rhs) -> bool

    Tests greater than or equal to (for self and other) and is used by\nthe >= operator. Read more
    ","PartialOrd","iroh::NodeId"],["
    Source§

    impl PublicKey

    Source

    pub fn as_bytes(&self) -> &[u8; 32]

    Get this public key as a byte array.

    \n
    Source

    pub fn from_bytes(bytes: &[u8; 32]) -> Result<PublicKey, Error>

    Construct a PublicKey from a slice of bytes.

    \n
    §Warning
    \n

    This will return a [SignatureError] if the bytes passed into this method do not represent\na valid ed25519_dalek curve point. Will never fail for bytes return from Self::as_bytes.\nSee [VerifyingKey::from_bytes] for details.

    \n
    Source

    pub fn verify(&self, message: &[u8], signature: &Signature) -> Result<(), Error>

    Verify a signature on a message with this secret key’s public key.

    \n
    §Return
    \n

    Returns Ok(()) if the signature is valid, and Err otherwise.

    \n
    Source

    pub fn fmt_short(&self) -> String

    Convert to a base32 string limited to the first 10 bytes for a friendly string\nrepresentation of the key.

    \n
    ",0,"iroh::NodeId"],["
    Source§

    impl Serialize for PublicKey

    Source§

    fn serialize<S>(\n &self,\n serializer: S,\n) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>
    where\n S: Serializer,

    Serialize this value into the given Serde serializer. Read more
    ","Serialize","iroh::NodeId"],["
    Source§

    impl TryFrom<&[u8]> for PublicKey

    Source§

    type Error = Error

    The type returned in the event of a conversion error.
    Source§

    fn try_from(\n bytes: &[u8],\n) -> Result<PublicKey, <PublicKey as TryFrom<&[u8]>>::Error>

    Performs the conversion.
    ","TryFrom<&[u8]>","iroh::NodeId"],["
    Source§

    impl TryFrom<&[u8; 32]> for PublicKey

    Source§

    type Error = Error

    The type returned in the event of a conversion error.
    Source§

    fn try_from(\n bytes: &[u8; 32],\n) -> Result<PublicKey, <PublicKey as TryFrom<&[u8; 32]>>::Error>

    Performs the conversion.
    ","TryFrom<&[u8; 32]>","iroh::NodeId"],["
    Source§

    impl Copy for PublicKey

    ","Copy","iroh::NodeId"],["
    Source§

    impl Eq for PublicKey

    ","Eq","iroh::NodeId"],["
    Source§

    impl StructuralPartialEq for PublicKey

    ","StructuralPartialEq","iroh::NodeId"]]]]); if (window.register_type_impls) { window.register_type_impls(type_impls); } else { diff --git a/pr/2806/docs/type.impl/iroh_base/struct.PublicKey.js b/pr/2806/docs/type.impl/iroh_base/struct.PublicKey.js index 9617f0b16f..a63afdfe60 100644 --- a/pr/2806/docs/type.impl/iroh_base/struct.PublicKey.js +++ b/pr/2806/docs/type.impl/iroh_base/struct.PublicKey.js @@ -1,5 +1,5 @@ (function() { - var type_impls = Object.fromEntries([["iroh_base",[["
    Source§

    impl AsRef<[u8]> for PublicKey

    Source§

    fn as_ref(&self) -> &[u8]

    Converts this type into a shared reference of the (usually inferred) input type.
    ","AsRef<[u8]>","iroh_base::key::NodeId"],["
    Source§

    impl Clone for PublicKey

    Source§

    fn clone(&self) -> PublicKey

    Returns a copy of the value. Read more
    1.0.0 · Source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    ","Clone","iroh_base::key::NodeId"],["
    Source§

    impl Debug for PublicKey

    Source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    ","Debug","iroh_base::key::NodeId"],["
    Source§

    impl<'de> Deserialize<'de> for PublicKey

    Source§

    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
    where\n D: Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    ","Deserialize<'de>","iroh_base::key::NodeId"],["
    Source§

    impl Display for PublicKey

    Source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    ","Display","iroh_base::key::NodeId"],["
    Source§

    impl From<VerifyingKey> for PublicKey

    Source§

    fn from(verifying_key: VerifyingKey) -> Self

    Converts to this type from the input type.
    ","From","iroh_base::key::NodeId"],["
    Source§

    impl FromStr for PublicKey

    Deserialises the PublicKey from it’s base32 encoding.

    \n

    Display is capable of serialising this format.

    \n
    Source§

    type Err = KeyParsingError

    The associated error which can be returned from parsing.
    Source§

    fn from_str(s: &str) -> Result<Self, Self::Err>

    Parses a string s to return a value of this type. Read more
    ","FromStr","iroh_base::key::NodeId"],["
    Source§

    impl Hash for PublicKey

    Source§

    fn hash<H: Hasher>(&self, state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · Source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where\n H: Hasher,\n Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    ","Hash","iroh_base::key::NodeId"],["
    Source§

    impl Ord for PublicKey

    Source§

    fn cmp(&self, other: &PublicKey) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · Source§

    fn max(self, other: Self) -> Self
    where\n Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · Source§

    fn min(self, other: Self) -> Self
    where\n Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · Source§

    fn clamp(self, min: Self, max: Self) -> Self
    where\n Self: Sized,

    Restrict a value to a certain interval. Read more
    ","Ord","iroh_base::key::NodeId"],["
    Source§

    impl PartialEq for PublicKey

    Source§

    fn eq(&self, other: &PublicKey) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · Source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient,\nand should not be overridden without very good reason.
    ","PartialEq","iroh_base::key::NodeId"],["
    Source§

    impl PartialOrd for PublicKey

    Source§

    fn partial_cmp(&self, other: &PublicKey) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · Source§

    fn lt(&self, other: &Rhs) -> bool

    Tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · Source§

    fn le(&self, other: &Rhs) -> bool

    Tests less than or equal to (for self and other) and is used by the\n<= operator. Read more
    1.0.0 · Source§

    fn gt(&self, other: &Rhs) -> bool

    Tests greater than (for self and other) and is used by the >\noperator. Read more
    1.0.0 · Source§

    fn ge(&self, other: &Rhs) -> bool

    Tests greater than or equal to (for self and other) and is used by\nthe >= operator. Read more
    ","PartialOrd","iroh_base::key::NodeId"],["
    Source§

    impl PublicKey

    Source

    pub fn as_bytes(&self) -> &[u8; 32]

    Get this public key as a byte array.

    \n
    Source

    pub fn from_bytes(bytes: &[u8; 32]) -> Result<Self, SignatureError>

    Construct a PublicKey from a slice of bytes.

    \n
    §Warning
    \n

    This will return a [SignatureError] if the bytes passed into this method do not represent\na valid ed25519_dalek curve point. Will never fail for bytes return from Self::as_bytes.\nSee [VerifyingKey::from_bytes] for details.

    \n
    Source

    pub fn verify(\n &self,\n message: &[u8],\n signature: &Signature,\n) -> Result<(), SignatureError>

    Verify a signature on a message with this secret key’s public key.

    \n
    §Return
    \n

    Returns Ok(()) if the signature is valid, and Err otherwise.

    \n
    Source

    pub fn fmt_short(&self) -> String

    Convert to a base32 string limited to the first 10 bytes for a friendly string\nrepresentation of the key.

    \n
    ",0,"iroh_base::key::NodeId"],["
    Source§

    impl Serialize for PublicKey

    Source§

    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
    where\n S: Serializer,

    Serialize this value into the given Serde serializer. Read more
    ","Serialize","iroh_base::key::NodeId"],["
    Source§

    impl TryFrom<&[u8]> for PublicKey

    Source§

    type Error = Error

    The type returned in the event of a conversion error.
    Source§

    fn try_from(bytes: &[u8]) -> Result<Self, Self::Error>

    Performs the conversion.
    ","TryFrom<&[u8]>","iroh_base::key::NodeId"],["
    Source§

    impl TryFrom<&[u8; 32]> for PublicKey

    Source§

    type Error = Error

    The type returned in the event of a conversion error.
    Source§

    fn try_from(bytes: &[u8; 32]) -> Result<Self, Self::Error>

    Performs the conversion.
    ","TryFrom<&[u8; 32]>","iroh_base::key::NodeId"],["
    Source§

    impl Copy for PublicKey

    ","Copy","iroh_base::key::NodeId"],["
    Source§

    impl Eq for PublicKey

    ","Eq","iroh_base::key::NodeId"],["
    Source§

    impl StructuralPartialEq for PublicKey

    ","StructuralPartialEq","iroh_base::key::NodeId"]]]]); + var type_impls = Object.fromEntries([["iroh_base",[["
    Source§

    impl AsRef<[u8]> for PublicKey

    Source§

    fn as_ref(&self) -> &[u8]

    Converts this type into a shared reference of the (usually inferred) input type.
    ","AsRef<[u8]>","iroh_base::key::NodeId"],["
    Source§

    impl Clone for PublicKey

    Source§

    fn clone(&self) -> PublicKey

    Returns a copy of the value. Read more
    1.0.0 · Source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    ","Clone","iroh_base::key::NodeId"],["
    Source§

    impl Debug for PublicKey

    Source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    ","Debug","iroh_base::key::NodeId"],["
    Source§

    impl<'de> Deserialize<'de> for PublicKey

    Source§

    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
    where\n D: Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    ","Deserialize<'de>","iroh_base::key::NodeId"],["
    Source§

    impl Display for PublicKey

    Source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    ","Display","iroh_base::key::NodeId"],["
    Source§

    impl From<VerifyingKey> for PublicKey

    Source§

    fn from(verifying_key: VerifyingKey) -> Self

    Converts to this type from the input type.
    ","From","iroh_base::key::NodeId"],["
    Source§

    impl FromStr for PublicKey

    Deserialises the PublicKey from it’s base32 encoding.

    \n

    Display is capable of serialising this format.

    \n
    Source§

    type Err = KeyParsingError

    The associated error which can be returned from parsing.
    Source§

    fn from_str(s: &str) -> Result<Self, Self::Err>

    Parses a string s to return a value of this type. Read more
    ","FromStr","iroh_base::key::NodeId"],["
    Source§

    impl Hash for PublicKey

    Source§

    fn hash<H: Hasher>(&self, state: &mut H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · Source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where\n H: Hasher,\n Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    ","Hash","iroh_base::key::NodeId"],["
    Source§

    impl Ord for PublicKey

    Source§

    fn cmp(&self, other: &PublicKey) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · Source§

    fn max(self, other: Self) -> Self
    where\n Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · Source§

    fn min(self, other: Self) -> Self
    where\n Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · Source§

    fn clamp(self, min: Self, max: Self) -> Self
    where\n Self: Sized,

    Restrict a value to a certain interval. Read more
    ","Ord","iroh_base::key::NodeId"],["
    Source§

    impl PartialEq for PublicKey

    Source§

    fn eq(&self, other: &PublicKey) -> bool

    Tests for self and other values to be equal, and is used by ==.
    1.0.0 · Source§

    fn ne(&self, other: &Rhs) -> bool

    Tests for !=. The default implementation is almost always sufficient,\nand should not be overridden without very good reason.
    ","PartialEq","iroh_base::key::NodeId"],["
    Source§

    impl PartialOrd for PublicKey

    Source§

    fn partial_cmp(&self, other: &PublicKey) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · Source§

    fn lt(&self, other: &Rhs) -> bool

    Tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · Source§

    fn le(&self, other: &Rhs) -> bool

    Tests less than or equal to (for self and other) and is used by the\n<= operator. Read more
    1.0.0 · Source§

    fn gt(&self, other: &Rhs) -> bool

    Tests greater than (for self and other) and is used by the >\noperator. Read more
    1.0.0 · Source§

    fn ge(&self, other: &Rhs) -> bool

    Tests greater than or equal to (for self and other) and is used by\nthe >= operator. Read more
    ","PartialOrd","iroh_base::key::NodeId"],["
    Source§

    impl PublicKey

    Source

    pub fn as_bytes(&self) -> &[u8; 32]

    Get this public key as a byte array.

    \n
    Source

    pub fn from_bytes(bytes: &[u8; 32]) -> Result<Self, SignatureError>

    Construct a PublicKey from a slice of bytes.

    \n
    §Warning
    \n

    This will return a [SignatureError] if the bytes passed into this method do not represent\na valid ed25519_dalek curve point. Will never fail for bytes return from Self::as_bytes.\nSee [VerifyingKey::from_bytes] for details.

    \n
    Source

    pub fn verify(\n &self,\n message: &[u8],\n signature: &Signature,\n) -> Result<(), SignatureError>

    Verify a signature on a message with this secret key’s public key.

    \n
    §Return
    \n

    Returns Ok(()) if the signature is valid, and Err otherwise.

    \n
    Source

    pub fn fmt_short(&self) -> String

    Convert to a base32 string limited to the first 10 bytes for a friendly string\nrepresentation of the key.

    \n
    ",0,"iroh_base::key::NodeId"],["
    Source§

    impl Serialize for PublicKey

    Source§

    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
    where\n S: Serializer,

    Serialize this value into the given Serde serializer. Read more
    ","Serialize","iroh_base::key::NodeId"],["
    Source§

    impl TryFrom<&[u8]> for PublicKey

    Source§

    type Error = Error

    The type returned in the event of a conversion error.
    Source§

    fn try_from(bytes: &[u8]) -> Result<Self, Self::Error>

    Performs the conversion.
    ","TryFrom<&[u8]>","iroh_base::key::NodeId"],["
    Source§

    impl TryFrom<&[u8; 32]> for PublicKey

    Source§

    type Error = Error

    The type returned in the event of a conversion error.
    Source§

    fn try_from(bytes: &[u8; 32]) -> Result<Self, Self::Error>

    Performs the conversion.
    ","TryFrom<&[u8; 32]>","iroh_base::key::NodeId"],["
    Source§

    impl Copy for PublicKey

    ","Copy","iroh_base::key::NodeId"],["
    Source§

    impl Eq for PublicKey

    ","Eq","iroh_base::key::NodeId"],["
    Source§

    impl StructuralPartialEq for PublicKey

    ","StructuralPartialEq","iroh_base::key::NodeId"]]]]); if (window.register_type_impls) { window.register_type_impls(type_impls); } else {