From 92a9c26b9763216c654cbcf62cf2e94c3c3c155c Mon Sep 17 00:00:00 2001 From: Aswin Suryanarayanan Date: Tue, 14 Feb 2023 16:53:17 -0500 Subject: [PATCH 01/10] Enhancements for Submariner to work with OVN Interconnect Signed-off-by: Aswin Suryanarayanan --- submariner/OVN-Interconnect.md | 129 ++++++++++++++++++++++++ submariner/images/submariner-ovn-ic.png | Bin 0 -> 92165 bytes 2 files changed, 129 insertions(+) create mode 100644 submariner/OVN-Interconnect.md create mode 100644 submariner/images/submariner-ovn-ic.png diff --git a/submariner/OVN-Interconnect.md b/submariner/OVN-Interconnect.md new file mode 100644 index 00000000..1fdb419f --- /dev/null +++ b/submariner/OVN-Interconnect.md @@ -0,0 +1,129 @@ +# Submariner Enhancement for OVN Interconnect + + + +## Summary + +OVN CNI is moving to a new network topology powered by OVN Interconnect Feature. This allows independent +OVN deployments to be interconnected by OVN-managed GENEVE tunnels. Submariner does not work with these changes +out of the box and this proposal explains the changes required to support it. + +## Proposal + +With OVN Interconnect we can have two types of deployment + +### Single Zone(Global Zone) + +A single-zone deployment will have only one OVN database and a set of master nodes programming it. This is similar to the topology that we +use now. But it will have a Zone(global) assigned to it and will have a transit switch created for it. Though the transit switch is not +involved in any packet forwarding in this topology. Though this setup is expected to work by default, the subnet that the transit switch +used overlaps with the subnet Submariner uses for the logical router. So we need to agree upon a non-overlapping subnet for Submariner. + +### Multiple Zone + +In a multiple-zone setup, we will have an OVN database and a set of master nodes for each zone. Transit switches connect between these +nodes. The OVN-Kubernetes services ensure that the necessary routes are added for pod and service reachability across nodes in different +zones. + +With the current architecture, Submariner adds routes only in the zone in which it is deployed. For example, if Submariner is deployed in +zone 1 it programs OVN db in zone 1. So only pods in zone 1 nodes will be able to talk to other clusters. Pods in zone 2 or zone 3 will not +be able to reach remote clusters connected via Submariner. + +In this proposal, we explore two options to make Submariner work with OVN IC. More details about the upgrade and other design details shall +be added once agree on one of them. + +### Option1: Add extra routes in existing Architecture + + This proposal makes minimal changes in the network plugin syncer to get OVN IC working. With this, we add new routes in the OVN cluster +router. + +![UpdatedTopology](./images/submariner-ovn-ic.png) + +These are the changes that will be needed + +1) Network plugin Syncer needs to be Zone aware +2) In the Zone where Submariner Gateway is present an extra route will be added to direct the traffic to remote CIDRS connected via +submariner to the Submariner router. This is for the remote traffic coming from other zones. +3) In all the other zones a route will be added to direct the traffic to remote cluster CIDRS, connected via submariner, to the transit +switch that connects to the gateway node + +#### Node Listener + +A new node listener shall be added in NetworkPluginSyncer. + +* The node listener shall be responsible for reading the node labels/annotations and identifying the zone in which the Submariner gateway is +deployed and the transit switch IP for it. +* When a new node is added or a node joins a zone, the node listener needs to call the NetworkPluginSyncer handler to program the required +rules. It will also remove any existing stale rules. +* When a node leaves no action is needed +* When the gateway nodes join a new zone, leaving the current one, all the switches will need to be reprogrammed as the transit switch IP +can change. + +#### Network Plugin Syncer + +Based on the info retrieved by the Node listener, the network plugin syncer can provision the Submariner infrastructure and program the +rules in the OVN database. + +* If no zone is detected(will be required for backward compatibility) or a global zone is detected the Submariner infrastructure and flows +will remain as it is today. + +* If a zone configuration is detected + +1) In the gateway node zone a new routing rule can be added to forward the traffic destined for Submariner remote CIDRS +to the Submariner router. This is required for the traffic coming from pods in a node that is in a different zone. + +2) In the non-gateway zones a route will be added for the traffic destined for remote cluster CIDR to forward it to the gateway node +transit switch. + +#### Pros of Option1 + +This makes the least changes than option 2 and can be delivered within the time frame we have. + +#### Cons of Option1 + +It depends on OVN labels/annotations for programming the routes, which means a change in these would break Submariner. Also given the plans +to change the OVN -Submariner architecture this has to be reworked in future. + +### Option2: Submariner OVN Re-architecture + +There is an effort to optimize Submariner OVN integration. As a part of this Submariner Router and related ports and join switch shall be +removed. The OVN gateway router needs to be configured not to SNAT the traffic destined to local Cluter CIDR/ Global net CIDRS(This is now +the default behaviour of OVN, we need it to test it though). + +Further, with this optimization Submariner should stop configuring the OVN cluster router with Logical Route policies using OVN APIs +directly. OVN should expose CRD, which Submariner can use to program the OVN cluster router with the required Logical router policy and +routes. If done, the Submariner need not be aware of the OVN infrastructure details like zones and transit switches. An OVN plugin (or a +component in OVN) can consume the CRD and program the routing rules and provision the infrastructure required by Submariner. + +While this is a cleaner and maintainable implementation it will not be possible to deliver it by the next Submariner release. Also, we need +to agree upon the APIs required in OVN and their implementation. + +#### Pros of Option2 + +This will lead to a more maintainable code and fewer moving parts and this is how we plan Submariner-OVN integration will be in future. + +#### Cons of Option2 + +It takes more time to implement this option. Submariner changes need to wait until OVN changes required for Submariner are done. + +## Design Details + +### Backward Compatibility + + + +### Alternatives + +#### Route Advertisement + +Another alternative was explored which could leverage the [route advertisement]( +https://docs.ovn.org/en/latest/tutorials/ovn-interconnection.html#route-advertisement) feature in OVN. The idea was to use this capability +to advertise Submariner routes. But this feature seems to be not available in the OVN Kubernetes IC implementation. + +## External Dependencies + + + +## User Impact + + diff --git a/submariner/images/submariner-ovn-ic.png b/submariner/images/submariner-ovn-ic.png new file mode 100644 index 0000000000000000000000000000000000000000..a70bed6d62f543977a9a12349016a79174e988cf GIT binary patch literal 92165 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≪{=NNWdAi5`Wxz5`}lD3wURW57ttR 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

