From c5ce932500a027fc83b8dee22ee44cc95dd58255 Mon Sep 17 00:00:00 2001 From: Duncan Date: Mon, 16 Sep 2019 13:48:28 +1200 Subject: [PATCH 1/3] Make logo background in sidebar slightly darker to match figures --- static/css/theme-libp2p.css | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/static/css/theme-libp2p.css b/static/css/theme-libp2p.css index 56f701c7..890ab8dc 100644 --- a/static/css/theme-libp2p.css +++ b/static/css/theme-libp2p.css @@ -7,8 +7,8 @@ --MAIN-LINK-HOVER-color:#167ad0; /* Color of hovered links */ --MAIN-ANCHOR-color: #1C90F3; /* color of anchors on titles */ - --MENU-HEADER-BG-color:#f3f6f9; /* Background color of menu header */ - --MENU-HEADER-BORDER-color:#EF65A4; /*Color of menu header border */ + --MENU-HEADER-BG-color:#EBF0F5; /* Background color of menu header */ + --MENU-HEADER-BORDER-color:#F065A4; /*Color of menu header border */ --MENU-SEARCH-BG-color:#fff; /* Search field background color (by default borders + icons) */ --MENU-SEARCH-BOX-color: #000; /* Override search field border color */ From 33eeb7432a033508bf90f6bd0c07c0071a701bff Mon Sep 17 00:00:00 2001 From: Duncan Date: Fri, 27 Sep 2019 15:51:20 +1200 Subject: [PATCH 2/3] Add CSS style for configurable numbers --- static/css/theme.css | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/static/css/theme.css b/static/css/theme.css index 407fbeb8..7fbcce0d 100644 --- a/static/css/theme.css +++ b/static/css/theme.css @@ -623,7 +623,7 @@ code, kbd, pre, samp { font-family: "Consolas", menlo, monospace; font-size: 92%; } -code { +code, .configurable { border-radius: 2px; white-space: nowrap; color: #5e5e5e; @@ -631,6 +631,10 @@ code { border: 1px solid #fbf0cb; padding: 0px 2px; } +.configurable { + background: #eed9ee; + border-color: #e1c5e2; +} code + .copy-to-clipboard { margin-left: -1px; border-left: 0 !important; From 8e45edfda1bd4b64569f065ab6cd8f93961f6eb8 Mon Sep 17 00:00:00 2001 From: Duncan Date: Fri, 27 Sep 2019 15:52:17 +1200 Subject: [PATCH 3/3] New concept guide: Publish/Subscribe --- content/concepts/publish-subscribe.md | 309 +++ .../publish-subscribe/fanout_forget.png | Bin 0 -> 15570 bytes .../publish-subscribe/fanout_forget.svg | 946 +++++++ .../fanout_grafting_preference.png | Bin 0 -> 13538 bytes .../fanout_grafting_preference.svg | 876 ++++++ .../publish-subscribe/fanout_initial_pick.png | Bin 0 -> 18898 bytes .../publish-subscribe/fanout_initial_pick.svg | 1015 +++++++ .../publish-subscribe/fanout_message_send.png | Bin 0 -> 12421 bytes .../publish-subscribe/fanout_message_send.svg | 999 +++++++ .../full_message_forward.png | Bin 0 -> 6363 bytes .../full_message_forward.svg | 852 ++++++ .../full_message_network.png | Bin 0 -> 17455 bytes .../full_message_network.svg | 1591 +++++++++++ .../publish-subscribe/full_message_send.png | Bin 0 -> 5494 bytes .../publish-subscribe/full_message_send.svg | 800 ++++++ .../publish-subscribe/gossip_deliver.png | Bin 0 -> 14451 bytes .../publish-subscribe/gossip_deliver.svg | 1476 +++++++++++ .../publish-subscribe/graft_prune.png | Bin 0 -> 6588 bytes .../publish-subscribe/graft_prune.svg | 280 ++ .../publish-subscribe/maintain_graft.png | Bin 0 -> 17855 bytes .../publish-subscribe/maintain_graft.svg | 1168 ++++++++ .../publish-subscribe/maintain_prune.png | Bin 0 -> 19695 bytes .../publish-subscribe/maintain_prune.svg | 1325 +++++++++ .../message_delivered_to_all.png | Bin 0 -> 4798 bytes .../message_delivered_to_all.svg | 863 ++++++ .../metadata_only_network.png | Bin 0 -> 30510 bytes .../metadata_only_network.svg | 2316 ++++++++++++++++ .../network_packet_structure.png | Bin 0 -> 21519 bytes .../network_packet_structure.svg | 2358 +++++++++++++++++ .../request_gossiped_message.png | Bin 0 -> 25607 bytes .../request_gossiped_message.svg | 1725 ++++++++++++ content/concepts/publish-subscribe/state.png | Bin 0 -> 18209 bytes content/concepts/publish-subscribe/state.svg | 2137 +++++++++++++++ .../publish-subscribe/subscribe_graft.png | Bin 0 -> 7925 bytes .../publish-subscribe/subscribe_graft.svg | 313 +++ .../publish-subscribe/subscribed_peers.png | Bin 0 -> 4426 bytes .../publish-subscribe/subscribed_peers.svg | 748 ++++++ .../subscription_list_change.png | Bin 0 -> 2888 bytes .../subscription_list_change.svg | 185 ++ .../subscription_list_first_connect.png | Bin 0 -> 2599 bytes .../subscription_list_first_connect.svg | 247 ++ .../subscriptions_local_view.png | Bin 0 -> 29006 bytes .../subscriptions_local_view.svg | 750 ++++++ .../publish-subscribe/types_of_peering.png | Bin 0 -> 34406 bytes .../publish-subscribe/types_of_peering.svg | 2319 ++++++++++++++++ .../publish-subscribe/unsubscribe_prune.png | Bin 0 -> 8772 bytes .../publish-subscribe/unsubscribe_prune.svg | 324 +++ static/images/style_guide_1.svg | 1774 +++++++++++++ static/images/style_guide_2.svg | 518 ++++ 49 files changed, 28214 insertions(+) create mode 100644 content/concepts/publish-subscribe.md create mode 100644 content/concepts/publish-subscribe/fanout_forget.png create mode 100644 content/concepts/publish-subscribe/fanout_forget.svg create mode 100644 content/concepts/publish-subscribe/fanout_grafting_preference.png create mode 100644 content/concepts/publish-subscribe/fanout_grafting_preference.svg create mode 100644 content/concepts/publish-subscribe/fanout_initial_pick.png create mode 100644 content/concepts/publish-subscribe/fanout_initial_pick.svg create mode 100644 content/concepts/publish-subscribe/fanout_message_send.png create mode 100644 content/concepts/publish-subscribe/fanout_message_send.svg create mode 100644 content/concepts/publish-subscribe/full_message_forward.png create mode 100644 content/concepts/publish-subscribe/full_message_forward.svg create mode 100644 content/concepts/publish-subscribe/full_message_network.png create mode 100644 content/concepts/publish-subscribe/full_message_network.svg create mode 100644 content/concepts/publish-subscribe/full_message_send.png create mode 100644 content/concepts/publish-subscribe/full_message_send.svg create mode 100644 content/concepts/publish-subscribe/gossip_deliver.png create mode 100644 content/concepts/publish-subscribe/gossip_deliver.svg create mode 100644 content/concepts/publish-subscribe/graft_prune.png create mode 100644 content/concepts/publish-subscribe/graft_prune.svg create mode 100644 content/concepts/publish-subscribe/maintain_graft.png create mode 100644 content/concepts/publish-subscribe/maintain_graft.svg create mode 100644 content/concepts/publish-subscribe/maintain_prune.png create mode 100644 content/concepts/publish-subscribe/maintain_prune.svg create mode 100644 content/concepts/publish-subscribe/message_delivered_to_all.png create mode 100644 content/concepts/publish-subscribe/message_delivered_to_all.svg create mode 100644 content/concepts/publish-subscribe/metadata_only_network.png create mode 100644 content/concepts/publish-subscribe/metadata_only_network.svg create mode 100644 content/concepts/publish-subscribe/network_packet_structure.png create mode 100644 content/concepts/publish-subscribe/network_packet_structure.svg create mode 100644 content/concepts/publish-subscribe/request_gossiped_message.png create mode 100644 content/concepts/publish-subscribe/request_gossiped_message.svg create mode 100644 content/concepts/publish-subscribe/state.png create mode 100644 content/concepts/publish-subscribe/state.svg create mode 100644 content/concepts/publish-subscribe/subscribe_graft.png create mode 100644 content/concepts/publish-subscribe/subscribe_graft.svg create mode 100644 content/concepts/publish-subscribe/subscribed_peers.png create mode 100644 content/concepts/publish-subscribe/subscribed_peers.svg create mode 100644 content/concepts/publish-subscribe/subscription_list_change.png create mode 100644 content/concepts/publish-subscribe/subscription_list_change.svg create mode 100644 content/concepts/publish-subscribe/subscription_list_first_connect.png create mode 100644 content/concepts/publish-subscribe/subscription_list_first_connect.svg create mode 100644 content/concepts/publish-subscribe/subscriptions_local_view.png create mode 100644 content/concepts/publish-subscribe/subscriptions_local_view.svg create mode 100644 content/concepts/publish-subscribe/types_of_peering.png create mode 100644 content/concepts/publish-subscribe/types_of_peering.svg create mode 100644 content/concepts/publish-subscribe/unsubscribe_prune.png create mode 100644 content/concepts/publish-subscribe/unsubscribe_prune.svg create mode 100644 static/images/style_guide_1.svg create mode 100644 static/images/style_guide_2.svg diff --git a/content/concepts/publish-subscribe.md b/content/concepts/publish-subscribe.md new file mode 100644 index 00000000..7ca1a8ee --- /dev/null +++ b/content/concepts/publish-subscribe.md @@ -0,0 +1,309 @@ +--- +title: Publish/Subscribe +--- + +Publish/Subscribe is a system where peers congregate around topics they are +interested in. Peers interested in a topic are said to be subscribed to that +topic: + +![](subscribed_peers.png) + +Peers can send messages to topics. Each message gets delivered to all peers +subscribed to the topic: + +![](message_delivered_to_all.png) + +Example uses of pub/sub: + +* **Chat rooms.** Each room is a pub/sub topic and clients post chat messages to + which are received by all other clients in the room. +* **File sharing.** Each pub/sub topic represents a file that can be downloaded. + Uploaders and downloaders advertise which pieces of the file they have in + the pub/sub topic and coordinate downloads that will happen outside the + pub/sub system. + +## Design goals + +In a peer-to-peer pub/sub system all peers participate in delivering messages +throughout the network. There are several different designs for peer-to-peer +pub/sub systems which offer different trade-offs. Desirable properties include: + +* **Reliability:** All messages get delivered to all peers subscribed to the topic. +* **Speed:** Messages are delivered quickly. +* **Efficiency:** The network is not flooded with excess copies of messages. +* **Resilience:** Peers can join and leave the network without disrupting it. + There is no central point of failure. +* **Scale:** Topics can have enormous numbers of subscribers and handle a large + throughput of messages. +* **Simplicity:** The system is simple to understand and implement. Each peer + only needs to remember a small amount of state. + +libp2p currently uses a design called **gossipsub**. It is named after the fact +that peers gossip to each other about which messages they have seen and use this +information to maintain a message delivery network. + +## Discovery + +Before a peer can subscribe to a topic is must find other peers and establish +network connections with them. The pub/sub system doesn’t have any way to +discover peers by itself. Instead, it relies upon the application to find new +peers on its behalf, a process called **ambient peer discovery**. + +Potential methods for discovering peers include: + +* Distributed hash tables +* Local network broadcasts +* Exchanging peer lists with existing peers +* Centralized trackers or rendezvous points +* Lists of bootstrap peers + +For example, in a BitTorrent application, most of the above methods would +already be used in the process of downloading files. By reusing peers found +while the BitTorrent application goes about its regular business, the +application could build up a robust pub/sub network too. + +Discovered peers are asked if they support the pub/sub protocol, and if so, are +added to the pub/sub network. + +## Types of peering + +In gossipsub, peers connect to each other via either **full-message** peerings +or **metadata-only** peerings. The overall network structure is made up of these +two networks: + +![](types_of_peering.png) + +### Full-message + +Full-message peerings are used to transmit the full contents of messages +throughout the network. This network is sparsely-connected with each peer only +being connected to a few other peers. (In the [gossipsub specification](https://github.com/libp2p/specs/blob/master/pubsub/gossipsub/README.md) +this sparsely-connected network is called a *mesh* and peers within it are +called *mesh members*.) + +Limiting the number of full-message peerings is useful because it keeps the +amount of network traffic under control; each peer only forwards messages to a +few other peers, rather than all of them. Each peer has a target number of peers +it wants to be connected to. In this example each peer would ideally like to be +connected to 3 other peers, but would settle +for 24 +connections: + +![](full_message_network.png) + +

Throughout this guide, numbers +highlighted in purple can be configured +by the developer.