lMPY6Cn zUIemctK#{ts>5@%MtIZO9Gm>+wn-&6Ov>jm?`XGVzvbF<Gj1aaS z;)ij-m-Jfw`z7)KVhyAq6(4BdZUaKM20Bez)KHD-B=^DQXIy&1g}nnV$xSP~P+Hli zs3-rQv-?dRMq{~_#uU8Y)swR0S7_~_>#x2ZPV+J6KZUR1={5cRWhy}bH>v=aNjX>* zE|}|T3f0Cl+4o>m3GX4P?2RCgyRc{IeG<@`^Q(vGcYZ4g_dF6FmvX!RfS5^NbQD>j z1E4!fjjFjBhf34QO!e-{M*sKt`u~^aGZ~l@x{Rga@{EnzWZ$?N`mTVC9U7v*Mp~Wr zp672WvvBQiKgHJn*WI;#HId$7Mc9L&2aq7BD3BX72vJbEs0Bi!45F3A zk`)DY)#aig+>*%JqUxSBg#~N$|%OZEw6TMh7qge(Iy0uA~}seCZL51 ziu;)XF{c;)egB)NnG?^VB7~6I;KX~>}1uTGW^I{Ok-BM>ZrU=>zDF7Tlo$*>MF8w|N8 zX9;B0lzUrWEaO?YxCn*PwQtUBu|LZ5CEibz4Rr!W0>zt@BthfLN4jxXGE*uwBGmMu zQW{6GQQQ>YpDcV>Iv0ZPJf!(RZqaHi32is%7WFCE-!agEYRZvzLh;InZc{P-9j;zn zj?56o-WFpEVUIPlV=>^Sc+Mb7Lc`z3QwJys)BcCQhg3%%WP(bBz>fs|1TdLrnt3{1 zCG@0L4LG;RF{i6Zvr9>gu@Z9|A(K}=gqI;d7v(CL#`)*&RVjEIf6G6=cl>i*mA+&h z4-v7z84$dj2A&4=%0!t=m`RE((hyogV@kSNCl5(eZr+-F%99pWYvMZqBF8F1(<=we z3n_AK@ru7?a)0UQ%d;v1U6$bzT>EeLJPFiOl#Lu8gTPWGQMH%xD@EwI7j^$G8EM_% zd|>K`w=`L@z(!<3Iy0+Ws30B@5%_n^=lw0aL$}qK=6sm-%MUU>&mZ|J-IbK1PiXtC z2xg`l`NN*dL>mQa*rAL7;om7JZSCT-E*+&RRbBs^t}5r$j>9{?Sv#Q6-0uWJIo%Em zE;KK63F6#(665MH$<<>AKQ_sN=j{w*wXS$j*K_0aGJy?Agp*LAQooaw9(D7nfl$7D z+&j2Jbz*)0sKp~L0;4hMT!Gx7#9{2~nH7h61rJx9>9?VWg&d3qp;{vqgpD)mxVp(mmX z-t$`}xi(S46&^D{Irpp)L2#)UiZa*c%PDmo@w}onX=`n>uQpj9_dSiKRp7 zeiZYdy4<>+*z^EYjFR_ts0|WulZ=RD`7fJ zg(3yEF#NAjJ|cV~@ht`{ImxE$>T`e#iT6kC^3TDnpt%B=t`hoC`*1@kgD&+? zDrQVAxa#KB-?c&8=DSCTn*7EWWMMR1BL?n%yJ9zf4>=h>wfGwoZ+I3v2o>hxsFVrZ zi$~w-o8j5Lzrct_Bd#HHYFhIVv>lr})(l-lFe<#ci<+5&re{J?9kXgE?qS~REM|^9 zcCtFCuBvv?#LF&NKn#aztOlt3IYsOEg z|6q^L&w?G)`)NPo=mW>)WHo><_?l_RC==SUg;pjQp9%-^8(`dQf(PSA86l4!$obL{ zo?v~s{l!BnyMZh4#ACcRU0mUWcd!3#2HAxes*BIM!i%PXf5q1<6B1Jg=H|2l#$Ms- zw;tm?(QKT@ar~}^uSk&@NN+L7VV0+3c-LWLz~&kg0jsZfw%E>}d)*dL95=_2AqeTu zA1r;{=ix`aaK&bOGdZhfJJU6Y{!H6@*#1Mna=$rW6kXr?fBi+GzK+{+yQG Date: Fri, 17 Feb 2023 14:51:33 -0500 Subject: [PATCH 02/10] Add details about new routes and zone configuration in OVN Co-authored-by: Sridhar Gaddam Signed-off-by: Aswin Suryanarayanan --- submariner/OVN-Interconnect.md | 71 ++++++++++++++++++++++++++++------ 1 file changed, 59 insertions(+), 12 deletions(-) diff --git a/submariner/OVN-Interconnect.md b/submariner/OVN-Interconnect.md index 1fdb419f..33959da0 100644 --- a/submariner/OVN-Interconnect.md +++ b/submariner/OVN-Interconnect.md @@ -15,15 +15,32 @@ With OVN Interconnect we can have two types of deployment ### Single Zone(Global Zone) A single-zone deployment will have only one OVN database and a set of master nodes programming it. This is similar to the topology that we -use now. But it will have a Zone(global) assigned to it and will have a transit switch created for it. Though the transit switch is not -involved in any packet forwarding in this topology. Though this setup is expected to work by default, the subnet that the transit switch +use now. But it will have a single `global` zone assigned to it with a transit switch which is not involved in any packet forwarding. Though +this setup is expected to work by default, the subnet that the transit switch used overlaps with the subnet Submariner uses for the logical router. So we need to agree upon a non-overlapping subnet for Submariner. +In this proposal, I changed the Submariner router IP ranges to 244.254.254.0/8 for illustrative purposes. + +```bash + k8s.ovn.org/ovn-node-id: "5" + k8s.ovn.org/ovn-node-transit-switch-port-ips: '["169.254.0.1/16"]' + k8s.ovn.org/ovn-zone: global +``` ### Multiple Zone -In a multiple-zone setup, we will have an OVN database and a set of master nodes for each zone. Transit switches connect between these -nodes. The OVN-Kubernetes services ensure that the necessary routes are added for pod and service reachability across nodes in different -zones. +In a multiple-zone setup, we will have an OVN database and a set of master nodes for each zone. Transit switches connect the zones. +The OVN-Kubernetes services ensure that the necessary routes are added for pod and service reachability across nodes in different zones. + +```bash + k8s.ovn.org/ovn-node-id: "3" + k8s.ovn.org/ovn-node-transit-switch-port-ips: '["169.254.0.3/16"]' + k8s.ovn.org/ovn-zone: global + + k8s.ovn.org/ovn-node-id: "5" + k8s.ovn.org/ovn-node-transit-switch-port-ips: '["169.254.0.5/16"]' + k8s.ovn.org/ovn-zone: az2 + +``` With the current architecture, Submariner adds routes only in the zone in which it is deployed. For example, if Submariner is deployed in zone 1 it programs OVN db in zone 1. So only pods in zone 1 nodes will be able to talk to other clusters. Pods in zone 2 or zone 3 will not @@ -41,10 +58,11 @@ router. These are the changes that will be needed -1) Network plugin Syncer needs to be Zone aware -2) In the Zone where Submariner Gateway is present an extra route will be added to direct the traffic to remote CIDRS connected via -submariner to the Submariner router. This is for the remote traffic coming from other zones. -3) In all the other zones a route will be added to direct the traffic to remote cluster CIDRS, connected via submariner, to the transit +1) Network plugin Syncer needs to be `zone` aware +2) In the `zone` where Submariner Gateway is present an extra route will be added to the `ovn-cluster-router` to direct the traffic to remote +CIDRs connected via submariner via the Submariner router. This is to facilitate inter-cluster connectivity for traffic generated from other +zones of the cluster. +3) In all the other zones a route will be added to direct the traffic to remote cluster CIDRs, connected via submariner, to the transit switch that connects to the gateway node #### Node Listener @@ -69,12 +87,35 @@ will remain as it is today. * If a zone configuration is detected -1) In the gateway node zone a new routing rule can be added to forward the traffic destined for Submariner remote CIDRS -to the Submariner router. This is required for the traffic coming from pods in a node that is in a different zone. +1) In the gateway node zone a new routing rule can be added to forward the traffic destined for Submariner remote CIDRs +to the Submariner router. This is required for the traffic coming from pods in a node that are in a different zone. + +```bash +_uuid : 0459f009-3603-47ac-8ee7-9d958540ed31 +bfd : [] +external_ids : {} +ip_prefix : "242.1.0.0/16" +nexthop : "244.254.254.1" +options : {} +output_port : [] +policy : [] +route_table : "" +``` 2) In the non-gateway zones a route will be added for the traffic destined for remote cluster CIDR to forward it to the gateway node transit switch. +```bash +_uuid : 22db3005-64c5-4e32-aeb0-642423c30742 +action : reroute +external_ids : {} +match : "ip4.dst==242.1.0.0/16" +nexthop : [] +nexthops : ["169.254.0.1"] +options : {"external_ids:{submariner"="true}"} +priority : 20000 +``` + #### Pros of Option1 This makes the least changes than option 2 and can be delivered within the time frame we have. @@ -122,7 +163,13 @@ to advertise Submariner routes. But this feature seems to be not available in th ## External Dependencies - +These OVN changes should be merged for OVN Interconnect support in the CNI + +[Add cluster manager support](https://github.com/ovn-org/ovn-kubernetes/pull/3127) + +[Add zone support](https://github.com/ovn-org/ovn-kubernetes/pull/3169) + +[Multiple zone support](https://github.com/ovn-org/ovn-kubernetes/pull/3366) ## User Impact From d529ecb3fb4859d6193a6d36a0b887211149c74f Mon Sep 17 00:00:00 2001 From: Aswin Suryanarayanan Date: Tue, 21 Mar 2023 21:55:33 -0400 Subject: [PATCH 03/10] Updated the proposal with new design Signed-off-by: Aswin Suryanarayanan --- submariner/OVN-Interconnect.md | 228 ++++++++++++++---------- submariner/images/submariner-ovn-ic.png | Bin 92165 -> 81183 bytes 2 files changed, 137 insertions(+), 91 deletions(-) diff --git a/submariner/OVN-Interconnect.md b/submariner/OVN-Interconnect.md index 33959da0..b8c8aad1 100644 --- a/submariner/OVN-Interconnect.md +++ b/submariner/OVN-Interconnect.md @@ -4,106 +4,162 @@ ## Summary -OVN CNI is moving to a new network topology powered by OVN Interconnect Feature. This allows independent -OVN deployments to be interconnected by OVN-managed GENEVE tunnels. Submariner does not work with these changes -out of the box and this proposal explains the changes required to support it. +OVN CNI is moving to a new network topology powered by OVN Interconnect Feature. This allows independent OVN deployments to be interconnected +by OVN-managed GENEVE tunnels. Submariner does not work with these changes out of the box and this proposal explains the changes required to +support it. ## Proposal With OVN Interconnect we can have two types of deployment -### Single Zone(Global Zone) - -A single-zone deployment will have only one OVN database and a set of master nodes programming it. This is similar to the topology that we -use now. But it will have a single `global` zone assigned to it with a transit switch which is not involved in any packet forwarding. Though -this setup is expected to work by default, the subnet that the transit switch -used overlaps with the subnet Submariner uses for the logical router. So we need to agree upon a non-overlapping subnet for Submariner. -In this proposal, I changed the Submariner router IP ranges to 244.254.254.0/8 for illustrative purposes. +* Single Zone(Global Zone): A single-zone deployment will have only one OVN database and a set of master nodes programming it. This is similar + to the topology that we use now. But it will have a single `global` zone assigned to it with a transit switch which is not involved in any + packet forwarding. Though this setup is expected to work by default, the subnet that the transit switch used overlaps with the subnet + Submariner uses for the logical router. In this proposal, we plan to remove the submariner router and the associated switches and this will + not be a problem anymore. The below indicates node annotations in a single zone OVN setup. ```bash - k8s.ovn.org/ovn-node-id: "5" - k8s.ovn.org/ovn-node-transit-switch-port-ips: '["169.254.0.1/16"]' - k8s.ovn.org/ovn-zone: global + annotations: + k8s.ovn.org/ovn-node-transit-switch-port-ips: '["169.254.0.1/16"]' + k8s.ovn.org/ovn-zone: global + name: cluster1-worker + + annotations: + k8s.ovn.org/ovn-node-transit-switch-port-ips: '["169.254.0.1/16"]' + k8s.ovn.org/ovn-zone: global + name: cluster2-worker ``` -### Multiple Zone - -In a multiple-zone setup, we will have an OVN database and a set of master nodes for each zone. Transit switches connect the zones. -The OVN-Kubernetes services ensure that the necessary routes are added for pod and service reachability across nodes in different zones. +* Multiple Zone: In a multiple-zone setup, we will have an OVN database and a set of master nodes for each zone. Transit switches connect the + zones. The OVN-Kubernetes services ensure that the necessary routes are added for pod and service reachability across nodes in different + zones. ```bash - k8s.ovn.org/ovn-node-id: "3" - k8s.ovn.org/ovn-node-transit-switch-port-ips: '["169.254.0.3/16"]' - k8s.ovn.org/ovn-zone: global - - k8s.ovn.org/ovn-node-id: "5" - k8s.ovn.org/ovn-node-transit-switch-port-ips: '["169.254.0.5/16"]' - k8s.ovn.org/ovn-zone: az2 - + annotations: + k8s.ovn.org/ovn-node-transit-switch-port-ips: '["169.254.0.3/16"]' + k8s.ovn.org/ovn-zone: global + name: cluster1-worker + + annotations: + k8s.ovn.org/ovn-node-transit-switch-port-ips: '["169.254.0.5/16"]' + k8s.ovn.org/ovn-zone: az2 + name: cluster2-worker ``` With the current architecture, Submariner adds routes only in the zone in which it is deployed. For example, if Submariner is deployed in zone 1 it programs OVN db in zone 1. So only pods in zone 1 nodes will be able to talk to other clusters. Pods in zone 2 or zone 3 will not be able to reach remote clusters connected via Submariner. -In this proposal, we explore two options to make Submariner work with OVN IC. More details about the upgrade and other design details shall -be added once agree on one of them. +### Route APIs -### Option1: Add extra routes in existing Architecture +As a part of this proposal, we are planning to add two new CRDs in Submariner - This proposal makes minimal changes in the network plugin syncer to get OVN IC working. With this, we add new routes in the OVN cluster -router. +#### SubmarinerGwRoute -![UpdatedTopology](./images/submariner-ovn-ic.png) +This CR will be created when a remote endpoint is added and there will be one CR per remote cluster. This crd have two fields + +* NextHop - Specifies the next hop to reach the remote cluster. +* RemoteCIDR - Specifies the list of remote CIDRS reachable via this cluster. + +This CR will be used by the gateway pod to program OVN to send the traffic destined to remote clusters to the Submariner tunnel. + +``` go +type SubmarinerGwRouteList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata"` + + Items []SubmarinerGwRoute `json:"items"` + } + +type SubmarinerRoutePolicySpec struct { + //Specifies the next hop to reach the remote CIDRs + NextHop string `json:"nextHop"` + + //Specifies the remote CIDRs available via the next hop + RemoteCidr []string `json:"remoteCidr"` +} +``` + +#### SubmarinerDefaultRoute + +This CR will be created when a remote cluster is connected. When more remote clusters are added the Remote CIDR list will be updated. -These are the changes that will be needed +* NextHop - Specifies the next hop. +* RemoteCIDR - Specifies the list of remote CIDRs reachable via this gateway. -1) Network plugin Syncer needs to be `zone` aware -2) In the `zone` where Submariner Gateway is present an extra route will be added to the `ovn-cluster-router` to direct the traffic to remote -CIDRs connected via submariner via the Submariner router. This is to facilitate inter-cluster connectivity for traffic generated from other -zones of the cluster. -3) In all the other zones a route will be added to direct the traffic to remote cluster CIDRs, connected via submariner, to the transit -switch that connects to the gateway node +This CR will be used by the Routeagent pods to -#### Node Listener +* In non-g/w node - send the traffic to the g/w node , if the current node is in a different zone +* In g/w node - add route to send the traffic from other zones, destined to remote cluster to the submariner tunnel -A new node listener shall be added in NetworkPluginSyncer. +``` go +type SubmarinerDefaultRouteList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata"` -* The node listener shall be responsible for reading the node labels/annotations and identifying the zone in which the Submariner gateway is -deployed and the transit switch IP for it. -* When a new node is added or a node joins a zone, the node listener needs to call the NetworkPluginSyncer handler to program the required -rules. It will also remove any existing stale rules. -* When a node leaves no action is needed -* When the gateway nodes join a new zone, leaving the current one, all the switches will need to be reprogrammed as the transit switch IP -can change. + Items []SubmarinerDefaultRoute `json:"items"` +} -#### Network Plugin Syncer +type SubmarinerRoutePolicySpec struct { + //Specifies the next hop to reach the remote CIDRs + NextHop string `json:"nextHop"` -Based on the info retrieved by the Node listener, the network plugin syncer can provision the Submariner infrastructure and program the -rules in the OVN database. + //Specifies the remote CIDRs available via the next hop + RemoteCidr []string `json:"remoteCidr"` +} +``` + +## Design Details + +In this proposal, the plan is to remove the Submariner router and switches that it add to OVN db. The network-plugin-syncer shall be removed +and can be replaced by controllers in Submariner Gateway and Submariner RouteAgent. Since we have multiple ovn db to program, we need multiple +connections. So it makes it easier to program the OVN datapath from Submariner Gateway and RouteAgent, than using a separate pod. +This new approach will work for both IC enabled and existing deployments. With this change we are planning to use the ovn-k8s-mp0 interface +to reach the host networking stack and then the Submariner tunnel. This interface is used by OVN for host-networking traffic with in a cluster +and will be present in every node. + +![UpdatedTopology](./images/submariner-ovn-ic.png) -* If no zone is detected(will be required for backward compatibility) or a global zone is detected the Submariner infrastructure and flows -will remain as it is today. +### SubmarinerGatewayPod -* If a zone configuration is detected +The Submariner g/w pod will be responsible for creating the SubmarinerGWRoute CR. It will be used only for OVN CNI right now. For every +RemoteEndpointCreated event a SubmarinerGWRouteCR will be created. The nextHop will be the interface IP through which we can reach the cable +driver. In the case of OVN it will be the IP of ovn-k8s-mp0 interface. -1) In the gateway node zone a new routing rule can be added to forward the traffic destined for Submariner remote CIDRs -to the Submariner router. This is required for the traffic coming from pods in a node that are in a different zone. +The SubmarinerDefaultRoute CRD will also be created by Submariner Gateway. It will have the list of remote clusters connected to the gateway. +The nexthop will be the transit switch IP of the G/W node. If the transit switch IP is missing this CRD will not be created, which means it is +a non-IC setup. + +#### SubmarinerGWRouteCR Controller + +This controller will be responsible for programming the OVN cluster router, and it shall be a part of Submariner g/w pod. When a SubmarinerGWRoute +CR is created or modified the controller shall create or update a routing policy in OVN cluster router with a priority of 20000, and it should +redirect any traffic destined to remote CIDR to the ovn-k8s-mp0 interface IP. ```bash _uuid : 0459f009-3603-47ac-8ee7-9d958540ed31 bfd : [] external_ids : {} ip_prefix : "242.1.0.0/16" -nexthop : "244.254.254.1" +nexthop : "10.244.1.2" options : {} output_port : [] policy : [] route_table : "" ``` -2) In the non-gateway zones a route will be added for the traffic destined for remote cluster CIDR to forward it to the gateway node -transit switch. +#### SubmarinerRouteAgentPod + +The Routeagent will have a new controller added to it + +##### SubmarinerDefaultRouteController + +This controller will run in every in route agent. This controller connects to the OVN DB. When a SubmarinerDefaultRoute CR is created + +* non-gateway node : it updates the DB with a router policy with a priority 20000 to send the traffic to the remote cluster via next hop + mentioned, which is the transit switch IP to the g/w node. Before adding the route it checks if a route exists, if so it skips adding the + route again. This is required to prevent duplicate update since there can be more than one node in each zone and hence more than one + Routeagent. ```bash _uuid : 22db3005-64c5-4e32-aeb0-642423c30742 @@ -116,45 +172,34 @@ options : {"external_ids:{submariner"="true}"} priority : 20000 ``` -#### Pros of Option1 +* gateway node/same zone node : In the gateway node route agent adds a route, if it does not exist, to send the traffic coming from other + zones which is destined to remote cluster IP range to the ovn-k8s-mp0 interface IP. It checks if the rule already exists to prevent duplicate + update. -This makes the least changes than option 2 and can be delivered within the time frame we have. - -#### Cons of Option1 - -It depends on OVN labels/annotations for programming the routes, which means a change in these would break Submariner. Also given the plans -to change the OVN -Submariner architecture this has to be reworked in future. - -### Option2: Submariner OVN Re-architecture - -There is an effort to optimize Submariner OVN integration. As a part of this Submariner Router and related ports and join switch shall be -removed. The OVN gateway router needs to be configured not to SNAT the traffic destined to local Cluter CIDR/ Global net CIDRS(This is now -the default behaviour of OVN, we need it to test it though). - -Further, with this optimization Submariner should stop configuring the OVN cluster router with Logical Route policies using OVN APIs -directly. OVN should expose CRD, which Submariner can use to program the OVN cluster router with the required Logical router policy and -routes. If done, the Submariner need not be aware of the OVN infrastructure details like zones and transit switches. An OVN plugin (or a -component in OVN) can consume the CRD and program the routing rules and provision the infrastructure required by Submariner. - -While this is a cleaner and maintainable implementation it will not be possible to deliver it by the next Submariner release. Also, we need -to agree upon the APIs required in OVN and their implementation. - -#### Pros of Option2 - -This will lead to a more maintainable code and fewer moving parts and this is how we plan Submariner-OVN integration will be in future. - -#### Cons of Option2 - -It takes more time to implement this option. Submariner changes need to wait until OVN changes required for Submariner are done. - -## Design Details +```bash +_uuid : d55185d8-3732-45c1-ae90-4a7f8cd191f7 +bfd : [] +external_ids : {} +ip_prefix : "242.1.0.0/16" +nexthop : "10.244.1.2" +options : {} +output_port : [] +policy : [] +route_table : "" +``` ### Backward Compatibility - +With this architecture, we are removing the logical switches and routers that Submariner creates. During migration, we will need to delete +these components and the routes that network-plugin-syncer installed. After that, the new controllers shall install the updated routes. ### Alternatives +#### Adding extra routes + +We explored a proposal for adding an extra routes in the existing architecture. This would mean adding same extra routes as in this proposal +but by maintaining the submariner switches and router. While this should be easier to implement this be maintenance overhead in the future. + #### Route Advertisement Another alternative was explored which could leverage the [route advertisement]( @@ -173,4 +218,5 @@ These OVN changes should be merged for OVN Interconnect support in the CNI ## User Impact - +The user should be able to use Submariner in OVN enabled setups as well the non-IC ones. The pods that the user see when a Submariner is deployed +will change and similar change can be expected in diagnose command outputs. diff --git a/submariner/images/submariner-ovn-ic.png b/submariner/images/submariner-ovn-ic.png index a70bed6d62f543977a9a12349016a79174e988cf..2fd8420afbeacfab72f10ecb3c1e3b248acb9678 100644 GIT binary patch literal 81183 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 literal 92165 zcmc$`Wn7fo_da~oBa)(oG^m6$LpKOWcS|=&OE;*Lba#miUD7a=fHV?Aw{%Gl((vCH z=X`(l`8@BQH@q0;-h1DBuXU|!U2E+LQjinJKqW-|>#x5sBqd%b{q@%!iNF53)q#uz zK9OrJ)cotOH-AaK5K?i~{hoF=5vTL)$o6mH*Df`Y&nKQE@5sF#|F*O9h~oL+;}9el zH2R$#(#I{rp|xv0*WTlErSjW929^0Mcv*RQdE3(G4^z$R3kpr@a|<^eC9hYQ{2mA+ zKl%UTPvnD@f=rb7y%!=&^b3*!9h$8%7-408x%h~;R zDuH~P&TwGJd<|K&J2&=qZJ{cUoeU{`LzQQ+E1SvT%XTh z`=QD??aUAag#6kXEM)!2EATNYZtB^9&(*MQv)QlxisbsJTBxQID#b;+sPZ}(Dd^|- zBcDgnsus{)UmZ95qsrkjXd)`T2Yzp{-IwO8qtZ{;$JbXG3N88JB)s`=7b@ zYnm?^zVG^6*Mosv=G+2}B7e<|f&-BV@I%!s3nBSE;YYW_Rh_GgL;1{i%03tS_x>6E zwo&BIcN*F}-)&BquCe7soUUa|!~Nc+^SM2JCYKs1FL*gZbCqJ-qYH8AgUJ-gv^ z`D5DF`dlcL{cD1rx4HBZCN86P;=i*uU;fa-M;DUOtg%VM?@mK3hA>GTZH}&lFg1P3 zj-Vsqb(ZM}C$S8Pkc0@3@Hj@|>AJSqT~SKKDy$-Hne`=RE^^q;(d+qKR&D#p#?i)w z5_2nsZe_!L_FC>$vjt&4i$6Qs;+2UP9I3X}3Kx3%^N1)EK0nTclf{gc=oHF4FH|e0 z;N#QIw_ECZ8gF!8?04h&imY2%TvaEEzM=5&iVU*LoML+4 z=!tU~`R_I8qr*#^uV|Ugzb3O690+>+uo9o?B=ad+OlC9x*t*^{R;bS828NH*c>n&r z!oJJyT-?D*Z|}wFVYc~jjuKSjVG@s1!S{(Wk)C*l!oI+yM?Ch+?=6DdwyVaWU{3oV z-!*Ur^*{eLdOMa;hsS)pBrTZN?EpGbtfh{MOG~jmU6XJRlXRm0^6K*3qCOaxj;B3> zkXWj6NVCc!jvNEF^Q6Rb zyrkM;PnAvLm-+wwAXMlK7zQO(v2LTL>XlZt6^+AMf80V_pmZFqs>;l}yJ#xO0T@ID zkJ2BKi%C>jjH)D59Ig%Y#?h&(z?QpXdTZ^LDCp^B{0~=ppBZ(8MzNX0CHhmjM+M|E z1d6MB(|BtTJF{8@(Ks|pd0sNT$$z3Ke*=p;NU0;kK^qemD4mKP`c(cBKEG^z!$ z+cQJf_dDC%HnwDBQ#fR^CqEhZ66*P{xF2nDXXk5F}A4`Uhd4)Rj`EBl4eUM zI49D3T{rbWf{1-z{PYxw4<`$OWUbz38_$9yU(ql}OM~NIsas1|?ya+5QCdabBI9?b z7!bT}V8ILv=d~Tz?kKqjK`C z#g`Vn!ViM}GL6S+q}<#ho?hc)ILff`?AS<89GxnkOzf3U63cOw_ochr#YtJ)V~ybt zqA2^XxJ7Ds58b~pA$sUa^Ncpm!^61#`1@bCef=0snY-B}Ae<19b(VX|cYOVh@EElf zwv=;ZXt?c{Un6%Q1>D_2!XSjgld*|Egpjm;P2p5GSkhJ*Z+H=e#T|Y=X_k@igue?` zrnEg(HOlfM&`G1**p6ovm`hs!<>$9|Xi54K*h$yI%T(6|j^{jf^Vt$ZTluJ9I~v1y zOuE`>L@=z6qsZoJMK3c=zqGkh7PVa!O@C4AU^n;&#zbSNWMQ8Zzfe@*u3jF`s~hxP z1(et^H6o%n#RApv@c*ua>GQ*y8MJE^oWkl|_diZODwcd{7Ct{&=a7q)H;G{U z$A17sA010m!4Muu=ADOr%hZE)3F1Js2*DE*?cW*of+3wr>{`J1G+FBlN-ml2a2ukS;&CYa*wtf1{Ie#~+Z4+%lb zF?!q@t4WqlW|cT@)d zjizszCDsYW@8;@y9jX5NFrW7Y*Y{qgW*l0s(T}2N|Ni6iV*{nzv|J{M6#oM7NU2_P z?^=crV>&8pk7}`|s_e0KSZC#U;v5l~5x>WeB5U5lJ=sinwsh~ta4w161QP4~Xo0Hq zSFz*01(8k|1`$V|c|+N?WDHe4X5Hqw-yR7Cl=bS_5kG}jWB&X1$Vc0h>KkIA_?f14 ztZg^=Efq(be?5?VzqKagQ^t?&>FKdk=?>;s|HNV%C1~xt;HGEqG(K~Bhkk|H&Nqd- zdh$K8qm+(UA&dB$#G0FIqcu<3Ix-JjQE`LWgljR910bx$G=T2{ClD@Gw$zF>vzv-z z1%14$d@d()_KGPz*O2EK+(B3v;SAr~CYOgV_*SjD6W>t|F(OcQ8qZS{A;DG-+Bzo` z^ls2RUQMx`0_!SmI6(c!c&J0AT=6xH4dG=*oy273>>M!yUT0imxO8eVNu-r$G8qCo z#ho=_2rn4`uwHy)Go1h=RQa09{Khhmw#Ew~q0(~=Zlm@Ij5;drp1a5kAWqU$KzE6X zvs2qT1F`NUFfU3#71YS=M{AnxmI9zMNlHBlOtxC%pA1B*2DZja z3t#8RBtc&deXMrGAY@b6_{8MLYT8F_U|?Y3Hk>0HO(BVOWS~W#bv_f%prvwl>kbmv zkGGGQtd#5QO)B@OeW7HXdhUqzhxHS`y^$J%w9(>wZ!upkm1_Yaft)pZcLDIjJV?i_ zC+NOeww4wrdkgn{jl%+I-g3V~(X6x29)N|cTBD&%tsE_EW+e7eb zNILac(CPmNza#CohSc8f2jIUZ2Cd=`j$WZ)PfvK5|QV)`|imPE7gL4PuPAr7sI1cT8<%&AXO zIU$9g!RBk5Vy&8Zr>(Jko4~uMIFZ)V)sx{Xn09|y@2xL+et|8qt_4e-5p->XfCz~b z_aS#+7`SyuQ(EwMJl&X1X2HM$fQnCLy!WleA{D#U6b&04S<`RO3v-nk=4FV)XXSuc zSFFN-^#C^hHU55#;A4_-lbk}`Mwo>nOW#L}y7HV(D3%0fTj1UeS9^)4nTaqu6#*1s z1)t(K%WhBOb!pYV&xectzAOpxeRBBWIN*^c`ubLbq8QjD`lz<}5Bg98$MCiU`j{o^ zowtY<(nWstM zqkxdfet)wd?ePcdc&B#GRKeflKJFWg`;Tv_#9QP_lpO6k4 zlW+6xHY`;}pkPzwxjL$|F6oB?j9YsZ)>0GkAj0;+lVa5yg1rSf*9MG;!?!Vg?uHomO)B7h-z5#(U z6dgB}_T{I?{}oM4-)Fs34kO}R{b#f9qGQ1l6JRCK00qt=|I>ya8v(tOgMND z?ThY#SM!Lsqshvan$dom_V`n6h->&pFhswn{oH-0dv@W>?^tD4?Zh zMv8Ynwj>L7S@k9h$T?^N+`_u?*~U#e5%P$^K3D_>xITBgPMv*w8K#VQ30a$-#l)v4 z|MexBE|>D>e6GFNab3nsbX4(I!NDa85N#2$TP)+uXNugL7I-4lYn>yR%2n2vAvkZ& zFMt)|Gz)X8utsb7)NnMW74D^fW}C>Sz5$V~O}anqlfmZ(FC$fUuCW;HdDy`j9eID= zi)Cq#ArH`Io*z*F)sJSMUB0}EwDXy05C5H7f?)VcF-Q{f7ew?Vv7jvJ44-b%fQw2l zbzK2a?${QMGDCk010l`C?921xpAd3GT#K2PTAnd)73<3kBpr80&6i96fN z`j%QBZ>%9LOiRBM1T6OSn=j^wJqYVo8+(nEth2yhMpy(WEK54?ncpN~;USpai&~Or zO?%gmz4sT}dmvQu>DpegYJ%~C#@c#>f80s5+_<~s^YRxcV7^jtsAQbvnRKiWeE9R< z3nFE+^)BiQ0GMg+ytT1I2K-FYy56Ys{&aO`I7tl1AoA77@F^;ho_GTckn3#M^U}%# zY|7#iz^E$zn!!$+Do-j=D+r;H(Uj5!D-i-`5(HdDXqcGlo$c2_2#Cb0z-#Z5JgXNk z{5A~(F;_M__Y?kQ%=R1bY={U}%zZ$5I*>B`J11nSO4iMjIjm_xwxwFkbOr-hAO&(W zg@u}8R{wp$AS_Cy9FyL7hVZ42(nNh|;b?6iZSSd;XloP;I;@7Gn)SxZI%NzGs}`tq z)98#9X;A7ld0M#5)Y?VUsWVog$M`MT%s1&|2X2V)^*xZmxstDNLb=9Z2UUep@25 zQEc7YjW2MIs#6S95cHqgw636U;R4l-*N#;aQes zt!4x1stXj7(bU5MC4LZ@oqoD%mL1Ih3|T0}Pt$v>y59v)zH>EfV$wk_Idp}Kr=r}u-7{W;eqjGB!> zVdES+wW37L{wVUmP%^sHdW-i~72eYIv}0S&*zU7@gTTy3px1)S_l>5nfeWO~TFfa)g9?;|K!x zUqEPI25h_|@YN8~E>OvjJ!Kg-Fy&{}0qHNv#^5_YN3IN+Bo=NG>~|=wb_S7swd|H- zc{}g$ef=hnAcrI{(#`2J5g?!}{U@rT2j{lFz{nDhP^+lXSlVy=!0oWg)!u^qq?obK zBCy2eWx&3Wre_GUDGGz^i9(^bw#?WEGQ458EZm-CB%RAaDZg%tqKyZ(0Yi=V4Jvt( zHX@OVWzOt|OfWk|kDpueRTBw#))KP%Po5*TFR1^6U>9jrpmkg+w9x#60LUGW4T>J% zruL+8GW`ps;belO0Xx!s2b>PBeP&Qz=i*FxYlFeyl=4v(f=Z+B1qmDPw;7REB^^E3P6~7d*>bq zFDuLAKTdfExiE4%r$xdv5x>L{-4C$ezsh@ zCDN%+T2$m2!$MDh+^dD9_}921o%9O@0pTxOM=?mM{Vef$j8Vqf96w`~Sifqf)b1P< zkUp^%@nBeh1w5r+I16yrYQ;d`F83oMoH9q@RrTqm~WbQ2Up2mvN-}g z{GKk9C95*T-VfC#dvurl3B{WWpfQF(C{)(F9yfZEp#V)${o=U!8e_coA#JV6Uck*~ zx0VI3Pv!ldWD1M_JVm~CYR=Z9n?WwO^sd1^5JMmL!m?42B>DMV>5!v@`r3+58vid#7rZ(l|F45L0r~W&Z;|c~%M1G7yguUB240=-{@kCRX1z!Q z)H|J8-Ef5#2JrPo0`jF$2<=Rsqj=#>nh;LR{Sm~iI;-iszA)!)+G5SB^7g<_zgGT* zbKVns=Ob~Mc}FNgwf$@ya8Z+K4uMLSU0w5$yeJ^piQBLC(E!ki0g~c0-2Wp`8ic`H zcpCEgJq*}`h!uhiSu%;mM7!YiLaX6-DUdE1PBS*KoAlr~*?_oEQ;eqSCH?ahM1Gxu zw)xOU(dvU)l`_M26^*lt!+~BPPgzeRX@Zb(BLWMRn+-4miX07GtT3UHtGUi$Z3-Uv z;pfRVooyDr2imHp=O_R@D3G&gms0sXs;#{|H-HQY&sTotr27CpI-N=d?Do&I?{NmZ z{Q6<c9YoKCY&KQ$h%{nC4j|D!u<<=8xfwK=R;sb zb9s8r-UX?pI`!4~=jFwMK-8rN0vSj>setZQSu8&3vjL~9@;p5-(SSMT)9W>9JBxjpN<<+#5-4@u67V&5Na50P=V+ z<1irE^6u`+&TPHhmcHlS!9G(w3xUoI5L|ujd!kA}fg+koPk;af9d|qP9NA>HeEOH4 zKAUIU)F7UU26Jt*0?xH5TF5>N3^K0BP63d#QI3g-CdMzo*MVIo#v$WBvaPaP5_8*c z$5XwY2Pzm(F>6X))G5$d#Qpcxx~;5Rwa8c*LeWF9;iVcCVpUJSW(ewGJ(DX+9{B3G zHjts7M6p=YE`0XWSq$jV2{4`0aPU-)kMHywO0yJ8H!W5Yf{s zP@yq#-780c^X`Ehtq+OB9VX&;%LJB_t#|_d5Vs)A-E6-iRW*O3aFdct9Pf9M74nDz zqZoB>a21`5U_5~6=DDn|>5nF{nk@qyiNAdpbz;mv`NsauNCiCc-|q9wts^#uqk;4v z_b{_QrHOQQK2)doWPd4bafqY@Xc-o~#(wYVw5p4w>dgj7b1Q*RqrR_RqOEAq_aYFY z>0h)lsC^BWW&++TYqe&8ij)uZtLhU4-2VjRAj$Q!a8e@3^YtGkrQ(>FM&s~eEzW5e z2$8fRz9lZmoYqq+*`hT(mONG=t`!$#oHnVbOd921Xh{0h1JDUnyo3bf^KT@U_-Cn1 zp|MQ@BgP{MKiwFdKi=D%*YbCbd}WYjcM@sD^e~fTXVy(~OGU7G$1=5uTf6oK;m}-G z)_&z&xqOIekMB^6GYryh21u3FImCpJf?vSzmy45!0v8Xl|56ND%~i^lDnKV?HuSUR zX9M+-DsPZsR6FGn>Cg5hv8qn6Nw_YU%bF2>1dvk*fo)~lyd5KNOchV?LeL9Y#(48p zvSfz;<-le=#WsDWa8rKUM+d3vXE$0;htCr-Fqd5$Ewch3Ds65@kzzh+`|@L5J`{qE zl{|dpXv)f;eDttCmL>+Z9ve2faSplbs{%wKEzi77fuH+|`76)`$pHmYWrfz=etk;@ z=wou(Ez&YxB#Ud9&fcRk`i!Q8 zplE^KKdbY*0goWFP;|Q6w#IxzAURM$Qq2^;JGxw4%IP0b^@Jq3;mFA};60V2-@eyf zdciF(E)vaP5E~YifMiy+-G+0<)%JK}Ka=)n#7Q@dC0cOjUX*in3sNJl z?9!KsYMN8I5%>rieXhNyc|uuRd18-|Ic;WM`ZMRhV^8BA!iH@<31x0ibW&rQFD~D? zqjRm$lq;JuRu*96B)licpgG{nNbKHQkgu@SVqHRoEX#cm&6a%Da>y?asryG z3J{%cg9;RUI7#Pw*GjjWsaSsVeg^@1&dB)I zyHg=OgNC=l^ZKmbfU;UprGSi-XAvUGg&y66>7a!49nF9(jXZQ0@~t>NsoyF}xT9dV zE!I2|aiTB^;^7}Y(;v9C@}4nv6wq}QozX#2IlWReCMm^dZ-ltLFKWq2SCNXJ12BwB z;j}H_s<3RT`W^s^rG<<8#pHg>b+=(_S>bO`68juiRhC>8gCQL(3tEARlaE#<1Z&KM zZUCND4C&EZ8G4?ir2xK%bAKD800}DZRt!WCNON&FiZTS&ZLq1}FrP?;V~#LNM(R!; z^Q`wnuM_e`3g4w)I7fe_0Y3)FfYLd>B=V~S$kz^`0(S8ct(f1(PBEt*%e0`KV_{*T z0QcUK=l%iKu-(!MbqBibboJLV+ln=0(~b(#;qTQEMk#iQ7q?82=eb_EczL4!or4n4 zRfL(yAU|XdlGo~M=2+ty)*JE?1HeN3Td|zuRFhXdVdX~9;G)s&{X5)4QYwXN3~>aD z#W7Cv5T%oYDsLH2bE0$K{j!cFSu6pbdk%hfqKO9g^w!5}YEX6dAQfT%9jIZ0SXl{c zJCzP=a-GhJ6t~FSJN={+{qL`EQ`vmlA*z@%;Kiq~X0$hwQh^kOL5FCm4x zt=Q=nKI>(wBZxQy<{3|@Z&r#;-WL2kN7O(3clZVX+xC;^{xlsBGAVCgy5;|2sGwA6 z|BIq6rQduZLmTEub6aQRe^S_=M+d5T??2Z*{vZ5w3^1Xe@Y$asNcMJv|DW-hX{W)t z2;Z&wi3k1Z{6shOcnApJzn1p}gpyx0{O9sgd7Nk$K>!i{v;5%y!mqjA4vhad3Qw@Y z_lKeq3wmq+ABzWo`!h>;f0G#fanRr7GzoAvF=B4}7yt9wKuofnoAiL&ab4kmoBZd( ziMd`sZjDsP%mM&9_>)_|2jnW?XKDZ#5ZRyQ{TF%;XynhMasRpV0NTG_Bi$#aR#~T( zjHWQ0;R*go-4mwky5K*5C5*#vF?JGoL#B(-30Nk)hjDOG-FNENyia>s-_3X*aDp!f zyPNuz%QAh(f|P$-uP@(Qr_gZi8!^rn%?X!}di_jRRnuzoi-(kSY!3fuw|O~Y+3^_z zFE_bTZjrlQJg<395tsESeV_oFlWDaGUEC_)=%hq35AS%+=>4xTqid;Et26f)tA1Q~ za%z64>>s(Sj7Flls}y22^?In_buYb|G? zi31qvSrYtS)q6$U{2m<@d4gH4HgUuQ_RAI40&A|TU-=#@MV;P0K*`SYBxfNjTc#5u z^}P@qcq5Ff)gr8jBdVB5A8YMyknpA~i9C=wxSLpmR+cn{{3||pN>&%DPUUKsY3TP= ziPBe7p;4ych+r#3$GZ95$uwp--E9>R1Lp2OPRr^x+FZe zh`%t8MT|-7g+<#$r{4TYC!{=F@pGY~fm644P&{cKV*Q{XD!_q?{nG%{ejC6QtGJ?$ z142rz=xbCq)_Oj(yG8io82(1wD-TNEM>!Ile|bY*z=BX7ZLDqNBeoXn4TAgW>sY0B z`l7Fh4#ue4o2GTFG-D8JoSHE>Cb4|1k}(+MtaN_DaBDh;@g4@VYG+X;odR?NGh->=lJ_DKQEq(Y7Mdm=XR_?~E92b^zeD_gICGX7e3F8gyHLG*F7VRAS;(nH{B6rv#5}BxT68=a=ZLa;R2x(@XDGzCjiMvx*9jEz zo^m#y5rG2|b0kXF>k}|dB{-Rqt2@dN zOQ(iV#Pzhdj<$4j{~TfVI$>J>XG6!_6H4AIkI>1Gh%c(~A7^mi7* z;l~J{n`I(mYqwYfzS~?X)}3PG;v9ohKSps3Ud2wbj9s$J7J*K!!i*ZztOQJ8gq8f4 z7Y8+Rmp7UJ=m2hP&EbG!od8SJ3PYggnuijvb{PUsrZzRgiJ=MZ24?PD&&T#6IcZQ< z9HIFz0zS~*h`45^8eR?qek@&S+C4AUozLEF15BjSG7Cr6G8&Ug(pL7MMpD>2%j|h( zaItxZHw>F z-2vW>>%a;=c9|=P^cnw;uhiVvV>3jQmo=80QqD2UFm{>_Mi<2aLm8^>v6cQ=bQjXZ z-uIXRfT0_X~l6yFU?>24-RWG^tIC(iq@j%>CX(sv4L}5(VQaA88 z5c>NBcUQZt6L>! zd?vH?5IabUV><3HD3qb^i!x&! zt>X|+uOw^-+lmS`4{tDMM-62TE~bHp2{{6*B;BdvCxvE+^c{4tZH&vZ%A8dl4}!Pi z{v;-O?d4$@JCg{-ht1S+N}knHNDF-P|38lH3$PfKRz6N~MO=Q)oA(OV0*)5W&n^nQ zARAtyzS_w80+#einv+_-3eKu?sC4$jCOad76R8Kg4XUSX3;d1g(lT}?37RWLv&l(Z zI7T54o4Gsoe}L4xVdB#%i)B?8p0(h@=CCN;)9M?LB2A+?7e!H$B^}u66EAu zmAuy5KKKf$W0h{Irmf?UDxq@Nledh%vf?73)T^Hn<*$cH!s};F4S#Q>A>GRxu%eCi z{}thNQ^>ax|IVN?dd)o7bsktXWur~a431XP_n#=>a_DuG%4}gSN|DJ{?G|Ki*Rk( zjt}Z1hDPBCMyENVENTZF1+bN4{H&rwgimL+Ya?wm-^rex!a(1cR!NX|qa)Zq2LSKg z^rzF*8n9Uaz#vxcYQ<gs^5ddE{W|h33bpu)Ru$f8O=tg!LoBs;8 zjRV|0Ie+!uQ5lOCejTw6)g#~i3Lietn&-T1I-8|#uV(K~V00mkkPfy9;GO?JhNN2W zi_#sc0K20VmY$qdYrzi4L@=5%GzERPlIkyb#6}w8dOQuWwbl<@=8Hu<;yiDDt(IA; zsgkO_sW4l6=C83JiRfKM)p?s{O{T*G6G;q3$5@^c30Vq+t zgcpwfM(6P;2$NqxnB1zHX&+qcJ$r9JJRQ=OK<)U(vWOJn4_5Y?sA)V3J2U437Fae_&sR-P)8 zew?X&_T9yNG(VvscG;xrIyPUachALa@<&$TgqBIR=cs12t52b3n%L&Wk*m-8`VkXU z&DS)VTG8;RIaeY{>I^+2Z>(x-Oi$O7IV$yZ`5vwq50rr2DIIk{t4_y1!J7M9rMy$A z!HqZ z+!G_tCYAkq`T1(=rTnq)0yNT`yEW||w9EW-E~GK}hwAQecmi9k6}!|c@1-4_AA%?&K>dm*B{W~{n(sP<2qUk-a?_)eFG$gAWpioJDm-= zv@&s)qY0q2pzBQBY%`sq`j$n4E0>$hrmDSDt%ri}TBK*h+!*0O*7fnIKKpDsY_!VN zXWu=k(X*oMuP4@12m;kwvBn&W^O8$3iN%CyuFy!DL)~M1HckJfp2yqGu6pS{3;y`K z*m0kn4t{W&<}k4)*f@SkY3^n83Y@OqS8+pYq8;ErPGy+GCTaTd5*3Gbk&81=vG;zp zBZ{KpxbKTaJqH|i^7vVRD_<@Q!ySzfBgE|`qg@V0#y~_EhuCIni=C|$C|MIyqyWmY zHlAMnsE$PfcI%TxTM{L_!Saqt|5J?U1Q3|mlbuf`&%CYS1HJy9%rY=;c=r6g`LEGv zS?Ib9Em=asDWO^b+Y5k0warDzLB`X=MblhL8N%|9N-0GJgJtf@D2)Vg(0;tOx zeay@$YJnPY;(ZnGhs_4_8md7O$!tk%ulB>IkdRPtf5>?SNFCtNP>QS;vDo)$PcuJB zOrxzLl1RTOFg@ z2wo}9{g_W!*`scp7Nd%d#Q{T~IY>M(qoCc!asKicst%?H7w)co|i|3f+ksCjY zNz}s_(?Tv4WIM(@*KElY-Ei&e89NMt8SfXD^Vp^gc3)b)%ber;TN19Bd`sf3WTb3Ux`R>p#6`SZR6IM_= zu_z%F;AY$7_9X6L^M)v!@C!iWDwqNA=h2T_D~n)JdMjS$@L*bI5kTWu%zBM!E=-@0 z%RcSafdqzXvAs|oN-nVdy`m08`U8O^s-SK!6-`~p0%`-_POr-u!)RRsZkwruR zTX}pR7vFDac6)R@B;N#|LgiqsbS@vZ{ABjzxXq+Ln8Bh>wKKhk-hf-LWn4v_P$h4U zUPs7!{(G9uf!y(}9~bBQ3SnYP*)SfD4$(!#%bLpxcH9nc{rJZf(MU@HhlFg-$rg4ZeASco z>(MOquSCmtuvvE5HB)=kN*0VG`#fe_?Mn?HWjZb6!L;NdZ0kIM*7}k96U4{vQ=V0! zTkoustGAz);(7Es-^VfOv50)!fGpHN=j%8BYL=>a|#=z!^eyWng;5;@uFhl`qMbnW0L(69)wEef8uQsHbjn{a3OZBW8)3C8HneSiD}&xhymh?kYD~Sev*@#pXj7 z?RHk{gmZ*iS;Fytn3`8v=|*VuauhCoTxoA0Wop>_h#=zDpb{m3%HCt*xhx$#ImRn= zvLx@%d!5qnHBwf_5FS)(x(&;ZFS3ubl%i~-PV?Cdf$hBStVSE(uHMEwhItJLg&Xni z97Pqv%f=r#@%MS~zp`5X@EimmLKeC9CC`U~vk(akE$2w%Ze^}{%eGHXbjGj9DUDXG zsvSO1D?bwm2SuBbeXWjK9zNbfb#X#ye}IrM&zHtjw)~!uJ*<1haW5m*khk_*Z%seN z(6nRD!8%3uu6fzK^hNf_>O(JWD5fsbLUwDqL&ikEB;En^X+VB!Q#CQnN-JZ~Z|e%r z5Q_<@Q=i;;2z*O*HW8@#yhg^H;w52GG{cWu@F}IERFa5?A2&98H=GrRCC=)peoolQ zC~oENbd1EpZB?n^t5{5DS2wNNp1A9)n!FiCC)rCHMrn5SU1>e+cDdEORd*tLqtYl6 zE^$DfPP2qBGzG2RF>5i!dESwMKg||CFv%#7u59&H>04;@RSM$Ejo{?Q<>o6+MYGB* z8HLn6NwH9~oqFlV_-;o$^D!u8)EU?H6d1leoOeGdN8q!GsrJavovIb@@>{*r^jV%- zD-ed~A3wm2u(6pyLdq8nBrSl4mRP>3BH;CUYc=5_7xqkecGneU4Q1cD7x<7YQoj1`C?v1#FG^Xx}IjTC`Tb}V44qSmk$33857Tg$ndu&qPODw zuuh+E4{R>LdnTdPtid~d`s~Gm=7oRa-x1sguNtC4)W}0Xs+hRbr)U-S(67h7k=oZU z*s&&Rd*m?KPRRP4Bc@I(H*bFGb3VUHyT?`du}bYV)J6%mnG((5@<`l--)q&e=dr9N zk5abzSoT|lPfZGfbX-I1D+zUB1fxO+@+MntSR164Ljtz{nqhW%qDtTq{MaPHTVTh8 zQ!1U1O1>}JCUPb@`&C%9d* zi4(iP-L>X+$U|3$5VgCB5x0zTqzc%~vjYrFBOevhAChi(?*j^9c<(Q&?%yFuIc4=lc%b;wNf-Y=aA;s}WE z#XU>CGe_F?_@?NhvdN1erjVU-R@)eKdaV{K)OsD@n5TclhK?04>+AS^Y`h0L%1Zm< z#Ah#u;F=5$j&>{2twc2o{9js(fP&t(3?C{Q@V1SG)&ugSmeh6Wvcx>H-^Ze!N?{AY zl)EFd)pS+HGLs4y%b`zhie^MSiQnk85izFSx=kRYB&JEQ3xKWK@lW|e%v2or* z-K;8fbAyIHK!`#>EbQA!tQ~kjo4o}%lC{2{w0e>04LNd}F^qiB!3s?`Cl`cd5PTt* zf4;Ku{W61iS}pIYTB@Q4^4&G)?MktDDbLtiUyPo$ugOJD8R>wdNY-syajhu~Dd;1k+So+yc##H?H-n!K-3WSU_>?42c^42#mx zs3wG3s|&>5_CG9`$3w>&TXUn#HSUU*T8G;H_1k78wv%PK$<(dr zyIgi6+t{}7BQK%a@m&V(CFF>-vcXebTYhR)i&2-EE!K>y4~sgpTch>z1x~eUB|A<{ z>ZsD!L&`t##t{&u($jZHEEsS)(N>j{&nto9)@@R;igpmu#J#({_|os4@C46wWIYWD zDIECIRrx}49+gBWnD2XVvb$cOMG_AW|08(hjiJF z2PuqBFy`_U@>x)FA!( z&tD8v?BoScn>6P(=7rmhIAHhhXh{wXk*J7z_pj0@!8B2fW((o9Mmm$u=Gmr5>B;_O zWa#mPVRXE$u*pwESjWNdjW#+%bmtPOu2U#yAGZf7mM1|I!$773BxcE7dpsAaZi7fe z$ZwrFN;>0G==1}7y?j2SdE$_ip16O2b4F7ZEeyXmyEKbhxzknyT}g#l27U2EzgIv$ zmjgV8&?%*>I%|BS7dAf-b2#T@Cf%g1#+Wuh|D0*(u2N-LKn%2TB}h#Og3 z($+e3h@y^7%FZf!MrQ5-@*g4yN@8v$XJ6+Pm+m55Y1#a0_7b5&5xLZb+5}KwC3zhr zPv_VqP9C#p#yvDcU7Ci}y|0_IQhdi^+*1I9CL^Jov(+yowSIXZZtH2n`>gAGe*s#D zqY^{BYOTL-JXP4Ip{g93Ekw(SfZlGCB@n$VcTSkM!B1^!*qv}4J5x0!~ zc<^BMk3h-j9Z*6FRKr+0!0HP9Y-gTr{YZBRo_9J651w~BFv>kSI`8kTO$sp?J7DNR zte+=08WwKecJG7e68*?fH^MJAkGB%|P_0+%9U)bk5s}}X@}qERYszDxiNRVJ`?uz= zAD-Gta<_w+zxew`u^5orCTa-Vi-AJ0yA!G?1GH6Kj-|{LY|P5Fv5uG0^SR>i0UcJk zvujd3({8OSXbr8{_%@?vj4`v6u1g)7QVe3`vFINS{=XLpwH%Bs`Q1&wM%jdZpWQ%6 zmH7bmIO%u{N2AZrhD%$5lVzXgaz?wyvTYgEnXt2P$ciNypV_|VZ%dmjX8%OBLBJ}3 z7Yd~IJTvKgC7x8g^0R8i=!a@PP)!P?OzDL;ittKnv;6s@;@CoM9jREFQkB|Q%-!+i zxguRehFJXDeiAE`#?PX4k|E_x2-{y#Hdea)6rusLPPW4ik~QmH@+Y99t?r;!NSIk7tR`4b}rlDMtfZ5 zW7Q!l1&ZRj9+wyq*e3 z@g3a4-S`rOZND|fkbQIK&ij13=H&*sB^Z7w1R82y6I+5VkIj=Tv9RbCk$^l0%fU}& zu{37*RpTKAhjPjENlGORr*ZiO+CNAWKt=I+s1njw#7}xH|ndmL=+#S-?}Ls zp1cZA)rwf00yRV7##a0;wXD0mxzg7t{7}(ODy2*djqWtg1moT)SzULUgBa|Qid-x1 za@s}>SmKC{whqsID+X*l%$OsyNA+wsRU#eB=w~`R2(zc|F;JJf!)8f)4v7+3rI8~~ zDhO)KJWVj_QIHtQ!5%bg27!D20T$p!KRjO=FaOe6$1Q6jC7N4W zjlD&vgzr?v^5x+Ve&fN~4U5o$_%`+BnM*yZ@pvix-{r;9z9{7_MdC#AdDDW!zMJw# z<T^kVgpPWA z4DL#ngWg`%ImGU~o>T%2CDSu64b(^dObi}u(cCG|-1K7?tJ!I4Wt5C{4gXXKqYlLk zgcVi3IZZ%>7k~##c`d1tEQfJQOTrKY6dDK1O3Ozd;hz+ZOx}R|?N7zSiKA{BM@^q% z!4wSM1_@J|g6>Xum6l7sQgOgChYW?lSn4oD9=C8b-o^cXbUxa6SHK;-m6^7AtK)a> z)xS&Y1L54k1qz!#tN75-SM8Z~aF{eJ`Mm72Z0Uq}&{MvV;kmMj{a# z<67lweN=9G-IO=Ene18uj6-Uul8V2ODhP>&wDNo=m&I+)eq$o5S*27*9koG8!l~JS z)ny&^`2O);oI0BH5f28`sI=was{E_{^6Gf?`8B=ydAAme*FF+^v1?qiQ&=cR0*f%^ zoVzs4X^X1DY#<(7J}E3QhoOA%j4@9igmHiiC;1AQ?{2OGf|ioIlAwXL;bbwSdfqIr z_snzDwf?Q+4*yG2syA!W>LW*wqiQ+C8PSzqCz0EB61mM;R9<{0&L3|Ghswohp8eRC zR(|1D1TIez9SvDT)5=P1K=QJ!>S||fqGzh9HgtA8IVI)9y6Iv-r$C2(G%-@Q^uKWk zYhJVdxX5vbU7_)oTnb|v+pEFn;My4V)>v^2_(_JseRS|E9*xB;FZ=^u@4m(yNaZF6 zKbN6oWJs%?U(hE!kwR(G<#%jy9XDXr9HId4uAlE+l)VQX*b7ps6C;sKqOCISP6qU+ zgj^&5Jqoljf?qUHw;B&X4Q)DICE|Aeo=6xn+UVf|E|mJQ$bjp#@GNmm4RG%s+>&am z)}ihiJydOXZHguu7$@pDWJeIVHu3##5dg`IZX$WT&;bw>RhK>4#7kf!qL$&>_*p>t zlkW7krU3n!EQVi@Pd5uot#I{&4_>I3>ckaP(Mop|ZJ2!del?UxF#w8S5z?r)V~pj- z7T^9U#iV+icrem=b+qZm5%|c$)_=?`jUz%ot5cw#7>eIXA!InlvRAF$^^d6u^1tXg7KTi4;P>5cX zn+!YwHv;3qMezw#XW9i6+oO&!GNuhy<5-?BO{p)Z=hgGFo|_}Ng83TDgZz7=Pemz3 zdt#L;)EEeCQ(2K*y^m*Is;`4k`MnOhpOw2GS!{sc%vkPCkOwzjDHt>>74Eo}$;p$^ zwjTP=TOci+7L0S9q%-;aZc%Aq5r+u{O9L8m0r&}NC80)Nl!l@|EMomb2Z0y(fsJZZ zM$vXP*OswLC-UxS));!gKQ&{Pr4x8dO=}NZK<@*^yiBw}1<9ZG2k8%fyJ_F7d0{o* zz834gS01UE_b$}LW;QvBL}9gV&U|ih9;C%$1t-o|I<%Hdf9l_$vB+@KIZoIRRK|E# zr#z4jxjg;-n<~))UhXssAKnl)zbP|nzB(&p@cPv2*#svT7~gYQIzBz9`CX(h=C(J9 zBfP@6wrn%N{QSP_c${)98;SldNx3*->MjZ}$1lL$ABK#qN^(x?>Xs zxW2?0T*OBzXO*%!}!Kl^=udw=zVI_p~NTxT4|e+BBe7JJ_Ds-y=pGHG-nCGqRn z0?x*`+lWcPh~TsXWtId0Br1T(gVCkqG{X98hSrlY6z~^fwelxn0d|hFu{n=aRl+)vGz*{*Z7l_BB z?Z3M?pDY`IGFlmMrl%0}+EGv0EDJFM?&$O<`$QeN)$kNyyf4#WT-NGBD34j&)-~!! z>9&@jo9%S<)k}$h+lEa;z#go(!xwPt@$45-GEaWCS20Iwk;j5|l7x%%NZRvC$;ZC) zBo0rN5fgB8htV&b@|C%=Y=}$-in<&VAatS`BK}n<($u1$<5hL>pWt zO{(KenC?1NhWyIF_u3M9INQ?lu?3>CHNY<7z#G^S0E}w7idz7}sCHW~zY5SyR-9gv zt0U>4$bIjU^DEb?j35r!^c+cHP8JAXaJNk*+0ej91gj1=dEX&Y~BI-JtqI)^0w)#MqB3%;g~u-{F)4 zY$E>IkGY?(@&8Hs`}?T(J}G?ziq&e*Kmny{R;#G}img6sr|vrKQ9WK}9Ll*;F--VL zpC7;`*|%B&EaCc}o=Z%UPvnDhw?J3Tp*hfmC#BgugIxBaa) zXImppbaHH1%g90Zdv-U+Lm#(BuB1oFR{eSLx^LC1mmg*0P1|`*G?tTW(0ImTY3!_* zZmk47w(0jey+3@rzY0T-=`8m1BY(^#z?JmBv>ECBO zJ09E=csDO*eZRPFDA{S!+11v$*o3%_=ILY?S^VX+=yoiR*gE)@Zi*vg(6kWLDtK0H3_{Bg5+b zNwU9lMshY@x6t2iiMqGHQEY5~PAsrDt}e4}D}7F^V>B4b2%ZZ;f>ukYI&PaX>L@eN&k$t%=>iX$#s^=Zxul)Ezd|y-PhS? zr@$v%`Dd|_N#|E=5{udEFG8s)bDdOUyC}%k+oxjRvY3KYALITjT-?y0>Anjk=Kh-& zOD;C;B`BvL{dgAhIv?_8{PNCxc#ufMy2?^z>P*Mst8unZG;b#UkYkwzx2>cH1F7bRKOUdni!wetc$TJH_JJ}}0`N^;B@@PzH*OHp1YE&DRu)yK&R8)ptxf@U&)KLUgT%^`U&&l3$Z8p2G3un zw|fjF(7h8EIe&B$(MLb%`g{Av#NRRO4WILp=(Bchzzp$Zm~Rs51xuQXx%vL_N6G&8 zN=^7R?0KN&@oU%_e(w?w=!v*16S(0Gdo#m;4bF)qfWy{Of9%QAKaOkA>FfC{O(5v+ z{cC@G<5<2JYS!L@zVwX2Vv!?G9;K)da}B*PX)@QR zY2^S8p?ICm-j3ayDXZTr0Y$Gao1MC!>x{k2)zop{q!PYfvvcHVf8x{uMvCDlc-o5| zAS_v59WTFL$j)@Lo%m4R#;|+Zc4CWrr)X{+kW&q0*^3+gTHS#Ux~P%OTDH`;X@%dB zPl4JcEryKuXOkd`j&_X&gx$2IM#mH&#f``6099LQEcu*e6&a>wzx3n%`Rg`a11sVu zdm>n(OwwxC_S zQ;sx<=>0-EpFM?6#1}YdG0&Q~$~*94hvNsyr3qu=wQam9CDUUT&!53wBtxUP#P*naM=SM0fe}8g(R@H>irED1rvwYXqi~-t{Y@`q{0*yHOg|s+5#s(^ufJxkyYJA6CA<`I>GZE zdkab2xkrvP1bHu)UlabIu9`;F{@EdpRS7~q5I}M zeeSxg*!PQrlzDqi*-4q+9sCcKR+%S_yMK}?-#G%5Vq>LZ7p2G-w4 zBA}(T(eis z77;)jsdQsXH*RMah*$CNB`}{rYMhK=A|Ah5d&2VW$fOu{Ccu^~U~+ujvu_+>552_e zExWW4Joq>OVe6A7pM|I`fQy+GwvU4pQ!ehxzL;Nh>2``y!orG=c|?oA`=k{mf#_3V9ne^teSH7;?KNDrx26CEQxVNp%RGT6_DA#IW%iB*dC9h4^!~e3 z^dz}}qghA10h^w79?f!Qsn?Mq_Hp&_XA~)wE`U1Xu7tpRzAWl_2==zgP%`PXq>&Sw zeKLO5>UEUm6p$D0EaFMk+^~JwTT!+u65S7Iwo@Tz!_*6dGy^NtaW@ulVy+bPCx&V^ z1RB+M{=Qb;-gD>$xZ{VM)Xrz;AG&=6qY52{Tslp$Od5%%9J5@E4=V?b8O354U%)v6 zm_$LZ@5&>8UOhsb-8xHJ`gwkR~HBSKOc#w5!Z77Sk>8v#S&{^R`BP7E;7BIOSopUVPh zXk~9b1Z!Fap?oIStCpi*^=Wi|1)k;z1xPgXS<=KZ_W}JtElX^crjk%s1<9^2mTHmu z0v;a~Y#=VF-*5{NP@AckV9czr!iE-&aQ6@lag#98g=kNHUMx9qXE{0_UpK*dO(iIEQDc z{Hm-CiE%vTN;9V*@Xtk!ix@;-(S-D#pv;XHSs5g}F~A z64hjFe0^2>J0xuRF$~860OijHAYnCKh7h(%&Api(P1`{$EC^g>BK(Y#6!bN*^G#0o z__vMc^|QKz!y+DE;P_!iqf=@WX3bh%d5zS|)t7eZ1^4VJk7en^Joj1FBWXrip5?rP z&GCMJu%}1-x^LCcs)M-Mb&9>jyu~vvu1DSxcKt4xub=LP_H1DbeVs@u6v3&#FpO{E ze-VjY-*D6S{QH^v$tJI!_j>Pvwx9Ob2<)M9G1tP2yOXFYiSy{%pmz2?{_)K~kITfw zKQ&I$E10YLeM9zgz=*gn!Ij;+{da{n4I7|BwH*im8af=TB!~;F$3qE5t%Yh=3#vc{b#RI>T#d z`Z9VDEkD%za5ZpP2p~U5XtzON<+6zJ7ks{a?isNN2YgK!cR>Jq_`{!&bn+j~3n~!- z8$Z`yY5;&mr_eN^=QQy#U4Ni<$5duVClbB#L~~X$Z4lYjH?h(%i;h~{dE;*NQ~Czk zf;$%D#f<_i2h~2I!wi<7tMJIC4(T6ZcO@#KNV&@H7m4|#%T&rc$23lZ>qc`xwx557 z)WIif1UpR`-n`g(mXFn$VH%*1bgA>8kja^86C<@UcTXHqDM@~ysef?VHpPkb>!}3r zsD7zfAR%cBZWvsDbh~_%y$(9<(@VIDYzVH>CwEsKzvP23ZT+XNDV{zU@udkvVt=&Q`xUUytN2_> zCiAZZDb1QZVjkD9_8>$VhO;J~qmPASK7SYuJoL z%Ho>z5>kh)gp511PeYlMvk#azAn5esny)z7}Y70ztksaxciEx{#caY#$7{&{_= zzS#ZTr+z=H`QZ$CQMiQvr)?Eg<9bmc3FhLuiBbletTd~6c&&C0>7l+($iX~MSGYqF z{~9q7N{g=_5nZ3Edzm$3vLFuO;7^M=uys$hvCcOn>n4F-bc;KH$Xmg;LT;HR?w^3Z z+*jjh+mI1Yl#HFH3F8-xBU|BH&&sRJavtm;v6bw*FiZgE^5^g z_2n4=+3gY_@-~X9Gtr1l?}kQVM3VBpteVbOx2PW4dJb#_n+qWbSs?XlDrA4UIL4T4 z9(9Bx<*MaRgu|Tyz*ZBc9GbMYRm>0jWO1s8<|6r|lwZtZ3{`V~ms6h!`%&?yX#BN6 zc(Ia8IX~2dcR4-k;3K=Bb-Y0x=4J-pCiNhj<&x%NYkS<$RO*D`X9`Bg?!Eix6b-i- zSuGH0FH>}GtAqIE8ngCmVgW?e^(wq$JeEw=$#u!A}6uczU>KZ+~jdM0G z>$lpV>o0VCX3o${d>`~@1^MfHjyG3!w#Ttn)Jilt{Alt6VFamwr2wB8qaXR@( ztgN1dl8T*_y!9arQ6ByQQWq7qE3$IeeI<3ioO$_q_4uXQWwrQnsm8pRS*gbN^A3%V zD(zl+21lK%ohyx`TOnPs$_%I-#{wB^ItPkeF!|RQTr?Lk&anQi^pX!?nh4a30@YE* zTiWE%ERji^_=IP*iUGB+wIURKJ&BmK#VsDzMS3|!ZikQxvs47E-DTtSIf#< zk4F1vU`k$F`0NQ;#FpZr6YVY@PVj`L&n7eCK`_&()s|0MXT4kBcg$R<;nhOlS&St4s9%|SB%h$@Az!i z-=WnMQ=AZ4g`P(8uR6kWv?;{H5$t$-lxM4z$j~hGXEK|)3IcBK5C=5`a#KIN~ZN!m8HTW5$(hT*|!_<+0{SP}@SYovdPb?lA z2(jFxLP!6afGG+q3;_!?Er7a#Pf-*|sXLqiuBCg_jzaG$fYUHT;aE|afn|o7Z_i3i zxj)wsN`$MyThJQk)*eS2%Sr=s8At&ge1t#kS%?c<0!nZdtVcJN^f5t*DMaA=P%}Wx zia7i+w9Y%`nldDgu|#iuugEa`*b~q}2Z7x~*t9%Jo;|G=*wHS>bFQ1ZV0Nbb{84m4 zHQXhUS>28hMC)Hw;V(R#y&&aSw&0W$iO)oZpYt=IWNhesE>i|azIcZ1ofGRPxSgMx z;E09V+1$#E^-0pWz~LA-%QbSeg@n2h^QS@XbQZ?+;Wwc>V=>6KW9}1TdNg%c_K~hE zO38E!D#Z9jc5ORe9lV%%2gL-VoIC1a=md4*{?vib2%H6agUkA?^dtjhGGtb5-+57V z^sB|6F+wfrmDZ+{$i_zXI3?v7X&^;9Fy1Fz3LK0Q-NOPs1|xtX@&iGxYXNv%?ugpYxTJ+4D*dpn>QFT}^mB+p%&IDftNP0j##aPP z;kPv9hjef7l3QDl)_5K1@Ulc)oF~3Lz}4fM6XdFgT({J$X&6erS)H2q5pGMZus~GioKj2*QQTg%Ra9uow+?iOykC5;%0VoI%)i4DyBLj5T=i_wWH-i=Cs z_0sGaD*HPmxLqGkg+qUaH6JIf{d-}Rd@Lz<#(qsQvoW#EJM3JFVwwscBn!zLly{=D$E{9C?#sFTI7l66fYcVOAhP(z-<6Tup_S11_bN80mdzxR;)K)1r}^c2tX0D>u%K|l&t$AImo`qROdOc;| zhWY2*`35DXmo*|7bw7DxD~^zf>FxDd9wxmEq7D8JC`OXvw4AX^X)(Abk%g-Zipirz<7no^HwF8qVZaEcGm|xQn*P&b;TJ$%8a^A@_ zyLgfjsd#%IYNcS*d#PF|gh?#km0)r(04E!)WuRt&SflbPgrO$luA=~Ta*lrG(F;1= z7Q@rFyYYdPlj%Rp8gz3I9`eQ}IfT_1JGDITlpzrC%oBicPg88gB8 zaXgj&g~%9;8=s1oKdaI5W3;V7J*#$mqV{oU^7gv>#ULC-z-}gR(#IK|ktX@#T95z* zZ!E#ASzhx`C;gfCOu^V)pG-o;u*NDCy=>SI3)}ciMIeG>^T9$7}}6wEgqP4BIDbid!>{<$!g-$D28D2!=x+qXsA{n3lu~FRzpH|T%kw3 zJl=GQrXgicjUkXhfWaOKLfvGYIUx)*D9C{fF@%r=4{Yq+M00{qals&DRP2-4&v`W% zgn?S}C12k6cTTInmSP&DYH}QBfexnwlZiK@J+dX`yl`-Z%`oatxirD1)r!G=^$9D? z!>!wJR#bh20m3F4Kf-h6YDnSp>pFBn%fJa{&B#S4A$@XxlJEJK^|1|j3WLg~*(l%8 zdgRYX)k4KD*$K5L5 z7{st#VfornlZ{+j{f@z>m;GzOk~P7n9~jq%B(}OYVKH?4KfBu8jaU-Gfh|^7r6jdw ze>!L$5pW-)EJ%1tzDeS`$83 zXFl2bGUFc@?12mYQDbja+uQyAXh}Ma>JP#CS8k;*N&T0wjI~|^!kA<~Dt5sZo-Uc= zrFTqp%>f^4K(0aiXdv`hnU=TKZw!-!@JRmZdg(szkzyD*H5nShhYZsvVgRXXhK}$R z^?~U4v#9Oyw0Xo~s-6AENmK!ueJ2+@qT$P^XCw66FFpt#2(=S%z8|2l{)i5$`Kc?4 zPDYB?F|DH_H3M-DvdfF4Wz;q znAJ|k_Bz=Z$GtIP;~wHkP8@5d)V4NfjNzgY8p1QGGs=oJ<KCYN#;Fo3e3rwn^e`LmDZT^!nOQ!D8i+q++$lbRmvG1t| zS2V2dFdK*Q*yV=~PxVDeO4WC*WAtDqy#uKMI6-#RkBs`gVE-oj!VY2Y+{Cqo?f$;d zPf8R?$*F=4Mf3*HlNy;$>Dw1XUwbD)GjQVv5Wm(~mh3eDDujl2ATjhcW{hwA&Vz)iR-;%Gd(45p^gs*~l#&5k z{ltC`z<$Un0`h;qyjGUhU`k z(8Bs|QyTqLh1#5Fy3>B)COVw#QOmssE1eo9ES*TuR>G5tOWV|wN($4+3nI)3=Zg6` z-wjKAAszkVG(<_qdgm_!|Gs>oV%~Z&qAxaC!iG+WtoL0el3*CIrp4krIIKiGynx$w zEg_dO8etL6g3lj8L7=+hA-bi^(7~R=q));O^~k`U1C%s5R^bCkU&KUDDh8=!Lr_2q z2#JnU&kwkmMq~lfs=d&B78;CNj2cf&h6O>Z*CFks((qLo!R75`Spnuw>xAAE)l zARtc!gCH!9um+!VTShamIQ&-zIe^|)wjFgT!m+Qs^d9e@cy^Dj4KTXhPzjep6?I{z zuX-7RBC`!&S94X{5HZCUPV5dYddS%u9uHlu}r@8Ye4Z*vZR z2?R#RP#3=kqd?-P+~VGgoI@%T7XTd)Uq+ zs8UOezGE}Bjf6O5>>2olhDR=21{QlMyyWpaD@$>HDcz{JGGNc)lOI7qE z0nA<_OTZj0;4>$Bd**l@6UybOgf+PqdbeXN43X_a*ODWe3}l85&jp{7p5D4YzCxPw-C~Fuc6ZYkk1SA)!n>Gsns#iQvd0!M0gK3uSs`uHCc#_C6 zDbp`JG44LOlDxTefzUANfmcJPa4mE)dYkC!!dAMLrjL&NGw6hCk0B+CD=!WIi6a^k zt@i8$-Irx$BZ-mVo8&?YfFG!z9UF$DD$K7O@@(~Q1cQ7OTw1e7bQAulTW#u-w_L;Q z_wN!?VKLsLCmAR6lz&i2adw8=9TVudPR*b7DWYRI6#R{5-h{z z1Var4u5q;b&O$sR-hB*_YBOS3|C;-Jk$R@_jX^!0G*uMJBJelj{<=}4FhwRT=%qrB zQNaZcl&9-P+B!$~3qQu4|MhH$uS@Y(#@C6MrXIEv!(Xfs&_)eQ^5pV>YeyxS<(j*#t1>|ie|SH_ z;`v718}5Sn=jMSPzvncI&!U!GiIysjaovXLguo?-u2D@0Tse6c4NnS0v zC)A=7yd)l>@u3Aumo`ATc%1J$tpNl*dTB21pmOk{6D9tIlzonQ2v?SHmVv;rIk zRzhKghO;O+$iVFr?03HZqyrM^zK{|9(#OYULE17$k+&npk~A+0^0@9I`l9?XlCs$( zPeV+#i;GRQK7BGZXl`FRGY(?EdwEaT!60|OuHAHM!AQY%>2GJn-6wAQV(%6GcTn`y zjG@5cktH&OQYiHDWc`bKpN<^ukD*}dq<-NlCC5+Z8t2+_4vVb9`_sv%u4x- zsvvAI7qO+CO9qUN&U86I7E?ESTbNgUOWkTW5$X+zTC#Ca$3Q307qzzXDs#2=rmnQ? zqBjSfW zDp3q^jTr59`0bFM$ycAC%xu3|j-~=aook|F2@nnmJv>MM`^D=Wy4P`B7v)xJp!M&S z&RHY(mD8`iYQI6(~hLHk?544CBxK;UFd0O1!PxAEWs5aIr4s@^6wtP?Ku`t z%i1F_3%fFHPkb@RfYqFf4gxX&RdOwSSW2j4)i@1O_P-cqc7sw`!0qFG z0pAe?_y)bwDM8UzB4ajqVaxtkNo_teRP~yVz$!>^fCTy}dTrEYnEsIrhP5zMOeh~; zOv_X>@GcE3)rOY}8U=Crx5X)|+#8Cat%-cKrnN@J>Tp(~bs?e-W&nMUq}|DN>_<~; zM%H%Rl|pAG^lG}hS)ZOSB({|1Ah>E3w%-wp$9OT<4Ji2Q{{qi@z5rxh<1W(O>mJCf zb8>jk8_MM|NsVeQOJ#sV8y7}^LBK?ZlplsM@^f1wh|OSrpKbp80gs6AE_ZXs%IcOO z$D)V5#TG^;T?mPD(48Rr`TmgGmlvH|KiihEjoLe2XFJNyPS0`@Xj`wEb6^lo^C98> zSY+Hn#bHY$?v4yc}f1yshQkA5b%i}^VQ{ZOEHC|(1~FJ9k;F*DU%)! zg|+JNtlpLQeT&tufZU_N9%<4Titc4l^lIQ=14EUXqJGLMce5(~KVB2j#St}-S04Kz zb+B8A_YW!HZ9T>~yN}sm$lD)^7R*)9>m|atCg6cjF{w^A4pCI))_~{tmZ#|hXR~Em zjPBG|xFZ|>P)t(lwLlTT2vXvd`ddP-T@57v$CYj?y5W-yzOXJ5^nhIngK!e=sY_d? z1%F)JDPhE=7L}2yc+@S^TyH)6!|m{&QXSY%P;vqgh<+@zMkcpL)Xb>!6TN_e z^t^I)`LbTMdlZiKe%mcwW-!Kl_tcj#O5UTYdYV;MSr>D&%4Ac$`p(2_E!=H(0)e@F zgkdaQ%lTXv{=5ng;=Q~19kYo|7WYtGf2j1!+wIF)1rP4zkal>YgS zNYZJETJ|r@+y+3B`r%A;FafN^iez{Sydf0-OH_h^q0YTZH@5HxkYZ{E6@^?QlQrt` zLgAag0gu*Wt9%mKQ^S*OtSg$2!3e~zA(KlCr;JLWO4ax~_i!z}Cq|}s#x58QeFmYF z^saFrKRN=EPBuyO6UY?S|FdqWkkOCS+b+*JDBXw^VPU^9>K|&k7%iWgxrrgWGAi&) zND6s_RY)%kNh`$SEp331fB@5*t&&YsXpd9#GE2IdSLW%t7EIoP;ZNfI2Tv}Mtf~)9 z=+mLR?02(ueJ;~RG6)%bHaTE25E8>R-Zn%YfVuc1-29$3ct$F;j4D5(2Cw=1)@4g< z>t%~Hmp=5O3=J_5EFqcDk>sKyjf9~^d+?fGwnXVzK36bMR`N~Lx?t6O4MtMQU$6$l z!4|DGP2Z*zZVdI%hSgZ02!x|LIOR+-=UrKd!+KJ~@IALQ%2Qg+5X(jgOR)u3q`*=x z^379qDZ37FGq;5u9fd>S0ZIZg55V9mnT*bj7!NXw(7aC#{R{>=JpHi;^od(i^e;dpvI3DP zkpYIa@M(zS;Tb}230Pm=Mvom#s0hP5&EEY4*SLq!$6u4yYA7=m=^_gwLJ_X2K+zwJ zsY|yPhM8cXnvCUut7WtoOs@aU&CnScU@6kT3F5PxF>IlVL?>VXAzPE$@BP2O{3-gp zSAZjdmH5$tuGY7z@pVS1$kN-;=p~0BPRmfjA__s<49_Z_DmnOYq0(P5CeQZ(?K@+W zyvGW0-LOi-IF}BhEk-s+I7bg{LIDZ%`PSQxy8&t3abjHU1USPJN^;2si0Kz_%ju3V(xd!u5?Uh^PcxJ=o!J^gzDc{oRJw+p*nsNQCDrEUAGDZbp!{Z;y&-p_V8P)UvDjg zgLDHgmC>dgh+eP!f1x@>T5L2FT%1824pem!YoTANx*tA;;i$lc)L_}*b*nIJTxn_~ zGO$zV5`GR!L^`{xf|KG5eG z)Jhu6MaBOl^wTd>FMPa8#dN{-x%EtYv-YugsxO6 zWUTSM(vLhE&o5IFD;KU%5Z8@?&-2#&TD!Hm(PedI32i=)ZdN$C76Zawmb^$91UTp@ z1(223+k|(Oy!B(L*wXFxcNm`mPu011sMDqauY<61BQNesB>prDdbk{981Tv!+rb|- z8Oz7B$~O6Hxb&^X6>yB8c!iS9{=2_Z@&0qD-^0MC>oW-D(GsyT(x$*W34)yccN0~T zf=)sz$C)2Gf=xpxm~BH31BA&B-DxPD{XSBC^|pN9+)M`Y@SsFNXM+?ZmTDQSg?(+@ zZFm}h#D@z_TNEzN`I9^2e~(0^wbRY{WUZ+BxsnN`p8@J2?@?htyC>6*K6i0*)PH}zRg3WNLeydEqp770h}QO9;~7j)BoXH+d<$JKsj*^m4gIN;KzXZ>i}>y0b9cIl3MdEbo+`H-+M>fgW-SKc-B zVDHxQS*Sr|dt4g6ix$1oe>dqtZ`pExHZ~4^P6~N7h*62wN=iQE4ou=qV^-}GmBWUF zs|>@QD`4`!U6a{d+Gi2MjKaNaY6e~@o=%aIr?+jb7&%NcH< zTv0~iEK>lmvpTEJ@97orMY|>G_YhW|+lC}3ewX^Eond5V+K@8L0<9g^QiY|UiH*j9 zi(%B`xD*fuF)kv=pLc}xQotg}GRXAp#f}9wP<7;yW*&I3K!WQIMbcSUa?R>OD0033hR10pbAhcG(LmNwyONGG!vYy?o@?=`;k}ab=z?9h%`&oZ z68v96!1R%x=;+x*S=Jq*cE4w$pXE21(fl^s>S(55cW7|r_fU67i#<0xOalwc^|mFv zU;ahJj?EZ^X(ap9FBJP8Cvw{R@C@U?a`@!K1$S-u&#DiU;JWkb$Cz`#lQb@K()TA{ zOovWaYRnFzsKY$f4u>8p8wjGoS}C&y#UPC70dWERT=r>9>j(p4#4%7at&Bwr-mKOwz{(CiQi8^$GR@ zRdU8)e9C3ia%$wj%Tz5HT+x>gFfbkP!QpgM<+`=H6J>aK%N_q^GI|rfMF2+fDZI-9Cf#uDBA9iY9gW*S;Fj;7 zR!fw`fD>jcakm_*e>w?;p)sWO)&xbGMhTco@xQ`i!ItGVuM)h5{^~z<>!|UMmno>Q zYo7wcKLrDDv7aW-1P9b#n)s9sdAC-%Vc|iBtxX?QCHBPqzFA}$+Iut%U*6ie; zGD1PBW%{48YR_b>4~PAoqiLAn?z%h?2?Y8ysJr-hs0a8=XVNkiQ3XQ?854%dm-I(H ztkE5W;c895Nf*jD-3|iG4zM@TZY#xOs=zz8*c?F^Q^F`YE?hwGx7KyhsrjK<@MVR) zh&O~gH=bEbGtKO#X5;$wqxDhR^XZ03`PSP#VcG(?Lrcr_o!i)XPSO1CP2H7+Xdi_j zSV22H*(U?7)FTSJj$T{^j*3U?c*eE%Vw>!J*6wSLAQ<{vsX)o9O&7Toadd_{zCbHP zOS(F_0_Iayu&qkRNdmnnl4YBdfWGG1s(io_hFL3G(?XpRmzbBXWGAnGtZoVF2^wrT z@nSM35*kv^ymQc#+e2E_UhFiy43-7aX&x|u#OGYU^6a@vib!+f*C|e{b_WGb2v@7g zU_=pyedFCxBu69|NFvu&uj=@xF7943GgIUR5+wWst=ug(Qiw_lbuk{KV7w%!wmTJF z0r~cmVf2Vq$VksUl7hXqd-v7`IQL+>w11P1@<5bfSHNL^h4i59`j=Zr=kw*>mYs$f z^}B9$i4(u45R(CdCfQOnGat9c5^5-!<*63+KP3o`QU z12>VJ5)&@vkj1JH5k$< zC`;WtW>u{;yojeg|A@o>nlD@Kl_o>-KvpdVR!tWe%M^I~*v>o*eFTYAnMDNE! zy#BUL_2n5@$>G)Wx?wGH3_=;NDhHH4%xT7x!!#bV*F}?*v%gBRos;IxgO=Sp=-}LM zj>U(=J6BOj1Mc;Xj+`wJTTlA1;#7aG7~tn=zD1oVadrkqI=aQkpooVGd>IwBEp4Q` zJX6b$pE6`}5cgpA@HwPb(cW|qX{j#XWkZky@C@{?Orj~|NAs;;fs@oDQguGs`f%Gm z_59w9G5{0vOQdUbHuRtkV>%cS`KxeJ_<6QK%ey<{J@lvsIo(=Xv&uMA0n*IQ)2H}+ z$1;sF6e!7K@{SJf>TWO+bEHK4rU1m>wtW+S_VQzNoyB*Sn?F78)U9>`SS*onh}P4T z_xJ2%pwIL{4`=o>d^q%G6a0RRAlVtr!6iP|- z1(L3sqIe65zcHY$brAs@rV$QE(~JbTcyL-)tQMWni7<^kg#^$V%CizWjxy&ZqF(2# zj>^eSxHHwnbFcsMF4FtsB@^)7JT2-oKDG!%+dgIT?znxj%BpwWKgWVWyz0ibYPfhd zdk4YClIElNee6x#c9c6*2Z;dahzso|D7G=zao=DaZC)6aUC@3s#&HbGim=1T{PJ_q zRTX?buLdup3ya^R51HjZlv+M509Xf)QolRSOYE9mlufMDW->vDPhE_ho>+AK6g7#f zkrahD*da2$??#B|yrGKX8>2vySLpI5b>fTdSiyG_>zx%jw+?j1?4x zum_&`3tEOqd=q<(wq<{>NDIyG1H^;!RLq+AX@tY5?D#*Ly^f5nTp_;(9(xkN5Pi58 z0bj&!{&05+cs+8o5x%1(93Xx~(fgJSkPw#h+bwe;ARa^#wp4(4MGnNC5)8Ft5I#zzpcL&`(9OGzT}+d71eNA^{e0Y6 zni*hD>hKm%lZOC}-y+T$HVC-Ov|SBV&4>d>B0i<=vVF8Tb%t|)nMBWcRPOU1fnK(n z_<&A_W{kezhN-R{55yamjC{t5%qMB4DnbtD`qz&>zbFK2YOYF={@1yEAAPyYB$n0g znRG+9xW$BRQG?lAqr(q_tp^dZVZvCAd!HBx_?xJ75(6=zKcK`@39RTspI>H`^s z0ZzF6CdIJG4Ne0j7S(Pa6g`=pki%kEp(r_{24*;dA8HEOT?7E!1We$aLHZ3+bn z;G!ZnM0yUB&oQ&k&veDHbJ=xBs}oZX-VMjQ;Em!*M=S=Ff-UsJQOS;kd_oQ%2pEW! z_@eUMtzigeZJpBphpzXEhqI5mhNF+@gy?2;Aw=(G5JndgCDDlzEzx@yL>s;Lnh=5@ zO7t>_5`^e&^ghw+ce#`I`JVUSJ>%!V%ys?C+H0@9R?^?oKj+uvYZTBDF(WBF`a&O? z21a94GQ*7k!sGNz$e7)U1Hu^mexFSecLlBw$z0L7JdbfoW%B<;3x7-@S(tjtSWQ2SdCy}@%($f7ssmvy_KYQyoU%k@Ozf5du)on$yR-NP|NkINo~S$fzzANhfSKE$RAlRpSP4{V=#h0bIBynt}b(_ zzODm^cF27D=X2ituMOLm0X}~jTMg2Rdl?H{4W?``6CkAiJt$!REYNIz}(5PSMkHHTZJ^i=4Z^9%VPYKcU#Ib#0r(&0&mL@s#76n>=EIojFwzC{a%anb=Tmh65>P zx7&cyT5@rAY^wN$N;@OJ@D(KpV72p>@j+xdX^uqnaf9Ng1G+Tseapa+)-&qL=X2q7 zzVXL%bSvQ_N}--ttA0@P%qZQx1HVs?z$S3Q5mq6Gh#hTRC8riHOQlZ7r#MCFh2pXtq`sZ|M5}$J`+(QHP69~_mTv!HSm15zl5ad-Kawu#m$U0&lV%i26 z5Jv@++PYoezb_qxX*1Gx|Na9GgB0&~!IzA~kXCWmEsG0FE-Bcrvw`nU{%(8F3^1S* zJdc8}EV+kDlN2VHv#F+<#AsI|nmXQ{5jVu%MRWpEL5-;vd7udHfK|JJ$OFM1^odJS zJcdtv&JO%V_xo_y=~XNRZ9eM%Lp{ZeU17_lUR9+5+_hH2*_Q7^4DhNlIXf}2X8`g~ zkpF3U!g!)1!of~E8kk5<$4pfU_~9IDZ@37gww#c=VE@U{>m zW{y63K=E&f{2G3JK|14===c_!M^w4^nBCDS5%@yjsSXrz*>_w#c&QB-8${~IQ_BAa zm|G@`Y9qMN@8K5Xjp#0a8c88~iThH ze|8$ZV*b8fuT2Zfh4CvRoQ)b0-CO_r2!Tocx6B35_IXragS8%7Vh@<+4 zva3Lc5HGiOz%>Vhwd7v4xWFiLdTlH&x`0Az2d{5a{n$Z`;b&P-s8zAc$)FnCn(~_3 z2)nP!r{b%+TLpVI?#!P7!U}Mv7=QLlX+YdhWO*;{`IE9Upq;ed$o(m+&hasZ$vUmd8BK)=nWN#mz3Lf9{SV@D}0*`EJ9*927tZut& zy$}5iX{pK#eDOZd0?wzuK1KEp;d=`WzGbK>vEGd^uvlLP;RWr8#|Q4*dIMG3JHYY~ zcZhhv>w)8ZfgX~bXFE0BM7<($O zU`fPsCfp?0lQt6D2|EVMx*`b-)jS)>HO4v4RIw`R)g~g?{Q;)7(y_qZVXBT9+Sok) zDj_|EUh`sSve21W$P!Ts7zo45?l|I+5@PZ}|2!=j%N02FH(XNrIIAuCR$g^kSPL6L*Sh_y%&L$!ag{Y3t_q{F=m*f! zynuEiDRa3=I#%{2u9@2yHuXDZ7YUl93)u4=^Nx_aemeN_RRo|%A^h(ck-kG~p14{* z69vDKr6R=40U87oo--e%qhvlPc)z*pZ;{JDe*zjsvLQY5oIhE{roz@A|Bvi~RU20| zZ^PTGxADu9C`tNgoUn#n zRh*%-myaaQ%QJn48c^y9mh@>aplG~Mp21tfzI&74M+Cusbp^Mpk`^X0f+5adT4dNk zIQP-oEQZ`V61UHxq#sFw2O#BJK5J1TKZ5 z33Q0dADu{=Vs#2sMr@-nP&gfhfQg!b1v+jz(9?cN?|=1fg~pPMSr|V4%)JGT^nugu zMg>GSy)f2xac2M!@5Q5cU`Lb#UKsl8{#d*$5|3RcG|P#>%s7dgitv~94)!;#iz|MB z*De-CKCJ_m4=0A$%6TRN3H?>JNPST6G<5*A7H!wd(YMy>h1K z#1zV+HvK*9cW*BS_8c{90-7jhh`ZXg>zO|)N^mJFegrTs$Z#!JO79a(?ouyuC3d5g zIge)eAbtqO46!wLUAo218}SthlVygVlT0M=K`@$E^lEp!AAwR~ZKxofmw!ybicC2G z&+qx5`{Yc)aSiYb=uhK^FT4npU1}$YcG#jp5jGVw2Ez2?VY^NtFTktD@-QF z{+I~0Tm>B6&RB(m!6fgxzehvaFzo2c6XK}SQs#-a_fWf+Cb??g1se$_yUp5pMd-8$ ztJ!HUr+TS!exbR2m2bLSVSnpZ&iQ_b!qy(KOpEpt#U^?-rpwdZA{p) z0i)0J^y?UdE6{L})O+lb_hB4LxO3{Ivn5h0^X}zu#}j_+jYqF5rulg)$3KOi&3pJ= z4TG(TnOm4Hzqte~oRYI@N{a!;zbaCgeHun7;m7PiFQUUMaR^fh+8RL};5KwZ7flRF zXe$ilS3jTMOofo!)ic8);~l-BQo-Iz5e{Lw_8%%BOS%&5o5+0~2gZ&sQ=zL)Y~W4=cdu=G3O zhj;mhqA^Xb@sK_O5e4h^TgePn;fv_AeWLIr@+dCn2U(5`a7k|C!>HgZ8c@;kUxve< zUX*!lQ3;^D>PtRfLZ^>tnCcf^JsY|h%PH!qakW@0zhY_zXn(ztZ^Ac~uxW06V^dwIJJC{zf~1DgRA_FA z{G4fBM^GN`i50ni5W5LS;H87#`NKHRSr1HCybiGkL7b?ImX3Q{x{NPf4oR7fJ+mgg z9%#IMuQyRZ8io|nrz(Vi1eU5o#u%_0lU+6Xhk6}zXLf5Va?SRK1-he;Rz66~oAN9_DiO*57Z z#-6NMcqWZ+{6*i$qyDqOvn{XlnWrg;jOdKM^qn?5ArE5&b;Y*CDIjD{U(k!|PvkJi zJ|vbecfen4Sby~5Q>wW~9kErp@0;tTv?ZF5*KprYDq$lV-rcuowiwA&^RKd7N$L7c zv;w@|*$+Ka!H?%-X>ESxCM$j~ZLtyQ`Q?-Yq?y~|d%xa~e!1Os=g*mr0H-HlDg8r| z*VH5h%QH`+T!NU5OWenMue!A9LJCr_(hR`qwD!;@E>;W?Y;+A#pHtY$S#6Mn)VG0;kzou*}2QM;-xu;ap z8mxt7WL>dOA3!DaMPl}V3)>(* zX1zpcmcHUd;jkKRoaLlW{)!?T1Z#85COR&ZxUxGtJC;CNyIsd)RamtaU_npgoQp0Z z9S6EoQWEjFoAtJue`^-2W+jtu>q3c13iC1c(UZ9uvCKF|<-1jjAGqfPb@&_YW#G(Tu%HslozI+Z;>Ec0GmQ-HlYVzHhz;j{?Ut zyq?^cslInrKjk%o?n1pk&sbN+!JP?nC3_|B@fAQ*?vdJLEZ!?TVi!3QK|R@$G9Yjf zf6FEjrpY*H)s(XeS8~s?v-;8R@l#46&?R$ay!X{u*5XCrD~#4ilwr`ucT_*{)BzZG zyFC6nJh(L(bpB6kLB#wbV2S@A3}!+C@sl3SNUQ~K8_kcm z6W-7smxM?^Is9?O?&{~!t9l*p(hd4wqJ%^)AVZVozSnZv?@O2c@6I;O9xnm1(@AUx z#=@IbfHmel=@icLoyA#Eo4Jo^%48?8BGUgXDCBA6v5@^VWt!-U_T}vJfW9k0qe|}r zn!k0~3eI`PG4`maol!e$h#91rd~KqI>*EY>pr$DoO|6+y z>=I?R6=|=@nF_s=uK9{Mu5?vU?Z%CiN)rc+FEVsEGQMBhZto4<$KnxqEt}0Ayx^5h zx0dl`D7~DFcuB>|)Z^#jf=r#lTP!1wx-rUU*f*SB*#ujQ*@O4SqyK>Q%gKtVonYt4 z?Ir!qD!rf9n%~$EOw729-BRTi0upD-GRTR5RX}CtHr3PG5 zb48!;alc8RdVTlNg25DCw5_`)dU}EIUmwfiha|@)qp65bR|@)V9z&9G3JdwG@1hu> z`RZcthQ39w>>x@c7D<2z2@}FyoCiPiJi2+JF-77`UhO zv;|;R$Nr*ps)S5474BUsKN#oH)kv9AkwP^#Cv;-7RQ{=@@21LZ2bxQyP^~8c3PWX{ zhpE3+yIP;&l41t&DSaW}FlBtG)sagViMwik9RO%#kyunzWC(eS?sN=XFgwWyx+|YV zFfUa!`G-D(30xB_NB}$!Wy(jgiua#Hb_*S?jj=;)k1YLnhAp6vE#bOsDdlN-b>b%c zoN+j$1|Sx$m*%ba8y@ZvMJ6dIJtgmwJdgn0yiO_0jU5TEE0_Br!l2cQ6grK~As$X& z$L1Zg{f!x6{=1@|=>`APM~;npa1}KrC%MgYvp_Es_P5zT_ZDtW>S3E+qTjyBr*osa zg?rJ_UQZEm%KC(78y(__ht^nqXAd^SoxU%hHHp+U6PO&KLfmqgLMTc04$dxbLkot8!wYP*< z%x;fLbn)&7Rwizv-d#V0= z<*&XGg42RWs)#r#w8RiGhV*TZ(af+&v^c<9RIa*hIkc$05Sr6~0i1rCXl7M^WK7+s zzKtaC$53`1k+Xbe*sNp1+I~OQ!|cl2vPs%ZBgVmhl50O}l4ZH0oghW{zMH9L?RV_!cuC|n(OOH(0A1|?(2~5<)#B$c9Y17zi-wkWAlFl$ zn(07WIYB>~U?SQ+ngF!DtkHIP{f4L|(D2Bs1prZBu$ML~6o>N2yglEC*(YRejTRuu z(}HBCX0Cy*66?q}sR`7cE!+9v~*T zGBS&{E*I4ZE>|Rhejwml!jH#g4ULL~d3?>FP9hBR^|2Swmx!Cz3&Z5S$C`UDnG|V( zKVOyqWMrLkkVKvs+vgp84(etdJT-iN^{ed}qDL>x`inXZA+#fC`25iy?Vylf?_u`v zhal?9gF#3s`ou#N)GYAOcJkF%YtxF?j;9!bwV>PG`S;J`E@j>j;6A_QW}Wbe8CMFH zyqC>mfgPXUz%XaR7-RKR-nf4??cy8;O%*X>IwiS6M|C^ak@OM9KNTZ74qi=jCd_ND zrDZIy9(?SNk3Nf0Sn5=(?9?dtp#pFR`gpD5dT!@-ni)Z1uls=xn!fy3?}$V5znb}mLyhSa3dE;l{nS$<>K*anPT@6B_e z#rf=qBWAXqKQiCZ<;DfcG&rqBIb=IU3}Hge))J<8#Z)aoZh*hQlFaWG9-68BS9jIk z1p_(EXdO)KX^7rVH9Jud4koA73;KdIftYpR-ctBPz~jkQ&z4G&=rt|<58z5bvK^Q}(^nvOtfRl6i-jJHHG&F9 znon}bdNJ88q!4VSl$8wZu-M!vK4qzl1Zgb=Y7moYAp^R4ac&tHy+(z9H@L+Uyr6iZ zS%3NzM1OS7)EfnV@7T;$KkHeO={3zzbo6)0sU(Z-%gR=!sL56 zC~R9~)k?3ma$d69U&bRGQu+hP5dN(DNqI&iz3(h3_(%Pq@X+aAHZ7pEWBUvP5YuAQ zSDIWG!+(9XoI8Q<-va_CRLM3*xo`Bf#mGqchBP#ImPCHB{rtfK9pmESN^nAvuU!Zz z6iV63BV1}+k4fV5E1d|k#BlG4CT6}_}nkD8ev&=Oig zC8rKBRf2t-@{s0Nf)ml~WB-dk`cCu4!%5x@-(OJ+RdRmsbx*X}u4$Po-xt}=& z8sCh`k^F<35%vx^#{6{}15!S0aE+B{2ru!?U51n9o6?cXQ&0(5!%Jvou-~|}JTlI= zt3N{QY6t35ZN@LuFpUYUT3e9Gq^dmbrJIklh3|?b*NClmD|71@09Oee^E7@cdy3IB zzAsP45K9QAcXwme`mNXm)TyVznFJ?Q0OJ(;#n1TuzXel#`wWn`sT!p`g*T%beQ>q% zR$aB3f}Uf7y{rKjOi6oaNIu%i_p}--Skn-L^5FEZ)kd1iIPDvc4+cKxp;{FkSz7y_ zUye2|c=I{^49MJ%cYNMDm4L|+$-K%6V^h-d!|XeeTmJiUEJmp<>+p#Bt8W80(U%X6 zU4B08d6!9?m_A5}?z~$&nQp(g!YfXeG0&~Ia-8z$MZd*2DIm=Wq9;LvMTqi}h}mqM zGgNPK+f^-9BGo6QC*_kj6i}iu(Jb$^eg8TfZpcPE$5HTZr6=3Bn+hllpex1V`w0$` zUfx@@JZI7gzM1a$2Q&Nrz*ucH@!CF~MSa4Z6uO$8Jo@(87gS?7xQIR~6470d*TBTg zAP+J4V%>sIc~;dtg>>~S?`L`s%6d1k=`=BA)n6-Y_&9d5oV~KnQTUQuxy-C{Zo`{z_PvyN$5SW+S3YP!R*b&O9=WXtxB|xrm&% z%3Ytv3zZURgTDG+y2%NNx$o_$z#qVAPR!9)ePn6OuiLBTsSx`W-DHo)>_)go9*&R{%F6yUnw>1i>O>bMOXMO>yX~5VZ_VyVBSIZRXs*m{*jA{gI zFPIo%Pq8fAqLOxmAPLY5{6s0$ufyqr1IP^~AF=8#K%bo+QvKr7b6$=onk>8(mz^B` za6F#tvRR*X0 zB>kYzO*F^>O7OPSvK-2gDPta8w$YVy>lH5Wc=jx90&;U6)O(bdDTDXY&guZ_~U;P3L zkB|c!MscO!`q_6jK$C>kapU{Cz6{t%0MU(k6+7{e`!-J3=;6#QJH4l&Jp2P8QdJBX zz?UQYg4XKrT!@@g=SSaem{@Pt43XCI&=}zT=qdN|o+#R`grA=Y?JD;lBL6eFp|fZM ze>KjirmK78W`zbf!UY6l@W zG>x7RYO7`l4ZObegg65%kfL*ceCMc&zePos(Y zvA#+NW*=u|BowZ->Hpuxip~cCK2tv#J%On&C&s$vgvcCs({SZyf$qW@LC7}1Gcb9I zJc}Vd1x&!9V_&KI_AiRU%OaFvRV=j^o(&{!x!B^=NOeSESf@Jv_;J-!iQu*ZShqFG zA;-DKTDEZ^3x!Uf0@GDtKF+UYdrn{tT50bSJAUWRsIVqlYEVq)Ixa^JFbFJQc2XND z4&buRAeZYN#s|_N*O&QzdokRd4*~D8b^pYtz=xRxesIw;dI*3&#cB+pC&}%jawCrj z)I$c)(8_ii3u!#ulfbJyH3MpJv%Vct7Fg94Fl-0&^MlQ1{JJUJ{YR4Wc>GTxNJk;R zuN3kHytDA|*xB8Mss%}0_yo)PpnrS$R2qOGBE&9j*sSS*A^Rgi+X;bDQD&D?4^V)K zv3OQ{)3ye@_=31lk58OInmGe(e*%HMXI|BSSHraA;ddMbkN5xkA9b<9lAF0HpeSr> z_LsK+&<(|aV%mWbvcUYj8XRjD=PZ&zc#r7h_yeAY`@{XzJr(%<r(#$;2 zN0|&-Rm`vzT?PUGowuI-E%n3po34MI^1WGg=d;-K+m!aNKT2(QA*MFR&Y-Tx_PFPB zTycR;UlWrqf<`W-Z(A<8zbrUexgaodmHdfyRZWY$5kvFyc}i4Kv!Gpr0DXg2di0I* zOR@F3jAo-o)djBa>kcUz4}Cd1QyAiT%UVt+@`%Id6F{bc`={iLn$qryDNB(mMkz9w zO|(uAI&VwicS~+y;g%gZ;n4Olun2w!+zQ@IRRwW9a6j0iNCcD55^*>NC6>z&{9o^g z0s8mR9sC(?MO3Y@ArotE85u+|O9#6g3lGD|M-RqAQ9e0STAwdnJU#cvceJ;gAwJ$4rCdg>D(@ekDTqbgYR%IM zC_4D%eSW?r@{Ha_dLB+6KC~cxX3+2ZL~GB}UtYPbcF+E>0rHBR7HFh;cR(yP+%s5R zFNTtZ-}`ZVW-E_tA+(`BjO`?}LHX(a6sCYg{hMa^4}yn);wNwKY#GvzUUCKh_Z31RciW1T2^Jb*q5A`ulz-}OhEHAKKRWKJP4??8f~eZ1 z(}7CFJ-S)iDXw|My>Wa;Ng{p#J)URn#OKeqILg)BTX&vJW9IaTip_7w+42lszk(l zGIa}6Ga=S1AJ^}uT5F#Vwbst|=D~w*%Z?IP3#^@=RS}8&j*%WNd!PjzqxpMOnSlWZ%H*FAb|ceg?H< zWxAd|jL%ZSA)Ty{P3&?ty$1NDH1ygS&3ZcxQSfw2y3OLSQrMSz{dMxtSWW1 zNeWCS2t&GhuZrEC=s_LW$A=0C@?T;qXOx`5H4KR~YVXoaD;Co)d45aehuB^PaKq8~W%=Mz5TN)v#Z7+CXpl~%~^_m2)NGFy9W!+Sz z5N}Bqp?c3^Q)+#lvyP5ac*6d178^JJjgB;}mCTB-AApYkY4ZUWo^x)0k@br(Wn-O> zF9yoCi59%fYhK(|^~rF}j=Dw8&b`Z!_~~8poZ*Yg-saaqXH`v)@<~D)$=5kmdyCHJ z#;wc`+5Ds+3Azk%)I+{=^W4Hpjd^`q4UI!GaxoQtH|AmN1Y8fGs0#)_@KD(t69{A` zgP+2*5B9j{(=vb)%7Tm;2UyOWnsV*9TEJ-?@w6HsJybQ5-LgX*n-_!d3IWF!R-YA) zl1#?!$;wlg>igl(gRu!DW`bp^L8Q~u&0Dm(oiTui7fh-)c}1c*W*tuF=I;2E~J{M7-}-ChGK2b^X3>{djV2 zDr1MVXGPC3`fOU1;5zltHoE`vBa9|t73OhV!c#7G_a2ITPg)+WPWbnJtKcN$4 zogwn!**>LBuB>B#V{N338;dlEeKqX{6Pbs2kbm8%Sd{0s>dz1I+ zC-;n3=h(J*Jt{jw@gcspmlRoqH zA8oTMaTj&cuv0ytikSe|UnAIZd>8@uLcut7Ks90!qYun@U0v_{3qR8U!-%BLa%Y`~ zCAI48^yRpJ5BX)@C?|8-AP_hVK44vA-`cNtv**xo1P~`=$PLIbKN>dGMWm0G>GF6k zg+4^q%{U|gku|VrYC#KtvZ@ASAV2BIymUOIOKYIQ&|n4sxOwPT6FFHzsv zkw2Q70CoM26g#}zS-oJ+52d^*?4I?NzI7Ht$4?OPC032)%LU+_@nNhTICTt-Xe2b| z8Lo?5E|xj9huc+z1`w+=_|xhJ&rG%{rF2(c#l}y6FIG-b8d%-ly;ME8f7zfA4(IwS z-sW-FO{uxs%cP-iK`!6l7vegu7#TNb9!-HK`6SFBNqcyB!vAaW>^D;05E6ID--VL z2KwpV>lber<_C9eBJ5v|_O=+0Cm3}_Nh5b5fAAYTe{YiAW+Rp4FRB!0Vx7Y$o_kI< zIB0}PL>t%Xx6B@WmP;oT-5)1%LMpD)U9MMVUm^q!_8vh|DN_K*HN$#?;E6Ysz~tD| zT2HNx-?2g zKvXS$m6@~!UPs41#p9OYWH`2Plw^B-^10Y7 zseZSj&;aNk21UCz)+u4yvGkJ2JK|<%q1Bk)YXjmu2;{-_1G(#thzF>)J5kVRi3Wo< zoA=v$iD1CDQDaDC1>a`&TUA5PlvR#BY&wzVhJd4aHThMcdX`vr z`+Gw_)__I4ZFh#mY;E1tT)e}VS_nBzk}bYtPO9%_O+Ti;Xi(Tmvhz>uCsdWWAxiL+ zZZ3#C^KQ933+F_J&!K3HAxFCn^J7In+dN0@#u-FF*QDIlDmMP(#}l+IB!v~CN@sT#R}p7DnfAE!IZuvT2C z>+GIE27=5~oj;X5Ot=X-B_EtS&X^QStb+;x`F9 zQdb4#^XI{biXCRZJh79jBvG)~U8k|8Kgdt%-;tlF=T^7GFr4lj)4Ivphho7EtF9!_ zej4C7lwK{#@#m$;kM<@U=s0d#tr4~TfoXocm$2HB+{Yq|g>`*VBiRC{D4-Y^!P>?* zovz*&7xg&$25~>RevR(o{s$P3Qmh69>8tR zyFSDY_&$)-KKvB^rSUDGD@rPWYX0^+J23r|vhoFWKvR8}jr-?vu{{`w(|+K*cQ>U{ z2W9kx;4l0$IbK^Fp1_)v#Kh$!Z3W6++mogN7wINdw3?GUbBmg_M$63|1r%gpXQ93W;Gll$Xo~p?gA-g|8Cob|rT_ zCjhQF`mdkeYu9&{=YwfQ^dkF?r_Fl1{nXz}3{HD~+!8<-sSSSF$%cfMo@NFU@}3Vt z?)M^}K=HIp8Uj5A&(^$cB-|>;>A$`55-YUZ_G1-m?#0HE3nzR{lHaghgZuO7n$^p& zXkNU~F6^@tURTv1E64SkT|>2(dl=Xk2`|u)K(dnrAqhqn<>1vgVGcpaWX9KwKsrEB zk@cVXeT$*#tWnod=|c7WkMA_N-lHA;DP=I)5H|Eud&Lqdv=e84*_yH+n*%rY-D~(3 z-z61 z^Pc!lQNXlB5dJWxGrju*5tiWHm%92M061dN89D`5(@AWiVL9IC{^cI`)6&!^C1ym-J~*C+4H z5XcyfVuLL(h;wV}+QmK0Qs6U^X2L>=U%68gWOC9Km%G6FbkYE)=db`IyvRN*Dzp#I z5(WqN+MZ3(GWp7#^weoQw1Z>k3`JxVHsmpv^&z_Xyt)a8kIm5{Nh#QbO*!$ww(!R& z+0Rog3x9qv$%9D$Ri1k*ezz&xkBof#3K#@h8c%YgU#C}I5kZO4V`eyg*XR>Dj2Yr; zn_~Oir3>E^bAamZK{xsLb0tQd!=M^rxsMl4f~)k%v1f@U*jV&2U8Y<&&Xi=oUVVw% z|IT;yitOI9dXBZLaQ!@c(L$Htrxj+$p^O7btYNmGrllFpd7gUaSxXshndQ!+!wIM-Jfxg<;afr zo@;4q27Gdk^UYIs{&!=!->YPjIJ6Z`_U35r`fV%Ob#KbXclkeSMoX+qO_*km?;M6U zqoxdOgl&rOFP+MMd@y~{4^bJqIW*oC7;Uy$@Ug8MTyWBS&o#%zbCP42o2h)qIPegr zvHb5D2)(j>LqO1f_1n6k_TG=yd86&X zft;N)4yET+;j>ewWz7ZS6~*$?rmH6{XY902}u) zh+>W>?3o0n5{?ZP3+yoDYzQ+bq#HyvT|MYsv=Z`Kt7r^U!@JTXpP>5CBkWM&^|RC# zK@ypuJ@*QwobdARTD`c%{&HE*YPXR-moK(%pQl9heERA(2{GsBZ0+}B?Z#?uigX_W zg@e0O@cQK7%RfRBrJ?;VYvp1zd{razo!8#SzLL{To9aWc^MG^21Z z#2+@SZ~MAqD~r!}&d9v)k@eg69*3G4&qkfb8K=C@O4t1X&pu+HHUUxRREhwohM@%U zl&D4j^wZ00iiLx{j@xzCdzi-7{I7H3s;4kn)7s+Y0>T{li4fO@_1@u1rfBD7(iX8t znclEzwK+$0uIFdgO|$7l5T{_whDo7xMqPXgyTrN8eb3rK@fSb^!odR;ygcmU zsdi(#Y2Yk!%I*U7OTPNiM1l1A9VzYopH4II( zUD<-{q4W<|*eDyG5aN$-v3GwFQ~vBE_HfF4O)IYsdrbX+rp(X=^E_>1+mC$SGMxrz zo#*06pI=$_CxSufuAh-EMma-9_N>%9w{k!$`6<8?z$shoT3vF!DhzSEwkCd(Hd`2c zJmCeq_iY%W1P|ZEaY`u6Q3qz56=P@^vU0x+w6FO}_j{E1ol#NUW-|voL9RCK!)JV% zoevj_DQuC`@5xqCY%@xIR+k>(np}W6-)3&S`v|>9u{b;h!hdPjt@Clx{bhDnkgw{* z_q`*f&X(EuvYc06R&%2a8#*xwyv`Fu6_V8%kTJw~@0PEERL3Ppyb^(uE#{@!1@y`x zF0yyayj8DB@y%)05(k^KW_`-V@Dnt4Karc7bDb~)cQ zS1O+>e3l>u29NjT`KeyH`EVAjJ0@zBRHkTf;lDMX_WJmIn|yu0(aypigF$0Z_SViv z!ZizM3LfNFhUV1>BMwAqRMUJ*ELS4Aj?%7bkEo>Pv~Mj;I;x|!8df|s%qaz|4InT~ ztF}{iot53Nh73XkkgzkrFIlpdsJqn3i`r`QWR*V+`PCG~JS;`THSMNXT)DvMn;8?V zUiPNGuUPKgWVCuTA;*+wMruUaf_tOgyffmDe>id8m%HtNo>O_Ij?F#$_;DC_(xb<$ zseyiJM8e*%0GdAk@MAEG);OZ>?a|eIA;yz|QWH=_ZpNvtR{^G7JMB zn$+*2wh)fd<9mDPtQFrkgDY3lQ+oT!;RWj#UNB9g12)(clAS21Fu1uHSL?)t7Xw6! z+?d&qNeg$0{W>V^L39oJ6yY$YGf+xCLqG+s3J95*;~^0U$Ndi6;53}W+Ul(#tLv*8 zmKoNSdj87GWN4hPv%XOj+PE}K-7g1on=qYcu-%+4d7ws8S9#ZHYJ)(BN@Bmf z=`b@mMcRnvJFCBWxK^zLXC_}u;;Z!6d8!FmPS+}(MXJ#g*_SYEfIQ~Y2pi13Cu&j` zl~(aSXDDtGdoZOw>~Ugo4o_V2N^)9H7V#1cDV1Fhyqali%f$ng^s{5`68nTJ`Fz@iv;Sv9n(~@W zK{v(C6Po9}>t-*9^cp@+-6ui|$CCAyGt=2SYq!B5REb7wa$>P1AVunUm0r3rdE-(4 zy4)9l(u2LXPp_==m!XK|DxJBb8(pof?%~xBC1AyC2~2irOhtG#hJXbada+*F+HVv_ zdz^9pB9NRyVQ%rrot+F`6MfNJmue9Ks??s?;g$OGr;b+O=kqZChF_}eYvg@NzN!!M z-&;$0eLQS5S*doba{LY@>Rqt*9pvF1tsY_- zfcwTCVPXI_P%E~$Y>c$8gduUR!eQ)XQZO7s+5_4G@FGU4u#o(rX7UexE(~ThodTS&Z8vW66@fcNelO9LLxJQgHl^UtG-N z5JJ|Igx03^ctUw|^7by(PWi)|ncLGXLGSNtuq~`S(7m~p1HNRnYKq?Z1rjKqT=J*t>>;9FLwWk zdgu7+z_O{$i{2iiRqT@z2~ySf9HSyj4kixFN^tN@Aa3b!^d3&$@I)g4vwB?jPV=t9 zn!=qMm+?ngGvOk(+9}c;T|OU|IeTZH%22FiK6%haVTvCz(#tdJGmcC>E z10=`G?ol`Sf`+oT@@9>`vJ z_{YwBsP~-DFI7!YEO_7a?@z9&iTUga+X&x&jj6wn?Zm2Vz{dd{#KlmkPe zX&srN|FX$Ac@s}}DVa@e^E->kLW-tI;o|XJ-bz3!s^etucXoDP1`(_wP{n{QRcz8I zR`kB6;hJMo=mMQH9g)kD8e;*M8wo69Q=DgMm)ZVHCGTUi{F&|<|9Jn~B+)gs<#{y% zaA-Q0kW>INjF|}TV{B18jOdabe;u_BFvNmc!ZuaL9!ppaw>OuD5x90}@`cz7HCC~f znM^d9hCSh2o|&;BxF;>!5K;x7)6Qo~>9<*lJJ-?8BlfM-Ic8F&=WjPi&Rv$@+3=qx z;v2XsuwH;e=?9AWHQwmty=63_>wM|fMY7qj^R+|$B^wcv`ZV(!*JG=k=N{gThgzWp z5`sMlyjtw07Hx^=_6V)XNS*@FmyhtT@?)+{0TJz$Zldx;4F4ZhZygo&{zVPXfPf+m zN_Tg6N)DhP1JWTK(%qnR4=o@)2q=w!v4ED=>yR#F}cYOOIodld+aPRx$oN3u|KS?YfpIG?{Ke7ZW+Al`fZtqZ1TS! zW#e{u=2X$fDoHMgW^2rx`v_;z=oxOv74lQdazR*z>>F3hxDB0sM`kS1Mo<-wp1>Uw zJ1hjGro9)Fk|>F0O1_Fn&j0$uW3|RX&iVZ5(psgsWO#+s*Cwj#HYvQ!$QOPB@felL z?%9syK^N9n^Xepi!`|1aABFD%e|R+X$6BXoO2sT}TwWO&v>MPv`XG?u(GT%yGn}2W zk6UkV&sW z$F;Z^^aF0&za5V6xF2Q-^}BM$Eeo!T{Enrg=o1RBKmRJ(+(LmQqg}~N@FaXTEAJgL zPdB&kO+h9}59I#5?z4rhQ=>OMFk7 zBg10R_h|%n0$S+qxAWtd*z`@po(D%H+|=KiB{h*CPZ#p@Ka6K7A1koT&s7pUV}!`J zUD7eqy|^^VSS=G#a!%RV3CbVl*i?)WlZrIV*E(=+Zp?o{?Gzn?0wa=)QV1Jr5T1#% zBD%^m=;H4q6NtlcN~yFaE1X*Ob&pz^Y}I9yx(M5e2YotDY!RXAXK)zn#<-b1!m<8K zoNfN#9>KIfcM77Dr1J_)nuzPWguesMnsE`ppf5I?WH?(c^DsySUe_Ut)MU2DzcaFG zUK-iIE<#`BD#R(Sm^vTVGTJgL@yujU`N9M=KEKsAk=EY+1{^X7rj43z->}8-=7l}! zk>^ffexX_KH*sjof)>9~)MY#UR?F%SzR&K` z@^(Uu-`$Op&TcqE#_A+;kU}@PpM+1`1U@Yy`LSK{=gIs6T^Eh+Ch4_cBSVom!)T@Ue>rcYx5LT>a>L6n>o}SN0IZ zs5;D&QcDZ%pLBo4U@yWv2QcJUk*_PZt+N^!|E&!~VvzP5MPm&n)FN?ty{#fl?dEIZ ztl8+x_9So#aP8Y;AwRrs^Iz14^*Hq8b*)zOGg7ps&+P{iSlz^|eiM>q{K%haHr$O2 z-yAm?5kcIDQqUZM(+r>a(T;uDb$7+#$u^2A&fq&?jVJgjW=KavPt>SPL_zINXJ{p4 zoY^!*@As?wsn68=zbpuc)bNp7dsHy|L)xyGRFxzLZIY&1>S*BdR$H}tF_a$AwQM z8E#!j|528SOWZ5Y^(YzG92e0-W>#wNPyR81CaK-|wKqxaDGHyE%2WYgEf@W~pz)ddb=^z@JY{B>5=fgv&p|#brKp zRJA+wt`*+9LRnft8O=*yAmkow>r0op*>oALLE-UQv>W|qakE}Pk4~W;oKXE+DwQ1a z{qa4IqZS5S*8d(EudJz2C`~9ksoNI&6kT9m!jZdb@ky)KxVj?fmi|jD&*Uo+jEHC| zk|0wiWzRbCEN0y;v#Pt7Km8kJ2`lwk`ySsWGx1>O8Yz`51B%c;L|l9lq2xyUA?Z3*F;)+gi(7uv)p$lmw@veD(2lV zpGu)z8->3)#)}{-`%4esj`?BI`;btl`XaAn9zX5nUK1cPk~#9Krgj*+ zP!Nr5;z!v5wlEv#lL%e~lxe#}UpLEZw517>4FSikCy)Zs*C~0~s;ZBc&naox{G$O{js4P( zVXjS#Qe!6Pip2FxP2PyOl^%~k^u(Hd(XAl3OsjlpDO$igobA$Sk3V{W zXZvn^sV1VX!ra02C@!DAZ|7&s4Zp6m=#j5LBqSW3ys%?dEvx(4QFQ%`_6jL?(^Oy= z5ixkfK381)yT=ycJe@jX_1k+du;U)dusF?>S?OjqXgkgLvPbEI;mHOT%^7DL52>AFmamUbe0+_kc!p76kjiv|}-`m(DqF;;o+ zDGJeAV`&rLJ=RKoAdYiG@}#lxJ|2Mq7nBS0*SE&+%K5E_4Tz zkV*wM0sAQ!T?`HfLfx;-rCoL+4*-sNKRtNSsk}^K(g9{7 zp-iZG9ED(@>{1?0DySl}^M!a9a)r5A@w&6YZl-pNhq+M^Qw56l{s}gI7QG9GTiObU zwih};=5e$vmx>#g%wc#f*D~*?p&N6hWVl}?ioHciu z2L*`>D6kOEx#W@Ti3H7Be+DTsdd&GKq2=>v;T<7@pHI4l;>n{`w9$45!OzeJfU+vJ zFA-5nyVv*I3Rm4`U45BUFTI+L*!kukp-cofCXr$nQ#d`EwNYr0tmQl)On#rCjDgJvVGraFWM6&D<$^ zn+b0}j>k?g$yG9qQ>@l0^u;;-P6iHF(VvjT4p!sE-Stt_RL~}RvArFXpRz-zS3Ho= zxLr}cym4xgbW6fUSG)X6#NIoPJw)`ox3qF`Y z4&7%V5|-N}Q^St(J3KMR(X)`{K@*`D9i00{?d3{iqE4F`EszvhlSxx9NW68uho?5% zxCMq7zHHo-;AnsJ#CEdy27qE%A(^C~;kw-x)tmvYd$2$>lRhtt!6V7Xecm2%`8 zzWF_r5~r`!i(8)i_OZGivM%|X;n4UFwxDj*5XB+FYkc_KSd4wouYNzH)yui(>N$7P z0@?x5e}bucFINxe5Ov%J()! zSam#s$$2~4vb)Ea&wQZ^^3>A#4LKXG8?>nHDf6{;z+;@WJbwmaUJ1}g zWhu?$m~6?r%~TX~jL`62zB9%Y$Q(y}5dHFGjcesz%Y|`dV6< zWDq=cBhS1fdo0Oj{MV54op1{s-l$4>-?n2(K(^`XePO4*D{9=>b*B3vx!*k+4aeF# z`Z7FsnDzVcGwmym+K@=F|oFCge z>%h6$ID(q$8KuG`cD6v-$d>ssQ{{|qp?JKnSzQo||1-MV6r-x3&U#ROY(n8Q1R*M! z^7wd~XIy`-GA+m$TD{DOmFdLd-V3%fvK^*ISoYLG-G9|w#X<3meK5PqM;#m0cFwnX zM)kOAQK7=UnK>0uH15A=nYT}OFOqooXb&i;3U<28;Ug^DRWVk1+qWUg zRZd;1Bc79}%$YxodgDa$4#B}V+m5UH+v=XCW=D9XGXaVuZzPLz_&jbp!OQs?f&06En_yHR?GR{iYu%Oo`ZVS zn+TL=J_7%WHt6MkijDaCHHpk~UrgT%B2|%O2D^Km_6V=+=>sj1ct|&nay)tLKv9S& zhmHH&n{=K$;2>B5bAH$!AF9>3a8;?X3+lmE)WL(LV<0@-W6>)=(v5iV{t3opcKrqB z+`<0xZV)$%DuI(P?Z>?34b4Gx`$WR~?zD&(zf4Gt{b+p`Wshl)l{;PJ7_`Jx)cp{e zK4Ugo&9#v=87v_g(V9Zuzda-^-%0UgqHQ5Vc*Ug}uH&uso_z>695W{!mc=(sSNYP+ zgr8!Y=+WTM?8ZnD|7XEqOgJVQjgkE~@{>gjJrB+KH%bOSpXlsC=H{HJvkFb2dD)Vg zB?hq+?UuSFXM;{j=t59r4|0$qbr&ZjMBl~b&Y$z}=OIdtI?i}(F{j+z zH-Az=osh{oR1$T`WD~jg7m;{ zLDU<;Ew)|x!r0F<=GNtDeK})(@!O5>~n;a+f6C|H1$aDry>#XJMh+YdqZNXMVN8 z+;UGLZR#Cg{L_i7G6Ogyq=!Gm>NA`B3ZOZtl;Ay~wq;#%jVYTp6=7F=E&BsifaK-_ zW#a3-i15!eDBIW4r$228y7`4#&U}q(z&`v;xITox@ zg)F4AYx*T6o|@V+EYLRFz<rm|hFdxwQTm z9^1}Qr>BdQHd}Tm@V?wk1V@c4p9mn!sDnu(=%N{o(SDhqJI@)k7C%~xV(rOTX1#&l z@ONkh9}m3Pr_H_+>|SQ>%)NYFejy28`r9>dvry?dwWA_I9pclmahJ}-GUgSxTFkFg zmAsYC0BljSHaihjzcMbY>=jf2IP~&ra+m%oF96xMGuq zW1otv;wmlE{o2{HcY&LXjD+XW9Fh!Ub*tAnR4sHM(=k$AWoK@Jdw!`|N$I91gRQ>} zzWoD$guordi6G+8Z(!>a*h}CMpQs0J{}KzcSr1X&Nq4!(pj`QyCCy70Qf~Ji0gK9n z&U8V;?XY~lfyn#iLIfc!I_tV9YPD=uA?wDrsAtCDO-3!Y3h8m;Qh%OlnG)nAgz*LE~d0N_RLIRrJ~C)!@9WnM2T9W4#prV!h-H}u;p=HcLG z%dC#V57^FfGC8lGL9~n|*{Dz!nfR#E2ErTz&9c<6VKfhy(c^>MxNcMOe7LULr#f5w z#svf)S{2dVuMK4gY@3JNviZI^L*{okf(kkI?+~g!bOAwE5<(pH{PW#Wb`zVQ-? z5nrD`SQeCFo~Ar=;_9M`=z`>>J!reB)|z+}{1^(kp|o^H{a|!?)le`k?c=(Yfpw?I z5cYk*?CPy96@cWbG>XgRej@j{nt!I4u(D$KxK3P0jXX_OVm?7;CMuNQ0REt)mJ8~6 z`qumF`Qmqqf@15~s&1=g9~{h&T}%P<g~3sI>Wi(IEap&PXFQM+&*%o?t`>3jF(^ zp|+HgfTAs5pxGi5FVcvhWEX%*0w?{p;Hx;j(HdRPJ9E$9%sx|DA^`siaFkgKXbR?% zl%D=}#o|&K~4L+Y|xq~s` zh-@;-jdy-PpagD|>C<)n?_5(Q;~?wW+E0WXOxc z7_JsKYtl>UtPK+czJ258IJlPdiF}ILd2m z2t8*l^8IOwh+{tyLy7aY;jea$ZnnvHjU6(@D0CZ9+9Je=cg$3*g-jYt3B1Ny&15 zASK)-bZ{-|^y-ynhc3l$t)ozK8PkoVUophAV1lwOJYK~$*jH8f?pzM%|& zG)h@*9JRo`>jpzUVz?WFm~|o@uwl}X4YsuDPkU_wlL{w1nGxR6w)gH14Zm?CQ2#>B~3(;MC2*X5%F4WH_kbre5w`Z%G{ns`9xN;!MW2lam>K!?3% zlmU(>ZCR9nieB}IT$qY|HnRt0T{WovpA~(pi3As`=~N1-^%pWhlD(-5uUiH~IFgS^ zLv1NN)H(5w`aRP@jL}b)ygI~JYQQ-}h$phmV>Wr82$~H&-2>CjdwWD@7gdG|G#i4da*}+cTkRZ)NMaJn>ugPBhHamkY^V(ZWq?U`|H3gMdWNKaw zIR(`p6(C)z_d9FV%rC}{O(2N1(g=A1FItyY!h-lifOvCa1cH%G{(DDuBd;>?%9kso zx!33<9U_=j=PkJxNauy;{=#8MozhKZ{PU#M8W^e+m?RdINeL^HhytR@E!xD^dtruu zeCnqvbgKBdBBih+bcNR?Ru5QPxvpS1*Kyc}n`WFk7KRK;g8r!{Cl+S_KMsHNN1{!w z(vQbKY+xKWb*6l%R)b_+mzWBa`2a?=PB=D|Tvku4&yc+*!?zJq7@k@h7Odn@1ch#tco9UmahX2`g7&&l zp=8hr@JKm-y=*~+B#KL+(?7<-G)$}@yb}|RW^@HD|3(SN;4(ofbAGRXqMHeK&p-mv zKlre~d_fz5WaFp=v#ojJ>A*a0b7W|dEG9E}gdfYkHBR>s7Bq*+F&|u>XGl`w|H_rJzFB zKd#;hrBiGgs{mCzC4g#*ikWUI&~*|SUc!bAgQ^VW1QI+gf6j}R0N8j8_goP38o@#u z8DK-B-?9DoNj6f)e&xCb3^(Em2;x{68f1(0|2Uml;8MIk0>Q<`<-7H2GI}aP6kAY- zetgF)Tm{O7aBVQuthgo9kZ%7~<5F4?@D0t)>7|_GBqK3kP^BRp5d8BSJW+lf)W+9O zAsePN|L)=_610C9T6d#CNw$~RmsKsrKlPu}(?(99jJ-8>i}Fw%?M$#1ss~%w zK8Fz`Kp)E|kA^0K1TfseJhW88;(5dLR^eE%FDr4<-~`rJGB9Bn4>{GFS!ap=E*lR$ z)i@E5;93)-|Nqwa?4l%~#3+{ct0frL&11!7(Zjw!O%5}4)nUIh)aNWzH$PhwK z!z5tPl5VEfa*#r&#wHn1z~lS~ph`Wc_S{R zqzHmmiXi_BkP2#e8WbHVv;mue1c&_dGl^#s@Ue?P{EYMOTj#;2TKmqew0!}5(b#A- z1>i5I@8E%_z+8nQFk`h8Un#cMQPl zOgO?jUMKy6Ye!v_TFFdm(iel-k_$~-iTqY?dlKl^=6w#_3yX7$dR z>?C)!;pfqZjJ?3fNx;cOip`<; z(&7RdL3m2x3yjjQCTkhS10CbaDeNaQiShX164#rwkHgvenB&Inp*`dtv$+Q)!0M=` zB=%2!hdft4-<>+kya1Ng7#o-T%{6`1`_WX`nu{o2xv%Iy)`)L-38?DZccfz^Bi&FN zyFtwQpHKnc82+zsWD9&k#=pzUD&rj+J#Q=2aW-;7ASs6qK|v=N3JnF*0ptm64y|{!(w|Sh z0DSWkp^98md9OwQ?W?Qno${KjZ2xQKse3@^Q?WeNkAlj8QtpE&P-e-@LxIn}3+-*) zu7epzC7LajF@Hpj$A^`9#Y3?n15OaHtbS%}$@BL-QVkEeJ_Sx)B2~@@WD5%oRi0h0 z^($pF1sk7Zc|MGKHX}m&_erg!IA-{j(Fs|LW<2($3j*TEglT|Tv=I-Si^6Jd5$h2; zKg1JcxR}>5BwNDI4A4FM=n*sJu{lJ&w<+v%UIH+YOWQXc$@?u#x^+n3eJyipZWX83 z%5pX^-`rg^{3VNjp{v_PS-|qD{Ug;%90ANEF^75-dE`lUWn@TEpFmzj&R-DZ3Lg|Z zj)Pt4{$`LOs(zJ(~*0wXRa)vT4(OQq4i8sxX5BC?X z1;9t4OWUF)J*{6c=xqGzu+YLGMPnAb^I6#CYfGw-{nki9Stpy#P|imJ7LD#2an0$f z8-VL&iV7h*n`oq(vd>iRpF&qS_^|vB=K7(MG=KmVW|EXcO+YoZ630VHWhX(2|F4mZ zz=B+{U?<4?S@xum-|+I0yayC!$uSvKBdxA9pHd;w7nyY!yS0-Od@ z%|3MkG(`Bpj9Zismtm{@8Cv%BYcGlUZIZrIkkE|D#If!GQbzHQT@kypfZgH&I8RUt z7~Z6JcgNGNWk1{&3Yh#o;+M*DJD4}2vp5`G)Hm998M#T-7P$`g{};I*^?qLcaD zl|S}>k13v%)!NT(PZP4=-HSLo2TsaXUd}h_ryc$ffb$%TAP>wYOJXRmmXM6}U zjue1sfzpuB=2ora8Hu!6h2GDZ2Qj0ysNjd67+Sh=|3naX-wi2yjEc)w%Xzq#k{UHg zttb6HVaM{+ZgdyzRfLe7o44MI{ZR<{cAoMqs_rMS?W<4VtXgH8$H1_`3n?qI#hToY zATC@Hg`Yh@H$vh#w^=t#D(H`G29J4UXj{b>Q4jkw`J*z&NbV;C-W0&xLP#OdNoIJF zv66WV+*y|Y5{8#jy$0qLNw%BV-;raj4&kVmm6TCw3g}K220El==nwa;U*WC08l zKCE5O;k}#v&<5%uHzdpka$gX0!I1)33O&A!V-!5%`G1~%mY6WV-x$Ib)JYZWQ!Y`^og(6T0=H)@(R3atoWuz*&)f8_-*5xLIdEjfB7LuvyF z!&jL5{9S?JonnpRgw@_;@JT(+-nol=nV0t23=V#m>8pQJ4YC6216R8<-b_$v)3N*TCFGS80$AYyOwXb5 z-NCEQr_@dJ{5E4l7xI8u;F#VjnX2sOmuHpj%CgJEDL@3kF;!)r2+XhT2uPtYE&J63 zJoxWDrTIJgCG4$OVeAAzeCRgcg%*_Rh( zq_7c*dkDA(t6X{fGJg{Uq^suAQX+)^*amSg=j|}s!qpS%6aLdae`4>*OfI&N?-%jI zC#|Q%Dczt?ogKl?@R4?YVN=jauY<^IL{NAIshN&UjR2TT7qrc%NLVyZ86 zlmgZTj(n6t$Ncs`D)GToe{9G`{&IFHWwg9O#uTfq*;~*j`EjFR;U{cJ8r0XCP5(w@ zJUMjlL*Gay?~h?2r$3Hc;$QRGE-k+K4!4FpP>@L)%4w5l(l^O8cpQ}Vn0ia1Vo z@o$=R>X0!r=!r(_=m6Z@>=(%oBjqz)~O9+$1Z@@08 znl!olFIc9Qt2(BFal@B);J9hix_kO;2*;q#K2t#Ajj9-?k)`;6uwyKxBnL1@SMZ%e zmi({yE6Vm|Y>}7DHwu{soN}s_YWL`K1!qGj&fBwch=*T^h1&neJ26v% z6$;XSBvGR);MX{(mf;$?!-y1pvAP)*tLMxt`##;-CwD0}{#981N zvgIrmu2>cz;K?K`cC9PC-=DT|LaVbeGOAw<7≪{=NNWdAi5`Wxz5`}lD3wURW57ttR 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