+ +The peering degree (also called the *network degree* or *D*) controls the +trade-off between speed, reliability, resilience and efficiency of the network. +A higher peering degree helps messages get delivered faster, with a better +chance of reaching all subscribers and with less chance of any peer disrupting +the network by leaving. However, a high peering degree also causes additional +redundant copies of each message to be sent throughout the network, increasing +the bandwidth required to participate in the network. + +In libp2p’s default implementation the ideal network peering degree is +6 with anywhere from +412 +being acceptable. + +### Metadata-only + +In addition to the sparsely-connected network of full-message peerings, there is +also a densely-connected network of metadata-only peerings. This network is made +up of all the network connections between peers that aren’t full-message +peerings. + +The metadata-only network shares gossip about which messages are available and +performs functions to help maintain the network of full-message peerings. + +![](metadata_only_network.png) + +## Grafting and pruning + +Peerings are **bidirectional**, meaning that for any two connected peers, both +peers consider their connection to be full-message or both peers consider their +connection to be metadata-only. + +Either peer can change the connection type by notifying the other. **Grafting** is +the process of converting a metadata-only connection to full-message. **Pruning** +is the opposite process; converting a full-message peering to metadata-only: + +![](graft_prune.png) + +When a peer has too few full-message peerings it will randomly graft some of its +metadata-only peerings to become full-message peerings: + +![](maintain_graft.png) + +Conversely, when a peer has too many full-message peerings it will randomly +prune some of them back to metadata-only: + +![](maintain_prune.png) + +In libp2p’s implementation, each peer performs a series of checks every +1 second. These checks are called the +*heartbeat*. Grafting and pruning happens during this time. + +## Subscribing and unsubscribing + +Peers keep track of which topics their directly-connected peers are subscribed +to. Using this information each peer is able to build up a picture of the topics +around them and which peers are subscribed to each topic: + +![](subscriptions_local_view.png) + +Keeping track of subscriptions happens by sending **subscribe** and +**unsubscribe** messages. When a new connection is established between two peers +they start by sending each other the list of topics they are subscribed to: + +![](subscription_list_first_connect.png) + +Then over time, whenever a peer subscribes or unsubscribes from a topic, it will +send each of its peers a subscribe or unsubscribe message. These messages are +sent to all connected peers regardless of whether the receiving peer is +subscribed to the topic in question: + +![](subscription_list_change.png) + +Subscribe and unsubscribe messages go hand-in-hand with graft and prune +messages. When a peer subscribes to a topic it will pick some peers that will +become its full-message peers for that topic and send them graft messages at the +same time as their subscribe messages: + +![](subscribe_graft.png) + +When a peer unsubscribes from a topic it will notify its full-message peers that +their connection has been pruned at the same time as sending their unsubscribe +messages: + +![](unsubscribe_prune.png) + +## Sending messages + +When a peer wants to publish a message it sends a copy to all full-message peers +it is connected to: + +![](full_message_send.png) + +Similarly, when a peer receives a new message from another peer, it stores the +message and forwards a copy to all other full-message peers it is connected to: + +![](full_message_forward.png) + +In the [gossipsub specification](https://github.com/libp2p/specs/blob/master/pubsub/gossipsub/README.md#controlling-the-flood), +peers are also known as *routers* because of this function they have in routing +messages through the network. + +Peers remember a list of recently seen messages. This lets peers act upon a +message only the first time they see it and ignore retransmissions of already +seen messages. + +Peers might also choose to validate the contents of each message received. What +counts as valid and invalid depends on the application. For example, a chat +application might enforce that all messages must be shorter than 100 characters. +If the application tells libp2p that a message is invalid then that message will +be dropped and not replicated further through the network. + +## Gossip + +Peers gossip about messages they have recently seen. Every +1 second each peer randomly selects +6 metadata-only peers and sends them a list of +recently seen messages. + +![](gossip_deliver.png) + +Gossiping gives peers a chance to notice in case they missed a message on the +full-message network. If a peer notices it is repeatedly missing messages then +it can set up new full-message peerings with peers that do have the messages. + +Here is an example of how a specific message can be requested across a +metadata-only peering: + +![](request_gossiped_message.png) + +In the [gossipsub specification](https://github.com/libp2p/specs/blob/master/pubsub/gossipsub/README.md#control-messages), +gossip announcing recently seen messages are called *IHAVE* messages and +requests for specific messages are called *IWANT* messages. + +## Fan-out + +Peers are allowed to publish messages to topics they are not subscribed to. +There are some special rules about how to do this to help ensure these messages +are delivered reliably. + +The first time a peer wants to publish a message to a topic it is not subscribed +to, it randomly picks 6 peers +(3 shown below) that are +subscribed to that topic and remembers them as **fan-out** peers for that topic: + +![](fanout_initial_pick.png) + +Unlike the other types of peering, fan-out peerings are unidirectional; they +always point from the peer outside the topic to a peer subscribed to the topic. +Peers subscribed to the topic are not told that they have been selected +and still treat the connection as any other metadata-only peering. + +Each time the sender wants to send a message, it sends the message to its +fan-out peers, who then distribute the message within the topic: + +![](fanout_message_send.png) + +If the sender goes to send a message but notices some of their fan-out peers +went away since last time, they will randomly select additional fan-out peers +to top them back up to 6. + +When a peer subscribes to a topic, if it already has some fan-out peers it will +prefer them to become the full-message peers: + +![](fanout_grafting_preference.png) + +After 2 minutes of not sending any messages to +a topic, all the fan-out peers for that topic are forgotten: + +![](fanout_forget.png) + +## Network packets + +The packets that peers actually send each other over the network are a +combination of all the different message types seen in this guide (application +messages, have/want, subscribe/unsubscribe, graft/prune). This structure allows +several different requests to be batched up and sent in a single network packet. + +Here is a graphical representation of the overall network packet structure: + +![](network_packet_structure.png) + +See the [specification](https://github.com/libp2p/specs/blob/master/pubsub/gossipsub/README.md#protobuf) for the exact [Protocol Buffers](https://developers.google.com/protocol-buffers) +schema used to encode network packets. + +## State + +Here is a summary of the state each peer must remember to participate in the +pub/sub network: + +* **Subscriptions:** List of topics subscribed to. +* **Fan-out topics:** These are the topics messaged recently but not subscribed + to. For each topic the time of the last sent message to that topic is + remembered. +* **List of peers currently connected to:** For each peer connected to, the + state includes all the topics they are subscribed to and whether the peering + for each topic is full-content, metadata-only or fan-out. +* **Recently seen messages**: This is a cache of recently seen messages. It is + used to detect and ignore retransmitted messages. For each message the state + includes who sent it and the sequence number, which is enough to uniquely + identify any message. For very recent messages, the full message contents + is kept so that it can be sent to any peers that request the message. + +![](state.png) + +## More information + +For more detail and a discussion of other pub/sub designs that influenced the +design of gossipsub, see the [gossipsub specification](https://github.com/libp2p/specs/blob/master/pubsub/gossipsub/README.md). + +For implementation details, see the [gossipsub.go](https://github.com/libp2p/go-libp2p-pubsub/blob/master/gossipsub.go) +file in the source code of [go-libp2p-pubsub](https://github.com/libp2p/go-libp2p-pubsub), +which is the canonical implementation of gossipsub in libp2p. diff --git a/content/concepts/publish-subscribe/fanout_forget.png b/content/concepts/publish-subscribe/fanout_forget.png new file mode 100644 index 0000000000000000000000000000000000000000..0bec2d3cacf4eeabc9a9ae3c83212b2df17302ed GIT binary patch literal 15570 zcmb7rRZtyGxGllm-QC?CLV(}_f^6K~g1g&BgKL628`!wJySux)Te$q^JlwjEw`yvt zYi9LYpLBoSH4>q$^c@9}5D@|b0!3CvQWXLM67bo+f`|G%pIV+sLO?)4C@ZK*eSCaS z)2dvV6%0?zpIqLJPA;CGU!Gpw^YJUJZXSI6`xu#6I5@dFIJw+CI$z${+t@uG8k;-5 zxD^moJUqLZo?p9Iz8IfbnOoZ2+CQ6JTt7O$S>HZdT-%wLSy|gY+&jLAip_j~|2HMdRz+yS;)XrA zOHO{()!k$I-_q93q3wfDx~Kf2>b<=~egVbT*SFi-yY-Fj!^7j*#f_1XNp%eiQL&%a zHePS-@kv?*SE8COW!0lclQn)odUP^PX6YU>*?G7R5#ZI zSa0|542;Zl_mB4uP5+L|G&XVW>KbTj?f3EmYH8avG_<$0bSEa~`S?bKgvJjJj`j3U zJUu;!1CuhdYb&c7XJ!^eL{*QEPorbfRa8xB=~bk@YhB(x8X7z0kG}rVnugAfp0V}yEn7RE+S=CC)V#c+>iXuM?CjF0sMMt791oww zgoLc6<@M3AX)m9MYH)K#MnO_)en4Q%*48c~v-;!X6R4^cT-#MxSb2GQJv21I%ctbw z85R`uTT)W9sH8Onn4OpkI+{67OV8ifJr$SGzj3Y@nOwNGE%|qTw==l=@%nzgd|ux? z{JwYjUDn>zBEZ1dOH@qtZTUDRzL<+!@h+-`i$^CSI?vuQ^0|BUv2^UIY5pOzZ>DQL zCM4};c=I->er0eSlvVp())b)QCMc}Ezkj5l`0KfE?PYvB;!+780)iYuR`RQw$I96s ze}$w+l0mZA;7dH{STe4hfTdvXtF&57VQeK%v{3}Fg9T(3g{Ikt2-_X6WaTr+5UZbr zy)ug@s5E1ipi<`3yky(I98nyEF)=*L)~Xm1Bf7eJ8a&el5n7LLEr(eKn}@0HT~L#U z*{z3d-!EU!Pj7uYJF_Pr8N$+y!U)XM{@)Wb5Pmsx{X&p-&EA`S{!b!6(t7B^oX#zI z)gFx{L}gVIMvo`!1>B23-E&;>=&2j1?uLa{p>97=GuKAF{B)27C z@DRefSLG66E>yuVsh0$F9s1Y$aGv0y>Eu9ugBQ-`ME&=l->H*kGc<|itSF@;QDC|) z-lwH|&i>p{EcQZ`I;CTC#ukrf-STJz^(ib^4#aRe%Sv715@VjKoQ-)~aQ9*#a@i4a z8WNs4+S4D7EY0xZ3HsM{!!bCrYFMPq3Vu_j{76_sruqq}9fECf%Usoc;9;Afi1W($ z;tYwPn57r%4-r_V4m@<2+pKUgn6n*c#n01R0vebZ#2Ev##h3e%1xkv$3=F z%GlM*yMKlw?)&9XwJ9(vCiS#`33MTc*P2u0@K9|?fL~)#wBsTVT_8x=iMIbdmTPoz zFkulTs-Hf0XV8Ew>l8pc!6_mGhM}zQYD^lU?3oyqnN@)1Ked9@m4_=7UT7$@hA3n= zs*B}D#|VlWBT(i-KDVl9!LiGquKi20Bd`y*bwO@4Tsmz9x}OZoReW(K|8raQpp2J= zgmpTdS_75c4*725mMyo@#PK|L@s8eLK#()U_@213E!4FJe0iQfN;h-wmR-)t+P8*( zLDP@YHxN1s_hrG>N}Vg+(k1BFAV{mtS{HDqUC3XydbcFe_2l$=Hbv}xAPK8r!!#xN zx!4l9=rr&BdPD zzQE0IDg*?BlV#EgG=aLoQ9WN*UW#oHYE1wwoDe&7Ca*MW*b6+EIi+|utr6h?rDPRp z&};2DMg*^{d_q^>Uxb2U`vvW8XxoQgxK9^u#x6Oty!ER7w3F(9$4EJq*!t-`yE~ap zQL#3e8IgJPiQDa#y)Ey+?}x3?%B?IztB{C5oze`sO}^( zK9y@LH@C^qX^T?5x|vnVKy8#G7Fn7yGfhC`l#pb>%Hvi|MWhJUpmy^tebC3z*YF#P z^n>58;)2kW{}Fsp-|NCCOb<=U*J(v8HvU5uV}sg^WvC8DnDUNMWq-Gs~YJ#BpUiY9zKQWF+b+_=ryw ziPrsLB*h{MDlVeMPoRA=^o{x(Jw$e_Q!nrIbQfiqfO4#-yCdf2`*qyE` zhwgf4ZYQ{czXV7fGy2&O(v=RW9G<<4$mDHku&gKC*B%jOg6Q7F>wf~O#ef#E#X?(!2O%-mYtx9thaKWK5WFI=;hjh-tz=C61L|eBuU;wrpB)!&(Mpxz9 zC;{ki!J;k#nhg=^)v&aA%CrSdg(<~6`*el7{ZOY_NJ?RBOuvcg>k-}WVo(%FYlGDE zx1@1=EMT-oRxs=Bdf2SRnQZT1q8!iS4MWk%-&!r{`joVV&L}Ln7$H2R#KpAjJy{Ae zrd&errtkK85gHJDkt;%WU`DmQ2`|Ma-_unnlI||8fCYJ(0-3{$W-3u}&1%B(Wz&d+ zUfq%WZseE}vLCF~SjHwSX9aI^E}YH(^tiNZ2v%n%Jr&Pm8o^z)DpdD=D7obujW%j?HS%3|QB3I@&*?Gs!8*)uZ}q>{ zh9p94PZC4-m!G3p|5G0W;KHR%ryZtMLo74M$`Ydc!K$UdwSMAI{6m!aAR(Pi#QkI{ zL9b>goFSq56)lhR$r91K6rs}Q>qd{Km+2mCtUNaqj0FDu<;*?|x$OZ&#~`#Vmo}L; z?D5%LE{Tu?yw(S+p8gih@>p(O+GBqWXATj|G7XYas!M)oyN+ykz9&?DPD#;L`%EjR9IC1Xa9#6h& zju~*!O+scc7FQxNnl$|{dS^Nn4DM?5LSRZyd}AQfIr;^g0ME&N?7x~2pS}*s3uULY z7l9;`R6l-s3Haf{c8&gLf|hiuhqO0yZcLUrs>(3_TRd?=Hv$T3cZqeziOH#PVr@hi ze{4Hxs%b_Ek)1LZKl3}v!zGu&e$zrq{gKe}r-fGFwG2Fkp1!i9Uzq&?P^1VYxZIGZ@Cn>zW10!W=!wU3pqnS18t_z<>=3s;w6Ss@RBAc*~f`TI_o2x zY7`$f&Q64ezU!JS?K)I0$?>}pRMDeL*n586enVazi?4y)F|XrinWXII48Vm|iPh7F zZ{CL~yyc2FN5x^-p;7rV_U50T{TH?0@@~VI?kbE!plS$D!q3wvG>8bu?Tl_1kum+b zBIQM{$}qT0cvfzJ;@G}jhbk-UTdFN#bB+_YK(K5;4+mO}gLISb$o3Fkmt?v}S7THD z93_8jGW-fvR@0}Cd%XPALuB6Lz_9sh=J*ACzajWoPcg~AB*y=&U^Kmrm|N0jIG!-R zB*O&VjxD%K>ZE(r@JjxSlk(ehz@9Fh*p|kcg3MO*% z71SBiY7tD1Apy%8-lP|t#yW>|ldLpMBHy|(Bub^r+x&lXJ1ZkZU0p6WNa2J;$e${C z<17r6OX7Py*biU0iy20uj7R|a+sRKim(64A29xZi6ES6cEz4mn3_B+xN14MO2UGP2 zu(KI|!&8(^Gg>4rnWJJdN0@Un1Ts+DLu=xE6knW~l(k*(qi%~ndRFRg2XSmfIZZo; zvyy!6)-7J&K}4z4=F4$SOm=LZzBm%!mYX^$P6&j(-}g z&=|zjP25oqWrkZ)}@`mPA^IM!C_ou=AAS(P zbG{%^U&}V~O#Q8!R=k5>1Xw8f>zGF;a(Ltmx(cok)fP|rfQ{4aaIthRi&9gsz|l*Y z{}@ZzS6BkGDqTd4VJwiNmbgH}us1OFDV}L5ifmU;BnZyXv3B9pG6;7rG!md@zHNwz zzg&@$M<-~{&%y2mvq-{z-+PEPprgX4^${fh!x-L)vNiI}`<)QneG4*ixPpw+n{f&3 z{ZymEPSI~fU)r^AU)r<|oIQz$4&157jHJObqZt1oLV$&*U$Phy zm%>qbYrmV@8nCcl00&QJj)StY@Y`yR?jMy#a07-fEk9WocAoxHS95?}X(T}c^(-zC zB0sbd^5R=2x09tDVnA^qrp(QF_HdH!me#J0b&NG^J3R!9QL(lSQTIja2kGgnl1enq zWj6K{*G-=f1A>7dGJnlA3G*8v!h{wty5F;EelRl zY}%pnE#9cDLt)9t;z|hj;0k}1A|>_AC|dzNw|7Uhm&K{+mgM!l6*8<%!r+~8cDLp@`t8zUj|Z79*~5<&JZ7mk$H-xlKu$rTC~(a?>E>(T#oHTmVhvbm+Wp*J;(25%`K&b(tkKlk3!~N^$sn&Tk%l{f@(lfqYo{7y{_7XXQL2}7 z_?%Tq4dii#BIS}fJ1UAZQUihwe-W}ogO=#)SQ0j`+2N$|WZkHe;PWy5^Fa~N*xFD$ z;Z{rcPB=JmzKR-s@>>LlLTPX>;GQ=R<^YSfh9&5~UKR>%7;+)gz)$x3I-N@eV|S*# zcK*>4bR(RV%)$}X_qL%1c)!73V&QG z*VpD{Ly#k)m#|%jL!jOETWq)hJYrmoGG(;1E6q1hF#|Jdb#JWqxwyQdeCE@lBz~B= zd`=0qk!Xs~YR@wXn)4KVie(6<5qB9Af$?xCPeWC^?xvYsVrGlG2(2Ui_3f}LV=^7?gct_FOr zQ{r~ThtW#P;H7CARQ92$8-ird5&!?NhSZ~AdM7>xuHY_~ye!)>SArv_ln_ll{+j5p zcK$R%r4N)njwlNCeabci?ptU!xi$d*ax+R3MX@lqqaz73+ObsIj_$j2js?>E`faP1 z?|#JqNnq^g9=gp$U(FZonw=LTXV%b-i978dj67M*68>LU83W^id+&IQyL9=5!2LtZ z+-V-9z6o~5}oES_1x80sw@DJSTaG z`OP#i|2L4`@s_G(i#(cexMgB0xa7}-^PLQ;!FR6|1tYF;TqVlb6l>XPaY{@!wJRE}v2jVQxlHnED$5X>~=_&FyWcDUXCybi|!hJH)q0K!*~D@C!2&lHZ}#eY%pEbYatK zSdScdLTd;5bY)>K{BudP(x9s2EXZM^j!vOU8Lj;Il6dU@I$F4KQ4QYI)RBDBwjl;e z%AIIs3wC->dhUE1e(wxz>;)^iBjICBI*zDej4m1>QU#a=J}<4R}2D$1# z0(6at6jmXF5HVSwfj(#AL(@9qY9Ga^PcM)VPrquqj{+c!`uBPwZB6|veN1TXtJ$`$ zkrd0>eoNtmO6~Da3|k5qi-f22u=zW;+vU_23F6t`)q6}bCP`d8Dsi^yw-E|!p~>G* z&CvA9D$b5XVnxwJ%N~sg5U_k_HrNG7LyQI$Ud>Ja#dA(fWPz&x7rD*h$v~}L;1jm^ z%?9PxLYUvUQYo*Axx#9An+DZZt?YP2(3w)Yx@Fp$rEG$4IJqQQ8FA;Nj=) zVLlA#RZh_tC)V&^|Kk7ht2Jb=X9~9F(;l{+R?U|sNz)ijv#1UrO8&qf$WYHL%i!ge5#v~0Hrb*bXj73-y@qdK z!b{koD!(s&PpJeYe$FOiVn6HUjScT>Z4^#sDwY_z9^*QhQXG1HySD2NQ8N5n+J(PY z851SH_s^UR8f9Us{V>G=Usf+yX;(7_XyM|dl5k;YjI8pw9yG{A>)Zmb&qMU#N$1U? zg|_427iJe(iz>Hx)<1RhBv$-sTpL?BzQ^(*{ui(wx=~|~08No1>Mg3?mbT0lh_siJ zN;xb@67Ey0bt0+O*q8k2R1|NNiQ8ZFS#)wI8)Nm^SucyI zmeeDjED>r&Ph4BE(WBPg_5B6wFD1+kouX^#-K^BGGz#|~B0Z8LG;xY3ZDD5m<6JYz zK*7;3mKj?|y@RdqLJdJ+NV>3?#VpgC46Q+@r9u^10K)bDfY&k{{kPy$#Yp*3Ey%?pbfw=mY{$hbuIAvmq0Yx>_L z=GRt!yx#@(>rjC{iYyNH%Q`STMmPw?Vifvc!`!Q0@**kPYt5a!OG+s1S)o2KFARO% zB>}VePL|_=`Fqf|*K+v@;J)ZD*C%G;V7kAwNU%DvlW2lOf0C&$eE3TYhEI;a6NZdsIB7LC*+;TQQd1$TtIVHqNNA*9$hl1b3(B#5@a z8-b>?v^3`5+}g2O63f-HaN)KH@;`^{G2G=@Vn!%aUPqw~qa;v+=FOFjNL+|H5mxI~ zpQoh5Ow+L8t4<1nbSfyp)+(!@rq+-J6QY;k#P-RX1(IX3)h7XqOQfumAJC3|UXHD$ zzmAXbJx=^7}^?{DsjZ8-B z5SU7MZt(IhqmSwz)JqTs&zte;U|Ba&%TvLnP*A#_CufQl79_%JA@6=|a$JW7lm?4$@2|X{}*< ze(ic3u!~${?cfr1pZN=!xGcdWBVx7J)uWjL)*M50k)y*%z#n*dcidm##Y3cC1XF;F zH%rQhjUx6ac5E6@^St#bVu%5jk|)dMAwz_1ULLZ@Mm@l-kqWzx5BkflxiB#EqojYw z!mFm=@P=VSbZ4O4Zo}SlQ3wTP=tE?dWNAIOICAdb+^_!8j7iC5?|9x29t}(|qpRJ# zBI(;$$}=ZS@_=bV1SD>}gm>~)4XlbhR6qMgFq6u{+5~PZiqUdPbhID$zvogF$9ZTD zov)296I@oh{JS<)z!+U+8>;|($ls+qkp_K3d%MVmydml?t6`CtDXGF~;~HD{Y_u^X zA{`Hi%m8J1s6KZ4zT_t0w1#1su@vBe?sfA;=aOgImxx2B`w_8}8`nHZFWGA|%68LQ~3>edLn7=cKE6<{F)S1zQ>d43TUF9JepJsbfh@%*hM>7oQ4MGXw`qi^udROB zeAl~7CiD168eecu>5}W#+a2;;)~E5%3+9B9KyH?TYJz;!4MkkR)VM~8W>f;G-UOso z^rmzkvD=HUB z9!>MgyrVd%Aw>NxsQqdA$%bw_1isd_3ll(2Y4#wOGT_<%h;x5ci9bN2E88v^fT)eN zu&o-P?%9)&2)Asj2!KR_7HE4wlrxbQD=Z}4!1?9|J?cnvkNJhsQV~$tc7MH-ywPYx zCTQO4kUUTrD`EaxFWPTZrK05@#A3@I;JkkGyp zXf5Q_93cpx4ZDM1=ucjghAzwDF-pG6T0vrq@&6ak4Krs;(g2NXpk?jVZ%!c+{g)?! zAjeo{^o_nUY2bUpf2Ibi2H>C?F$_bo>j*Ii_EXIejO)ki?LyswrX9fw$h*Xva=TQr zFck>pbH$>fo{f*|KMFn^#}-Z-x{UwnC|0$BzKGbkm|)_yx17uqDfV|p5ebh&~yd}Tn`Yl z%q5Izv`nJ{>LS(TtCB!pKgosPfK*|zgSH|CZdO14%dngyBn4(liZFX^^5%>M470XW zS)r!&LQWQsAZZrRXsuhlaYa{E<*Q8(W3d)H!<_1iGhM@r@DO}}RGCcu9pWTm0q38G z-AS>w+noEN6;0KjpU@ROM6i-n4~goHxVu#5D<6*zM3e`zNV`NWY$b)nDaW#ONh(Jj)Uov>*MeawLnoNP#SfJ8$5QwsiOrY=qJ89QlC-K zp}A5Fi)W z?W?XpUqRJ+dUZj1eo9#XnaF5$>coioFD?iw|xu@#Ody4-ovLuA@rt=ees9f z7&xHMY=&x+4_S|xm?J@)_K+!i(~u-ugDEws5bK~&biLF5OMC1PmQcZ7H%o3b&j3g5 z{+IH7Zu=^6ydFC?^N7*kSVb5zs%^z2zNu#qHS#B7&kzJiM{Xh3q#I>U{ad_a2cmR$N&A8 z>15BU2azgeq%09j^C+mOrE;+hd$oWTSRg%Hk%8{JV7y}EQ|XpAIWvtX#Ncbo@=h1! zgY_`j9nux$<^E^Q?>0f9)@BBt%i^Gi5Z5LNkYXh;=A_Usa@i@ce})MPY`Ks_B^Pu2 z`hsAUuJ+3gJtaw4rWjnd?8F9|xf^kr&N4??3N;rfa-fkkQ|)HN!X?=BZ+%?xmXS&^ zZNLYw-66JHlAUHvm;fb=Uu*?!RJ(sQhNzR;-{cUd44X$mjw)7NMLqb&{KU_TOY2~$ zH&pE|vqPX+5Eb}d1+)s~>atZabXonCS|M1Xr zh^TzMsFR}s9a7$N$lL_X^TF5dLyVgI#XiU%(+b9%#lpc>Dp%_%yF>DI7d!I(2tRT# zHb1@OBlQMhF&T=EBzjnRApTSfKsgqzNt~g%W#N=_IO)H%I!hcJ+$z4-k z0V8CiXa;$noC2gQFp~m&|CSL@J+RxndW0PZYiTg;u(UYS>?-fVK>EYAzOlh|5ZM(4 z*xrMw5>qEp=2CSnL*1}55zZ}6rMLQb`PkmZ?$T?EdE+08j*!mFCp7IpX!3v1M&eZx zoen2^SfsvUqeZs{-&}O(=r5rFH$hy(D&&X~3GL4n)j;AX>yqz2e|Y^sYpMRPMm#4F z1D6W@n+3`W(>KbpxD*_tm{8s?6A$}i9c!jS4?2Zzl1`E*;4&em#{sF-M8(zuCM!OMcc>re$I3LFDK$ zB5=HQvOmJWvHZ`83GX4@=E&*(kyeF2096BPST&(5GwCoLib=&n^jU$! zn=lWjs##=iAo`V$rOGT&vf59MTIM$@k!YkpMR4r7J?7q7h{7gOj)tModz1VZww9Sn zf)dtKDWqj=UM4z&5o~^l>>zUg>Pmnk50hh4<*|WyKrG3zeKZ3K6x{EhX`(?P*nDr2 z*dpok_YrDLQj!DnFn>tS0Q_U zg*H}ftmNZfI|W@65b(3bC{}=w-P8J%Po&BYyeQjG9?D}KEp7mAqL<>#B2O_=r{{5t z>Lr1}kID6WUx2yX$s;6)@%sI5WhQH#vhu5y@rtND=Krjwy@cLQ8uF*&*$xi;?9soK z;+5(ylAk4i=%e3g8g0>a%4y%Z_9kkbnWYj${l<(Gaqf47<` zDt--|q7!G7ixMFmV&U61PUE!G3u(V8#h4dQR;cuUcKr3@vG+cbsoq6eo-_o%hf%e( z^6L^)HlYfN+Jwjc9bcfxI+}(rq&BScH@y=4AfVa^VN-jJ@>htm_TUL(r7Ax?la9)s zjyN`RlX%KB*1AR|8!aqKTrM&GYX|X z@6$?VAr#^x#wP&THx(nZ4hmdhs*|p>Rh~D4Nf{5*kta>VZ^5v_USd*!8HL3eCZNrN zm?#R>4qhiJYQ`@T|BtCC27S6bFP}0z|=&0mU2n<##KRmf+U_lgv^2^w-tYz!EuS z5uNOfK4b(V`%dy4jA7iAG+I#gn(yK;OmJn^s{t8J%yGi#90eE*C@Dp?Ug45;uit_yK2A+j{~AFu`Yxf zD4uFbg{80IltkX;wjqBw5&hXM7hE>+8!k$#TG*4^IL(1l3#wYvdv@F?AabsLUIuQg zeOTz_QDCU0vm2wAd%1=G;pD8MLs`5&hC0NBTu89%h~*~Eqx9pXA^79!hp($gHO@a0nmsM!}V;Q%{&VcMs32Y!bod1 zFrbj9iU0PkSEziF+Fc*zGx>C8;D<|QPvAf1=g#@^(?p9yi7)Eoi>LbmKiqAp7{*$w zoh|5d%5srPO7Ro+wx2$hg<9kK7I+{!4+l`3TaC8XA~__-u}Pr5QWeOy0EaM0Xt>rY zFl)JLZ885G^hhG%&@{Ht6$g!AL;`P!(bCyL8VHTUhO&l{J6{TT*nLQ}{o(u@g}mCfyllfn`Q(iHwoF>2I$_u}a@ zZW{B;M4@l3)T$iECo8Kqlb(Gq`(pkdx!AyCr+dVsvRmMNr+*T4r8=LH$F$49S5Ehw zXNPBvPM2QL$*j%fTHt{Jjdc~D3GbZWfKirb%nOWF(9J>g2hGcw%^cfH;;o`qTP~e{ z6KtO@y*ptQRV803Q4?$}ZK(1W%Sz$OdA`%ghH_q;8XU&pa^CXeBE_(yhVr>GI7V1S zDI3?UW(sT9ZVVsS|JwJ=XV7fWk8)uI^L*+|<|rL^7?%DJIKZYmuCL?c{|Guu`(h%I zl81xKW_TAfH<5m=%4@vxj+2z=5|%TyHzTgf|MbRD<8`r`v+k7owji%ruDyl`zt-$h zPs?+6j`*eV_(no`eZv{9aO6iDn`8a2nrn?%fcFZAW^#cLx~9QI!2QESu;sXWrDz=w zqDn!chC=6T1*7As-6fQz;wy{^`|_MzzJ!1K+mxE?bYN(auJ&p0K!bywa$4yGSL{5n zQ?c@-p=iNL2M*i1&+br0PuTyZ-)!ghz+u-jb&%is%=9biOvh9Cv3;{dx1EIN5g}-7 z7LKsX$7}e0aj>yo*d)6E5~50|@touJ=pj%2`AFJM`Sy?R<*&cZQIY;HhubMg#Np3V zv&mPLlT*mxYk?$$kGV~Vzuz(?{jZHQ&Xovz=kU9EIRh%Sn!)UAkHi0~k z_CVWRFTQuVtuQLp1EHqJ<2vXR-LYkAhk4>(Vg#!3mnk6gHn!Jv&TnKdF?*n4yvn>2 zpJk?mzZMtEZpD5L70t;?QJx6q#IUp?ik5%9p`_uLS&Fcuf8%4Gp`!XL^uYvTQ)ZpiB|VJZtvkG~5c?cBWn2|46r-5`4=iy^4mqYiDq; zu9;>5-dF0h`mo=WD-Od<>wFk9YBHAAE$y>6ey8l&O@p;l@XiGMxkk3_3ZzKqEZw?4 z`+mzmglA!*Tpp&4=|VbHbbNkDP_lWuDi9s0$J@bX9BX6H%{&a1ryR3fQ*8Ssc-FRl zz4o5#`R2P$T7%;AxocsSrxymQ^w2Fi3KA2 zhLO|UbQ|E2uuBA-gcFrdE{m{LixCzC0{m!Z-ws*C4bV0>+#-d|Xqy@dBs@dLT12kl zd}PF1uhQH0#)~U}df*0vw)`6MPmYdq_=32J>79%Nf5gYUBL~!zsygpskC|o32T*N| zpiqx<8H)s|e<>I?ToB7W$qO6@%!vtz!|{`Qj(GkJD8xu3h5A()Od%K6Gl`gwT^H3Lz&r z1t}^82u(tDjPDZEL(JmgMI@73#J?!Nlrb?!gwSiDk8=IUh-(3Wo`i*|&P`jZ03Z)C z_-L4F<82V2;57?f*f=)pCv(b(DZsSTp?PD~VKNHldcRMjIVw5of}(msYQxV@pV@6U zEnK**;6U|zf5Lo_XX2l@@C~V(rD;`W+=!dE*=c@)T2XDZ5NBhvmUJf}a>5M7UfZO$ z31Xb6$4D0@CYmZwF|HpnXuoca$CsN7?@2LE--%^{h+wJ@y6i}UR0Kd6)qcVd294ZI z8ex0-nWt%h%HuV%Tjt=_R`L|l1tu2fs+(yM>XdyF8Edo%8lqhCHu!I_IQ*TFIQd2! z2(p~?=~cN|ujI3E;r)3}V{gBVqF_I~l$hDWyV@0dy&@H)8$AnHMq?xQ=iPb$WqayB zYJwS@(=eiJ;JIi0S~W%mC{r99RXBclSp+8HjOLM$GqAoSrVN@gM`^I5GPXtlX?T`R zXooqfKi|;7WhLf9hGb{x`7z>hzlvKE?iULhY333~5PxdxBOp_+qlU_~#^IfId=;osuzgMc!&WAW z?;-=JCdW4%JRJ$Z)4yl6POYTC7y5(6YaY3v^yEd=&#JbM$cp3p!0y~Lfl8@*3*UOO z&(wj`L8Y2*qZ6JVr`I|%kg)r&#j0nf)Z74nxlL)2Sf@jq?r+9w2ja{(3kAJ964hN< ze}jbPTrSIZzKbhSid4G4gQ*_KECFvc3J#8fIvlA!qpS>>ggQS+31lC{+J~;KK9ucB z@9qBHH%Xq3TTU_@wOimi9yc_SrudRSJo>k0?l!*rVna1ki{i9Vn)~*6kf-)VwMw;h zd647vO;!o9E_`@iZ~j0(wS(Vv#hmVIj$Br^NY(Pwq~*wkrZWX?!VK??4mnnbl~9E~ zo-nEvK3DI!?}j!zZ9Xvwp=5nyURG>XHVuwE>c%tD7{lEo;_ix-S2}R{GlcG05xZtF z+T`*EyVaED3TqP5d;lfL*ZRT`cfpBgc|=n_00QXvueHCLvC-kq>wfEKn5gg7rB7_t z2y4#yb_0Lc%|W(&VvK8;QE_~8e`M*RX(5`h5=N=e@4iPA4d{TkGUd#yBsfwo0QX1^ ze{=Zur);rDW2FwjULy_JPWsEumm5`s&MKr7MaR0?g9*Pr{oV5{UfX$rzn8Tiux zbe!lk`=DH9`P$UAhb6qJ(1)pB(aDmC(;0I#6vg#t%3k){vEa$e=ds&2^Q=p1x6FaQ zp&%aO^;_3n=n%sw9VzlUh9el;e(gfqgqC&KnipL6h4u?hH$oIa<&mNu0z{2-Y||#I;saZa?g*ZyIi!CcxvMi`F{#u zY>-&9o8fTfEC9QMjsy~|kf*2dFgE-xGVv3lUlNKf(S;EqV+GmI#H*X)c0*BIYA0!?PvJD5TcE^ z7ZjtNnO<~;9m^%O*-!J&1A1v5y(u7^?em_ajSlLEu!}b36ZYckTiV--&{BRt>+4fJ zJmZ4IOtN2wh3tf_SWy^YqV_JcCLjRKuBzK<^xh#)M;(D=v6YZ14O442RD>!{%r-lD z0?RPve;g7h&M5!-MfAf!8bpRgw8+5gWa=!`EtO-u$aOQxo{O;;dsrtGenZ4Xc(6j5 zCfp-mlFBvr#aBE`vE$W&h@F2^4OiG;`K%DZW@N!Y24<~(66>K~Uv<-EUcC*^@dKny z&_Ta*fBf!1#$D`wB?41=X>aoj-UuE0LujzIKr?F!HlEp2W&Z3+P=y{$h zj{h_;&Eb`=YQu4Zo&fVfw`T(Bq0H9z}o#| zCYG98k8@iy_K)DNI0Jl0rhK2Oc#pvJ_wZ?#7~gEMdmH(IndDA>i$~lzc{rMF#Fyu~V!MvL zztw#FQ3B7!@1?)GwY+u)AOQZ)!laXlRe?ALP74SCqNqbtR!~@EiQ`WW+;fp8SHr=g z@3!)7*T+FMuk^P3NTwo z2`im9v8C*hqo}y&4d*jj)okaEE11-kH{TF~r3f;(>)Z!NU8M1jiv^iIS&d4(kAS2% zHgG?Cz6g!```li%+}rZkAunr>7NC{`9lu>x8>*Q#Kl2vNuGi9|vF!9HBE)PrxQM?U z&WC!DsmCM;a%jWUb#+RZFVP*YyQYnztv`0%;P7J1uBj{N%{2d@d8*IkxQgXljB;!+ zPW2Cww&Ob)ToIBljhcF7@N8}T+4@T2({W5%NW(qPn}4EzXO^GMs9vU4s#++Q{6CGC cloz6xf)sp2+8XrFf0ZF*rIaKqB@Bc94`Yafr~m)} literal 0 HcmV?d00001 diff --git a/content/concepts/publish-subscribe/fanout_forget.svg b/content/concepts/publish-subscribe/fanout_forget.svg new file mode 100644 index 00000000..d0dcc13c --- /dev/null +++ b/content/concepts/publish-subscribe/fanout_forget.svg @@ -0,0 +1,946 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + After not publishing anymessages for 2 minutes… + + All fan-out peerings revert tometadata-only peerings + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/concepts/publish-subscribe/fanout_grafting_preference.png b/content/concepts/publish-subscribe/fanout_grafting_preference.png new file mode 100644 index 0000000000000000000000000000000000000000..babd8e9175ad81995d15d3610152e52ad70b5c8e GIT binary patch literal 13538 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 literal 0 HcmV?d00001 diff --git a/content/concepts/publish-subscribe/fanout_grafting_preference.svg b/content/concepts/publish-subscribe/fanout_grafting_preference.svg new file mode 100644 index 00000000..02d27db7 --- /dev/null +++ b/content/concepts/publish-subscribe/fanout_grafting_preference.svg @@ -0,0 +1,876 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + Peer has existingfan-out peerings + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Upon subscribing to the topic,fan-out peerings preferentiallybecome full-message peerings + + + + + + + diff --git a/content/concepts/publish-subscribe/fanout_initial_pick.png b/content/concepts/publish-subscribe/fanout_initial_pick.png new file mode 100644 index 0000000000000000000000000000000000000000..b112dc4269a2e5d9d6e31b180e3be0fd9f27cdeb GIT binary patch literal 18898 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�S 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 + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Peer wants to publish a messageto a topic it is not subscribed to + Randomly select 3 peers subscribed to thetopic and remember them as fan-out peers + + Full-message peering + + Fan-out peering + + Metadata-only peering + + + + diff --git a/content/concepts/publish-subscribe/fanout_message_send.png b/content/concepts/publish-subscribe/fanout_message_send.png new file mode 100644 index 0000000000000000000000000000000000000000..45a15e05477de34d3107199b39e7853ff31d1314 GIT binary patch literal 12421 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 Bo$~+y literal 0 HcmV?d00001 diff --git a/content/concepts/publish-subscribe/fanout_message_send.svg b/content/concepts/publish-subscribe/fanout_message_send.svg new file mode 100644 index 00000000..d3a28b1b --- /dev/null +++ b/content/concepts/publish-subscribe/fanout_message_send.svg @@ -0,0 +1,999 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + New message sentto fan-out peers + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Once inside the topic, the message isforwarded to all other subscribers as usual + + diff --git a/content/concepts/publish-subscribe/full_message_forward.png b/content/concepts/publish-subscribe/full_message_forward.png new file mode 100644 index 0000000000000000000000000000000000000000..90ebab0069c75fd82045fa1f0e99a6e45df14c58 GIT binary patch literal 6363 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 O7SiJK;BryJfd2wtDvL${ literal 0 HcmV?d00001 diff --git a/content/concepts/publish-subscribe/full_message_forward.svg b/content/concepts/publish-subscribe/full_message_forward.svg new file mode 100644 index 00000000..5d609174 --- /dev/null +++ b/content/concepts/publish-subscribe/full_message_forward.svg @@ -0,0 +1,852 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Incomingmessage + + + + + + + Peer stores a copyof the message + + + + + + + + + + + + + + + + + + + + + + + + + + + + Message forwarded to all other full-message peers + + diff --git a/content/concepts/publish-subscribe/full_message_network.png b/content/concepts/publish-subscribe/full_message_network.png new file mode 100644 index 0000000000000000000000000000000000000000..f320579970674bb8bb122cb7fdfe46397da3b47c GIT binary patch literal 17455 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 literal 0 HcmV?d00001 diff --git a/content/concepts/publish-subscribe/full_message_network.svg b/content/concepts/publish-subscribe/full_message_network.svg new file mode 100644 index 00000000..bf9846a0 --- /dev/null +++ b/content/concepts/publish-subscribe/full_message_network.svg @@ -0,0 +1,1591 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Network peering degree = 3 + + + + + + + Peer reachedupper bound + Peer reachedlower bound + Lower bound = 2 + + + + + + + + + + + + + Upper bound = 4 + Full-message network + + diff --git a/content/concepts/publish-subscribe/full_message_send.png b/content/concepts/publish-subscribe/full_message_send.png new file mode 100644 index 0000000000000000000000000000000000000000..934748e9a4acc8e3bc6bbf3a72100727c3ace84a GIT binary patch literal 5494 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

E|YgZvXFg4-vD*z!z)w#V;F*`c5>VVn7-T8 zlkZxwlCAyrqgr~>upC`m#e-xw?x(V?u@{Tu2nbbXGpBLfZ?egXnbrIam~{7TescN5 z*7XZ8@vALTP?B`rd%<76UbASXuJoLBP$yJj#O&8q(pRT#e!&9c0=C52n{e7+0>Z=k}a?Nyd2Fjp2XXuJsai#Rq_bdGP0?&FY-}eN+8vHXR91V zv_@}|pfdmRiK9B{Zu05X2ntvJr~+f_Oz~0xB0Q~kUE)wOKI03}7}+QN4-xu>pV9KO z#_j`Tzjva7Cv7MYB5`%zBu1&Yrf8*Gbr{S=jyy2A3f(wlb2Jq0Ag~8V@My;x%vmu_ zg1)vSq=;rgP(uD2H$8(UV-V?Td7BJ_v5yZnz$-DK2Ns=RHfphw$2ro?k{`{>J8?oA zaDePXs>`IjkR@*8?i{o|z|{~U56~b>COA46G6hdBp>qkN7onIX@!PCKmc;Qclloc` zw-TI}U}}Ah5J6f$2wB4cvb{ji1^oC7iDs4+yi9+7`8*clv62V&!cSG-8w_n$_)4k` zmSxXSnY(F_T=KfN$od^OPwfWoKs@*6sWMWr=7~T~M*CIE$0xf))spNji7c_RfiyZ@ zEPKg@=EC7*y?XsKq-KD0fPP}VpJiilDD?GLIm9As#6T3iRqhgIr%}w{=?^U1o|nj; z2WGu}SwdsOdbXWqqakTdp31&@Ui%KRaj~+p(nHLXqD>8r=|&p$K2hv7U~9=FZTgKas>;avCP{y-2gr8+%^DE0 z{Q=ZA;u}ACH*s@vg)uUk;`4a0m@$d3N>Dl6Eh1i)cBIK2vNsiPY?Oxm-i&mZl7(lb z$@~too#)7mudW;h+}BO>VA^2o!>!*9;HCAX#-@;*rg}@k%)wiAkZkQ88D3Ms@@p!H zY2eaJ3tS_nBO{y3G$0s38QI|;CF-Wi$tpS_U=kEGFk%n+tdyZx;fi=1jCkqvC&vc4seZd*kuV zpwj0Ub4kvRaKn~e1GLv#bQZ`u1!LYLksXdlrHl4(f3{khoMCz^Qch5#QA<6GuYJS= z$xi{d_Hyenhhz$F*c0PqVH`{Od%Mir>GU}HKWLnGD;1QP9Cal<^jw^ks)rFW*5TNm zG)b+2N0L@KtMoIU=C4-m6Uq0D6imFubir{ + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Peer creates newmessage of its own + + + + + + + + + + + + + + + + + + + + + Message sent to all other full-message peers + + + + + + diff --git a/content/concepts/publish-subscribe/gossip_deliver.png b/content/concepts/publish-subscribe/gossip_deliver.png new file mode 100644 index 0000000000000000000000000000000000000000..9fa1a2c589c1756d62b97824a0095d4fbece027e GIT binary patch literal 14451 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 + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + I have seen: + + + + + + + I have seen: + + + + + + + I have seen: + + + + + + + I have seen: + + + + + + + I have seen: + + + + + + + I have seen: + + + + + + + + Every 1 second… + + + Select 6 metadata-onlypeerings at random + + + + + + + + + + + + + + + + + + + + + Send them a list ofrecently seen messages + + + + + + + + + + + + + + Seen messages specify thesender and sequence number,but not the full message contents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/concepts/publish-subscribe/graft_prune.png b/content/concepts/publish-subscribe/graft_prune.png new file mode 100644 index 0000000000000000000000000000000000000000..23fa86c4999baa5f144360994fb7fd00f7db2ede GIT binary patch literal 6588 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 TBmF;L85~(jkVKidp8tOUA1hKG literal 0 HcmV?d00001 diff --git a/content/concepts/publish-subscribe/graft_prune.svg b/content/concepts/publish-subscribe/graft_prune.svg new file mode 100644 index 00000000..91b9924a --- /dev/null +++ b/content/concepts/publish-subscribe/graft_prune.svg @@ -0,0 +1,280 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + I’m grafting ourconnection into afull-message peering. + + + + + + + + + + Full-message peering + + + + + I’m pruning ourconnection back to ametadata-only peering. + + + + + + + + + + Metadata-only peering + + + diff --git a/content/concepts/publish-subscribe/maintain_graft.png b/content/concepts/publish-subscribe/maintain_graft.png new file mode 100644 index 0000000000000000000000000000000000000000..c869a867033c925d964bd5f562e4f8ee9fca55ba GIT binary patch literal 17855 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 literal 0 HcmV?d00001 diff --git a/content/concepts/publish-subscribe/maintain_graft.svg b/content/concepts/publish-subscribe/maintain_graft.svg new file mode 100644 index 00000000..47f717ab --- /dev/null +++ b/content/concepts/publish-subscribe/maintain_graft.svg @@ -0,0 +1,1168 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Too few + Too many + Acceptable amount + Ideal + + Start with 2full-contentpeerings + + + + + + + + + + + + + + + + + Ideal + + Select more peers to graftto get to the ideal number + + + + + + + + + + + + + + + + + + Ideal + + Grafting complete + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Too few + Too many + Acceptable amount + + + + Too few + Too many + Acceptable amount + + diff --git a/content/concepts/publish-subscribe/maintain_prune.png b/content/concepts/publish-subscribe/maintain_prune.png new file mode 100644 index 0000000000000000000000000000000000000000..2ff8bb6e02592753d23d8b7a0ab1ade98d186f7d GIT binary patch literal 19695 zcmb5U1yEdH@HGg55Fki!cXzkJ-QC^Y-95Ow4({%OV8LAmcY?dSFZumUffi0q&-ew*wzhU}Zf>uxZoOUOqkdmzUSi&#$twieFw{ z9v`1HwXE*$?$568W#tTbcoojiFU!j6Ma48WHny8vI!(=7)io^p`bYT%lw)Eu9-dyP zXjH`|w6Cx4D5+K2+J8yPz*tC)Iug^!L-|NNP-xw-xK?~c5J zp@5*uuhzkpmF;X`y_U9(y}e(2LiWVO%(X}D;NZBSp<`21$Kv9up1!@Ax!bQ_T|PdM zPn}Cn&VeH%Qw0T;u5Q73`4vjard$A7XP2PKsoC4xJ4Gd9Ya6ei;5cp`g^%|ScaPBV zaZplH&gZg&$U~Pq?FG4-BWyg*6ZurebLC}?c?>`Q%PwZ zFQ3v)U=t8ndSz4Q=O6v@`ZhDWcxhg2W8gA{&n|aetx;Nb#Qfc z8<D%G;9dIBuHD6cPZhL$0?ezA_x$4Tk;{5u)x~ApYt8RFB^1g8R zCcMqg-q+U7=l%KhHmdz)e*dX=_5Jexp?dNzqwm_UadvhoB{lEk?fq^4@;0&iW#Qm9 zrsFQD`vtUj?bC4W+rYpi_dK#mPN{I4+VecIwP&1LsU9+@o1o8cINLmQ&@|z%;FJ}X zn`a%Lr4Vp1wz6WF`P262dFe1Oze<{8il1GOy@Z7vr%tO^_Iby=^;s@C7#Ja#q==x3 z$I5B;raa0K{$RJQu#Yi~f&q?H7II#eQHWBO$Gnn&mIgE`EHp-433STkj*23q5rVsc z3bF({jvZm>j}QmrFCv#}C|83vLBCF$m;DVdCb?N;xLJTL({fv2n-q?w=08eq{5%ex z_z=MYgz^Egf9D8tTUbM_B{Ja^ZIH(J7YP#|(^t>N;i$x``stTN_ZxhA0wpFc=DfcOgU!wOuYkW9a|9d_IoF(l z#p3cUZRQ^e7-aI*QPM-mof9-1CTqlm$13R$bnezeMk~2jAkh#3jBlng8~jFix&4nd zTxe-x{9k1skp6-K)Ar@%tU)V^sCdV&W(3gFOuS$s;#8{Z#N<~A$hMJ4G=@)>EeQ|i zjuUrsP(TKxgK2Rlz?hu;z%6L3K;+QFdNYpWol7rvtR_76d06`@;ly)9yz1wkc|2!i zgKsm*SA)~ep}fYuysB^zjO?Ot-U}D0&=4jxWQ%Pev5u?hZWYO@5vx|>%dW`Y0mMw& zotW;dmA7%DGUY2bw)|sQ*RKds@e6yC+Shw_Om%lnmpQ*MFrdNif>QrbM+hPpc>lv#jKOqPtayBxd%>rp2 zqmk6y3AJrNK8^iANUH;Eg6HN062lHbY^nXD z+W;X>qmkrXil~IKJ9i1-k(n8TAs~|^S~j4D1E%DnNc^5XApmaolq^n0-b6ma*whh^ z2)Euu=Q_e@m!5{`Vh*eCLuyrKVgV%z6R1S7Gdbt4*k`t2b@YL1qY=hB&GRJ9g@>v7 zK(YQ8zUwU%%p@xpfhJSEQ=b|A4AK0U{(9hV5 zX;iGB>_F2KfQ_5X!6W=ipSEDIUETaHWx!=-Wgp~b+r_v*F~c2>P>I&=WVn&3A|4TD z{r1=tO8+oydbV-3Z2&azbG!9P&n{r7^teX+{Q}p!4;f&Ifei(YeUuhtjniwKr!^Y9 zY^C!Gw^!38tTwj0pomHnbsUb#;J9agjH!u~lmrIsl_32>L!ilUlhW0~H(|!H>dky8 zBbzRhV+V~0zT||2N2X$wNdYuwrug}9PT~0|>V75B3201QUtGHGqzN?I$4>iBzY2hq z+QEQE z$Uk`nNweJe-4n9DAul#OM#IP@ad0>?6L;>zf0!gZ<*O^Cd_e1~3_1yojgtZf;Vx4D zXgwfETwKSGJT?K1gR9JWNlOmzy5DF|1Ft7equ`pwFglwqDHtH#)}7*~3}oJo7#IZs zf(YtA*K98)mh5ElvU}6IW}j7ON|_i?w=@8Jq}A}dQP{Z zO0~n~l)OlZ5D92*Tp>A(21eyGFu5W|n7R?@k%Y9EyWU5Ur$w4%@vZoI7-jjFhsoD~ z;0DtfUp+d&!&n?@3AFTu6R3GzZs!hcVwnk$Hl}*u0TON`0IEZzFdm;OA02TA61Aq+ z=(q%wEZo|zu0$v0+18XNd%jND4<7xcGmeasv_AkNW_b4Abs+@2-wX7-RcFG7Kg?{_ zUnY+7XP<$001|$gl0Z?5)pu+-VnF#n;-UI$N4%aG4WB103=#@fE{;LGo1b%BgHdR0 zPEf!hg8TNHo113FHPMgJlsx6f+X-Uds!ZXogxhJ&4Kq;2Mlr!!UW5%oH6ef^PaO3c zcW6}SA6-XW!r<^Vd8x&iY2oU`nOCRL;FBg|)3QsdADYUUFv-B;dln>KT9RjX0EQOS ztgyK;A>wJ_rNab#U?Ic1+me`zoJbtwE>~T~+7Oq_~GTz?!u&7V!p#1&TSJa_lCvtH~ZxT;~=K5T!i|;S1Jrj<+q9 z5jh&eeS@PmcsE$bOEH7xC#Ol)LlImJiZ9&QQav#XgML$ie;5RgR4 z$g!Wn7dT%Xav^x8YqUK9`rwuQu9=+1cTH9|2mu%g`1HGmMyA!Vu^QCh2}s0cCrw*8 z!sWq4C>yrc?^U&=wfWq|Vt-g+Q!?GI(N>a5o3Q24-^KHnja+%x2zeEjlcr$Gn}#A6 zo974Tygqar&OAi(RJQluiF*o}EN8+I*B zQ)FvyHG05c*KZ+vXK+9B#8{T4JWHP}c=gU@u;R{D_ZjJXu6pU3S%J8xT??!X9D8uT zAaPN5+G7@++c$5h3pzU%kS%!*4#(O_sW2eJDV}%ch@u_8;rT~i7_Yu^$v{^4YBUcA z*u3wD@r8|lLF+x|yEexL{+^|Iodu(S?EA>XU(Z;`_ouyHK z@?xuzJDA5V8OXw;qpHywP}1vOklQh8KFaNM)1nBXO~dLQi*B2%AccTCR5tQO=|2j?&^jC(o7?AdtCIl8|FcK zxuQlvQrpwH+h!8moHl7TK8IdO!u3ZC5&WJR0_7sxw#_m+R}+qYTJSW(&!^mckr;hc zua9t{Pk8o>16yMKH|tEk=CP`SQCUv^+@QH4x<*RfCE4sE z?lv=@6;w<`p9t-96C1RkwOG&`;m~UMQry<7Nr?^n;|;7=Rix(ot|;5_PSa7I-~!sj z2fJpKDXj*Kwdm&INF=+u2Ph)MI6Oz^jEP#wZ%GPCT4l{eAz4-Q29cbsAo^>ujNSl; zS3|)Bnq8$47!-)qm$8D3za50iEnmZk2PX!4#q(dX8^w&$T+6OK#^Kd0pFnE`=)^Pf z$neM8Fwl}lj1}k6s)ior?TOyx`*!UxVxfo!`DaE$7Si6qr&Z1E!xEOj8X(svnJyB0 z_4)@jV3IS*eWRn#WUw5v-Sjt+i8~_Pp3*@1am7L7+eb#TpaW9gT&R!2r2g4A>d(?=Obq(}GzY>UI{>KBJ zAD(HoDS)yX#cP$8{F9V;4J9gHo*FGcsq~Q2+ICjZ5;(nL#-w>Pfwq;S0q3h!4wf7# ztSM6|`;Eh&lcQpS=U&x11$k$@dY<@d`6$Am!_Yy?(53!e%S18{stOQP}Yr>g4 z&~)sgK+S3*p{C<3+FF{}jQOl`z(EaGysd~ni(L||q^%!nGQg&u?ENK&@@0pIV)J+ zE!D7{MKj7PD3E&`S@4N~7&U6}0WAF%2bt!YaLrh*-a5x^Xznniy3Y`asl{(F|DJ{L zZ!;O-P^bP!r*s6CJR07xG(NO_^f&0?y>8LELxql(!~VT|%2P_cNk4K>e}-iwZaCVt zTWpE|eCw@msM!ou- zze+pR#fT>txO5yz^>cAzLTc~7oWgr7|IMoU`A@8YK&}cdSg~lrXF@f3@JJUtH{7}# z@pN2$+Yn6sV-e-%i}}wxQtrUSp#EM9<8=76oKxV})?5tOk4xCweZ)HZ`nEM6=#seV z4f$bO+fkNRYfO%oaW8hVE2!p^_k>I%mVpF*-jkcr}q$B<9x-7$psUDUPh9N*&#;V*FU z`Co;iy@Nh0kZ=bTc@l>i%HgXXr#a4F!I(hLbY>RO99KHEGB-iV#(WafD?FWl5 z9hMw3#yBMT&Cq!y&y&#aH&h;P(0@lrFr~kGEPrwLx&$={Hhi0@=XfytX?()@V(U<+ zVu@*lOxT5#Hw`84K&J8pSF?qFtJrJ?gbeS)>c076vjo_B+jGFXVBLs*Ztn-6{K)zR zcfcDTy7_AoPeBF#e*C1p9qe}`oxGZm^FS*F<}}58{1xeb*XQra%u${Z5cILdty#;r zEw!Fnt3^S}&&1?tbsmS+%DeJoPt%`nMNRi?1LCG=P#Q?#FTfTN;kwLtk89p2Xawv$ zi+Yf@tY&e>(k``u?LOq)L#*lWz7pkglw6xyvMgsrgK?+|(fsy-vDwXaGUxxt-7d}Z zN{(ByUbPLZu8F|L^D#ii8)qjE8UsJp!UFcYb_0(l%mms_j)6$73J+K@v!JG6Is)}V z1Wv#Eid&K1z$#C%7R9?5s~W&WJWhmbG<4yugN#?tJ{X7Gj_QMjzj{s1zkfu!gp6*0V?dt#oe0ltgJY>Bvf(6LP;>*V80YqJuj>(OncJYx@MOADTcvJ8c>JjZ z9h`M3cD2oXRuDvy0wz#Cu8_LWVV=n&{%3Ue+2$8Snw~nZ<~j8|V0z2Jd?)+a8A~4UeCDt1_D1V`0;~^2yfA%ud~sO@!;& z;15f>?C<@M_YDl+2d)!byz$XN>&3(5m(;G~Xmc0)C4fW7`K?dO@7dq3kuMkM6Wr;p z26bF{;yi4ej;OUS?RegLHJ#D2 zXLywws)t_27$2hQMY`Uw-`z9iENC8C#A4-x29PspV!VSGo{NydDHFIxVcDpfC)H*e z$+HG(3E9=LA0YK_CCR=hP&+518EM5XX|1mMu5Dxd$ohwZc{U+ywuikAZYUDcGIB0< zlxGyowVM4Y1JL8Al&1bk#;y){fJC{KG=Pw-XDm5P8if`pe=VRbS4hrp+is;u|J?Ejz@!L{F-#>xa-t{DhIo5WeU;!d^aqyt zM-yT1_9H*P#<6_mKH!wqF=_&uO8M(Lj%z66pT%PUE7pSfggH46ILkAN=cVy@T{`M*xkQo~=c^()ptcXWP>Hl$km|v{rWDZ|*zJF&`r3!~+Ec&UCPpCi$9ieiS z{9`xsvx^Xe2+qNzvw#Eple#X_v-dQB1Tg# zCz&~8@V2;JQ7B*3!dGz8c-9KF)~G#*H%~D24OxuqD_@oZF|(hm<)X8AAIC+w`D9V& z9T(VXG%`kaNCv9&;@pK!IR8o-Pg#nyJUyIVbB51UQ?*NMS)yl`)4ioHr#%tNTFll| zJT}D*XQtb!^6XhRAQ>3$>^Bp-DiB` z_7p2R5f*ekyafIq6Nv6 zV}VLko*X)8-L1kntu7uAEJ8PO>l8Z7+^2qYtEdzkic1gw{ElZCv;Jo)2dJ{{cH#nY z;OV+FAm+YSIdZ^2Zs;mk2O5?Rp#$hns`wVlmD2o*8APHAvdtw8nH$M8OPJMrzxI4) zSFFuF-cOw~OffeffPzJzFTXIGN|8K#afjz(zny)^*w;!-Ohoo@J(p=zce@dE{RwCu zP(kT)D+cmT;wNQyz!$xHSTWlw0_B&Q2i3%)j#+=f92afGSFmXIaMYDeE|cG{)rxM~ ztGc59R;HYA6}V8F&f(I-n`+I}W1Ve{KqZ@u2b_LkQWBjH8}T9TQ_PTCnEHz21|)+$ z#+Wa+9WHq$7sO-VpPzs|*08p5VW^UGManQ2J}$#%(YOq*@gGWG>M%U+U)YP;t7jr@ zy9(t_3booli~uRwQ22_Q@1d4Idp{<)JZF+=WXmB)JLdJv+{JK2cLu>PKwW5LU#> zR*eqcsc2m650bmaK-E7(00UnL9A}He85;IG@E0|X8ro9t@AtQvUW9_5 z+2N6$1tcL*o{pOLQ_Xz2umoztLDUVT^+i0_I2Ceg_G_m;TZf1;2-V{9O(Ysq2ettVC32L=#&mv37-~SCirxZ7(Oj9bq@v^p?2v?_!at5da3cdUNAM z9bgZ!+89v<$=bZC1>@PyW;rNj?wMYCep$MLCj%f`08r*XjCtj@Q84F1taTz7mflV) zsrr^dBt)-(kc%}=&q=U6=f1XRzwl(iW@qS!H%!{c+b9Bz7DH>^=iEEyF^7;>k1mtb z-;ira#ZifgFk#3G#cD_!n+GLZmP^-6I*;Cavks~$nIO$Y^vW-`Z4Q46dD}`elGve% zP0uck6jTrq&UIA(XgC+QraE(k=Vn<)H)dAU-7xGrmE1Tmsc34o4#9@!&4@ZSQU5kL zC~SCLojHlj-uHXiqt7E;>?ICPeF)^^Ac>cm+0-;PPgQ?AlwsL($bl{hJWQfJ|LtR> zVyK}M_H~fSq{f{tLOJQQ=xyhf#*;-~Z;wy=!MJl|U$h?nRH`5*drP#FOo&L5%_Isf zyO$0#l=9ch9bNm@Z}|>!VVv)h8@=Dwa{VdRTT~_H6;n@ClATWTC@1$SbVkcY)uHU$ zcaJ+fC*IuO5SzP}X4g_?!}wNdb^hk~60IXJi2ror8ZsKunw;9GXpCP53N1ww z68>M$0<1f^o;zb~zVPE7Pu~tZuQ@e)dfec-UrCR+d2kW)NU3^-qhkkkR$Z*U-qT4j zB$wY@3ZGMC58I9v3)`GR z{iXZxVYAlvvq)I#R>i$y^bHxUv%qC zB}Ycp7f?kJ4NNUf4Y`CEcUjAWm0SUHF5)GVQZvIo@i)2r+pqSPMuW*xAMY04CjYsO zAM=z@l>?Mb7?LX*gIJk^vd;qB%2YhLj;pmAnwYzBi4YWcoo$s|2M?Z$>n9mX6OeXo z2xeT(lVijSPvc8cp7z31evWjfi;2ZIRv%6%QfIvnZKQ~cx~^{#T+*t8I|c+3W;H;6 z`I6BZ7XZmaAMnMhFaa7Gl&8XqCJJv>4zFc7zk{qTnu&>2L185<#M*L)S;!<=s8;>` zz=BtDevX%7_2~V)^P;oO9^EV;%;2g^}fA=dEk=VWM+tX*z9rG-r+)W7Na=e`H?|6)$IMKw6$dP1>tg6DqHNQ3T zM{?mTM~KSRi4_uEs0^__!B-nnd&~4L?IzfmI=cS!XFl|((>_UWNdRi?nsjtK6FuqN zM@l`xf3KKxj>E#te?{i#@?1RKKbWsqq!{=b4SU%P~>qI zG*Oi#hp|D=w)V11!@%(DOVeo{;Vlhy z0OH`PnB-4AEeR7**>Dq_rxK-RzmBs50ZIHMTITQiy}gnCUp>S4sA*NojU#xSlEmx& zC49@}LTT$S&hoICXzXThaxO`7MgwENX47Pg@J|5S#qG%=!;&><;~J0JwaOrFd>6^a z6kB{+c2zXR#)2dZolCHK#iQfoh;!lxMdHZBziwx+n^f03ee zZj$N~;6-9tMsd*C&EqVte`sS3A$j!odWqYUjETlNkKrgE7CRMqpCZZP8`11=_9iKb zHzk-750UM~NCE8{#Th;8s&Uu9-9Uxq7Q|FxaM9D)s~q13@Xqb_v^2yq@EduGM6x%K zI_YR`l+7K%c$baL&h)d1T#=~h;WsCUChT}!ixtNP$cD-5^LoGa4~Dh`>o-;XZgTbH zSQ3`W`PSYR*0Y6`fWIV$E)rYW&Vl_NC$v*D&NYQq5T#OZ+Cx6|;O@pBEqDJ~7r`Aa zIvMh<=3*oHhG9B}p~UTdrXrOAp@q$c$MNlSem1OKkZe4MC>VMAvOTQ(?$kN3-4WRC z{GfmScf*4$4{|=|7%Ro&zA86z`psMa<3?`Q-Tk9;JY)|(3bsfOyz)Q=aD92=;vMz*7lBPry@P4*7k4&_}KC5+uPUsFy!~9n{a!LU+%;zz{I6RI=!w%C{;3dwBKNx z(MLHsz9r_5P={)4uNemuNAl+d;~#4xap$~V*!e#lg^kz#`j#n|Pw&mjm^e`CTFZGh zdhYC%cxN1*b5J%u!)>s`srjC%#yFLZ}~CxvxyWy_8Expo zMor-qHGZIK($%7qMmvl2i9g zraqiM6UPp#I!#rS$FL7PDh2!3$3K5qa83An#%vI|lwB8aUCbve8Dl?f3z%A0PR$uR zH~GC-4OJZt-jZV$vXsHU-`W2b&50m-)f}9nV4xqK;f41U&Ya)mw~!Uc943-o8@i-j zftZ~(3P8kZlYb}QkhBExoS1KXd7e^gXsHl!S&&xaGCI5K>HG@kr>nP9?wrTHhQ-)Z z(T;T!%3i6HyLGs1F%_jl(z0)DAOWEMI{X&7IzbCiS7JSo6i?x=fk>&WrU#WWlU3r? zmL#S3Ig3)%Ud?%4!@uAnpmZQ*qV-RR4G6Mqx9sd4NKdN-G?)GPZt#SZqjnl8KOk~b zxdErARO1#Zd)vaTXDee5WxUHK1B3<&{e$i@h?VD~yr$ak$6onIQ{w&MN3S0Ebz#3f zsb@rx7j1#hn8;hzCq}8dsx^gQBik0MHhY&UIJ6+q*TCgEeko?5_Gc`sNMbmWYtVMk zT|!70EOHvE;bGw05?(UD6gY@yRy$NtYW{wVKek~CWQF8(EK)rhC9e4;dQFf! zYF~54@$5sK%sTqXe*($+nQ(iS5Jj**?sVi6714*b{(K+lkwAhQFykLjDg85n+d?12 zb6IRC65PS8u)K17mKEL-KM;?g(&+hW$!5P~Mh2(;O2`+G+v9i(BZRUl{2^FKi$uOA z*dDo$R45jQ&nEPwb>7v|;@cLh&GL{R#o=Qud#%_?M+P1@2Mv~Y=&#RzVRxq+3g|y&iYl2*{wY(!^Ikb0qoG>-o zeK?wp$e+c9@za1xI!p?J%tJLwChN`SrVQH@PvQ0EvgGy9$xOlnlzL3sG$w}9YzbKj z-AW36QGjI{{UUvyCkv|l7U$g3nVP-D)i@!AUDH3t!5&_M0tGJsQ$+clwmq2IRp*9l zEGvaoCt)oq?1!(?9HaH)onk86d7c#BqW9#r85z7f>BBCOST3p%n3TNKGvye-U77%!{x1BV5YkgSvZ0PVbk#v zB=`@)`T*&BOC=-m$+u2UK8kDz!c*BIu8Hf=Wa>j3;RU}1QG{RyDAg&ZLes1XqD>+O zn+?GIL$N;>{rF6&W-{3yYIlVY<-W2{M2g3VJo$4`{1=5Uo}bD26c=*BN@Lbq&_*#_ zAg}oS%nA67_md{r`|h;Aa_{FhY(@F4O+@0={9HrX1(h;3oP28Uqm&L4-OdYufuNAQ=<496YI&k(-3#O> zpQJCS@51E^`f=!e>s)&{bv3WGBc<&*fb=AE5=oej3ig9>GGHJ?IDYkNQ{N_rx2_MPP?pS)0zXxW>abJvchukY5kKVv!G_g!i zcKCX1UOae;>EI%^mbKLqG0G9#N8D?(bZb~<(Xc&`>fV;;!3dziDW*!9tqV#5Je5^d z@ESUfjlV{AsC0Ho*9>{iX(n}d3x0Rawb*m3s6Fx3*@NAibzo8Kf3k@!D?FN=5?SS+ z6(R!-T^ucQ;?R9h`Bolj*;q#&Ct2z>Dr9=5)Tf{#bp8Xx_T9Eo>TrCedJNPcDsOKA%GiX{B{D6>*fH?i~qOdB@hp<8^%sWZ+<{yu(#o>wxr6suPUhj;`! zO--AUv;2%`E^Om7zmZ*Zg9`I8g49gLM+|S-%N|bU9G$xHOuhb{2ak1ax6RD#6Sz3z zofhlbEDB}bVa;t3Gqr7+7jI6NmzKwrS|gSwAmqVqaWzHD+&Nsb)HtT|NPdPv=V0kP ztg=BWQaxja+LA8!aQmUcWhu@3_(8Jtga5Q=Hdf6IH1AaJY8+;9@kJARIl!hVG_pJc z4WEx!8!Z{Y`H-9#+C29G zZddGbvi>jIj%HUv0r}J-3J|;n z@4asaq?Oc82Zi~{C~5-oogx{JbgTA&kXk+T+@B3#+s&>RcH;`+rnA5-jSJw^3jfOr@U; ze$9g|prkoRFuUDn=uT|XylLWIA9C^zoIgwZRb+>;;Xb%IID_}Xrd%oXVNT;uD%i#L zj*Qh|F_7O`^A?p5HI~8d*}6}iL|0U{&Zw1+1s$&7FxF%ucR#v6Qxn$6xvLHqPb-IWq zVbrHZidCVgPwDIc`DdZ2N zj<@9oZ~|zFqMC$RSv0oilG~q>egsgHe#S!QP|sXTk|~h?st88y%w9lSXQ~Z)>-G^{ z8CS>krH1~Z5JJ&{gSo`=C%uMXW;e$K-IqH2ivrdK1l)-xX@Ym6wk|pT5fD`VMA#G@j#TOWIw_f25qo(H$7K{_h;M{jWap z)g5}xc!9tDqERJ;d43>BNdJG|f{z3YunYfJuK#z7!~T^qw15|CiXohU)>@0v=Y7`z z8mtIHu7Uhs81NT5nH9@TbCikpuLEuxeEaWqCR)Pk-jcN-MQ}?=if^fe)6U9u7Yz{b z=$vrYQ3mG9SVa&B#g!|qwKAJVp7zFh0r|jDUZE&ewV#1spiVu*7Du4@!TXB6&uck# z0Fu4(O?u|$fsu!+6u(}k(P<=8bhZZ4bI@REZc#!E!}151(_+_wM>o3kl$bBX0LC<{ z)kVfQ`Hu(1f`KEt@ySI~j++riPKVtbU@tO>aod5>Y(95Gf}T z8%7zSxqf}eY2ZhUhW547rq;^k?OC$n#ix}!G&EgMl@`;?A6n16k9$2c;W~Y6x(Ra4 z7U`0kt4hz~a(n7akX8&)w;0qj<=6m+1aIFf9-Po$Y55^4j@+)!;_BCcW!BeI>SB}x zxhdUi_|wkyaAcr%i8D$R4LJYZzJk5B@FSGs>gixIkMsEj+Z@KUoCj}*{JEQapH`DC z`)xQ>=2Xm!6xor_hITISs_XZTb>34qUA12@y3&9r(0@ZIMFn8CWxgDO!nvq$(idZZ z_|%15KI19=uC3ePQc}KKnpJEql5+Y(by1_N>O*l@NHtD+J%-+kuScpto%J%-!cZx3 z(ufZ9hj(R#@S1A`t-q6$ie)&93rHuaO`CK%i`M3eJd;7YWGHpNj54E1u0@wx+=sxb zhQYqCxQg(y5L))8{kC_`n0j>3sTOoD2g>_~)Td*+Fb9@uP!U3p|1-;~2b{CR$7gTkp$+*l)F z-Y%Ocw_Z1UG@evs+}V%M<;Wm;{7BQPI6H*o6GfIP=Z*rbbFn%YCSa5r@~3Fo(9#@G z#&3o?b9qzCR|81z5-`LUHEK)VZqPGm1bSYd_a-wN`wrj6lU#@1m|u@;(>gvrm28)p z8}ia0p@u%FkwZ34n(e3zlelWU_57)>Wz{7pyP&9cnfw~$toFQ=W1RsVHdM{J#wUj% z_N6NVp^f&$y|QS)lwf@160Df%IzO?0-u5m9EN5b23I+5T{U z)6t-vk^kI^EOq;wTB0BBVt{|SM$aV!chA;T7dJm8mhqLRB4!P5#KYye+`ZL*T;1p$ zUa1;FslUspF~%hwch}aGFLt^`qu}x;oZU%s_ZdcKPr=2Kf7$n8_ONGmOKSMue2V0X zX;N)}2ii7@tSm9kjKn>Mz~wIrXD6!KJ7_`AS_#0(Cf~{_v}y!X|Mm($pgH5OVo7HMxEy ztEhpn-2H#(*|-nsfwZE*sNvm+)zK?XA=~=a%h|b4L=xRiEboC3^BuGd{=8c3&?l(4 zI&s2gcUF71^*b!=ZUO-FFJi~N0Iv`vd7KqZrQ^>PBggsT5`|wD2Kl?&{TA~Xs!^hM{^E+$G8AyNCV|gZ3ygbF6 zCT?_0u!N*5wu6>I(i61@1P-t8lMzrx2{jz=sdEt%Cz6D-y{iZBh&*uF!(@fZ?{P7a z9_@$85^noKnaO5cGt%mBbx_G2_y7^o^-#A5e?Tu1)O9pTyuA`Xy z*C?loHOSuTovLHMrY0V`ogMd;RVa1%dpf>LxrAVQ1*d7S|8_g@6$q$o`1D7z{pU}I zj^P(tpP-J;)wcNh>xYndlK{}A${9bl7f1t!SQCI|a9Jh?gg%8~@)Xh5j3&{DLWAS) zTN-Kgqc0N7|=$=3?FmA&ZKK`R{uuG0om%s4X+usGtlTswZ0*YiJIbxf<|YRkQ)7WRH_fuqc-PTFt1_S?X{zbVk_+8~j<(0h$+YlO#dMxI zH8V#@!x&V*(52ze_HyX1EN5__YYO{sHLV7h%&H9Dj(@FbZ1H$>X*m8A_G{*ZLORbv zW98+(44!_q5=ThO`u@wLUkSn@v7dd5*a=hl>HleeOGFLy%1?@^MdH$p;^1XX;xF$K z{cDR$M2V_0o0HrSi?3dj|Kt->rAj@gpyAU$>T^SwuY-6vD0H@MCCf#IgTFFhccX5M(ApSbj1RfhBbE6k^gkU{Dpu!ybB9YGIMXK9muw1!`7vLUCgw!yE1Lh z3K>47A|s#5_+?fI!nbJT#t22}?PN;HLtf8`jFn2~_+Ou(i zT@(#iwwPzpYuoLGj%F=Hq9m;v%|y5E)v^XUEp?>(VYNYv#oq)7L5>7equKvQy>6zfTNFsi6D z(5E7l)HwLqL(qqz5t z<1x5jzVUkpLW!gBA1BxTX6$X1)9M#B){|0}IV16b4P&8PAIE=;wcl z1^R+zM~8;SFo>KANaTrU=EhNGlvIvZjXP)x#iyVti!eD8-k1(B1QKq;-i^Bi5$F4> z4}8w|>Str2jh!LSp#4F#d~d=2E-36DOTX_MSb=jH;}zjE}#y8tEiK@tTjgzHA*$n{CyIKZ`2z*xRt{}ZH*D?z=)8jR{*75VSN#3swxMv(k1u zq*xJoQ|=^Z@Ue|`$`M|Ny3j3lQiQE3^nNOc=Hp2U>{n|nPdPPtS{jQ9bynP_i54p$ z&D9h=Za4Q0U<&KLNppp1 zQvi?H78eurBP`C6bFZYODcmJkV=9_MruBeYV>)%#!W*er(dG(Qp){-FSS3s~W{hG=CdL!m2T*%VdbWdAnGwSaXHjstn8napyoQ>ZIR?Nt7iMZKb`7 zVk4Tr=BM>L^~MsuIgi8}xmbzK6$k+#xaX~@ww8K20*$gnDBZ!Bi{>5Mm)mt}jPaJ+ zuY$J52z63p%p18_iOm&224RgXXgU$w@SjCl5<=X;7>ni;^1N>UkD6maqyJaCw#I0| z`b$iC6D(FzbH%p44Q}s0isso5EXtC7I@hY4-el3d#Y%3j zqzkDzxmAk>pbT=970DgkRBVajep=gWNfWO*g`ah?xsos6$Y1!11)yx13PxEG-9eo? z@%oziVkI|MH21`K#9!Kcf;)$wi?Y_>4(im2!`G}RR&sO2a!-(>PX;jnWs4FQWl31o z9n`54XRldNtb)xI%RNDkJ{iOSl!1@3Bt&orqklU$ifHcpu@L=hZuQQUrC+O@dbO)2 zd((GcP!y|RbH#E`2u7b`ha?7|tnufgEV-j=GJuW*fU;O|%@xZ%L2DOP-QCFY*MN1qJA0F()v&?rl$ zWo+HS{&a#<%bs>}D0-1Tbz_Y;Y#w4JMukc<#t! z*s=!$P=;kumV_9)gN9G(lk~SxVfH08nB0rk19ouq;}>l$pcjA3s#*5~Uzj|4jdqxo zx%6um`AQzY#Zv#%IOLYS$GvA-We=f_p|W12PDa1@Oy)|`N4N|(dLW~cv>NU&Nv~=( z(L~49T#487`rdiRh7Q{OIeiLt&;fSPkYRcCo2lS8a{{mJV&hdpQI~=hA*p9@$ zSSgw-Dfa|r^vS>lpzIdQqAUrqbq6VRo(A|(?5<0*{=)g8D;0NO@&cT? zYk(I|*8RXU?OmgIVkSpDW5%|#XFZ+W!ld6@lnK*)M;kg@mMV(h7pJ_NgXxN&;b!-GAGhFQq5W72^w$9d(r!!wG}Zik z58&ZFn9c`yaT0Ef;CIUa&cjfMxoIo5VCuNX43OJM8itH4a2x}uHNZoxgj%1#dEA2D zYnQ2$1>11NAL@Y(Q^zva4CDBq@yqDCNvU%c>{Uz9eHaSxybT$lt{qI}mAau?q>i~dCnsli;q866 zK6Nzp@cOmrKzsY4ba?ub{3HJ<`Ff=zC&#}Vrk~+zc8OBQHu&;(BhxzfPhsjb&EhA$ zMSkI$hhILgrYza^56rZDm`wpFJ1J2I|8a~(N1d+s_=oFFUVPAQDz;h|0p4VSp$fkt zbKYaypbiU;)aGe!J1)<7T@a91;9>&;3@GvZ6mw_FdUMIMJLjRa0dDAps@+F`&2h-YP(V3hzqqEXmn6sjze$%6K>w~dVW7b)`7&{lD zGp(<8_RmPmHYz&SL7!AepXkKs>>kDoc{@6PR#*4KK3R$7%J!b*QlE?4bnOl5_B zbF)7@0iqcf7F>_ERB9Yt%Sd*%$4zCrJV=;$vab~s0ef2nP=A<;1o zx?NL#=m-6NRE$o!LP^bz&UpS`qJab6*&{oJILnpoJ;|*;89{(DQk7*-VTI1nqC=Bu zHKi}TR<$8DXGMn!DK)L1Q@?MX(%{IY$8O@IvF+NSs1b_fd-kmF!Q+MJ6BJ9W(7IMio2~hHZRz*QS4VX2mxj{%-1X^;x?P`jwg!q< zjt(vJL08k(LD!@6bZzfRHC2lam1Y|{;@H zIlL!H)TdP{+ya!(bG|AIL=soIa(GXYsZYi&KpB6P1tN&6Tsgfb$XVTOP$p1if#{Yir}ree`ebAR)TB977O1rDx#VVt5SD=ZY$O7d*=c=+fo%ec zu0E6z%D7y8GBN>bl3d2HHY43aqmrx7S~II)xIlfz5T}{90iXPp3Q*9rIK3zNsZT~O zKtYqDh+VuT=#vaNzjh9qlGm<9bI{M;!EgZp000000000000000000000000000000 b5Gnox_=)_sH+>FH00000NkvXXu0mjfEJ&

+ + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Too few + Too many + Acceptable amount + Ideal + + Start with 14full-contentpeerings + + + + + + + + + + + + + + + + + Ideal + + Select peers to prune toget to the ideal number + + + + + + + + + + + + + + + + + + Ideal + + Pruning complete + + + + Too few + Too many + Acceptable amount + + + + Too few + Too many + Acceptable amount + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/concepts/publish-subscribe/message_delivered_to_all.png b/content/concepts/publish-subscribe/message_delivered_to_all.png new file mode 100644 index 0000000000000000000000000000000000000000..9898c7a809b3a6e3d1fef0280985deaad0118aab GIT binary patch literal 4798 zcmXY#c{J4D|Hl^9(#e~9 z(*)Ad(b3c9oLo#Y;02syo!m-n{yMZ)lqdFIry0oVs%vg4uv{5zFHGqKa8Df zPU|T0E2)X9pXyuauOF{Q)UB*-k9QMj2Zzn6?HfCkJdeW4@S0-(lIE1Q+L(p{@1nok zl$||l;fvy}J?b8n4xk5?S2r7yTg%>7uKwNGr_ynMdX|VAWg(Sg!2DR}+(gg(3Tdk! zGq$?EQ}qEe&@kSa-;4RwINC8=;8{G@HCK(OpPO98e#aHPL=U%2)<)Ntysj9>&)0lx zSXx{Miuy_GyQ}2wlAsEpcwlL1qbj0yg}jCP-A$Mw9UL5vbsTRg54TNEbQ1{E zB*F~2BD`iCPr#Q9mWNg^lQx@E+e!k<%R{Rs`xo1Obv1r%ZTN!itsbdMXu{?7O!g7F z^7{trCwj_g2bZP>7O_8Yu7aSaReYlDrGJrzT<<13v7z4@L+#Fb4}>dq9crGe2(8NZC~88rHX+-ZQ`#}{ zO%?B|%fqTi+h=+!hTAjo#r~ybZz}5&n+v^*XGfQE^Ps2ojK@ZV1?>+{s(K=VOrc~7zF_lIY@3f{sV;oWb*#i2N5;eAiRyVwxC z$lr+K#X`+eOw2WyEgZfoB=&wqM(C!y;1jGS02DZf#lt;-_^>WENq*&0zh@WUt2**N zmzRvS>IMEjXA3l}agxo5v+4l;MsOYRl@;#X!JdTgmFwQL$iW*yW$oZ{ClU;FEE`U9 zZ>Nqu`1*k@OTR_tJX972|HIU0D7_Ko>w!?8@$u=uvHoVp!?0*q2e5~`osszZs@Qc^ z7qj)upeIHeGt3K)M1|jA%FXU~h6dXw#;XrKBSj&{04tGSsEDvSw^it*LE`mWf5_He z*nIe~uEPLtJkpwb#;}YO-dVV-2f*Q;;!xGyFpdi=cY~Sx3LpNDIxO80lKA#H2wW~% zAK@^vwpzFg1z>PNiSKfYMxS;hpX)5!UcGqZk$=HeSPiOL6{`89{F1LE*Npc7{TZIt z+dtH$RZKqTI1(hDog#QW9m#ZPNMAsVo&w{6U?J4AxaKKs#OMWZEATn&hh0ppKpx(S!NN3d138ljHwt>(T^O$xcdX_O=ffs z>aIvzu4$wLm>YZsY;`mFr@F`7WjRGQbR=qu4R?jvg0d!ICIJh82n)w27#Z@kN=Xiv zOSg+*3*qPHB+gOF40)4ctY)%Be7M4IXSlOwYNm%7$ELoF(dO89?N0b$7o=savWR>) z+6ssizS)e)wASat2B|Cx{3D`#y^zFVzx!Nn)1U2G=dB^?y;?)I#0S_EMnYIs8=!X} zclB=DM@cmpo*{Y1#vZOduKzKnGlB!5g*v5$4V1+&OX}@*=zp}CA@|)qcncY^-ngDxoZHp@NDK;u?Wdpw zg>zBGxp`u;Ac-aIU_5|1H5y|zc*PSW!LK;*0T!nxyUL@&%gv4&^J;kk`wJT@0~vuKKecFSn04YraW`V2=fxkACnl2n#?t zsyIGCzDFM5vu-l(h@ByRI^nc^O&wlJ<)06pHSkGu*-=iKbPf_vwv23CwG5r)%0Q)U z7WRR^_B#iO{exSUp*CF1o@NB2GzSp6Z|9C|&bhF~9HwfqHc>7oS`<9an-aP(C|-QX zCw39*407s(LJVTF)nT{%*z&bb)f5({{`PW_2>0_DPkR8sgQh7+J)P*2$LB3de}=gs8u zkkyCF-)}H!)j1N`y=jBp8K0Uj$$y*KR&1pFc)DBn_@ddjr?ia4m*1)X{XtE~!ubmb zcQ{0dS8-!f@?Lp|ZJQqLYCjHEZwt>>%9{pg9@6B0s8N%q%-p9-*P?S~@zK#U2SmQf zdcownlSLY@|D&Qm-3x?Yo&vZp>pwt!u+pdf0Wu#eCzKjIpMOM;B@`cGsh2K5jxmlw zL6pC-S~J0{vrXH!sG5U;O9RKN?^~k(+r2zX&RSU^hKLaoGPjwR`h`r`x!vy7(DJ8u z2aOio6Tems)x(ws37>RY0sTE=V`B_cz|lMzE4bhN^*arW37MbaJ+5Z4H~TwYeKEwA zx`I`4)F{EivL9!-h{HIgAEu6()IqyJfl*J_uEU#ky~hCJb$QemFOszC;r#S~W%1fX z^s%pSW|rJS9w0MBSXei&6WRXDty@9aI`~o&`?|_PE6`xg%XRDlYSDf zIVE8*1$&gYOP#h)D^6lIKcNkYbQId@`r)QzWb$p6i=x6)^qB_R{oQKLoO(KkJGHGf z(oqBL*sQSALh_$*V{xvK^8TIdZazI|Y z)A{K7Dr-iHPBRP3b()uvb_z*V1_h^w?DaS_n49z*abZ#co;LHO1iUWvNXKs$Xo{jdf2A78edvu`1xr@!LI=O-z(7fn=l{?Y1C~udqH0}Xud-3Q z{BPc888l5^I|4MOjIFbpX~lVqrDD3%Q^wJ(N_$r$N}rhYq&+_)ewLu8$*#zF?*4Kf zb!L-*?ysKwj8p?RMcsy=Q77#WYVwdZYT=la=ThdZu>xdS%^GQM zNY?|RRSHo2b!GEm{C~>xV{o|p*ef-mGE@Y|(5-CHfGAdH(=z_&S@3A!NlKk2Fe$#( z$T!7^K**74^lKgWBdR(9r3x-p8PBDwETWHJW;$}(S#gDD$uAqVMc{)&k6l*MG$1Wg zr+G{{VRkZEPIeWd{7Tz|$A!c{{PBs`;J#;dXu2H3rWPU^P4bIjW^Y%Q9A2t>KVn}F z$OK6|bO@GUjn-FEe!F8YLP(*5*43X^FCR&&+}<*%cRjHQs)p-j)|Z-LmEh+tNQA{^ zSl_96Scqg)Ixy5X{POGa&}5{fIs$p(MFC2;PgU%DwRK~$FQbsN!y31_aW4LREZhU! z%#XybWVe{}K#lKmyqW}yKVx>qLb1Ns&{Dqla`w~a7c#iqG)#ts!Lx&fPC~Fw?9H?2 zwt)v{5YO_+~@%Cvx7gV7ry2KT;`a>F*E`fbSzHx3%u{83jhs@9tT? zYpmeYfiW;#)PGaq^o}p-#EaQ&NShd|MTE_O@>-teDrAbxA|f-NPILmaIh1cmJ_sIk z^6EaL!G{g&=|P4IxT7ZPM6wvOIn>m2^hEX#Vs0UDa5!K+_h&1&r`Eb0VW2Imp(Q!~ zVoOIhL$WPW;M%%2{KndS|3Rn6-!iT{VBc*+<}Y0h!1AcUFbHY58gqic^^cTWG##j{ zs+MFeVc|Gr65#?@TVz92clV`~>`(>AE?qsQ5cG|eAP4%FFMha$Pl&VfZ^x}4Lb(R; z!24ir8?Ovc@SyF9Er;qs*{sn?3&G^94DARf)`a)RBj)RD98 zvJRk@rb!v1)1cICGLnzsXG3ybL-hRHqo^SfNc%@z=y;T=IsRCNvF9avt52MZHdY5N zGj4XJmVgavc-01$M_6?jD@{5y3_+%gDseB4My3TxAP(mLMh&HoEq;x%oVj;W`uDXm z6xTC>z|fEA)#0xz(HG0VUH48KCf0hjsRYvsRMDF+qCn=YDpEe5pI!+rS}n?>yuZWU zYKjwCjHz7@_ZS%*VBUL|A9k6M zDNU1j^^cq9vpr?^BvoU$>|7OK~wYSxPuf++0q{AYeHT65?Ynzw@+D?|qy~ zjQTih=zPM$`*FU_X$ulKo|4Y$)!L22p8jp>7Vs(kv|H<69Moj_l*LFon^UW6$E=gY zn;NIvxy_F^(;a?^fpcol`u>+^#VK;kb6}d{az{A(VkgFrq=xLRqeE zpHzD0zI4w&m;5--lo + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Message + + + diff --git a/content/concepts/publish-subscribe/metadata_only_network.png b/content/concepts/publish-subscribe/metadata_only_network.png new file mode 100644 index 0000000000000000000000000000000000000000..15601542efbedfc3bc68eb1c24581e9546a57878 GIT binary patch literal 30510 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