lMPY6Cn zUIemctK#{ts>5@%MtIZO9Gm>+wn-&6Ov>jm?`XGVzvbF<Gj1aaS z;)ij-m-Jfw`z7)KVhyAq6(4BdZUaKM20Bez)KHD-B=^DQXIy&1g}nnV$xSP~P+Hli zs3-rQv-?dRMq{~_#uU8Y)swR0S7_~_>#x2ZPV+J6KZUR1={5cRWhy}bH>v=aNjX>* zE|}|T3f0Cl+4o>m3GX4P?2RCgyRc{IeG<@`^Q(vGcYZ4g_dF6FmvX!RfS5^NbQD>j z1E4!fjjFjBhf34QO!e-{M*sKt`u~^aGZ~l@x{Rga@{EnzWZ$?N`mTVC9U7v*Mp~Wr zp672WvvBQiKgHJn*WI;#HId$7Mc9L&2aq7BD3BX72vJbEs0Bi!45F3A zk`)DY)#aig+>*%JqUxSBg#~N$|%OZEw6TMh7qge(Iy0uA~}seCZL51 ziu;)XF{c;)egB)NnG?^VB7~6I;KX~>}1uTGW^I{Ok-BM>ZrU=>zDF7Tlo$*>MF8w|N8 zX9;B0lzUrWEaO?YxCn*PwQtUBu|LZ5CEibz4Rr!W0>zt@BthfLN4jxXGE*uwBGmMu zQW{6GQQQ>YpDcV>Iv0ZPJf!(RZqaHi32is%7WFCE-!agEYRZvzLh;InZc{P-9j;zn zj?56o-WFpEVUIPlV=>^Sc+Mb7Lc`z3QwJys)BcCQhg3%%WP(bBz>fs|1TdLrnt3{1 zCG@0L4LG;RF{i6Zvr9>gu@Z9|A(K}=gqI;d7v(CL#`)*&RVjEIf6G6=cl>i*mA+&h z4-v7z84$dj2A&4=%0!t=m`RE((hyogV@kSNCl5(eZr+-F%99pWYvMZqBF8F1(<=we z3n_AK@ru7?a)0UQ%d;v1U6$bzT>EeLJPFiOl#Lu8gTPWGQMH%xD@EwI7j^$G8EM_% zd|>K`w=`L@z(!<3Iy0+Ws30B@5%_n^=lw0aL$}qK=6sm-%MUU>&mZ|J-IbK1PiXtC z2xg`l`NN*dL>mQa*rAL7;om7JZSCT-E*+&RRbBs^t}5r$j>9{?Sv#Q6-0uWJIo%Em zE;KK63F6#(665MH$<<>AKQ_sN=j{w*wXS$j*K_0aGJy?Agp*LAQooaw9(D7nfl$7D z+&j2Jbz*)0sKp~L0;4hMT!Gx7#9{2~nH7h61rJx9>9?VWg&d3qp;{vqgpD)mxVp(mmX z-t$`}xi(S46&^D{Irpp)L2#)UiZa*c%PDmo@w}onX=`n>uQpj9_dSiKRp7 zeiZYdy4<>+*z^EYjFR_ts0|WulZ=RD`7fJ zg(3yEF#NAjJ|cV~@ht`{ImxE$>T`e#iT6kC^3TDnpt%B=t`hoC`*1@kgD&+? zDrQVAxa#KB-?c&8=DSCTn*7EWWMMR1BL?n%yJ9zf4>=h>wfGwoZ+I3v2o>hxsFVrZ zi$~w-o8j5Lzrct_Bd#HHYFhIVv>lr})(l-lFe<#ci<+5&re{J?9kXgE?qS~REM|^9 zcCtFCuBvv?#LF&NKn#aztOlt3IYsOEg z|6q^L&w?G)`)NPo=mW>)WHo><_?l_RC==SUg;pjQp9%-^8(`dQf(PSA86l4!$obL{ zo?v~s{l!BnyMZh4#ACcRU0mUWcd!3#2HAxes*BIM!i%PXf5q1<6B1Jg=H|2l#$Ms- zw;tm?(QKT@ar~}^uSk&@NN+L7VV0+3c-LWLz~&kg0jsZfw%E>}d)*dL95=_2AqeTu zA1r;{=ix`aaK&bOGdZhfJJU6Y{!H6@*#1Mna=$rW6kXr?fBi+GzK+{+yQG Date: Mon, 17 Apr 2023 13:58:19 -0400 Subject: [PATCH 04/10] Update CIDRs and Backward compatability section Signed-off-by: Aswin Suryanarayanan --- submariner/OVN-Interconnect.md | 37 ++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/submariner/OVN-Interconnect.md b/submariner/OVN-Interconnect.md index b8c8aad1..1d43ffad 100644 --- a/submariner/OVN-Interconnect.md +++ b/submariner/OVN-Interconnect.md @@ -30,7 +30,7 @@ With OVN Interconnect we can have two types of deployment name: cluster2-worker ``` -* Multiple Zone: In a multiple-zone setup, we will have an OVN database and a set of master nodes for each zone. Transit switches connect the +* Multiple Zone: In a multiple-zone setup, we will have an OVN database and a master pod for each zone. Transit switches connect the zones. The OVN-Kubernetes services ensure that the necessary routes are added for pod and service reachability across nodes in different zones. @@ -52,14 +52,15 @@ be able to reach remote clusters connected via Submariner. ### Route APIs -As a part of this proposal, we are planning to add two new CRDs in Submariner +As part of this proposal, we are planning to add two new CRDs in Submariner #### SubmarinerGwRoute -This CR will be created when a remote endpoint is added and there will be one CR per remote cluster. This crd have two fields +This CR will be created when a remote endpoint is added and there will be one CR per remote cluster. This crd has two fields * NextHop - Specifies the next hop to reach the remote cluster. -* RemoteCIDR - Specifies the list of remote CIDRS reachable via this cluster. +* RemoteCIDR - Specifies the list of remote CIDRs reachable via this cluster, in this case it will be the IP of ovn-k8s-mp0 +interface. This CR will be used by the gateway pod to program OVN to send the traffic destined to remote clusters to the Submariner tunnel. @@ -111,12 +112,12 @@ type SubmarinerRoutePolicySpec struct { ## Design Details -In this proposal, the plan is to remove the Submariner router and switches that it add to OVN db. The network-plugin-syncer shall be removed -and can be replaced by controllers in Submariner Gateway and Submariner RouteAgent. Since we have multiple ovn db to program, we need multiple -connections. So it makes it easier to program the OVN datapath from Submariner Gateway and RouteAgent, than using a separate pod. -This new approach will work for both IC enabled and existing deployments. With this change we are planning to use the ovn-k8s-mp0 interface -to reach the host networking stack and then the Submariner tunnel. This interface is used by OVN for host-networking traffic with in a cluster -and will be present in every node. +In this proposal, the plan is to remove the current `submariner-router` and switches that were added to the OVN db. The network-plugin-syncer +shall be removed and can be replaced by controllers in Submariner Gateway and Submariner RouteAgent. Since we have multiple ovn db to +program, we need multiple connections. So it makes it easier to program the OVN datapath from Submariner Gateway and RouteAgent, than using +a separate pod. This new approach will work for both IC enabled and existing deployments. With this change we are planning to use the +ovn-k8s-mp0 interface to reach the host networking stack and then the Submariner tunnel. This interface is used by OVN for host-networking +traffic with in a cluster and will be present in every node. ![UpdatedTopology](./images/submariner-ovn-ic.png) @@ -140,7 +141,7 @@ redirect any traffic destined to remote CIDR to the ovn-k8s-mp0 interface IP. _uuid : 0459f009-3603-47ac-8ee7-9d958540ed31 bfd : [] external_ids : {} -ip_prefix : "242.1.0.0/16" +ip_prefix : "10.132.0.0/16" nexthop : "10.244.1.2" options : {} output_port : [] @@ -165,7 +166,7 @@ This controller will run in every in route agent. This controller connects to th _uuid : 22db3005-64c5-4e32-aeb0-642423c30742 action : reroute external_ids : {} -match : "ip4.dst==242.1.0.0/16" +match : "ip4.dst==10.132.0.0/16" nexthop : [] nexthops : ["169.254.0.1"] options : {"external_ids:{submariner"="true}"} @@ -180,7 +181,7 @@ priority : 20000 _uuid : d55185d8-3732-45c1-ae90-4a7f8cd191f7 bfd : [] external_ids : {} -ip_prefix : "242.1.0.0/16" +ip_prefix : "10.132.0.0/16" nexthop : "10.244.1.2" options : {} output_port : [] @@ -191,7 +192,8 @@ route_table : "" ### Backward Compatibility With this architecture, we are removing the logical switches and routers that Submariner creates. During migration, we will need to delete -these components and the routes that network-plugin-syncer installed. After that, the new controllers shall install the updated routes. +these components and the routes that network-plugin-syncer installed. After that, the new controllers shall install the updated routes. The +operator needs to be updated as well, not to create a network-plugin-syncer pods and remove any existing deployments. ### Alternatives @@ -202,9 +204,10 @@ but by maintaining the submariner switches and router. While this should be easi #### Route Advertisement -Another alternative was explored which could leverage the [route advertisement]( -https://docs.ovn.org/en/latest/tutorials/ovn-interconnection.html#route-advertisement) feature in OVN. The idea was to use this capability -to advertise Submariner routes. But this feature seems to be not available in the OVN Kubernetes IC implementation. +Another alternative was explored which could leverage the +[route advertisement](https://docs.ovn.org/en/latest/tutorials/ovn-interconnection.html#route-advertisement) +feature in OVN. The idea was to use this capability to advertise Submariner routes. But this feature seems to be not available in the +OVN Kubernetes IC implementation. ## External Dependencies From aa90a0905f54f87dc05c51b2729b366381b5ddda Mon Sep 17 00:00:00 2001 From: Aswin Suryanarayanan Date: Wed, 26 Apr 2023 16:50:35 -0400 Subject: [PATCH 05/10] Added OpenIssues and Updated CRD name Signed-off-by: Aswin Suryanarayanan --- submariner/OVN-Interconnect.md | 34 ++++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/submariner/OVN-Interconnect.md b/submariner/OVN-Interconnect.md index 1d43ffad..c1471e3b 100644 --- a/submariner/OVN-Interconnect.md +++ b/submariner/OVN-Interconnect.md @@ -81,9 +81,9 @@ type SubmarinerRoutePolicySpec struct { } ``` -#### SubmarinerDefaultRoute +#### SubmarinerNonGWRoute -This CR will be created when a remote cluster is connected. When more remote clusters are added the Remote CIDR list will be updated. +This CR will be created when a remote cluster is connected. When more remote endpoints are added the Remote CIDR list will be updated. * NextHop - Specifies the next hop. * RemoteCIDR - Specifies the list of remote CIDRs reachable via this gateway. @@ -94,11 +94,11 @@ This CR will be used by the Routeagent pods to * In g/w node - add route to send the traffic from other zones, destined to remote cluster to the submariner tunnel ``` go -type SubmarinerDefaultRouteList struct { +type SubmarinerNonGWRouteList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata"` - Items []SubmarinerDefaultRoute `json:"items"` + Items []SubmarinerNonGWRoute `json:"items"` } type SubmarinerRoutePolicySpec struct { @@ -121,20 +121,22 @@ traffic with in a cluster and will be present in every node. ![UpdatedTopology](./images/submariner-ovn-ic.png) -### SubmarinerGatewayPod +### SubmarinerRouteAgentPod -The Submariner g/w pod will be responsible for creating the SubmarinerGWRoute CR. It will be used only for OVN CNI right now. For every +The Submariner Route-agent pod will be responsible for creating the SubmarinerGWRoute CR. It will be used only for OVN CNI right now. For every RemoteEndpointCreated event a SubmarinerGWRouteCR will be created. The nextHop will be the interface IP through which we can reach the cable driver. In the case of OVN it will be the IP of ovn-k8s-mp0 interface. -The SubmarinerDefaultRoute CRD will also be created by Submariner Gateway. It will have the list of remote clusters connected to the gateway. +The SubmarinerDefaultRoute CRD will also be created by Submariner Route-agent. It will have the list of remote clusters connected to the gateway. The nexthop will be the transit switch IP of the G/W node. If the transit switch IP is missing this CRD will not be created, which means it is a non-IC setup. +The Routeagent will have these controllers added to it + #### SubmarinerGWRouteCR Controller -This controller will be responsible for programming the OVN cluster router, and it shall be a part of Submariner g/w pod. When a SubmarinerGWRoute -CR is created or modified the controller shall create or update a routing policy in OVN cluster router with a priority of 20000, and it should +This controller will be responsible for programming the OVN cluster router, it will react only in a g/w node. When a SubmarinerGWRoute +CR is created or modified the controller shall create or update a routing policy in OVN cluster router with a priority of 20000, and it should redirect any traffic destined to remote CIDR to the ovn-k8s-mp0 interface IP. ```bash @@ -149,11 +151,7 @@ policy : [] route_table : "" ``` -#### SubmarinerRouteAgentPod - -The Routeagent will have a new controller added to it - -##### SubmarinerDefaultRouteController +##### SubmarinerNonGWRouteController This controller will run in every in route agent. This controller connects to the OVN DB. When a SubmarinerDefaultRoute CR is created @@ -195,6 +193,14 @@ With this architecture, we are removing the logical switches and routers that Su these components and the routes that network-plugin-syncer installed. After that, the new controllers shall install the updated routes. The operator needs to be updated as well, not to create a network-plugin-syncer pods and remove any existing deployments. +#### Open issues + +1. The update from older version of Submariner to a newer version will create a datapath downtime. +2. When multiple clusters are updated we need to check if one cluster can be done at a time. +3. When Kubernetes cluster is update to a version that have IC enabled, there could be a datapath downtime till the +Submariner g/w node is updated. Since the other nodes need the transit switch IP which will be available only when +the g/w node is updated. + ### Alternatives #### Adding extra routes From 8d10ad72b4d283c453e6a28ce5c4f7f03f611771 Mon Sep 17 00:00:00 2001 From: Aswin Suryanarayanan Date: Tue, 9 May 2023 16:14:21 -0400 Subject: [PATCH 06/10] Added details about upgrade and fixed errors Signed-off-by: Aswin Suryanarayanan --- submariner/OVN-Interconnect.md | 74 +++++++++++++++++++--------------- 1 file changed, 41 insertions(+), 33 deletions(-) diff --git a/submariner/OVN-Interconnect.md b/submariner/OVN-Interconnect.md index c1471e3b..03a54f2f 100644 --- a/submariner/OVN-Interconnect.md +++ b/submariner/OVN-Interconnect.md @@ -4,9 +4,9 @@ ## Summary -OVN CNI is moving to a new network topology powered by OVN Interconnect Feature. This allows independent OVN deployments to be interconnected -by OVN-managed GENEVE tunnels. Submariner does not work with these changes out of the box and this proposal explains the changes required to -support it. +OVN CNI is moving to a new network topology powered by OVN Interconnect Feature. This allows independent OVN deployments, +within a kubernetes cluster, to be interconnected by OVN-managed GENEVE tunnels. Submariner does not work with these changes +out of the box and this proposal explains the changes required to support it. ## Proposal @@ -14,9 +14,11 @@ With OVN Interconnect we can have two types of deployment * Single Zone(Global Zone): A single-zone deployment will have only one OVN database and a set of master nodes programming it. This is similar to the topology that we use now. But it will have a single `global` zone assigned to it with a transit switch which is not involved in any - packet forwarding. Though this setup is expected to work by default, the subnet that the transit switch used overlaps with the subnet - Submariner uses for the logical router. In this proposal, we plan to remove the submariner router and the associated switches and this will - not be a problem anymore. The below indicates node annotations in a single zone OVN setup. + packet forwarding. Though this setup is expected to work by default, the subnet that the transit switch uses overlaps with the subnet + Submariner uses for the logical router. In this proposal, we plan to remove the submariner logical router and the associated switches and + this will not be a problem anymore. + + The below indicates node annotations in a single zone OVN setup and is added by OVN. ```bash annotations: @@ -30,7 +32,7 @@ With OVN Interconnect we can have two types of deployment name: cluster2-worker ``` -* Multiple Zone: In a multiple-zone setup, we will have an OVN database and a master pod for each zone. Transit switches connect the +* Multiple Zone: In a multiple-zone setup, we will have an OVN database and an OVN master pod for each zone. Transit switches connect the zones. The OVN-Kubernetes services ensure that the necessary routes are added for pod and service reachability across nodes in different zones. @@ -48,29 +50,33 @@ With OVN Interconnect we can have two types of deployment With the current architecture, Submariner adds routes only in the zone in which it is deployed. For example, if Submariner is deployed in zone 1 it programs OVN db in zone 1. So only pods in zone 1 nodes will be able to talk to other clusters. Pods in zone 2 or zone 3 will not -be able to reach remote clusters connected via Submariner. +be able to reach remote clusters connected via Submariner. With these changes we plan to support both the modes and cluster where interconnect +is not enabled as well. ### Route APIs -As part of this proposal, we are planning to add two new CRDs in Submariner +As part of this proposal, we are planning to add two new CRDs in Submariner. The plan is to decouple OVN dataplane programming so that this +can be moved to OVN, when OVN provides a way to add custom routes. We can propose this CRD or consume the CRD that they provide at a later +point of time. #### SubmarinerGwRoute This CR will be created when a remote endpoint is added and there will be one CR per remote cluster. This crd has two fields -* NextHop - Specifies the next hop to reach the remote cluster. -* RemoteCIDR - Specifies the list of remote CIDRs reachable via this cluster, in this case it will be the IP of ovn-k8s-mp0 -interface. +* NextHop - Specifies the next hop to reach the remote cluster, in this case it will be the IP of ovn-k8s-mp0 + interface, the interface used by OVN for host networking. +* RemoteCIDR - Specifies the list of remote CIDRs reachable via this cluster. -This CR will be used by the gateway pod to program OVN to send the traffic destined to remote clusters to the Submariner tunnel. +This CR will be used by the route agent pod running on the non-Gateway nodes to program OVN to send the traffic destined to +remote clusters via the Submariner tunnel. ``` go -type SubmarinerGwRouteList struct { - metav1.TypeMeta `json:",inline"` - metav1.ListMeta `json:"metadata"` +type SubmarinerGwRoute struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` - Items []SubmarinerGwRoute `json:"items"` - } + SubmarinerRoutePolicySpec SubmarinerRoutePolicySpec `json:"submarinerRoutePolicySpec"` +} type SubmarinerRoutePolicySpec struct { //Specifies the next hop to reach the remote CIDRs @@ -83,22 +89,22 @@ type SubmarinerRoutePolicySpec struct { #### SubmarinerNonGWRoute -This CR will be created when a remote cluster is connected. When more remote endpoints are added the Remote CIDR list will be updated. +This CR will be created when a remote endpoint is created. When more remote endpoints are added the Remote CIDR list will be updated. * NextHop - Specifies the next hop. * RemoteCIDR - Specifies the list of remote CIDRs reachable via this gateway. -This CR will be used by the Routeagent pods to +This CR will be used by the Routeagent pods running on the non-Gateway nodes to -* In non-g/w node - send the traffic to the g/w node , if the current node is in a different zone +* In non-g/w node - If the route-agent pod is not in the same zone as Gateway node zone, send the traffic to the g/w node zone. * In g/w node - add route to send the traffic from other zones, destined to remote cluster to the submariner tunnel ``` go -type SubmarinerNonGWRouteList struct { - metav1.TypeMeta `json:",inline"` - metav1.ListMeta `json:"metadata"` +type SubmarinerNonGWRoute struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` - Items []SubmarinerNonGWRoute `json:"items"` + SubmarinerRoutePolicySpec SubmarinerRoutePolicySpec `json:"submarinerRoutePolicySpec"` } type SubmarinerRoutePolicySpec struct { @@ -113,8 +119,8 @@ type SubmarinerRoutePolicySpec struct { ## Design Details In this proposal, the plan is to remove the current `submariner-router` and switches that were added to the OVN db. The network-plugin-syncer -shall be removed and can be replaced by controllers in Submariner Gateway and Submariner RouteAgent. Since we have multiple ovn db to -program, we need multiple connections. So it makes it easier to program the OVN datapath from Submariner Gateway and RouteAgent, than using +shall be removed and can be replaced by controllers in and Submariner RouteAgent. Since we have multiple ovn db to +program, we need multiple connections. So it makes it easier to program the OVN datapath from RouteAgent, than using a separate pod. This new approach will work for both IC enabled and existing deployments. With this change we are planning to use the ovn-k8s-mp0 interface to reach the host networking stack and then the Submariner tunnel. This interface is used by OVN for host-networking traffic with in a cluster and will be present in every node. @@ -127,7 +133,7 @@ The Submariner Route-agent pod will be responsible for creating the SubmarinerGW RemoteEndpointCreated event a SubmarinerGWRouteCR will be created. The nextHop will be the interface IP through which we can reach the cable driver. In the case of OVN it will be the IP of ovn-k8s-mp0 interface. -The SubmarinerDefaultRoute CRD will also be created by Submariner Route-agent. It will have the list of remote clusters connected to the gateway. +The SubmarinerDefaultRoute CRD will also be created by Submariner Route-agent. It will have the list of remote endpoints connected to the gateway. The nexthop will be the transit switch IP of the G/W node. If the transit switch IP is missing this CRD will not be created, which means it is a non-IC setup. @@ -153,7 +159,7 @@ route_table : "" ##### SubmarinerNonGWRouteController -This controller will run in every in route agent. This controller connects to the OVN DB. When a SubmarinerDefaultRoute CR is created +This controller will run in every route agent pod. This controller connects to the OVN DB. When a SubmarinerDefaultRoute CR is created * non-gateway node : it updates the DB with a router policy with a priority 20000 to send the traffic to the remote cluster via next hop mentioned, which is the transit switch IP to the g/w node. Before adding the route it checks if a route exists, if so it skips adding the @@ -189,14 +195,16 @@ route_table : "" ### Backward Compatibility -With this architecture, we are removing the logical switches and routers that Submariner creates. During migration, we will need to delete -these components and the routes that network-plugin-syncer installed. After that, the new controllers shall install the updated routes. The -operator needs to be updated as well, not to create a network-plugin-syncer pods and remove any existing deployments. +With this architecture, we are removing the logical switches and routers that Submariner created in the existing implementation. +During migration, we will need to delete these components and the routes that network-plugin-syncer installed. After that, +the new controllers shall install the updated routes. The operator needs to be updated as well, not to create a +network-plugin-syncer pods and remove any existing deployments. #### Open issues 1. The update from older version of Submariner to a newer version will create a datapath downtime. -2. When multiple clusters are updated we need to check if one cluster can be done at a time. +2. When multiple clusters are updated we need to check if one cluster can be done at a time. The cluster will be down +until all the nodes are updated. 3. When Kubernetes cluster is update to a version that have IC enabled, there could be a datapath downtime till the Submariner g/w node is updated. Since the other nodes need the transit switch IP which will be available only when the g/w node is updated. From 0383b8644f2fb9cfa43521cc428a65673a6d849b Mon Sep 17 00:00:00 2001 From: Aswin Suryanarayanan Date: Mon, 15 May 2023 16:15:34 -0400 Subject: [PATCH 07/10] Fix issue with sentences Co-authored-by: Sridhar Gaddam Signed-off-by: Aswin Suryanarayanan --- submariner/OVN-Interconnect.md | 40 ++++++++++++++++++---------------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/submariner/OVN-Interconnect.md b/submariner/OVN-Interconnect.md index 03a54f2f..630c8059 100644 --- a/submariner/OVN-Interconnect.md +++ b/submariner/OVN-Interconnect.md @@ -50,7 +50,9 @@ With OVN Interconnect we can have two types of deployment With the current architecture, Submariner adds routes only in the zone in which it is deployed. For example, if Submariner is deployed in zone 1 it programs OVN db in zone 1. So only pods in zone 1 nodes will be able to talk to other clusters. Pods in zone 2 or zone 3 will not -be able to reach remote clusters connected via Submariner. With these changes we plan to support both the modes and cluster where interconnect +be able to reach remote clusters connected via Submariner. + +As part of the proposal, we plan to support both the modes and OVN cluster deployments where interconnect is not enabled as well. ### Route APIs @@ -67,7 +69,7 @@ This CR will be created when a remote endpoint is added and there will be one CR interface, the interface used by OVN for host networking. * RemoteCIDR - Specifies the list of remote CIDRs reachable via this cluster. -This CR will be used by the route agent pod running on the non-Gateway nodes to program OVN to send the traffic destined to +This CR will be used by the route agent pod running on the non-Gateway node to program OVN to send the traffic destined to remote clusters via the Submariner tunnel. ``` go @@ -130,16 +132,16 @@ traffic with in a cluster and will be present in every node. ### SubmarinerRouteAgentPod The Submariner Route-agent pod will be responsible for creating the SubmarinerGWRoute CR. It will be used only for OVN CNI right now. For every -RemoteEndpointCreated event a SubmarinerGWRouteCR will be created. The nextHop will be the interface IP through which we can reach the cable +RemoteEndpointCreated event a SubmarinerGWRoute CR will be created. The nextHop will be the interface IP through which we can reach the cable driver. In the case of OVN it will be the IP of ovn-k8s-mp0 interface. -The SubmarinerDefaultRoute CRD will also be created by Submariner Route-agent. It will have the list of remote endpoints connected to the gateway. +The SubmarinerNonGWRoute CRD will also be created by Submariner Route-agent. It will have the list of remote endpoints connected to the gateway. The nexthop will be the transit switch IP of the G/W node. If the transit switch IP is missing this CRD will not be created, which means it is a non-IC setup. -The Routeagent will have these controllers added to it +The Routeagent will have these controllers added to it and the one running in gateway node responds to the CRUD operations. -#### SubmarinerGWRouteCR Controller +#### SubmarinerGWRoute CR Controller This controller will be responsible for programming the OVN cluster router, it will react only in a g/w node. When a SubmarinerGWRoute CR is created or modified the controller shall create or update a routing policy in OVN cluster router with a priority of 20000, and it should @@ -157,14 +159,14 @@ policy : [] route_table : "" ``` -##### SubmarinerNonGWRouteController +#### SubmarinerNonGWRoute Controller -This controller will run in every route agent pod. This controller connects to the OVN DB. When a SubmarinerDefaultRoute CR is created +This controller will run in every route agent pod. This controller connects to the OVN DB. When a SubmarinerNonGWRoute CR is created -* non-gateway node : it updates the DB with a router policy with a priority 20000 to send the traffic to the remote cluster via next hop - mentioned, which is the transit switch IP to the g/w node. Before adding the route it checks if a route exists, if so it skips adding the - route again. This is required to prevent duplicate update since there can be more than one node in each zone and hence more than one - Routeagent. +* non-gateway node : it updates the ovn-cluster-route with a router policy using a priority of 20000 to send the traffic to + the remote cluster via next hop mentioned, which is the transit switch IP to the g/w node. Before adding the route it checks if + a route exists, if so it skips adding the route again. This is required to prevent duplicate update since there can be more than + one node in each zone and hence more than one Routeagent. ```bash _uuid : 22db3005-64c5-4e32-aeb0-642423c30742 @@ -177,9 +179,9 @@ options : {"external_ids:{submariner"="true}"} priority : 20000 ``` -* gateway node/same zone node : In the gateway node route agent adds a route, if it does not exist, to send the traffic coming from other - zones which is destined to remote cluster IP range to the ovn-k8s-mp0 interface IP. It checks if the rule already exists to prevent duplicate - update. +* gateway node/same zone node : Route agent running on the Gateway node, programs a route in the ovn-cluster-router, to route + the traffic coming from other zones destined to remote cluster IP range via the ovn-k8s-mp0 interface IP. It checks if the + rule already exists to prevent duplicate update. ```bash _uuid : d55185d8-3732-45c1-ae90-4a7f8cd191f7 @@ -204,10 +206,10 @@ network-plugin-syncer pods and remove any existing deployments. 1. The update from older version of Submariner to a newer version will create a datapath downtime. 2. When multiple clusters are updated we need to check if one cluster can be done at a time. The cluster will be down -until all the nodes are updated. -3. When Kubernetes cluster is update to a version that have IC enabled, there could be a datapath downtime till the -Submariner g/w node is updated. Since the other nodes need the transit switch IP which will be available only when -the g/w node is updated. + until all the nodes are updated. +3. When Kubernetes cluster is updated to a version that has IC enabled, there could be a datapath downtime till the + Submariner g/w node is updated. Since the other nodes need the transit switch IP which will be available only when + the g/w node is updated. ### Alternatives From 291844705692819da172a9ec804c5e9be20fd897 Mon Sep 17 00:00:00 2001 From: Aswin Suryanarayanan Date: Wed, 17 May 2023 21:27:11 -0400 Subject: [PATCH 08/10] Next Hop is now an array,fixes and more about in CR Signed-off-by: Aswin Suryanarayanan --- submariner/OVN-Interconnect.md | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/submariner/OVN-Interconnect.md b/submariner/OVN-Interconnect.md index 630c8059..2dc1a76c 100644 --- a/submariner/OVN-Interconnect.md +++ b/submariner/OVN-Interconnect.md @@ -65,7 +65,7 @@ point of time. This CR will be created when a remote endpoint is added and there will be one CR per remote cluster. This crd has two fields -* NextHop - Specifies the next hop to reach the remote cluster, in this case it will be the IP of ovn-k8s-mp0 +* NextHops - Specifies the list of next hop to reach the remote cluster, in this case it will be the IP of ovn-k8s-mp0 interface, the interface used by OVN for host networking. * RemoteCIDR - Specifies the list of remote CIDRs reachable via this cluster. @@ -81,8 +81,8 @@ type SubmarinerGwRoute struct { } type SubmarinerRoutePolicySpec struct { - //Specifies the next hop to reach the remote CIDRs - NextHop string `json:"nextHop"` + //Specifies the list of next hops to reach the remote CIDRs + NextHops []string `json:"nextHops"` //Specifies the remote CIDRs available via the next hop RemoteCidr []string `json:"remoteCidr"` @@ -91,12 +91,12 @@ type SubmarinerRoutePolicySpec struct { #### SubmarinerNonGWRoute -This CR will be created when a remote endpoint is created. When more remote endpoints are added the Remote CIDR list will be updated. +This CR will be created when a remote endpoint is created and there will be one created endpoint. -* NextHop - Specifies the next hop. +* NextHops - Specifies the list of next hops. In this case it will be the transit switch IP. * RemoteCIDR - Specifies the list of remote CIDRs reachable via this gateway. -This CR will be used by the Routeagent pods running on the non-Gateway nodes to +This CR will be used by the RouteAgent pods running on the non-Gateway nodes to * In non-g/w node - If the route-agent pod is not in the same zone as Gateway node zone, send the traffic to the g/w node zone. * In g/w node - add route to send the traffic from other zones, destined to remote cluster to the submariner tunnel @@ -110,8 +110,8 @@ type SubmarinerNonGWRoute struct { } type SubmarinerRoutePolicySpec struct { - //Specifies the next hop to reach the remote CIDRs - NextHop string `json:"nextHop"` + //Specifies the list of next hops to reach the remote CIDRs + NextHops []string `json:"nextHops"` //Specifies the remote CIDRs available via the next hop RemoteCidr []string `json:"remoteCidr"` @@ -131,15 +131,15 @@ traffic with in a cluster and will be present in every node. ### SubmarinerRouteAgentPod -The Submariner Route-agent pod will be responsible for creating the SubmarinerGWRoute CR. It will be used only for OVN CNI right now. For every +The Submariner Route-agent pod will be responsible for creating the SubmarinerGWRoute CR. It will be used only for OVN CNI. For every RemoteEndpointCreated event a SubmarinerGWRoute CR will be created. The nextHop will be the interface IP through which we can reach the cable driver. In the case of OVN it will be the IP of ovn-k8s-mp0 interface. The SubmarinerNonGWRoute CRD will also be created by Submariner Route-agent. It will have the list of remote endpoints connected to the gateway. -The nexthop will be the transit switch IP of the G/W node. If the transit switch IP is missing this CRD will not be created, which means it is +The nextHop will be the transit switch IP of the G/W node. If the transit switch IP is missing this CRD will not be created, which means it is a non-IC setup. -The Routeagent will have these controllers added to it and the one running in gateway node responds to the CRUD operations. +The RouteAgent will have these controllers added to it and the one running in gateway node responds to the CRUD operations. #### SubmarinerGWRoute CR Controller @@ -152,7 +152,7 @@ _uuid : 0459f009-3603-47ac-8ee7-9d958540ed31 bfd : [] external_ids : {} ip_prefix : "10.132.0.0/16" -nexthop : "10.244.1.2" +nexthop : "10.1.1.2" options : {} output_port : [] policy : [] @@ -188,7 +188,7 @@ _uuid : d55185d8-3732-45c1-ae90-4a7f8cd191f7 bfd : [] external_ids : {} ip_prefix : "10.132.0.0/16" -nexthop : "10.244.1.2" +nexthop : "10.1.1.2" options : {} output_port : [] policy : [] From d69a268acec11ef3740f734f91e0bb7b4c94819b Mon Sep 17 00:00:00 2001 From: Aswin Suryanarayanan Date: Thu, 18 May 2023 10:01:38 -0400 Subject: [PATCH 09/10] Fix issues with CR descriptions, add g/w failover section Signed-off-by: Aswin Suryanarayanan --- submariner/OVN-Interconnect.md | 71 ++++++++++++++++++---------------- 1 file changed, 37 insertions(+), 34 deletions(-) diff --git a/submariner/OVN-Interconnect.md b/submariner/OVN-Interconnect.md index 2dc1a76c..589b5b2c 100644 --- a/submariner/OVN-Interconnect.md +++ b/submariner/OVN-Interconnect.md @@ -63,13 +63,13 @@ point of time. #### SubmarinerGwRoute -This CR will be created when a remote endpoint is added and there will be one CR per remote cluster. This crd has two fields +This CR will be created when a remote endpoint is added and there will be one CR per remote cluster. This CRD has two fields * NextHops - Specifies the list of next hop to reach the remote cluster, in this case it will be the IP of ovn-k8s-mp0 interface, the interface used by OVN for host networking. * RemoteCIDR - Specifies the list of remote CIDRs reachable via this cluster. -This CR will be used by the route agent pod running on the non-Gateway node to program OVN to send the traffic destined to +This CR will be used by the route agent pod running on the active-Gateway node to program OVN to send the traffic destined to remote clusters via the Submariner tunnel. ``` go @@ -91,13 +91,11 @@ type SubmarinerRoutePolicySpec struct { #### SubmarinerNonGWRoute -This CR will be created when a remote endpoint is created and there will be one created endpoint. +This CR will be created when a remote endpoint is created and there will be one created per endpoint. * NextHops - Specifies the list of next hops. In this case it will be the transit switch IP. * RemoteCIDR - Specifies the list of remote CIDRs reachable via this gateway. -This CR will be used by the RouteAgent pods running on the non-Gateway nodes to - * In non-g/w node - If the route-agent pod is not in the same zone as Gateway node zone, send the traffic to the g/w node zone. * In g/w node - add route to send the traffic from other zones, destined to remote cluster to the submariner tunnel @@ -131,19 +129,20 @@ traffic with in a cluster and will be present in every node. ### SubmarinerRouteAgentPod -The Submariner Route-agent pod will be responsible for creating the SubmarinerGWRoute CR. It will be used only for OVN CNI. For every -RemoteEndpointCreated event a SubmarinerGWRoute CR will be created. The nextHop will be the interface IP through which we can reach the cable -driver. In the case of OVN it will be the IP of ovn-k8s-mp0 interface. +The Submariner Route-agent pod running on the active gateway node will be responsible for creating the SubmarinerGWRoute CRs. It will be used +only for OVN CNI. For every RemoteEndpointCreated event a SubmarinerGWRoute CR will be created. The nextHop will be the interface IP through +which we can reach the cable driver. In the case of OVN it will be the IP of ovn-k8s-mp0 interface. -The SubmarinerNonGWRoute CRD will also be created by Submariner Route-agent. It will have the list of remote endpoints connected to the gateway. -The nextHop will be the transit switch IP of the G/W node. If the transit switch IP is missing this CRD will not be created, which means it is -a non-IC setup. +The SubmarinerNonGWRoute CRD will also be created by Submariner Route-agent. It will be created per endpoint and will have remoterCIDRS from +the endpoint. The nextHop will be the transit switch IP of the G/W node. If the transit switch IP is missing this CRD will not be created, +which means it is a non-IC setup. -The RouteAgent will have these controllers added to it and the one running in gateway node responds to the CRUD operations. +The RouteAgent will have these controllers added to it and the one running in gateway node responds to the CRUD operations of Submariner +endpoints. #### SubmarinerGWRoute CR Controller -This controller will be responsible for programming the OVN cluster router, it will react only in a g/w node. When a SubmarinerGWRoute +This controller will be responsible for programming the OVN cluster router, it will react only the active g/w node. When a SubmarinerGWRoute CR is created or modified the controller shall create or update a routing policy in OVN cluster router with a priority of 20000, and it should redirect any traffic destined to remote CIDR to the ovn-k8s-mp0 interface IP. @@ -159,14 +158,28 @@ policy : [] route_table : "" ``` +It also programs a route in the ovn-cluster-router, to route the traffic coming from other zones destined to remote cluster IP range via the +ovn-k8s-mp0 interface IP. + +```bash +_uuid : d55185d8-3732-45c1-ae90-4a7f8cd191f7 +bfd : [] +external_ids : {} +ip_prefix : "10.132.0.0/16" +nexthop : "10.1.1.2" +options : {} +output_port : [] +policy : [] +route_table : "" +``` + #### SubmarinerNonGWRoute Controller This controller will run in every route agent pod. This controller connects to the OVN DB. When a SubmarinerNonGWRoute CR is created - -* non-gateway node : it updates the ovn-cluster-route with a router policy using a priority of 20000 to send the traffic to - the remote cluster via next hop mentioned, which is the transit switch IP to the g/w node. Before adding the route it checks if - a route exists, if so it skips adding the route again. This is required to prevent duplicate update since there can be more than - one node in each zone and hence more than one Routeagent. +in non-g/w node, it updates the ovn-cluster-route with a router policy using a priority of 20000 to send the traffic to +the remote cluster via next hop mentioned, which is the transit switch IP to the g/w node. Before adding the route it checks if +a route exists, if so it skips adding the route again. This is required to prevent duplicate update since there can be more than +one node in each zone and hence more than one RouteAgent. ```bash _uuid : 22db3005-64c5-4e32-aeb0-642423c30742 @@ -179,22 +192,6 @@ options : {"external_ids:{submariner"="true}"} priority : 20000 ``` -* gateway node/same zone node : Route agent running on the Gateway node, programs a route in the ovn-cluster-router, to route - the traffic coming from other zones destined to remote cluster IP range via the ovn-k8s-mp0 interface IP. It checks if the - rule already exists to prevent duplicate update. - -```bash -_uuid : d55185d8-3732-45c1-ae90-4a7f8cd191f7 -bfd : [] -external_ids : {} -ip_prefix : "10.132.0.0/16" -nexthop : "10.1.1.2" -options : {} -output_port : [] -policy : [] -route_table : "" -``` - ### Backward Compatibility With this architecture, we are removing the logical switches and routers that Submariner created in the existing implementation. @@ -202,6 +199,12 @@ During migration, we will need to delete these components and the routes that ne the new controllers shall install the updated routes. The operator needs to be updated as well, not to create a network-plugin-syncer pods and remove any existing deployments. +### Gateway FailOver + +If there are two gateway nodes , the passive one will work like a non-gateway node. It will not be responsible for creating the CRs. +In the case of gateway fail-over all the current SubmarinerGWRoute and SubmarinerNonGWRoute will be deleted by the route agent in +the node that is transitioning to non-gateway node and will be recreated by the new gateway node. + #### Open issues 1. The update from older version of Submariner to a newer version will create a datapath downtime. From 450f9762f6aeb804ee6e060f832a505cd809ac02 Mon Sep 17 00:00:00 2001 From: Aswin Suryanarayanan Date: Tue, 23 May 2023 18:28:33 -0400 Subject: [PATCH 10/10] Fix issues realted to fail over cr description and routes Signed-off-by: Aswin Suryanarayanan --- .idea/enhancements.iml | 9 +++ .idea/modules.xml | 8 +++ .idea/vcs.xml | 6 ++ .idea/workspace.xml | 66 +++++++++++++++++++++ submariner/OVN-Interconnect.md | 102 ++++++++++++++++----------------- 5 files changed, 140 insertions(+), 51 deletions(-) create mode 100644 .idea/enhancements.iml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml create mode 100644 .idea/workspace.xml diff --git a/.idea/enhancements.iml b/.idea/enhancements.iml new file mode 100644 index 00000000..5e764c4f --- /dev/null +++ b/.idea/enhancements.iml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 00000000..4b0599c6 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 00000000..94a25f7f --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml new file mode 100644 index 00000000..aed6920c --- /dev/null +++ b/.idea/workspace.xml @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + { + "keyToString": { + "RunOnceActivity.OpenProjectViewOnStart": "true", + "RunOnceActivity.ShowReadmeOnStart": "true", + "RunOnceActivity.go.format.on.save.advertiser.fired": "true", + "RunOnceActivity.go.formatter.settings.were.checked": "true", + "RunOnceActivity.go.migrated.go.modules.settings": "true", + "RunOnceActivity.go.modules.go.list.on.any.changes.was.set": "true", + "RunOnceActivity.go.watchers.conflict.with.on.save.actions.check.performed": "true", + "WebServerToolWindowFactoryState": "false", + "go.import.settings.migrated": "true", + "go.sdk.automatically.set": "true", + "last_opened_file_path": "/Users/asuryana/Documents/GitHub/fork/enhancements", + "node.js.detected.package.eslint": "true", + "node.js.detected.package.tslint": "true", + "node.js.selected.package.eslint": "(autodetect)", + "node.js.selected.package.tslint": "(autodetect)", + "nodejs_package_manager_path": "npm" + } +} + + + + + + + + true + + \ No newline at end of file diff --git a/submariner/OVN-Interconnect.md b/submariner/OVN-Interconnect.md index 589b5b2c..704bc1ea 100644 --- a/submariner/OVN-Interconnect.md +++ b/submariner/OVN-Interconnect.md @@ -38,19 +38,19 @@ With OVN Interconnect we can have two types of deployment ```bash annotations: - k8s.ovn.org/ovn-node-transit-switch-port-ips: '["169.254.0.3/16"]' - k8s.ovn.org/ovn-zone: global + k8s.ovn.org/node-transit-switch-port-ifaddr: '["169.254.0.3/16"]' + k8s.ovn.org/zone-name: global name: cluster1-worker annotations: - k8s.ovn.org/ovn-node-transit-switch-port-ips: '["169.254.0.5/16"]' - k8s.ovn.org/ovn-zone: az2 + k8s.ovn.org/node-transit-switch-port-ifaddr: '["169.254.0.5/16"]' + k8s.ovn.org/zone-name: az2 name: cluster2-worker ``` -With the current architecture, Submariner adds routes only in the zone in which it is deployed. For example, if Submariner is deployed in -zone 1 it programs OVN db in zone 1. So only pods in zone 1 nodes will be able to talk to other clusters. Pods in zone 2 or zone 3 will not -be able to reach remote clusters connected via Submariner. +With the current architecture, Submariner network-plugin-syncer adds routes only in a single zone where the network-plugin-syncer pod runs. +For example, if network-plugin-syncer is deployed in zone 1 it programs OVN db in zone 1. So only pods in zone 1 nodes will be able to talk +to other clusters. Pods in zone 2 or zone 3 will not be able to reach remote clusters connected via Submariner. As part of the proposal, we plan to support both the modes and OVN cluster deployments where interconnect is not enabled as well. @@ -61,58 +61,59 @@ As part of this proposal, we are planning to add two new CRDs in Submariner. The can be moved to OVN, when OVN provides a way to add custom routes. We can propose this CRD or consume the CRD that they provide at a later point of time. -#### SubmarinerGwRoute +#### GatewayRoute This CR will be created when a remote endpoint is added and there will be one CR per remote cluster. This CRD has two fields * NextHops - Specifies the list of next hop to reach the remote cluster, in this case it will be the IP of ovn-k8s-mp0 interface, the interface used by OVN for host networking. -* RemoteCIDR - Specifies the list of remote CIDRs reachable via this cluster. +* RemoteCIDR - Specifies the list of remote CIDRs reachable via the next hop. This CR will be used by the route agent pod running on the active-Gateway node to program OVN to send the traffic destined to -remote clusters via the Submariner tunnel. +remote clusters via the Submariner tunnel. Also it adds a route to send the traffic from other zones, destined to remote cluster +to the submariner tunnel ``` go -type SubmarinerGwRoute struct { +type GatewayRoute struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` - SubmarinerRoutePolicySpec SubmarinerRoutePolicySpec `json:"submarinerRoutePolicySpec"` + RoutePolicySpec RoutePolicySpec `json:"spec"` } -type SubmarinerRoutePolicySpec struct { - //Specifies the list of next hops to reach the remote CIDRs +type RoutePolicySpec struct { + // Specifies the next hops to reach the remote CIDRs NextHops []string `json:"nextHops"` - //Specifies the remote CIDRs available via the next hop - RemoteCidr []string `json:"remoteCidr"` + // Specifies the remote CIDRs available via the next hop + RemoteCIDRs []string `json:"remoteCIDRs"` } ``` -#### SubmarinerNonGWRoute +#### NonGatewayRoute This CR will be created when a remote endpoint is created and there will be one created per endpoint. -* NextHops - Specifies the list of next hops. In this case it will be the transit switch IP. +* NextHops - Specifies the list of next hops. In this case ,we will have only one, and it will be the transit switch IP of the zone +where g/w node is present. * RemoteCIDR - Specifies the list of remote CIDRs reachable via this gateway. * In non-g/w node - If the route-agent pod is not in the same zone as Gateway node zone, send the traffic to the g/w node zone. -* In g/w node - add route to send the traffic from other zones, destined to remote cluster to the submariner tunnel ``` go -type SubmarinerNonGWRoute struct { +type NonGatewayRoute struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` - SubmarinerRoutePolicySpec SubmarinerRoutePolicySpec `json:"submarinerRoutePolicySpec"` + RoutePolicySpec RoutePolicySpec `json:"spec"` } -type SubmarinerRoutePolicySpec struct { - //Specifies the list of next hops to reach the remote CIDRs +type RoutePolicySpec struct { + // Specifies the next hops to reach the remote CIDRs NextHops []string `json:"nextHops"` - //Specifies the remote CIDRs available via the next hop - RemoteCidr []string `json:"remoteCidr"` + // Specifies the remote CIDRs available via the next hop + RemoteCIDRs []string `json:"remoteCIDRs"` } ``` @@ -129,33 +130,31 @@ traffic with in a cluster and will be present in every node. ### SubmarinerRouteAgentPod -The Submariner Route-agent pod running on the active gateway node will be responsible for creating the SubmarinerGWRoute CRs. It will be used -only for OVN CNI. For every RemoteEndpointCreated event a SubmarinerGWRoute CR will be created. The nextHop will be the interface IP through +The Submariner Route-agent pod running on the active gateway node will be responsible for creating the GatewayRoute CRs. It will be used +only for OVN CNI. For every RemoteEndpointCreated event a GatewayRoute CR will be created. The nextHop will be the interface IP through which we can reach the cable driver. In the case of OVN it will be the IP of ovn-k8s-mp0 interface. -The SubmarinerNonGWRoute CRD will also be created by Submariner Route-agent. It will be created per endpoint and will have remoterCIDRS from -the endpoint. The nextHop will be the transit switch IP of the G/W node. If the transit switch IP is missing this CRD will not be created, -which means it is a non-IC setup. +The NonGatewayRoute CRD will also be created by Submariner Route-agent running on the active gateway node . It will be created per endpoint +and will have remoterCIDRS from the endpoint. The nextHop will be the transit switch IP of the G/W node. If the transit switch IP is missing +this CR will not be created, which means it is a non-IC setup. The RouteAgent will have these controllers added to it and the one running in gateway node responds to the CRUD operations of Submariner endpoints. -#### SubmarinerGWRoute CR Controller +#### GatewayRoute CR Controller -This controller will be responsible for programming the OVN cluster router, it will react only the active g/w node. When a SubmarinerGWRoute +This controller will be responsible for programming the OVN cluster router, it will react only the active g/w node. When a GatewayRoute CR is created or modified the controller shall create or update a routing policy in OVN cluster router with a priority of 20000, and it should redirect any traffic destined to remote CIDR to the ovn-k8s-mp0 interface IP. ```bash _uuid : 0459f009-3603-47ac-8ee7-9d958540ed31 -bfd : [] +action : reroute external_ids : {} -ip_prefix : "10.132.0.0/16" -nexthop : "10.1.1.2" -options : {} -output_port : [] -policy : [] -route_table : "" +match : "ip4.dst==10.132.0.0/16" +nexthops : ["10.1.1.2"] +options : {"external_ids:{submariner"="true}"} +priority : 20000 ``` It also programs a route in the ovn-cluster-router, to route the traffic coming from other zones destined to remote cluster IP range via the @@ -173,19 +172,19 @@ policy : [] route_table : "" ``` -#### SubmarinerNonGWRoute Controller +#### NonGatewayRoute Controller -This controller will run in every route agent pod. This controller connects to the OVN DB. When a SubmarinerNonGWRoute CR is created -in non-g/w node, it updates the ovn-cluster-route with a router policy using a priority of 20000 to send the traffic to -the remote cluster via next hop mentioned, which is the transit switch IP to the g/w node. Before adding the route it checks if -a route exists, if so it skips adding the route again. This is required to prevent duplicate update since there can be more than -one node in each zone and hence more than one RouteAgent. +This controller will run as part of every route agent pod and connects to the OVN DB. When a NonGatewayRoute CR is created, +the route-agent running on the non-GW node will update the ovn-cluster-router with a logical router policy using a priority of 20000 +to send the traffic to the remote cluster via next hop mentioned, which is the transit switch IP to the g/w node. Before adding +the route it checks if a route exists, if so it skips adding the route again. This is required to prevent duplicate update since there +can be more than one node in each zone and hence more than one RouteAgent. ```bash _uuid : 22db3005-64c5-4e32-aeb0-642423c30742 action : reroute external_ids : {} -match : "ip4.dst==10.132.0.0/16" +match : "ip4.dst==10.132.0.0/14" nexthop : [] nexthops : ["169.254.0.1"] options : {"external_ids:{submariner"="true}"} @@ -202,17 +201,18 @@ network-plugin-syncer pods and remove any existing deployments. ### Gateway FailOver If there are two gateway nodes , the passive one will work like a non-gateway node. It will not be responsible for creating the CRs. -In the case of gateway fail-over all the current SubmarinerGWRoute and SubmarinerNonGWRoute will be deleted by the route agent in -the node that is transitioning to non-gateway node and will be recreated by the new gateway node. +In the case of gateway fail-over all the current GatewayRoute and NonGatewayRoute will be deleted by the route agent in +the node that is transitioning to gateway node and will be recreated with updated values. #### Open issues -1. The update from older version of Submariner to a newer version will create a datapath downtime. -2. When multiple clusters are updated we need to check if one cluster can be done at a time. The cluster will be down - until all the nodes are updated. +1. When multiple clusters are updated we need to check if one cluster can be done at a time. The cluster will be down + until all the nodes are updated. +2. The update from older version of Submariner to a newer version will create a datapath downtime. 3. When Kubernetes cluster is updated to a version that has IC enabled, there could be a datapath downtime till the Submariner g/w node is updated. Since the other nodes need the transit switch IP which will be available only when the g/w node is updated. +4. Explore the possibility of VIP to represent the gateway node switch IP instead of reconfiguring all the routes at non-gw nodes ### Alternatives