InrL7Fx!L40v*0_mPo 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 + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Metadata-only peering + + Each peering is a networkconnection between two peers + + + + Metadata-only network + + + diff --git a/content/concepts/publish-subscribe/network_packet_structure.png b/content/concepts/publish-subscribe/network_packet_structure.png new file mode 100644 index 0000000000000000000000000000000000000000..eb6e6e1f3c8c6c1692b268c356f959457f46f8f8 GIT binary patch literal 21519 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 + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Recipient (Topic ID) + + Topic 1 + Sender + + Seq no. + 4 + + Peer D + Sender + + Seq no. + 3 + + Peer D + Sender + + Peer A + Recipients (Topic ID’s) + + Topic 1 + + Topic 3 + Message body + + The heaviest domestic cat on record is 21.297 kilograms. + Sender public key + Sender signature + Seq no. + + 5 + + + Application messages + + + + + I have seen these messages + + (IHAVE) + (IWANT) + + + + Please send me these messages + + + For this topic… + + + Subscription changes + + + For this topic… + + + Grafting and pruning + + + + Topic 1 + You have been… + + Pruned + + Grafted + + + + + Topic 6 + + Topic 7 + + Topic 4 + + Topic 6 + + Topic 7 + + + 133 + + 179 + + 70 + + 43 + + 69 + + 11 + + 130 + + 124 + + 170 + + + + + + 111 + + 138 + + 217 + + 17 + + 106 + + 181 + + 66 + + 98 + + 59 + + + + + + Topic 2 + + Topic 4 + + 10 + + Peer E + + Topic 5 + + 6 + + Peer F + + 14 + + Peer C + + + 1 + + Peer B + + Network packet + Application message + + Application message + + + + + + + + + + + + + + + + + + + + + Pruned + + Grafted + + + + + Pruned + + Grafted + + + + I want to… + + Unsub + + Subscribe + + + + + Unsub + + Subscribe + + + + + Unsub + + Subscribe + + + + + diff --git a/content/concepts/publish-subscribe/request_gossiped_message.png b/content/concepts/publish-subscribe/request_gossiped_message.png new file mode 100644 index 0000000000000000000000000000000000000000..26fcd66b139f033af81aedaddb82c8fa3356760a GIT binary patch literal 25607 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 + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + I have seen: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Please send: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Peer receives amessage from theirfull-message peers + Peer waits until heartbeatand selects randommetadata-only peers + Newly received messageis gossiped to metadata-onlypeers + Peer notices that it doesnot have the gossipedmessage and requests it + Requested messageis transferred + Newly receivedmessage is broadcastto full-content peers + + diff --git a/content/concepts/publish-subscribe/state.png b/content/concepts/publish-subscribe/state.png new file mode 100644 index 0000000000000000000000000000000000000000..6cdb6b6acee9ac304efddf3bf44ec9dc0cffbff8 GIT binary patch literal 18209 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 TTT-)s00000NkvXXu0mjfE^d^Y literal 0 HcmV?d00001 diff --git a/content/concepts/publish-subscribe/state.svg b/content/concepts/publish-subscribe/state.svg new file mode 100644 index 00000000..3580af03 --- /dev/null +++ b/content/concepts/publish-subscribe/state.svg @@ -0,0 +1,2137 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + Peer state + + + Topics I subscribe to + + + + + Topics I recently sent a message to + + + + + Peers currently connected to + + + + + Recently seen messages + + + Topic ID + + Topic 1 + + Topic 4 + + Topic 5 + + + + Topic ID + + Topic 6 + + Topic 7 + + + + + Time of last sent message + (but don’t subscribed to) + 10 seconds ago + 35 seconds ago + Peer ID + + Peer D + Topics they subscribe to + + Type of peering + Topic 1 + + Topic 4 + + + + Peer E + + Topic 5 + + Topic 6 + + + + Peer F + + Topic 7 + + + + Peer B + + + Metadata + Full + + + Topic 1 + + + Peer C + + + Topic 1 + + Sender (Peer ID) + + Peer D + + Seq no. + 2 + Time first seen + + 1 second ago + Full message + + + + + Last 2 minutes + + Last few seconds + + Peer E + + 5 + + 2 seconds ago + + + Peer F + + 10 + + 5 seconds ago + + + Peer E + + 4 + + 10 seconds ago + + + Peer D + + 1 + + 26 seconds ago + + Peer E + + 3 + + 31 seconds ago + + Peer E + + 2 + + 45 seconds ago + + Peer C + + 4 + + 90 seconds ago + + + + + + + + + + + + + + + + Fan-out + + + Metadata + Full + + + + + + Fan-out + + + Metadata + Full + + + + + + Fan-out + + + Metadata + Full + + + + + + Fan-out + + + Metadata + Full + + + + + + Fan-out + + + Metadata + Full + + + + + + Fan-out + + + Metadata + Full + + + + + + Fan-out + + + diff --git a/content/concepts/publish-subscribe/subscribe_graft.png b/content/concepts/publish-subscribe/subscribe_graft.png new file mode 100644 index 0000000000000000000000000000000000000000..82851e71aef47224889516f498da9546b1136978 GIT binary patch literal 7925 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 literal 0 HcmV?d00001 diff --git a/content/concepts/publish-subscribe/subscribe_graft.svg b/content/concepts/publish-subscribe/subscribe_graft.svg new file mode 100644 index 00000000..9294cb14 --- /dev/null +++ b/content/concepts/publish-subscribe/subscribe_graft.svg @@ -0,0 +1,313 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + I am subscribed to: + + + + + Topic 3 + + Also, I’m grafting ourconnection into afull-message peering. + + Topic 3 + + I am subscribed to: + + + + + Topic 3 + + + + + + + + Topic 3 + + Full-message peering + + diff --git a/content/concepts/publish-subscribe/subscribed_peers.png b/content/concepts/publish-subscribe/subscribed_peers.png new file mode 100644 index 0000000000000000000000000000000000000000..cc2a9bac44ae396181fa80e5a71f3077a8f4200c GIT binary patch literal 4426 zcmV-Q5w-4#P)+tpd z{{H;^{eOax^Y;0EfsdP?v;Y79BqmYc-hTo@bviZ^7j1w{`UC#`}_Rl*`{{LraclrAK=jZC~^7r!g`RVEFPfua?`TOE z;oslm{{R2{{QO#4YvJMKjE$LHUT*#U{rUO%v9h{HNLqn`j?B!_i;I`r+u!Q%^v}@L z($dyTOkR(Wo0*!VqN1$2y1_(5S9*Ji_4W3AeTwYt?)Ufj@bvd}c!%cd@0XjWjgXy` zm7wzS^K5K;($m*SNn5+S!utCAg@uvo>g>eC%D=$IsHwW}@bbOA#7|IS$jHuDSZVtD z`rO^%ot>xq{QctM<>>A5a&v*l$IR>N?d|RFXlQuC!pYRs*!%nY%F58Rw7j^vz*}5w ziHer)^Y`-d_1oU%-r?xv zvE}9Het(SC*4jNjQnj|d*x1~bmZ7DluT4&1bajJ+gpg@!dAGN|uCKT8@$^AMX!!d3 zqo%RJ#m%Uzw#CWO#l_35t+t?{syRANK|)p8+TE|Ryr!nOiH(?%gUPl401lo>L_t(| z+U(u=UlV5@2k>WT>KEJWBp4D_(h>~`r(AN%l%u<15d{yl+_h*g<0`22z&fpnc;Z?Q z?5f?fyW2h0YQ1-tJz87$wSUykghL1+d6En~&oj^S{XqpY@+7ibBONkO;qdvI~oI zQIxV4Dgx%Wf@Bu_b;f_p1eYP84T3y)th|@|Yzz=Hq0y=6M}S zar)RSR+L~>Df}S0Y^ zJ2AY?$)6A48Ql-U%%u)6N zb0WFCPGq8TI?RWpR3Wp~J4vQOlF~Af39H;|9whlj1~O@#SIvRsvXmneSD^`zDyxvm zD^+G3snUwfU!F>qk&=oLAC<-|l59cTl!Z+sf0`X}R26;(k!&8sSEWj zLMq5WNGMT_q*@W5W%V{A%Hjpz)

%9*rlS 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 QZU6uP07*qoM6N<$f?qP=!2kdN literal 0 HcmV?d00001 diff --git a/content/concepts/publish-subscribe/subscribed_peers.svg b/content/concepts/publish-subscribe/subscribed_peers.svg new file mode 100644 index 00000000..82006243 --- /dev/null +++ b/content/concepts/publish-subscribe/subscribed_peers.svg @@ -0,0 +1,748 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Peer + + Topic + + + + + + + + + + + + + + Peers subscribedto topic + + + + + diff --git a/content/concepts/publish-subscribe/subscription_list_change.png b/content/concepts/publish-subscribe/subscription_list_change.png new file mode 100644 index 0000000000000000000000000000000000000000..676c6d998765e4d93bcbaca443734c7ddc800d87 GIT binary patch literal 2888 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 + + + + + image/svg+xml + + + + + + + + + + + + + + + I am subscribed to: + + + + + Topic 5 + Topic 2 + Topic 3 + + + + I am unsubscribed from: + + diff --git a/content/concepts/publish-subscribe/subscription_list_first_connect.png b/content/concepts/publish-subscribe/subscription_list_first_connect.png new file mode 100644 index 0000000000000000000000000000000000000000..1c19242c156c2c4e27b9fb098a9608fca62f6f1b GIT binary patch literal 2599 zcmV+?3fT3DP)o@MWY(yW98R9P9A)s%fm-+uz5_(?dg6Vq|rOhm(hhlxb^w>hJX5#J+6`uqIw^!VD|<>cw^#K_Q6RA$fA+{whDicWOR3i=MMqiU=k4I->$keZ*WBV?VR2JbW%Ba% ztFF1l%F=>`lHB0uT3l^MNn6?7#m()z*ZKPVr>MEDu(~`x zQl+S~-QnnXdx?XElfJ^s$jsDxe2bi*s*R7Fb9RMbV{>qEfy~j_!^Y0N!OG3i+M=eh zr>eDabc20>j*XF?{Qds?{r#@o>$QNm@am*NLum2w^ioq~H#kgRU~p$>cXfD&)!X5h zo2OV>Ye-65frF8Yjhcy!n6tORh>MtKX?dNXtGmC+mzt)ToT+1FcGcP7-Qww|thUV1 z*ZTYYW5nOnz1d{M->9j&C@D}yM_PAzhiYwnX>5F)o~e_SqB%NFSzBy?f{=uUl#!I6 z{r&#Ay~dQ3pKo!1m6)WqfVlALqww?h`1xeT%TOy{4+PeSeLyw7%~0_NuC~t=#M2;pFVS*RI{{t*y0lbAj^q z`RC{9rlz=dc7)Z{*~-h%1(Ava000LnNkl6gKi^e-Dc;$8E?(%v* zKje}x$K~GlJl}gh9QSA|%jQ8UZ#E(soNd0EN5Q#(*Cf{%U`taIT*qAdU=6iXh4MnmE z@@o9BZTkF#KNFDYuMg+QzV z)&S5FkHQE5+dO)l` z<)DfHk(VAM9D=$Xq}FZVbO++19YLfAAy#ZmguI@y2T7QFLurAQ^=eh_+723s^l-q{ zA`jSdD7uqqk)|mwOTg!5bJ0XV5ih#l*pG1|8WVwhC-P3N^ME!J6WWzU*3K~cS8GBEW7^_gY(!Slv zi}Indd5s0%K-_5{?k}R_CX*f{9ocz_sfEL008iwHgQ8NLhsGK7P}ho6 zp*KaordDVX@G$}jS@P=F_y@9+2J$HdWW70hbI^wbQ5PVPFcF_Y=%?Q~6cE`gXIPdT zWSW`=tGvYs#C3B7gq!gd1m;xe2gHh(9J*wWOO9R{1*XM;Q&uDp$u3@JJ?}%p$0jJ1 zU#XQFgkw>}gjYvhOD=s8@N^ci*CKPo7)+y^D|WvaWKlEZJht)J#&ZGE zUtT&%%vYavDfEBOAYJ#fb;0IXnX?rGb<(vhk8OfS696 zflQ=}sg0MMbPx>42sYm1=49Tv-{HH~2sS>#!l&6)0LjkaYCN1S;q~cv7b6>gARWXZ ziqUcekI{g*i!vbYVrJvdth}jK$wmtjX?Tk=yp1o=j6T=>IPzMo+jur_V7|+tjc4_i z@>=e!Z*UizATzn+V0GHX0KnscM_LXzw5+zrL#01KT)4o1? z`#KV&&K~JAp|%KR@AvE$bl0Nn{rrm;1)S^#-1{fL{`CQ={CD0Y-XFFn&!1VMf!-)a ztB3!5QiR8BEG$9G&{r#d&|R&l{ayQzO$=@dsXQ8Z3^2fIa|CmCRc|J%?ZF)f)UpYp z<&Fc`yt2V%Ar)5tSLbIeAY2wwVHJeSLMmfiTLBkR!G%=D2m}{W!G%;<2Em0?sO#ZE zDi{QV2mk~ZQsEg0E~LUY5L`$_I9+RmTeoo`6@#6AaUm6cTNFG4lb0ZP1||j>CCK2p zr4w{odTvm_AcGUA8f0eU>(P(5@C@V}4dend8$VZ}P}K7bWGM|~DI*&X0X*zl6X;@O zHlEcvu}1Sy z9}eeWviq1N<9YCv$yp + + + + + image/svg+xml + + + + + + + + + + + + + + + I am subscribed to: + + + + + + + + + Topic 1 + Topic 2 + Topic 3 + + + + + I am subscribed to: + Topic 1 + Topic 5 + + + + diff --git a/content/concepts/publish-subscribe/subscriptions_local_view.png b/content/concepts/publish-subscribe/subscriptions_local_view.png new file mode 100644 index 0000000000000000000000000000000000000000..8df865db1eeba87b2cb307da34299330c17e71e4 GIT binary patch literal 29006 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 + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Topic 1 + Topic 5 + Topic 3 + Topic 4 + Topic 2 + + + Viewing from this peer’s perspective + Directly-connected peer + + Topic + + + + + + + + + + Peers keep track ofothers’ subscriptionseven if not subscribedto the same topicsas them + + + + diff --git a/content/concepts/publish-subscribe/types_of_peering.png b/content/concepts/publish-subscribe/types_of_peering.png new file mode 100644 index 0000000000000000000000000000000000000000..f977d04f3b47d93ec521fa78a9da1640184aaff6 GIT binary patch literal 34406 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

k$A=mDA0w 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

WJUf6z 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 P00000NkvXXu0mjfxZ~jv literal 0 HcmV?d00001 diff --git a/content/concepts/publish-subscribe/types_of_peering.svg b/content/concepts/publish-subscribe/types_of_peering.svg new file mode 100644 index 00000000..29b70976 --- /dev/null +++ b/content/concepts/publish-subscribe/types_of_peering.svg @@ -0,0 +1,2319 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Full-message peering + + Metadata-only peering + + + Peer + + Topic + + diff --git a/content/concepts/publish-subscribe/unsubscribe_prune.png b/content/concepts/publish-subscribe/unsubscribe_prune.png new file mode 100644 index 0000000000000000000000000000000000000000..cdd147df11a5eaa737fcc44311723ddcd7f848e2 GIT binary patch literal 8772 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 b4K-o6dUzd`KheM6Az0Gi6vQh<4gCKX$ + + + + + image/svg+xml + + + + + + + + + + + + + + + + Topic 3 + + + + + + + Topic 3 + + Full-message peering + + + I am unsubscribed from: + + + + + Topic 3 + + Also, I’m pruning ourconnection back to ametadata-only peering. + + I am unsubscribed from: + + + + + Topic 3 + + Metadata-only peering + + diff --git a/static/images/style_guide_1.svg b/static/images/style_guide_1.svg new file mode 100644 index 00000000..83690a58 --- /dev/null +++ b/static/images/style_guide_1.svg @@ -0,0 +1,1774 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Overview TutorialsExamples Reference + Specifications &Planning + At the core of libp2p is a set of specifications, which togetherform the definition for what libp2p is in the abstract and whatmakes a “correct” libp2p implementation. + Today, implementations of libp2p exist in several languages,with varying degrees of completeness. + Work Sans Medium40 px / 1.1#14152d + Work Sans Medium32 px / 1.1#14152d + IBM Plex Sans Normal16 px / 1.75#37384 + + 45 px + + 28 px + + + + + + + + Main palette + + + + Shading + Inverted background + Hyperlink + Light shading + + + + + Reserve palette + + 7.7.7.7:6542 + IBM Plex Mono Normal15 px / 1.15#5e5e5e + /p2p/QmYyQSo1c1Ym7orWxLYvCrM2EmxFTANf8wXmmE7DWj/ip4/7.7.7.7/tcp/4242/p2p/QmYyQSo1c1Ym7orWxLYvC + + 7.7.7.7:6542 + + 7.7.7.7:6542 + + diff --git a/static/images/style_guide_2.svg b/static/images/style_guide_2.svg new file mode 100644 index 00000000..c8624f6a --- /dev/null +++ b/static/images/style_guide_2.svg @@ -0,0 +1,518 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + Diagram elements + Label textLabel textLabel text + IBM Plex Sans12 px / 1.25#37384 + Label + + 0.6 px line thickness5 px offset from text anchor + + + Arrows + + + Peer with arrow spacing + + Topic + + Message + + + + + + + Progression arrow + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +