From baf7f3abdda98f54e2de9a61dc7769e12b0e289e Mon Sep 17 00:00:00 2001 From: ganglyu Date: Thu, 5 May 2022 15:35:11 +0800 Subject: [PATCH 01/17] [HLD] SONiC GNMI Server Interface Design Signed-off-by: Gang Lv ganglv@microsoft.com --- doc/mgmt/gnmi/README.md | 0 .../gnmi/SONiC_GNMI_Server_Interface_Design.md | 0 doc/mgmt/gnmi/images/cli.png | Bin 0 -> 26734 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 doc/mgmt/gnmi/README.md create mode 100644 doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md create mode 100644 doc/mgmt/gnmi/images/cli.png diff --git a/doc/mgmt/gnmi/README.md b/doc/mgmt/gnmi/README.md new file mode 100644 index 00000000000..e69de29bb2d diff --git a/doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md b/doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md new file mode 100644 index 00000000000..e69de29bb2d diff --git a/doc/mgmt/gnmi/images/cli.png b/doc/mgmt/gnmi/images/cli.png new file mode 100644 index 0000000000000000000000000000000000000000..fa811f1dd429db1c391e8ac8021049829c367bb9 GIT binary patch literal 26734 zcmeFZcT|&G5HAV{sDL0SA|TR1gaA^dcL8ZOLWzK4=mDhnBB&IlH|Zh*QUV$vNVkCW zA~9g7D!un!@^al=FuJQ2IxP*)}@?mRaQ{vowe(orHJdJ{#tcb5$OfBe3N zkqZ$K^+&>kxXJMqoQTN!h^DI2El<<=TAMQZ@!FD9p-s%TXV+Pev`Y&iPh$q>2Gfup zlWB8r<52k&(FYNo)o>m%t+IewO0}2S0H`@aQcnDDN$@gvxboMTlFj@58!$XVc5&UCvQ_+DM0;K|YhQ z=~q=g#{QBmxf(vvA1OX@g>0V`cab8*$A?GWYd2p(W?3f5cil=dU@>LaA6)tHG#7); z)_YtZmDF@i*Zz!x-~hH9Gg!sO*bHSiT)#Wtl�Sx)j=!ICRiH;6V#M(%25sGxP2h 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 W9kHtL0lXvVfFaCCuT1COv;P1EfF!5@ literal 0 HcmV?d00001 From 78b8ad572abe107e6df5661755662575fd579665 Mon Sep 17 00:00:00 2001 From: ganglyu Date: Fri, 6 May 2022 17:17:25 +0800 Subject: [PATCH 02/17] Initial draft. --- .../SONiC_GNMI_Server_Interface_Design.md | 514 ++++++++++++++++++ doc/mgmt/gnmi/images/data_flow.png | Bin 0 -> 78618 bytes doc/mgmt/gnmi/images/data_flow_get.png | Bin 0 -> 36900 bytes doc/mgmt/gnmi/images/full_rpc.png | Bin 0 -> 8631 bytes doc/mgmt/gnmi/images/full_rpc_gnoi.png | Bin 0 -> 12343 bytes doc/mgmt/gnmi/images/get_lock.png | Bin 0 -> 24758 bytes doc/mgmt/gnmi/images/gnmi.png | Bin 0 -> 32636 bytes doc/mgmt/gnmi/images/incremental_rpc.png | Bin 0 -> 6345 bytes doc/mgmt/gnmi/images/message_example.png | Bin 0 -> 15108 bytes doc/mgmt/gnmi/images/restapi.png | Bin 0 -> 28816 bytes doc/mgmt/gnmi/images/set_lock.png | Bin 0 -> 20111 bytes doc/mgmt/gnmi/images/telemetry.png | Bin 0 -> 101081 bytes 12 files changed, 514 insertions(+) create mode 100644 doc/mgmt/gnmi/images/data_flow.png create mode 100644 doc/mgmt/gnmi/images/data_flow_get.png create mode 100644 doc/mgmt/gnmi/images/full_rpc.png create mode 100644 doc/mgmt/gnmi/images/full_rpc_gnoi.png create mode 100644 doc/mgmt/gnmi/images/get_lock.png create mode 100644 doc/mgmt/gnmi/images/gnmi.png create mode 100644 doc/mgmt/gnmi/images/incremental_rpc.png create mode 100644 doc/mgmt/gnmi/images/message_example.png create mode 100644 doc/mgmt/gnmi/images/restapi.png create mode 100644 doc/mgmt/gnmi/images/set_lock.png create mode 100644 doc/mgmt/gnmi/images/telemetry.png diff --git a/doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md b/doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md index e69de29bb2d..1ef9918c8e0 100644 --- a/doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md +++ b/doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md @@ -0,0 +1,514 @@ +# SONiC GNMI Server Interface Design + +# High Level Design Document + +#### Rev 0.1 + +# Table of Contents +- [Table of Contents](#table-of-contents) +- [List of Tables](#list-of-tables) +- [Revision](#revision) +- [About this Document](#about-this-document) +- [Scope](#scope) +- [Definition/Abbreviation](#definitionabbreviation) +- [1 Feature Overview](#1-feature-overview) + * [1.1 Requirements](#11-requirements) + * [1.2 Design Overview](#12-design-overview) +- [2 Error Handling](#2-error-handling) +- [3 Serviceability and Debug](#3-serviceability-and-debug) +- [4 Unit Tests](#4-unit-tests) + * [4.1 Unit Tests for Capabilities RPC](#41-unit-tests-for-capabilities-rpc) + * [4.2 Unit Tests for Get RPC](#42-unit-tests-for-get-rpc) + * [4.3 Unit Tests for Set RPC](#43-unit-tests-for-set-rpc) + +# List of Tables +[Table 1: Abbreviations](#table-1-abbreviations) + +[Table 2: Mapping Operations](#table-2-mapping-operations) + +[Table 3: Translate Example](#table-3-translate-example) + +# Revision + +| Rev | Date | Author | Change Description | +|:---:|:-----------:|:------------------:|---------------------| +| 0.1 | 05/05/2022 | Gang Lv | Initial version | + +# About this Document +This document provides a detailed description on the strategy to implement the SONiC GNMI Server Interface. + +# Scope +This document describes the high level design of SONiC GNMI Server Interface. + +This document provides minor implementation details about the proposed solutions. + +# Definition/Abbreviation + +### Table 1: Abbreviations +| **Term** | **Meaning** | +| -------- | -------------------------- | +| gRPC | A modern open-source high performance Remote Procedure Call (RPC) framework that can run in any environment | +| gNMI | gRPC Network Management Interface, used to retrieve or manipulate the state of a device via telemetry or configuration data | +| gNOI | gRPC Network Operations Interface | +| JSON | JavaScript Object Notation | +| Yang | Yet Another Next Generation, it is a modular language representing data structures in an XML tree format | +| Generic Config Updater | SONiC configuration generic update and rollback feature | +| ConfigDB | Configuration Database | +| ApplDB | Application Database | + +# 1 Feature Overview + +SONiC should provide a gNMI/gNOI server interface where the client can communicate with SONiC (server) through the interface using their respective gRPC libraries based on ConfigDB/ApplDB/StateDB/CountersDB schema or SONiC Yang schema. + +To understand the requirements, we need to go over current SONiC management components: + +* SONIC CLI commands + +cli + +1. Users could use SONiC CLI command "show runningconfig all" to read current configuration. + - The blue arrow indicates this process. +2. User could use SONiC CLI command "config apply-patch" to incrementally update configurations systematically and validate target configuration using SONiC Yang models. With generic_config_updater, all operations in a 'config apply-patch' command are processed in a single transaction that will either succeed or fail as a whole. + - "config apply-patch" supports ConfigDB, and Yang models. + - The green arrow indicates this process, and dotted arrow indicates Yang validation. +3. SONiC CLI commands can use "config reload" to fully update configurations and validate target configuration using SONiC Yang models. + - "config reload" already support input in ConfigDB schema or in yang models schema. + - The yellow arrow indicates this process, and dotted arrow indicates Yang validation. + +And we have the possibility to improve generic_config_updater performance. + +* SONIC Restapi + +restapi + +sonic-restapi is a docker container running in SONiC, which exposes HTTPS endpoints to perform dynamic configuration including config VNET routes. +One challenge of sonic-restapi is to provide a general config schema. Currently its API is designed case by case. + +sonic-restapi will be replaced by gNMI interface in the future. + +* SONiC system telemetry services + +telemetry + +sonic-telemetry provides gNMI/gNOI server interface. And sonic-telemetry provides only telemetry via gRPC, and the gap is configuration. + +## 1.1 Requirements + +* Set and get RPCs must be supported. Customer will use get RPC to retrieve configurations including FRR and VNET route, and use set PRC to apply new configurations. +* SetRequest message must support to incrementally update configuration and fully update configurations. +* Data models can be SONiC Yang models or CONFIG_DB schema. +* Configurations must be verified using YANG models even it is in CONFIG_DB schema. +* Need to configure huge VNET route entries to ApplDB, with high speed. +* Configurations must be persisted after a device restart. +* Need to support multi-ASIC platform. +* Support authentication and authorization with TACACS+ server. +* [low-priority] FRR Yang models will also be supported. +* [low-priority] Upgrade operation will be provided with GNOI. +* Must follow gnmi-specification. + * All changes to the state of the target that are included in an individual SetRequest message are considered part of a transaction. + * Within an individual transaction (SetRequest) the order of operations is 'delete', 'replace', 'update'. + * If a single path is in multiple operations in one SetRequest (i.e., within 'update' or 'replace'), then the state of the target MUST reflect the application of all the operations in order, even if they overwrite each other. + * The session between the client and server MUST be encrypted using TLS. + * New connections are mutually authenticated. + +## 1.2 Design Overview + +gnmi-server + +### 1.2.1 Basic Approach + +#### 1.2.1.1 Transaction + +* Rollback + +Generic_config_updater provides rollback mechanism, and we can use it to implement transaction for CONIFG_DB. + +Currently we do not support rollback for ApplDB, therefore VNET route will be an exception for rollback. Client could make decision based on SetResponse and use more SetRequest(s) to achieve rollback behavior. + +* Set + +Since a single SetRequest will be treated as a transaction, sonic-gnmi does not support parallel write operations. We will put the SetRequests in a queue and serve them with a single worker. + +set + +* Get + +Every set RPC will create a checkpoint of running configuration before any modification and remove this checkpoint after all the modifications. + +Get RPC during write period should use checkpoint, and normally Get RPC will directly fetch ConfigDB. + +get + +#### 1.2.1.2 Yang Validation + +For ConfigDB, and input is SONiC Yang models schema, sonic-config-engine and generic_config_updater will run Yang validation. + +For ConfigDB, and input is ConfigDB schema, generic_config_updater will run Yang validation. And sonic-config-engine does not run Yang validation today if input is in config_db schema, and it will run Yang validation in future release. + +For ApplDB, we will create Yang models based on requirement. Today we only need to config VNET routes in ApplDB. We will leverage Yang validation or implement specialized validation logic for optimal performance. + +#### 1.2.1.3 Data Schema + +The ultimate goal is to use SONiC Yang models for configuration, and we also need to support ConfigDB schema and ApplDB schema for backward compatibility. +We will follow OpenConfig specification to use origin field to support mixed schema. + +And we use the first element to specify the target database. + +A single request cannot have both SONiC YANG paths and ConfigDB/ApplDB schema paths. + +message-example + +1. Stage 1: SONiC DB Schema + +At stage 1, we will only support SONiC DB schema. + +- If origin is ‘sonic_db’ or NULL, and target is ‘CONFIG_DB’, SetRequest and GetRequest will use CONFIG_DB schema, and sonic_config_engine or generic_config_engine will be invoked. +- If origin is ‘sonic_db’ or NULL, and target is ‘APPL_DB’, and table name is "VNET_ROUTE_TABLE", SetRequest and GetRequest will be used to access VNET route entry, and special_config_updater will be invoked. + +2. Stage 2: SONiC Yang Schema + +At stage 2, we will support SONiC Yang schema. + +* If origin is ‘sonic_yang’ and target is ‘APPL_DB’, request will use SONiC Yang models schema, and special_config_updater will be invoked. +* If origin is ‘sonic_yang’ and target is 'CONFIG_DB' or NULL, request will use SONiC Yang models schema, and sonic_config_engine or generic_config_engine will be invoked. + +set-flow + +get-flow + +Assume running-config to be: + + { + "DEVICE_NEIGHBOR": { + "Ethernet8": { + "name": "Servers1", + "port": "eth0" + }, + "Ethernet96": { + "name": "Servers23", + "port": "eth0" + }, + }, + } + +And then perform the actions below: +* replace port under Ethernet8 with eth1 +* remove Ethernet96 + +The steps would be: +1. Get the running configuration + +With CONFIG_DB schema: + + ++++++++ Sending get request: ++++++++ + path { + elem {name: "CONFIG_DB"} elem {name: "DEVICE_NEIGHBOR"} + } + encoding: JSON_IETF + ++++++++ Recevied get response: ++++++++ + notification { + update { + path { + origin: "sonic_db" + elem {name: "CONFIG_DB"} elem {name: "DEVICE_NEIGHBOR"} elem {name: "Ethernet8"} + } + val { + json_ietf_val: "{\"name\": \"Servers1\",\"port\": \"eth0\"}" + } + } + update { + path { + origin: "sonic_db" + elem {name: "CONFIG_DB"} elem {name: "DEVICE_NEIGHBOR"} elem {name: "Ethernet96"} + } + val { + json_ietf_val: "{\"name\": \"Servers23\",\"port\": \"eth0\"}" + } + } + } + +With CONFIG_YANG schema: + + ++++++++ Sending get request: ++++++++ + path { + origin: "sonic_yang" + elem {name: "CONFIG_DB"} elem {name: "sonic-device_neighbor:sonic-device_neighbor"} + } + encoding: JSON_IETF + ++++++++ Recevied get response: ++++++++ + notification { + update { + path { + origin: "sonic_yang" + elem {name: "CONFIG_DB"} elem {name: "sonic-device_neighbor:sonic-device_neighbor"} elem {name: "sonic-device_neighbor:DEVICE_NEIGHBOR"} elem {name: "DEVICE_NEIGHBOR_LIST" key {key: "name" value: "Ethernet8"}} + } + val { + json_ietf_val: "{\"name\": \"Servers1\",\"port\": \"eth0\"}" + } + } + update { + path { + origin: "sonic_yang" + elem {name: "CONFIG_DB"} elem {name: "sonic-device_neighbor:sonic-device_neighbor"} elem {name: "sonic-device_neighbor:DEVICE_NEIGHBOR"} elem {name: "DEVICE_NEIGHBOR_LIST" key {key: "name" value: "Ethernet96"}} + } + val { + json_ietf_val: "{\"name\": \"Servers23\",\"port\": \"eth0\"}" + } + } + } + +2. Apply the new configuration + +With CONFIG_DB schema: + + ++++++++ Sending set request: ++++++++ + replace { + path { + origin: "sonic_db" + elem {name: "CONFIG_DB"} elem {name: "DEVICE_NEIGHBOR"} elem {name: "Ethernet96"} + } + } + replace { + path { + origin: "sonic_db" + elem {name: "CONFIG_DB"} elem {name: "DEVICE_NEIGHBOR"} elem {name: "Ethernet8"} elem {name: "port"} + } + val { + json_ietf_val: "eth1" + } + } + ++++++++ Recevied set response: ++++++++ + response { + path { + origin: "sonic_db" + elem {name: "CONFIG_DB"} elem {name: "DEVICE_NEIGHBOR"} elem {name: "Ethernet96"} + } + op: REPLACE + } + response { + path { + origin: "sonic_db" + elem {name: "CONFIG_DB"} elem {name: "DEVICE_NEIGHBOR"} elem {name: "Ethernet8"} elem {name: "port"} + } + op: REPLACE + } + +With CONFIG_YANG schema: + + ++++++++ Sending set request: ++++++++ + replace { + path { + origin: "sonic_yang" + elem {name: "CONFIG_DB"} elem {name: "sonic-device_neighbor:sonic-device_neighbor"} elem {name: "sonic-device_neighbor:DEVICE_NEIGHBOR"} elem {name: "DEVICE_NEIGHBOR_LIST" key {key: "name" value: "Ethernet96"}} + } + } + replace { + path { + origin: "sonic_yang" + elem {name: "CONFIG_DB"} elem {name: "sonic-device_neighbor:sonic-device_neighbor"} elem {name: "sonic-device_neighbor:DEVICE_NEIGHBOR"} elem {name: "DEVICE_NEIGHBOR_LIST" key {key: "name" value: "Ethernet8"}} elem {name: "port"} + } + val { + json_ietf_val: "eth1" + } + } + ++++++++ Recevied set response: ++++++++ + response { + path { + origin: "sonic_yang" + elem {name: "CONFIG_DB"} elem {name: "sonic-device_neighbor:sonic-device_neighbor"} elem {name: "sonic-device_neighbor:DEVICE_NEIGHBOR"} elem {name: "DEVICE_NEIGHBOR_LIST" key {key: "name" value: "Ethernet96"}} + } + op: REPLACE + } + response { + path { + origin: "sonic_yang" + elem {name: "CONFIG_DB"} elem {name: "sonic-device_neighbor:sonic-device_neighbor"} elem {name: "sonic-device_neighbor:DEVICE_NEIGHBOR"} elem {name: "DEVICE_NEIGHBOR_LIST" key {key: "name" value: "Ethernet8"}} elem {name: "port"} + } + op: REPLACE + } + +#### 1.2.1.4 Incremental Configurations + +For incremental configurations, SetRequest can use all kinds of operations, for example, 'replace' operations, 'update' operations and 'delete' operations. And generic_config_updater can guarantee the outcome is correct. + +Generic_config_updater is used for incrementally update configurations, and it has two related API: +1. replace, input format is ConfigDB schema. +2. apply-patch, input format is JsonPatch. + +SetRequest syntax is not the same as JsonPatch. For example, 'replace' operation can be used to delete a node and update a node, please refer to gnmi specification. + +We can translate most of the SetRequest operations directly: + +### Table 2: Mapping Operations +| SetRequest Operation | Description | JsonPatch Operation | +| ---- | ---- | ---- | +| Delete | Where a path is contained within the delete field of the SetRequest message, it should be removed from the target's data tree. | Remove | +| Update | If a particular path-value is specified in the client-supplied data, it is replaced with the client-specified value.
If the path specified does not exist, the target MUST create the data tree element and populate it with the data in the Update message. | Add | +| Replace (delete) | If a particular path-value is NOT specified in the client-supplied data and the path does not have a specified default value in the corresponding schema, it should be deleted. | Remove | +| Replace (update) | If a particular path-value is specified in the client-supplied data, it is replaced with the client-specified value.
If the path specified does not exist, the target MUST create the data tree element and populate it with the data in the Update message. | Add | + +Below table provides an example to translate from SetRequest to JsonPatch. + +### Table 3: Translate Example +| SetRequest Format | JsonPatch Format | +| ---- | ---- | +| replace {
 path {
  elem {name: "CONFIG_DB"} elem {name: "DEVICE_NEIGHBOR"} elem {name: "Ethernet96"}
 }
}
replace {
 path {
  elem {name: "CONFIG_DB"} elem {name: "DEVICE_NEIGHBOR"} elem {name: "Ethernet8"} elem {name: "port"}
 }
 val { json_ietf_val: "eth1" }
} | [
 {
  "op": "remove", "path": "/DEVICE_NEIGHBOR/Ethernet96"},
  { "op": "add", "path": "/DEVICE_NEIGHBOR/Ethernet8/port", "value": "eth1"}
] | + +#### 1.2.1.5 Full Configurations + +For full configurations, SetRequest will use one 'delete' operation and one 'update' operation with the root node, and sonic-config-engine is used for fully update configurations. + +SetRequest message will be: + + ++++++++ Sending set request: ++++++++ + delete { + path { origin: "sonic_db" } + } + update { + path { origin: "sonic_db" } + val { + json_ietf_val: "{\"DEVICE_NEIGHBOR/Ethernet8/name\":\"Servers1\", \"DEVICE_NEIGHBOR/Ethernet8/port\":\"eth0\", \"DEVICE_NEIGHBOR/Ethernet96/name\":\"Servers23\", \"DEVICE_NEIGHBOR/Ethernet96/port\":\"eth0\", ...}" + } + } + ++++++++ Recevied set response: ++++++++ + response { + path { origin: "sonic_db" } + op: DELETE + } + response { + path { origin: "sonic_db" } + op: UPDATE + } + +#### 1.2.1.6 Configuration Persistence + +All successful changes for ConfigDB made through the gNMI SET RPC will be saved to /etc/sonic/config_db.json. + +If the target database is not ConfigDB, we can’t guarantee persisitence. + +#### 1.2.1.7 Authentication +sonic-telemetry provides three authentication mechanisms, and sonic-gnmi will use the same mechanisms: +* Password: Like HTTP Basic auth, you pass the username and password in the gRPC metadata +* JWT: JSON Web Tokens standard. First you authenticate with username/password and then receive a JWT token. After you send the token in the gRPC metadata. +* User Certificate: Use a valid client certificate with the username embedded in the CN field. The certificate is for authentication, the username is for authorization. + +sonic-restapi uses one authentication mechanism: +* In the authentication of client certificate, after the certificate chain is validated by TLS, it will further check if the common name of the end-entity certificate is in the trusted common name list of the server config. + +#### 1.2.1.8 ACL +GNMI server will not support OpenConfig Yang models, so ACL configuration will use CONFIG_DB schema and SONiC Yang Models. + +#### 1.2.1.9 Docker to Host communication +'config apply-patch' and 'config reload' are designed to run on host, and it's difficult to support them in container: +1. These commands will update redis database and restart container, when they restart gnmi, bgp, syncd and swss, the ongoing gnmi operation will be broken. +2. 'config reload' will stop service at first, run some other operations, and then restart service. If we run this command in container, it will be broken at the stop service step. +3. These commands will execute some host scripts and use systemctl to restart service, it will be dangerous to support these operations in container. +The solution is to add host services for 'config apply-patch' and 'config reload' on host, and gNMI server uses dbus method to invoke these services to update configuration + +##### 1.2.1.9.1 Incremental Configurations + +For incremental configuration, 'config apply-patch' should not restart gNMI, bgp, synd and swss. + +incremental + +##### 1.2.1.9.2 Full Configurations + +For full configuration, there’re 2 possible solutions: +* gNMI server needs to send response at first, and then invoke 'config reload'. + +full-gnmi + +* Use gNMI request and gNOI request together to implement full configuration update. + +full-gnmi-gnoi + +### 1.2.2 Container + +All the introduced features will be part of the sonic-gnmi package installed in sonic-gnmi container. + +# 2 Error Handling +supervisord will autorestart gnmi service if it exits after it has successfully started up. + +# 3 Serviceability and Debug +All requests logs are stored in syslog. + +# 4 Unit Tests + +## 4.1 Unit Tests for Capabilities RPC + +| Test Case | Description | +| ---- | ---- | +| 1 | Get capability. | + +## 4.2 Unit Tests for Get RPC + +| Test Case | Description | +| ---- | ---- | +| 1 | Get from CONFIG_DB with SONiC DB schema. | +| 2 | Get from APPL_DB with SONiC DB schema. | +| 3 | Get from CONFIG_DB with SONiC Yang schema. | +| 4 | Get from APPL_DB with SONiC Yang schema. | + +## 4.3 Unit Tests for Set RPC + +| Test Case | Description | +| ---- | ---- | +| 1 | Delete operation with SONiC DB schema to remove table in CONFIG_DB. | +| 2 | Delete operation with SONiC DB schema to remove table in APPL_DB. | +| 3 | Update operation with SONiC DB schema to create table in CONFIG_DB. | +| 4 | Update operation with SONiC DB schema to create table in APPL_DB. | +| 5 | Update operation with SONiC DB schema to update table in CONFIG_DB. | +| 6 | Update operation with SONiC DB schema to update table in APPL_DB. | +| 7 | Replace operation with SONiC DB schema to remove table in CONFIG_DB. | +| 8 | Replace operation with SONiC DB schema to remove table in APPL_DB. | +| 9 | Replace operation with SONiC DB schema to create table in CONFIG_DB. | +| 10 | Replace operation with SONiC DB schema to create table in APPL_DB. | +| 11 | Replace operation with SONiC DB schema to update table in CONFIG_DB. | +| 12 | Replace operation with SONiC DB schema to update table in APPL_DB. | +| 13 | Verify invalid path with SONiC DB schema in CONFIG_DB. | +| 14 | Verify invalid path with SONiC DB schema in APPL_DB. | +| 15 | Verify full configuration update with SONIC DB schema. | +| 16 | Delete operation with SONiC Yang schema to remove table in CONFIG_DB. | +| 17 | Delete operation with SONiC Yang schema to remove table in APPL_DB. | +| 18 | Update operation with SONiC Yang schema to create table in CONFIG_DB. | +| 19 | Update operation with SONiC Yang schema to create table in APPL_DB. | +| 20 | Update operation with SONiC Yang schema to update table in CONFIG_DB. | +| 21 | Update operation with SONiC Yang schema to update table in APPL_DB. | +| 22 | Replace operation with SONiC Yang schema to remove table in CONFIG_DB. | +| 23 | Replace operation with SONiC Yang schema to remove table in APPL_DB. | +| 24 | Replace operation with SONiC Yang schema to create table in CONFIG_DB. | +| 25 | Replace operation with SONiC Yang schema to create table in APPL_DB. | +| 26 | Replace operation with SONiC Yang schema to update table in CONFIG_DB. | +| 27 | Replace operation with SONiC Yang schema to update table in APPL_DB. | +| 28 | Verify invalid path with SONiC Yang schema in CONFIG_DB. | +| 29 | Verify invalid path with SONiC Yang schema in APPL_DB. | +| 30 | Verify full configuration update with SONIC Yang schema. | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/mgmt/gnmi/images/data_flow.png b/doc/mgmt/gnmi/images/data_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..260b793d62e71a79be0e8f1ddbd2071b22092976 GIT binary patch literal 78618 zcmeFZXH-*L+cp~Pid_MP04gfdZHS>o5Tz(Zs(^qS5u^*DNC~lkf(l4iT96j0kuIUc z0wOi^NS7KQKxhGyKsYn%eqLnn=No5?^Zh$7V`$1+Ypyxx-LLyv3DD9|-nD~!2LuAy zrK+N&4S{S@hd?$Gw`~C5+`t^`0WWL_ZDmDBb^~+_eAr~ApsoOc-hN-j z5CMVg{=)jlR^|B40s>i0QB_jVePBAVVvK;QMyGC{?VG5qF-`vV7@i=mKax&Lb<8#3 z{LxU;+HhU-ntNMs;PvO3-}YV`>xqbno64RXYiI~augMfWvhmZ!S?^8TA45hjzB=M` zWZPcSo$0*_TlPJ=eU)NGPfJVV|Dh!b+5N0z&Yyids{WR`dfUVt#Z~g0+#H$>Ob!Bh zzFB_juQyx%eseW~K&!luDs@H-u}PSgKA0J(e8I(f6Zbso<{|3Y_U}vbBm#<=C;Huc zWfFdiHr_PkyUHCCoq1#4FI&O|`IgLXVm3-wBy!=(8>#>ERk3T%X>*H;2LH4h?mCk3 zb8`eZ*1>VXbd}y^V_N1(?Q!p`#xEdu;2viuh>ZUEqUK;C`ts1>oO7(ZD|Zt#;Vb#? zaot{nG0-bri$d$p{&j6VHQv@NAY`A+ptwl}&SCP)vpt9x>~aQp8wI__CJvX)CJF|P zYhL!HEYgXr37-GpppI;)`^-KAgFU~>wf3CfR|K?Ge)bRPAd;4+zwG%+@)pYY${G02 zS?|E@PkG_DPe8yewU|ItBL)c@UHapezlYmSbd?osC2i}!vVPsaR`SR*pRjMk3%7r4 z3+u4&sE2pZUhVunxKJI+q%>mWx>YcTU+ggSZEwq%!PpOK#-GaspCUF=kDyz;R>;Wb zhp_W*t}ZHHW18B$mV~2^cmnlHhKApX3@g}f>AuXm>Kq?P#^zdY?p zhd$D_0y0Ld=>xQdk3nV5auvd&E&5n2R|j?!A~y$X z^Bh5Vm#N9Mx@BCn?0MIPn%srwZJL^a+F6@_9?H>k@}@qx`wDMsgFBvm69+}zPJwzd3+n+on4 zV)8GcTk~=?qh9Z_C~(IWT8$&TO_rbetCHVHcT_2SU>_RK4AF147iij3T6MMLyIoRI z(c))6gt=~d4P3&{EmqF`ZBbEI=V83}q_V*k&Tg(R?G|rzRKt`CHM}j>#)Jx#s{T#0+uU?vR!0>u7b+RJhQ^1VU-#N z^%+(aKLnDw*{k#Y)P~ZDrL^&?k;ylY)>&t`0$~ub$-vjWEb>EKde>-Jrc}LtoM~JR z#hs$2X)f9jUmq`PdEw~TeLa|K+WQ#+!~SU9#T07JYi|F;@2S{^v;t`Tw26YHaY0cf zImlmCi@o3AYNK-GVS?_(1Bt?ja^3Ea=WVPN7e4! z+FfFno~4?v8MzQWIllSEE+^ac1J#)!>B0t>PCZz`=-|kX;`1xn*p~vd1Yq zE}pp4VooEOt6F0kGl99s4e<*b&grCN_tKqR9vPJgCxwab?YX(lSnF7^+q*2nqhQT< z1*TUW&kO5~O_sfq6*ZPPbiI+oVrAT|Z~|UKd>=o``NvEn%*k&DVQg0f-7{@DZC&nM zk)A)vehu53)J%4WDoT4`6L^bu(!`xJr8$Pvj;o8kOB!ciEM(*p9o?l^M>nNi&DJQe zJ&W*SyGd`fV6YjKFK5IYm`A9>kfdAOl!>4Yhwr1luHFpUlnHugzWz>`QFUQ^7eC6IY zY+P@_@8iJ^rx+2Q?v3Th5wfpgk{P)A!C|Z}vFT`(0ol*KUZ+3vm9WWyrF30}ojY}q z?Rr7?<**F-9}#AL;~cit%aeRn%P{KX9ilt?%c-l5`weX^M0IlUmQSq3$mB5ncMXq? z#xtWnd7mmrs^0n<=dRsO>vSme0UJf!zpF-y zLyateYwvXUY>Y3It53LQpn0rBPD6B{SblZGg%<`IkI7HCd(1hBMhAP!c_VD*8^_0E zd|aeTSF|TgCv0;Xcl{X#Qkn(4gMM(FaqcbQsT?0a+T5z2ceC0r;{wc?>AmoNa79#U z(8J_qOO9%;Sm_8Kht7utGVvyNzh33bvo!N)TdU#kiD8qB;nsGmWkq-C=rh_qyHn#G z>`NY{MvD3{p-CS|S!t#{%iEQ1D z66w{S*p=;l)vD8ptI)bdchVrD`(DYGKNOO~B}LXVmawn+SZkt6bLZQ|x-Ob=`hH{e zn0EnHZ10l|jXgiCzBm}cDlEZ5nB;~ZD5 z2LhpD5T%OGd#2vyoa^x*6rY!P9cDQ%U|3zhDXer+!Y)sTJRd8yStTX+nK_1Mbc%ey zb_gCT{VCkcOCjpE>!k1<;bpflRNK=J!W|1(pF{5EVlHBo{!Z&JycT7l^)~fkNV5G! zlt$o{Ggru_{^na8ukR|T4~2)JGWf?$O3XBfNs30IB7I-X`nImu-q(DSh)u>yDZ~-R z^Vd(Zdz~B$y`C&~TPvKkl-goZd)VO4E79wD-d>KH_BHXDSj|y2qMiN+EuHerS2u;i z5)25r@KBDh>()jybB+qNH`p!Cbe+XbI9^$Ph<}%HL6T5|?ae+RBi6J9Gf$7G`Bqdv_CWouEjC|elAMX$q0#`M;w zYj+#xmY_$I@1ZX=t3RI7wiiiN3cvF&3E}WJke(raEW_j{voi>Pg&$d;sVW$B>afx+ z1wEr=j66nv@!tm7L`{l=3nn352_)UIw)JxXdhV?4Ir<}T>bYawFDp{-;asBf11?qPe(oZ&;q^(C)a0m zKkx6Hz&C{0A&JuXw}B_qo&}Ne6NE?qWnBOL(x{-!m4!)TnmZjKExC)S4|bn@OnCtL^x4DxNVi(C4$#(YHLdXSLR9b&0}Y zo?4}2SMTRwt~RYLZ8GGjt9_W&X-CghX5Y%#qNL{vD1cJhhP7ymNYv6Qb5Kyyvz}EG zO;J~ARrr+{&9Ka7RGcodk=iywM}1fdUM(b1;>#W|r+P}Z$dd-Eg8AjW_wpRSFj6^i z&7)pIOguaL8=l@?#yvi$qggp#ddqO(3i3+ClOXWd+kmT}75n*VmM_ouj=smD!MI)e zXs_ZU*iThSXzw->IcGQ_N-gTnNM&sl+M7DIlC#e&%0L%3dZKl8icC0ZiSb$Le}+ae z4SUoh2p+4%^_N= zi)KDXg9zVg=YuXO?{G(iK7AXU>GP6T_7~e~BJ?DCpQWoS)e%mK*w&IeNly^L+*p0G z6pPUuvL7V3k5?hWUnRDYGBY#n?Cq<&HWC;AQy_IJM;*cE=g(JHn)=vtG)6qd4P}}K zkdZ-qS<4GoAZ|;N7qmd~yQJjP`Nhq2y}ED9DpLq=JZEJ4mSF(|TCV19bt-IYwqqaW zKbB;l=;+{(PUt7$&ew+XW0OOrAl?~)VI(v8J)1ezgQj{VD5=4fZ20@u?nokGUUzvBk5`J0# ze_T?KF}U|;6YE60$6V@H(l%I)0#{8^iO3y~#H5GWo5n%jzD=|f)!X@3`sjarrG^r? zXe%xkU7nXGAoS@=&T|UF_q%grMCd4!_hD9d_C^y};BPnO9Ry7{N@n~=rjto?wi$bH z&03ly!r_b=n4&Ih15SGjSo_bjQrez)HykAqLN>M%T_v~vjc7EFNaG7T0bHS0=77F@ zTA#LcgrJ}a(^{hgaxSuh%1w3X-+od1cpTW7jjkhv9EwgO*db0$7bU5o#xNQ}(OV-Z z@eN%0_j-h0HejHi7?1y+?Yf5eH*#3R7@5r%aTiqa^VHaxWqV++<@J&gUuiBBu zKZDIuo%-SQ;ov6%yWd7)5k)6Rg)%lf5MY+_%{k~MCBnudP+&+z@D@P^rGd?Vqp9pZ ztTNtm%MnbtIczW`gE%heBMb10@zxIf#?y(h$vLvukKf?N@?!;+zjd%Tb1xvD<9)PW zxU?`L5H6lrB~6&oe3p#SKrM`0Zsyk3f?$HvFNo$m*w7+OJo9@9(%_vqTdnFif}3e` z;!#pk(q(5(Ov$O#;nqwEAStz(d4c7EHj9%c$Tz($9k_%2-(6OAl{U{#a(Ai`&Y*&> z+C||`sCY$^FefBA1;qLs)B@x6Ne`)ErnTjF4n$-7ZvC|7#{tJxCse4WT&m$8ouS39 zQAbbxbWIgwsb1nQ`Hg8IxU1zGl~=nJ^pY4u?N7XS&ylu`0tMhzkwY^Z-um~ti&rbn z+dH?rx;;-yyQZF5AL3|&VcfVLo|G<#dzhVH96v{F--45S^O#taUlQ*V_$(W(Ei32A zj2-enRdi+E`C|fAF6i=}>#D&Ek59lqFX6IBK*5OE_uhv?IYaP{yjb4NRIg5wcT>{v z$0qn{!v68v8?$4etb(yr(q%Y#{`iMeydd?>f*lB4Ve}z0G23-9m*t6sLIyU z_TjxTwRjEej(0xD&;p%Oou06;Niuzbh)otfI&-r;Vt?p~R9xb5v!juAdnSB3dK!e2 zhfAEHK#iRb$yH&qf^2$tM|QO@5(Hr~nKrM2tKGfaOf4{e0ULWqGddL2=GcXoC0phU zsyIbQj<-l5=SKGlb)?+*f(#`<9H`r)%To#=K;CE zbJP<{_|H>CCeKd!$ni>g4lTo~Eemobhc7BwAKD`sZ?zI3-sD{Blh1zEWK)-^tJ6i> zs?G(cdoZjW^ulW~|EacfFB)-7pDN9^8B2K`ge*hOt8pgmAf^0}9dg3yURMWsSbTBU zu_fb~VE#`%G8T;kW#+yvcQxfi0zNb~@9NqW8?yUQq81IsgUo~V8soCGt#eS@|A_RWw;#;yrai|h7kc3Gc<`_ zxMS~i(yv-M&Y=(UB7MMqg(+-0ez!J_J)v2EY2BZ$i+Z{P*Y8xq=2*qu+IMURPutTrn6oFP^X@wXUPfN`3HUI1FnmeR0ug4|dDxLO3ODx7} z77BPeKgD4a^N%#yfBPo?N;H?Mxln80vOHXFey&4Te_983@J6$9I`DlF-JZ+XEIr+^ z>ZA6AYi3fpa;=jFck1PwtF7OXu*FdVauK0dtkZ28_PN&tySPurq({%4F`o0bnzeFH zwMu&}RA+ako#@y*zp*ekv5PK9#x>{aw)F{lZICK3t)^!m%DW?e<=mAHKhMB&TmGVm zWGE8)*sLi(-jb5;{wePg!=9*IYn@$HkJjmN*hQ3bwcWd?e)n?`kkUSiOYK6>OCej=d)~k7>M%Z*7?hpFAHWK?}4j4CN!?%yBB=Gwh^T zSC=e{dEpn?n>*)3tjouDG2n6!{F}9cKftZ<#}-;ZP*N~3$|yPaZJa6P_mxe~FZA3u z8Tc^44mszsFVFe7Ic?XN2=GrJtNXcW5Ljfpihs&_fBDx6Nu z&+Y1)$Ph8qz8jdXLR41Pyl5oHB({&>V37yXebQA3#lF#VwQ-?FL8x-_u_S|)`2<}@ z;tlF|$cwb_5?)!o2}>L8!$lR56a$rvaBn?gdzH718TqbuSms`nvhf8MY^KGN3&UAP z$870Betiy-PS@R!285{>*%pK+$E#C6&=Bce>KEdmTc6ihU&ahu%ruf0lb2ntF!n`- zj(ZX1M=sS4yeG=*6}ijYqAeg5XWw=%s9p#S56?pDoqF3bqtnCe^|`_aKUs-2=}Ud7 zT0*NWovST))I`?St_(Me3dQLb+<=eMA~HwpzenmAtd?rJoM%MbmI}EUK8{wg%NUz^ z?!ORXxwOy_PijSeLYFHlHb05{vuYqck0pPqKkT^Otv}wj3Hd; zog1>tA=St7jS1XVs)WNp!_{?pHp3?T;15yU;^90Ww{F}ngNVTWg-H)gZHw!B=`%dd+Wdz56z92bIzH^#PJmzPEwD_x#?P$kSnw}&r zoGU9`X9qS~wbYqw>SS_lv}2KiT+F!B9I4ePb5m2^gLvIs&XtFvO>jF}Ht)i!zt(|g zc?+t{9Xyq4aGeyZ&9E|I*T`W8ADm%Gw+J>5;tv~O2)X8#7hG2rHtcB}qqWU1-3WC) zJK=$e2-zPt8#b52+0$oa6;hz7w<5J?QK>4qX~N-nd&>AlP2=;1D7@zde|Vuc-h;dF zNdnI_IV?mpLnga!Yx-btR`QYOx>X|^K}O*EBzhpQa>uChi7XOZ63T(ca;4STsx5!G zbuG=i<2> zdiaH0ni*cv<~c!8HHrTHTN)X2<70b^v6-zNm19^qdO75&qD0U(AD9D`yN3mr1gQ}i zw&YKq&bqY*51eb-ZXT4IoS-wSMV5qayM2AF3DrqY=lIsXsL#obNv}rfQJpaN^@B8f z=(}$$s3XU<&*yQ(XfL&e<0Yy2!zFjsi@FkkO?;yvLd{At7HVHrB2Zh?YgOF@<&N*~ zDR{CNLZ7tZ`fxEe%a)n0A$Kml#`bKBd!Wto1n?yO;+nkM`Qur}>i13at8kCG`;boWbe{g6yl9yc5kt(~L{I$Q7W{Z6v=M_ut7PGSr^)re?e z)lH{0ZzFQu)nast@{|vn*bo=Dl;>$V-$sTyPaeLNSDq1py;hxg;>9i6NY!5WmJd{u z?a$4E_JEWh8sPKI%ou6oDpyh$(6X$!oARBg*>O;dT}4U9Kkuq#*-o*lam)J7xz+<& zQasL~p&A&i2&wtMlRsXFYK|g;0FFIvMXcuH(*@<#0u32R<6d-r?4=KiW~s z7$3bd|DA@o{xL)SOu=yIgL0H?Yfn!4Xmxh9bKTU3;8r_gc&ztzY9_K-vn`YIZT{&n zk(k#&pYmEB?QQR4+{k+IO4P=AIhp^RQJ+J_t-YgW5x3hTa-;d-l2yeWu3o(C{CEB(n?a8%^bX~yk2GCy=~w*)%8pS%OpNXQ9_+U2j)=JCKn)H=m%{?@Uky0X zg9~c9W24_1WOzE8CoSJrV1vsT=Ra*y;4!~$(w!FH(=ghANWu(%>*S4#YyZnoPDqq} z!$M&ta-lXOm{s#YP2nJe5R!}2Gb`)hDu+4U8hd~{1!N^+`OZsWuiy_(U=gsYP+$xPMF+!*=Pc)hfz zJ$TKx``+I_Co;I~^F6mzy#^|CPHZo=Rmjc|rXm zGx-msq$1~aQsW0_h4A|}B~grh?B(uaN;4os0@;PCFy>5HyK3zs?gV}548IEF266F4 zjkbqLlQ@v3Zc1|DPP}&!o(`idtM7R`bh-X2N9Gg*YPOix9;T8Qa~gN8zQxGM_C`!D z#eiUmo4*t0Hl3CB$xbQ*F9b8RbMd+byP-0mNtL^jtLr8%Qq}j+x^YVqs-Dr55iC%B zs#|j>u3V_59pf1``!)PdXA7^dn~3#lCrACUE;S#TTR`R;DARB`KTFK>$0&MW{s{WZ zGN_K7JzcznPmU5kjS2NE>7G&OOHr$)FNAB=gjD^_$?(??xNv3h5~@5L=*`1}r0 z()}nH|Mr>$+VDBjUp1o&)_y6#x@^{ zLEqqCX~KdaS=z7sA_J2VT+}f>Sd|f$X^52d>e?>tGv2-!^d)Fcj_G9Xa<^|#S?vP8 zhDYgqpeXu$m!uGO+;TYjf>d$8l zIpr$Rx!H%SIqL(n-mRuko2qG$9^?G7Eho8cC+`a49iMc3OS1op3%~&kIu-U@OlcAW z<`s@I03ZKBL77vZ+X?pq%UvxrT{7`S z$IW0EQ@9fJG=Em1Y0zuu{YDArP`f=9n_LxnJb}oEe&*(}u?`Y9vp(b9@X>eLsRr6B zl2Wv^JWfYlwE$5w>JU*MerQK=O?4V8hgOdnv+ND!uG`ZUG7OEF3gSP9(%t2n#QE4j zL$A3+lO~wPt~{?)6(-FLtI}v4FyRi2Y>XLGez2U+(0rr}a)Hh+a>SCeMx2kY(-Bzv{JrhQ@Ij^d z52U?H9N>1lT~Z=&+v&UAcirPSIt(H?*w^EO8o+TsL7?zk z06}BOvtUgGxWB`xtSRL~X2dpDZJh|33qJv>->sVz6@YyuZXK^f-(g{+^;EI=QGbVT zZ&~{CHyHVdbqf1Y&qqKni}EjVJxCP5?axr|MjtQ+Y0;^l_e>C}Y@`)%n838Gz|@ZF zlLCTRG@B~9XGhXO1b6y9wS$+qmcUuo*YxkgSNQZAJz!0PF(D#|N;1!vR4XaQok_O$mOHgft4krtEgP3y-5Az*t%!8rluJ@s8G5xBlwu zfLZ_SGo(BK>j1FxE`YOv`5eVj5Q^;pWLC@AN`sCN_WkA+sAU5Tkp*P6l7CJJ`i`;h z>u`W zoL*)B?BV-AB`O(jp z_U^X{@AIKQODpaGEh1JAtb#S;6$5mAU7aZSlaRndAeZ`IO_zW8a8XLieP%p`fc2SM zrXf78)jfMEDki3?cKWRR0>9^K{5(Xlaht%S;XIK(Z>PynU+!Z&q5gaq=H}*Bb0~ZA zBuJG%NpUS7Nkj2)(xRDJc;Mv3L@AP?uLOad;@dx6R8)j7^_a{sHYh4A>@D@U!v)b5 zsCt^bi7;Zhx`Ot><8Z>y>d8bbYZ0%WR0N-fp1Xf!zfDCb=({jMbF06yxwfaL$5I|6 zNLhyAS4R-AV|{qkYKta(k_~ccA8oq-%VHmDwZ4ZZitea39aZGUc1beSUPbNw`%+fx z>qy$;p+j)yQj*D*_j{BM`Cr-a!k5cQW|f%-FTG{L$>aRd)wW(t{W8+Yb$CyoHw#jC znv62@$?@9&xsV)bh{r{#=2F-w;2$$hA;!)>4^n@Z1d(&wLNU zKdXGqVTUXzTn@Z=aJwY?SJDTqJPJUv^{srYXZA#uzk*v_TY^F!CLXhX=52TjhcY&u z-DK=>5`L#vwz43<`cRY|q1$BcCsca@!pLc6<^@)S-0cF8TPGSw^Fwj)pJP8*Gqw^V zb|fKI zmyRq!zp();sRm7rOBqiHY>-nMEspNpCcoABlJBFNyN40Jd;j_M01E+Afu>L86f3@K<+*i-L&Bo>C$fh(|fOhey@@t@6`J9 zo#`xR@B?sUYaoW(Ha#Xhg6{q6NaQkzNBPpMJz2ZPVJ+}=&Og2e+k4QF2~8saQ$;cs z>PIr-#-b!FIZ4AOQ2AZgL>A2NT9fK+(+uR+| zrLT)GxUAOPUajxn>Mn9Q_@v;t*&UrQ$>-%7O8lN@-55=m(WpB{RyxVKIa#0Dc%)@@P{QHwQ16BJ1&!F!sHV0NJ2WoBi zP>hl)>K% zb{1b=d_#vHNj{Y_UqXQ`(a_p(W z*EOz-)v5ONyFn5pS^6IB4a{{1@C1o(PktsTrF1?%B^D1?zHpSoXUW2DVc1(&?ggfg z+vokvWMN^zh24;kGYY`|?#(_TJURtb{KeDgZD@fGgl@W6zB3alWVW&UwP6Gs-iAP$(&~T--ke|cCEWm z5vd_VKnt8eEicW`nm?B{^>;^p#GIzLFDz7c5q*}X73d*Hc_A0&SyEP)pN8$-3>;UJ z)`2teVFGOqpO#_TneU5=1W%GWy6xuZ;aYgu`SIJAS|O^yZmF`LD%BG=uEcPq331>mD4OJR7aO2MLW49s@h`5Ija(p^7sdb zZbV16kQvaw`euVQ(5A0T;1`Zf61cWQp#1BlHwTNBeunAHDuyfXUd(cIFE8~nkxEx; z)A4UnZg7ts8?SXa1B(or>SecT!DnGqMYW=MnAP*XA11$&%_XtBdKuIG8xc=8{8GZd z0}U$(=uC1hL518L9UZOhsWl&Yd)^6@#;b+LUyM6v)j);Gm7Eka!57T|p14W4=z-x| zlc%&4zs&jxG({O0l#kdyUB73x6*kB+%>? zst}#WB^(e>gQ8rjPC4B8CMT;0H8nFdV+=GDxKnynwQkF9g#>K}{z(a6F!Q%)!$7P( zn&xKv6_I>@1{Ou>lTSXOb&MJ^wVSt1l~Sgv9w_A*MuXA@6TBV--83^bq0LV18XGAq zlj{NxP$;uB?C(f%5#16$M^bsCeOc(1ve@p-U{JFj#1-pc4Cc$lNr=*nwz|`XI6;waKo=Qgxw@q$Nu_Pprre>l!J6q4SWS6!x#amHsB`hactAd~PJ0?22^ApG z$7-B_Dcs#Lj*u_&NlTd{#qLMWcZ7KbKOJHvBtO;U?-&h2=}(R0tV1W2%+RUij77?I z0%6SU4%zVbO2fAwOL?kemfLq!wSp&2SnB0tJNO?5)XzLe!F zVT`_YFz`>uXsG~yUb5IJC6bXL>$nRN#IYuPzyR9?T=$W*&CAOxx5qDv9fk8zEz0mE z>IlWl%fa2prs}h@#Kx3B=>Inz$vR93`LeRYSR|9lX1(R&#;xiikEkvOuj3h`{f!T< zFu(WoL}Xk1M=Qd>x|I|_N^-uH6@XOId$?H!R<(y;-pUB(9z!RgyRiH_2t`J@AbecdG- z#)N^f7b3M>j;3$W=)R7Qj-H<35io%Mn&1Qyy6?Ki;e+w;s-x6!JJZ6Y+2LBpsqWYD z=ojf$GxHf6-TC#e>Kho`ZR+if&)+i$`xhnrOj22ZM%b{6f#CltbaVB{U8{B?5tE96 zmpFMK5x|%?w>;wyHo?1F`S|#Fc`?9~EjvdbADz}l<)1FzK1Grcp?^H4ucrsOLZ=Q4 z42)JRaTQ_9JjL3otvR3=4YcRXa)vR{($W&pt&-gj*Reh1WI5EeLG2z|0Q%adYcY!o zdkh6B7QU~$J2obU2YR?1m=amaQE@!&;3c!3o2wJ_lxmD-RAgku?ATzkJsARl@~rcF z)quD4@nC6$ymAfEBy>k+R#tsOLoY9Mi9QurA2+#?Ja(~--aVqz%0WnEoeVOy*fKoDMU{H>(?Nx*NxZI8R4TUcINDtqqSIq3_X zpl9rr^o7Sb#z?N}5fuAHm~E_E5}og_Hk@;E&|4eD1= zAoB3=IQErCv`2E@Q-AVj-jImY(A^>K-<(TBc)x6+U1?y;kp^5xLt|sG&;vZDr7yS* zH`Jp(%vT0}@(Q*}ZI_a|CAY^B<{LR??pX2Oq|_C_g7_)a>FK4JL9lgE5@rs75Vxbb zwb{0FTj3Q5BqVXnCGmR%bJtk@2M@CY=KYa7%O?7qk z%*>4OA_HIQG#ngN&XOvq_~3_7^Y@(1?QFD}S*YRGDhEbl>25P-)?2o;$x35`ir!l| zSLFTC{)!6UB`GH-5fKp?85y8xQKqdS&`*V%L8i4%w-YlpUQh@#P4#0M&)Hr*&%$CQ zL`C0q?R$3m!UZ?SX@%7%k3@j(*4zF`yNpLv6 zw6wIiSZH_EuEA+NHi+Qnb#a1~3^tC(W)g0+PWtcCDw+d+YGw=2S@Q=K!u}+~n>Y7% zO%GJE(-u`;dwAcSs6pBGLAecbfbhh{#IgXV(eAiAr>e{~qRN-_FHJr9jGd51qjhTe zGy3Xdc)f!XVj@v@-G{ngnXF9rKRLvghItTA#F|~($VG+Y=R^E1ZCjgro6C|uHu3Pc8N*Q;+ido1S}|Uj zx#v+LDep?cPQ(Z(lC5p*Gwj_qLlVSTzJI7>CwgNJC>l9;N$!)!6sK6fLw{R_!A=7? z??siBcc(ZDF)Hq3aA$Gj>m(M8KC2;@3IC zNyp_BrWiKZi!#9tfo%3$Q`KmIXAq3zv}v)#jE!H=%q#V_6J!*f6b$c>gg|z%3gEx1 zj9+-vU9aBGp+J1*42*}sm^cf0IH34H0NihI>h2s&^0G9@$1bU^u{HoR0gKp+QhD|X z3OThMxXr(_`~h!`J#!@A{--X7K=L*FXEn>h*r?78=%imGdaNDsw*%8}Knn~PZO7_Q z1^ZAn;mp_xXPMhP+aN!_uQ@riinQ&9K1Onpq*7hNUyhF9zK15Z)Kqd0Z!*hxp_w0% zUkt)Mbd9aD$^ZvfqaTRmn`uKCal=-@lp`!2Jec{BWP{&YKV9snZ|n7i*Fn9Wv#!Z*_niEW2VH6z}T+6qa9AEeP%c1>Iv^ zq^pOUr}K|jk(Y#Ci_2Si4~4oUe)u#v3Ld`y6X3BX&=ASj)B2~TrUpKrn}Ka@uPWCR zdIGL-8MXaYHro6y8~-TjzapHIJFDaX@Iw1lag@fQgypO3r3&LWw^x#M`FyD0S(1O& zWov4=K}Kwv;9`&4oZ$wBe99qu`v^CP6+t{}wz5gSDy5-6Z2?q%EsdmY01kT39Pbii z4a>rG{#FFwr`1^i184Wo({4}?K2K-Wl45I7RF=kKIt53;!w;Uqeyzpu--+>BJ-uFF zJch80m%j)~^x07$o_lO-Zo@);U+I>BwE0>7Cbds4U>f<5HM4b+$JmnyGsuQVRKPi} zNf-ptX)`NTUK5?{;i#ZqbW5rHiPjkyq;YM~1QpOm9UF%Hm4l$u1)d4;uw8!~8pXmr zKusH)0Lbcp9t9!yCn^FOVi$$tX4Xxeg+R%+0bVfrK+}I&`5QQpymeU+s7-&?F~4z< zpSG!50ODqa>pvF^ys2-?yMJ3K=vH2Il?DR+S$+Jy$@kER+iLcG82{$TInuma{Mdx5 zZ+yc!UXt?eTllM#G3gekzhu2v1{>|`$@9Xx|Go#5C~YFy9){8|Bfb&uBPDzO@Hv4V z&-TTl@3-P^7SxfpskZ|V`A^~f){(iwSU6^}`wgNjK=1vbs>YTSN1SK9QNWwAiHTQt zBMc(gtz6%f%Ak?yC80*UpX}b(G5I_qmtV?KN$p%L`5aZX&&@40QpgZa6>CSn@f^2N ztrj53%m=o1j~9+at}I0T%g+CW56780*3u9a%`Q~K7omsuIUT_6zlP9%`OIh^=~%P# z{9`HdWnGGlV1r6K7fGRfq~=3YdS^c4kwZ_ib8jiEO@4g*hC-HdIe>{&Qzg-0oL9J-Sn?G z^C0P1gX8hn)H3$!X1_6d`DV39)$OibRH{vF>&NEf<~?+W8~P~3ShQ!{N@2{8c4EF#u9`YmtlviQoBfMMI!+=_5Wh}7|g{vlI}h%54qW%l$RF2 zSMYGfOzP)-ScJSsV&~>_{TkB48n{AupT<>h?l-%~|&3$dkr~)0DQEGL30Bu^edtH2vYG zfA)IPO)3DLGlz#N4wyFQtR!?jOERrgqaH+_oP*7}J7YD@b_(Dw@?!XPGt_+M0*wfI5Z(f__RnCA<`^^5x1_DXZxMTBu`z>7Ki?;k}1o;G~G{l2+KuxOI4#+p_OoR`e^!sQ~ zSo7iaX8g06U_U~bf$fW9tV;t}edUk3F)V&jcsqH$V16YT;Hbu}Dp16-uSrFJX2QxB z1OH|1Enx9abuj-3#0#*ksjc8Kt5bk_6r0&F*S;3Jy^isln{FTQSC)uS#{Yt(X<1SVevPowbr%n=0I;d~~mKHvLf zYU3wxv6$F5Q%VB(W$Gi z7ZVo;SX~(kJX~BAT-5~d|Ml%E&~)%7%Z=<=9umZfM!ejTHcd-$)L1uBbf;@UbHWa!!Q?Ptm>fsD*mfypj?T zlZ+>@D&l5{mh(E0=|Df?Cs@JicihX-*1WQxet=Xz^1U?j!Zz}MFk>$y zXMx1-4^8{OgmAFZVe8A&Fo@QLHQ*4i$oLEKa7@p~e+Owi*}+4P|F}wt0WA;*h1lIW zQa%STno}%zd`$uHzd+5uQEL7d?f5^T9sj>U_Jkq`9S?e?mdDImOZiNeB^KPw{(;l5 zGQ^7U@EX!GZBX-$*=h?nI`909l-n7|C8sr9uU~MCZ}d^#Eg)PRUsvANp$}ZDf3^Dw zF!{C2lizGD)6X5?WqshD)n^AAXO06$=F`B@eh{O z&!o!SwPp}uLGi8T${V;JX<%Rxg)VztcEJS&I8Y^9{$(RDu)Z<|b0O(dla*%v=J3F* z`mSKU=QP?93C`uU$d)j)W+A`WU@iU@dr47dfMSJ}D=jK5Z-39rN6_dw#J99C$-_7d z*l#Rg=WkNNFRmEX97F=Id`3%f5&y2B>l$|Uj#AdosP%z7mlx6XaH&H7N4$_z+-n>n zs5Me2fVX@%M|x*s*nP9?>~{&qI~kGlj_8_}D)Z;%UW;X7pbcNA$6E;iY znq@*eLVD0X(AV#F%JcPf_BPA8f=m5|Qvh?SUbKNHsp8{q$iYo(zz=|WHOfXTQXkWx zJ%05DGJq;&#bxSS^dynK(9rO0sG_IouQS(ff_ZLPGtXH-Xgysi5lRT5Q&vi)W+!GQ zLq64KsrP*P=yw02iP6=%=7F#22faFtw?Ni_IV@q_zb!0*;;JUum3Ok3XB{sL^P&zP zo%}KAa^~7%)zvL0g?COsK3YFp16qQz2DB-)CxcPUxuF*wT>?))Z;~b&h(r&N^VlV_ z_w;ZbNa<=0{G4-aa(S*QxUU?UH#b798z?OmZV6ktBVfP8?Xhsv_LQ=}?gI)*ZukCs znrrl!71(k?=1@Hx*v}@#c5iN_9)ops@DB)m87aDOGo&zr)3nzpDwR3jn+4RQ7wR*8 z&sotljDV>OtGyQVy|RsiX3&Qts*dSM#0RUZtL+-z7Sid{fkI5ri~>Sjuov9v-6i8c z^}{!LLOxMt+)WJ`)VeT;UR`!!(gNQyYBNM|%4$Jw+nUe~^|z1@G`G6_xEIpfy)src z(_uAmU@ACJHYUbizVC(%xn&OV(7RjGkndod>33Mz1Y`jXLEmziq(-?D11F5ucL%F3VcuJOI4oe z<>#4MN#EPX{4CV09Ix?G)+>|Yz_TI2Z;j3U>~Cr3==39!%}d}b7f;^^$$x;bJ!gUU z4$?!L8I>+f_X71(HLEt;bCpN!y2kL>VEba!{m1nA&#^aoVOB8R1S)I1wOzng(m_C? z%W5897>W4A?C|3<^63A#k_&#nK@Y5r?@jCn9glA=iCd3N3Vzc>OM>LDwQT@wV(tT`5OTq%*XumB;#N<7N}JpHK5RRgMQM6ECE<`6y)*J) zAzP;?wzs^PIUQeeORO-CJ)tjaXBNe-cnjOTU2C=x^xuQRGvr8wrf8P+(x-b{ir+vP zuE%h%bHFd}Y&^iR#f|%zeeU8M0k{!^cA{O_Ve>9pKG`|;+oP2)Q(J-Io%mzCpk%Ea zAp;&@d~Hj>_XcZd_VOK;9aX(0XJREQ?WH>*+tOj%PLX^e(-7>RjG7?s{)7uZUU}Xa z<>PT9_j}ubUtrSc;cQL?jK{um4>6JiVDN4MzV#0R0q~Tv!#4bA0pnG$ zLe28mWoKMackLxJnUYB&Wg}V7XC1}TwyP;W!g&_>HZ<&(l=#YhIQQ+_pgEGgDsN9u z_I0YXD>dgGbE0yh?b+f5v&qrkF^5P_n3gg|unH58Tj;>{s3n5mblUY2PG6c4sM_+6 zNwE65w`>r|A;``l6Z4c2Y9^f%~(I2L(@}UN^;;XS+!1RaTaI>J{H# zuyenXd86<;rz_P4mc5DWVS0l2F^*iIUz2Hn&y>K5m;z4@5HJ;=BQC^6@J1!MELQQu z@rbgzVE%VRe7XBv{bHXgBYffeLw#1uXf3_wXUn5lqnmUuR4VTxYO=o!a8y$tM?R#> zTuZ{;Ni{GNbk8_HKIp3BOOhx~Wyd{L;%R$Yw zh!g)0b?+6>RJwi-+Yt+lBBFqz(gXxlPzcpV7b2h_HA<1*OQa+j8;B?!=|t%@kzN8s zMLoOaL)WZGw1TV`R2~yB748@e)?MLLA)&<|L9$`sQ)UHUHK$x z*`EsP#L~DOAsqj>kmuAyeK}MsK=lkErDZQemZ&WW>r}%~%(g;Hcg&k%*_f2$D$Psz z!BP5_Pv%loCxx|eVq4UcEZr;J%fu$&r6VODX~}-zr{RFo=7W@FPv`nlt)?gQj{xB6 zc1+RY)X&{^ypZ5#@4MGX%oI#|yLbBba=xO^ddr6~>!+stxHI3_OnZ1s4nq@z@3F zbEzs>rK7C0Oif7GS()1(PrIHlc_MD3WwB-^hB0zzlREY>#lE2-bWtWinI1fgL(Suo z0F1Jr(~yr$D1H{2X#*y1_ea9Zg8|7`-^obIq6xacGrujnQz{YZ;`!M3p$2DG*k53)r@Q+&oaWkh59a>@GBt#P_%ObR8IRo@(% z%`ANQ`56873LPO0IV-713t73i12muRNIU-@G!lpiwdjk%TmX_eLIySu@`^V6NkssW z{p5Mc?^n`=Q$A%mF3b;sZBC^WNNf6DN{HuMQc(NhdTeBR#(~%hL*Q1kmdQ&$Bi)7^ z-rLd0UP-ecckwzxy|d`N(&cJ)$LVYrHw1zU6qP!!@o>vF)CcQ8P`W)Rrrd|QF9hG2 zW_Es(oYX12{3fyO^!4GsgzkoXbXZT(r!A$Vgi|MY0Jt!k<0Lruf1n9lAtwHW0`zuW=i(bSb_5-jQ^2A|IXWIb7}uFJoE{m*HWf=qI_W0w{Xi|Y ze6!77Q#PJ3#Ml6;-9ry+x8^(jB;qpFJ#A$6Sej8KJUu-_t$IG^Ssba$cga^zZBQ?t zmlKQNJiABXwrR|(JlxZ|8Vz_AP`(6XtLI&v00T~)s(%x>#v&}bh*}?&71nLnBFrUJma$HC zl^v(J9&6*ZRuNAbyHa4=Wi+h{Uw9RN-IbS1mSQv43DfX zFZOi!xg|rF0Z8a#p{6I4;zj*2FB#1{FN|P%=GAvZ`MWt|C{w))HPo)nl{RN{AL&b_ z1qEjjdGHiIC|B2s1gjmH3vqj{$o!o6vIc2mL9Ns#Kr}`s*Arurz9>h5Jj9n9GkYJj zzRHT-92)SN8m#abyO@`;R{xdnUaEw*_0p-KQ?rpv-{j1d!KpvyDEruDW2$7$Ny|=4 z^gv`JXQ!ZZa`7Qothri^AnDF@7d~wr1zv0wigEfc8~r`HgC3rRzEgYTbp9!PTR5+d ze~6>Cot>SpFZI*UJ0lb==%dWrDi>NvKD&Hf$})1|D~&1Vn??rvtFB1@?9O)>=NJb) zLjdC~d`foC^$+o>FRpf;mysN@b{syeP@#)XWmDs%K%^w6Foy;YJMg(34MNx{a9cX6 z+MkV(VNFVURDi@i{#aA{Ef>(ic7~RgmYUc2L#|x8a#d+-vL)A$WdY;jY-|0T zmxApvyP6~7=)N;TNx%8F-?)Typ-8q*Y|Mp~g-@=~waX_9M3ixgLq|;cg0XE9RWmrZ zjUM`zFf{pFYpaB$WN_Az(O!QY(t7z?D}-02atnZJ4+cx(tNi%W5dQtw)-H4|Ij;3T z+p=l1`T5r){*4;0t9W(?tsi+~V=l7{5D&x+I%NC403knbZ*PH$m}9V`bot$DO8KXI zgYxlM8%Xx0E8|n2i=?$m4qCU=cm$0fY1}*~nPU8Icw+RkS+%#BpGw!u*u;+q!=i+! zxdiNjlJDas>ZDp~G-xWzQaQ z2-cy|Xw>SQk#+GhIA6HxKAEzsC7QYvEG5u!)IDVf^DAZhtlqmW6`>$E5hnpgHQh@`k^0{JET==etP3xni)9 zY7wEZY0aD4qk-R_3V7#H5km+6kel{mfi;d=tC~mY>FMbJTng@LunJWM=ElrwAonL# zOjU*}*+(g}!0Qs~G1mvd+zM2#m$>NrS#S35ASCkXyhi#`Nbkc(!LhZrwB%zjO(`JL z!JQU&eVWTsAUjad*g!Z-+oT)3z*joPJ{%yI+kV+l zFU0?hm+UOw7-=78WwwIT`8(-~~zRsI|99v&<617+YEkM1g#KZqV` zO4iiBATGIPN;j4#lt3N*j^D;VCN<3kR{-4m*NQidPsRh74>++Ky<7Je^pOeJiEuCJ zo!(yw3h=>@G@2dpBJus6A0{Mh&#FbdG~idTSA^h~KIyCCb^_&f{- ze8gh_;Cz$67Hv+aj((W|T%c`ib&97{VW%SU(4?gBn%Q8v|MXPvdO6#;`dh|SO9G$- ze2tUz6UU7-^(bAplCehBeb+4dR{eNsmf{jZX7zikpV?eM?`vt+m+AzVS@*jyIg97_ z{^CDTyI=o(nJI}&n7;BB7JCZ&~vxE;lki1vDNF+p%xPQCcG9R zH|Oz#x{7FeLXGUpt|7%NDDx&JCUyy{Edq)zcwgiDfo`5_T2JS&Opel>nAw2BeI|$=>tRx;w@H`Sl!8Qq#-ojmq7- zGR^x^V=FQ@VRd!&%TYkg^|rLU$>ROxqG^rC3JE7;Akz~nP^X|opIwQAVquk1u5H>o zM3c4Upn+~pn}YA@Vu4t4UTkkrqcCi+X6iIQ=6P9>yDuewejWh9*+UK90(QXe=Fzha z0mY$C7yh(lvW&vtJ#Tw*{}+W0FmIk`nts+8LU;a={pbB%*+I%lGZPaNfUS)nNNOvg zm8@Q6^HxZR(2~MGfpf@zZIG@sFaA+8vkTB5S-{G?BHru~yL(s)NdvWq;f6Mg#LN#|^b)5?a*AG2QtJBxl zPqj?75WpzTjQB*)y)YO)0@^S~h%3#(=%Ffihj*|*H}GbjyYARQ`wrId9Gf?AL%2(8 zp*3#~RgIw5+HZoVfb=swXKOm*0W^O$*MrjW1c*v_^ZoPMw zEx-*l9nK*{SG~ZT(Vfn-wlI96$}r+!ZzNk4tR=J`sTK!8wiBAc}59dQ0~ulXBuWu@n|6+48UnpX=QK3`E&Y{IBz0a2o+u;vkW@6nDe zrFksqDEfDzNUP8M+;`ypH}vvwyxkqg`Y-e={V)Dt>ufv#Pxi?}?xi{FnOr&=!Atts z+Cqa%4p&k)C#x1h#y`?a7WLg{up?C`eHB(`yRm_)0ca(JoQzBv;Km0J?s=!@6hR0O zPz7CU>0_E0tbtnm5|mJL@&wNki?=&j%a3R>Fi`7WY>Jn@NOrZi*WCOtSI#RcH`d^` zEC2aFeC-jSPpMbH0mlD(@*`qdPW6V%Ve|86JySwe#n2<==Qaw`B0%GEg|3)};rP?M z!b3mM4dg8q0QsLgzp&6Gl3ya|s?ABj9|7%Mz`bJjLfNQOJyS&$eI_?|gIzjX)SfGD<8o$s zr^UIcjVFHGVkQ~CSNPA{vNbCFS33tDZYBOv?A(9OLflGCKsh-fA#(GvtyTGAzYM#u zs#j=KueU7*>zs!|tkqA-%QVzCc%87Zw0y>T&4b@b@J&X2w|0!QlobEl2cC{|AaMhh zPajX0Oly%G!Xbcpxy4ej1=)?SHsE(epH?@E|9N4*#PcT|u?kL#^`yj#=4B$f~xx0)JLHtab{cp|C2S$*tP!^oQocI}mFNNo1B<*@|}6$bC_dqUxg_!Awjzw7_Ll<$BJn zudi2sVxhC|b0&{$Oih(sMVT$)#qUKEdV6~T5xGg*H`rXr}rIuG8m-*ei^>f%gNKx)84*Gdq>m7 z*6?@v!Y$|Dh}7R>^R)A^8%<9aw6iaW0t;I>+EykSISLeC-G5p7*?_cUnVrV_MDO8} z9a#2s-_$hf)R91b`SdmC+3e=_UBdgBgZiZde={w%S>{b>IW&JPx!hh(xB4fjD|{XO zHw#bp9tlp7Khev^mI(!#=Cc$n_`ZdWTG@`1)LMn>jQ!!mQ9{wf$FzO|YRl{$JNsFE zw+~}JU!=gzyj(fLIKwFAG#1QG=0)n=%l^>M)3>+pNZ%<&g*{dBqXu(opx*U)`r3tG zTs;7X<&AA>9?5KcrLO1!FPTbI&QaO_WlQq>qe7ReCgw77p zMiP+8NKZ2B_a*k{B(>K^q0*fMFE>4rU>gPD(R~IFq$m`gt%iFRYz+vNi)v6Neum{V zjS6(XZEBYI8Zz_3-kD|RHsAjDN*A=zZnUC1d9y#95kHd|3B2XmBPN$YnIdPnkjaL%`obc|SnBiULvdmmOOGtNt!7UHZj|qjra7KJa_1+z!4UBhUW~ zQ1`X_ANnBXg9iwh;c5yn8IZHr)ztyAsF4pGPB2645q|0I=4X++|NHPiyZxW1ZJSP8 zd+9W9LY}BQe9ac5os$<+1=Xqsi?{P(^4d`Orp1zVt@mTuOH4xE?>YUe8KE7~7LC?B ze-txGV!yXmK`t?8W5-R*q;4hpdUB;{dp=O}_69l9;W@GyPT=h$KbwY_w-pk8cej8F7VuUzi*RttgSSwUuf>yAhzB(fGx#OV zbmPiu$`MWveKg2mL**)(-5e*n^9haR?sA-v@EB?ES?(`2B5}jpPD3 zAQ%61A!JibIDw6+x=-{>8NbODh~L6eoD%^@5`dH7fR;_W{Cf9}{~9-eu_D+8ayH8) z`($t2FKQXCynH6WjojE?Sx6TEVk!Uh?Oz_ZK1r2P%HgsEl&>tm@PLRSoeOW~D9fgd zNFK%w;~zsfc;Wci)BR&R?l}HCYBAwKzL%!jSg#L-u+7cog(%?YSgV+m^*jHJ_$LQ- zKRUHXu!(rgk@-vLBg2j%+Cv*+c5)j761#Vtmj+{$|B^-kg-lep$R-^^`Ra@;Q@jL7 zU>prV1m#cn-}x2WiYYp*h>&+m4K+Z=2A?rTylh(h>0Tj2{IRm@;mp08`AP4~1`G=m%uScJ(Ql1W! zk$fw(RsYZPW+t73#Hdat1?qRs*sr%}8ug$qdNPP`7J|kc*c4Ocsf=C6a8j8$$pnXn}v6t^_|s8)6hJeu-*6<$)49(-8Ul|jO{Qr*+ z`2Q2z)136^$zYscRW*;4*>WcbGxQj534x0-|DvaD+vM(z(U!rVnJC?rqivR4yLTMp z`qz!^daSgb08|rvy*@I%p~Qa;m32I{I`2phZ2nJH+Fu;9qpj$1_SuWEyLSlwPORFN zY)U$+uKf~ z<7T#oil4QG7g4%fmj}CcU<0s=BhDoz*ZBX|)e=c)Ye)E(URL8a^id7-8_K_J5gHKzXAcE-Vq7s;YVnxUR~) zoq!=o=968pZwAL!>Cew^c~gh2e|cmdP4SvCeWU$e;QY}0We98 z5)KFVTRe6?#9l>R$Twqu6>K~h-pD#n4Vtx)Q9BKmsov6A1=BVF7w z7X*wb0G5d#uR*S4WSjzEG3P@=Xye$(?xweEQ9Eb#-w%%+5Oc_t31m6ZDR#6!)B=pn z6dtcyc;m}usxM9>f1HOBBDawni9a5<0!}?sRnCfB-%ot1=%PQd`KHC=Ri>nbLV~Y5 ztkuHq{D8gF4$$EMRgF7YElKo70a%ivc=Wi80rt?ULkJEge>Yj_I6rv^w>U5S{`||j zQ?Xgn#pO@WhuUN=+zpta?m8okyKis_0}ybMSd1-Wfr}j+gjI=Ng()zL2`fa%8J0{( z_*i>M%bWCoX_vdn`U+V| zL1xJNdH2YHS&!R=)ZpQ#3izrM9c)djtvZu^k+{@aFyAY&{v>kCmyubG{w$6;&+Kjh z+zZ|I=TIP@qll|!*uq;>T?T+)eW$^dHnY$+BeOUc5F6kx*GuJyeBS>nwwNcTFCrEvtYt2e|7Hd8lO@X%}DtoZkm@@jgGv ze6?vNfKH{1_?L_;YZ&aeW8u>^uSQX_Y33`~gl>9k;>DQ0OiTaVKg?X8wfS*#Ssbpn(zI zL=yiBl-hWP(=`F+;K4{{*4F0arkB)!Y6K;0x%5)MJhsNq?{RQ0Q&LRq89jF(!4ol% z0w1}Ttk^f)S3r+(f4~4cd32bdqQtDM=90gDkcY}U`f-H-c%&a{DiuJNVAmgj*4_lj zq7&sZ0W6?PE;BN6-|Rvs!1@9EYf^aQo4`*`Ileaa^P{d2NZLIditv}E0T>YKr`%4N ze@1@sBl)7+17+}IXDcfQ$INQfnT`-7p*LD#=oI2>a6vCuAxyK(L;y8AkCsR)FMNnV zlq`LA@Y`Qt7a-O3U5Gcb?p_kcMJ(+gIIJTbp-N{fk4Yq)i074zXclC8!3L1)=-dRH zjdv$NMh2m#>Tr%0x1m?SJuZf@0Z<-sLDphm^cn)lw5@)9ko{=D)}xp!xkXvoAXp6L zKmf?24vO&0(#`s^0RW6rMj25!uz!FbdP40Ao*r|zPQ~oXn~UZgG)U+JVubj!~BwAtP2H?^&<<1{5medxSgoCF`PS_KEx3k#_w70#OQvv*A< z5C4i24b!|sn-GAjx-93HC;B|9voj89HQ}$OwzhtxYx>Ui`v8X1^F-0lv&#^@n-ASA zDZm&Q8ihB0Y{{`@1H(V(11+!_u!VY~s7nBb5_I461;*v1dtoLtR$XXE$*BkX7bPcu z`tCH9V7`ojl3Huc&y~A&X~FkqXD}zK4KIW)dhTk{c%x(C(HhEIg}kDM83z}}Bs2vE2QJhi)la-sMFEd9NNgkg>VXVE={d(5(XehMt&TDhCm$$|Dj-lEiC zq|6kvQ?zico~9?bs>e4sbWW|bTiZdZA6b_`8d=P%b4+Cc4pZ-SG_iDCHQ9EUxsDgm zKHnaZA`+l-2idZnpl0Opr`J_-C(_0 zMd6UNT*86b*wDB9XyVM=+|T+a9n0yw_uixf{w-NaL?iER={+}f3vY?n(->3$APa%- z1_*B+^905eJ^XYKcG4Xh!5P13DCT8X%X}s_TR&zzN6a8ij7-7Eck1U3GgR>mhma~- zu^`{^C6R0NzL!@8T$CLe^UJV+Y?N7O~lUDjS{C zJXCnjt7VSg0{Lx5yE?kbj3IiW?TN)7^B!RPjc&gWfHbxNeac++MQzD%D)WZHUP(?j zGj)YW6h+enhxAJ~2c$l4pGqb2!R8S&)Z;YD9>nJ_%hdj}G!)y04uWksTlus3z+q9*@!bzeiDMewfs%4sVF_Ks-V$ooUn? zd9{9AWl7ENwNoR;K))JE7ODtT+bX(I*%ifS!VulIa3EOq8Or(IX|b(cV*w!f>=j>R z(U0of0(gXDmIiUj7d|@j2)`&!U_|9-t#avT0)Op$QCFn?mRSC+e$6bumnmt-%n-uu zp~=pX$#Q02j|W}GSDg>2qD#UAe)&YE#otT46x10mCA)Mw03+d{N}Kkg%xK>zls+|o zM3L@lW0NDpU7hVYkjWX_y&5EZ^2xR%0IBYtWYHTS1ZCfhA7{(U%eNOiMO!djj#bw> zu3ktPa(a3k%gd_T$3(}8kr&E_5M&$4N7%zdAONQNrQ!BHnc2SCRflO+mjqgZ`WSVYo{@1=CO(nE`%OIasW20~bUT5+j8BuP^@(ttqyEY=*)eF7!mx70Zd zbsAV?S_y4EF*QMX`Z;A{l%;#*;zpD1_7Q@t`-TqZ`yu~UfQiFjS-$2z_>p>W>XMLz zU`{MNE}KT?!y#F zEQA*}-h3bqR(3^XrJ&%3w-tFz&IHxY&oR@}u+nA7!shbWvvj&wB>KD>CDJtIcb^AO zSm*64ephw|Z)$$I`_Q4CM^zm^Kcr09a5P#M&SgfVf4Ew7Y4)}9chkr*ThY|X1eJ`< zv>(qW9)>G*QyTxUUf%e&{Zi$bj#up3?1xq}TvtDrmz3}8d>FJ>4lYq4+fO#{p=4i) zxZ52jP-CRqLCbLcR$VG~{iaIEA&y>2(2>a1*9?Koj=Z2XK+~+De zry-eMZH96Am=j2BsRfGsL#BO1sz7?6FkLvJ1xI(X!5YLR0|LCi&G(Bai z4GI4cW6Bvb5D+67@yq!RZba7yzIG=9<-J$e6Wbu&E7Sgrt)Zl*n=*~n;~%LBhg3Zx z_oRmMq()}QvaT93hNWdL*+G{x=_Rs0>z3ND#!JN(DK{nR?2OU&w~R&xW#>Dy_{6}x z&Da#~ry9AM*WE6e0PG$B+!=yQmwl82h}@10p0~K z1*+z9xdY~5_KIJ?C^&A{w{)Sai{Z+*MfK5R<@1&9w*wOCuXqjHz$8aL`s`Fxp3Pb& zpNH|_9zv*UnV}HtIV!#P;)|AxEO)f=S{oSGPKsIePD-O|W$QaA;h=kA@FY)Ca+Tuc z@`94S;-QJEW`7+oWguUeRVq=l&=Ui94lj~G`m2L~Rw9?N=NsLk-yGJ5yJgt@y~7G4qpiZFX+C)b`bh$0-g6NNeL;B8~<%_!=UZ zZ}=wpLwA^%o4qIP1zvtUE<1j;y^Jlj*(Z}LwtLOe{fR}-rMStg_93cXjo258-(?~R zI~P6PQ-;<&?Ga%nYpAbNgp9#=PnI@D=USa@YL-NL+0<`R=7qUXG*&}SLMMPZ&j1Q< z8)-r&ib$Dn9JWOiDFm@M(D$e_{6tensei`2>7V zv#WJ(oyj9J?mKv2)Nu|Ko$GLs>wo*2D1abREH6W!Rs=Sr=Pby&O%lksnJdTTW~pIa zJq@#R&uTpB0HV`pAgg2Cx5!rm^R1S9Fd}`UlJ3j_NxSaeg!;+fg7Ft@R4v%Ek3|pHt2wWN$*E~ev|R&2Z4*__`TieTu zcU$M#fiD;X&(6{BfX$Lu7Nk1Hhi(7-U{v>I5>-lH z&WX-pa$G=}QlBB@QI^mq(%n6oJjbj}Md*t*LkOzh;6AwJU3cT4~UXH2C_ zTsSGd3gNz4U$d3DK&s_yW0hZw_*3GDT>Jcs45ODZSPpPm3vb_FWX>u!ebgEo@MGT2b)NwPMm)F*ow7r}&P%}-o=vxQiMZ&{15 zlHTMo3nSlEUY}o{kH@Bj#rWrJk?awxoz>MtfY=C52+@CwaH$%U-ouWHN*4orkv`oN zyRRf%etQ;j#Hh+(V+`FzHd~3w!!}HJnlQ{-&iQDY0{AA{EL>mdaTB3%W<@L5aDl8; zvm`mlI$THq%yh6N2*&2W0c+IS3M;!J7Bykb<^wrpA0S6BV}0~-MaBb%wO29^h~edF zb7tf&IWRVRG8t-+yAz9+ipET#F+N4|6*mgwvNuDy4u}W6)(NdVwX*()Uw6O?`<0$^ zE1b)43p%KGY zuG~Ae?CVX!V>d9|)K1vlnoUXc8x+-=p{+N}ZPxli3ywd5TOH|^wxm0Zw&T4K+{;v? z&E=dC)aJuZUQwT)EK3uDtp=uX{xl%0g~4DE9*YK(vz9|JwFflW1F7tar*WQ(J^l5S zUrbns8jiWIJ-hHFb;?uS5jB+LD7S1k5_JIdBPS}a_yo=O84+XjGo~s!Sdw8D$K>SY z^=;bigm}rgKJ7}L!23pL+ddZOe(A9b!jh>|?B~}wH`~y;H=m}8)$kF6ZE`eLtRXjb zd{I6KZ3{jTY-imVvK!?AI9A+hHMx!lPYa3@;e=V=iv9+4r24srB7YXJ;k&i^v76;P zM#5IYC#bRfeW?4sgd^%r9bPkm)j~F9Yq?H${aq^!M6(TR5AxSd1lLwjehh#9{29#t z6PNR$KtfA_=!iebkWNh++qBN!7{JXH-L+kA_eJxwsqqcZB;Wi)2Bi~yPaWDQ6ne@X zYAfBg<06n(QNpMOhv9Q1)thy^^>ygy-{fX~;kapl9GZE9%aY5rsYlY9AG00X&D6%U z!Rx044L=21X+YBr+$a+bKHJyTl`b!XVILm2$bM|KQI|1Jxbi&xtVk#Oy{%tR1sb1H zY(jzw3>K5#f$O;Q>!{!&Sh++rN;6p^y}-rB#s>NDy56t@JC&YGc>d1YW8}gVu8vp} ztEekn-7a-@ww#=MzE)wmK7pkX(J9dNEp)=^=64v4=qW`*c2fOb)>X^M`ByM{Rw|~! zEL~z!kvQz4i`UB3f@8HA?WoN^=fdY=1jrFRK(p2H!OX*L^!ofaNE342BW!`;8y{B2 zn<>l^6caxonmJu%py9%nWyApBn7JD1r_x~Yy=1!4#B15p9s`F!+v-+iD2PJSuE!WY z4yzY5S>^Z?4`h3w{yHYLkgY6z74>?L5ESSfq=kSUZoVRF%OAjDTR$plkOBI~;RhdoLH>b9* zbf;qLQew}05v(k4^?psbnk5>PJw|<#Tc4glE%k>d3@iI#eWYpahozunp3uLYksv1Me z^^pL(>Fr@}Zx3)e%?XBBHUUFSf9Z$$NaH&LwX@kVNtweUbBc4_dCq>H$SzNf?j6f? z*f5x#>muFV46M#jA=Iu^Gg@(Xm}26#L3%|K|H;N8iGa~-)LszC0MuKn>37$%!9#nOyv)z zT)<)xND>ji|G+#&K~b@~yu7@+I)CJx6KB4=K6?3p`^%*V7~M`J$Ge)8kq z{$cOqhPOkcUnCwJ+mq&I%;?-INXe|4i<*n)9d-|s6c-2D)k|mQ?Eb`o}NFUWKm`D3R_RY+4uT=cY@P=DNijLn3cqL1}0o73=PH z;Pm*=s5?=|=iq)!H)9Ij+&awTe-Q!^!2z}43)*M1gAPuLD^30y?-);c5SJP};v4P( zxj_MDd*VqzJW%LnHYl2t%Y-OV&&*en0p_OB4~TjTELJGGE*2#iKJw5x88=ZH;gVK~ zju5KQNFCTBQeMZpN8pJ>%WQ&R1L7C3X0(aF(QSHaiYZb40^}H4c>655npNfNo|&s! zJ~U_3Ra}jmpHN@w{T}6DzsM60wETx*2#-6p>hMkvhjaj%e?$57-)4EJx-7wn%DMo+rvqr>KfSZ*Fi`Qipy zfV}mW`ex@>=`m*JKqVPUqf#8~4%q!+_m*SUjcN02?N^r|qd?l9scHD`gl!gcAPuG= zwm|M|8Jif19Oj>`5ugJICxA%RNL@a$NPi0o?Gzz96oq*}e6skO2k1adcO~cET;WsvkN7)PWc@~O#DDI|lg!Q^*4M=jl!Uh;%p%&|!maYthjqfC z){`$SXm_9_U#-YZYfM6J97SQHZ2+_JJXjfQuJUBmrUt?W%k?h7M}jh=lPH01rq2?$ zPfLgooYo$X;dHm&RGqR+I0edi66h69`s)(BG0BLpSJ5= z#&CVDG2J7Mp3c91>H8fHqDQ~?RwB2jSfxwEg4QWuS%PQ7s%&hn);n`y%84huII{Te zq6#GLJ^Xm^BzF~2pM#6g@osX6=SNtS3Tglz`YZ|+nGnmtb|~q1qZ_`)Z@g*9#BzK* ze%#s7vC3y<3NV%8$2IkfGg=1r3>gJA_fr7ll_D`o!PR6ansGajYn&~wb6lE#+!kNC z#Tn7Hnpa)cK(IzYbXqC#%hkL_l=v-erSq@khdaC!hm7+M<>T)U0;Yrg1U~()h)_ z4N8>^4h_y>>ej|^@#gN+hWalu1EUrRorrv&rJVM)gDYT41`hR7vd4E3!xzN-IOWWJ zLt$N}I=eM?4FhAWsF+<&7K1w@-Dv&IlY;o<0-DztwYNwE40)A#JZbqV5aD7y~kT=)G(aHQ&Ijv=$6hBV1ENN1Btsh$Yr#J9w>t>Q5svfbjFT)-vnaz8h>wmYzV@T0f)%ZOnUK`R^A5O?<(Fap$@C(+@=KsPHHub6?f z&R8WH+1A?SbKLuVraG5m@U~+CizE|e<+XEII?3o?`g%Eo)f$x9|QKM22XxH z7l1s|-op7a+fn(hM`)I~S<|Iqt+(7Q)blGghA@K~6U8F?skJLd=FjC%=NfW`zmas8 zF8}d{IsXKEl70fLL1w1rjG@=%WRFd-2`bQ0H_R;TozT^5%csHgW%=|aR*=qYQWp*< zsVai`hbAZ;hT!ANNl*NI4;D_9cf5!nFI~?~Npdrje1E6X-2a_tbw(8j2M2~^IlwsY z$v7xPx7V~Y4>2ADuyn6lS$nrDW6iBZ^8umrV*UGD%$!%eojI60v}TrK{XRd(N$Uo> zk*!>E7lgoMVqzxRviy|44yf~jAnK=S?eGOhxJ%j61$(ojWe-$UxbGkIcyAYg+kc^Y z$Gv8((FjjEv?ZL21w_C_@@FYV&d&T$v4(tX<=a#eZGh8kQJmZa^{(gv;Kl9NUx7S@ ziyE}waiP;8huf>vi0=S8nq7Lag5mmMk(yp$6RB4VCN0K!E*TKa@YB3n*?EtH?tbSE zrL+ zq*G|AH>u&i2d#oHPtH)cyeY#!JgVUNL6a9~V@*y>=TdsI=1cS@3R&-Xocggv*DN5%XlGG4qn&;J2+b)yz2HfrrNcezC#Kf{1sGwd z^K=Mng$NW=&IMpsX11EBr1lf4%Lj9jL8p3!B}H5mrcpq$*5U`a(b7Z$A33;0))h#{ zK!J2j6tAIh1v)v|d0n8dRNJ@zu-*Ch8U)y>@&N-8tcx2(#N__qpgNv_Gc5=qx@S(I z1J|0DW&yETDHr+q`D0^^D{1|DK3quy%nfc+ZHPB9+CFJGenAX8d0@b56a z4L<*hY}7bc65;#G=f1IVN7eM|N5z8UZLn6E5lNcTWQ;N#VBfjs;iVUKn5vj(Qc8gDpr?7ZyMXT2LN%ye0tSh!yYW>*eVDm9rRT<>dQis+E*@z+hR8|7!*jm@^REf8iR!qGnHF(330k*T1I_{{A)|Q|k))u!R z@vk85x;IdC7%I{qd$gg1lzz|@c$xwDe8>0kg8X@>PTjX*NODjI=pT90BV63z-vA9w z@xnql|C_$=lf&FIjJc_3z-2BqJfurM|9l2?udAio508J<%hofQJU+TjPUlfkw#>cI?Ndy%j-n-q91F(63 zY14TDL_>X_qSw|tv)0ULs(CN_GG7Cd5;qa7;)_`vaf3!A$#DF6`E{pe@e4D87K;Wr zI8vp#p80@DK-Ly#Jjt?6D5vn5S5To|T; z4MmgP69FgH9>~kulZA`)(dPIr#)BV0aXapMn9d$;aWmniHh)8!Nw!MO`bs^k8KFF( zlWens>#A2lyKjI{P%ixP>M~Md4W#q5-SWD0v2|bY*;#Sq0)z|2O1XPT8$ctzwo5el zC#)yNuXJS=|5dgFM=1OAZa5wq)8=M7%K32?&SeRvo$|js(%au9 z+(;DvD$x+#Go_avd1Js--+bOzCc|)qvOyi1wRc-QG^ig;Qno%AJYZ2glHM{Itbcn7 zthh^R?tYTwLUn<}@bu!@x(#~_@ReZn8nG*rNAcke(gQJ1IVKZj;!hVb^muD$?@DEs zT${-=rda^>Ehg0>HY$}!Ky2qoNvdWSnt;C8LZ0gbc@Q~(PedU}IZ7G^9)sdi@~?^` z91H4>@cEm9QN(+mUa+a?I|lE#&)byHu!;lZN)zDNX~);@DqH7Xv?UPAO;7b^yHym> zG4K(^6TVq7LYf8VnuM%w#;fixJ({__c`7B5cavEcfCu{sR$u>>_(zT((@ZY&K7ats zSXiq^c9nD_Pwx>Acbgx>nFLA2xTKCG&iJxtofM5i5GR}6th1#rL!3?8Kad2W)iUcJ z7pWhSaL{mkOd>kDoKU-faoiO=z$OqdekLY&xBL_Og7U)~2Sipmgtj|c%L8C#!;|Tf z)GVMKy#0l*C-&;AM0qDG1M+8)^wZ}mb}WDgbzCJ=7cb{ZXeo7jK&!g%KMQb=F4y0x z;4)V=3iqm3-gGr%fFL*P+o+#TQfp8xA$dKR{)i-$)iA&EjpK%FJBG5HPw5<=g?m*j zYvTcbS%P3zvu;FmXP<)`<==(IZl_e6APE67$%p^xzve+=a;AgLU9ZvntMe;}(Q<|^ z7isL#Kri+bApWXGuwI*wv~qC1F4W*;1Fk3=w8us$;8RaC!^80MW;)N?T+HqT%PT4l zeIIk*QOw@K_0$vL5d%Q4%yNLQN;vlo@D*wk&z9Y)rFBCDMGTtDc*G7cU4G&&r!lbI zL@f(wT{BMz$abII1U_IE&~I!f)2~P`h7Xa!={%+{Cxu@J*Y3iCh;VEX|5~WCGg-i7 zpM9ly;XML{6HDSb&G=keQa*CX@H8Y?ESGai#H3DDPF+WDWU}?!H`y2(dE+($PvQ_F zFUZU6%Zbz@ADVnIZJ_T(auwA0-ujV5Vk^JLv&i)rm5VpR9 zkd?ZWugT7Fc3objZxYrPSBJ_kyjAt?aS0r4uxw1VYY|wB7{}!0y<7-zi@=_#Nrtjg z%p{HSNL1jaDGjKbOf%C8?p}U>xP3T0dD(0sm`k#266v#&Q$CnKZ)K}PHIvjnri;F) z>tSaxilgl*3ga8bC!N@^_g`<0H@vB9p5B4h9t;z*&)p4eeX;$h<3IoE!!S9O?%+|$ z%zo5nhq;BJ6=Bn^YsitOV;At7jpAR+TyBH^w6!%ta0LZR0e!kU;w?CHo9`pTeQphm z)W)DT49p;ylwA0tPBC5G2Et4<5}OfQ?ntmx9kc-_@|9oni#4nDiyF!*>4+W-FQqTc zuaYBiEJ!|xW_svhM7#4&wa8HLTphP`=S7a0Gw0mj?=UxpF+qv&C9pG0{v4ypF2kpd zx%BPCson~U3|&6%`8Dvh^BTH<4@|M!7TbtN5^$HQbKx!;1j!4MM!^orh3U1j_Xj&e zR$~&Y+z$jBfsKSE<%3+3=2^|v%PowR<#g2eLXC+O`vG`z52C6!@$T_+JXCL+`Mxjn zyYZp^O{s?aB%9W-rvsgy3h@b(JgjgLP0DkN2-j&o7H5X;R(H(iJYF-4eRw|nQJl|J zAotK25)coBS#mZ!ZiE5lmtlU|`A4c3-U!IuTvJB;tYi2L9vYvCw7SA96v)p?kIBBU zU7OwDHn4g&Dm@;ihuqiHR-e6Y-A1n4aU1tkIU zHlD_ah}i^}o$&Y9R=7|x}KbS z4PRuAx(q0ntu-YEI4&1-ihdxQzNV!U@1e zARwBIA(jr3YTo6(7PjEvMyj;Z(=6#vflliaZbCfg`Xmgyocwit4W;}4gjJ23M za?X;CNU&~`BV*LKNT=t#UlV2zi#Vcr|8UO6gvE<-JlXzCc5{Efg9j5q;o=OXp4%F~ z>wH^bwNB1cu;ATWap5&32aUk`ZNYN~p+Z?WFmDDi=-S0Yz^I$^^3Iiu-sP`fa6sSm z3i-<}(h?w@xck1)Q2m5y&k+!mU91<*qA3X@q4+)9xXtQG?nIehl+oHeSnGb^ycXHp zMs-F(Wuq_FOFikZp!SDW>3avz{7IZzp9Mg5XwQ4>Al=e==)^k|b0z0+M6}WbOUZI> z0{&)DF9SoXzZA4YlW33Y!6|(G{=k|uxfA)dWow9@TH;Yb?KF|OED^DHRO(11Mqe`l>0dC zzLe9f^1>17t_Y{AzaWimd&sP*3c>>+`)Fyb9Raw1f51!hO~L@@-CFEbs1BcI(mI$J z`N{T5;Uv6017^%kvjLMJ7@Y*6@7KRRRcU|t5kvdOxyM-mSn-=Ay6*=32zmGs9Zjw@ zMk1Pp&$t5nu`Rc>tx|kqSx+Cg5$)@%Lao>iTH^(GkX&NzTB36fDOBzVPt0`r1wbx~ z^=N%3m%t9T2cbeoaz7|K~%Pk|xnMdCFhc`s;1L*%p4ntCUz!Yx?~@rU2bi z+(Z6yzneTdJ_P1r2Y}xAd;2XmBG#z@MUc|r)y=jqDS!m;+WFH5!y+D~+(ZKRZozj^pkC9OkL^l3l@ay;6B*)->{RlgwUJPUv;2h_=;4@O2uGmM1llOnEHV;jAxF(^xf#%-O|uS57# zFKRNw*PVW3r`1GS57f%upi2_WP87igsi!i=T7Q~BYf={%O+iCNMg6U1&YM|1{fjX+mJuQyZTZm;*Bn~dOyk`mfz)`aRnm9EmdXB< zEijq~T{#hb#Yxz7{-LC+%%ueO4}qP;h7DN@4vR`E@<>Fj%)OwL(q4_|J^aoC`}|a6 zvPQr@?N%bXJQrFu%$AauwPL>6u>9;$49V}Eu#PTkMv;&RrvnY#@`!QnF*Wbp6-djo1JaM=HN+B-ongB4%5(k zm^bdxZ8J`90~*;1JbEdfMfth^fSVkfZ%}&Aj!S&17TTyPT6`LZB3UrKPj4#vO)Pc! zN2=(w)A`LM18bT^Y*GlY$xrw~8R^pZPP$1R{({h_3%a9N`8)S4_7u~^AKL!0r*si^_;A6kagd`z%)^PQ3uFHyafopa`mt9?)ZbNZsh zq0;Xm)=xsKYmliKL)$t!^_|4E_PGjw6X!aF-C>1H$pSDhy()Rt$xO3639CQsXqxpVoo=)qkJeNyVxMeHkca(tMxOf7mjC0gdn=+m zi(njCs(s#ZjNXpDEy--xP^XFeIsGnK`SV<6GXZ8jq*C?8b#)!V=ORk_C9_ra;_?H1 zJ&~LHsOMvh8HJR=Cu17erN#~cM}TAgM z!&@yF7Z>!hU>@RX3N}G`>#!{BoN17yU8fqu=JA8reK+vVmZx=0RhaZ&El~HcSJ}Dnj_c*Jiq;Carny(0Klgf|lT~<=|Vr$hK z=g7h<^(^?q++i7aUel;zQ;Fy+?u5t-Wu7g9QOO?%3IwSSzSXFgg0XGl-mdemm(2*aY1#4@5DyYI&AvC(TuVEb!&7T!c-w0N~fs zyjV<$vmSERNO9qb*$<<0s010d@J~XqcZ#{aHEUW@nQ{joXA0Hxko24@T^sFj*vO0& zVyDS7={f>o!XK(S1xeAP!RbHMD%^G{i<0n+zy@OfG_Qf3-*(;dZyWs=godVH0CF?x(f{%)VbDDm&R4;36PDNemh5;-HfF9YTRlnA2;4D*uJo&rX*q zIttiLPEe_;8-NRKypq4anCB__tg(L4B+66GBhzemeBQq{OKqSiNhnr!exZP@bF)7- z>`xDe)ft^jkO`;P7d^gBJrEci6J@m`swrBhEOS~dCQ5zSiT z`u?iEO*KqT3!P7M;!BkCpVU2XSBri8gf~qLU4T4{;Un|HQ{4YlO2*#zEpKWo&n+r(6H@x%0i^f3EoQ1Z)G&SW3x&A$td_mspb6 zt}J6m330!_Va`u!=%V77`8iszw7$0iPLF6}<5US{$YAZD&S@smd904m8ZTJ-zFome z2Ok6hNs?<#J{6GS-y=y<$p?RU1F&zwj0?@7Q0|-Jn5NkfI>O}AiXM-xB|qthZpt=n zT#DI8y6c+^ivt?ODPui!sRuOlZ`R6$hEg3oyf&T;Y*#F5hw9avIP~oO<;8%_^OGZ0 z$}`OdJ#1L*KiQz(p49X{tlq15f!*^<*NP@IBit+u3cO3n#G83~(y6+k@_eMq_jT4NAJ&u{zG2o|j8bjMXWw(F$O|-mK~GIz-kr1>_KGB*V`WT6^C-^yoJs3UJ*%a)EDd4Y; z1}V*nE@G?3(kFA6zXJq-^d`#o&wUCav!H^%q)#mL_ZUJ!?vJSO|1C2^(U}AjSNo~5 zh#eq4O|h`FSocp-EbyvGz$VYUbpQb+i0D7O1$Q6TbVz15|Dk}INy=Y<;rM)F^MC=I z7Vv&Oh-1!(Jzm1%B>c@b-1kDHJ;BC1AaRSL130i;`x`4ezv4(~_1YRXi?|l$pKu&+ zOc5=U8eaolr~fwrB9lA2VQ2tNZzR@s-d7C8pTsq%9ENe0DLbZg3tjAtZPYVl}tBs93YQ_nl2dLJvl0GTm zSo%}1urc&+!w;UHn9e6o*%FjXw)(iH`KW_)gF7{~bi!5iP&3M4+Wr>PXbXNzpf9kUHv|^ ztgWqq`Vl}J9a(@#o)CKkfvO_zY~4vI%o~7Tn4bH?IosdW3~(=y#Nim{Sd*Qtf9<4i zA~7sNF%3YDF=KTWytFB801PP=q~B>KY6$nrK{pY1xi5u(2JXOTfvIUjM{vVwtta6e z&lJ*mrr|nJ(P4=Z>08T9r#QKwR?>a&u!8;}#_@aJ z?y4e!!+b$jMGqgbVByb(!F7vwZHqS<(|Ci{DZR59CjJN$7~l9^lDbQ@uRoG))pY{I z`{5lZ#;h5neBA3@)oKRWmJ2Dk^y%gEJ6|dLp33qHs7NOgu|Dp{=SfVv@DSwKC#LhV z5bke4UjU8*vdokekP!k2<71_~LkXIeiQEary9tF%c9_te^NY}^?xCrTWP3MgR2bdf zjvoTCLd>ew*r7;R1d0pbqUXTR-!2*mm?AL%C39;4-kAUy(c!GFys_xu-JzJazFYwa zKmo5Tk*@H}8$gB$(2X>)ei{6G%E^LVI`)RpZ~luLiG>fS$XZm@2kss_A*s7J_l@Uw ziPMl|WYJySI;-v7F%l@}fczPCl=ECrX0&lli?rj29qsjRPTxjWtVfYXNp3jvUz2=5 zSO&6mdq64h8!i&`*>N{~v%0KAl9qZSqi58B(ti^o3LWl!r$I?IAK_;Lh1c1W1osXN z8N{l^apVnm(#6gqtFpehYm1M*W||^Hy#N_SH8SM9?w~U)56s0!3zV$onHB!0IDfD8Gv`>N z^cpcFV$S^WS5XT^ch*U*YuNDI)38>$f|_#?PS%+5?iV{UFSR<6T=u_(3v98AP`*pG z2_!NizOWwC()??1m0Z)*GSK9)JE$YzjP8vITu|F@o|Y!yA17XxHUi<9m0Au^)s>bZda;ix>8xr+RY zK5s8fJdG{DziX=znfv(BLvtfz>OpR?Kmo0OBYZ#PY>9$;SV@F=#*e zW&_hYm((~13UTbf2>>XvnF~qhf5ZI!p`O^wly}bmZ)xDvXH35-z1nDL_fH*tHsGJq z){szFwm5=L=XoZ)+aX}KjC60G!?t%$_w481er9D_BD9XaHiiZy8aAVG?0O$Fuy>!{ z@gOuPzjKPb_iP>p(9E9Hw}SDk-im!t`xT&86BzZHgMHhp&$z59JTyZ{ywu1mkllpvV8kpR0PN=%zVmOJlf z5Z|eYiHxTGp52}j;5fgKR~`PN4J7PE;Ipzu>xy7hVrV_*K2_Tr;m2Xz!JeO*~kc?`qgh#T=L4Kcb$oQ8fSlvpH|p zF`qbdc5|b}YuOzEv5ru-~p`QNNUbBUZ=jt%}-|dYR`F`j<)$Najc`Go6rYn-t!Ihd=nnj>RxBFyu>1Q zR}Y`aHcdC@5frKIBF{J86UsW&+o9Bj=z{1&+Y_!JWEmnSzb60K;lYw2r7w&OjD^9d zzMpgC?@b9_U<=im*7+Elucn2lX=Tt+GAUjv@yJ){I^yz@({x81EnCOVc;lU6x?E6Y z{q0cpjbNSW+9yYgtB>DlSIn-BoL@KK!~+nI3)ds@KcnK|aPhLEl$K|7>eZS?2H&Mt zisu&`ZTdf|Xi?NC97&g36hz~--PN4aq%FyJD5XPUG8g#7QrtABgcF?64>{~hZiBun0%*w0=4F?(0bZX{l}>!iBh zNpt@O6P%S=sy&J%3hrWlFDP}UFRZ81Ez{z~%s}W^CDeHHgYmv!DUrDyZdU!0Mf zg;6AW72l+$y1KTkZVleN7Eq<69(C_Qd({|@a{C@Ds6T0KV=j%)%D52$^8T3&_JQ71M$`Nz6op=I`JdE;M{ zmNItlqXN?udfmT8SNE5}#j4j=_xoaMEZNT0WSMQk*$p5+*E7pcjn-`g;oahT(o?X`Hdc zipd|6-zw5>bINyu!pEq!8i>TPV5E3g{t6yX;yfNXn#~Kdm#H@2`RW_kebPzjOa_ zMF1&rsnb6u6&Q&VjrrTn2!$B+kB}isC($HOrhoj&girs7GHDG&4gdQ!1|c*^jR33{ zwtw<}_V0;>zV(iXOzYoP1(f{Wj?bPP6#iQ%00Zsne}Byh*eMmEd)GAneZ_~TVc-A3 zgn>py?!JHD2_$0o0pZ(w25Ij4V1Mb>k}y9g@*GL$8!zh z-RiCm0~DXP_aAzd=)h<$W~tZ?sgP2mgap`x_z^BzWNY|BgnCJ;~1}-2UIsgW;^J){g(eZv~Hg z;o0fq{_U>zOn<$_-+p~ccZ}T=|G?J${~tYo{{Kr-e|hW$$82dyL}u*I6LAr66D$zj z6yB*Fd~NXY5%tIP+XUxv2nKu6{Z~Q^h#Os3eL`^rthf6dI+5h|K}tC)8Lae?sZ4=! zvertq%C+NF%!;`rTKR^HeLKM#5fQ~jA(D}B#s>}5N_}IjFo`Ek?IGHFPhMQ0aeb+H zY1J3%Pxq3I;4*z6>a2*8KL&kORPwg|HBo^S6wPIQd@)g}Y}m_&KJY)^aDk6ZzAmB( zVk94Ly!MUMMxT+-5laxe^v?^;XhU&#B&ilCMK86T4-pMu?1RvqwKR}qGJyK8qj#`h zXuI{#-)9A{qh0>}hfmO~;`AId^Z~^8Y9#JWzpL`uFv)X+jo}L3jtI%PJ2{_sVV7v= zi0u=Pb@;ElUv?z?6$kD6*QFvCDJPg6v;TD=qzw8D^?$q` z{Zq8<5v3RQ3$8wYm)}#ggWVCO&AK3EDZft_O$WujAeB&C zm!#aC@fk%aDk=Bx1#5eU%9-miFd?L&WBiAJ1|T1m7p84%c}7mZ>-qQZLgG+og_Icm zp{-8y?;rSIjimm&*c%-P(VeTfc>W0x-*D|uf7=WsnXqbr2*oSx*Vwpbll}Xere<~}#-!r|F=!eY_O+|s!94$>#LoPChcg{yxe3TS2q8YV?YYf6v72>P7Id1A5AgMR=drsu z-47}u*BKfUSjF2p5X%@x)|wY5FoMqVA46S9iB%dz6ob8SVUaR|T||jd7%&6YynkQc z!_W1hy6V;4u+I8VXfSmChE3Ax)uQ~dJrv5{&%0;t>}7MTf85+O*Jb>38cpeFG<(Hv zZ}7*vl*yX{>~gJ~XN-grP(TPhED5xXvvC}H-^XrzS2q!xiWeBHs8G9Mf@8OqTG;db z|jz?2U!4ZfXW#C>_Ote86C=o?cJ<$jmI@H3Z%p zl>vL%$sDbkK>J)|de3;Lxo0>?UfEuOB^2c9384gMw$EmNuP+|Z;vbpRlkpqBSk)?A zSNo;{eh`0Fx75S=*K9nRKfG0KeaZo7VAPETB=#-$Hq5H|CQfhZT8gnOl0yi-R+f{O zmo3P^!EWXI3BWepV+z>ssRAHidvDBZYDdys*;E_%6F&r@?~%>BUaDsH(;?>MFr zFm?7uqzuK-ODQNZr1K-Q|2`vIN;nh4U<^& zoi2g?vg@LVcEnlY8lw;b?v5ZFIN(m@xrGHvD$j#8C*^N&*ejw!?)UO+xtDnngT+zj zCfrQr$dxb$7{gaBTRuIXf&;r#+RpiBn$l$N_BJ39-|D(Y`EbeR#@}vjOJI`7UYBm1 zZn<0sLQ~ts*>Cj?6(R{@T%W5P2!BER3JXyYxazORpK9;;uwGfJ*@xGC=GZ|!>99k4 zKb>eb-fHfjkto959*YS->(&r2X(cnBKqayI)GHoC+_qHO5gbn*<_nB9ofQ<9j^C@) z#KeoRjl=-T$heNa6P0|KsIafJgZ~y~NFM#iO()5^4i~b;r~Ke?g(e;PsuBo0>@yp_ zZU-1|)%kcVx!IeoRlw ziJ(?9~=+bGKm!uD0Z zV&PK^4p@-qge{IkU&7tedZWI%lXbKT3GHV(8_$il5;3GrPlng?#}jr;&XaXKAB@NV zHm7LPC=YAU&AK3DpzCit)M9`i-*6!J@uA;~h~=8q-P!DtAGKys&%$vQ==_{&T3UjY zRYg$b(cHI(Lkb05`~6BRdsP7}b$Yu&*CV>5Baa79ghP^`Y$sjW_aW=xkg}}@01pX~ zdv>qks(;pOLq@)amWS>26^_U|i%T=RPDDe+rXGZ|k)I-+qD{GHgp^!zmFJ(!!c0a{GvH{y)e zI~IMg{3Vg^a9y5}VKK)ayWa(Y1*(NzF1ENr8*r_gLfluPZ-llE>XxC%BnPcNej*+& z)ll=9&eZd|Ob(M>DSlm@B=aULSc>tzHl^nqa?{MmxQ03(0@bmkH z-9yavrFOR!9Q9#d+aOE`&grkvJKiBG+V zeBG2*HF6M1D*?ZV-ZjlB(P~qybkw=RGO>V^Os!OEieZXG)Ex5D+k+L39_sg}AZnaX z5?5OI>P|s12*D~Wx(D(ReN8$A6=8WVzi5N7;g^T)#bqh+f`JR&O+V%e6A0gy6MBR( zWD0oDvGLlOFRLpXfbJQ6u=~B{q8=(30nNMz6Ir2Nl8M19TNtnVfc!}&LsbLkmAhZK zEssuCq40b_Bc}Xj?W%A(W~IN+W&W4K!1G_OCRKcJpDsGW!0F^hxI;8BQ?k+cD42iBT}e&U+lz%kun|2blarlzY0 zXEgdjW@5r2SZv@)zk-Ihy@{aSB!Zf1EmFs)tvl&c_Hs2;ae-9)N0N`*w8O_RhE;K~ z(?>no>FnZMZ4RlFZyRxQ?)JrOj6yaqJHLsd=*u^;ZQC-Rx5$ot#C5xEtR^!03urq0 zn>No%(_~jX2cjLs?HnH29A3cf{JI5A*!lh%=a#AUj{pEFKe;6$!H8EEj9*m`(wIp4 zMhCfp>q){A{^T*a_@4(19ogrBjbL z2focO86air-;MrMxr2I5WGl%1v+_Z@uA>JYLa@5WG>$y*mPbq;Lg)-MxFxKly;4^% zh?@oJ6xmZ0`ea_cvR=1H|GCgM(UyOZQPKEQThkz%{r^^vBw9l!Q1bLqZSn7oJyDd~0a<6J3qoWWy8QPeoiV!y^WK5X9 z-clWF%FB)V;65C4oXrO{wWbTKq63U5en?Rab?7z4ZM~R26$TjlIY~m8?k!}c2a()+*gas;ckIA#O0oSA02U~R!mjPyryJD z`Ym!I>tia57dzYKGdwW*Udi{7v+#p&5=aDe{+5T|UXF4SA7;9?a4T&yIQgM1+~VRg z`{H)cx=v46L};4B($;EWUaMMAPtH$g$~Jik-OOLbs(-x&Bmc<)M$RFFlp8ZL>&h@_ z{jg1H?N!TjKd!2!*$g@L6IxlB8j5AOsK#6%Y433^L&#-8h0B(^qU0rBgIMBXm*=6M z0SLjeg)^K7}5t3jhxeMiRVP}i;=fGfHd6wePXr-g1F`wiZp3eS<0Jg_IP%CMw){cour54D&VH=HWwTBCBNnhCq%`Q5^?*4^8)fIv2&DxE+{u!`sB+BoHF9qJO;1gj!2|L zjuzGl;u+*&R(LD5?lr`$P>LxCed-y;OCOy*VrNOYe7)XjTm2A!ueYXX<=`lfXm4s} zb!MYCNw}6rZ()6YJ!!v1_xg+RXz#J++~;xVz^m`g<;}i+c{t#DoFAHDBpO=I_C za+~br^$auMb|X^^eOMCCQy}%mmM_a`AP4$CU&>LfPAD4F?Gf1@cUcR3lfLzG%Xb|e ze$S2_`$3lPW5x-zHNW7tGbGC_jhsZO+>Q;6BJ&e7#s&^fx#T`}YzJFJ&Ph|pL}Cr~ z4?eJ$cbs2c`7+>Dwy{vb(@%(p|9!hWiJ(DaNQ0=L0>9W|pyQII>?p_8{qHCz%&%Y> z>bI$Zp2sQNm$Qlxhx>2MCEA%hoO?o}^2Z84c)*+`T4=jXK4$QiZt7o4HMNd%d2IF; zl~ZXvv6P(yd*r>2DsFY=%q@4O5AED~jbA2FVMw)L)p>O4DfZBvin1CXeOQBn%kmW0 zuY9v?G#^2$j|;g8y6pPc31Tn@j;o_?tJ^ykPltE%g!Kapw-;b&n*rk)NO*AUz3b+< z&!cHJQLF4~_HcJheG5HXCIlP4&TUMWcE`oJhBdf)k|of}lnslJFN3(^##`0SoDyn} zotM%dSC4nINR@eH{S^Z;bFd5029>y>&4mby%}1>!3QIiE=y#$8{!Pd&Tve?yvSq8M zV;Zt5KMds`J!|!AB%4gVCvf1+*sRNaw=@-py~nq#CGQT(^v5ciZ!!DWJ3wP*X7*2= zbs^|uCf%6`qWQe_c^k9$L{IkKSM3GiSL zTi1Lzb~#D^nZ3ll-8x=VWhJ@^n!!n9VB}*qZ^v~KXz}|{ZCN_k%sp(h9H*96=(4HT z1@GQ+qC6(j6SV1fp$if9eep0*JsRkc<_*0g8-IS~E(qYwWC~41H!l<}-6$r?RTWA` zu!UYwdPaK`5zEeNd{p-(n?A_%J)7Kky6*-nP8u)YZWG>MzxhGY(!yo4%{xe`^VuzAxKW-obr$C|-f&sdfj)Du(uJ-^tr=K;EqaQP9jfsz z>j`9{4jH3MU1CTW2EpT+63{Q=d|0mhWf{Smh0dz!U0C=%u0WW*hsk2iCzD>8^+6p| zp$BFl8K9=52CisxwUxTweK*zmmu?Wg?e!uT(a(puU7cpyAKAVxyo0TuZ`gHFXe#C} zR9e%=g;}*XfB@DL|v`U~pEE zL*pK-y`0{>gSuG3V?z-ldiU)Bovxy-?c`M}DKC`vu^z^zHg+3U+sVP^P~G>{bz!t4 z*E){H%wSnkLgwu|HHU!d>{#xF^W_e=^?iz2sM55)x|!T}dl&F5t2c)^1C;0-L8#o* z2O`T;R|vtN?*vHfQ46_iXz9T>QjdpzT@^h@cJ~%{;--%iRFW3uzcyQODE~Ux4=_ya z+_bu(J#;N0ZADG3?j>VD+laLdBsI#b+@+|fAs7w>maguUT!l2l|UN=Yarmj@(sTvX{YQr!(h<+{@K z(zY{g7pwO=Z%#U(n0`wWRB%r!E4(tGV8F=8IEVqHsRsw{#~oyXbwoGR;||xEjX&!` z1>6N8W9vKn#eu6C85y8U_U2EWzT=t7v%TYRRxfNF)UD|Rtyxub8QwT&)SxCIl-lr zozNtcl6na)(Q;)CKV%X{O{#R_M{26ArT0L6U~N~6z0ZFE$BkQ9mDZc);i8bf~wQMhBE0Sg)m=3fqN%_sGMUxvn zQj6Q}nY*D=-o1Re5PvrBKs>|bHD`7>lXrSrWLaMONQP+#p9e4T=B`J|y4#1)C=~h3 zjEe=GjHGguIQnHvR!|wQ2>OmD^X09YhK8^X0q@b`)y4!yqCE*cs%S#@HD+E14i^4=<+4_qmKtI(gR*Yzs*;e3mP@D%I2x7VWkGnt+BQV$IuyY}8t zesHW0s&!+JFlnz$K$kM;Exzix@@-VcUZi)&ey@#%62CSqZ4q>j^YioDjMsxPeAm@I z)y}B>=H2+x1vWwos+wC;=I~XucaiMF$_w2W%X+G6GM87k-gm4j$H-+g^bu{^(L23E z82Oh3BABGQhUy8Vyxh!=78$p3b?e_GCcbVO9UBvZLZJ}Ir;Nje>e~@P{O@l+(p0z` zy$DbjnP{bh)>8YJ_|22m1TCf=b@x>V%2$m9i~sL zvs?FtzgfPrhih(Br?@g_TVCj4>9)2Nh5I>;HeeI901%&Rba8jTM^qr?_?*Cn zI=N0vA2+A8q5|LoJQNldR=g)P=e0N8KcUOr@`1jPcabEtSj+$Mol0Ns<++C`Y_)0X z>QdUWaI&SnPju;1bcDGF&krbv3h2K3`+kyM;VV*|XWAm#!fnwVhi|#K8&X24&AptR z$yQeYSG^+SS3Qzp=*)AGKn3<_!sp^riept(km$patgyr@M0LWVn{W0M%b3w|g}mzm z0r_1=Dvha@;pL#dy5xGYTTRk{~{%DH)<$wxM8@6oKx!X z$L*j!z7O+E=@>aAVls`y_8|BR@$(VmtOp3?S9+zLd=;+yZ-aY~qxU}%;Je#9&5;4PZ_v-t~>JUSrTW*9_ z90@KNN|zZQve11Vlc-u6y%J59@w!*>yoZ=iMUs&AkP2yYbAAyl5K&q8$(K zjts2Se>>DilI2E1LbuH8$yp-$T zven#NJs-kKCES9#Se(vW%CFoPLpvW$NVG4ZH|n~kZ&`bvpTDNImcTDemCwYAQCF>w zV@8x*Q3*)v$&ljtt>XSqs}Vju!Zk4=)di81g?iI2wu=p81^%z+H-3C{&F2kM|0!uZ ze5EFL)l+q^{4t5XtJj97{?g{?nE%CP2TC;Ga2NuS-@7@~b?$WkFQjYJnB_o+kr4m9U0zYx2m{hoY_;|bF zuoI~)`Qy%}WuiXp@NUnCz3*b1Ummw}QjHFWE!Zh*ARY7rseOah%^F(KHHWW;b*UKp z_hY8$+!!S)p31Am+0kv+QHr0nv&_oHAh7nbu$v7qiJ{fq1+S-WRShGyQufqT>Xumx z@i}?Q)vx${`tX3zu}6J1aID_lx3gq9!QoZnf{LD=;jfOMlfp`PCc`6ibdu=vzEWO5 zjg4o_@#P`vY=sdnS27>OwV`PHXri=$YI8Cu7$qzkKG(;aoI{eX7_3#18_r~|@Kjkz zm&iQh)?JH@t4w8Z8=T zdu_q+`PyK=M$wTe?$_H^s?%qgnWe8}sSA`tm2NJ&9`GKA_GQ=wuOXkH_-E?BJRo`7 zq|{W{UuQ+ZZyzB$+j6DO<1zH@+(C@hDziCnQ`p1H5YOCgi(W;{5mm?m^>Lfm-n;R~ z9?pEZicc$UwW>YN!6$ zHb&hSvPGL2<@nPuX$Awq%vtH>?Isq=jTNqBF*1(m~|_#aGQVm`2BlqNC%yd zoh&M@&gYVM`^AIhTux49H@^(!u@U{3hlkz!W9mNRLLPJ&YOraqb0nNsCaby-^D_6N zqJMS4&9|vp+h?aMa=u*^#$&4h$CabYa7+I_KwThlcDY7la=X@bJeGn-0aL6xFhB9t z?cq3WQ=zYgrf<~!1cm*DS)8C>)2r1t%<-{SKQcupd|xV z2&>Av#}K3qSB^Idq=XI>MYg^XGD`g za8Dj*ma0)ZKEA&*vp#w#*p@W`jum1BttVdI_SZPp`~D#z0SiJ+|HK50X_PSqiefIv$U7+`jpdGvW>) zn;=lBc9{B7qw!vb7g4E;mnfgUl#Sc>q@Y!eIz(1}A&7ftpaCX59DcV&n2P2LBF(|Y zJQcmVJ?TLC*@^P;HByO6HkS@;b4o-M_Z2Aa7uPIn1Ie!Oes&`I&xLwri{do}96zNQ zCyv*2HJ|r4MEx{h+O>FyqX_NxDQd~z)>?dJd`OwM|54y0<9uiY?(<@?8acO=e$N7_ z3iX-DCn;au#1&-H?YUWmu^|t>nR(Kzi#7~d2{Q?`2Ct(fgJWgNV(_k(cjV$4Gh0tu8TiC{ z(_k;5nAC`e{e!VD5Wu7n)a5vDJS= zpcK>>N5^hyF0PQ>Odz$=gOOZBC5dtQar1!2qpmEZpr4^O92^rr5}BrpaDI4|L6qf- z?=AUu+^IF@I2qVd-n&~MgGsEv=@OMy?9&-W>1dx%O--G~H3~n_6W+5nHg7CIyKRm? zgWJhDP7PMw$+(59ZgCAS&I;0)QF}qs4_lwlrted2Hp;VZMaUo4aDPKQRSQWAC@a4u z(Qb-|B*c~k(?#UMP-nXjR7Tw{c}aS2u^(`*&q@_ZmVNl>`V6B(H87^XkH>uOtF8mI zp9J5jO}^}cJ=~^gZbiM54DE1Xeq-4fhjXcuMpN`Hg@G||MAO#r4kJ@3Kf7{6 z;`3&zkj1a|;J`P|yn?7OB$RCW({sUN**U4_a?6wc}zayr~|WIFGzCYq)5f~{03{RJi{63?*A zv}UBn&@*{yHF+H;LueQpoJpl%x4}@n?PscxJiDs5FC;Ejb0h%6wPi-ntcXXOc+LCS zxvksBKYtp0gC8V%7Hj9~yza~6B{PQI^~poSfihwFWu8H%7E38j^bv%6;Z zBlV8`&37dk1laiLve2_Um^r|^n-<~Li$BWWheqG;s=Hh4(9POU=6IBgJLX$yalwg+ zLf=#0GlgKLju(&Kk$~&5W363*?wvMyM~jr@hvio}IEN=Ip2 z-NttUUI@mXK@pZaBe=M@fVqQlvEcDA3`oX{sUg|J3WgC>)D4x| zl{%T9tE;D&u*W?U`e2PNCkdn52Ny&87NQ9McqHV4a-&jb;U4TQzZZfilJtW!Q>llE z7|s+0b4ZnsonP#B>Jn(t*~U#8#Vk6G3zv`bO=fXR2rx?&I`wbw;Of;y!w*u9sx|g| zhNa~(KJ_WwsEe+SB6TTS3P9^!Ew4KUQ`~mhos{GDx8(BD3GncoDcBed?9I3Zjy{Yw zrTMVQ*o9VDha(CAYDndb&XeVKTU>DO0gaDfv%kIn#{u@jAthNG!O^5j&dQ)2?i3yi z2VX-uYl^L(a*wi?`!g;NP)-cgiB#Z12nmpLHc;O@N8Kcxj&1;X=pdzXW2ytcH8&Vk2i@4(Dq~ zvuNR8=t|7FJg#Fyf(Q$13J1C7-ML74{#GqotUN#qA~=#}9)LWWe?9kI=$!O+!WHMn zE1hf4NCwervGtzz)WqcuQ-j-KijD*@j>|c!E)C#0UKI~u!u0FK8-5pQbTK;jT*hC- zAgObt`dE+%3Xqh0_s$fn@*QqX?f<$cVE^i&pH<Z?J%R0W=g;Dq{osA~T+6Gy! zu=|dJ;Ln!lpb@OH+8sUr`BfapRaM%rqQ2kaQ18Mhkyln$0Y5kB2yFJaL491UGLn)6 zkcED^8Q%<|sPU<8c{bldJn;WC_mxpqZDG4A2#87vDoTf>sG!2$l$6u~q!9@fl$Hhw zNdZAgMWm5%6VfduprkZN35diNq`SHA0`+*#cfK+1uRAVdoH5Q1_gZt!x8M0Z@06{n zyGLjH)bY9*0I4Xf>xdNOqB<%(OoUlOQ#WU_*m2|`yMc(Ek&nhW0#jnKoB6q2`LA*o z^J5YQfE@9A_J)M=x(Pvj_Fk#^qERHxpKI^fJdPL!lLROrXdr zDLA!8H!tSO?EKK#?+7$w=c(b>p_-MZ>GWAV$Jy28h7t|#Q;CqP9(%u8=d16lMFXSf zrwK8QR5`?(u~m}XokjDyAHsL8Kwbuo*GHMVzSAX*J$!zwhX6i>L$v(zN7Nahb_r(Y z>SOi|?m+a2YbrrjqV-Nx4PESk!?g|pIkeQ&^|!Tx80;=)ELP-ZmzLXYPE;F+wUEx! zg^bH$*+h(WnvXjL>Z0wuB_$ncT!jU$(9`7Mu2a9~&L?R(%qBLe9a>DsTayZ4c(<_e#X z)eUq|h~}B@7SQa0^4dVW7*+d`uZf|8_vyaXADBC2Xc4GeLsfWrrKD$wvl(CxQlowl zfE_+e%n?M*G}9l&3^{CAI2!4EF-CRFT5OnMX1S{Oy}8s}n^p8k492QY)5_$h*ltJT zGz+MHTII;F=4|H^^^3C!VkTi(Xs&_KVjm;8;A)_!Z!9XfmN+Dw@z6pdRY+Du0nd&9 zfR^$s4cv-E-+Xv^i>MJ4uq+dg19pghIf&1Wev_O3T)G(5!N9sJ`FDwWe-`<+=w$3_ znddf3-^3cd%LA4JO_LlN2zrTcO*tMp`sCd|`h=2N8USnpUfc=RbEl>mCzHQL`)AL4 zl;&FAV4om6%RX5NqU+{Ip^ReHtcHZu=83Am*W*`MJ7hDe=*SRt-^&=H>ik%e-PK zWipl&3FpVwB7MCPV#+;ETQl<&u31CE8x2G$g*iDnFvrJkMCx14sSx%L7v@L>4!c&q zo{RoOf9v#x_Y-rRTO9KEpJ%_>6wY$7>?_gDAUG2JV%N`XZnv@*So|}a>$kR0LOrec zp|;R&I3${P?cKHar8JZ?4qJ~t@}G6W-z4_I8{O9H_pc6X&g8P7>{DB%+4YE#SDBf= zkiqqIXlzY);LF;0Zvy55_mxxnL@8LChXt5bcU!dEkowhbbKyr%RC^9Y-qGWu7XHu@ zOc28Dd!H0Zbc($T)BsW+74e6g;^1AxUcNpN0+D5uQ2c0OV_)AH{ZFH#qub>={HMbN ziWauUNK}GKZ35_yoaanEBxhzFVQZCLcj?$ry`T$aMAhI(#p0;@ml1G_-peH#j9!=c z6KRN!5T)2tkSbJ~SfB-19mYyQ*S)3rlFE(?VVJC_)~c6F&jd2;E) z<`theYvc36L#_)ffLm=o?AtV|%{k9s=9-_SR6xq$i?vqAX)K@j1SoW@xd|V&6{nRme`Kd1nF69tr zQYW2{&WoI56X1~d$sD${M3=woxKqC#b7C+1sFUs_i}tK0LmQY_o85i8yWE-(=1E-C zbC^Quv_rwW90E+@+}1syhXlVl_ZQX;S(2dMEVdI@^)boG!{VxlmyQb2&K=VyiWK4{U7{d+v#>U1XE9!k@c|U?IXV^=Rc9d9% z(fDJBl3AZnc2dMg`6s!juE#{IQF*Wlk21FPn(*WmY0{W#EYn!nwr+}tUS3DF;41=pz6Vz z!O`R=lCn=Zw4zRShCUWbN)HY<*gdLA$V#h`#cocjkkNWDoigH3?RwwnETU*ttR_uw zm^hx?ny@+b0?9fLVx?ql0-|2=aa-E%EKPLO2GY_$d~%rLkbO}L-77y?e1tsH-U)!j z_mY#NGT86uRJ?>}iT$j%U5|S)QbeqKoS@V3t}VP@Ugbf&Hy-m)Wj z(m8H*(Ty)+|4C%dfVD4TNr}q+aQBD!B#SEY^L_aFh<_J~$w#Wrq&&#^8piXoI6YZ> zu<>7qlRQ69Qdvnr`V72_s2W5+(!i*_(JU<&N1Nzv(1vE@9zPl}v_lk<`VV)a@NQs7DZNWkkLB^tKNGdEtW28R9v-jy zB&+p6G*dae5TO4p!Z(FFrzjql>z}DtEOhxkd z2B9_0eZZFJ2(t$E;nkFr8hn5RJ$uZ-njo4;Dc+h)3&U*=833glY&+RoYxW5FFh@IR zfGpsN4N{3>JYRgL`Y9yHT8>?d23lFX^_Mrw<(m7j?VpcA5KFDLg!=t1Srxzs%K*L> z(+dD(t?}l=|C#SAj#Oy#!JTe4z<#XG5`nB$ec+|QMsvfHOGVOO^rYY;ae${ZNrzS#I3)jq}$h9%2|pu>&Qd2K~#oKIRq%79B%E(B3E9j#h31Kte8( zO#JP|GB}$mWdHF5W#SVKMJDRPLdi_?StYx!G{%)R7R6bAN1xhPOI-1TF}Ul2;Ew)Rg)44_ z*%gj@FWQZMaQ5xtgf*E}8fXQ0`aPxI^(=*2DB9SFuV`Su<_7;Yd5_M&SK`}NEdspU zTj(A19-VSAtV6+dC(E=vC~DtZ(H%z{%rL;r`D|?t4n_~>0{fJ#U&033VT@er;g`;c z$^O*q7vH0ByHiwp&Ftkr-ZptXQS|!_z{`xEumOrr?G~zKlizjOr=+EccNypu_TxwY z@Cp{iN6P+m9lpPvaqT8brsvCgS=ZH0RI&HIKSK)Wck=G0{iwk+`?|hw`0H(`k6!zr z!xfXa4lc|1`8U=_5AVl;6p+d;npwXG=>p*W>1nMKtp~S%^bP1PU-+PVkkj7#a~H;I zXs0rnF2oWnFX$vnd+54!(}`T84%GWa^gXu1#@mK#{e#-YWt1%GpI0WI(-=+TxgY+1?f8|#fBK#j1u7lq(;Lgt zuQTH_J5dgg(JVfBH?WCV-`@Mz>47~;aZ-^#V-HWKu+^JBJ0F z?@4X1!p*+LYE{^#RXe{(@5+pFu#LLHt{G7FFz}*Zoq!FBCwSwGD>PjwyLQc1^taofvjy*OgCGSVqeMa ziQ+rVj}Oq(6Q|aD-pOtzosMsJzs#=88pK5{c#k+FTsJhy+;naB%w@F~@=jqp?j&O; z+6nB+l5{c)Rfwy?FS}_PC3RB%{r0`sA&cWAG~Qxq8$iU_pif*&Uv~<26_+NKcFn)2 z9Mw3e6xgv4HUDAi_G`>HY*@Cb{O$lGSDUmu$4@%H@Af;+WdXnC{J2>Wb9NiYCScZ< zP*jr5yREq(SzWx5&|iw&;o@J8wsSa)mu%3%iIy%N=cDoK-_o>|@xJMnc$VLu&3EJ- z8HWs}-~~Fj6avRyWbm++m*|*KYKaL1*0FCe-zR7K^{^zsIUne-BS2=p%S6PZOHeG%zWkR->?^bToZ6ivM*pQZ3*?dVS!%OQh6erlKMMWE)>V?1euRbn;he9Hoa@R5H&F^aun4a- zYt7vcri->jcHKMgEAZxJ{XKmFi7-Tb)$ zxNjk8&pnd~ru`jBFGhEKT(>TL-CWNDB8~+n!Y7B8SjN#0zeD}cRA&M1l3)f)^hW!P zKHv9>pZek5d+r8uTfa9QNil-4i&!La0xzrp2@$xyVtLzqU6Wb06&i!bm&LkP?ziS@ zPOvsiwe=WX3w%EwO1rLj%K+q*x{daafWo#Ts4~`b_lCDOtI~gTg|J1$vJ7e%OuUiKPtWamGc=f_Cb2mAYI{;n zRZUM??}R0W^}J0%C>y6LF>5QcYI4 z4(-6MbppS`Q0}s%G;zVjRodv{s`T4#v5m)VJ5-PZ-3p~#vYe| z^`U*o-}k@{8W9tBog|Etw?FE%}DsqswP;297e731*YV+Pavc z?LzyV7_Zw`WSwG&)(dge{a&iWY`X@;!@cZmkM_Iuhf1k5#U@;qGRSAua!manHp6ciTwG=ie5+;^@!mKmDf#Y(;AR z)`4GD1X8B#zq`2k;PD8RZm|E~N{VC#^{EI)Y%c~NY;uMDY!&fOY*3S7(PJUfh;9Cg zo={N3=Iwh6s14wbB60&A4DcAIdJ!2yK_OxyW_*{O_1^y?%GdL@?0ZDwgTU&yVcKo{ z_UW4C=&hUQBxieDWz_qhYwAh7I#T`}&4K*F zD2G8f(xoi8&{QVWb4!BXbduxBlaVT$0P^|@LaSw$=H@M7k-^*HGuyPavpd}jl#LVh zPPvEckqSN*sLO6~KgjC}_LBbAzLVo?YY(T!%&c`JnD}XP4Ps+y`UbT=_&$4g=*>5! zYv8E1(&*ID*cRHs0OxIWipKV|p@=RfS}4z)L!fcFm8mT1J&pJlH?{nW2Uv*YxxPom zEpiFl?J>!pKR*#wN7;sYpG&xKb?}UeoL95^+NB>-LP)4UsKGjicmUa+fQanllz0E~!H$F;XL`m{45?0zyLWg&5&cfE#_Wu1h8l3V$PoO`t zzP_HGeqJjsa{NV&)EuNC9#WAos%HLTU81RG;oz{PlH8^hcKOoV zdlUY&w6y5XsC5eHn2%%vD~^}pD5@Fs-z|&V-qm7 zF+IMK(Crz-YZ7@jX1y@62@vR7TDRQ4I>2_o#B8O%Lhukd8>x~XYOQJM*aScci~*xx7t%()$s|_SVbezcI}X2{5;T13S)dcw z-Z^rCOXEPdrjmO)gZ7>CctX(EdJP#uricSTwn?)ZsoAn;G3=NP(2e&G6W5>Vu_J>&yuS|W9;(2OZ zF8RJ4Ty0inN5xiB#YKU_Ql{{OM;2W3r|^^7zpmA73>I{{sT?-q-cvR$Y*5-ETO#Re zP;~O~(C`c~Lcam~g^I#Sp*BAtqmIFZKO=vDy=u^I@qWqDdfhwL=m%xlbyUlqtFuQ7 zGa9|GQtbCm^g49`qpnp#^g7A^lIr^9%LN9L+fl9ThFx2zx|KN_OMn^ZSCd8TrWwwj zeU#tmj=6=8d}k*LL3qG7k{}f<3yn2fVQuOgK(0)0qDFl$+x#pJBep^H})^s96soUNhNxe*_dLGK>@m2&GCjIBdln!jMzeh6*6JWcG`9 z-qh&iL;4xkTXa!yM29lkX`G^j*qTcik!kHBBv>ZgX;2%u@(IJtvr@m_>+40SBM?FS z&wYf)GoC`Z1~8(YwNp-;mOve3PJBH6^E-sn?g1q5d$L=35j|;6=0F-;YdIaCkKS(G z3hT{Hfsjsd`6iaGkf-q}qq!fN5ii#H-9C$C&g$z3hE{Pp1wF<6ulIpVum6^|=7n}C{HGoICwOgeaB@T`~AsYsWlk(HG?owU_Atwz^5S|cS)PK;K3iXn}Dz5p{+ zICmQ_#O^pdyC!GaJY?<7iV9aixMs*K6|s-mdDM2{(9|4-fluE+T+-Lh*aY}zijHLG z^>%&5&;F#yBr7@9JJBM2<8V`yF#b*I*w~n;Sh=8adLwDA4>^z934V&W(Z-($y~(UU>?aBqMh**uvw|U_rJ0#o<~jqlX&_yE ztKuxNiGY>tD=tXY4Qh}eI-15TLFHNOV>J&&?b&EUAy4%Au){AnFwr%I5*F`f} z!9^Sdbqa$E5ssXr<}V2Jl&;meBxU1dU$yPn*NC5Pmt6b^%9v#3E1@gn->LM;mirf% zMCwfv^FR1VDRixk&8%D@Zi-vlo<8XFwX^EWj}%KCsffM8C+v;2%OmWn8puZf;Jya{ z@(%yvZr-K!l8)!A3tf{@!Lkv;EDU|+jxwz^{kl>v>{IM?V3_G?y# zpB`fG;>!4aDSADwe@3<6B=14@dL=!_Ny@4(f{9;r8091jM~5g`t1Y(G+StNGFtlOz zE@Ngxb&Zfx6>+Q9>Z&2h$LNBMyyb8jf5q;k=k^(s7~O4=^D08>$9{iIkw+k;ZF=@Q z{>jwpSd|azFRe<#*OYrp_(_r}22Xvtt<)m}5Uzw7pLT_E4$DE7MuFWik5#m59c2^EzkR=CE#R$}(z zsW@-9@7tJ8GIoTLES%_nN=6&8A?1$S-piFBj9NG2I zm)ElFznkLNZ}K#hm?(!tJ9k(AE1OEwyh=&Slbu7&O4LW}X z#rCY7uq#P_F645Lq4xXBcQV-P_WsVIXDTz8{p+6+x@9MoS7#;#=e*J`8nd#T2Af9Z zCUf02ui8Q}Fox(z&H#y=y9@EpL zpV-X;+xRp3%>8egGpeRnW)4;rCz0LeF_Ub+u<~6e-49APgeE}73J$w6(~n>??WbzS4tm^-M;ag{(jz|NcM&SI&qFD2IGi~r)*O|0vxbI}4; zOR2=P$vJ<1oS3J2w|gMQwNP`*b)NF2pIMPbiUwDyS4!b0;;sBHl;e7fkNIwxb@gt` zTwDN^;J1wL1qJI0y;2;g{v4scEl)A?0T1}>2r^FOL z=_oa|`$&<+JVAHE$r*6|xM5nIe?HVaRo9Rm7dqHu$p`^HEaeEP?;pFIO zZ0t`W$`v8|=s}Z9fgaghaemrUTw3P`{N|zy)L!6|dXl^|S(M##ljg5fUIXLWSSjI`tl6pF&S57{c2l}CYPVE~}+Kn8CJRFI#h33rCM+*xm zHEo@QYXtORnbvuUY|jO$e7?#sR6_Q2B)%SvPl!)j9_1n$b){J<->(TGzn}(`K^=zBHnq!}{IbDTQr4)~I->KN}h$<`Fx?zTz|Kdo< ziA~-|foh+-`3BF>k1By1j;T|PglZueFM5R1{-)L4mM6{9i(4oN-B8Fx-F#Icyf!6} zk)vNzUR-7iC^?`V@R8QWrd$vuD2D5#_ER#*VIDX$55Ht?`B|2ZgPB!tcVHBNc_~=7 z3RBBYj6y8Wo~YmH76ZmHR1+5WQUioVrCvfc9rLps^KH(aS2YxPdB@4lra4>!Kz_H4 zz=0jO^7OBn+1b@{XQ4}JG}^M`?2zK%tjyxaHhpRt#wnEz79%JY__daaHaH>w($zYs zZL(A2*uPpQWx{1!sLr_bjxmw`(NpT-CWdNV>5YtmXW!F0F67$V@Yb4tuO#Cywmd6y-}O!h+0OFmcZs zEq>0H< zu-iqRYVER2Prz6aDwdT+_+a9@rM6oqrrWMcm%D6*LoPH)k>58+6^%36mamkOSCqGO zA+Vx*gq7NqeVPnD#z8 zBb!;jlT^I)ig|`v%Fge~SY>W~$FKH_HoL;?BcqE+=$=qG%uDplM(Tz9%?);S<4p}m zUkL?4zav3*(4%2qehb+S;j4uuX6hxW7#R1r6rGw)j3K(r<3ch%`&Jmq>g{!Nzbt>ygB) z%(2IQ8vb#YX6IB)&8Lkk)*d{5vO{iW9vm8^aZ;~sLSuq?)4zd4Hm69-V<2-KNijQO zJwKR*HN&+8+rH^&e>bp#g9a<*cl$i@YcwX7oL(ZI?AZk&|Y|! z;~jrS_#M24PmZtL&(7o6YTWESt9Ma2O=c*cqnE;`>}mv#|dboD~u z{zEH*G-q4{g@r5f^O+UizP_4hMex)8A&D5$>VjT|+BC#jmOR1;$k&hBxx>xxyMUsq ztgM7>O_ZPg`o8+qHZ*4Ht{d)T`oZ|n8Tnby;WpAIQE;=B>22bob1MAwk8fZ}6qwe) zsfj>0$*q;|d^PliJ4&&iaoJ8MHt+20OioTtO-()R&IGI5&K-W8J`f$Z<@o}Js|*f0 ztb8vq2xRd)fl%2|7pv|elDxlHd6`^>fW?4x9czqUzU|}T8;o$J$P>pNU^|;ApQ569 z>sDlJY;07NGn#J>?AG;?P)=Tf6@7-;>+QMilJLT#AeVB7g|EwXb4yE0-@bkO{2BaI zaMW({K|dJ$+kv>@y2BCsjU(&vEfiOAj=>EW49RW?4eq-2iHV8%`FVi9;l784mcjk| zH7w_7h?fRjoOfes2hW~%5-cozOqF5!R`!9rK{2OX?kw#TW15DaHP6uTrJauL5+LO* zZH={dc6NUG@};4nVP=M_xf%)rDg#!22_pK$@V|F1PYe4j3gs$~TF*96#vX`eHv~+6 z4`VZ~iXc&ISy>r?=)AnVU`5c?%dYC_sB|wWBX*)0+70tr-5K8G?`n)KFPY{#pZ#=< zcGh)~c4laMqit1VM)1+)waKv$A8^T=r=~cU`p3ubr>J-^D%Lw|`IEGh{fZzE&4es7 zW#y-!wZ#@Ij5*iCxDe=AJ1G2UtCv9h<$VnU*l{N}xZtBldY5 zVT6FI{FNTIYit%WPx??mV7S^dIH&_G<-KO&m$`@6cj{Qdpm zGMDP=>OflID*idDfb*6*vh3j`qJKMP=zW&x z8w})UJ@AzdMi`iz6XzUkFyKh1GcPGAsbjHv+VEi=uhLtLQ0RGr%*8RL$3bu4aOGDE zfF>G;>_au>uP)UBV1DDo=RQnKun{_2SskjSqNNqP8pm)zCRjA+l0I3$wFipN>rl-W z6V-|v-h@6R?Z$tsFv;rrWNWYpY2$hnpwM<{mi3DY)R5iWYgso`D zfnOlg$>a86xDhMIpdotmFr2kNhCCPdS8oIuI|SI4HkJPUP7bIe3@}H`V$Vg0VAnpB zaiOve#Iag%+)F_J_%i;lUqV;q?9ikk@3~*;&&!rrm}Z`M1W{?E|JWX9T~Mf&HD#JP zGi&xW(>Y)E!F0#R@@L=o@rHhf`zuJnR({Cn>BcC;uB@(h1I_m3%ac+cz)gUqHa8R5 z#6{KJY(>4-o&0-S_LDZlJ4Y8`s5Wl)6LVttBO+Rn!p+l7QQ4Rq_I$`>X6b^A3rm7U z(mx(O_-n)V-gZCPet>amZK9*aQH@$S8IA2e!ZDh~Q0s!bqc$ zUH|8Z`kzzNVL18!7*Y?TOkhs@DhU2xbK;@B_-j}G9DpvJVeN+bk7@T-Tz`BX0$YcS zZf_R*-jOe;Rp);UgGavL&xgZ0{h8(D5SZG(hUo)lQv4mRG&P(>{%f56|D(D5pvWos zz{Nq@jR$U>{sjgFOPl<2=s&FUjBG>%a%TGPb!uRr*c=H#!?_%yqJKUL;M*RFL~um< zua6FaIOY0ZBlh7SHbw~=p#OT%9_%CdKW6yvfi~$MlPD4YQ!)s^0}+iopsau2bMSK< z|9`AAtC@6yjL82{x+JQlm6jQ^WT?5 zRH7vlWrI2)Km7Nd55Nv5VM3r5|NdwMCMf$KE3Jo8`o(`}3v!4b_#Y+?cNpx6KFARn z*os7tzftapXo&t44PYSuf4!RmajgH6jP|~0sQ(lV;Mw$~l{=tB`nPZVc~1fyU;o?D zB5Vf`&gTCR4l=Fi!hh&B;NIUW|A)5h-!t()O&l=jd!iSe{GYc=fZ&7Be~RY+*MP9t zLOh#p`c|y4=qTrp{#(bVJ{E^pRCFsxMaSrBJCqb>mwxm*dWuVnyNEL*6PXkzyhGIZ zX#u*5G9U4@it2LmvV|%N7L2X7c4u}*B9pwlxipcfB)kIG_G*RRa?+-VUJHQ3+SII{Xris zMYk_KcgaO3>3sroind#C-CJUct#BBnos^bo%0*Pu}_35|O0f zP}-a!a=GWq8hZrxir8or&d)1q<%(Zoz|v;1=AWkw$}iaCfJXAdSl$ z@=i^CKfa$cRCRUH4d-lGd+oLF`#KTIiZVEuq?iZ@2sj^PrBo3Rka~a@9y${63Gu?a z4B!pXNmT}nP%%or5B!2+CZQmKfKVNab#I6Y{ElHStL=nIXA80;CyKJAL$`|`G|KienJ`~Ms5t@Sd!T+t9wecILuU-hoZzj?B6tRB4 zxHrY-^3yiIfS8SnP7tQaTSgF`TnR^(Z9Mq0)X2Vy)QnGL{;rzkLA%mlR8)q=6KPV+ z3cJY>|J0WB^5yIJ(>5ik_wRkLsL*MG@xiueaH*;5hpSaC(TvP2inFArTX)~Uv$qV= zNax!y&GQ(1@HcS~0dGa6m{N3mTH2wb0oEi)G_vJjB<6cS{u>5qTcianIU`q_8wG=1 zBS!`HGXk36>+H;M+`n*xcHf7KQ)kPT8|sv>wj?T*a8h z_qTm!h1_>{n@*E@)j5;rJm;@zg15jR0t$7zv!RsQN#nhU#jq9G1+xtbw7bRG+1X$H zvNZOz0U^=Tm+=83Q^~{>a*j@BP@jB1V}1tVAFUWPQj);GuWb;p#NzUtj{h1Avs8Y# z+>f}tuss8QV6&A`;XT*(t_v^8NHY`1Ix_jghezR=RTb@8vPF`@7u_>EgFQW{@L<$!1U^@_ z5y{p_E4E+#@A#8PEf~{k2dutP9y_{W?2ZJlJMzwI zkwt*5kzIf@i>)-2BweHiEex+A7JJr7jh55&07EcfE$P>%SD!=ge2=VsCl|*>x&3GN zoQ zp(`S8q!yrUq!TEh=7)Vs^RW_snUy9XAg(NKF7BUQQltdl!$_x{HE1idW?02>j)<~X zDy}O00-sBn(G>0reZkZ>CYqThS+1Z93fRQd!G(XRR00Lip<-D+9Qro;vb>Uyb9BP6 zHBcxisBRQ>d%I@8=K5#IV0o!gK@e;Di_E|KXnm}p(W;t&MdN!S2{n5Zxj8ddr_3kt z3=nRqI~9ZP933AXzKmTA8Xet=nk@2D)kZmnLs~`Q-C?zpqt%_```yvo#t@LLos1pX zvTeoKQSSZFNqg6H$NJLaC}|37b>Y>7zz_!|Ta!fDEso(Otrf>7e{eK$nS8~J##4VrQsgG1LbHC>}wVx#XHDnGw4 zpZq+Iyf##6iqwh9s#2N1J(22h`6h*zjU@%hz!^f+q?glM@5iqDr{VQ1i6v+nU;CI? zl|}2#W2-Xby5ixrU7|BX)?VrzqU{h}O_)_jP?Vm&y+j=V*=J|z14Tq5L zw9UkSh*YesB;~rFIED6VsQY1QrBa1|-%`4n4)h2f1ZZ%AA z`@V48+w0XVr3R?l&wEN_O1QRVO<12q&j45T9Bqus@2XMaBsLd?S>b%gf?fQ^jK!q= zrse04G+VNLu?cy$_jpHqzG27#WGw2U-)^hvvZ>3c8-GmD#CKIPFtS>D54)6*Eg0l z$=`8h=2fl#^pa+MJP&QptXHf%ix%C2^8O;>VW!K>A)_rN<}vpQ8pnR-5}}N4@w1O> z>eD4#Y>RT?<<&*Nt;I4_TGW(3sU{{Eq1AG%!ijU0#iK<<#}7O+mZ_W0=GxNas*`D? zndbQh{7}ze5q~=dqM902O?&I~I2YS;kwu#36}pCoxh+F;IsE8*F|#{^yXn>#Gm|6g zRL7r@72hyatA}qy`{!0xRL~R21zQZ7v|>SZJSO&%9sboo!PYqjN8`CuXK)l|-xlGiqbFB#E_Y>cWD&FIIO%mB{2uySe)ZVS{wx)leO${ANf52JRDN$Jtm)=YVxgIgM=rAs z!`wKQ=0x#{z%DYRCTn{p^02fnM6Ml?Rx00;uejy@zcRg_M{Yf zL2wZqqU%F+PV~3q_!r$_e%>2HDO{3jM3eI8s#l0g1oHGpUa7;S6*K3tyBaGm;u-=y zk%$HLgYlbOZ6(8TF(}dL7dC=Xy77^t=3{GGwW2Yudn@vTRt7)Ze~?7nk85bZmrIrz z^Ff9mKWcv?x09O5ii6ko{UX{a`bK3}v0TnIH*KC!%JlbFT>jA6b%@;sb7TcRzfW-r zxdoE#aABE0aR9t2-Xq=Ep0u)gQI7n%=0g(>!~$cRsYrb<%Zz(r@8JKKwa>g) zpG@+1D|6)O!_7GUaiW0PEO7+)3-G)Rx`Slk;Yl#cLk|BR9Aj5A?;W_UPdjX3`61r7 z%~{#*?2@0#<3{C9_-F3i$*YRKpP6C-*g-&12-FGnBl&{#v4MS9hc zEfkb6zw?L&yr`;&Zt5Qq*@{R5_0+{-?NH=jEKNT5B-~FO8imNnCk5j)PNFE@DTPuntW{RrdD~FY#_QzYKpJ z7!Zpxa++*Eb+^(|qHfr$af^+OQe*w?M^y1f#%1;yLPf#A|d$6LZygrdbzWgsECIVI3t1KqR^=@ z^5?RPc}o*zsj|{F>szXqKU?6nM@jCh4%%`HG!!+mH-d00OSzQ}qlp1QD#t}V#a7u{ zeFo2B)3H)rxg8#>EFEo2%7fNLc+;$b&uV@4D#iW8^{&COiFEmWaySuop|<3mu=elW zUz;Js=ZfYd3U@kC7BjtATPP9hKGV_7X6-JutGN*hX)u|ZK0WJ}?nz@yOK^6kwm$P! z;vh|&UK733D^J&klsx7{#fqV!fK%Y(}8EMjrB!E4j zW3$Fv%_|jolT+eQqlig4NIpo+S45w0v57k2Osn$o`bSxo4TfV2C$Ht|hZENr+?Y|t zm3i@=-?3ut2c1uwk5r_0{N1kdgeQ;Tz1KJ1v(~U`{YESS96?OwGk1qaF;^h*G_}{8 z<+UYZT}5V2VgJLR5ohUUIg@rLl5>5~krHEF?&ghaBcsd#Ir_J4v;HMs_N;S^3st z^Ga-U`vVUAaX%Jzwyq$qB+Kww15pOi4YAM=S6uDh{b(<625lt+f|uFmeyRLRT4y_s zf_NfN^pjHK1fs9%Ir^xo&%r~*wbFj4q2EZt3ofzDo+!~*|Jh93B>F^+jqdbz`JxdE z>!**Qztfn;9>|EJ$nwt=5EHXIfa%VvwSLRMbhAz2nXvo@&OtS+rBF^fpH5$0>%AC( z$jo2v1Z2X?6;i>5-wt(*;lVAy{6Qa%95j{u$zp*bLuye!vOi5vOove> z#jQo9#_kv7*wV+Am;3af?>z?v$_Z_FIJS9Ywj8+16RdCkW0y(Cp2VJ%@rqJ9=Bml5 zFliS@!`tuTVjmgfMmwc&+_z@Ud7&$miI$fhbyn%~Q?XvjZTxs4-Y{ys_3f=rlas-4 z*ma5U-bMLQFs>EQ%=Mq>BtQSimX`J+2OMBph-2@3;0F;n~ROmit(=r!&9*>>l{5 zb7mP~KhI+Lzh6d-`lXrQ*p-wJ_8B}BHYHt$t+(GBwmq%3Q0`TTClGRhq%U%fN!Odk_MQl2FB5To261M8z3=w zUtb_a3g&RgZnntNet@>zXsxjR_-pAZ&hZSM_49;^r{P=%@T0kuuh64i>N-XqGkADf z97v`TjRBcOna8i2K=Y><7cELkN_rr~GbPk@%EQaSFd;XGiBbj!N|9-^#`KYcXt%-7 z8n)1qWPH*Erc%RQ2t@>rbem`zDwLKYHxeQZe;SUM`5&@IU zQ#1Futr+iTP?Es%W#y7w@DDADyTVv12)|pyDxS0EQv#UHB1`|L-Rr~og`XfrrR=@I zqR!eb!K0(C?_s{Be{EPV7-Fer+jMVLnXiBLYg|@q`lY4cdKh|?*c5Tio&N4&*-cp- zB56nKyI$LmECfW2NJBpuR&>_ziBW{!#MR9J;UmwJ+xcX*SbTz?l3L^4;wJZXjOGOj zyN1inkEP7AO!4X5z%)##r()_;e?GL4jnbx68OG? zF|jr0X!-J3@#O)Aa4cR^&H3AtN^)`8y9RQNv-#3bO4+PO%ZS`Ow|jf$PEJmShB;2z zB)gfVXF*hz${1cmVXL z9w;Y57eGP+t#!&9>Teb);l@uXSC*<^jgZ`7&)Sn1gi@wJsubl4J*bGCQ1kIfcP1#2 zBTETbnw1yuHkx!jRpH3GY5u4f4v$k)pe32Ue7uo13PlrkR;pU#~F^ zhk|5;gZ3~2iio~E4YZsTLy&cDZs4h@)g+`sFqreT&0w(`Q}CRb$A6d)6|~u))|6vX z3h(6=5z)7z{QM1VZEXz=ZmzD3lewk&FFG&p+vgaV^Itf`&^&Ft6Ytop_g1@WjeTU? zF(WYl8!E3Xh5ZDNnRCu%;?wPAA+))(blhyH_|ziPQNb#+6R4{VS|4g3%2;r*8@Md{ zSSfue(_c-+d}ZRv!;NX`+AEeC>biRK?viziNR(dFpv_xCgLV-;i;Rry{QNv2A>jnN zVBi8-Qy&)NO!0SBW2-g1e-cRAb3`<+!31YrCVcBED9A)p_RXO{dC=WM5vFo(73RWv$He((5QTl2H8f> z(w(%O2xsjP!OC$nB^S6DflijbCZ6qSp$b>^Olt6Mq_A4EJrm*k+bw*i#hV+!n%4UI z`j!?E5D4^+`@ZI8q<<^;q|s!Ou)~%ORVyN{zP~W!K=XmaormUeGsy8gLGr6#yPwg; zZ1S(_)4Ac{;lV*U)+8`Y(jr@ijsNv0C-U#jlA-JGev3gk3X{Ylv>0?r^ zrxNr1SUB14QeSRe76y{eweg#r6otO=b9AIdF8|eEf^9Nf2xtp^WOJEJ1XJ0Kn4F5t zXB*MJ$dQVDP(Ev+wwI&@MM=Anv~~!oQfSAMg-U&WeNZSA27>|1EkbHT&ulU67y<~f zpo*&Pwd8h9t`K@KB8K_n&OH2Ta7<~Y?dOvF^!&t(RVV`=AK&HW<(~^>D~K?gU+F6o zrC)iS79B1>kS9^N&}ckeQAmRSLm{mYBLLNG64~pUSKsZuj*7lmO&pEXtZ_>f5OPP4aSLsH* zgPZ822m?ez9flxElA)LGWuB&^qa!abKRG$+BN>EKt}t=Mkw^ZefrPuol7*QdagHYs z_d1Y!Q0Ac0fb^#&JCE2kG-Uvrq1S+~{WT>;YHF&szP@6C>fHMM{Zb6pC%u)0ND4`IY>D?!E9Eg?JseEaNcf~e7{P(Y!9v7A-I69)zD=`pN4RY^4y{* z=@bKt8zWBV!tF@BXJKJsX=zDHWMyi8W@@o1VFgDAccEfeoH<_=^8-qDSS<0*skJsJ zfTG3uVl*=ofx)k#ibCe}7xc(S^KNTv>;C@!_ExC5%2f+|fc3+%*wdtuL^03I#C{Gc zYRZ!5oogtgB>|j>I#aEAX(OxK!(8rs9 zZsKz@dgcbglzudRHycycxcvD;OaKTFC7!L}*}MeG7N zjWMB+U&~8oO#y&Pm1`JQ2evPMtkzeh)CM8`aUMq-G~t#X8uGL7pu@whDg@7|F_B(Y zjCZz;=cu!y$|tQZ2lra^F&(#%>ymqYQrcQ@Dx&l{I>6X^MZGA1F@7qYy)Zu?5B*@g zSv`9+GV-vD{@G36*3}(sFv}`NK{DHxy5Kpvd|6TILra;J_8d`*%gZ1^!2r77@p8O~ zYM8vJXR%$uFn{EI3M!ULZ(Ymfm~$c@p64K+vg3_~e?RMgoh1&F4nv53{Sb7V6VP@_ z;6&>URr|ZR0BA1bHlMY%C1R^?$q+3697F)M-Pz^BG|{Uqath(sMg9hgj0usEk!osc z%g8=lI%$@$5BY!!U~T|JG&g&7Q&U7}XeL{XVkpD#+gZj5P!~aGz}g!%sIcJ>laVV5 zaq!FMhBVEoz%)L3Z$&9(yNZAg5~j)H^e zRKT$f0)f=l1{rq}OmA36c*l7Z(~%34qc8QBjwT;elGrP`1`|FvNtmGg7c7OiyOIeZ zk!}>ZE?~Z?sTbnr3VMbAcdB}-uC=Kh>SuzUS;6>%3E^OLnuvPpG_ZdWXbOA3*ysmx zELPh(?aLqkJH$C}p4yV=XD(lj#D#Mt@EMy9)|jU^!7jsx0?i;H`DdQ7-e2TV+I zSP6)B(5d+ zb0>1TbU0u_0Xclm{Se6KpnPAVGcWrI$Ub(HE-6oy0Rzbx4 z<~IZZd~$*qEL;>@lu;B;)R+RKZC#Da3*Q|VGpuJhlYN3e@*@XP3X&&MHcp3R!Q}q* z^z?f5_e(aBFsG-PWynqx7p7_AV#c#oKqmZi@vgb>*DsTY!y;Vy#vLBA-{QF$k=G-W$CtSqvSO!zPhwTeox_AM8g~X@zoR&wY8wsG-bglMkIN7 zo%XdAIWIUxFAJKpeZ+6@^o1*7pOm5wW=3bXxVR`&U+a5m)8Q}>&LxKoj1lVbwt^d( z=MjH$TEY7x9(k;G2p^4ib}xb4UjoJPB1{=1Oc;g*GHvPjSxRy;VM2nPu+HKOucP`{ z|H8zA+asddNk<})1rZ^SySqDXVeA6LkK^iZ`}6lAFe}933m6Yoeu}Nt)^fXhQX}770t1#OGbL#TG?p>j5iEUJ>~$g@Z} z{j81StLIIRylU;>vGcKgU1UGI3qb*FtTIq-yO>ahGBUmAgY|Wsx=lrvkGy@9fL2p@ zlw5#UKthBG!ij@^AC$Mm%)0#WeG9Kjg!jb_C zK(>5{8C8+gEopV9BBs5rWuKDlr=I@s;mPW1F~;$9TU#o5>bLd-%LgkMbiG<7{UL6` zzH@FQ=A*2|6iR>jG*QkV;#34^!4qjM+h3|u$phxpK8gI&HA4u$YKgt`D6P0$GlPR+ zW-NJ04gy0YXJ-Xwx&Va@B7o_h7z+-qk`m6ZYhbk{4R|E~Q;{ygm$pfJZ9I(Pt4qWgy2!6y16`f~?t)l!n} zip{*X0H+p>IRmk7=_8}Dj_t{sf7uvE2y$Rznmj(VEGs%W#2~8UcHRvY=z+8|r7jM6 z%y2rzf0TiAfx?#NR)JRF{hqIkL+5r$bzSRprSA2(mygh2n&@apt;^^*6K`wJZD5w{ zC8I0_O#XG=={UJ%u`w~({QP`;_RTh5i6iK)lGXWl4+&X{VWpT~*!8c?LrH*Ntbw2}&xGq#$Z%!Y{F z+ItF|D6;NEUrovURM8W=yX>!y91SXs$5OQyWo8Ea$Gn_zf<{JxBK{+ejT+mNt1TBQ zR{`(Sd%cHNbQE+nbWC&{pl&R3*3O7Z($`!9lC}U-c3A-wxiVl9^~}lC)YQ-raTlKy zS)Ff`=^ci@Qz@oIZ=B>7QImA$c<8v(@8T@Eg6urKl(5b6o?0r8%Y6*x-|*QS(Dy61 z#9oLl%A53EbI9LobEF#4E8vK!BWgG_X%;&+BIW*YC@g`An1u8%OoHSBumb785uGeI zOT`ZQ8lkS|g2%)GUpzcsn~|8XjiP+=^dVGNn)~`iqv!PW?PsJ>N_U)hFN&=DvEE_0 zv-wY!E{IqBYgdm)EMK}};X3}h*?5&HJ;b#KMI3St4BksZ@!%r@9Y0!h$o4`2W~x31 z5XhEZtGq()cl*=A`^!6z$Na#Wd;K>-KI~fBYrjen^ZvbcbjNzfQO8XOYR-S_F>8ry zKg)#6Kg(dQ9h3`8ql>%Hk!SZxe~>L$3}SErD}&YpiBJn8>rm1`adQIEYifT;I$7!) z8X9zbvdd|W`)STFQodp5;dIRp6dSO?Lq*V`cKCbhK<4}#}9uAi<%;`!gidHU|b?idF z*|_nkA?B5~7+LGIO{?D+o?t*uak z7JEGp3UQlVS;HT z*WTPWk;kuNC2KutzsOciMYN6r_yk%EVO#(v@zBi7%*4b5uqyxV^$+dvOGcc29B?t+ zs@4aJrX_goDM54jghqWkco4aO>BrGQ*H&!(NAly3N^y3$3y^7|88`_R2Hc`B6W^Iy zIpfRgB7t$36EH#vw-QEnUP2JabY8*vkdqD1%`d0|kQzfufMZq_(?r1cIMt-~;JD_% zXC5U2>WPGcQOz0Opr+KAje;Q6QJ`Oii&~!q6?L=zI>9m4`td9C+sB%lXs9orXn6y? z7J~-$nS-(42C5lrW?n$8u&CU<6UNL%328W-E~Et-k?>}gKS5V44PO=MAYu=}j?#sg(l#(7qPi%?991-dsNbjvh6=1o(i1%_c#tB2(wKpGT==PoE)RL zv8|7H+uNosDTWx{mWBF+;BbI(V!_8abgyThk8DTDHnt&=t)j3}v+S1mhPrKx#tKQ` z*|dAaBF?~;@3+P{>_wsvZhXGswVM~l{q?oh4t=iV2NO9)aGoB@&+5PL5BHs0+WAf| zsj@jtASm6z^FjDva)7T1>XsGO$KebQBSybnqGil4lf^jPzc`g-Jw1-irPp!}jxz!- zi|KHMP?1F}HQ1L((u9#X-7}AS5!^yT2Y^uk*(BlIO&{{sR0`?*#v70oX@V2|Jp=Jo zF%K}nviLd8ea!)byRdPWH64i=guf96 zw0Oe^rTez@1p2Bb4I#Pr5eII&-j@}X!!I0|wYZ=A`8&K_OTngX-*#nXwf2>&q-@ei8E5MeOyu7FHz{^F z@szJ8hv*q;W%r)lS?^Ve+1>3Kv)lkE@A>Aa{%MVk_e)vfI0`WUYUX9sReiHx3S*n~ zi96W6xG!_Ew)b|$Oq%0c;%}|F25`eqM)+;M56!i_?KJ|v_V)Jf?$_&GX!ku{Db4kT zkWVCLo+?tz%w9q&z}P$byCIN4i?4z}00h??Pfk8u!4AQ`D!{ukrJ7GwXHt#8A}a-; zuF?SuRu#)f6kPT6^}pr+ zTSVGxA1W&hDO4 zlchmb3{CFVx(-oWmt2%Ueh7URVb1}9Y91Tk#roltcfwZSo16W~!h)N(fSW~llv{DQ zSX@7#1)HCrhXZ5{HxLQv;`jhMNScvxNKUcz;pE#8^SY7y+cr!I>Hfr&wutcy{e`Jd zr=GftAHgJ!*}2qzi1xg>Mx$>pP?*O#5Bf3}J}X4kr)OsB>*=M^<^f^k--XANVH{M; z7TK%gp6L3P$Y~M)qz*TIouqIMDNTNcd1~_Wf1B291C9?=X&Hei0r)xj_5`5nH^Mb- z-_i9m;l?B&L^>eqqyq5IwqdjTNj;GDw(=wO*PJhWmXdSyFCE%xm@fe$5dd>W$2)=D z-Pz}5on)YRxb@*Lt%z5pOrKu$4VjZXZ&tu`Kl7S=6Jnym45GBzY}Miab8OioCzGO@ z&6j5l?DkDPcsesg%gv&|Lp~8RBLVOIyaJk2Vpt z_<@atBvt_Y(L!}-NY!AJ9cOA?EX>ye8&1ZzE#s;^qPYyIe<@3}LWr#k0u&Q#kN0zm zKoU^#77*re<)LXDPx@hlXQgyf07%9jZ`-)Z)5(YCCZgd+5Rlv=je?L2nhXG6c^`3S zWmatyK}7N_ffxfqSGAp5#6NmDQE#(IL{oL4tr2qOTV-}dP1nvWrf`hOqMCYU)R!DM z6*&}rnYtY^v)%^G#aW(l{aWn;Rrov9a`c-(Razszz{co7(VrP{BXc#?=(wyEhKkQqEhfev=$ zF+91J_24I3>1|6`v7vgsR-@Ul`&&m$r#BfXxqX}O@>Vx%@!**(J39hGeu`k@_GIhp zZ=Ho3?2?*z{I=>eRb%;4<5uy%XC$`9Vd3#QfiSZpZa42-qwPc0ZC4<$4^UBZ0P-?s zOlfs}B)Fkkp32SD<--|cDt&>3#6V)oKbG}dts|V_`Vjw}C8M3Cnnik%W^O6dGyX++ z_vtpVk3M+t?U z3g9Pz|CAzcbcgz0J}iGUhk(HI1+hc$CV77&huJYc)T`(NtgXfET331dw;)7t5?*+I#yJyu1hM@pg5Et4Wcd6(F`MD#(`k5-NRoR&}@>6h$5*2x*qU_3$*U2Doc0Vbj5$JmsdGR{$aRl4I(p$JnZvAYiGYa^T5bQ+9&qxdh?cAK+=!XUa*wxhSv4ioT60z}$g6I4{o(&^z2yPt z%B(PxnqH{GD#d|keNPFmZ79^cb^8Vqco&2@cZG*{;OcXXXI2QX35EcsKwZ}uT)mp} zPSF3qK>BaP3#P}{-Fk_!bjykO%#8E3TMG&W!j~j7v?%gSLmdC+5>db^ZZN-V^&>iB zJlVIzTz@OIl>-1*L+3oj!?E{XP-1B)6c!irs8H7Z;c6o`5Vi{Pe&sg7uaB2}T^n|L zUbc!dzd9m)xVOoN2Y+82tAkW5^>3xhrNlzg1_&Uefz(eSL&{@Z6OJ3l5@bt5O4iDk!s=x<&>FBCJO7aMl-t{!~-jZ`58jywgC zzW!04M?ARE1a>gw+xihpu4z6wPBVPb4BqA8LH*`*0+heJ$esw4|Y}yhuAHk9=yep`+Ss@ zv6xt{kP)*;iK^4yvyeAu^O9uAAUB|rE#t5gL&@yfmNa6DiI-UK zMq_@UYM%IQF3aG51s$s+Q=jho#mlc8eAdKG2IW_~i=sG|wQ#>KN-k!cU0J?hFi<^+ zSf0sK5Igbizw~_hNiA_$Nkte%O=o00#Y2cXCDhJ#H&zs$9Z{3OqDXFp8jPsXICPKqNO+ zlLK&@qPfJWyy=0^V3KFE<1{(eK76CRy1!58;r`D?j3t6bkm5t=U}4RP=_PfhiI1(? zD>n&L*6Qp`gzY5B7-u#3-@TB`yTF|s1ya2<%cuKWZaD0h-Oo%V%m3JXH4SdUP5m1F zJ|?G~oise>EmBEO7eiY{^+br(2g5fNOnp7>lpj2JMmGDJI9dFt_58S)DCT&#aewGQ z%f?z;nrLXWzioeFzrQ{&rMwq=F8ci>ts6|5j|>XFKHUsWr_PU}&L^{QW#k39ooR8o zyrpm{1jloj@fvVx9&Ar#SL;ObA5d??=2@p+egoA{{n0voEt)mM33IahOr8-Be8#uL3Ke!WAHss|5~ zRI}S%X|gSMoBcy#-TDt4>LH6GNpt(6+@k%b%}Wt_GF-1^EB8*2o{J0sl%y^>Hb1I? zR!U7#>*umoS-`s~%EbtHg@GcgKH#_~$$`fZx1r7qTH`jJhS*TIy3SLiUU)ej8!dEz zzH;5v%@kaaEg_2!T7N-bglRI7aYifiY*7?gLv@1oeylXM0}ctEuvAi+UMRQ}B3H*7 zPQv=G^>#EyNxjTlw`2*Zeq?bF#3Ds?oA`-#@ZUm3f-LLK{nAe!`_A;)y2OfUMXw7^ zi`@|Q*Wp(1QY%EnfeVL9PFx=rV()0)$7r(Xzdzm2uS#pV7DByqW0* zPo#FAhBQMv4FL8+y#TeMJ7HPn89Qnt?PgoK=$h(y!UPd)HR>L8KDVKsE(5}4&_@4i zcOmrd*m6|r-65dS?sR7MgsddA3g}aDM^se;Opo4hIH=9R(M>H!X2?(X&T(HpXYKh2 z)#PA)&E=;>e$OwH8j@2S5fdLEoXSJ+`fg)EPR(!jKy}Q)Gq*+V-n}Kal-Znt(}4UL z26D7g)|Z!5+T9r8_S@*)3h)r>}f_zYTXyxxWY9a6(6ATt_qbS(I{S z`~!I6 ztCLOJyIdxz4_}C0OEUQ0USOoI&dvQu&-9#LSrQfv^kdy0YZiidvs>EN^Z6kEEeX>GB+s^X+cQxC2-tL&+_lwOj%8lKm<<7fh z>sufW0CPYu$Y*G1NLX0-nmDOwTdH0?SA#HX%&ppD*Z4EQoW;tc8@A`%N6tH)ES>f* zuc|jgU?Fo!`Te9WJvU=)IoBtz>H&ceY>6N&S`Cm6H8tEkJd?r#e{1S3EFDJczAC)t zq&`U{9c-}Z*07k}1pPpkpuPIa6TL)rqO^K(J{v^TUrj$#s=b|@VnVv^)@FQUWg9`1>wHW5^XeWJ_eFa;(vbg_h0Gx z`2G*R^L(!;4MH&RSl6Kg@W{fKOQY?Rdg?1irA5Lc;pw00F6=FKAn!}|#p7WaSp)j; z+V+aZrPUF_ndkFC357%DUsDnilD%+ARqF8HSg}e`fHP%#eA3pFfrO4B*h&QRO)sz$ zsm>93>8bKdGrz$a{j@MEA;!V5&G~l|YqgzC;fiwuuM4DyDB|YEqnjoiV~(KEj$gpx zWRLmg4mgDuDrHf#KpGkVZYd|Mx7WBG(ngk<&dfW)N9I5-9HoeA?xl-`sdjlC7Mr18 z#_EO@_=m`&EG0pp|3)uJPC4vd^&*uk5wQi*N5_x}m5!RG+J} zfQh1#QqB*D@0v~wuYd=Fx=&ZWaH&52dKKUsmR!W?Hh_wy@wW(3hwBsfVB0~4z6ztJ z5cAY`XC>0A_MUX`{QVZ;An*uU@Du`Jbbb)l7__~;y{W0Gu`yiKR@2YU_|D5Mpyv&z zc+U#~ma$A1Blk+LEN#tgpPxW4_t8EurI#WBraWMF-iE$#m;#U!026qVnUV2<{JZM+ zjgrsQo>C+m2;+1z%z9c{;#$)7(&2C%b(5i-Fa2-x2(&N!A!Oi8G1aFd=0L7GcU8iD z_pd&D2&;R6m2F!N4o#QWwP>^~Tl~B$kAiRkz6|AC3ulwBU%z^I2qwuHh5?Q<8zZo> zm1i~%!I{#}Na|X(pb5@VJ#2oO++W+1W{>?#3^^D~{oXF6<^#H6J|Dhjq<=63v(VMq zxvsX>_^$EU)_;$7)FmARMWFr(j#X`>k-7P`H2tzxpM5s7M_x=;=s>T-`#9e%?GEY( zGk=}+-~ShekT9SsprIq`NK}7Gmnx+NzLvu8$r-4}L(vSL3r%j2j0i;D7iFQo6!}mX zBpqZNCV>}q=T%KQ6&OXhy=dyE^VkG8Es%`S(@UF;B^v4+YOfheBw3v!WFW|QNq zswtq0$H9QqF=Edr)thwf&+hXJQ=mUgU4%e(1T12JyJJS&AOGoCOhDgt9VwR>fEhd; z9gPz_H!v`8rFVqhjNbZ-xW!R9h+rP9c1~$H>twKmg=3j=uZ;3{L|3>&hBfAgb4_W6 z+(R?mi2ba%ypJ4u>+obAM!o-WSdqVu@1{4|(p2mB#sNm5wH88GCkofQ^6Yi{-MHq!m2 ze|&hj=I$^xkyoB1kQlqQgsZ+bM_^?7oiUITd@|?!J26mGbnu+)BZB{OnqukSZ__w5 zs$Gyapd;DNLJ)oB6YaklU{^SUsZ8rGXZN#i@OsbUz%nho&s59E&F$*?`WisYcr_y` zGCOiSwv}^zwv~S$C$>i)>))M~j9IzO8RX|sM8BabzQC%3vg=P&06I)4;SIaZb5}pb z`>Wp?-A8kF0MC`h0#A1oE0X5y!BlejF@o9m^71TtEH!exoRgkEU_(qfYQ* zQcj#zHJkk#qW(-QGEsL{#|H%=#~0$cJGTZ3S}9$ zC{P8e1J{{M@?vsFdWq~FL)twcxk*UVU~_SBnMg} zpep#IM?}Y*Dj-DwIt{~j*U>C$dQ5Za_}2fp{`FuPRDUtaq4%N@@9wMRP=!NXRh57G z$z$$tk?2n)P--QKIr1R_U>r%*-qr83GnRD?EAKoUz!WMQ;PR4`}>a?PP z;O|!CI|5dKoOtZ`5P?1q95f?v3FAz%X`hTlZX1Ere6=MPe0Er!IuJU;=%$54HBcp0 zeq}x+=}hyxs+HkC(xDZ?mPUxGzTj%s|A>y}<{nmI3`;Cr@vn6p`NEcm~GF z=Dd_Hjy&Z+2Hk}X5`<$_p*X)z7Ooy5l{sl%h%9%Y4>OJ_w~dob{+Aidm^p$iwV`GF zeChM6mEJx9-cXU5A;1s|eZKT~k(8zqAPnXFldzS9o z2vOZfQknkp;bdi@+{eUVyhMa=;I9jS+Z=oZS+NcNTR*bpGZo1Y4iKxS|KsXKsbri1 z>BB&G}KWvB6PBOgalRF zh_#OLfB$ZEkDofsowXC)DSBQ->pwTw#2Q0b#(gkSNl8|4$xU!J?s<6-I^bslrOwgq zQZ&VgJgl^r!98(TE^x6hWru8GMf&T*;a%^Guj;g5UiI0P70SQ{Z1w&HQ}m;TN`M@D z`_S*cI`^F-S=^Rkk$}zs03)|w&|2@_K5KHPhi#FkfEd&cX>DIOoCl6PK%}?9Yhz<$ z<4Zj=IS5d6BDj?UemkSF;xBBT^O(*8BcPW#0&sdDB$!zkV2>e44303AxW)i0hpS_# zi)OIr+6d;P^Sk*w+0pUsJRofL>WGmwfyud>=%wQXq62FH0OhF0op$^mVOd>Y{)?+| zNs9{rcItdQE!x&@=UuqB3w}JGg3Y=Q(*Y^3mAZ{mbo^*@0p7H2IDafI&8&&^ZGO92 z-=)U)(kD;S^)mSj@yX0gGP@UpRSLt786edf!b-FCC}E~luc@Mer(=!aD6?4zH~(Z% z^waBWHXz%0uXfd}UOI1yu?vT@5u6_=OSPgW@| z^)!EnZkLkRp2bnXC5b*d$!qX+)ml1@SWGNrF#304Tq(MH>Hh$ax-sY;-qa)E?_bev zbX4OD0YqWILyp%MBRhUkF~1X>h$e^E6Q1q+YnJo8e9VT5o^eUb0FXC;MAv!`uQeTv zjN)LiP~%V914zX|o`ru`C%`}sN1OG)8%mBmZSdA|wRGzPTCiouSSHeptH3}zN;6D1 zN4GV!U|PAD2C!F?UKVO>>o5o2rt!IP@^xSkfM9)w5~5n3qxDuAiLfPKH|nZP?ot0-H|YI$Gkia~AJ#sSc| zhH4g|ABw_Efw))5u;~HJbA!YzMz;{+Vs%=i%#-A`-Wj(u z>gxMj$7)x%hr^JN5J04!WdbtsKVpmSpK^^m+d8dp@5t#(Bp$esb)wSZmF- z=9+Qezw5e1urc@N1WG{~eiPitPd|BG%gQc{iNPCnDKd&3X{xNGTFA!^QZxwzL+0d# zNp0Wb?IFJ8lC<$bG+8i&BG;lQX~2e1ztzQ4+cg8INN=FABICdmM_63F=V@IRf+u#% zEGC0_d@p0$-n6k5|JQ93W@ctFM?Nk4_%C@~LJPNU`;L zir^#bBucM0-oPP$2WDkIYy{gRJr?%HS^x|Uo=;12w#cq@i zhRVcf`_jD2*RSP-prP6H$)XphC8Y0xlu52r^!X>!t(L8+mRde(SQ^&51M^&|F5Em# zm}696^8AeDT9dgU@c^*LrMRAAG4Lx&u^Ci8;KpKu6ez_Waq<_nfk)Ci& zjL-ZXQziIFJQ{f@C~ZRB`K&c$>6BZ4gt|A~!n$^KI;8%R=`sz$I>oiI7_ zjSLAFuM!Iz`|0IAMx0S71%6z_lI;a~A#wGKo>E=vI{31(GQ}{bQ_kz?)T8!_TteaA zjC;!JtcosncC5new8;3&049FP%lkbsKve-b6!x6ObsnS?p4b9vt9CrUYXOS4X+Mo7 zONutdFO8GM?qB6N)z;Rw)&5QD_%=w!uf5z*wletw%~q%)!=1E2Nhc@?-KeO;(AfCl zL-G-4vW5=AyVUeE${*j-`-D1`-#IMr3JPgUh2xU+3RJQcD%cYxY5OV%Z~m+h>%PU3 z@imkcju?(+NdqD#A?barCq1gPNa-(P?O+K&Y#|-`l+Nxah0Y^SI1#lLgw5ba@zfS= zc?4!4x8DfW4Q!NTxOYJ(B5Tj+4SM*{*8n4ZF-;acE|4?MujihTZo0~DGI{ppWlo>M z>GJX1Ezx`x!UF>oWU}a0!$B%-r8{aNWN^Ll7uLIvqtqa3bFt^ePDuF}lUrIK&l}(p zcPK;9y-}2;{$sc`wnI2ne4IOvNhh){PH8Yoj;7%_}c@r9;4Ga)&ADN?S8@@7#K(*;Qmd2sv3Cm@Yd9_ z&zwQFHDDb?>8^u_(TOc>swp?(B!}0hteEbo$nNVtU3q66e{W}R{!Zg!Ahh; zS?kvq$Llp~^+hy7_?bX}xjQ;-k#!9AF+j+~k}Cllvrr+h9*T%^0`I$aBm$G%O#UL2 zb~7_~U>$dLbaeFa_z5B|Qlx)wK=aq`&H3TV^6bW?%yL{Np4cE7f8ih3Ul%^p*HDH9ifepld0AdFpjbG;&R*TY> zN*!#DmNNZ&Nq5(F)Lfv2QoM3BgAGrZXj`!F2qVt@KTiPGZW}---P;N-2VYjkXV3=T zZt(qN0!$2iRd4C?{xpnt9n5MXfK~!uSNnfi$ozXXun2KO?iC4zWq$tsYg>reH+1vD zN3fkbwmlNDrrg!>@E9;gnKp8 z1joCLolj=3*gsXg=LVOuqo6NkznKca4M?O_5>qVCs>*Ozl6m)i2y5UHi}Qr|S&Ptt z$I)_tQmXh2A@No01CjHOCWnNgo^ivclOvD9iTUlkD1>-`6o^aF&>&nm!Sv#dz^kk7 zbpG?bidW!)`$Z5A*&6>#d6BK(QC`_yw0Sg|LvfMuUf=q^AUnB}GoQdo`E;Z9-L#)9 z%CCEz(2-Yk&EPBy^Lav78v_w1rxE#h{iHue5h%gUJMBnTwqEK&3Kdl8@DI-Y6(~`} zzEuTAa5Fy>&TKh9Da3dBg|8Nu?#bFK_&x&Kk9Q(TPV~d}?a0%%w>z8PX;8lcZzkBC zvDg~l<-?}r@5vh82DsK8tPD~kMowoGfJf^FEVsTabMwE2h*<@_8d76o=s0fvDtbyOgsWg!9WaJGUEsi=7{1Sh@5`uI&Te zCnBsOWoRWb{8Cbmlp>t8S2^C5Jtp+4$=AE{Ry@KYEsd==y2iGVLnw`{)0tA9#q73T z8fZgA%`d1awCX{ojPf4f^YV8NT_vmEh_5fwBP~GCkn;7U#>r+o)FDp}IiF*oXB#Jo zbUOLDkM(y8nnzCV>{^S~BS8(k-Wt}ktOr6SA`$F@*-OR~L*jJ6%kSMaPXoQ60+QwDM zi)Z@Sk$tNV!pl5we;UI#z(4b&sM+m1<@0_m|vz-`GCX^w!+e;WjxfQT`c3EGDLGcQOHEr%)2s!HLSjl$3;Bvi0=64l|yc+v6tE*1Cp zm;dW`_3u9TPh0-y-qhWmMsjEN@2=)-ugGfGyg&Nyv>L%9cG5B3w==molR2;Pk>87G z!zuV6tNm8l zOc-1#11Q}sRCuWkVAL=;I7mjvn)rjsc5-Hhmz$d#oVck;OgK>mwoQQ1qoZW%D(*MX z3$WhV2*Qg0^azqEm>gAnHpItB8I3cVUuab=WCuK=%hR{Xd7&{@=iJ z|3{zmo>51j99-GQp98^MUNrlMU%zty7qS?nm?iaY+Rg~fp@gu7pfGGBb-)*VRotu6D61gYz z?!Y6^yV5=QNJ5%#f&JrImy8**+U(F~U}3Dkth&KdCG~Za!2S={?l|td`4jH>Sg`Zm zJHUQp{CtXMmaE~#1m9?5;ygyKH&P-d2_Pg2n`Kw*llzEFcL7R08CED zB74>U$BVGHv*G)9QMF~@%IIPA#?|<+f1<3o15;`Vn8i`Wrs!%tlN{1giUQjRSkxJ2 zY1(c-2-2Av>pHNh+{nlLFP#iRp8^^HO!XG9y0pnIRndke&&b{pd{XD#Fw)@uOLN?MvUu6VUa@C zr+s*_D^frLTt$tFA$J1s=`;~A4xzJ6M*QRW$tfVJ`m0lp=|@Glwxy|MMpv8?hk3HJ z>MP<4SgO%`2SB-IEsD=tz(YA)>CU~Vi0wSo4uH*NVCkaSzqv_w;`fJ7_Wd;m8Qa(~ zTHjc_$+Ua6%*yak_w$LZiF!P@k}_%r@*Og@q4$pYO@XGo74T_fvM8pfYL~G`hatsq z{K^N=M-U4h7)b-fDfNRch=V0<6aVuiFS1SxZE!0PU`mH@+%LAbyQHgdiOknS- zEe){I&{8AsSz_$G)T2t6n*q2D;D!Yv@H`z`!Mv}%$lcmR3K19?(dQuk;pZcd)Xfkh z5W@)t+@0TY1YyE$l|&239cA9^yqDV0klmZtguDo=>16jI_HktGm4xuYydEuGz1KyzI3Shgd|uoGN@-Rr zYV5w+4<38G!t~1HgTN9uQKeLkU*U(mXvgTxv~g(~ZP~2dE`7*03i@IG6EWpgX}^>u zL=9xp)SUsLee2wh$qFs-%3izv;Z4`a$AyRnuv}-$9rM4X*m1dHSl5t<9%C5~X#mK1 z!_KRzl(ck*Fx0MhFlXgFcYZ4dFId_VxWbOzi7g8J<#pAvtZ&3z)_zaQV{5=5f(3rh zwC24`rPBZ!@ZU_%^0G^@eNsGDQjW?i`e&OFV~_6fCNESMh7vLxzH_njn zm|l7Lid!#H2^LP|IIdK7Eu5T>I>L0FSM__)cl>c!rWY7%y%M`SVX=A?biW;-lm$5n z%biLAE|NGRbnHku7ks&ny%mL&qa8?C0wJl-hKgB$^mygyVm?SpkI zYwE{0n#@XXK^pSYU0u5i=I#Mm&t%LFPei82I&xo`^Z@vVwdhSos&+H8(uRIL|e6fzfE8--vv+8#N4ooel6G=AvbAqvjxVlN+U7XsA>v-y zV!A)L8IG?lePnfg|LC}=pS!fDY>+XQR#mTEaJ(P&B?1vW>D;Uupn6#CR0k@&Y?f67IGA#3qCU z3L@;j&vE8)-&A4>m0WjHlMy(0(O5 z3&Gn+`yc!7US;McOr=y3BUYSFZ?&s(J7rM;; zvkR{D<(u>uUc;d?e220+HC4_Ummy?qjTO=!?a1xQ~3V&>#fKFS!Y4au%D zi{f|Q6Z5zKd|URh3T(T zVA?0UZgnT^z+AGXZjx=>o$aIT3cX6U3~#J4IX&CA@vs^z^ne&Uq|NWw)(}l*h?0dU=d;+z0o|!5;b>PYhE6q(Q>hwRCBjV^^a7rfj_Zms z+@)@nyr?g{6uP*2!r$Co^4{0mQ^5CN-@I$5oiX;<>r9*|obqDYuW2032svMj@5-Nl z=p5T0_R``XUoHw>$WLKeObAu<<)RDBnBF>>bsBU3J`qf`;lXZDXUdl)~3 z*0c^4(=*yoiOgRBn!2x~?bh^s&8zaoiQrFao*nlez}@JJnZ;OI&yw>Lzl)DZk#s(l@8R}?c11Ep7 zvtwaTe^Xm$2$XLNrJ2+_8xuFbk`UwLJVF|e8RnwzUF{|W_rqwQ_;moxHY0l&kZ4~>)R z1v}juyF!}Xn!jUiISZ@7f^sd9(en@+ZqWB{iN$L~4#jVb;U-=72R>jSYa>%ZTU zt$!M5h%lUZXKuSk+uO-s3bdJ)ALdUkPsO-(Mpw zq{<_oIqQbZpp23*Ha?5wD|2?FZE(8?BNTEF(D{7|8k(D%@7PO7 zOVPEwleWh|F4*-oZCSkE-c184R6V_xY$f~dAC5QrV$ungy1{@!M)wDlB?<}()?x4h z&uf6jIh_r2#eWPLrH;~W9KXlew9bcy?CkTilqRy3sb>X2dO`ZxDzvm+jLy=D1aE!P zIQ2nQt#7a@n9Dj^s#}o7$2fj*v9VQs{ra`B5xA1MZVTt}cF`j(1x%QNv{@;d+s_|-f!4^G<+D}DnNCDHmzr* z3-5y9M^2b;H^Pzw6wQXBUY2fxoW#kgss0Jx zZE2&syihPq_w)xR3;rvWSNTG0D(PF7!^83`0>lg^*vK0J`Th71gM%+vyG#>r(BChQ zH=bQldoc2sV7(arl~X22tJ4abLJ({!5fc$pfQR75kCKv-pFe-fcdP*LX5WECBdNM` zVw8VTrb(~R!mXt(8qO@1KN~HkzmKV@q>c|GD!By*n?9=Nix;(ryR=TuYfH(gu`ljs z8dr_3yD37=Ux5n-y+qW_)r8;E-D@PJ*$}LrxZ;FK?*bo$c!W|d@Hxt&tE!ZwVs|= zP~2x+CaJdX`K{DEvezb)zEdXUNl65j+-3-36wd6<^CKgwC$?N%T;S8l&(C*5xCB_8 zJo8Ukl)8HPIZ?LAN{*5zYcVl&RbxqB~6(Cjs1{twVW*(&JJuleN(NHt7?>hi*o;Dn^(?5=C z5BmV2uECK=f!e%b(0|-X@v5t~z+>%kBdYYf_pGrwg{(D?7`{S1@MK2)V`)$u93k?I zbOdS6%?Auo3h%tU?u}R{_&!-&Zx4T z+L|dElf%5(a}%X-vya#iR#^rYHKfxY2t!G zt0IXlE)AL2n-PXwttDs7O5x_oy$irH|1;xMRN*^NVPTcnx^|F`u5+t(KVW$B~&1wZsw8oI@()v~Qv*9of+5hoa5iTQ`G-+Ej3JVQC2d=XtO zF|08WP{q4l7Zt{Q4cr;^wUdE-0T9~2^3%)f7D$)6nZ9G@iJ2kya^7TN8fU<@IT#u~ z05mhMFkU9!{Yh*e3IFXKxb=7Q*{r{HOe4rSa!dME8$7M8^31z$BJA@_im>8;Q8`X6 zM4*Num({vEQqcTJT+_ZoRe>`Y@YQm%kPe{A!ORufkXJJn9v53w6Qx_t_B^;{^BfW%X>}SkTBUlB zbdw7id13w!Ky?I0NLH`f-*?)|uY6;NeJ*AF?Yx7QSAA*gX`?+d=oe{bS_=CMYyz&7 zS4G@bC_LJ4Uw$x^L-;%@)QI&X-a?>xVQfL!QReR@Y4^E0bc8J<vy{?maEj;aHlJJJ*(!m0OUbb@E$oJXo<&0SG+{cC64HLJzv!gp=$6OnVTP_r}Gy zvFd7TLQV0&-pHb`uu49!sfQ@DhL_=Og=<#NC6?2xn=#Xgv$sgUKld!81EzFZ0?K;R zt~&GSaARfq(_tBpwt6(-@S<$vXKO2c9qsp~ZZuq2({GV>yjQ*q5nBqW*+bq<|6ag^ zDwOHg)>JX(!o$Vo=SH1^uOz-i9vGbgKTcqz3S#BK9Q?ILkPaCi2o1JyU-uv2Hp?5H za&zUk{%4p}i&oi2!Zps?d~jzU6kWNQ9%knxj`sheQaCy^6q#B>(@pz`@GZKPZ8>5y z5SRQ?LF@whA;%23%;}idxm#2**9RL)pna23z?LW`-t;qLgKL)9%RgjyPzH|psX@~T z;6dHVBc02x>g`wrg3N6itQ%+LOab+|-rUUZ#+E5YdO_%7PjqRGq^GSd>P(#eRIOX`6-HY&0lj1tMV}Y*(m;?1Botn2A%;i(6i~34)gW#Lo)++ARPlzz z;7CC1>8rVYc?D!Hfs0{D!6kTjGD=bLysvFddvZ)3-~aauoT}%@x!JUXFm^YX;I;Cs z4G=rb9_e&}{gkRUcx^Jpwv>+y!oCbdJcx%8_VDjF7~yw-%cg@{6~Lmq>^NtLoy@_$ zc$$v6K&;WTmUoScH8$Z+daXWNYE>F%;>lOe74;6Uixa`*vdT%dz)A3nLic>mrOt`p z)UssY zo)KuwJ3GHuYRj&1wQaJ%rGgz~ggA^iRv_lL8ykz`CTlaXK`P<~bK7_yFWGg~6<01= zo!K6r^-{0vu2yQ-f)IEH5T6a&@3V21@av%4X3qq{Xh2Ey45nIE-*cdo9}^T5kfPW-Y$FIF;ee}}P+2KdUEo0|jgb->cg zdpO6GmieAGjOBvY&HvzfuUyO{jPc^cFGdl6m;BGJo!{5guN4u&5yp*!f#&w@6lu(- z$Zpr`n%!pb%)XdE^Uzibpq2AGWovd!wD#ERedr)tUWgg)3we073$*&YwK1)pwU`_b zwP27MgJ)L!>xq&|-gZy9P49DEzg}05N=JMV0l3y;-P78t8i#Tx4Q97B%p79i1W)i`V(|B*3Q)rO#^eK&bl8@=G}0Sh za#Qc~pnm#{%5DlqbV3(vFTP8diGzH4uAgWZ$sXMnhBaLnXRSSsc+9)6e8a=H^1FoQCA5rM|m7M3^TbLs}y78i^c%64^9 zZ8B8kzb~wiZc4IqEz32=*K4thyJJHk`ZEhoCubR$c(}O8rRlnLn*6ru+lr&*Fe2Ze z++()t;7LDmvH~=z(bKVcPEM0512c2pC<9J~6maRk9%YgO0n4mw3=lgwhkq^$ywi_# z^zoMpW)>*Jc*+h^<%Qjq-(`cTx8)W<$N=QHJA;s_Rx*{*Aa|AEf(*-RQkDj)`U*&@ zM??ZCq`o$>`1>CLhTBcD-ARGT-C4qCU;>T$)-6ZKvL@yl2M>TLlWBHX!? zR^wxl`*y;_l(k8-5i;-;pi8mVRyQ>@)ztVW)qKa4lEkDeO%rNp$Q;eR3v!_gVhVy4 z$mR;r;AmLx4|UJUS#q2?wQiag9&?0!!PO3qc!>U}Z;ls;7cOVFlchOoN2lVXD3yXC zwLr`AFSN?LzYn1GhZQiPfpHm+YjUIBb$Y$0V=RTry|MeY-ZCdZGctXcwE}6aHIz*` zvZKhNQIDezbk%!of9=+E$$Kk4-{W@nD)4k^zE!Tfap@6^Veq8P`WAY5RUh0^G2sp0cEiPPz)x;ng zO5Y>-dtYAfB_&d!p<|)v*`WO@=Kg8ZB7Fzw*rD%xzxgP@^wspLQ5MVk_Wra;0M(+& zu0W2Na#A~f!K4;Rg4J!S=lOxpcTC}kcHosXHwskTidZOqbRF>SzKE)-W?<5eaPLT$ zAvxP|W}83xNQ?AzO?4_%jqNMiE2^wzG$(_q)Z5qek+3slVM(LDvUPPu=8(7-0wO+Xov5nMqw+NLBK1q@Dh)zE6?LA1*(~1;efsok04&h++cZW8HfwGiZJw zke%H*;Q>7He?H0ouX&=BrO0220+6)*qe5Wf*Hvu2y?7NqrIHK`Lw+C>D*vN*sHeR@ zbZ$~a223RXQ81w6F_PkXzK0$&cRR8bF}B=lH5a@vd;IUoB!r4vFI&vX8j;?--&s)F z$Mu9x6`-mR{-c_(t$@qQmkmZRVdG_3YN6ry_q_4{F;x7IlA@!tjBsaGPH(?J_uqS3 z4dWN$S?xg?=q{H2=f{X30NUJXFaArzD3|}aC|zfKQPs&&8BFr=udoAHEK2@AD8-0r z+i$(S*<1-+Yw&D2(tm#ZAn+=gmRwbn;I5zk<>t}p+N{jpdVUqGsWH|``*noA2j*pMuevZ^+h3_hSvhxe8DtG{3ci1s>9I!hR z&LEWd3w9-g0!~$r3W)%P52C?%@cnE4lYPt1{-QNXYXH&#E`p#O333R~_(l+F{)haM zk_TEFT)$r6SjhA_^jWG2k^>FZrm9u8HC|(|8V{xr38^5U&=x5Zw4t{#{vbCkMrtYd!>q+1& z7EmozxPn?0-tMpoE)wqT`O5mIu~BOBlkK!q;4e364_6i&>d*wXg@mRjy{J>wWoG3d z8!x2}JbCmS>d+LsC!AE$%b4gG_K*O-55lHr*irrjHQ984G{Jm`?!?R_sK_+P1#v=? z52KJ;2<$JPt@H47a53V!vC1&Fvb>1;vP=xbA)kt9+S3LhFsVk)Z{cF`j#Pbp7s1Ks zg!EWPG~fDr@$}UsL?qqssFMR-;$8y(wh9D!nokP? zmm?2SHGf^>&}%3fmUGoh(gZp=pDzbbsZWYZAOn3vL=wCVT=BkzLl_z$*J`C7IpT*T zRax&^)S;g35*w`^$ZJJZg2x~$%)jJ6|0IwZ-Cb84W0h}k3u!P6J*@`u{%~(wji>^j z>xq=gLv7h#oLLX-(*Zj5|%nIUPAo_mWa{+77rE2a#i4PfjXSpjGk&~G#b3?rpA!EgZ}Yv=WRES;aGVnA9D zynLw=Ecou;DZ3z_vv`95Esi4Sp*dysZQpysOZh1|=4bfi&w=@U zgWH6Bnx<<*MG~GU*p`l91r%R@5IhOps;qunRv3uZ3l!A9cY-gbg8lLNHNPu|*!}qo znvQ=3=&{9u0sy}bx$;iWr0+xU83rCc1lLUt!)pH&0QDX25Qq1lYZd#WE(mvA{jBE= z3h(jtf_YU6m8{};@qFW2sIK~5+Xu_i=gML;AYbe?GhutPnT`F4jso*3_y*2@D{dVB z!pC_LBH}+8IJi7@jC-gNXvZ((6H(@R@tgOYcHP%EL5{&GSAsL3$VqW!YJst-6)wGJ zf9uqjWJ0?(++NHG6vWJv) zEe~(5u+aldmaFwZ_k|lXZ3#+m8SpNhV7df(YCBgI327|z$Q-`+Svdg@3pd>jyguz% z9}U8I6I4=abnfWJ8Ia}~H?Eh8F6DANelys1h#?aoiv9MVK{vGy)P(%ZWa=K(qaty6 z_oXgfUVe3QH}Z67_?$=l3OK@xSXd#4rGX9$6L|q^2>kWkx+<8M!39r-PbN?G8_Y1s z>>hr~xxMYsL3(wUNzp7o_GdS(YC`Tlp>lG2u-CQzjgLqP98yMkWk*96eC$LiOW($HK$O}3p%$F zV5jrZ4J#?BKen+o^}@lBr>-urK983(HE3{9=L2I%1okl2|GucQ1svZVv^5_E{bnm9L4A&ue*uF|20E5wvP1{RQ4=t z>|Dz$3!t&ldRL=&yjid^t+VOReRa=-&h%yYeS2#TK1pE>F30RLCNtc0{6=DTvLVY~0twcT&4T*o5YpSoNG zP8PM+d}$xUx>(O#J9u%rlljsI5?rc1qWIfLlI@q<6!prSnAz~*j@e+oX?QqEzZs5# z>MIoM?Fj3U(VxAIC}Z@c}@b+eO80w?C1jZ&@WNDuGwrRWr3*)TXTkXF}J zAwR)x9InGV-Rg|EOOR4?>4hnriMRX{b?gX-mp+2%pySarWL3~yD7Qd2S(pCNK>tpJ zy#BuN#G>k^b2G_>^hI18LHVcW@Ow90&-TX$PPg~QLGGyDP1T6m-&4zZUN^yml8?e zh4n}U$(Pe)n!>})Y&`OZCsi-)k&mA5739c^W#)cl_?%j^GPi;^DR?t#UQ0awq+sFa zh3{*bqK(5NVEzizY@K)_D35T?8OXn$8QQBk!+f+DhRhcq1msJ6Mq1w^=FmMJFr?Yh@=l+E?VtI?~ zwFcR=AHhK9*Og)CPM&%joHmeu`=ZGRrU)Cux`dE~UPA=6<)PNcsvhc!-tFr&1Nx!^ zz2Q&n3u<>|wN_PWh#Fg6S86CCfBVXeAYD|p5{JAPME9B7#^he;+od-WyoZj7#9Ozm752P6e}dv52T_B!!q-)?M6=V}+2vB7ewRNzq|8=%7 z=yaRi2a3&Nlq&X;E;`#EsZR^KC zcN3sH_T|R&U6+OsXM~_5DX)0UzC`g{RDDM|&w4NT&TB?3xA_zNgma~C9j_EBOOnJR zxqe@<9!_lt5zX!Id#fls9&PU=miCx|3`AvDlYeOP(9_&xrdn6tGaC0xZ|Spiwl9&Q z3HI0zcb^k(g8=3z*6IKT73d=Bx(Op!nu&QQ%>|#^DejGzFaK z4OMM5xk;jDpM#3y1*))xKgT_Cs@I##N5i0W`ccwXz!85284Q=H>FUVY#p|rqmcvb? zGrkykS&wO$;&=?rfbtnglTV$VI*Mwmg6dUhxuy=DtZl~wya66YP%nUCxtBRy+B1<%jl~-m^sbB%=$ck&Q@ti zRFT|#YxCsKNiwTpCQ}%y5BfkbfDE$lGnX*jPTyEDMjZ9vwH%$AkwvB5e!+B!5!3hNu~9i{oKCZKdENO-h+6G2eE zwZW9BTlg`hJ75z8l#v^;w6OETo99c&o?tulNK zcyc!_Im0HO`<@dzdU|OoDHc{%r=gEQfh}1=w8>G%p>n{}0oOW7nl9BsY|f?DoFF+D z@aO=JmvYQ`^Vnx05({(sq1cHFh8nQF|MxVE--#!m$5h+W7}Q?;LF_8x}a%!9&g*VosI=>oRD zffGe(TEy{-RTpz6+5}7HjrhkGj$Rt%QkRZi$C1&VjwVgaoA7k zF=FC@DZooizX7~Obwm}^V+7R{>ZI|^w<0SBOBk-lhgjKoljW#^feH5qU$xI5O%In= zM}Sif@kgpC`c}%!8FMyS4jn?|y2hK&#a1Mr?B1U;`8d__ftX}tO(u=+*+xBfIc$zG zL)i2Ob_?n0=_ag+-~n|QWmW9*UvAe*2RhuZF(ye&aRzxGezq!5mA19@$+`lIFueo_ zMY%Hx+u3Bk;(o>i-0kLvD8XBE~RFrOjNI zjT~S~cNlyK+$MptOpf{iOWW8B={2x?rMJ16NP#UMr$yzn4=5k{J{PfIP1MoUOh`&1 zAi%!?0EL&!*;kJOYfnpjGOeVqR2k;wYV*KtFI6YOd~d%?xyj0!I5bpVQIVO6$;!%V zZ+{;=`wvFG?pQ$H3w6i+AAKJa5B*mTemzJOi zi!tzZe-2h+D7j1ycQ%E!K40p=>#eUBVjD1G1^KNkdhl*Y8PKCZp6^ir0zjM^udWX2 zko7qYKT>?h!ouodvkQZQ(!N5{IVyDL#h{ie7#jQGwAim(QuB+5!D%GyKCz~A(pKQo&!P{_tUj$u95@e%>bLy(gI8uXQ|U~jT< zl_#*V1=PiP_g~%$sP1Fcl}|IPM4udYSq-ai06PFSuQ8uU48z!2GQWsqQ1^qIi&FrK z;KL>`ZJ{4sq3$%&velRN)Ga-z1~df39Khd+gTopd*?8GlhzXzJ@2&N>7#KbnQLXs- z(_teR0J49~mPCS{Yy<;lhsXpaR21Jlau-2dFP*2y$&D;NZU z+2HQ}en0DJN0dx1DK%J*33%N+UNV+}S(u0*_QKYE5!fUU)>H73NrE29tU#eU9e$?F zbS!tRrF;||8G((MIFa;xnd~9Cfk=ofECP!z0+lLPYu=wNkhVxXmjNngSPSY_1fhYq Zf`tps>1_!;bN9eMX>kRyQjs^l{|oC+yN3V( literal 0 HcmV?d00001 diff --git a/doc/mgmt/gnmi/images/full_rpc.png b/doc/mgmt/gnmi/images/full_rpc.png new file mode 100644 index 0000000000000000000000000000000000000000..a879070320e0f5e7a08c264958ccb3bc8d2fa7fb GIT binary patch literal 8631 zcmcI~Wmr^g+b%VrL(2>u3W7tUgh)t(l0y$ABV7VYHx2><3L=dlp&;ELJr05>T|-HS zba#IXe4l53Klbtd*~k9Dg0{!KJu1P{|>=k$I3g#og~vci~<_gdjFbj4Dw zv43GVN$`u0x3_og7mc*@i)C)x9c2Pb0!X=;7S2-V_^7i5W*AKUfRC-U%kI~E@1xF=N$eB6eD*OD%5K>wfpvkf1Cl$V5%r5%yYSGJlH z^O?*lA&H!BiA^{GHlrAoO9@t|)Wuk6^%_dWHrpKqqrxB%3D^Bk>?`&fFTLQ$t;#WG z8ps=Ys1zl4M>biFscE6OcBP}D|`%+CAj8!J*;rtoRKy&b$&f<^3sG!F(7^0IR zUIf(rM}>vo(?uS>1rbUvfh3MmMs78&4DTTO-I@8{hT>6SzXJkMo$}fO^Rj9wB#r8b z+O6EduAtG3DWn!$fIZ}WTR&V79{MAbD^c}$S2;~3fx6gyC@DI?Nbg8O<(J9H_BDtD zM>2{tDppO{PXe~VbK-xLmF^A`O$4kZD0tGL(NxG?xai}5a=ny6fJ7Hl)=^&yXa_CX zP~OsBI}`f5KEDvOBV_y5P8x&xoQ`CjlRpeyiJF~xW`4bRDp%YichlE=aa9Rkk_316 zWNm^SA}57~3-9GHfyp?SKvYa8{Cvh#7Sk>E#Hr)@@=i$RX{hSO`t;YQ+k{vVK)_h0 zkFN#5+0D7OaWZRgX8{0*!vS;K0ZyXpC&HG=7t9Q&@Lhbx8&5Dg-w>~VGWNwGUO$Qz zf~p$V`<@)F-GQ;F3`Xqvc-PM-EO0np$n4@|XL44Lwm$E6umBhBKOf6uf|q32fU_m^ zPDCTQ5%vpLY&f|QP5g#UG}HH9>j3jpCNhJO%;2vlppJwJ!Q^$ok}ToxgQ*>8~LJ7^j!GTrBb)U#X{G zXTUz6T6WQ)cwq_Nvx^k4>jQt>b@ssUjaJ!1C#CbUfoGq_!MEqw6q)lhP zCSgPIceN35cD;6Tg`zOP{k^X9O8is*+S#`(1}NFKF2-b(7jpxqcz!|B z4Wljm3^ne zKvi=!sqO@AtB{goIUgUS2_=22s{nGE1sw*lTuT z|7oUd3+h*B6iQQz7CdYgHnBK+*iaULjnpFXM_0Jtjay6dA97Ztmz`hd}T5+ujxR^>!c3+h`$6qwV!q+_z+|-W&ROJDF!)6t*CwTKO)pcD=1Vs5M#!1LBE;c&VTU1RpRN$I(%@K zuQbM;2;$%&jY%Sh4X+2H*2rL@J6B|v)YcEL$N=i8j=y98b;{8d*(J3g%YWN+4vt|n zIaoi7R?0mzu^V~t#D7)dcjeB{lzp?_rSHr;ObYE5t?J$aBfaZY_Ly2Vch|l|>`5~{ zyyV99JNMrPqS`SL5!On6W3Q0tM`4V7PGEOsSDRN({$E|*Lo-}nM6mn&W4W?^gm(q- zsFf9jYC1FJzKF{C8VY#N+qswziqe?**O^m_E8I&z6Ho?O;|xyyqXu!29zEIxH@Wi$ zk~+4})qTG7FXr}D-MYKOwUM(M-Cee|gvi?B2=qPS~>; z;dH0=j0g}p3P>dp6S0n2=aM|~t&apm&9Kw=GJc44_2$<4qi-7bfb;_#{k?ZXt7YBy zRE*6OY_*VICV`L<(;fY>{7(J3Wn5J`q)exDtlG9GPiJ-A(ax`}Ta1moH=A+N>t@4E zr5r(k=i}Q6acPEz*fIlueE5%ozVZox)3gq$MiCW{cAF8uIJTgnDa5gFJU%=nL?h=g zHMhXy*}(qjgRzxP!pso9=zFcWW8IjnXgsj<5McP4m*h@ zDqbZ4>ED?#EQ!fYj9HPdS@tdC6fZyaQ0`r#7$|Q9^twg$MZ#So2OGYEJj` z@P=;7di3@ODUcD(e*^UY7ccq0ZW=8K(ok2|3Pau7*qdnZ(NAIK_ALIQe`@pXWj52y z00OfaM!6M)8+yQReB%oT@z|a7G?AcBUl*BHM@jRu)1-s9PxLe%JK(I?jEJ5#t-F}v zzaj(^s^NjF7+|76gtNH;=qZiq4MfSr0NzXpjsyZ;G6BTlKHOO-9ocgm@cWmjPq?5U z4j>qiLKsPbcs?DIOQ)PPd<}>Mf5|97ZIJnhJihwZ8CT>_!%<(XttJ<1xkNfF&4#um z$saZ@VCKKzp#ua5mHj*&n5dq)W1t;upI`q%3wcm8d=p#rK)SA04dZ0oRlp=o^)=$} z?5mY11+NdH`gL%x*PaOY2n=#Ds__!Jw_J3wlE=~m74wa|IMN_+QK;-eP?Uak)Mp;+ zy3nuTNgMTk3-w?-F@4v%Ems&NiOhu z&58E6YUFkI@Uk!-F{B(o_{+E!~Mxm$a(muxx&+e%S<+p zYdAGutoq?z5y)P${lkPoNx6zwa=|R4w`!5oXNAh(Yw!8dtJ5_U;OvLKLP*>+)lSv! zj&M>6dTogB@(cm?^Aa_OW_VIAf--&u?c4d%iOU{SRIvAP&R{Fis@XW(k*GKGEl>70 zp5csfe7Xv1p858dsGT40dG8FZ(Los=J5M(?@cVB)!7R9Js+xzRmL>;uVswVh#QA@Q zx%_}b3w|ZwgFbY9Nt^Il%CuaH zWd8&A)d_2<_RrKY!BjdWyZjB-J>sDz(wLjz`**VQFSoM}JUcP3aMl7>jiP~);07+Z zi*U<8loIrN-4qW@7={C~4oT!;M5A1${<#l3=9Q2X{JphLw462LV&t=chQp0=Qi?G`c$)1)WVC0#^YU(M>O1qDsQ{`_ zrcXI&w>RD87A^jV$DivJ&MDxo(tztQ+S_;#2Yf6qqax;Fv~SPUp2$dqjHo#(&1dD0 z={c0iY|e=VQD3Fu6W_YM_Jy~RG+PGD7oXkC_RcRIsgh$hEdchn=q(KjCMQyI(v9dR z3eCPa-Vr)%mO9_*`DH&^evjE?kjh<#EhsT_%3+M37V!8gA}Qk55(-N1v!{;sERYn@ z-6u*9$`9oifDFkcLG7r6*((4#%T63{6$xxugo}6V9ctzDloaep2rmKDqs~N#)}mI> z=eYkoai1|f+(%_;LKv5h1!2{6(wKN$kWqyF^f{$jF(fyf>nxPh^CERo}h1Q3**gmc=ho#~j*)SSIFA zWkf&t$R%0Z@29&9;hv2asreQDR!W8a4zY#^bCNcn)s{nx4FM@kT%6Z2wCS|1Y}U)%V54BqaiFhb7M0G8Z?5FL&nd4k#_ZDfU{1zOAzP3P64G2mn9k1*qJ2 ze>~K~Ny)G!Ms7L+&r)?1>J7(|h_P{tQ+lgC*H~UD+B2AGh>CXGeTqwCw~_vW&#ymd z%BivuS@5yu=9?hy#P_tw={t>I57rkhE*WCL>H-%2~qZpS{O(p^~aOL z{4DgL@$5PKaw@1b9=>ej7~a;_2o}%_vTa1tX$k~eJ>A}@l(IfgJ#R}PJX0AcrDk-J6$aIriwVWsg8*MZ zVSr*zrJhg|sv|X{tBHXH)0p+S%6A3Ll|w&;xld>%YFHY4guSiU+A`T?(go3mWFx`0 z(+vR^YU`8d{Ju4=>>=0|L$EqeM%)5gfdn_AyI=BKT#2%V ziJ1rI{C=P2;iPUMpQ=y{94)Wtcb|{tMo^jITd>qYJI)Q3&msQYH}+@qku~SirE4!Y zv_cDDqAjnIGm*xzR&?>)q6eN(o-?0imw?uVraBf+9zn1=xi;iYu@!<4$cD+NtN@>l zi@xs{M?N*I&wVgjr9mvWR+#?vnonGa9eyXCVq%~3b;i45?mkER{d0PyOxGY|B@fiHX?O2B!yPmAKQw1&h{IcI@KXBnR)m;{UZB4!UqKN{d~-CM3w zsgHGd$dfWXDOL2x6s)!BbH}N#L;qww<&9Fp0epIh=i<2M zS)M?kYx$tD-P%a)?>XHY|Mt6Z(Cvqkg4|@!nBW4BULhci*_*DQ_F@q)=xS=kJ+8B# zpE*o3J|X@1mzN%{REQIhX&n{#NYPBFCF`tdeDG!5;OjEq09b_iTwKEE!8bI-_m(Ul zt`9Hci(5^OfYUT4Kcyq(N}PCado1S-{f)hzfoyfvg|2p3d(;YQuZeIogY;GXp~G{r z9X}7SguMi7si2j!RGN+_86GqX(i10LLZn0Je$%9#xAAg7vZ1iYkQp~82WKFGBr;3f z7Eft_F>b7vlLNau%)goCsnOFH_?=&WQ+hDQ2h@$iGVF@R7l^zT$X(I4LYx=WyG0C| z)^Dd*PU%1jPR}Cx;*2a1TkrFLSrA#6=fc6)N5pcNSDawNcuE-z0D^(SDI1+|aaskh z2X!(U^OG#BUlrj33vFGdou^CIHaQI!yG*^Y=9h?a;~eHTW$x50sqHgl5cv(|@Agn= zQkMw0D5L}lj&Wms(c%d}$Mf#mEvT_tqeQY0F(JnDR7EHcX?Ed%R7l$UUgh%bQ^+Yx zK2ar*=?{7=pX*SF`=7I$!3A)M8TOtts=aO|{Q2;fHAW{>C=@$t`6>w%M36gU%E}C) zs`*;N3I3sA8&9c)sdo{kl*8C+jia0IXbVR1Nmrk?Ff#C5&%5((#*R!JOu)YECI+x2iRf>jt&S5fvC=5n=TRZ6a2>+c*;rf z3oZW%%<;nZiZ%#LxI}?P%aedPwyiIp;6YL(={NZ)qflWf2DE>xj5j|{RhqMrtQyoI zC>hpO&z<*nMw5x?vYXyPuC~Ky`4nI~^ZzWSn*kP=qr!X>K_^p1^$l@@Z4DubUD4;c7-e#m)-EIsZk;?_#Q&o4XyW;`l=?fUV)q z6QXX<@zQdXz5$}tUIvvN#nU0s0{&k;@25}MSSVt42eOB{fSM-!8BzpT5{UW~jSJFd z%W?+_1nLMu0!YdwA#EX&({!v>+(jDWg%6Gl$pDL}Hd58aZ+LBPNs{wPxjnAXF)xU# z-5M6-7=3a5Ka0K~@vR#Z_L&mDI-w-FT)!Sa3L+TyLr5^&LzAP;2rqc%6tP;l1U%*m<3UO})EoZbECHkd@{4)E<`P zJKIeRI+iYV70=rg?C53%C2DimnHJI}Jt_A+n;_?1BKc|Epy?FQ`#1xU+;?2D@i2dM z@P0ZHF!85LhKRf0oT@6GO)6CCRc^+w1BS5o8}M{Bh+16G+Bl31HqpE%7_JcV-RN;} zTscx9nxt@NqZY^l>0gY?W4uOAlOr>$tKC@Kre>>U`E}Nd-qf#3KW_9FW2iTgb#mA? zaOxSMI5S>+W9v6C?6X+5xFAg!;EB;JjH17ov7H7QDFUF8(uQ5 z(O^$o%8GGYRkX)g-$He2)UfPztq;U~WDl)vnrDmHvTPr89Kk$qu%W5*Q4|65$j`l% zU#CgI2SOI+;z(mVYgt&iIq&=xYJBNSQ0?l9!RsDzVu=tpYmB4yUE+OM;&*q`b;F5A z=~MMG*kzMmJmI^KFkDt)iG{SAzpT8*zoq)$6Wms_#^Z*r9@m!bgphgc#fNZ_b0>Jm zbq!>y#?+u%Ac-I!_R)3$FpM@(fHn^q`BHF3RFlM>1(=mR6)?mw>NaQoB1=cYXy-nX zz!K$H{Xea6QGY1IgOEtm0)p1Wk#LJh?_c&9Q;UVYrN4oG^aljAvw~`v%)p@ofx8&0 z`7Zm?M+7iYr@wtEfbvV|0e$IZE5LBomtL0bmyiYeQh5O0gjap(r4wIb_HPAVj|)=5 zzj9=t$Q7l}hIzWKieNtnAI$vX1{Nb4&nga_K!M4LnMfqvrTBjx3g;E>)gpWfU~&oU z2*`bvd@uD=zyJ-FYyH{FVVn^naF>{qt4ZMsIIC!SOPi);@`7+0=v}M%hVP|M6$pN< z+*pxX&6Ws(+$|#hM|iQ%$dB3YSVR61ygX7zAS(HP-)AG4asRo$_G!vV>bKlDh1C!A zS&3150?Cc72z0~Y&KdL!=o`BNGSaIqE9z5`z~xJwbMUa4dv5~*iu4N+uQVysk;ymF z$6fQqRgBnCpykO~OunKD!P@PT^2jH?*^ng=Zp3P5TIcGZs}2+Q3#bQhp(a#+qlB9f zNCjxvrmFv%#XyM*5yMXejwIHGNQk+gOoNnGjz!1>=wPBN@4Wmj+s0WSz2O7Frd)k! zv)Xfx2*OBnb&kW1vRs~9e`0tULK&i-o$!U@8xdWdWz~mwVE>J|PE4;6=?@@y0Xl{K zpLbS#@;x_!bJ?4QRjcGb=1rek#RIhlbArz;>_WozfHJyYSVBESclNi`vX@y);OKVw zq%lQ<%wXV^B;+%-$ln>KdUZ|LEr3xb-{mX=hK832OJkm2PBUbHPjQ8qo1ld7ofb-^ z$nb0=hxn+$MODUDRY{%AKph)XX^-Z-2MaJPL2VO*jDqfhIT&i)*=ROMj>WIXh^IwlMfq4S9eUV+f~onY zLu)wxmdRoE?-_SkM<_~W8SbBfv=@-aSo}CjjWG+7({dM9CUjW2&HLi4M!R>LXIOXh z-eW-j9^N? zq@mi&kwZ1|H6L6c^9wT(Kbb~f4x5*@t-cz?C8qp_b7dHyTMWPc$CF_R5nYxD8q#uZ znbQY8FUjt9MUK9-A@C4+Yak#%*~SlXApHRwex4_*!_8TtqA37XryEUSYk+HX;tYX|$meN*s~j8n&-Ogf zNW*A_u3zcW3n^$z008+9CNiFYeCFHn!9dQBNk5gv3{pJ7VCUM+&)e|au95wxvfT!H zU6Oeka8<}V@WZWh`M?0q#>R>dVgqmf1$Z*S)%(qI541B)`tOYz07?=Dn<2_7D_Oj3<1qJNToyts% z0*CT}s$c57g>H<0*zC!$AK3wMRboRZANp#_(E|iVV;Tp^SX1D77jWJs6TsAar=_=gz`Sy}YGYxRgPWP1??8+yL@9yN8?V&vsS#I0LnW=`gaywGAmibC<2YJ=)oV1HA-yl;loEwq6O&^Q+D)v6h$8X!U z*modl-|C$*-X8>JQCp7<`Ahh&{5{z(eSYFEl%G&UvZ1}0MQ!)i12~Hulv9LYa`0`E z3JciutJq@6nb5hYB3H&K`aNi~sSnxf@HaW%h-`>pxa??7=K=EL)3+sqdZB{k?V6-} zHrks*+gZ`|dNW@oWZ~Y3fx-3D-mXreCuLiC8e*w*xzH7lRPa*xf%3p`L~5!;i>1>u$K!bK=n< zCz?7Sa^HVT>q^EX|2zofLxWARP;1$gWRwg^CHLh+2L;a=CNAL`{DjVE z90aUe<6Bp5$J{JOm>d0GzE1~-;!%9H6|emuCR*@$AVyVfz;+|Lku#xPtif*dadN*~ z{=@+RW`mluMBv&X&n>_H?38r1dw%kb7MwhykW+w3z#Y4h$yqkc`bHuh z@i<){Zwh;Ct7zI`?gd#Ba*!#pQ1~a`jT`?JX;oVPn+=_N6N02@IN4~W78X1Wb{s8K z6BpZNsU_V&5BNzk*wMbydnYj?5Rd%+x-x@G)o0#ze2zcdo9K*?q;34xNgZZ>3SF^_@zpN zpY%A*33=aOzc;#ebjaFcbEinG5{BGYT){jtJaAhHy5}V=%eZzLvyENWefR|?gZk|n z0uP(=ddI^fVb$!=z6jwj@~cxCW9jWLFCk|Q1CXawUMoQdLa94AXK{w?)}`T12n8gU zIYL;s;geUbWOBizr_0<<6~`+yk5A%o%SqAcvdC(a6?*VA(Rp(_ZjMLwRXG&79~d!g zF);j+$J}+hjvTCa%J1FDkw>dQEtv~CVwhV%UC3OJ>uGmGE)}$y7d%)e$+6EF<0-a+ zC`u|{N&*k`VwyA|YgG(kFK3`!rNC<9J+f zu~`-I(cb*|*BAHZOKT4%0uWLk9Fgjo=BHc(&L*R6$@ND^1cPJ*0g1y)@uA{*q%h8s z_{8vF(%)hzO4uB+$)Ei>PQ&F4J}oQvs?%vA5ek>ap}0B_E%IUlBTp;FA-F8Pb-N+xd(y|nG1{(qxl(WR_kBFY1gRiA9D=hiN4fh`% z;^y~Il;j-5X$7OP6^#3(q?d$CdYdGJ1S`uyRC>-5!K%8ycW|lfT-mT-yzBhTR`lr* z$Pw@;J5*Z;!1pN#7Aee7KV}IA({apFiN+?z^b^`o$!j7`j0yQ{u}BH?Mo0wg@RUe{ z?9OWk&*}mSN62)4x8%8z6{z~4PHPmdU-K08)HO)kp6xt*H*$MhekfGT>#aVn?^Fz7 zgO*zU@Sc5QeOsrYrKkecvHrZ8YW>05FA`goyyu%Vg_pq`!cJyLogN&1BR-uf-bJV# zXSNs5$tHQKin$WOh>wnHR_D|b4F+^X3R#K{P_ZXkDl_Cvc~I;`T<2D@4Ce*Bx_sNO z10aImd{P(n&Dfb?=OpoNStFm%vU(w++|ffg?1RfM*B4b36&DCT%Wg(UliM5`2UJ7s zK6v_$LVSJejj=#o2=FNN`X=^%;f_QGmj-;tLO8ODUbpC{!YYG}%pzXi%lf5X<-W2$ z?j!E_9&L-?yN2Zrz8+(&3z@Wnsr+yt5Y{WKFu>@1I7slJ-0{J7ascMnuWJptxHeNI93$Lx>ih%Iy`&OFp^7o2?6Y)iU$d-8BQ`OooDsF>?~unCl= zOfPscp0(0pp>y`rOs6IK-eRw6va9FI*He#HXO(Tee$}>{oBaCDInA_v;7jqCc6V(e@f`>E0wVdQbg{%XUuTc=k`YHe|lkqmf~4HR-94I`Ce zFtKs9FV_Wlv}lJ)V(+(=MYxAdG^G6qd-}O_BrIl(d0d*hLjL9AoPESsm%9G<9rpD0 z(%Mx9X6`u1N0d{ie&@elP3eE!sn(ILD`bCh(r$CNe*BU8q?vGPH%4o^;o2CjkvnJV zn-02)iiZw7C9(5Ds$3NQA&B1sC`xAuct%eZLPnFq=ybV@qM>c9!y6zn`oZF&`Hn!Bf|a&epD!;edQ2&>-T&dUci_@15}MpdqtV z&qJX^b>}{Lx>>rU)^7jjNS;)?g8|Ds9CPy@Jm1-{!h%BlD3|{+ceh&@ib>>=rNF?Q zuZ&Bm%YwR(60|Hh;??u5_4Ds(YtFNy5trOJp&ZnQw}F#Vt|O{khx?xj-hYw0C)xI;RNEno2p=_?UM4)jtA^A1_){ zp@HDN2)Dy0C8+W{_Y~{FDa#y>Iol{zpH&Hf$NQEOLm{8}D#W-O zTu?Btf;|hwMP^ebLG5cF@n_DhMX)QBDJ2@rlB(cX>hnl6Ll5F<|L_Vf0xeb z&_1yy01K{1BaVsA_B*`0$}r&j)Yhex)9Z?SYI8O(QEaX8xGk=-x>j$Wtv(1URbml> zBOhg59`6ul_y#74i>$;!qL{!+29Wh}wBPn$ZK+@Vog>RZlURQ<=dpeOtr9QS?>FYx zy7LXhqf$HOsKzgm-!;`asfM%a4Cq~Y-eG*!PV$DM6PnLby|`&75Tn!sC0n9 z=OE!k#`-Em8 zHpO2e;`g3JjHHue5J&uFS$&1GX*d&YBDvkdpA=iRaL?+H=F(*7g!XxA{5NF?|9?}v zWT7ToGc!AUH>JdW3z^l~;kn?{OG3wCrSM74xBBs*N4R8gGhP|M`IML&q#)D{z8 zOy(u|k2LHQmDDc0nCd1tiV<7&Axd*T?mKF*+@m=iBp2g$|D$>A_G@Oc*68qIto;x7 znGVBW^77(7h}IeX9TpF-_tL^sdM&RWH|z{{-QT(&ca5KaE01StZ*_FJfXH9J!sZ_o zp)@o0g}2npLSXxqMYma$k@ofDdK6}PnWy0+Zgh0?{y29;fq>W6>1X^T?%i4G`$5hzJp&_s+nG>0HuRJa0*HG^qQuckQ&woh_P0E~=OC+@q3i^& zCqppg{ZQZHNnqD>KKh{2KB3keF5dZDP>;1f1i4e*v+=L<@knf*HXKI$*!5}wVCp-udM!AyTLy*9$F|= zj=)CcVJ4a(&$6`|_9*Y#6lh3(DF?ri+WTj><+3}xsYOpwiiV5UA7!0Bn`%;NLnK{( z`EkZ!7(aKX_a}&>bO_=*myRpL;m5swnitaIqINB=(*|EB#f)BxOn)vP6hAsRaeFf&29>TXoNwq|sWh!MP+N*Nv9;M#AgdECMmwo_L(CZ*tp9E@aq|luEcYl=%Q0lSU;irT8WHO0AvTi^?#2%4FTd{6_>$8llCQ^;N z^+?trV~)cW12#j)2O+_|vl`jwaKvwO4ej^!nW6pqP}1R|mdSP!J+t2<=`a)b5S!%i z2Ul^}~++JVk@d<02D?%lhAknZF-K1D3_;r2@E6s&O;LfzHPa0B-MYK* zIUiAshwG!%Ds($&?717SLtza~RG;OXy<)FY_?)q^V{KuiNrrotNXOMVi`Ryc6Edpn zaojF^jE)nz-)@c5q{$b8hv!Og;jI7$;xoO%&0UqQ4!6($D9_@yf`c045nsssMuEP& zktI@C?!===!fu9|jvf?fvWm63%=m#)Zq0Hyds|1e+5&P1vFRD&qJ(b`j!(&ByFz(4wfL1u*8< z^2PRdUL@i4gEAis@A$njq5s=m?xZ8_wFUZ!eGn&=IN0q7ZNk;9>4{v(v*v__520b}SIm>FzD`7|1Iv422f3J@tQ%63851f#a z=mj7o+OTPSd_XGwtmVtB`iRip0;RuV{Xp)mLj{qC@T&NswnSP7d6-BWCPhrYy11<^ zX$ZqrtIL)u5AV>o-J37N`3p;azZaHHi36RTMH{cK%VJUz@))VOW9>Oq^2TyAW!0~i z6?4AJS6XA{n(EkIIw4X@AM-s|O12gQX;j8mJ3itx1sWbu+G?>G4Qf$&-Jb3{9o5(WCs@HE~qjvhn&SV7VSvljfo;tptr+y9d)wRt$kywe*C)!B zR1|TV<~}w57QOs1aI1`{OiLpE`-p#Ld}gy%jU;dpD43Io(~Q!H-<1Wdh}^vX0UzP$ zLM_}#C0864(;J?TP`Gj}-mRn0N|G@b)A#nqTbs+*&L~9~xuZ-I?#8#iXqdi5)Ol2n z_$=k@J!GfHc^HZK{O`0(>vQetX7`oec)8~yd4&9#JQ}gpX2cu3#djL!`^L!6qOv3J zckwZ5KQ^kC{zLoa*D! z99d{4ExwrEUnAm2WA!BVDPfmh=x3#y@|OotMml_viVD&8F-9s3$tf`l`L9GHOnEWd zx#TvA1=sc33P`ld9#`q!(7cJillSqC+TiiHAVcTTO;=|Po7S<%hVD;Ru7mKZt|L!7 z+UW2BftPK_!f(~8dqvCt5vy4L&?9&7run!Q2&JuzSylQ0S^_giEna>0_;e=faG zN0HY)P(Qq7Um_IYh-5~ZqEad1$t^f{DHFoqk_w@l&rz1}sjzvm=uUeM+uOcR4HB2) z+m0}Ci9m1JedbS4~F zB;ZXzj{z<`1oczopTdu{&eg`*({Di#2uExi!V2pqdhVrBnhnGrw$*u~0^e>9{neoM z<$JAevBmw9-OjCv)Mod7rh-Bh+a8WxJs#coum|B*+7{Jrh0AhLJ!^3v0g>?S-Q%vT)wS_W{PfxCMNcB2yBm#q9ng)n&7g*G~YeGtgMQz^d)c)jGHgN zfw5a2oU?3heHEP?Niu%=<}^=*%$7lu`q@U`ohpp_yS%?^+E9R#TZ!&1`zSjvFIivm zJPK#j$}=mRkuga~=Yz=-1ITsB*j;(mUz7v-mRko`t~J%UR-= zgjy_TecsoR!||^eo~}q4x3NZxNUFlt664iUdgKtM`}8|h+JW;ioK=p3<@_Sqmju>6P}E4I1Dz8|7}$pHN@4anwW3pIU;Ze&q>5sVz|7`v_O(%>wC| z^*>GNC9Om}E&V>r(#=X^OjodV*N7ru)wKbcEuwrc(mqeMe!kn#Dnt3sJ&veLTb7#i zk3$fSKBlO5dLJG%uo~RsyFc3bz9R%de35NMlAUl2!}*H>=q`WG`#7?EK_0N^MG$qGG9H0xW{%k*XGiCskKiD+5`kf$Ktl}0 z^WNB4l(!u_s+Q_L{h5P{g>&cxR>Xd%jg)jD!0zuIX3xEgr}=llg8hX!I{}aXv+sdq z`~~~}qQ&uP1=h!}pP`dt4b!{Ejnv?$0s7BjDE@I5-j&X#t^UknbNI*EXN`XD*lF1( z2mD~ye)KY1#fHenrtkT9km6W>g7R`%oN!;YcE%?giwQACZ9{JCLJB0Y;qLC(Xt5RB zP25CWeiic4$Oi$sqjl7e8EW-ThXDAy_q_X;Y}v%`^ZjRR@R%7WA~y&%wjGBGsV+|w zOJDMM@HLX;%XMK+ovJAQ;n_&7=n(O_|)XuDd7Zun{-LFj2ESZqexs1{naHtKC-zg&N<46^(vq@oID6@ zNHy8cb0mcUqy8jJ;~!T_7zhnE+W)APUaFb{0(6F6-2fC{X+lk04$U?4^#Sy-&(au;} zws_e`t?SU06jPyLtL#g4VYQgBoVl$Z+rEQ+Lb1W#-3oBp`hPG(NmT}Ye7T?GuH8w@ zH?oq9<=ey4rrQ2j^Q`VHTUT6kmL`&x)d6v^P6P!Cv0PT`Yxz!*^RDEI>3ja1-roe6 z6yqFe7eEpkH`HU{FG4q0IiBg2$})W%QPK(SYp;~o4%f>#iL4AG>9q<$B#^D-K5u^R zpzM;1adfS*&tnu}Q2ywbiW&Gj-F*)9Qq|M<=DfgsGA0{!`uV{1!Bb5vg1mS(`z;SJ zA8%wT6a^COP#Gj`Eo~@tBp6YZMB=p&=Ws0fI!?nJlz8ftooWb=VE4OKC5!R3H%IU(_2&Bj8a}jEA(~Ef`brN~@QjRl&4<9B}B>wdI7CJmU8TjWQ z^g!qnuqJ_-jI}0%`4+!NnvFcGpAv*c(Q5M#RP|g63@UJJ5kcDdtAupl&O!0Y!>c83 zU=;X%#0f3M^TDdFT#r-e)`Qz?_dM1NmD0J9xLlCW(?4yh(_ol|`9%_0DcT+;%8~K< z7GN#PtaM{+0XUi7Ax*;Z`5A16sJPuVF7GM(!Se%$8OM&p#54+TP*o+_oJr24r)I_Am+3Tp7ST9IHK%>lrAwh<{4fnx( ze&dd|6}aB}fp6KnU#Iwa`m?X1x#4|0t687@9>+d&K)qZ0s9hhe>v+YH^xj;^ic&Fr^@58l4O(`73|=~XP#bs`Rg&WZq$ zr9?B+lnrlB9Y+FLsIFgPl39%qw&Obv$rx#^r(tN_?<9N93rGwrGHNKlw$JIyvcpDc zU++}1-Ge>MQO{58RPi^`a)7-dwSKYWFXgPkP+*)Jil~r=9BFI~sqRhxN;j zwt@EpA}~uy3y!zVZkbpodGOu>{4pf_oeX_$;;y4o7uNu~kF@xsNxrb%S&#%g8^;L~ zYh`XrSXX*#cMsEzAKtvzN2MET)z^su$W}DIu}W0JW5J&z&&C_4x~roz=lm#qQ_}FE z1?t_!@1?iX6Z^>aNzdHm4K4Uv+EQd^yLvXta;siwabT%S=>9+mHx)saQ){{#bwtyy zE&PVhRs8%}O971%DI(0H=QI`B4^`rCD#!2GeYVQ5q~?wnlBf$Wxv15%S}?3`eM7{U zMpaK>@p-G?aJlB~Q6Y=JHna;LOx7}uR2_79^`LxWJ3JZ+e^AT?aQSeN-dmu#NV$P^ zJnRH=l>Vwh8ft>#h``|t+$(bphE%cm4 zlCcq>2tZSd$z4s7QR3X!&J8Ik;YuOJdLbFf0XVs2C=I8C#HSw=7)vR-nxV`_D3DsX zX*9^={sEItDjDsce`+1)8$@*W;kY#9WK0Wccu;`HNL)F%_P1f(t9?-4`j3+b$PV2o z(n1mxFwB7`pDonc`Qf9QoFx1OSQqf)b3^K~iW~GL{^NQ?URL~t^gpjv-vM1MmvCNH zK3ZsCtA|$cQ6n{}2+r9eP^2D6eaf%k;A0X{PRu4?e&^NXIe!|G;Eu7+_bq={){9n4 zM^1{BRo3;ZTpAe<)5{N~4e18OcqwDm{FX~5r{i(B12`k&4nx$RaG3?ajzuAIm4h%- zJ>#2An|=#>2D9`yPbCtAxa-z*BOj@Q`Xut&_ zZEE5pS&e|88aJy@lir_6D|Cf|*Vh$OmjMGpQlwz&@W@N|78n%R6xW2SJrcqzm0S-I z;))>&qE7X+WjR{>DaQHK5!U!Ol3Pg={oDOuoc(zVojh`R|GLr1wGw75SEaUXDOJlmXP?V z`|^rmj2We|9aSwQ5ruxv`|&}A^qSm}R@>KtF^e3>4kY9PGT%Mtf#C;!q!F{oz)KfjBJCM* z=W_~RJi(Yjphg4DB;M3sza#G+XD0C_ry4PP{qD;f3uBQ167V}a2P^&GNL;=H7v$_f zSS0&y6dl1L^!&UQ!HT{Mj%&anE;x~TL;Y_C!!}rcIKNP9z9yQV`x}4-_$NM_z@a@o zDqr;b(bn)deDGwmwBhe3l8VO-qVy?<_I~TptQ!xj-!b2*%u3b$uuh)s6#iJ;d=0M9 zoB6TQgjLO!**2C^E*H;c#TUTs1cHI05q`)?6W`1T$D;L&rWmyqcZ(}ZVHi6b^Vs|{ z)H{c2#bCa6sC06;y--+P+E3Q=!)IJ}1?13g_13sf8gD+dDT?i;XUW!uIgf3*IcW2$ z#9qi-U(im1gP6^`iQc-vaH>l*GZ)wf+n|9)>^R=QnDd}D7X1BN^hB?I^qU?lL(mI8 zVu#h>4GZ&-;ew+&NH&EiC4sh7)6FkCYVaGk^O6?+`2Wy?@7cnY2&xHA5FGk&MWoZ9 z6#v*SK^XSXM7H`Of%R$kh9b|#Kx$iUcC06H8Y6Jb-!U?jlY@Zf@gaUlt<=j`kZ&Rs z4xKVORq(;9b6}VZHJvRbtB!dC0b#oDSQD{71ZFwF)!6-53JSb?$zV7B)lC1M+Ycf4Ympdj=_LU;M#g zfk7Dw0Vvy82Mk_7BCU}gtfQ)k{2wuS9111?cE4p#f5KesfWaDBs?%x}Bl;A0Pe^Ua`4$(Nh*J34^32~m_)l_`{Z H^7{V(6!1pC literal 0 HcmV?d00001 diff --git a/doc/mgmt/gnmi/images/get_lock.png b/doc/mgmt/gnmi/images/get_lock.png new file mode 100644 index 0000000000000000000000000000000000000000..632aa4adf38d0a4b2e8d0d26d5afaf472bdd19d5 GIT binary patch literal 24758 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
`E*)T>1f!m4nB=naU>9h& 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 literal 0 HcmV?d00001 diff --git a/doc/mgmt/gnmi/images/gnmi.png b/doc/mgmt/gnmi/images/gnmi.png new file mode 100644 index 0000000000000000000000000000000000000000..66a083a158ebf93e85c38bd8dc441d76d01ab5e1 GIT binary patch literal 32636 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%0Ag$mRRBt$$$_CLfv>MmJ5s7<}kfyG^zM#;ZB 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�W|ie9yh0R3@tVn#(bnk*b|*bW55?B&uHhR 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 WQ*`~td+?j9fSk0lRQ_YbKmG@s>vP!v literal 0 HcmV?d00001 diff --git a/doc/mgmt/gnmi/images/restapi.png b/doc/mgmt/gnmi/images/restapi.png new file mode 100644 index 0000000000000000000000000000000000000000..ca1bcf3253ddfbbd542294a7659c8461e433d08b GIT binary patch literal 28816 zcmd43byQW|+b+zbD58XbpqrEyklM5e2$Iq*QVMLkQ(6I)?k(Njl7f^-Z$i2Sq(Qoy zGZ*;$-uL^)JI49W`2IP6I2`O)YtDP#aoyK_t?j2ECxLyN_%<3E8n%?As1h35wRP~1 z;np?qifuS!82IlWJ0%Gbw8C!EW$*{Ok+7^V8d`D4ozpirz~7kGk{WhsXhgKozkj5Z zXg1N%tZAi0g;n0_tkniZ5zf~x#tG4yC1~WkY79>_2Qm>a*urY3--t>CqjTLoi67#` zxQA=)E3lvbPZ)XMNboz>=@I`nz922C-t>8z-Pf<^Bz+s~>B!iU1EL{^cOSmJ23IQzK2b>` z>a<~!)=_liKWN!ucc>S2-4N0p&%bIpwd(%*X0Y;=JXQ+&jC#wLKm*uMcy8@h0+|8~ z?cJ-xjf;)huL5jq?`54VNBZk_crJoM^CiSf0*zpU@QPZ+L_FwoE0w415(kB`)iXI( zR{Uk%3^#oY1mL*{^Nw3lHtRu$1Kub!G?n*mbyHP(E&4(_zwe=mY~O?ZE=c%_Xf}kd zQ0aEwY!pCIbti;U%s0>uwgz9Q?M>3Ve9QcJ(P8ap8E?{|&m0$g4AJSDCe)k^2M1Bf zW_!LMHoQmXF>q8#Pg4}u%c3uMcEFhez4^AJ=%j(!i9c!2XO17ffS7Z=!05ZpcpdF- zK($(@o1WFD9btLNI%<6#@wx-ghXv3TkyUKA9t*V>Lr0PH>9@kdlD6$+va!&fA%YX0 zx}21lbW1#i*5?Mhn7r^&@q%`>5cKutx#gbuB6VUY)tn}7m)l7j<%XvSqc8#ujd5pe zy2D~BY1XZYK*>Oljo*%9mnf49*G(r_Nh7$JM&*#@a=pjn2K7 z$?H@WT8`umlAGC;@_dq{y^F+mOgrupviBUfq}hVbc<%jbZs09{wS)5Uiw0*@(}QP2 z7IZ3z^IyB|W6{^urD-5zlDEA_Nya!O!u=FtJeSV*zg}z&VGFsmnegO{q{LvV#=v&! zQi3kdjBv--WF>QPIEgyB6u743P9yE%VRjX&e&|;Dw?H{nz(j>&YjCFZ1{+VzR zkKG=yE;YZ3pV0@{?vHx+R8}8qRG(4IG1NLN)nBasu29`6D}8uI&GH;4$ULt0qbHAh zN&ct}aVfQ9n&rou)L+?Q%?R3WzS}$&977wge%nXzp6EGhg^H18`Po^+@2T8Gdx(2a z79k^jH>cI+Nwna$!rZeYTLli^2wSteDaEW_?3##ID6SU<2@4B!N5VeOJ&C+X)NFKD z&0J?m)^Xq}j`J=FUht;xf7p(_0e;Zx6 z7hXGxccK?;y}3eRf$NU^yTwlEQ1QrQj-1B0Qt6J(H^tVL_9_UgO+<9rM~n?)gy$$(8Cc~mN*<}69_NJ{;OH4OOWILwHx~%i% z^fCj|HLdab^(2x?P9(k>F&gfEU^xm-2fjM$oJQInMM;_EaMzm~}_OIGGZX=2zy=4!ktXf8C+GRw$+DfqCFjpQFgId8)irQuNv=lysnQ&-z7^>a9`GU&ua; z5>4XsAE|f^?cwF%9#8C&d++~rVQzbo<_W#EGXBxcv`_Z54mIBGq!GM-27C%fMU!rm z``G?__1lH;DV7Veay+t5(+gnbok+Y$Pv5N%^{M=Q94aor1M!ZzsxvdR^ku@}nA(1R zg0$`;hI7KWgesTGjegMC)6yMB*3!oM|L4fxsJ2A9d2_Vhh0O0pQP_C=MQGvy z@hrNqX&f?aM3dH(Hja6V9K*46;sxh%6~)HE{sZez5kqrejeqS;;j-_euieF#)ru9VTbtYjl7(IT=Xv|Z@R-7uybN2{ zRGzvl<6c_5BoDslFX>G)b1M18`?F_5nQ;;?JrX50{Lp5M9)HxZbnIpVn&}dXgzVC7 zlHpu5*>IYGOUFfHRDP}y<94;GY#D4}#5Uf)pF&5rOZ?3_1EC;$EsbBiHH&9$pf=|1uo7#Pfv>YDYks> zQNp(or>++SN|<0@cLVCryUTx4y!_*aA_(7Ti;fE0IHQofjGM=50_ARl``nA(iJ@*1 zEj58|8yC-BL59?0cXKnIbh5G*T*7R3vee~X8);9Qym(&*xn2{(*~x6Ukha@MfYLcA z&=IyXxg^gH1)^4WqUVL?8jnpg7K4aEe2208(T#d2mK1I@wtiYaTn`$@DX-iag05wi) zo+8GQiBz*1;tl`~8O+p#|8ohE-t(M@85>TXSY24|ts>+n#fYO$&d0T~J`C_UIdzAJ zJqF(>=cy~b4i>{k$r2dvIa~04Qaeu4yKi#mfMY$OWTkyxjz32q2WKrRY&B>(|2^30 zGnb>@Km7L{ey;JKF4dZy_rKS@=rp_Wx0liKl6WvNPcy>4!mqEl{?TX7_K4Tn?f$~P%Ig)zzj~&pmFL z6)M;|xI$S!+T)YFnvJJ^QXICl#lm1{dLp27Sq!Z#Vy1K{QRZ#qo~7iGGK_UET6b#+~EH zQ!~wu%`M$eEL2Pb;^Y1XwA($M$C93Y%bB>eTR%15L*9kPklM>gjd#bU8yoiZt;3XD zQI6=;NKEo{6-}wHK%DJyC#FUI67865mg#G+tKG&X!&8PUqw_RtS`nEq%>$Pn*sy06 zis=3juTFtGKo0)yUN1Uwi~Qv1==bp6sGUB2U|>|_2^D{-NPojfh;NvN{G%~!WX_$d z<49L&d1`i#W@P4dH~Xl#UZiAd)B{)fLrj)iToB}Y<}aCoT55cl!bt5~XMa#QkVUg? zXRSkTFPx2iWv$z)nG+va=T*egBx@&!Lyq+Q~ z7x!adEO}+iXkYm_r!YcfBXUStq{2E{>V7e4QG3Wy-Rlh-Sm%6W#g_3MM&)MjI!LZ6ID==WPIYn6A}VLW7C^gc8>4xSQAR6!K~FCd+490-Zz5R zjM<$gDXrih4veY$~}jelh+J7A;6(8%iHF=0-zlTR*w-pd+WWs04acmKIs zcMRk8Beeg0pc%)b;sxzei!Q4Cr;IUTE>p_AUS8z;n*WnP{6CNC&Mjq$lj9^;;HMkx zD%bulbkm46@89f@4F7xdZDo)hH~x68@5T^J&c;4N{LLU?CP>8_c=xx+htV08uQCEy z2r}m?nTSTHE=(kKzXc7T-eRuG!mK>2bPWbk3ZwF%Bhg=fn^iG9JS=L)y@|8i@$){b zHWW5oH>I35UO1~&^Z7oP{7Lv{T*l}~LtT&8eL+v3peS4TZ@1RM zGFPD^yqM7LpQ~;Yu1`M}Hc9$>kMv#RM5(T$67{Y;1i1OzkhACxy&0Lek(x;EkGX+5_K$Na z&zIH)vP5)Kzg%52TnV;go^47h5dE3&RrJvGbUE3dCb;V0W4+ysIWzezcF#$DRm zSIM5rf|0<6Afo9H=SS|3F5eq1r?4u%yb5(cT_$}wv;;vr5lyd21xwZW<2#0UMnm+H|Id$sjL_qZXO~rWz^lZ7 z637TjNqp1v=$uSuQeWs;Wl8$pUzZ|Kp*wVEYvH(=&w9#r=Dni4-fdyAy5recB>Yq= zvD~8F`gA~XC&M{g=5J{O85VyF(=JtlRD|}q-jt5Px#hbxp1y{+flX#)jZZWF;9-<- zwK+2Etn?{g&_omysAT@Fd$I~JyWT0DduX! zEQS9~tH#}k`WaF~I`KY>GesJVR@bt{s$#2OdrvfYd8{xJoDw(v{i}p*9E^HIbr=66U5RhzK&8yH$sHt=ng3K$<4n{u!K>{0pQ8Ie#X2aPpcF3s z@$5bif6#_;RSjBlu;!o+>;Js2|4+C0{{Rvcxag(Za9L|Mf2^>Ji;JfttgRK!$%u)! zU#S;)%p=vy#Q4oezBIU|h6TJWpq)!e4rr^_`Li;ZnX&8UPZU9J$Y61n-_rvMWi}Qo}qNHnRJ-j9SOdQt9 z^&t878_B&5d2>yx%62{@N+(=iyTObRbR`Nf_6J89!sacmSZLVP)r@w($UJF}E`iO! zbsOR%bwLkm!S{-=cc`TcS~TNp*;wd&PV1!Li`4ap&8#&^Xvqxe$_T;p-R&x&ge~&O ze~>1e^zw;r8TKhi02=NFpW;uSp`*#B_cDT&cs3t%58||Q@Kb5%#Z(nz#Hx-_vjWi0yKM1ZJ@YtDZ;|3#h?B>(K(& zcw$4Pq$fw{SDD>oJliaNzf3zcNmU}<+ugKXrVoqaqI{T!g4pv3b+6-cGA?b!17R|N z3>i1iHawF`rO~8%A0qMc6b7y3aFJ#_ld}R9Jy`(3xrDU#>{%=2@Qpa>gPg=NQG_1) z5ReTVW>i9NW%bbsn+|2OqkMOlO7|ZJ-z~m1Kz5RdrE>H8Cy!nlG#W8tm6o;_UrIp| z8S_PPQh+xw7_Wyu4iapb%l^29e}W#d+bh0!P8U?AGoqntOwAb_rQ;%1Z~nKuS9W;l z{`#t{q7Q6r*Sx;WK|hzmZ5p7bLieN-MbiO!2sgD5Sl6uiXi4)4CK`UK4dbla^FY71 zfp&udiZML|GV?uR3NePMQ?Z~&2yAp}N28H@UWCLm^!;~96OgsOMqpSNT6-l1s3C{-4==_zX6 z=Ry-eN8{>bVY}V7u-|O9ppJB{=TUF9WaDA2nOr8N@1~Q|aYF=@ZnerC*PWuRfL;^ z@H7YiQJeODeitts`xWnlnnnz?P)p);IHI%9yF)-$*ICDFTBP248>$Zm8eKz3GpyJY$kov{paGqX;D;E&+ z`I8Z|>vmyoiNWksBU-!|hpF=Jg+X?w$Mx;pppf723QY2|AYSv^+x}mu1PfAc2XTm8Pi|qZQ;)uH|WujG4 zsEV2^yAiSG^i8i!gmo!C1>p*sY34>Z!U^NMlr=13g&k(^0PHbhiJC9iO=X>J-tlm$BBmYne7=S z&GZGS`2gn^OG6li5i_}^3`#cTyOw~phgGKIIRjdpbd8IjD2E|;Y2xiqu5QfmqUDuyfWVah6r6P1E_IB^iD3yVu&#@)2u{G^J>lZTvo&3Q^mE%WV zDAK33i$)u3xzTA9=Y5)J$;%-6&`-{(>9_bq#)z-bA1zAoU%y~Pj( zm=0hXudGx{owsKnEwtU-bvgWU;0+ovcajnXthXhS+`12Ng&R$>QO{T~6=6pX&R~0M z;T(VJ%%aTWTf2T5c#S$5|H@snV8;C!J2_KLc@fsNW^%Ysy#5-$(Cw)G6UBw_`5t*l z@xh4DavZO{;pR`zqdv16#%Q3a50FQ&cy9O3aP7#x4|6H~a>CtB5%w)>V>4}r(~ctE z@a8yhaow@fK@#6kIE$OhkjIIrS#;w27Qh?0P4Gtp#%D^V#kZ;KphB|N<|7W}UXa^s z=B4;IK8B4IELOZCs0T;GxVZ7BVa~H2yr%^VS@bdXZErp{s=V9h1ErNZP5D-X z9bv@GPD6%Mm#fq2>9`KlGXaPs(LyT5{WjB=52oAJ0 zHVb@}t`-QqmBS5aKayjMdcDr=ffD+SzE4l+{z;Ce$$%HFkB<&tOk84-;U<78_T>4U zLsA+J*I$>YikBL;rcQTW3>-xe*>^9EjD17sW-Uue+RqUfwYNAM_BGG7xEA7xaqBbK zAm6Cne27hx3fE&hKHACq?X9CM+cwkg5lk3#n=vhH3iw!}5{gZp)?Yp1b3$#nC9hq%DztBQddSgDs2IrLYl2Ko29rvGD-*rj%SH;fnu~_RK zR~nC&6e$mgYRz>AlXM>JKgl_ikW!2xuH2rd*ZOje?>Z6>w2lXRLQa5P*iRI&^(t)_)VtaB^`~Mt-}wh*TPy`8v=`uN(d$2Z(h5TZ zjB$MBVYPb5Q#)|Bn76wc`d!aktNG{1=G5r2?_>umLFh+gR;z4Y@l zeZKe%Q@O;EaY_kIca_v{8oe*L^thcICmu?-&)^va>xmDgUJ(z zA)ad+$D(}eK>Mv019&!bRzjL!l!}($T_b%g8?|Vwm3(+Z_5@TvMQ9Q7s5x-zyXAV~ z0e`%@VXw^8Ev%G>W8SWHx+e;KQ42weo+i9F|@Yc_W9(O3|WtW5(YD*K_6nxFs z(3J+!(Y~7>m_T=@i}hkt*H;7PpoZ725>RtaTYVplk$CD4czdjf!rF*~ zlb);ySm33=ZPcj7>BgyhAz-_gLR0x>>nq~{rxpSwMt^s6Sl)JgQKO0cF6t<=V*K(x@N|s!)ec(`T=J+^#*mTT6ZrlGG41^a>3S*i{ zY!B$4bcu7}5F2pRRH`5U&=`vfgK6mNa_P4B(uecMVHq`Y`jN^p(M;?C7}VUe4vdO} zYV*-6>#t1>2W)qLDEavZ(=06K62l$NY25vI+3A1e`j>|Ls_^S7soL9$QSDP}W;n%5 z^;tiWuQ0OTspFSrr1FcIia$&0eq-N%GpLf2<8 z2_fV3Hi5^N&{~B`1(Ey8&z^0ZfowNLlzZ@x;u%=UZmx{|F^*8~pt@e+W~lF*2PC&V zNHmXk_Ap%KwQF5gkbH8k%}ZT+bSsbW(-^{K+%kT9uAgZFCY*_iGiV1O=@n_fhTg9C zF!#UxR+bjn-&9bM4B2ZZkP4d8JMOvFP8kQ4qS+{wYJ6e!8S}uDkAw?I`@GH^rwiM? z+$g3`9xG2z;)ds_?P?ka10*~)HrOf-Ddd6#2mUyS@9cl!B=;P*OP26-5GPMO8T1?) zv&!`3#vW&?cQJ0Qd=zNZ`g2V%jj!MJfb2pXH?2ubsT~5L|TCaUNT# zFgp<(^~rhV<$l?IQLK{r*{AlnL0XSvC{i_9e!23-LK*&TM&;}CDw%xvX_uaz4i|@~ zVt=o|C~bqV2Sw7r72(JA@TomqfT&}`-_k#ecDP~gdXyrct?}&WLvZVr>F9t@iBE%h0 zYA`3&Np^;ePNI)B$Hp%RINmqTxPI1%!P3u@*`XDO0wi4lF=O^#<8syL+D(%Wo?9?= z^5oR4I@PrBBlt~!WXg20r14VXN;8Fc{`M_p{AK8BW3lzqH&7aRp^-oa+nClpS}Kg; z>hMY-SvLRq(yavlTNfhOXeXi)WpKc>9UlJRop{efB>VmSkLN)x3P|<<8PUrF3Gm64 z0XJjHNkI0#+_^i8tWHJw46gS5oK%uyJ`f0esE=B#g{?L+izY zp9_afXfWf7Xz^*`ct>oAp!pWA#OJi)-t$0&{;3Fo)=(B5W!$Th+iS{WG)59H>}U{1 z2-HU9eWT$PrB@Z5`GK?YQlB(nXm>%!_QSt#c=l#}@ciYlqNy0;jObU7l{F@9He95f z3D2I^{oLx1Yv2nAftaGUei0qU@3hx%eZ{^|mh0j+Qi^w+YV<{ZqFtqZOs`OdDXvP_ z*^bH!Y>IzxyI|Ww@KRKHa+7n#88I|EK~o6Vr~wt*6J)YLqo<`iTOqA=Pn`gXJE*^_ zD}m@7CDmx+OQF8DyVF?2uS^Zt-nAF#cGTe>0)gfQqpvSh%BtIVk?K4552N?%NzqL! zc=)y?Jge*DHne1#D_MW@3P>H1^u?M z?y{>b84|Bk_j;)B`jWuU%;p$gOjTG)F7lSR8fq`c@q;t%{4gqz{%yI$rjM@~Wkc+m z)OX{S@dV4UtbETy0yj)u=?{E~$q`50d+6$dpG)cpDjCn^Nlc8+ro;1VzKJx6*j7XJ6%aBz={3V4KBPF!1U$SIQ^K2JfS8E@*o0i%6 zqF$ydzled|yAURkwU&D{LT~Ryp8^h5fdmTlg>0-jzsFik&;9WX5pXb++`9pWem1I^ zpeyLMrcCF1qegd`ZUFiW*}%zs&r{ox{0#uPk9R1$+T-Vy5$N4jp5KC{+HQl(-B-Ce zGpii)v;NS0%&T2VGV`m<`ef|@jNOOx2>^hqnMsqqX#mq&V<=ldISjg}Ji=%ArtZ)y zDvb%dlZxkm;%%NwQd6xw1wD_$^snO6%+kfF1JEQ0BTTO&-yefq>!t-T;NoH41X> zo0EWnS(p&|RVWaivqS%D)TR-12|dL4VT-u=gzmr&)skO0d}um`%Arg8v2?@Kp)-dLN!eMA&Q~S**LC+0b4y&g!RSs6K~=_>Hd#QXfKKI!cgP&Wwql8? zYh2B6YUzGCs~k~L%*AeSqWANY+BfKE3gqA-1hyE;s*oJvd)yh=?Bq#pmE5u|m2GLV z-N$=R8C>CqGl7cXkZlV&SfFDfy5HV)r|7=>@~`scHR?|_zr$}tBma@So{iOHl*%}3 zy*k$m_>$0-a&v97rud-t&I$%4Jco1f+v!*@Fg>{`M?q)Cupt8U2-}%US^-VYvm(?p z5Nmc{ca&;9d=-0;;5~mdS|6C9Z{?Jt&|!jtoPY^J$u2o?&!>K-?)4g*98XPc#QseX zB3Ed?p_AL{2--uJ>@3jp*W8(hTQnHpMeWrxscPY$idTOF`6vA!uuDE@ZAL;adN!M zY9pZ`X0-bJDxfmwKzsqH%b@;8fmv2H=2p7Qi()s6O$0-{{Kirk6=Rk2?>#y90%n&u zBw4Lvs~`1q_Sw@7criA$p*bEqXo@ zM|ZUVx_6vVQw|1H6o8Q>euj7`IMIMU4Q7Cl^FeBd>4tJRnh6@%02U4os{X$VCpKTJ zWpY=-NUkpa3bc;kJD0m_B$N5inwl`c+8fAZ$^mWRE(~q}c82?(?9(J6RHg_+`>z)+ z@A)1z0CqsI2x39z{Fr~ZMJ2|{{h(;=My-Qz*fg*sbSIfmpb56pKHad=*bcH1;8foJ znrF4nf10iM*%l&$rV0`Z0@_MSZfb;l6@P>URt{N$u6uN6={QL&Z z`}c5x{k@CY^1v*1MZ|*JyY(I^%gK#*Pk?c1vxf{fA50srKCuQ|;c7tlDkS>Vp>Mm@ zdAUjln!2uO_J?yCklNN%vl(z``|D!{Mx)<`0B6l#wH{pmg4=FAY27^Bz#wg#Ubiv78S)RUJ|p!FO{RnO_kzj;L17ahYXlSB;{as0;J|xG zlJlI$EuP`iBL&#I$h#ICZ?PUIIblR3<~z?8{8Lc3CJ<0Y!$0Wa6*J0>SoiLaf4o{} zF&g32ECVuE$k|&l)#Z_~m3$g1&?`@yPl5uKP#gU^a4UPgrpzeMRIfqaALx&lQ{us9 z?xv42+P#^p*+OEEf1{&fDqXK0x_3fLvIrxzR-x`bATVG7xp3^nI8Ujgv9$9|%oERW zyPg@*pLWce!;Blf0Y&Bv-S#-cz}5Vd!S$xuczGXPa4R5oBSTMHK(-`j2!c3oh8R4E z8V#@kIk})myZW>7D7SuW)6X4@p(lN5pAG=kYZvS$n#mmfctamBor@H-EXV2}D}z~0?U<))@kc#DM|vs4ZTJp9shk4MfMrFN(q z)M~MZ0UK;!fHY9K&8^THF?Cuxj~ib3PEf2PEYu z!&6m5NA=HEqA#lFJ)K@jl3nT4=Q`ajhix$;9&DL;vleY=!)z)fn-MlY*Vby8m9Bjy zdu8NL)h-L@joxxIzcyK5U8=$tLv~6t)q1s)54T1uvJ_0_hV65Vlm-ufYR&mhh3U9ft4+zCq$<$)Hk-;*!pd625&SPRQ! z0u2!o%8T;hwi)Z;9VgyxO{IVui|+cdK5qEyKK#$*WT|94oyCDi8oXTb8B$~N*YU3` z%}!%_8qYAi$)h=;x732oOP?GoftVW8V>y0+<|rXzgs%UkU#P2#`KN z{!M`)!2Scxsp{rIJ`iX{tpMV^Rg84ny{&?1gk^iP9tQ}Vg?@>EiV-lK;E{aHr=)9#Ga zB;NpXB0?@RN2r_Yd>3O&#{@*39q>Z3xBWyi9-vB)g@#gsue%ose4X3k?^>b-B7JsN z>Zuc=Pe}jE4hWoNvO5{^!DYka?y(xuMruqjG@~hko0!m}4P>y+Q1jbTzB>n^O^!twaBQ*~Xjmi+l z%awhfz=ocoXJav#!?~H#7}J&~YgJ4GJ;pyJXi`*K0AQ6q zLw#8SMn`n%3)U`;A$;|1$AZ8Dc&r8D{BE+iM!sGm6136igfD3)F3L4%ekAw#IreqkERT zFmq*yHeRm?jX?v1-~>;8VZhhjYIoYsfy<@W6pT&M8B)*SyO5*0fpz-|%FQZjK0l`Q zC#W9?TSy1p(RQ8WoIrTn2`#1$*Sx`y`>=nt_ufc#dD8ghTKHNl7(o6wIYx?G$lLF-|H7(|^%o(gpc@4Jl50-nOA~Rgn zTlz{)Y0sVSiSA6()rBMBaK9=6>o`G3;;lT!E%^z~N8h@hR8fKIo!iQ-io*kqyab(x1B$F32s*Ka zVbxv;d2X%0gSbF)4-{XZT+R&?5*Ue zFYvB4@b=45IUBYHrKQU%&lnJTB5U99y>*eF1v&w+Nro9j{a*Y3hVcAQCY|=Ar(%`@ z)p)0sqJPZF=keK}kfFBBQl{;rYGAbh zD|r>%1>KFw=GbS|JiJ%94N zx1}q0VskbU|FL4WoU^GxP+uM$t9|@t0yqBEy6c0@#3l5yhv{OndXLYuS`4E(OOz{6 zm3iC2QVfU+wz)wG<=ALUQlhESPSjh2R|x#DXp#4*&>wUl$kMk>MAi`zZ8K6xEY2+HeVM2*w?|BvTG1Df{B@{)ewikNtLV?;gL zeXBz_+0ZqDz;pNON%c{8vr6CzelUSgJL+w&8jN+tAVuP#TiESSVl#0SQk;HyGDJnl z_nFXn09EL7FLhURdEZJR{QS{G^gzR!U(1>9sN+vU4N;rrD$%o;PhvK-yfX>Nr|W!+6yeaixi@`H zIP(HMjI(Uj#5+!3irg;XYF2uYT!vxl$Ur;zWt_S?2K`ASeua5E`6>g!MQ;2Nxht!9 z67d>oD*W?Oq>|yyX3rjRf_Q@4`49IIQ;UkK->3RvMvIK)TlA6QwamKli_%ZL$@FpK7-+UHVUvzMgO76zyp#o zd<|u;$?|ugLJ!e1)xrQyJT(;m6Zy0LQ08(_4ahN&%-TB<^*=z{ULG%#AY=l{y3Ef| zx;f~H066rWQ>#IQV*Tzv=5xT^>#t^`baRX`z zoLJ4~u|9o>%XN0j%GIxcO9NX9%n5urFIp7G4heghxLLoO0Cc?8^9@KHz}${Vk^4Ht z{>}7YCaS}&IUE6J0Jboy3`2nDTo8X=$rkrQ+7%_A^m~vpqBO}zRPn-kjyDz1eL0nH7|`sSQx;Ti|p)j+{e_A#>Kqre(i zMJ3?=T(609STxLa2T4QSCy7zcKggUQpaj_ll92Gg(?6edl*#{vU#TiB59LZ-lZ$GN z!tPOKJ(e=8kPY)MUu~}j^ycsNEIo(nKMw!Bn3~-0OnB|kUA;!DXSC5-yM{8(zm73Z@-AA7VC>K zIw<%VYYmr{Ek&_W^hrV0D3owxt2;QR$|17tFLdWVOhC|S^`<~XNBjYS4TDiJ0?LIihhFvIu9G0M*k zO2iFcn)6Se|E=L-4v}l5`@X)3sJO~Hr+Lsdw`WvZ7hs9L16d+-iIKqnFo-k~5_6t3ZT(kOi1a zsH{H&-Wz{BEimrD2}oMgH+2WDb_ucCWx#!11nz|c5ALE=QVvW1P2$jx#i-0d&vGs& zw7pM$LSMw-^f$*o(oh0u*7e-IV2b$Y0X#!n-_Tuz`qi|rh&R>Eg_<(I7_MUdjmV~P z&1{TQ?9A9IAb@}bGG_xP(|y%CW_5r4FXsYcp-JxbC%ac%FAe>6isWZv*zr z;O6@4*juTrRP4tMPMf>rMO+fl0)C?tJTrWTple$WbLuqGJukcv1D|h1)T1dp>@1K8 zkJsi@MnfKT2NvC$dfR3ZCHhosI|+byVyl*$l6P575_qB8T+IF=TOhDLoDkmd!?c_4 zknh$Z7huqFk_)LJSezkOX}M5oo$`={5U^gY%1-4i3MF$if1igF5fDc0PlN`vCBvcP`3M+bw`BMp?SOu_jvzzotiYoXYW7(1yui$OAPHE= z`BcYu{QXUfGGbg}xJSsSPrVMl+z_lde6*lmyI8k92$Poza7KojyO?$dD)K1RJz0*M z8dW(Th2b72l6m%?7hCGaQCELiZs^5+WDz*X*P}CzYUQ7M1X@0bzXWurIJH-5QlJp2 z#|o5pBm)j69;D!>nFOPZy}&Y~v&79#dFm-YXhrXKS+)J-sN-8qIWJjDGwb=WA;2U~ zCGRXkpyI#vbT3Hh{@O(lO!p*r$!iOf3wI~KuJBjGMXGKLCnITw_M`F>mtgUO-Z=SO z_jzZTSXDzveJzGSONRNvRt5IuyCu>OwES-Q^>QjBI4gSYi6hcqdpd-Zxc^`oR84%X zd3ifQSD)%nga*qk66?xk(o|YM=W~pT-Pd&%+j*nVmBOBnAVL;yf@#DuD z3iZtb7D*JRj%hn0aw^8hQ-{KeDw&T7)MBhN zzMOuKdW5uT7D+2geWFMHF-K{WG@|wgX5mxM-+)hjr`V~>eb@C+chN)8ZGGA=pq>DU z7gD@272MX*D9_6r?s;@}I4@gLp+Mo^pQWdBKFHyDu{6aSbo63^Kqg}#9o}-iCACjs zpS1rFGjqdyyP(JJ;YL&c+ZRS30@;wxy}gxGdK=R|>WS5$l7Q6x9b*{9c~6nZCdzjB z)WdrD*Yq+yy;b7M#pbLKuZ`vY`BG_s9EOyAlDg;DW@k$J8J)f$GX!x8e7^8I*Os>H zNx9Wq^~u0dao%F{Mon*?J-sCD+(y(6cx2%r2bgWu-eu(jYCf0kY{t|NnMcE@>?UI# zl}tQFGiXe8}K*Uc2(*J^kdwQ-M5kyb6Zh6K)3&pBN^`Sdv!kIc+2U~+g(Q) z8A%Xpm>bBoOO^^xm~#mf&9OLbi;8-aVBT=UlB?T&v+9tS_C|Ec%@BIw(&;m~U~s zNZTr?>MV&%B(6TwRBGq0A@s1bSFMXlamjxw4?01B-QQt&dYgDb+BM>%yCE@$NssTE zrt5j#Z{+k+q|piOiq*rH%`);VrFVE5 zst6kXu2#rjc)FFZ(!8_vIlc@9Ww!i6q9(A zD5SGMPa>}N5Ig)>aE)>;bMwHnRWi^4W)-vR*?MmJdNI#~HZJkFWyERnmM-Di+w7@W ztsHZbsa_7P6prTvI?f*8@tLc9s9ty4G%@EkGqX`M^i3(sB=I5j#c|4kGR+Nz81YQW z4?>>*CdeP}BZT_oYtQH%U1g81A!8I2Vjh3$@c8H9h1>3^*iO!UyKri|WH`ZX#)x^y zyI>^WF`~|fIybAlkHeg%=R#^SC*GrE08IRRnT;)53Sm1@7$8H=a?M}WD3B7t&|?-T zHI;-mJU~92KW7off$}$$kD;swD~{=>-XJ~OjGCN%>U9aO|7pVlBaD9m`@chrX9x&O zurWo@&K2ZxS7RIlWh0QbrJTtv`hy2+-K~@#V*VS*XdYLe?Wck0<#9|Mp!}@x-%k_^ z81DQE!Kgp$hj}t{!Sg(PB=v7JqiUV3YPeoIo&v_zSppqx<@R4lV7UIekBS*k`c441 zWM&(+Nybu)zfYX(rT(T(l^RWw;sQ2b@Gp^+Y& zP2YUmH8Frc+H`j5Q~l|vYc-AYS)%TZ%b)V#=ms-8+s9yB%u{FUbiyo$2qIAKzVA3? z=5=eNL&14Dqfe=NPzMlyBz;}maje-9bie_ z^WRxdaG1_*mSwyl^inyDk{s<<7TG4b03`XJ$aY`JUSwZ27=RMZLeND7`oR^x%Jh$b zGHI*^oS{PknE3KpiB@$QCs6rQ!*e~TKd#iyk76Kmu>Yls1|$&B!_|PACye6%JT-T( z{xyV6w{sR<07+I>No37UYXLEJ&eY$WSXFx!J8UMaU)!G>x^JKWj6(iCKf14RR;PY` z6PmIE>|K?B44Y~Oka!yK+DeV7MYXk{9r#Q3KWX(fpvsLiq%v}m9*7eJAeX9~wXTHr zU@`sKB{yNq#bkFB5i%#V0}vtgg0>;hp887zx=ns{%^C-zUAcnn6}@eLak*;Ii{Ma_ zE$!mTT{CRJo?bOM7)a=eZZK(93W`5Yk12J_J&k4AlgW)O-AOlwb|Jt=`-H?LWDpt+ z6MBFtkCk}_*5%~vs(t#v9}Q&7VGm?B{eNAJ%e^C+CO(KtbQ%IEe5cx~8f+$BkrO=J zz>A%gwEfRzZzToY)}4W)n~;rTJX2COe5xuzfQCj+)a*$`1q)z`a2ea97|(j*qy|UPo8`Xoh%r4MN~CDllvw{fLj^RxLQ^?%v=X z{^+ZBV9GII*2Y&)^+$bf>l39^E&ef~^Ao&mp)`2Reer-`uHKOiJXY~yY@B+X zdli}yrEoda8RfGe<1X-!L&kOW+Yvypfqe5YEgLjC4FRudW;lU6{uwK8(ojfq$5(-Y zhpZv`x3Lu7u%wDZ#R7@C_i+s&vUs=6C7oV<1pN3Bxu{l?9#{$w$bt(YxV&NefB}A4 z>@3_Y^dk3+Kqcn!WCN$YA=?&{%4Pcv=x%6C;Q-_dT%A?9Eq-r9RNxvrVD_hUl=!QD zOoOmp6!=usSNT9uEp8DlPT>E(y%h%)DjB8U9s_3jOu}`(hm7|q4gEhfug^roJzWHN zY}$9UZAR%k6yk-fhC>$)}U+3Odg~=)bj0>9fdtwN$Fx?ptG>TQ2wT_iqKvMe{DY|G&Gr^}C1wFsf zY6p_K?OO+bF?@k?Lx{CsX1#+VHV}Y*!lFjBt9Q?C)Jk;(XnE@Za0hv;SvBVMZfp;z z5HYujZMtMd%XVK7IZkDMqlU&AOl9fs`t;Go`ijd3Nk0P{_UIED<#zgYmoK#omlG|1 zO#3FG%Oi|zpXnMA27I*gUp|^nZI#%30W-Cz#WxAaf>v&Gxu|vc-TG|#Jbu9Xnwb1V zQ($)#Z?TgwzKf>`~JULJM(ZT z|9}5apAt%Hgc`{*wkTy^E5+FNEm_MlmW1qEsHp7wo(O}+nmyUF@3IyNWzQO+5YFrN z`J8io&vl(Ye!ufQ|GAQxd+z(ay`Hbf^EnIOx#Xe4rz9Qbqepn8uG~BKOJo7c;fXF> z04`XeEN|sZ*n&=rki`C4<&rq%)o%isSE00%0m8N4^6xH$S^~SY9fgq9ijDe8uUv?L zv|*Ga>Grm7bymL7wT*WAtWhBjj)Xkos&prF!|` z&Vh#c_D)2cl1lYXT#in)f#|yC?C^LMJ7dD+`Fx|RYo0#O3!C;Ia1llY_SVDBOn(C| z_Vvk-Q|l?EI^G+AA`Kw{wSNJ3A^#FK$+> zCl*MhMW972wg&Qc&t+gEZQn#dh|fFi+gqp)j4|DABv$=AsG%m#u z*^CRke?$%i3*u?!G{tNmi{|-70xufzs-21V#9x0``s~uKJX@M;0el?S+vAM(HH^AG zCXicavi1pO=PcA|EB8p#z2d`DcDRx196GHGvfrrP&LI5x-$xHksVaUJ3u; z<9a}`?(!^?B48awpk5C4! z=$hlN7J2duQS~1|RzQ&4@&7Iq>)Sr?e#~^=?;mm7;G(8uuDkzgyP-P1{+`Qs3p>uN z*c}F$ysND5^e%?V{2pj830_kCp<9~36BAHw+?^lN+hwv5YnBQrx z{UyPSCu~q=_BvQ=f7IA0-Kf`DQ{<$XB+L1cHu`X>&UV}3IteBw^3~O+)i|qTjhD`y zO7G?Vr5Yap{GDdxsTho5m?+cq2U3zUj&5UehR!1ZL*KBW#^L>@NAmzdiAO8Sq5rGV zPWWwp|NjUpHQ3ZY*QA~R9N+KC!Qw9ee}Mq5Yvl3~!jVph8@~(Ph0t~~*Sz>G=n(T; z{tKqCO6&w1T1H@r%j$7bd3M+fa=3niG13Wfd}Rt9%Ye9;=QFNf2B1FRcOq}IM#6{U zcvnL9s3(a^P=aVkL(jOxShcd4-%o%!tv8#Ge6JkAE7Z7H{;a>x8Q1lEfq93d6?WrG zJSVS@x^X$eVUCunFaeJ2NxRH{pWVPr zNDz!zF414##vYl~>K3ccZ7M!J9x%(3&sRU^)BW_*xl}}3htuGiVsUYfpArukP0L-n zgs51cmzR^+G-}LSuv;g>!!OCm6a*V% z+W3<3S{!>;^o*{zWVV0-LHuqxkCfr4bTi2uy7yU3XetTp4vY%~r!pU*_H=@4RxDd* zeE$u~kgcIVAHuHGK&X&p(OFD2-!nX`r>U4YSjZeez}yA;(xGMT#bP8&1eP^JZasuZ zN5v1t!Ksr*J)#Yu>O0vQhyjNwJfndshR~#8tOA|_1nJQ?c^Bsd5G6lH@8{y)pvnf8 z&g(g3r!1hfxA7ln}8B`9ON$;mX735A*e5LZG=r7eXUhV+7tlqVoBOs|xOhE%_ zd_pi5!6Ixk^pVY+KYh?u)PhH2i&cY!&10}clU?3p4L;V|Q3NKi`v{D~RLDi)NfYE| zefFgNUTVs@AM_*jL7tKg^-q8nf_1!5c6 zM3h^h*WvJbL#PT)&O~b!yMT@SfVZvCSl9s2%JH~H1eo%fbiwF#Q_B|WdF^{+Mb3Gv zyUoZUJ!;znKngA~k7k925G}O2a>U#gQ-Dgo9AdGWWs;T6lU~;vYXmbo|0;**y+^tU zfNjF7(dF|^i@2=4R;PbiA0a|hl8vy!3nc_Ngwxt7|H#SVb6V;~@Z%7>6`R6eDy$zC z-AY4EEWo-t&3$S#+7-73HrlnLs~eSSNJ3j=+B@<1#5Ur|u_$czxEMYtbXU1C#Ge~L zSCOdmBRnSNSS%ICFK@ei?u(#cOo=G=J=8%HfE`6eVyn3{(az_)po!31{|6L(L541< z;>4d`jVpAmaGcZt^&LJy7jwOqN&NwgiMpX-b{l{1>*CfgWvfr|x+y*Wv_r8yZ~Y&O zUa>JTS6+16IeY?zRNu&z-G&?o^g->3k^?pG{o#Lp0mAMha)Y z!)pZ8J-9%W5+r+|BA*nr9!4?|IsYH8JHmvB?18lqTMz{^ zv$|5KsS}16NJa%*fRel3qKbf}|ACO|8Uzryi=#sP4nCxGnZ*G&%2k~Q7Jemto~?J{ zdt4R?j{8oYj5gX--2Bg{fnZy?dkA7m;{>vU2kvq=o7dn-rpH#goC7^hg9Q)C7Rb>7 zxoAGOmK>d;`5l4!!e#+J_wcJ`p=5*2{e*4v(MM+TN_Z!|X`rz(imq3u%UUl1+NOfZ z=PDBbfu{l7v3$CP?sZ7gEm9Y6qm#11tU55P(grNt;;8PB*Nf_6gas9))}99StF6us zWTrG^kEjwZ}(KBG*j7vE64X0#3r&A2PDsvLB2CT-){Ao{E1(o{EM54iCnFBk z0bLE*8Rrk;CFI$nJlJbXThM3n;$UfuS{sIXH(FyxOCug>CYH;nT76H*4di&EWeb8G zl84*SQtVMdejq)-tAublLJ}P?qyTZc!?Km+VJ;h(5`BaC)Pt`zT0U|V=^R$YK>M{v zH|aaKy6f|R;W@l8MvVFC0X2+jqf*2Z=&B(nVy*+3s5FY{amD^`TMO2b&T^@& zsxl^$UOxp78oHPtAXlP#HTss?KZ{S=!N*u)n6qBdozh|td3T&6!2cyw`qCDFmw7K7 z{v>)>#^GoE0wZ)(^%g^TT1gH*{(#QZiK^l83VWjFb5>x1-xiKqb>m<#c$AJv@yFAl>i_-(^Nzd%Wqz;>MQxmVwX=pKA5;o;5gr+97nqC zK#^&hlUZ3pdz{zRk|PI+Ka_sR#S)QLA5%*ZMccV7x0~OB@S$wH0p7gKUD#9+c9ulw z4D(A#(M3adS^oeu1<#HcFH~u?2&gX?xGEm6g^#`F{t31=$5>TC5*h4CkZ~T+X~g;0 z`D24FjF{dBlLm4QWDjXKJJ><6IQ;rgOHlvnY8~$HJv=m!c1Rhml_mP=J;+=R9d@nBsIECRFoF;?z6i6a*f56_gVH82E0^Fi@}ULX5#INfCD z8Wp;jw#&#cdg^T%r;YhXSW4>PSH@XGsDth%02OW!`C*}}5e~YTDO?C21x_>Rr)(nN zvG^pp6o>7gb~7;ApdvGh+T-QW^FT=g{@lGG;6gBw=Z(4!GvdP1wwr|_ZBxq8lh0EWZh`axx1O9B ze46(hr<=xmP*KFF$c%-8TlP-CuyLk0{vK^<|P#~w6-cbPGmMXTY*lC-SHqtfgKI1 z2y9XlMw|LAugCr4TCKUk-|xlNZMR=H_wbR-tqdAH6M}41hi5J#fsM(sT%d}OaJ+p_ z{Ee7Cdp?VG|M6tj?xO-&Ff-gx!wV?WCLZSSAru6`+8ad#NF^$LTDPD!0?0(YFy(+e z#S#^9tEI%eD|8&8TulMVZv!yJlP>q7A{}^1jbSvd1vcwM4qi9M-+P6~KkNdYVY^W^ z6S5GyorppuO1^`PA+eW}mX8fLlwWpR*6iI~A?E0)R`a!36>yckCT3c$ixJ+XP-WXO z3^_gTmzHRLT4r-#&^W- zW3H#Ep7-$_@NWK4ySN)8032fS;oZrFtm$v01>@3xzN{9Z<}scTIRRL#G;;dg$}2|>RGd6hsl(^{nVS90u9|YM zJBhOMk<~4G-+dKVV)r@@qozVU#_F_M{(w%D(Z2UBdgH&LifY8s@|hf+E4!;rtCY18 zPHl$wv|e;#Cpq)x8`T}V+9enny_&x5@isiDX)kk7xRQ77bdfR5iaNZ680>1!np+c_d@Mz9RX>P0 zoWa<<`yK%R53K~K+&C_&H^ACF;dAf)GkF$qd`@sB*GfFVV#lS7yaX}=65boHUhBy1 z6iG;qxoLuW^@y;phspUj{mqEd^}3yvjTgF^Q-drYST|@IO6?(Y0m5|lAhE0s$%gu< zfMl;4;;=y-3RN8KOy|we0l(f-^wsGO{+$PTPNZk$+U2le*5Ty9D_RdG7`0omRyCNB z#OG%VzR+m1=bFcPZ^k;@t5`7}XqQUMDV?zNQ_WNA7^*pvqWywgGr{fL41kFbExP_1 zxkP?BQVUjsvts=5UzLKlBJc2WK`OLd^~$m#r)j4=?&%KXNUi1e-(kt23i+|U1v#Ii zgeM+(hs^AkCa+yCgrrv?nIZW(_O>U}Wuz1I+O3zr?;9oXrmj-FdZvpB$R}uZzw}@f zc-BK6)^j9ogDBsc8JjD)6D`y>9MMNFKdhUuCcfM>Tv`|%%gujr^0#Imvh*!eW*!lB z*|YgMma*UX5pGLKynLf%BM)mP9(>Hz-n45uRh*9_ziLDxDWw}_;T~4MA~xJ0M^zic zqMv$NqR-M!gC}()imLJb)Lc^vc@9gjEKQM$Pz_e~xH}OQN5S+(=#Q$X;7F3Z{b#R} zEVme9-^9I1x-rduRy%=*<6;3HmE+O&gbs}AU9_@$L;vg97+niTxHA9ZIMqbq<*(nb z8CeJRny@o`{bQ70LsfD@UlxhqI*7|vuP>wL{9v?jHnhD}5eawI#<(-vnwH>2E!Zk_)b{+i^cSyIV?q=IA4tGW3jkJ;Sd%O`cZAT=>gM zC*kWLL)~d?{?jAYWgLgnF?O!+tWt{hzN!9Td&o^QlM*P!hgRR@`+qZ_WF((zH z&kF%_wGHuVf9kIPjNM>d>S`pZ)z~Qw4K#C8j)>puoi~kc63sLHtePTfZ0=h%dnsE3 zQ^>YNpL8UVska3;%U?wr6Q10?9us2gLmv~cA1GAHO(Mz^!@D1bRi8;$4RN7V$0#}}aPs?3NLZ$mcaxLs_^JG0rPgBaqDT?9tkoq|U6J2+ zXY-{t&vVo`KWV^|`ZD9AM_31oE#c)7pIuJy)qwy^0E-Nm`)#vj&T$w8JMR`*Hx~+& zX%7XmNW?G29T}~^{|4vRe97{brRxKe&^MyNb*;xr!;~wkdF;#j@B98byCyeZfbg+@ zZ|gdTf$riq(%|h*VA(x}aepy&N7wgL;`z=i%NlgbF(;b*<&rq*H5Hbe#kfpo{F09A zN-kJirt2D4=m!3t+qU@@9&-|63DtSkuX!m{;mV=C@zKSzyFnza+PLVbyQOQ?#!w|h z6*ezHFrrtXbbpn}j}Wrur}^!%Ji4_mv?aBTo)lYHmbl$W6F=RAnI4~#Poit7TfhLh z9S^n#G~`KO6mwD(lg3yT$Dg@2GWiNhp-jnN9g7YbO^b5bv1-W}gGF6<>|cAu zc^OXTj!p8((l|7{ZEr28-&W!0l}b!OOix}95<}mEIZB5vsZGsKJf180ZXYGmeJ#IH z6MoO;7@>J9V?4TAL|Qnrooq(B%RtW3E5tUqSiaXUfBf!1JzJj#S{{${lpOZYO36LbK&}zVf6L&RXvVUc4YQOs|E7nIa-IBZgi%6ooD`%o*lCkC*A zh#Zk$Cm>OiMg}LTS|@UL#XjF*P(~krL{n{=bSL$Cj-ODXq6VSaQ@NDNaG-Opm)PniFc%FOPsr8KHX=u zXzCOtN#QCl?e#QfcMHBF^XvJ;ui3#4i&N@EUNH6=$v#5Jbs&5oWNLE#G%+6BY5s>G zN0GN0U&J2{OmaW?i8IwqfG~ufUKMG$YiO9^+`SZLzEYlT`Y6tDl@pjQ5AlLE6y$3g))P?mKswaEnrREoFgv44D{D%mEvMd9FUFb~)ozK>-0y_BykaU{# z=Ttu5Gf<{ZW%0)K4yosX&uAN3gCc^#)clAk%hwo8#82mgreH=Q2zF69=gr>mdir}b zPb#7ZuS>C#Xk^i{YQ$IHlE}PEn#Gu=-K-=TANM2q0$SZkdEY^&vo$e8b#AxqS)lZ_ zxkG~{p~1y$pU-L)l3n3l3H{|pQ7rd^_3oUr^lPP1_isMl#i1WJ!4nMV3f<|+)}2tCPfBF@ANjpAh2U$@hGD4WKo=LND{8#L@pEt{6wj^Cpy zaHc3eL*?$+b+nb4uihevnk&k*Glb4wyBYGl!!5f&1nj5v)49?G5o=iv{ov~zxO$nf z+sUa}x>0&e4SiB_gGA1^GFtq%_;hWihQC#DaL*t>FcW^S9AwtjecZ+{}Vm z6XLZKNH(TBrQoi2-QBDo(-L=hRh7@CmQckfAYgVq$66ip0@ff2k&;^1PnkfuACU#yiEWzUtHZK8Y)+i+R-Rc-rb)I%veRXa1`LG4u+(A(cjpLZN7iZ; z(>Wu{%CnJP0!}xV%>64qg^PNx2HkO!P&U9npkiiHDNDTRQ-@P^XZ5!`NBx)jLS}! z`C!|Kn|HN2E<`y@F`7(foX9l8#XT8!zj`#J$tTILl}Vp1BKDLeBAb(Z?2wTSz;3-0d58|nIZp=}81fT*W)EM8g41hzG>VZOK+Th=qUyX8>4M{eMkyQ{mSAg zjja2E=D5j=#EZ_X`7RdyYW(`DY!2I3XRTa^^$?7?jFs@r^Ys;b&cXfpCW8lLam$@J z%(*K4Pi(h!pzPblr&e*Jt9qJO>tFD1nq0>2&u8T@F}~@eBGo$j%4Nz_GMsUWU-CNL z)N^w0d!OvlKP#B_j~Q8$+wh*R`baoq)t%+yb*50_$+Sg*Aingb_oklaS2n>**pnoN zxV;VJb@5k}Di=dPB~GBnk_yi_Mj$;X_y&>&=w~4970|6vs8${jnV_9=76djFitpfS zBTyJ5^%?bu0w`Pf-iv3T7yU2(%)G*5W1rOJg*WN33gabs1(dwB3NByr?vwuj550P+ literal 0 HcmV?d00001 diff --git a/doc/mgmt/gnmi/images/set_lock.png b/doc/mgmt/gnmi/images/set_lock.png new file mode 100644 index 0000000000000000000000000000000000000000..de05f4ac452e90ef65af7885f92824b2ff0d1e9c GIT binary patch literal 20111 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≤a?r$ zikwYMm~>d>wth26akt|zpX60<3H!i@?mN@({@J2c? zc;z37NeZFg{YPGI`#lJfmjaWi9$`PY;I-LuT0-1!GMff>gCo`CCAZwR@rww;5wP)* zSl?J&f1mJ8O4!&xlmL8#+W8b%Zkd%Z{_2mZ)W-3PyKtyAI_6dhMr?}8jO4#O;`SAU z>I$P>sTsT4 zW9DECL?&Do>XjuTEzXr0ykc#fu|+tkVK5Kt2{~N(9-#9yhUh?8kjbwu6}|eSz!FyJ zBZF@z3>w^eR82$Vz8pv7k(>PnfS&C_RI++TTzZ z+mOfsa|=6pbFV!x(4TcQ?zI!%%b!#EKK+GLzbEMtH6O>_J8l9WLBNL8;J{9o&2m<| z4(vEAqi2^7RWb*QZqq4;yT{V20j|uRZ=$gFE>5{M5`|nHcx`7V__))@=w5o}+`;@V z0fyQfGR<1>>};F8V8{~^wTKQfxZ7T08Tob%_Cu`MIKRhk{=C?J#cDS@*n$2C$eq

Muv0V5b;V9d0n&XfLt&| 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 z zYW?CJSJOp}A5&5ZQ`%E@H2h~rn~`scGD1Moiy=p~BFMZ55W!_}g_Ol_}C6CoVXY_ABD|e)s_R zOt$C+!D)9xqi0z=T{{QqP|6&5FHbq$za}b00;s-;l9A3Q!5Mbp?7Vb@#XN{c0F$9jK()CnkMV}mEF z8)?I<&K|6{mBR;7UWOfw;r=+k9UzIXeWT}F*N#FYn)>_ zq?l$_X$&15cPU^=OUVM`UXQtd4iW*L0E&#u`YK_4ZNr(Tvx*b=w5$bc7-w zg;L|FAJSH>A;0pB^*E_)#OY(`pg`2A{`U4#T`^}Zb&+KS?re+N`HaT!oLqMaoa71g z3A{3&^-gr~va&S$Fan?PvO?ku7>WOaSV z`wMSmYspxWXVEp6bynUlZsh7R)De5CA4R=5!EE(b^wxd{=2#SftesB!up0PV_i1~R z&48y`FKckzF{(@e)x0&RJJ2&kE*;_jL`WuSg)Q)on|!MAEpCy0^m($<(N?}5QZvCs zlQxCO7Y)yyZ38pU6UQnJ8W2#8AfHCFo?eo|vabO>3a!9B8YaBW$+MElP!VP(N$HmyFkhs3R)?k-Jo?MwW zp0SLp#}b*_*47#oW>M>oXWKQw=%RyCm_DEAXeAD2kP?1aniTdT59R57L>1eoIld7r zd#A{RjfbsF@wM2v8J!xu+4QSjE^;{8V~39w#og_vk0rY6PFCENPV^b@Ar@aRzgyEg zjvb{gBrm8|SZY_4D;2LhTkZyUE+)_8oN%g0O5N@(_aPe!>DF%?5TfIhCfca%M8y=y zesDXw*hcVDp*}%nh>jAEF#toWO-CcT5%K!^<#JqrL=(t)L&=RLx;g$ibl>;k{dHGG z$)TDRE>*WPxF?C2lGOr#@J1koAS2=Q$09*a^I*1JpXW>7eT5qt zcwkF);Xp)8t4**%cDs1f>DO?2$xb=fD%1uPs5z5*a}q1^OFPxB3r681-GpkB@YN{Q z?-l+|2DA7=M}zE}`tP$P6!$egsGb0L78+_>NyMr}QI(5xdv)$X0?trK*n|-!TkUKq z_W(MMDI6O5lH(%6DPnmnxgCuPk>+&SVdU;g6s$N@jzH1o(Ny{f^3v!~VlD+rUSBc= zRZlU${mj_3;pNoJp4_nM;GPhRm5KGy=n&imgcTf-?`r+o2Wc2p>%2+N<>^(7@R=~C z0@fA2(%;;^)-<0QbtMI&7Ws@XQETluBM6{aq#J|I$D-uBJ7A5498g1wvnLKvj`<%u zwER5H^ea{(nH~wU?Q~w6V|VR}=N}ZjVVkTfR&4fKy)po}$sL5OegUypNbWhmk`o>K z)^nhWf(X18K@pnEaI_0QRb1Qmp}9O%r31Kc5hy0~-YhK?pZ&V9JaUX=09X7J+qJ{G9~yq~NQzXGPkd>~ zLpCK95y_+_b&!tsHdf(}Gg#H3;pK-F;0n@e+w7s~ zFyb2njSWTG&3%;~R&x`M-6P0Tw zpX~V5n{v)sbJj7*ovuHaeyv_fTo{VO#`3P(LqyjfC9)uB7xINZfE}eCgWL(2tPU;o-!P|a}*C3E?^z`v=$qb1u!AM`V5~Z?4D-!_{?j3YKmx&UfJjNaBA8 zHjC)SG9PaqUfRP)J3%u8Wi1^qmPg2^SCG^CUYqvpWO>%!(#o58PbR0=+*1f@jkFFT zul`uNgYH**)3ESU3`r(7SieL${_hw@raGwLLNzg6t4h}1|JcIHG@d zzm=MOzWe6HXN@-YK=}PwmV)=MF*OzeevtUSFB;ySOAz#y*-4so=Q872IZYxCNXAmW z9ApGZpV7+~CBGNjM~C{gbKpVe6^Ijbnq)^6?WgI}oBR$ojuKY_HEW6sOEas4$d<4q zr9(M~z4B_rarr^j%L0MYd>|_=fht!`hNQy<^<`6tT64-s@0m|XV z!7Zzn#LPIQ9RN)zwKpmVfp_y+E9n!(F|X0_EEx3`z<5(A+w zwXO>1RMkpLdil<3EAvo*#b_W26?--wy);<_OvE)dJxP>V-4t;|OBUY=eefx{?F56% zeCD3yOmxa>%XD9n>Iwx31BsG;)2*%fI!B-_VE%n|QQgv=Hw|~%;)?`f*Cz+`2&5tR zqzE4Rs85q-yz)qO-qr(dFON?tB(OMDMa)R_oDyLXm(fWq-dI3f;inx{%HBHLzJ?Yn zmvWxhhbTXxEm-lP;cq;d(m_46| zFF%V8o+_Zm`uTZ0jQ8Vzl#pP|%dIU)YjK`v<@BCPi6B>u2=`PXDLKW|M;I`U} z!4rS=X2elROGB9QqUidWy<#FWz58f|M9kCsdKLTnBEtGg!!4>yFY_+HP5Pzzm^Bcc z#2x-DQ!~Bw%YKyLDGK+*TCMi=-v0O`c7&&(zgt9Q8FdFk!jQVU-Od6bG)&k>TUM)% zEwAQhKW>XF*T>=g!(mI_Lcy`_YrCgqc(obgZue^G55%JKasW8M z*KfL5$6q6I-|c3rx1*q>E!R~}6Z;}Eg&pB73BnVqA1??)5F=D!HF}x|yyxN}6Wjof_sv$`7Rx5Uc9~`booiEN^nW-hy^Q?`%mM8+N zLzt2o&$07-5}7h zDs=cb+vf5kzQFY8eL_jQm+m$3(|QX+mE#y{9lG&6RhTjDeG;$n?$^&t_m-Oxr3)@W zuduaSS{(g%v+1$A>x2S2WApHJizG$iN#wDi3}TDjx3+vhMBavP8y%aFqLY6<;#3?# z=1}6D!f`U%jU~RwUHWobdSfBGc4s+tG*q^63uN*Fy)QD6|3P@Lw#nytwqK#E5o6ei z!V$U)DR?{`5I5USKsKpwGbqq#fTT;rFvdVmQbUEeE-d`V4yuQ~#V3+df;AbSL}e+* zb<5Hm(BE}6ruPJ}YaN6LIv66h^pSDO_s`7nYt&_hMTO-n*4j+w&(emVg=iSrEVRVB z1H+Yu;0_5UP{p4fVHN0`Zy7PR7FoBSv0t)c--M%5PC4yuWpI==MFGJ^I!AwwnNG+Y4=;aPdy)fALuiM$WP49S;ML|o7q=-PbTYFby27UL9IaHb-~ zlRmKwSg~fT0v0;-`3bI)OWb+RB+d5yOD*XUe&LWd(-|`U}p$hB1Pi*^6YP#oR z_dHZ=%@zR_&(bCn$h)Iw*dAdqYEmIvTO?%_mFV2JPfroLCUZFE6H>OHirB9D;!$^T z47xk|WC*#K;z54)J_!?@A!JWPTK_r~(ZUxFH^P;te>SSmpBSojdwza<^l^m=H&`vO zb~oXqr~VX2+exiH9qrAQpKW9r0m<3d#)Mol4Fe4mIFNV8mrw{*UWY_gbi$vgChDtQBJiHS4ek(^QXL`4596Ul!phPRFKy>9`Fsp2Pg{kB)e~j-8mzH)&M^jp z3*U*8^J%$-hnim#20t`l8-{je(s5iMb<#hfp*iY)%S!@M*nIFFl)exZ*-|>0FXmcHMHJfbBQnmL1IBk!w9CO-{pki%MwIE0%n`+-{ zC}d417bIA+6s}6+{$V$1)QAciN}lfNeDM%29}&eA?!>Lw+;XDI-_OFUy{8O(%j=cc z(ug1D91#hid{g#PadtvR8sFpJ-;<)%>-q^TQf+5{qKrjE6AqT|syz)dP_(qwZqiqx z3e$6rJE-JW@%j?2=EMKTN9ONbedRE&ewpM0>y@l3)EH z5ab;kU^NMTDhj)Rw(uoVkdp^yXP45Udi@eHkp2uS!lsY3WfPe!IG9LuD9p@+Fc0O@ zY;_E6*hY|~(!)fufGVizY@G?9ep7R4JxH8U;+eyXIDCSBhD$BmLD*r988Zn@I6_3e zWgni$=-wyKjPGQ}Wtgmo_m2*a?@6B{$V+-VEP)DIjP%<0%TOw1I#qd4?CG zrp?dk>2n@_?mKJJL7dB9-szbUoIeVQkxC#WB3j(8n5gzRFp*Imo=i* zY&zQ8ISGcZ2c=ntxv7AZO2Fw|?Mv3|k7P99(q-DH*obFN?6%Y#roIiH;pEk7Dy%ie zK($p|wBfH!@R}K?dsC$5Mj`@Hvo{yvIa#d!9=SLcOKbs4cqnEetruJPXZ6q$cD^6y ztHlg3dxHTwR3nrHbIa;DbU5u}nXZjE4Sdh02^qiA9Vf_>yV|N0+qs4qF~qkL<`+%+ zrxxgE%Jtg98rgz`62O{5~#TZcb@3^G-$4TP% zTIiF9L|MnI zX_<$XVYR3aZ(SoeUc%*BvR~AeVP3kfJso;IjVFf@p2R3Wgd5>!jfA|5m2Zt8@-MBz zKDvtn>cEP`xz13#GTg}E7`D(9$(Jn32*7}vwRA!t>k?Bi477{mhRzC8YGMaHN*fSa zVQoDVP>PF?ROWdij`TgC?*_Gg2^GwvL~=%!KM|)=-Xw{KT;jsgR5jQRahF~`aJd;H zD`&hsBa@8o+u<X?Vs2%jRpxE(lwg6ZiZ6D?My^qEy;Ujk?x=*|cI%b!w*{foLE zm1mjjFYR3*0$*QYaU#1rL9F}Y+bi`6$-q%+b@w7>C7WmX?hl4#^?-g~bwKP8t zIla)RK`d|fg@gr<|6bTUju+=fH=}8$W;~u)GAi$QZ#oQPjWWSQbnU^GbJcNDJR_;% zNf^n$JH1Z=?@n^dWZQO=r8H%`la+k&RDu=dYXAkiFw1VhToeTji=oJqIq-OMaz~Nc zhoc@L{O@%rEz6L`e*h~VFDRha@hc*$@Y(o@4wV{6-~7P^l91+^R*kOKUnEaRut5b< z!cHq6k_mIF^-XKGf&0;PzR#KV?v)}w$Wo;b$LN@;+`Zt7hC5u3pJ(7oiWfGxIR?>A z`VgOpeIZXc#3ULkrU+hJr=C{Z^AqzOsH`vn#{~c6Ndg_w?}9Zzdnt6Zc^hGRAQCr9 zPGALN&$p;IOc5PD;mhm3iD8zpP;{S`1qL~Th{?PooqV%ir(%wQpKUj(wjTCMEADSq zwYoeYMloZW+U?#l)pWyzID##hl7#0NGSZ5SA?f7x>Us;l8&4FEoh&sfaT{Pn00i$p zpa@C)$6EFA@q%1vkqOe2oL5>Obj!+U$?S+rr5Fo(Ryn>$131TQbR&O?$EOhPZ%C1j;K!UCj{mmc`nT6%2Ev>XH~%I^7C?%p zrZ81a=|kyDf%oJ_?YycxVl;19nH6SHfSX|DPm{Hz2ff8wI_~nHwgq zCyrvNHZR_$Yt-!Xv_0>CA1J<^x8IN}Bv6h6cC!G|xvz?BCQ3^{0GMXSyU+->Iy)>i z-rqzEA9|#TFffQfi~nVA{A74#LE+0|6evQfHl64<7%=Z z9Q*Ip(TMF#!+^D(ywKvr1d6oe2DktBC;rZUs1qsr{E-#AI_RpMApew*h;?~s{8s{7 zve?E}m1pvNXQ&xa|BG>d7rPCTI{!~GHy|oIp#^fQu0&F%qaeJ$=j8i9M?mm;V8STN zW#NRrgNDc87s2=wy`>fGoFK}n?IaK#Q-=Fr4um#{20GecZZ(%>_&FUY^FMkjKG~14 zYcyVNcM~v=+qq9${|f^DFB+@?axwX-{In9xeHtKTjy&>N30PqMVcqdpfI8)&O_nMr z#inZ)&y%{HHUm`OmLNJasgQ%6x~ra^zmw-52c>%-h>3&O(ecUz-?s03owNpo?*{)n zkt*HhARM7<0RrlZRP@sEeBwnzGXc{iQitIk_y@Jrh*H7o!qmA<5BwzBe5n6|)Rv$C zVSUD=M=GG%WdeT6)bLzsH%)&|^u6>UGRstxr#=oH* z-gPk#Bl>ek!7*p!hr~l7%O9!ehg2&rF`Zrm(HI*FyOa#I!~^HceydGvDqMl7`5s;) z0NC(Bij@j*=E@f66(x-TZc*UIHtGDIT;X4HR6d~m^qN!wFmzA4I@8@xrY98AE16(&EFL-UJ|TeA52zJyV_O z@(x`;T|&YcqM+#F$VbuOQpi4zLD#PM*>NSxk1&?QPmp_;8k$#rZaz#UoGF(Pp2p1t zx&t<%n(BY>rZ?(v$k`|NegDVI1u7DS_LFjcYa@)24TssYPA^ST+{!LJqf|)8L=k@C z%J_-EJOhF6s=_ikeU(`T<-Sh9U@*w`kf=*Fjuj67k$g$<}a5^c_WJ~9T3uQUF;j(b z1l^&SU>~+rDFS79IgY#JT3;l(Uc)}XLt6v*D+k3ZcfVFi+qzBb=N?&7xyoP8I| z_Va0aNsa#!Qo^BXcU`a(!mY*jzXcUk>gAM0$IJJs_`GXCL2QV1LQ0zjze8=k3&EeJ^*?4Y{q(94+sQz4TOEQF?B$ z65bTX)1KE=Ao(pIJ{ZK=`VJ}sK5iY;#tA{uVpQD1(&p_-m&IK}h>O69bWH*Q4od0M zQl%M&nkEkX;QulDl(2y7wGxRQv_4blftf*Qy2GW$lzMOw5I*5O112)A?+1sfw zo6&b$a$_0%ix*gSdHh8Pjt=bACDj?#M3eVU2r)tNvTgfkfZL0lrs;cfNKj$azFo!$ zQWF}6kkXp}B#a#91T32tkw1N%OIE2ddWZi7C$fbB!?0A71NHDd#CC+1MOQm~gg%S19R*%+~eQYsVK;#W7iK z5y^MYZEx!2lWaOulMl|!U@Y#;Mz?=MjvK-t)H-UPf$k5!T?DJHp8lTGdGjHv%=7Ir zBr_{K5!82w1mbT`iY5^fI#RT+OqGN4E$~gXBsw9W76_UOTkR73 z74B~##h5j^pV^%MUTu%M)a1sT%wQNSBIcd%uzn02^kq4+6}Z|HhJXT|jGlAWyNwbt z=r-uO?E;QsKsv~*IGM&sP&o;Ap}n;=S2hXd_GlHis*34>uc4tC9NZ^jB#FmB-It#q z8X_Vi0&|Ts%~S+s$<={W)q#3jea;V%kBPN}M>K&Z+(5DxugNjMvgW39WKcd2Aku6yNnv-<)9 z*SB}o&@Q?kFz-(VfBpgh1K0{#-jd=xPiy^nymlD&C-w4j5tz zMe-0S(`T~%N}O_?LuCBG}9icfdc`3ZFxquyZuMtuG; z@B;gy1-Vl&m5CB+D0rKp;Llu(fo^cN1;~%opY+m`+1_@maT$~>+{5813G>sb_-%|G zPirI}(B7Uw7u$s!$yv^Awsh%t+~$#^xOJa-f6n`@-jXTTp%d?zui4STp~{J@Jo@lZ zo6`HThc$}$0W3a2ZR_yxJKJ6zS*a(AlWK9vt)!$R)Wi_MVCx}y!zJ3SMSBr=ZqkXB zbgR?UC+enw-buy}XXOZeq3kzKjNADR*0-;cJLVO9PyBRG3li%ASWfOv^NTW)e-=u4 z3gS)Q1BLu67t^5wv9v!|!PX&ggjrkg=?WTL0SeT{J=YVx1alARZAR4wNXWyx6q;|g zm3#g<@QQH7!zzyvIfcnU#MGyPx`&?d?rR7KWKwiGq^SY+g32?pw&x z^=?Ql`R#QmZZbfdxXW*YM=T<4sz^Uy^0^Fhq(Bd|Q}ajQVG)sxZ{K z@sNbUX%bq^sH&56Yuia5wc56M!Q{suCO_9|=uN`-aXscbg}&U7F#XCDJ`1p*Q6cLO z^@smG^Y;XLNcDhrze~*Z`lk;?l|U}Ku&iQ7vK@Tw34GH+*ru543x1dg;i;M zgoVCg`(?5xqtZ+_rkh>lb1C?;DfgqA>m|-Keos%1;`&h-kWyTHsvyxO>`bzCycPJZ zK@V8y!eS_>xG=7PLEudj51L?Mn9pc6xR7C$YtvzU;H+h88jYC)bFOy0&L1}``5^to zUPxxh8G}(1Qqv29`sas6ON;*xeyg_nB7c0D2SiOR!YVsC=?*r zJ~{tD%nhA*6`5De$VNOk?tI>5t&GwQ;C)U+inCnpA3hZCos36m&X(|pd@S?eM{;-(bn zRO5!^=MeZ^HcEYzL*2oX?>W~`Sr4;dzjA;WelJCoO=ntS8dfutfPnC~X*I^_X;dYe zS-#m1;o79fgXx5dTY*l2v6ykzbj2KjNCe=kL7}&Kb~L3km1Do)}Jxy%Au1Q^Fugn4hx%>o$n#{Yf%1NgYwUcok?mc z-;RzbbbXuQp9HZ~Rr%JWw|lSnA4i9~zPUJWD@nPyUAepEqAR#spd3|v${YBF@nSx- z3CD9qTtSKOmI^>uY;$uAgS^oyTf)iCKKDF6>V0(E7dlP^y)XcMGc_g#oak?2OHPKF z+^3UHZA?rPOYILV*?!j==8dR0hq1*uxIuhw<@BsomJ%bsi;dL$A6;Ier_Dm?A29p< zC>&QImMFSqLaLUrXaRf_eZB6ym$fxgRSuI_%5%LFu#KY}67#Aix6cdOxS40rlsS-& z9k*QjZ>&a}Ba4&J@A%IM*L#q%jkNM@M@X%EH{E+HU1u&h|Cm5+7DgAN=V?knqXA)9y)lFVsbDY z4Q$mJp_uKKL&ataeD`h3vF>jhhpEyA>m>y+A|>EQj;4?~v(xD|3b|a;Wc#^t>{n+7 zLq(tHow8SBj=A1NxE-!ll4lMBRpU`w^uQN<(4+SsAq>RQ;kVP%$@p^yV=enK85JpY8NRIo7p_Y9uv zmhn=Dy&O2Azk2-oEb()ls|jLzd_LErmuB}YDCybF5srgo&2os(eCvECKn&Zg)=CSa z4B9JCt@8uKk85-FV!9;{CMbSIsXSXNl0H$N-!pq$ny1}CAF)jv9QM>;K9f6LS+MQI zI~I5c;Gdqs`SoYp_dKije7Qi?jqtmlan4?FrR9TM+)*{THj@OCaqG5uI$#d^oG&9- zJV!r=Tquy$bIuHZf2@c#z1KhTl|*1kt)1b={BRQ;;XL951FaK+~}_D-r&W309HS^K@9SMBIux?CKI> zQg*0@@AmNsQ7EgyMFd=OqKw*Nb6L5<%79PsrbK#AHnkhtp=GNHIDEX>)=kNWeJCAHf=#FwQV|xNWNS zql71ms|`^{vBo7h3EHyy=SYM2251hKs5wd0PvuUVj(=v-m!vF1c?T>3`=<))3}3;!~j% zD9HkHl(j^{yNf(oPJr{pJoCMbCThwa%4&#CRjJ_@Z0H}Um)BND_j(w;egF6s`52QR zRMf7M#bS*{fYpj(B9jlgIzBt~ZG6)6sPSOh!Q2*OU|_)XCjGi#SlVRkI>d+UC zi%c_g!Q?zfWJlz_^3v0XZ>gT+Y!s0#8A!;1NJ@9Hug7)q-OwuuArfISwy0867nw_y zA?s3aE8bv?wuzF@9*ZP&f|&0=zy~-&65XW=Wc{q9*qn!twCfJgu%c`gps$mZS%tE* zv)$gDd5yTgK|UK#B*QPcyzm9dwQk3bAKV#K@w#f{Tu5S3HjX4?K!#<1|IC0YEjzC2 zTH_MH$XB5<9hU$ZhEEGcc;?nMMl``E5k^U*KOu`)EbnF8M9`4e1L#)EjdJ7Z#DPjik^7;!6^prA|Ya+MMhf2F>BnJPl` z8X7%!ljBA>MjbdV$LaRkz?TZg<)+q^l4_%R8Co8$idFH9_d;(-shpT#9BZ&yL>D|*M(0ZCmZIpg3@%*i8{<+ z<#9g!nLb-fK6JFl{-BR3zl=o!DN2$MP+Wf3#KIZpDZ6O$)$friH=^GNs5{l05wXX zIu@V}$C57c?rdrs=NCOn9YB{rZb}1DYFIa<;5+Yj<0G1o=Ufm+fXL zNt_^7{&!~Q5rf;}9+^#|JQI6Jlpq_xE#BM9m#UnfT>>aOx{KE^GKQD4 zQvbqi?Ot+xk(uK@fBVi_9(2I2Y76gbZ){L(8}G9D;8t!UAMfYEEn_*_W_gM4#gU&v zIT;JydH~(dPopdgA!*w`rT=&nAPw^4Lwjy!%t~yXVME}9qkP0w(5gN|arCF5{#3qK zbcs+#9*ZCR!!@X4w?BEX2Fl;LRdi_VfR2$ay;iHWja?foU(Qb<3kj^|8bIA4Mz>Cn zzR(?(#8$`VEg1mlH7ccFvp84Xd&_t~Cv8<8^Grx2tk~B$%zGpFdza{V_4m!qsmpsl z83;VTsCmXQsPlY!n5nlyT><;zmlZjbGu(=d6a-vuCN|kT|9JT7gdE94_b?JN#stXgc<;E8&g*9=fh7oU2?_Tn9BXW+fO9z9w)27i zM9X6$FG{C6c68UmRZrg)1zUp>3X?LvqMB-Q)w7fV6|R1&+nZtHPP$jnO-ShG&uqQR%g>*15+Ov3J(0i}3=c#;D%Us? zGV(ij>k!ySH2>72iE`n8-&7_iH>-ns0(n8&FBRXe#}ky9gnz2*vU4cYNMxzXciAS7 zK7?Tci9|2LQ_Cq1>Ehpt=M}AQRi|$uJ3YOppvM8;UbI)V#X{IWbJtmC{D6&Q3Vdev zKMpgt&DfPvI>aP6O)kh{=zplkYhBTAcQIgQ#wAr=gH7FB*CoZ&vfMSA(`@k_Kfk)`jnOYAXLp3Uw_C=QPvDq~cISI6 zO8}`YuL=;^n^46GS1R0MmXXK_D6%qz6zOz1|GDJUOg9)RnTm<)HtN0gVGxb>;sji? z4$_Oi+{}~{7o?Z|Kqep$J{3ZD7WF5(p*OTIAEIa{&~11S)adT(fq4O~MwOHmIZUGWPHw@z z&3f!yiIbws>w9s1{SL$M-aFkkv53sya$0jLjrzYdsZ`F}y8Sz4y{%1;XZ!mN|}z_1I}D6%yP3wlub0Ll+w4)5Uu5fl5Fhf0tI6CZln(s0F7SNneF=Bf|rS z7#UHmirOa=@VNPa%Xp@#ibuuFC!36ShpM1S3_UTVj53WslIiz6Oas`ddvW8#iUJR> zV;kh0)&0DfmSKDn*NDDao=V`a+7Zi4qfHBqr;w{nbU@QXJE;+mQX}32N>7Lu6;NTH z;={xbJt>oeOHU7UaALF=X{3x?%(ZVXa-A#Ze>F*}%0I++iR<`hXJH_Mf1%x?fIha{ zY>np2zOAP0&U5cf$D-!m2fUjIH%le)Lk(q5#rq3e*AEqN6(wjc#c#!?`O|X4DhPJx zjAB>!LGq~->N&2{GK8Kf5eY>T)BHG!P=HsdS47lsd+brEXO&%BTmRj*$JoDb+>E4H ztdy;CCDkyJK&_Z?om<%ETI^m?!YU7Yr6aZL!mFoQG~Ml$Jkwc6qbDdm_>y|LL7yD@ zyH-DPx$m6`gvLII8sD#c%-?Fk4uG6q&@^=#)Bc)1wlt3J6&nxHY^{z zYl#EHu;D8MiF8-Uhs0sSV)@p#&t={Q~|S1#<*nyPAlN; z*8#S6p`aS&bj)L&RR?8K2tO%Q53fPJ`7MAp5bpEY2cucllh!VR1n{?=0WAC%^T_Z` z7)HYeyytr&NscryEf}WAuGh9)7l1K?K^>OKoo(=Vx>Rg>z*TjOXcAqoNAxzELn7$u;-9G-`VQV%Ne_Fh%0c}0!o1P`NPR)43!gkG!in~u=9W-sUX zFivvF56GbcC4^s=7ydH-^eY8&u`wfcrl96JOYL8Uy58^T#hiV!mE5-zM9GdG-kTIw zukI{2w@cqY#VFUYu__!{^LZ!>LM34mR3PxW??Ldn+gsAv+^2sG3JqNx-18{fS~coY zX0UkW!7r9}X7f#U@Z+@6QlpNuBhkD&UhJj5@D=G5N5;*f*p+f%=;CinvP>Df)}H8gLe^83dW&1#KtY1V?_3_oDfwTcA(f&-bCP)iFR zzRqgu$Y>)Ao5)Xmkk$JQ}QQd(N4;QB?shRl2iKZlfyi%Do){4W4a0&y)IP|2dIHoGM$ z)k8(4icoQunYUxt(Buz z%e=yI7}SK=Zn~V0iNku$D#q%Yoy2(2aSx_DfAQ@d|B0>1aakrJtTgrUt=t>89nBr+ zRjV2toG*Cy`(2s)C#uE7qd{v~V$JOMs^ASfHRTg1Z=wq5pk9Dk1|7ORWX(>Sdcg5& zO+%ob6x(W!ofSH-OS9}3?2TLb6@r$l$zd%N&-`R}(&&9*a-JmtAKoy9OKH{%`Kt>I zl+Xh4$980i%Ij^8N#%~G5ef=w%5qYKG%GW_4Iv{TBLo5<3suxt>^nNHU*<0JaTE{{ z_WUsG524GldaVj^?d?BRQw?cgNRW9L=~tTfp| zDJgk4v9v4Td+fYC$kz zfs{&=Z^LTTwDe$12hnvVvNAH1^q zYFore;OY4B@bDb2+m4NAyfb!+CNmOc6KxfEHhzwQWjBSwgH8rGpZ!k%Ra3bjr2-^) zn~;3+Xr)<432uFuSns0=PjIa2Qq&5N{ipdh0FC(=`!Y@(>#X5?cyHej? z?Fjf>!5eKf2CXB0y)RP>(Wsd_^tb5mo|qJ5w!^gJiNk$?ipplL{wPYLu*8rI3h2E0? zy!3nQ?>Hq=dhSkCyi^@NBr9wu<4c$1X50mwX~pbE5!>?>}?cLl#)=pBdy>?ZXFTxY%>GjjW7^(i_$ ztaRds`8gVJ)MimrvJ}%zaPPBvCh$^13jA zUrDDLbaC-jwjg&FVg<*7?4s0+7x-U__q@Lds%9l|RGmckxo z_uPCtV%AoqJO6FHzdq8po>$UKtD&jq*{hF-^Pq_6ei!E>*cO}6KmlX$)!Pd>ut0NM zPUdJG&B?6}nmw5U;#*HJdCyRH*UO0X*vk_LpWUIrL>W(sxjPZc%}D0uTH>C#81ra5--g=t_#&0ah#$bc=_hhW z|DPqzHHHz7t9ybP)GRZsx9N4&miOMCm1i>Okaw0F!L3|UZH+@Q*wdJ3Ffh?4=Jz20 z6ERm0nCZhY`h@`wDe))N;=ts^-&U5}gL@CcRCUHSe87gt9jB)?xSWrxwy)thFN}@A z?K*p-Ko(%WD9P{DaIRy%(aM1MkcajIznja42Q^tF!JwF3s~T`IIkj%@j0z@Kl?TL| zJd?&Aqvqeo!ATULSgkHP&WQ6ieRcEa%PY5#q^VCn-*SOXG~MC!1L^B9Lv;rW7`dci=y7A&(NOy$f*v7W zwtD`Z$Nequ*yBF7+mV!18nWk4M=n4J)o9LQmEjP1C-KlP-*Uvr=n-rX;xttEYv;-` z6mNKMPB6n53`^XwEy!c@5oOjdExp?C;dD(YIZ^9s$JXq6Uh$iK0%*s#(?CgymFs7Y zx0HZ(Jbydd<9VrM3DF^B6W0%Q7Kl_zcJrn&?RXR#ItXxCKJtp7V&G0kCAB*-tGdIb zHzy#}+R$uUqLv3FD)#ptA3yaEm|b3Z{jd1?Sy*TSg5(ZoI?b~A47#i^yPjR3u*UVu zQgWV$1TJA2GK>8068Mq;pqLBLd!pmvmy~wdkt;_^2@e```8a1HZ=?S|2U`r#0kkeguCOW+ybhG z28vbx!mw+^d`gZ_#nRjXHDj?!ZnK%LV;P zm@s65kdHcN8da()Mi%MTva%mQjSJJb(l7`cSuY^EFO{ zbijJPc-@B-D>wP*oUXflz?V6ya|d{LB2<5(WtH*o^tqyo@;at`VS8=1tIgM*{sJmU zzS?}+w`4g)e}X9n2|t-L>i-T<^34fN%jtT?EXctr#}LuwjeXiF(VFAqphTdL09iLx z=gVE|(21%t37{+zV!seqRjXRg&}41vt3Gz--2@pU5>i1C%#4%Op+)F7bJ^XgKyqC* zkk6?p(_^8pj;1yP!gFhqL?)pCb6R;yl2jxh8Rbikf}0RDTH7WB4EilWIkkFU$#ae` zf292nBsd2(7Oc6J+~DxNJK|{6A$~so;_3bfk0XKa#~8v5*I$ZWJRka&b|7gr2%HS; z2bwue4khBl51FL%?s^~)vf}uU1ErV~)b{fX4K8;Z(qzA3qL1rxseIXPk>B0)LA8}8 zy#y{bU#`C7^xSRAKM@i8Tp^K>ld(2z!o0LQgQ>==C4%pUToq^t@i(7IN&}1=&X({t z{h!F&?hg|S9i_zcsjT2U1E9&nXax7Hu*mQKf(`#=nCEw%bKw`EI5 zkO=Bj7!(n}*97eY=kd$Vz9_{E8p&B~Yo0RxjJLIfUBP#HMzrNd%^`j4j@wl!w4vm% zj&pn2PseXM2e%W^SU?!$ZxP9#0ussC2tC@FZ~as043NMCC=4R`rz*Aw?- z(N6tb@D4wet`&dLfh0Q-=jL6%L|@@8t^PxWKpM}HhPlp{mqVEv(O>$T9m#co;6(jT zbqyeUvmz-V6<7NtE5QpC)={>CAd_jWeK+j@2?mOPZW0PeW*a}nlz(r@Hvi;Q{kqYD z6%x?Hw%o?+aoPTX_QMC^4>IB+>i0n|xTW&==iZ-Hwn0^4DQ;F)cQ4oHaE;|)XE6v= ziFz^Vjn~T%zel%*fPy!4Awi{?g|;z(UO2e^0cU<9T)`ivZWJUeG#?JE{W6z6S&WSq zSjD(ag(PAzu5c7Yzf$!VNj}+N?DnU{Fd`#X+j4b5=`|pn@dvGa2GY>S$nt7uISo}v z8$*iF46=Bc?y*$pb@o~boCU2j864iSTBtU9W4g4%Dr>C0t;bU5i|hgqZxHZWY=fAg1t?qh4{4c zDR15(jqs`574Y6}mCb9}9&5pj2Q?IZZ!(#)V_8l`uLl!*zK7vypN&ZLnlv^mQZfBg zIsbqdV_OKaD$4DPcP6v*Hn|oj&a3PcOC_+p#z)-HtXi_IPFUjYtH8-EaC@6ocRO=! zg=EBDI!#DDrBwJO-fvuEcCbBgpiJlXqu@|HH`DDPrPC7q`K2t%ojyue$JN*hw&Wd} z`OQ4xyiD!DowMD_i{a7HgcyoN+JN)5>ET2An;)eH)mVZV_oxdOI^o4qLV3DVX@*#4 zN<26Nk=K{E!n$Q%<<1tjlM%~*Ky<>4yPjU(FpbU7v#iX_AIZrM9CA${)1ZC$F^z!{ zD0KT>_48Upw3v^62OQ9AR}w?;<%Q5Uip~Ss!}nS6^{eSoA3*k;O(%lG4y~$s7Xezx zTq4nAq}0(}uMNK_^i^(y3kKl~!=e$s78g57;sUvTC4&SV`;S)v6WB+If}RulZO=84 z(fkFf-pP`(;LlDafVCR=CdVDm>L^A5{+c=cGnrWwyiT!h1R2|pzT18_#!i8&YBj1^ z$onJUw{Ia?t9#2#?MBhjyCH70;<$IZ#t+xCWn9NjHdrYn!v35{e@=Uwt90%+A)gy| zi?_SrI0QY(OBv?suGe@~q?)gg#dwY7W*=KkIjlE+?8gOFW;B_>=y*GgeLq>OD%ZyK zv5DBv@3ZGI1|=k9C*Cs;rbrGC&f}VczeJBLMTkazayH&19axK+UNkD+b<-j3zcH3e z(si>rJV9V57@J=$rr7ZG5D<`tt^I>gkBQYN#YFZ-gy-!0gei`HrGt-1=SW5-92bmQ z)8)CUJz4o;!b8=bs7_*=?qT$d(n)lltx%*pPUm{jOz&Q?^t~N3EE8w}kk6W02^Etz zgwZAh1DU~|Ei30L(V7qH!{0*w80VUzBwVD3tFhv{hfh2lw$g?81E7krsZnY3?~A zyHQSC;tzYDd5?V@0nw}oLmQIhO@CmrgP;wOz;_2i;FF5VZn~iNQ)QUr@j+R_a3()D zAdsf9+(_5=`tI0Zu~n{sb_IBpxXg3VK| zs`3K954i|Dw#oM0<*HJB{d{P`C|TZK3d`?*fX>oK&e zck+3fNhFFQL1g}9KsJbTMOeAA#bq3sTYhA~QWL$W0My#~X5mjy3_PTpo1+V=FBl1`+4iu@dXy*^gj_VjtAmgNhlhB`xb zGlKuv3p`Qw`N&ETqow3*TnBkrv`Vj%j!yrB)$y$o26c2b*XvvGv+>IfdX4)K+pAAQ zYcvr*n$lF}LdByJq)V3U8spt~v{Ibh*eLoh8-r0xR;tV0Is?zT3^yWly&%7<>kECE ze`4;36!=#w_KsLnCnq@ii@;0cNr5H?P;D>fx9_l%xAc!O_BBH?vj-+;iPZBWJ7}}D zuT~r}nVk|AQ*DD><-3toX&F?u27>Pi6Ypg=@liJoxXxqOvI-Qom{|y;wH;N2*f#dQ z0`-Oj`o%qM`c=nX2=m>}t1g9Zj{aV2H(CjEk7ckA!$vPg7TKfa(~~h(f?~9(u54*_ zuDxcL+?DpPWqjyv=l+XVsbgJH2l3eFQzaT!Na`2rp!ea7Z=kP z#*%(aHg860f|=gW8+H~mBu=q))3x+5g>SF&OyYR^8g$TKm#!DF-OIJDhHc!P4)Z0|V0; zc5g~&L|*7=Y1G0i_y%ug?%VtHHesc2HHCc1++*xYXVFY4?;?(_yhnR2rBz053SNq! z>ymS7_d4k2hwC{ggIOP4TsLK3@_vn9gxUj5z0ES^X1IC;ayGS&_H)$G6|&7A?Y}t4 zs5#ZFjbtr;K@Th1GVUFRcHF0{rsdIg+8jO=K~vzL!XVK1V#chx<*zmcH8mmA~d#w>6u*EXS&ZIlAcrAcB+p(PXD)RUTfQVgFwY{oj}w{q**3F zeJXm5CID)a3#3-YvUyrkg+l9m{uzul;v`w}_qNblza~eSwwf&JOvrpbQDMF$rMNP& zu`-)_r*+(yb4p8hRhoZ!<#;U+Y=$DsVJEc(^heOx7XXZ_+0#H3U38Jn8w5_Md8#R^ zn2!|wk;<;e+^M`2G@lV}zvTHf3YI2vx3W9Z=R^?UsE_mw92wP!h zwMXb8YaFiN#hTDeE@&0);>Qem_0QFsSby{~=(f?ND7iDE*=#reFiu*oxJYbpqxvY< zIAU`pJ>;TaaxvOcS;}##9=kQ>*V2uaT2BRD3#$`I)A>odR-}q{p5C(rSP^%fy=$EQ z5`|MV+4ZE{IT#x&Cw#JraP1o0~h-)(VH>xzV;ya5Xw#FhPlL$GlDdsyJF z=0(o_@cfCou&8Hw7%BWonFwcM&grAIwgc^Z?w-QXqJ4{JfjH+anhX{z^iX9Ya1t%TfV>j*c7tF6llR08qOnmSDH$j&}lT=ddV|+H>>l26O*R) z7Vgl?t6^D=KWB*TNTwGO5=1oacE!M;Zb`qeWB$3kM)`-)A{*mISjc%DrtOt@orX5e z)J~Fi$%LjI4sr;6<0H1=PtToH{Fj?JBe_(&VCBG8%aF~TjILqsMa>broPgGY{(CJ( z`Udf>VtlQy5o<?^BrvseBj{c zmm}Ia76!Y2YntTcnp^lF{`mxPU9V0fowg(!mv}%vX_<`i?fbGUdr0V&!Wd|J*rIac zD^=m_Vm{Dw^_6=SXnvw5JBQ(dl>`Q~qVPE9Ecojd^;v%!>5)bU|iu z5H*VS4DJi%Fc1br(I>62k(sMJ4e7@)c0H)Yaq3Y~v@2BR7q`UASsl54mP}C+`mMy~ zTaclr=XH~ePg;r%z95#XG}_}s%TQ@)&ZhR~==Qu)8-tP)V28bKGP>TS%_07sXPRS( z$4aZt5lWSen4&#$Q;(T&x?dYd626dZLZB<`k^*QL?C&N<+Wvs5D1V6hS0u*6IDbt5 zDij$h3&~%{iDiMe3qn);{*DJBrqiT75lHt#)e?f|>6B8_X<1|9|J?q+@C$Nw&#pl~ z@k=fwM?MV?9L!Hw5LzdEMcOkG?Tfw3j(tiBstVI`M^I2ek)=-Z-@wgaR*zZMi5??3 ze|c8x@Bp?Vo{cJ5%0E*C^mu>a=)ZAr&>LZA(m&6d?I6)F{&Js%K+u{QAclG+E!$oI zA7`YWT@++Uoway=Y!$`_5KyN7Z9o=|&0%z;^j`!0cVlDGtph;&mG~kQRpElOH9K5P zegHoyfD7xqGp2rVrv`9{sUIyPzGAQHBHcz09^<+qg6qi5QH>iAjGBFD(9N-yb#_t4 zYz;zg|DOT=dDDts!)($SL$tvECE_X`$vsu9P+Tzezy^x*UyPI;Ug zxA;?tFc;aib`zgtxBlyE|2rgO**^(69c%F1P|!nb#?2UdGQRjpV!TGpWQ_#-qyL{j zI(q%-p?DX1svOj)i{v+fa-x|7hHE;|lgDR0i{&)KUeds$3_Cz2tBho72(!3)z-*?Y zpU3?P3yP~efDVl4(fAFO@@jk-pGIU0RW*)$~v-G}_9yK1I zC?eY_0&uqSE%&dEqsFlg7mZ(xa^7eJ>RrfP%#{8&r2e00dTDcECc40LNFo94*j`p1 zEJZv`PwqVNaPZhxRQ(Y|x6!ZVvtoVpK;y|}t42Y8RdpYh79z>_2K?sy2vPcKy3X6$_4!Z;ME%MCoP64f@W!UVGk3ho+JjgM}9;yh#Jf{KrJEKgKQ#$B{7HBi$CSZ4kj!vkoH3RUV}pX zvuN{I#H*H5?gtE7$%Hs~Qe_Aj2yg!2Zi@feT{H~fiZS=nGVO?#z(f#`6#d`1Tc%Ez zk+1w*?tPNTsx~j}4{XWPT2iW1m$jvtOXGW*rg%%fh2T0~+OpBoy|pO}0-z!cl)Oyu zKAt?fb2QOk7SS(Vs?%vM4yp#S2u?437H!IWsA*ZUZH#1Ednsm_DFv~(vr>m<^mo)| zda(!*heba>597DsWklhUY-c8F61V4dWXHNKREz+ zzeC5Po=1QLPQ~n}5NunJM7Vc%cl~xqxU{?+O2xvVeUM&v(ZQrCiAIaEGRF`-A67+1 zd&fnT(}Y<4P#O)ntD7M4i_)jz5(Z6X+c-$QMMQ6eo-Z&@6vW0 z`^+fvURbo*J3H%fnBlxNU1LlE5u`f=rIo=X(?$zNJu?V1JjkFz9X1Jw}eIonpTqF$OUOb#=16y^tvmR4NED z1|@1;6oTFq80f%-UngIXXmrl>>_q9bz2fxXm;f=O(=xKHy>%5d;gl&k2*6nMp|iuq zmX5k#Ft_f5adNd~Yq$7=?1NkTy;i!77(N1-(ofq+O&>t$qFr z2RAsn^@z8xO6iX*@5Mj>VrTc1;PSJs_UQJj`-!)Y9BOlaNElB4JkW5)<3>55E?)K5 zGW#EO0T&>=S`)G4%K&Ew0EGv%(ZT#I9;WI?Cu@G@OOcTBVt!d9rt?N0-Hif?kGP>b z-4GmTD0BLV1HX-E=lc7yYSzSVw2W^|uHdpaHigPL;9f2}X2uyBcLgm3%awG=sw^t! z2kRnk+hS7VE~b&O)U+|7CVXhl@c-e5WfH-`iv!rQMhPk{OgYhtTB5-pS;OHtdp+Ape+L z(-(A7RLK{D9Quu}@EeGeh$JaQBMTG2e}(sbB@|r~Op2 z#GFj1b+^*2Cu5!3aY&&r5}^l`9DwChWi6;@a3~OKb$r2t#sG=q-H*!Cy7Ux@tp$X13 z+oeOgEIz5SF~ogl?Cj7MOaTr7h_C^<;Niz_^S%?CdMV%i!bP8aolrE{ze1~oHQG3u z588}12H^1AguOx;NTz+?+olXfm(Oj?%@^bY4AiJzT~UymDFwPJ+h$S-}m_hGJ>D>q{5;R7g0l@nnu*+DkUOVo8e zU8xoNlFy-lqNF(Hnan;5KggN16L3Nze(MqpD+DFo{y&yT%_s2tdv_fE+(Ncje~({a z3@e@@6})yATzcyfOE$qd5`I+6j3GHHewvh+_TX_U&M>$10uLu&3(eR?Bu5`Tx8(Q6 zzXC|l{vPvIG#HwrZ&L`!ltW(sL90k0BEZ48ULCay2>gH^*oHt;Y`nQku`Id`7$m1K zB| z!qq}&0BtXtxuHPypFkB&4Sd_g%=KI19(#xo1vlJ$s?)XEYd>*y&7vj{!+s=YEH4yx z#Af)~7@eM?`71}i>o$q&SX#UP8sfUOT&IcRIP4JzOU@7m2b9q;Ps_J|-WJ-Qf*z#^ z%ZA2aiVaelN2%I^bX-W8%wv1o`%&Na68kcPG@{0%Qj`8~RO_#(T&4Wu1^7f}64>=u z*T`9YxX+4}^_e;NiF(SCq0_D@7qQ|wl7N~A{RWk%*ESw^O4K28bYlVd-D&wED?_gO zkGp=ZT0k}sE#LqDA1$B6feLbstp2xrw5GXAC??_RaQ^Pxytr%S3AANce&yFrf&|f# zXwN~~3IXL*XP%J+*zLPRy-ODljhi^feOMN93(EiYlSF$20^Pn&=Kc(W?<$QZ z%}{k>x%jrH-jdKB!C9=y`C9w-oAVWIWsxa(lvRf2;3QNs$v0_rq^>jN?#_+gv%tXK zzvV}e<#Q=bg;1Goh918!bRsP6S>UYJu5%XnN9XiTKnHNH>kffA5_zBamsD(Mo-?M9 z9e>*Mv`9y&(c2<~=@L{23LJL%hs)7>dJC3~5XV{zs} z$!dAyF*FL>s|tXZq)?&`a&yRYu5Dw7AM9d+r(gz&tQp4<`$33uBDidV1e ziQWMfo2JiyhND`^^wD<{QLMuR%U56zLfQaxrh$!CxHQYb_C&8* zD~o#vHT;#WFgPS7&TrE@y>#u8tiQ@7ax7=_z516{&a4Uro2sgOCz15&-UKw(vyC!t z?D<@B0!y5*%7n~Lpe0tk8nT_Ny7&qCkx^Fy$tw3OOzh5L^zab=v{hIInyDgoW?Ep) zR`&%VI-ZFCuy8c_np8-*2vJ56j#?c$?tbGZ8ya?ei+uU9eqqKi8L^(HHrA1gEyXWG zj|W>La9lp!L;US9Sq3%8nGspJ5QDlR3M`N#fjEr+CFusq&H{8ikJK_yuv+5C0uT(hi{G1h3}084kxO=h1IIHhEI`Yv~VBLWQ=Y!6&!Jq1^MwRiDpFw6aQQ()fj-4V-&rk=)X)hQ)#Ny?u(ZQnM z`o}wzjfmxWK;mnrrd22c&h2?xU43G13!FT<;cv6aoC1EGy1;n_lmaJqE~O#^U2f-J zWy%T)fM z2dT~pXdQGrcTn2&fzI}((h_T;#K?4pq7nNf)PQ&f{zhJx);Sqan+n%5u$Az{l^&hc zTmbxxQV5uVWTB`{vJ%Wofe7P>pn>%-c8t=zuIsf-Kg6lDf*u?066&Ygd@PK z+$_1WE@vvoQ>jbaM=Gb$aa>wEEHAFE#l#a?dJoxDbjoGfT;H%KKlMAMV1MNfnI*5| zYrz!NEW~gbH?_leWt?`(ZM|c~+>yDS)xgdIj5S#a44Ef&?g4mFhGhX~uzEKgqV|mf zN?+V!{Q_A^Rj5^m5qN8WU&wdi_nI_&6LrVI7ww(-3BzgG>weNR?V#eixcrzH9pQ2-_;(PJ9LEaskH#a{N+p^O|pclP}fP?(!2{hIH zt3-41b0Mki3%5~^Glr9--Z1#)`bRV)lK-CdmMQ3S zoq~C_%Aej~=xDYfTmY$}>L4v^{P|((nKuM6@R9F46Y14vbVJ z9X?zR^?avoJC)M9!Bfi(?=iM4%6_1UdLv}U>5^0&?tK8|#a}kcS4|R?k`R${!sd^jzkj8GpA z6;oXV_$)}vh<+!q7-2Y>X46gvPw1Q@y<0yC;Wf?s1ar7|^q(kt;G&%BL4ywlL3*_< zW1r?F47q;C7{4S#XwrlouR-NhlSjA;uF0p47{RCD$g^7j#ZGn#f%f`;J@XgMD{%b5IULfls{|?%o+Dw3Z z<>pa6n+3aD0PquPbe||YP`E^S44%<}iwydzuJ32T3nI;<-gNb$Gq-0%bC(s>sQKHh zoDK@Nd4_Tz%*hWyQ_43XM84CB*7~6K+68wGRFrvZA|6Izb@xR`ICoA?mnQaH@FIPt zkTAz`fKEQbuReg2#{54!4+8X85gqFydIT0^-~DoZPDwRcegliQYGQ;$O#5gXwCX@tK4HsEVif@`%MEZKV3H6~~p)n7Phw{$Ety3QXDKzo2D z>Zev998N6)!{4pyGlG`oV4-1IkQ|K%ZkAHj!p`obq{n7%vpG{8a>xI)dPD#5{kbi|Br zsly@p;G>5BAd-KA=RU5GrB3PHe&M1csv5S%qcm*vTA^Kg#i4`}NHks&h6jJC=$|73 zU)Ujh<6`}^`{OnCRJM-qm1-PEwJVe;l(%)S`=+nG@b{Jx;eR95`I@3?`wXgygEPl# zHVc~P21GEigMo)|Ry}sjXgnR;)uq!3cA>`3|5T&8 zX02+uUrB}h-;|1w)7Rg)Vr`)p7ki>W=0*aShDrr&c(+#LgTrFdlB~2be?+VOmja{` zMa85}cT^<5^wnq=$!9Zb%)mAP zK5rRs^s01q`HHaOu?2Bc&~FDN4#55O@4vBt^5RX5!jw&vj110nqk43vIlpw3TL0RD z^icTtUQ!zPB*Ul8vwHR#eWsQa^j|~$eI%63ki8mRT{D#;{kdV0qS?z3IDcF-{mTq~ zBh1H-GB7aEiT_Y@jixwqPJLqpp9B1Ot0tEGFP5W5;``ZsZ0)g^v)uOJmTOnvx+@zc zt<8wHB%UGQ?d*`5@CDVsalNwy2G|_y3*KtE{9xCdZH3pb$ypo7b2(5zmvC>%&1;e5 zw~6QZ=fM6nB422+tc8{$ld{sdYqagaw}L#sK^cEz7T9Zbn!#vAigy-`V-eFc_L}W@ z@RC!*A)%Fc#Epr1moeNR2f|`D{}~Yar^ft(8;Hex;@?+#bl@F#Q)5UrqW5SL!yyU2 zk8^f(5)wzoYGv|-Qd|5piua!b-t8$nv_=od>S4;t(bWAzpxX0&5xwY>qWh;0?QATOags{G-O~PXRXSHgze%8cnv*S zC``x3`Q5JvlAHcdBsFWFR zPQcmAq+90Kw(bq88fyhX0BIDBHhvcDK`L=Jq13I|-ALlkbWrg_s)F1xH2dq8q%Dpg zdf_CR0$9R1Vo~SrV5-1RcNgY;FjIw9wyaof4Z*Q5)bAARk85*-0L14=yXS2dtsM z!%w3fO6%}=>#uthCfonwgSmc8JA}~)=k?t1VWB8t6mMCZ`<+HDkw@!On4HCO3xRy~ zymGR?KZ)OKnrtJ(%Yp`~VyZkTK&XK+vahb#OgVwo&F-Lyk3iGFzH#Nd0usSLObZdk z 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�=8*$o_}E&>I*VA)6wBf4&IV z0WpIc@)%{VQ2&QMF_`=RCzk(V%hdmg<^QbZ->l^YIs`{)(|5q`BLw&(E-WKdA@IfT F{{a_Z0<-`C literal 0 HcmV?d00001 From 8e1f9526f7d5799ecc392750212d2de6bde17542 Mon Sep 17 00:00:00 2001 From: ganglyu Date: Sat, 7 May 2022 08:57:56 +0800 Subject: [PATCH 03/17] Update requirements. --- doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md b/doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md index 1ef9918c8e0..702b936d232 100644 --- a/doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md +++ b/doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md @@ -94,16 +94,15 @@ sonic-telemetry provides gNMI/gNOI server interface. And sonic-telemetry provide ## 1.1 Requirements +### 1.1.1 Phase 1 Requirements * Set and get RPCs must be supported. Customer will use get RPC to retrieve configurations including FRR and VNET route, and use set PRC to apply new configurations. * SetRequest message must support to incrementally update configuration and fully update configurations. * Data models can be SONiC Yang models or CONFIG_DB schema. +* Ability to configure/read different DBs - ApplDB, ConfigDB, StateDB, CountersDB etc. * Configurations must be verified using YANG models even it is in CONFIG_DB schema. * Need to configure huge VNET route entries to ApplDB, with high speed. -* Configurations must be persisted after a device restart. +* Configurations for ConfigDB must be persisted after a device restart. * Need to support multi-ASIC platform. -* Support authentication and authorization with TACACS+ server. -* [low-priority] FRR Yang models will also be supported. -* [low-priority] Upgrade operation will be provided with GNOI. * Must follow gnmi-specification. * All changes to the state of the target that are included in an individual SetRequest message are considered part of a transaction. * Within an individual transaction (SetRequest) the order of operations is 'delete', 'replace', 'update'. @@ -111,6 +110,10 @@ sonic-telemetry provides gNMI/gNOI server interface. And sonic-telemetry provide * The session between the client and server MUST be encrypted using TLS. * New connections are mutually authenticated. +### 1.1.2 Phase 2 Requirements +* Support authentication and authorization with TACACS+ server. +* Upgrade operation will be provided with GNOI. + ## 1.2 Design Overview gnmi-server From e8f49f8bd84846ff53d3fdf37ae15f3612198bf0 Mon Sep 17 00:00:00 2001 From: ganglyu Date: Wed, 11 May 2022 11:35:00 +0800 Subject: [PATCH 04/17] Add a section for heart-beat mechanism --- .../SONiC_GNMI_Server_Interface_Design.md | 20 ++++++++++++------ doc/mgmt/gnmi/images/heartbeat.png | Bin 0 -> 16583 bytes 2 files changed, 14 insertions(+), 6 deletions(-) create mode 100644 doc/mgmt/gnmi/images/heartbeat.png diff --git a/doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md b/doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md index 702b936d232..3cede4e0a6d 100644 --- a/doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md +++ b/doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md @@ -387,9 +387,17 @@ SetRequest message will be: All successful changes for ConfigDB made through the gNMI SET RPC will be saved to /etc/sonic/config_db.json. -If the target database is not ConfigDB, we can’t guarantee persisitence. +If the target database is not ConfigDB, we can't guarantee persisitence. -#### 1.2.1.7 Authentication +#### 1.2.1.7 Heartbeat and Reprogram + +For full system reboot, client has to reprogram ApplDB. If the gnmi container restarts, client doesn't need to reprogram. + +We propose to use Capabilities RPC as heartbeat to detect reboot, and after reboot, client should compare ApplDB configuration and check if needs to reprogram. + +heartbeat + +#### 1.2.1.8 Authentication sonic-telemetry provides three authentication mechanisms, and sonic-gnmi will use the same mechanisms: * Password: Like HTTP Basic auth, you pass the username and password in the gRPC metadata * JWT: JSON Web Tokens standard. First you authenticate with username/password and then receive a JWT token. After you send the token in the gRPC metadata. @@ -398,23 +406,23 @@ sonic-telemetry provides three authentication mechanisms, and sonic-gnmi will us sonic-restapi uses one authentication mechanism: * In the authentication of client certificate, after the certificate chain is validated by TLS, it will further check if the common name of the end-entity certificate is in the trusted common name list of the server config. -#### 1.2.1.8 ACL +#### 1.2.1.9 ACL GNMI server will not support OpenConfig Yang models, so ACL configuration will use CONFIG_DB schema and SONiC Yang Models. -#### 1.2.1.9 Docker to Host communication +#### 1.2.1.10 Docker to Host communication 'config apply-patch' and 'config reload' are designed to run on host, and it's difficult to support them in container: 1. These commands will update redis database and restart container, when they restart gnmi, bgp, syncd and swss, the ongoing gnmi operation will be broken. 2. 'config reload' will stop service at first, run some other operations, and then restart service. If we run this command in container, it will be broken at the stop service step. 3. These commands will execute some host scripts and use systemctl to restart service, it will be dangerous to support these operations in container. The solution is to add host services for 'config apply-patch' and 'config reload' on host, and gNMI server uses dbus method to invoke these services to update configuration -##### 1.2.1.9.1 Incremental Configurations +##### 1.2.1.10.1 Incremental Configurations For incremental configuration, 'config apply-patch' should not restart gNMI, bgp, synd and swss. incremental -##### 1.2.1.9.2 Full Configurations +##### 1.2.1.10.2 Full Configurations For full configuration, there’re 2 possible solutions: * gNMI server needs to send response at first, and then invoke 'config reload'. diff --git a/doc/mgmt/gnmi/images/heartbeat.png b/doc/mgmt/gnmi/images/heartbeat.png new file mode 100644 index 0000000000000000000000000000000000000000..b6bda79d12cd8d00d7d963e9c88f47efa269d362 GIT binary patch literal 16583 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 literal 0 HcmV?d00001 From 5f829c8ec5fe9cdc3f5db0b5348904fd8b469c4d Mon Sep 17 00:00:00 2001 From: ganglyu Date: Thu, 9 Jun 2022 08:56:21 +0800 Subject: [PATCH 05/17] Update requirements and fix typo. --- doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md b/doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md index 3cede4e0a6d..145e05d9baf 100644 --- a/doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md +++ b/doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md @@ -95,7 +95,7 @@ sonic-telemetry provides gNMI/gNOI server interface. And sonic-telemetry provide ## 1.1 Requirements ### 1.1.1 Phase 1 Requirements -* Set and get RPCs must be supported. Customer will use get RPC to retrieve configurations including FRR and VNET route, and use set PRC to apply new configurations. +* Set and get RPCs must be supported. Customer will use get RPC to retrieve configurations including FRR and VNET route, and use set RPC to apply new configurations. * SetRequest message must support to incrementally update configuration and fully update configurations. * Data models can be SONiC Yang models or CONFIG_DB schema. * Ability to configure/read different DBs - ApplDB, ConfigDB, StateDB, CountersDB etc. @@ -103,6 +103,7 @@ sonic-telemetry provides gNMI/gNOI server interface. And sonic-telemetry provide * Need to configure huge VNET route entries to ApplDB, with high speed. * Configurations for ConfigDB must be persisted after a device restart. * Need to support multi-ASIC platform. +* Ability to support bulk set-get operations. * Must follow gnmi-specification. * All changes to the state of the target that are included in an individual SetRequest message are considered part of a transaction. * Within an individual transaction (SetRequest) the order of operations is 'delete', 'replace', 'update'. From 5c6882dc90b8cc4c381e0603412b35f29442d81b Mon Sep 17 00:00:00 2001 From: ganglyu Date: Mon, 20 Jun 2022 09:55:05 +0800 Subject: [PATCH 06/17] Update mixed requests solution --- .../gnmi/SONiC_GNMI_Server_Interface_Design.md | 4 ++++ doc/mgmt/gnmi/images/mixed requests.png | Bin 0 -> 5593 bytes 2 files changed, 4 insertions(+) create mode 100644 doc/mgmt/gnmi/images/mixed requests.png diff --git a/doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md b/doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md index 145e05d9baf..c164e81b303 100644 --- a/doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md +++ b/doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md @@ -434,6 +434,10 @@ For full configuration, there’re 2 possible solutions: full-gnmi-gnoi +The full configuration request will be overwritten by subsequent full configuration request or incremental configuration request. + +overwritten-config + ### 1.2.2 Container All the introduced features will be part of the sonic-gnmi package installed in sonic-gnmi container. diff --git a/doc/mgmt/gnmi/images/mixed requests.png b/doc/mgmt/gnmi/images/mixed requests.png new file mode 100644 index 0000000000000000000000000000000000000000..b3f0678106dfb583762470871c54f6e14cd8905f GIT binary patch literal 5593 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 Q=vX%3O|u(idd^Y*2dI2Sl>h($ literal 0 HcmV?d00001 From c84eb06e37119ee494cd770e63c49433d5f2e716 Mon Sep 17 00:00:00 2001 From: ganglyu Date: Mon, 4 Jul 2022 09:46:33 +0800 Subject: [PATCH 07/17] Replace png with svg. --- .../SONiC_GNMI_Server_Interface_Design.md | 26 +- doc/mgmt/gnmi/images/cli.png | Bin 26734 -> 0 bytes doc/mgmt/gnmi/images/cli.svg | 506 +++++ doc/mgmt/gnmi/images/data_flow.png | Bin 78618 -> 0 bytes doc/mgmt/gnmi/images/data_flow.svg | 1442 ++++++++++++++ doc/mgmt/gnmi/images/data_flow_get.png | Bin 36900 -> 0 bytes doc/mgmt/gnmi/images/data_flow_get.svg | 659 +++++++ doc/mgmt/gnmi/images/full_rpc.png | Bin 8631 -> 0 bytes doc/mgmt/gnmi/images/full_rpc.svg | 438 +++++ doc/mgmt/gnmi/images/full_rpc_gnoi.png | Bin 12343 -> 0 bytes doc/mgmt/gnmi/images/full_rpc_gnoi.svg | 472 +++++ doc/mgmt/gnmi/images/get_lock.png | Bin 24758 -> 0 bytes doc/mgmt/gnmi/images/get_lock.svg | 808 ++++++++ doc/mgmt/gnmi/images/gnmi.png | Bin 32636 -> 0 bytes doc/mgmt/gnmi/images/gnmi.svg | 738 ++++++++ doc/mgmt/gnmi/images/heartbeat.png | Bin 16583 -> 0 bytes doc/mgmt/gnmi/images/heartbeat.svg | 608 ++++++ doc/mgmt/gnmi/images/incremental_rpc.png | Bin 6345 -> 0 bytes doc/mgmt/gnmi/images/incremental_rpc.svg | 397 ++++ doc/mgmt/gnmi/images/message_example.png | Bin 15108 -> 0 bytes doc/mgmt/gnmi/images/message_example.svg | 1686 +++++++++++++++++ doc/mgmt/gnmi/images/mixed requests.png | Bin 5593 -> 0 bytes doc/mgmt/gnmi/images/mixed requests.svg | 153 ++ doc/mgmt/gnmi/images/restapi.png | Bin 28816 -> 0 bytes doc/mgmt/gnmi/images/restapi.svg | 373 ++++ doc/mgmt/gnmi/images/set_lock.png | Bin 20111 -> 0 bytes doc/mgmt/gnmi/images/set_lock.svg | 744 ++++++++ 27 files changed, 9037 insertions(+), 13 deletions(-) delete mode 100644 doc/mgmt/gnmi/images/cli.png create mode 100644 doc/mgmt/gnmi/images/cli.svg delete mode 100644 doc/mgmt/gnmi/images/data_flow.png create mode 100644 doc/mgmt/gnmi/images/data_flow.svg delete mode 100644 doc/mgmt/gnmi/images/data_flow_get.png create mode 100644 doc/mgmt/gnmi/images/data_flow_get.svg delete mode 100644 doc/mgmt/gnmi/images/full_rpc.png create mode 100644 doc/mgmt/gnmi/images/full_rpc.svg delete mode 100644 doc/mgmt/gnmi/images/full_rpc_gnoi.png create mode 100644 doc/mgmt/gnmi/images/full_rpc_gnoi.svg delete mode 100644 doc/mgmt/gnmi/images/get_lock.png create mode 100644 doc/mgmt/gnmi/images/get_lock.svg delete mode 100644 doc/mgmt/gnmi/images/gnmi.png create mode 100644 doc/mgmt/gnmi/images/gnmi.svg delete mode 100644 doc/mgmt/gnmi/images/heartbeat.png create mode 100644 doc/mgmt/gnmi/images/heartbeat.svg delete mode 100644 doc/mgmt/gnmi/images/incremental_rpc.png create mode 100644 doc/mgmt/gnmi/images/incremental_rpc.svg delete mode 100644 doc/mgmt/gnmi/images/message_example.png create mode 100644 doc/mgmt/gnmi/images/message_example.svg delete mode 100644 doc/mgmt/gnmi/images/mixed requests.png create mode 100644 doc/mgmt/gnmi/images/mixed requests.svg delete mode 100644 doc/mgmt/gnmi/images/restapi.png create mode 100644 doc/mgmt/gnmi/images/restapi.svg delete mode 100644 doc/mgmt/gnmi/images/set_lock.png create mode 100644 doc/mgmt/gnmi/images/set_lock.svg diff --git a/doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md b/doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md index c164e81b303..a21938f22e2 100644 --- a/doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md +++ b/doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md @@ -64,7 +64,7 @@ To understand the requirements, we need to go over current SONiC management comp * SONIC CLI commands -cli +cli 1. Users could use SONiC CLI command "show runningconfig all" to read current configuration. - The blue arrow indicates this process. @@ -79,7 +79,7 @@ And we have the possibility to improve generic_config_updater performance. * SONIC Restapi -restapi +restapi sonic-restapi is a docker container running in SONiC, which exposes HTTPS endpoints to perform dynamic configuration including config VNET routes. One challenge of sonic-restapi is to provide a general config schema. Currently its API is designed case by case. @@ -117,7 +117,7 @@ sonic-telemetry provides gNMI/gNOI server interface. And sonic-telemetry provide ## 1.2 Design Overview -gnmi-server +gnmi-server ### 1.2.1 Basic Approach @@ -133,7 +133,7 @@ Currently we do not support rollback for ApplDB, therefore VNET route will be an Since a single SetRequest will be treated as a transaction, sonic-gnmi does not support parallel write operations. We will put the SetRequests in a queue and serve them with a single worker. -set +set * Get @@ -141,7 +141,7 @@ Every set RPC will create a checkpoint of running configuration before any modif Get RPC during write period should use checkpoint, and normally Get RPC will directly fetch ConfigDB. -get +get #### 1.2.1.2 Yang Validation @@ -160,7 +160,7 @@ And we use the first element to specify the target database. A single request cannot have both SONiC YANG paths and ConfigDB/ApplDB schema paths. -message-example +message-example 1. Stage 1: SONiC DB Schema @@ -176,9 +176,9 @@ At stage 2, we will support SONiC Yang schema. * If origin is ‘sonic_yang’ and target is ‘APPL_DB’, request will use SONiC Yang models schema, and special_config_updater will be invoked. * If origin is ‘sonic_yang’ and target is 'CONFIG_DB' or NULL, request will use SONiC Yang models schema, and sonic_config_engine or generic_config_engine will be invoked. -set-flow +set-flow -get-flow +get-flow Assume running-config to be: @@ -396,7 +396,7 @@ For full system reboot, client has to reprogram ApplDB. If the gnmi container re We propose to use Capabilities RPC as heartbeat to detect reboot, and after reboot, client should compare ApplDB configuration and check if needs to reprogram. -heartbeat +heartbeat #### 1.2.1.8 Authentication sonic-telemetry provides three authentication mechanisms, and sonic-gnmi will use the same mechanisms: @@ -421,22 +421,22 @@ The solution is to add host services for 'config apply-patch' and 'config reload For incremental configuration, 'config apply-patch' should not restart gNMI, bgp, synd and swss. -incremental +incremental ##### 1.2.1.10.2 Full Configurations For full configuration, there’re 2 possible solutions: * gNMI server needs to send response at first, and then invoke 'config reload'. -full-gnmi +full-gnmi * Use gNMI request and gNOI request together to implement full configuration update. -full-gnmi-gnoi +full-gnmi-gnoi The full configuration request will be overwritten by subsequent full configuration request or incremental configuration request. -overwritten-config +overwritten-config ### 1.2.2 Container diff --git a/doc/mgmt/gnmi/images/cli.png b/doc/mgmt/gnmi/images/cli.png deleted file mode 100644 index fa811f1dd429db1c391e8ac8021049829c367bb9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26734 zcmeFZcT|&G5HAV{sDL0SA|TR1gaA^dcL8ZOLWzK4=mDhnBB&IlH|Zh*QUV$vNVkCW zA~9g7D!un!@^al=FuJQ2IxP*)}@?mRaQ{vowe(orHJdJ{#tcb5$OfBe3N zkqZ$K^+&>kxXJMqoQTN!h^DI2El<<=TAMQZ@!FD9p-s%TXV+Pev`Y&iPh$q>2Gfup zlWB8r<52k&(FYNo)o>m%t+IewO0}2S0H`@aQcnDDN$@gvxboMTlFj@58!$XVc5&UCvQ_+DM0;K|YhQ z=~q=g#{QBmxf(vvA1OX@g>0V`cab8*$A?GWYd2p(W?3f5cil=dU@>LaA6)tHG#7); z)_YtZmDF@i*Zz!x-~hH9Gg!sO*bHSiT)#Wtl�Sx)j=!ICRiH;6V#M(%25sGxP2h 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 W9kHtL0lXvVfFaCCuT1COv;P1EfF!5@ diff --git a/doc/mgmt/gnmi/images/cli.svg b/doc/mgmt/gnmi/images/cli.svg new file mode 100644 index 00000000000..e017036ef43 --- /dev/null +++ b/doc/mgmt/gnmi/images/cli.svg @@ -0,0 +1,506 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Page-1 + + + + + + + + Process + + + + + + + + + + + + + + + + + + + Sheet.31 + SONiC utilities + + + + SONiC utilities + + Process.35 + User + + + + + + + + + + + + + + + + + + + User + + Process.32 + show + + + + + + + + + + + + + + + + + + + show + + Process.34 + generic_config_updater + + + + + + + + + + + + + + + + + + + generic_config_updater + + 1-D single + + + + + + + Dynamic connector + + + + Sheet.73 + show runningconfig all + + + + show runningconfig all + + Sheet.74 + config apply-patch + + + + config apply-patch + + Document + Sonic Yang models + + + + + + + + + + + + + + + + + + + Sonic Yang models + + Sheet.86 + + Side brace + + + + + + + + + + + + + + + + Sheet.85 + + Sheet.78 + + Datastore + SONiC Redis DB + + + + + + + + + + + + + + + + + + + + + + SONiC Redis DB + + Dynamic connector.77 + + + + + Sheet.79 + + Datastore + SONiC Redis DB + + + + + + + + + + + + + + + + + + + + + + SONiC Redis DB + + Dynamic connector.77 + + + + + Sheet.82 + + Datastore + SONiC Redis DB + + + + + + + + + + + + + + + + + + + + + + SONiC Redis DB + + Dynamic connector.77 + + + + + + + Dynamic connector.87 + + + + Dynamic connector.89 + + + + Process.90 + config + + + + + + + + + + + + + + + + + + + config + + 1-D single.91 + + + + + + + Sheet.92 + config reload + + + + config reload + + Dynamic connector.93 + + + + Dynamic connector.94 + + + + 1-D single.95 + + + + + + + diff --git a/doc/mgmt/gnmi/images/data_flow.png b/doc/mgmt/gnmi/images/data_flow.png deleted file mode 100644 index 260b793d62e71a79be0e8f1ddbd2071b22092976..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 78618 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Page-1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + CFF Container + + Sheet.21 + + + + + + + + + + + + + + Sheet.22 + SetRequest Flow chart + + + + + + + + + + + + + + + + + + + + + + SetRequest Flow chart + + + Swimlane List + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Swimlane (vertical) + + Sheet.18 + + + + + + + + + + + + + + Sheet.19 + gNMI server + + + + + + + + + + + + + + + + + + + + + + gNMI server + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Swimlane (vertical).28 + + Sheet.29 + + + + + + + + + + + + + + Sheet.30 + Sonic_config_engine + + + + + + + + + + + + + + + + + + + + + + Sonic_config_engine + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Swimlane (vertical).31 + + Sheet.32 + + + + + + + + + + + + + + Sheet.33 + Generic_config_updater + + + + + + + + + + + + + + + + + + + + + + Generic_config_updater + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Swimlane (vertical).34 + + Sheet.35 + + + + + + + + + + + + + + Sheet.36 + Special_config_updater + + + + + + + + + + + + + + + + + + + + + + Special_config_updater + + + Phase List + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Separator (vertical) + + Sheet.26 + + + + + + + + Sheet.27 + + + + + + + + + + + + + + + + + + + + Start/End + Start + + + + + + + + + + + + + + + + + + + + + + + + Start + + Dynamic connector + + + + + + + Process.234 + Iterate request paths + + + + + + + + + + + + + + + + + + + + + + + + Iterate request paths + + Dynamic connector.235 + + + + + + + Decision.236 + Different origin? + + + + + + + + + + + + + + + + + + + + + + + + Different origin? + + Dynamic connector.237 + No + + + + + + + + No + + Start/End.254 + Invalid request + + + + + + + + + + + + + + + + + + + + + + + + Invalid request + + Dynamic connector.255 + Yes + + + + + + + + Yes + + Decision.256 + Origin is sonic_db + + + + + + + + + + + + + + + + + + + + + + + + Origin is sonic_db + + Dynamic connector.257 + No + + + + + + + + No + + Process.258 + Run Yang validation and write to ConfigDB + + + + + + + + + + + + + + + + + + + + + + + + Run Yang validation and write to ConfigDB + + Dynamic connector.259 + Yes + + + + + + + + Yes + + Decision.260 + Incremental configurations? + + + + + + + + + + + + + + + + + + + + + + + + Incremental configurations? + + Dynamic connector.261 + Yes + + + + + + + + Yes + + Process.262 + Run Yang validation and write to ConfigDB + + + + + + + + + + + + + + + + + + + + + + + + Run Yang validation and write to ConfigDB + + Dynamic connector.263 + No + + + + + + + + No + + Process.266 + Run Yang validation and write to APPlDB + + + + + + + + + + + + + + + + + + + + + + + + Run Yang validation and write to APPlDB + + Dynamic connector.267 + No + + + + + + + + No + + Decision.268 + Origin is sonic_yang + + + + + + + + + + + + + + + + + + + + + + + + Origin is sonic_yang + + Dynamic connector.269 + No + + + + + + + + No + + Decision.270 + target is CONFIG_DB? + + + + + + + + + + + + + + + + + + + + + + + + target is CONFIG_DB? + + Dynamic connector.271 + Yes + + + + + + + + Yes + + Decision.272 + Incremental configurations? + + + + + + + + + + + + + + + + + + + + + + + + Incremental configurations? + + Dynamic connector.273 + Yes + + + + + + + + Yes + + Process.274 + Run Yang validation and write to ConfigDB + + + + + + + + + + + + + + + + + + + + + + + + Run Yang validation and write to ConfigDB + + Dynamic connector.275 + Yes + + + + + + + + Yes + + Process.276 + Run Yang validation and write to ConfigDB + + + + + + + + + + + + + + + + + + + + + + + + Run Yang validation and write to ConfigDB + + Dynamic connector.277 + No + + + + + + + + No + + Dynamic connector.279 + No + + + + + + + + No + + Process.280 + Run Yang validation and write to APPlDB + + + + + + + + + + + + + + + + + + + + + + + + Run Yang validation and write to APPlDB + + Decision.1000 + target is CONFIG_DB + + + + + + + + + + + + + + + + + + + + + + + + target is CONFIG_DB + + Dynamic connector.1001 + Yes + + + + + + + + Yes + + Start/End.1002 + Invalid request + + + + + + + + + + + + + + + + + + + + + + + + Invalid request + + diff --git a/doc/mgmt/gnmi/images/data_flow_get.png b/doc/mgmt/gnmi/images/data_flow_get.png deleted file mode 100644 index 24bcf9c6a5ba29870a2f73b624afb14076f19509..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36900 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 Zf`tps>1_!;bN9eMX>kRyQjs^l{|oC+yN3V( diff --git a/doc/mgmt/gnmi/images/data_flow_get.svg b/doc/mgmt/gnmi/images/data_flow_get.svg new file mode 100644 index 00000000000..26fcf7a86be --- /dev/null +++ b/doc/mgmt/gnmi/images/data_flow_get.svg @@ -0,0 +1,659 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Page-1 + + + + + Start/End + Start + + + + + + + + + + + + + + + + + + + + + + + Start + + Dynamic connector + + + + + + + Process.234 + Iterate request paths + + + + + + + + + + + + + + + + + + + + + + + Iterate request paths + + Dynamic connector.235 + + + + + + + Decision.236 + Different origin? + + + + + + + + + + + + + + + + + + + + + + + Different origin? + + Dynamic connector.237 + No + + + + + + + + No + + Start/End.254 + Invalid request + + + + + + + + + + + + + + + + + + + + + + + Invalid request + + Dynamic connector.255 + Yes + + + + + + + + Yes + + Decision.256 + Origin is sonic_db + + + + + + + + + + + + + + + + + + + + + + + Origin is sonic_db + + Dynamic connector.257 + No + + + + + + + + No + + Decision.268 + Origin is sonic_yang + + + + + + + + + + + + + + + + + + + + + + + Origin is sonic_yang + + Dynamic connector.269 + No + + + + + + + + No + + Decision.270 + target is CONFIG_DB? + + + + + + + + + + + + + + + + + + + + + + + target is CONFIG_DB? + + Dynamic connector.271 + Yes + + + + + + + + Yes + + Dynamic connector.273 + Yes + + + + + + + + Yes + + Dynamic connector.279 + No + + + + + + + + No + + Start/End.288 + Invalid request + + + + + + + + + + + + + + + + + + + + + + + Invalid request + + Process.44 + Read from ConfigDB + + + + + + + + + + + + + + + + + + + + + + + Read from ConfigDB + + Dynamic connector.45 + Yes + + + + + + + + Yes + + Process.46 + Read from ApplDB + + + + + + + + + + + + + + + + + + + + + + + Read from ApplDB + + Dynamic connector.47 + No + + + + + + + + No + + Process.48 + Read from ConfigDB and translate to Yang models + + + + + + + + + + + + + + + + + + + + + + + Read from ConfigDB and translate to Yang models + + Process.49 + Read from ApplDB and translate to Yang models + + + + + + + + + + + + + + + + + + + + + + + Read from ApplDB and translate to Yang models + + Decision.1000 + target is CONFIG_DB? + + + + + + + + + + + + + + + + + + + + + + + target is CONFIG_DB? + + Dynamic connector.1001 + Yes + + + + + + + + Yes + + diff --git a/doc/mgmt/gnmi/images/full_rpc.png b/doc/mgmt/gnmi/images/full_rpc.png deleted file mode 100644 index a879070320e0f5e7a08c264958ccb3bc8d2fa7fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8631 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Page-1 + + + + + + + + + + Object lifeline + GNMI client + + Sheet.2 + + + + Sheet.3 + + + + Sheet.4 + + + Sheet.5 + + + + + + + GNMI client + + + + + + + + Object lifeline.6 + GNMI server + + Sheet.7 + + + + Sheet.8 + + + + Sheet.9 + + + Sheet.10 + + + + + + + GNMI server + + + Activation + + + + + + + Message + SetRequest + + + + + + + + + + + SetRequest + + Return Message + SetResponse + + + + + + + + + + + SetResponse + + + + + + + + User + + Sheet.17 + + Sheet.18 + + + + Sheet.19 + + + + + + + + + + + + Script + + Sheet.21 + + + + Sheet.22 + + + + Sheet.23 + + + + Sheet.24 + + + + Sheet.25 + + + + Sheet.26 + + + + Sheet.27 + + + + Sheet.28 + + + + Sheet.29 + + + + + + + + + + Object lifeline.30 + Host service + + Sheet.31 + + + + Sheet.32 + + + + Sheet.33 + + + Sheet.34 + + + + + + + Host service + + + + + + + + + Script.35 + + Sheet.36 + + + + Sheet.37 + + + + Sheet.38 + + + + Sheet.39 + + + + Sheet.40 + + + + Sheet.41 + + + + Sheet.42 + + + + Sheet.43 + + + + Sheet.44 + + + + + Activation.45 + + + + + + + Message.46 + + + + + + + + + + Sheet.49 + Config reload + + + + Config reload + + Self Message.50 + + + + + + + + + + Sheet.51 + Config load or run yang validation + + + + Config load or run yang validation + + Self Message.52 + + + + + + + + + + Activation.55 + + + + + + + Self Message.56 + + + + + + + + + + Sheet.57 + Config reload + + + + Config reload + + Sheet.53 + + Sheet.54 + + + + + diff --git a/doc/mgmt/gnmi/images/full_rpc_gnoi.png b/doc/mgmt/gnmi/images/full_rpc_gnoi.png deleted file mode 100644 index a4d25f4141016824974dd6efa6020898f7af6a37..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12343 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 H^7{V(6!1pC diff --git a/doc/mgmt/gnmi/images/full_rpc_gnoi.svg b/doc/mgmt/gnmi/images/full_rpc_gnoi.svg new file mode 100644 index 00000000000..568efa538af --- /dev/null +++ b/doc/mgmt/gnmi/images/full_rpc_gnoi.svg @@ -0,0 +1,472 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Page-1 + + + + + + + + + + Object lifeline + GNMI/GNOI client + + Sheet.2 + + + + Sheet.3 + + + + Sheet.4 + + + Sheet.5 + + + + + + + GNMI/GNOI client + + + + + + + + Object lifeline.6 + GNMI/GNOI server + + Sheet.7 + + + + Sheet.8 + + + + Sheet.9 + + + Sheet.10 + + + + + + + GNMI/GNOI server + + + Activation + + + + + + + Message + GNMI SetRequest + + + + + + + + + + + GNMI SetRequest + + Return Message + GNMI SetResponse + + + + + + + + + + + GNMI SetResponse + + + + + + + + User + + Sheet.17 + + Sheet.18 + + + + Sheet.19 + + + + + + + + + + + + Script + + Sheet.21 + + + + Sheet.22 + + + + Sheet.23 + + + + Sheet.24 + + + + Sheet.25 + + + + Sheet.26 + + + + Sheet.27 + + + + Sheet.28 + + + + Sheet.29 + + + + + + + + + + Object lifeline.30 + Host service + + Sheet.31 + + + + Sheet.32 + + + + Sheet.33 + + + Sheet.34 + + + + + + + Host service + + + + + + + + + Script.35 + + Sheet.36 + + + + Sheet.37 + + + + Sheet.38 + + + + Sheet.39 + + + + Sheet.40 + + + + Sheet.41 + + + + Sheet.42 + + + + Sheet.43 + + + + Sheet.44 + + + + + Activation.45 + + + + + + + Message.46 + + + + + + + + + + Sheet.49 + Config reload with previous configuration + + + + Config reload with previous configuration + + Self Message.50 + + + + + + + + + + Sheet.51 + Run yang validation and store the configuration + + + + Run yang validation and store the configuration + + Self Message.52 + + + + + + + + + + Message.53 + GNOI RebootRequest + + + + + + + + + + + GNOI RebootRequest + + Return Message.54 + GNOI RebootResponse + + + + + + + + + + + GNOI RebootResponse + + Message.55 + GNOI RebootStatusRequest + + + + + + + + + + + GNOI RebootStatusRequest + + Return Message.56 + GNOI RebootStatusResponse + + + + + + + + + + + GNOI RebootStatusResponse + + Activation.57 + + + + + + + diff --git a/doc/mgmt/gnmi/images/get_lock.png b/doc/mgmt/gnmi/images/get_lock.png deleted file mode 100644 index 632aa4adf38d0a4b2e8d0d26d5afaf472bdd19d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24758 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 diff --git a/doc/mgmt/gnmi/images/get_lock.svg b/doc/mgmt/gnmi/images/get_lock.svg new file mode 100644 index 00000000000..1bf062a5982 --- /dev/null +++ b/doc/mgmt/gnmi/images/get_lock.svg @@ -0,0 +1,808 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Page-1 + + + + + + + + + + Object lifeline + GNMI client + + Sheet.2 + + + + Sheet.3 + + + + Sheet.4 + + + Sheet.5 + + + + + + + GNMI client + + + + + + + + Object lifeline.6 + GNMI write thread + + Sheet.7 + + + + Sheet.8 + + + + Sheet.9 + + + Sheet.10 + + + + + + + GNMI write thread + + + Activation + + + + + + + Message + SetRequest + + + + + + + + + + + SetRequest + + Return Message + SetResponse + + + + + + + + + + + SetResponse + + + + + + + + User + + Sheet.17 + + Sheet.18 + + + + Sheet.19 + + + + + + + + + + + + Script + + Sheet.21 + + + + Sheet.22 + + + + Sheet.23 + + + + Sheet.24 + + + + Sheet.25 + + + + Sheet.26 + + + + Sheet.27 + + + + Sheet.28 + + + + Sheet.29 + + + + + + + + + + Object lifeline.30 + GNMI read thread + + Sheet.31 + + + + Sheet.32 + + + + Sheet.33 + + + Sheet.34 + + + + + + + GNMI read thread + + + + + + + + + Script.35 + + Sheet.36 + + + + Sheet.37 + + + + Sheet.38 + + + + Sheet.39 + + + + Sheet.40 + + + + Sheet.41 + + + + Sheet.42 + + + + Sheet.43 + + + + Sheet.44 + + + + + + + + + + Object lifeline.51 + checkpoint + + Sheet.52 + + + + Sheet.53 + + + + Sheet.54 + + + Sheet.55 + + + + + + + checkpoint + + + + + + + + Object lifeline.76 + Database + + Sheet.77 + + + + Sheet.78 + + + + Sheet.79 + + + Sheet.80 + + + + + + + Database + + + + + + + + + Database + + Sheet.98 + + Sheet.99 + + + + Sheet.100 + + + + Sheet.101 + + + + Sheet.102 + + + + + + Message.162 + Write Database + + + + + + + + + + + Write Database + + Activation.165 + + + + + + + Return Message.166 + + + + + + + + + + + + + + + + Document + + Sheet.174 + + + + Sheet.175 + + + + Sheet.176 + + + + Sheet.177 + + + + Sheet.178 + + + + Sheet.179 + + + + + Message.180 + Remove checkpoint + + + + + + + + + + + Remove checkpoint + + Activation.183 + + + + + + + Activation.185 + + + + + + + Message.186 + GetRequest + + + + + + + + + + + GetRequest + + Activation.187 + + + + + + + Message.188 + Read from database + + + + + + + + + + + Read from database + + Return Message.189 + + + + + + + + + + Return Message.190 + + + + + + + + + + Activation.191 + + + + + + + Message.192 + SetRequest + + + + + + + + + + + SetRequest + + Activation.193 + + + + + + + Message.194 + Write Database + + + + + + + + + + + Write Database + + Return Message.195 + + + + + + + + + + Activation.201 + + + + + + + Message.202 + + + + + + + + + + Sheet.203 + GetRequest + + + + GetRequest + + Sheet.204 + GetResponse + + + + GetResponse + + Activation.206 + + + + + + + Message.207 + Read from checkpoint + + + + + + + + + + + Read from checkpoint + + Return Message.208 + + + + + + + + + + Return Message.209 + GetResponse + + + + + + + + + + + GetResponse + + Return Message.210 + SetResponse + + + + + + + + + + + SetResponse + + Message.211 + Create checkpoint + + + + + + + + + + + Create checkpoint + + Activation.212 + + + + + + + Message.213 + Create checkpoint + + + + + + + + + + + Create checkpoint + + Activation.214 + + + + + + + Message.215 + Remove checkpoint + + + + + + + + + + + Remove checkpoint + + Activation.216 + + + + + + + diff --git a/doc/mgmt/gnmi/images/gnmi.png b/doc/mgmt/gnmi/images/gnmi.png deleted file mode 100644 index 66a083a158ebf93e85c38bd8dc441d76d01ab5e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32636 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%0Ag$mRRBt$$$_CLfv>MmJ5s7<}kfyG^zM#;ZB zM@Z~OzmPypS$a9KGVVmnghk6o7oEEJ8Ha`UyYw0@R=7Tfxnz5g4TbtA+-mI|E5u5R z7@LdS%XODE64ZM$%*EeXw_;bgmuh}5J!EC_QOUk^T6INq<+Gxew(HDT;keZwXs@#_ z*=t`@DY&er>SnGayP7BRtooJOuHiO*@|Fu-<}6L^h%sp_mwb7DkofAYTh0eho@wLq zymwyq&nd)r+ZoCu>${sVIfX?40$LlCbbF#|B}bw%OM8Q(LAS%T>jf-xS|p*%4)tJ| zNr2Dgwq&=|?NOJ*(X-mD9o=`AaD zE364U4Z{_;YHJ;11cCw_Ljum1Xv?vk>rU8XrNory?mF%bheta$&!j7mmdZ!2Y%{o&0* z{Ror^?)tvaqF5%5=CL-i)|)j*M8l-}hW+ zVk_J{WB9#Sc~|SFmA1%aGF0^(9Je_uZY|A<*uNSL6cY*4i7Sf2t6B8DzaH)y%YxqJ z45A+Z#O1hZ7ckWDwh>m)&bQPu7kcQl8M0_mGvawsFvveyZFE{X z(}=ps#L0Lf*G|N9Aj+R9w@lvzbO(eTW&A zId6=}L~UB21$JFUX@!^hfv4PybKJf-Qk^c-yS`0m5->6ETy^`gN*|H&8)ijP*nMvY zI7Ft*=7M`(3;1$Lb_x8%<9SEHnuZ5^Nxm}zXEjs`9#-u=G+X8O3(Ga`zgjYK!O~cI zvdyJ=ZmjSrcuXu(<4%K#`BaoLepFRlEm}+N`@1mvVF+j;gM`m-RP!v|C#XS%)ZScc zmuCxF?sj!b>>+(q?y~3>&jTSC$AOMAjSD`on&1QyQIZ(p9nT^!if?t*PVv;=1#~C* z&S&KMabgf`b#D4fl1Ww((N;C&xSy}xzcOzqWlD*C(Mn-V>)gG|CG@)Sd9bEgS6uIc z&U$5jDLurSCF1@LY2VX##yghIOf%TiuG`T)?62No9di|J9GTYH6_i$oipth(Bk6b^ zk-*%2j2N+WrEu(Q3np{#-Wj}W zTdg;P5aurKKF5BT9t4sPBSuDv7(+FI#}giqHrgf2rL8U6${D}HujOY}8*kFA>yj#d zaRc!Xs`3^*r8#!RVwAwpZ7>+s+-bW6i1{Y25C%t$FHTyu)w)}TYv@haTDw){i*+3x z-Q2E4eUehd44n_J1fV%7AGvM?5#@lZ`m+|Iqq$kT<48R^-aL1kVt<{lY3Oac3gCH^ zs4``kbf)EoYD>%rEzWJ*{{T2R{3kmIIBS$0y}eiqWNF%3Ps=s=z}_AyH74cr#vBEk zEKRd@j08ff4+Ixl+OI4~ia|~=I#GHvO)9X7Eo3QCkv$-~DtY}j@yFP) zUWR%7-Gt+Es8>FGOMI=*{0xghDn@lpw5IYFf}TadIahVmhMSXCv3&BOIWdXvj1Tq- z4Q4k#vb^2uM}EZKl2V|t1hSB73nXc{pZ!4qH_7DA$TXMFp-wDD7pn1bag#rc14tsP z!of=%9G7HgesyqdM5rlUy1y%BtSUJ{dh^9YCR`PXXe8v2+aZKVd@c zsdXboT0wr!9NRlm(dkQrNT!Y^!PXex8elqO%@D|wuPudq-&=@POdI?N1{7E(0B*f{ zU$a&qLj`pkY4H4mYR^QSg@kA!N4G_Xy}HWk&0*g07rcAeZvr9jlt2b$;So-P+j+Ab z3U&N=`-J{5u_Rl5^b@1HqmR@abHqG56Ql_d!dWvA;l26}WICTfdy@T%i?#UKom*OK zYE=fq?Mn5BJdk&C*4fL+g-nY&H(E<20jYRtKMsIBd9VAL-0ZLG-@dbw$A(Bl0d=}s z-15N+3{juEog5q{T9@Vb>2l{pwHo$2A;yb=ufbBcc(8lL-;-_#7Ppokg?qo;z6?2$ z*fL<}un>jV!~1MTEM8|oBM5?)enG1+6q z-EPo_Yxm{DIl{7y9h6sk#l@u!@0s#A(w%G)LE3~fg;4-In2V;z$yGwXBN+&mmftx& zyaKtQ1I$HW1(3X5hY~d@%pwaB;06Uq5cXL3Sn&aqcXrM+D0<#&R|4&3 zYlTvVYi8#7Gz{33YL!1~?DIAQ2?+?o4MC!=Gmo=;cHy1(Kt#xJ>6c(ssOQfyL6z;- z`(-o2(z~CS)yKC_+Y12UIbQDCy0dis3a%p~BVZB!-Onv<21=bg@_x= zCA5yAsOh&_ToCzLi|b?W0S{28qve(~D&Xagb9nxJ!whO<9DX(l`j3}{yLg!Ut_)r= zZ(sANq*qh`7iLRAvSz*eswhMZU~#=O+t#kLaq_~(`)^%X*cU(xa7c9SV`x`%R)_~c zCxGlV^b-#RDP9{{T$M#1mo$0;HMs*Q2J~@{D|Fd#PW&&<;!GGMm%vwd(Oi{(szB4= zv?w(0oe}%{PLk;aV5@y)z+p}#aR4}24_FNR_?UoO)$U{b2M3kfm){9s{7_~CK>j5> zQZ9Eht%xdgS-rKH-)rbhfBQVDM;MIM=n3*`Y<5jdRseVR#IFfhKi6H1nfjS(dPN!^`q_XtL+t&?|#AbU3p8p&wf`*re;CNd>xJE^XdSR zE3=1wbec=@Hj^a9TP@m{XpINl!!tgJN1*R+?s2P{X6aqtE`>xOa)6Ypmx03s0d05s zPPS}$wQSbTBHd)KFx#EkOJi${i>o`2j0{D1CKd5uQY>d%918YV8~^lA;~I2k9lDufd0P4 z=>-dRN?#i+jbCwFpK(t5Ob4D5Vibq{IwFt2742k{Al;S z(sl;)D@aTo?z|%LLC8~c8TXNuEnTlQAdxUqb)yz3;3<~!C8E|>p#iWQwr6&;5-0p- zM6dV&(LDt~Q+2LmNsu5Ak!)eyG*mwT*M1o$0Gib2zVo(J35Q*;3%>NG9Yo2@H8Wrj zleXs1UfIJd)~o^#1js#`)pU;ir2>`6?o6nsaH%+pG_hLW^jKeT?{i^BmgQ#IN=0>JNB}YCin6I5%*E}ELf8l3F z>;DBFf}QB&J@OX#@=4iQ)zj~!!3Z*?x9=}W&a+nKbF;=swWs2-ynJwXCdL3C*Vd?P z>7jkJx?@UZ)j0C*lJ=wO=$`_{)|pj3b8EdkaCmp7a-G3}C?#c+cg_y?NBFAQlEF@g zvrSR|pf66m9F?GLy2$4E@aitjdzkd^O4RFRAOM>p;4sbns=OGm$2DG3sWD!by)&{i z#K)LXNDz6S>7g?t^LMrvF?Ayk5B^>}a1geZ_kR7wxhs@cLnGMvv-LMBwXj{|3p^OC zKr%B!q7TH$Q#y9F>8(+2d$YDB3mTB(>b3e_?IR+1^Nu~Ye9&gEr09t`T+-DaiM+d+ z?qC|C`>B)0tlkK+)*S^c*>_+Kt7>}+Q`bDg zF8*SVyCaO8buAd#{i+&$Gwjm2<_VVK!9bSLbn_<@7{qHEoyLVJ;pkIrW&rjkH9?6& z!QrYmOSnMsdttTnNZy9iM7+&xHVF~@mu?ZG!y%vNhcqmwe8#6up?P)NtQ`@m>35zQ zbX2~w1-eM}4Y?sD;^ryd2tHL{=__&98>KE%!6=23ny_&IaX=}ci8dq7A+OQ?r|kM3 zimx)B$G;#GJz?T~4*89iTwvC=I=m^;<6T)BtrTPcro54bYgQA?pF04Poi`Llh zC|o?d0mvCp4Zev=ii@kY6WIJt!U9TGTT9)muML3i19h07Te(H4cJaimvnb}_(iqUt zFik*J@iw}rDnaC52>mYVAr>+4p1bW(g8u7o&-Z${zk*iavWBSh6-OpgOp8gvF;z3= z55UY+(w|=W?RVR-02~6YG5;4E^5*Y~xunBKM7P?Ip=)v|{I}C~V>k*&1SdX-AFUc7 zp(l}ao$@|>S&8%a1cXZ|$IN*Y;~uK*3umBQv%&4KB&~Vz>!BR_j{|lVkDe2t=({Uw z38*6j3_y`h0?yuCbpJ9z*CIH|?HULBHH~5*%ZY8K*mF(kafCs1*>cZHjUUa&3nwoRTD_Ts%0BT8+90&cXSUgJ}v zvlDeXtXgl}>*dGp>1I0m=pfs$84Y1L3rc)&4zdFC&^%yDB;q3n3z=j}%b^iYCxaDv zgCSV6F%H{b&K^7`j!%&Z`CS)wIMcqZgynGDt;EqdE}OfTRng>Kg!sh3He+bj=O z9?w5HwV>bvsI`x@@Z*ENAv<^XomLrOGR|o}5*q-610BX*ab`rg^p#QEis2l#p`q zowfx)PLa0Nli#!ApJRrq*V)i@kdcKKn;eCl^@z?CV?LwumbZy$b(nNtCXIONx&0xa zBGUO}SnEV(yPY`jx_2$Ydcuuj^v(G*sSfJi1%E#8Sfn1Gs3HW(RSt& ze}D19R*U`avPgCt4*h30^W9mguWokJowr$*Ik0VKQ==8+**$J_wI(@L>+iN_k)7-h zWLR}gpB}aoZ$!OErIsO!cf9Obdur7#gBq-hoq?X#qZAMWiFN`5K#d=jIhI!b(JF>( zgWgbEcK1^w)lqa>rq-SUdN))C<)GD$6uGxD3YpBy*FKo)%+e;DWV?Go9p)MfheKP- z8|eET$ZlT-Y{oTPz@K;@z9*Lh+EM$O`^MU%Y)%~46Xx0#*$k@+ALVKvkOjCBN`qw#-Xji(HDv++ z>+^`COH&}BQrqLVAE^F@`aT7+o{_{B*IQVn{#?Z#lMdxu%0oplpWRs9`-|>Otq&}U za~69PmzZ@QMEJGU17O*sw|$@Sw{l�W|ie9yh0R3@tVn#(bnk*b|*bW55?B&uHhR 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Page-1 + + + + + + + + Process + + + + + + + + + + + + + + + + + + + Sheet.31 + SONiC Gnmi Server + + + + SONiC Gnmi Server + + Process.35 + GNMI client + + + + + + + + + + + + + + + + + + + GNMI client + + Process.34 + generic_config_updater + + + + + + + + + + + + + + + + + + + generic_config_updater + + Side brace + + + + + + + + + + + + + + + + Sheet.73 + Get + + + + Get + + Process.75 + GNMI server + + + + + + + + + + + + + + + + + + + GNMI server + + Document + SONiC Yang Models + + + + + + + + + + + + + + + + + + + SONiC Yang Models + + 1-D single.81 + + + + + + + Sheet.82 + Set + + + + Set + + Sheet.83 + + + + Sheet.84 + + + + Process.91 + Sonic-config-engine + + + + + + + + + + + + + + + + + + + Sonic-config-engine + + Dynamic connector.92 + + + + Dynamic connector.97 + + + + Sheet.100 + + Datastore + ApplDB + + + + + + + + + + + + + + + + + + + + + + ApplDB + + Dynamic connector.41 + + + + + Sheet.101 + + Datastore + StateDB + + + + + + + + + + + + + + + + + + + + + + StateDB + + Dynamic connector.41 + + + + + Sheet.104 + + Datastore + CountersDB + + + + + + + + + + + + + + + + + + + + + + CountersDB + + Dynamic connector.41 + + + + + Sheet.110 + + Datastore + ConfigDB + + + + + + + + + + + + + + + + + + + + + + ConfigDB + + Dynamic connector.41 + + + + + Sheet.114 + + Datastore + ... + + + + + + + + + + + + + + + + + + + + + + ... + + Dynamic connector.41 + + + + + Cloud.34 + + + + + + + Process.139 + special_config_updater + + + + + + + + + + + + + + + + + + + special_config_updater + + 1-D single.140 + + + + + + + Dynamic connector + + + + Dynamic connector.143 + + + + Decision.1000 + Target Database? + + + + + + + + + + + + + + + + + + + Target Database? + + Dynamic connector.1001 + ApplDB + + + + + ApplDB + + Decision.1002 + Incremental or full config? + + + + + + + + + + + + + + + + + + + Incremental or full config? + + Dynamic connector.1003 + + + + Sheet.1004 + ConfigDB + + + + ConfigDB + + Dynamic connector.1005 + + + + Dynamic connector.1006 + + + + Sheet.1007 + Incremental + + + + Incremental + + Sheet.1008 + Full + + + + Full + + diff --git a/doc/mgmt/gnmi/images/heartbeat.png b/doc/mgmt/gnmi/images/heartbeat.png deleted file mode 100644 index b6bda79d12cd8d00d7d963e9c88f47efa269d362..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16583 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 diff --git a/doc/mgmt/gnmi/images/heartbeat.svg b/doc/mgmt/gnmi/images/heartbeat.svg new file mode 100644 index 00000000000..aee2106107a --- /dev/null +++ b/doc/mgmt/gnmi/images/heartbeat.svg @@ -0,0 +1,608 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Page-1 + + + + + + + + + + Object lifeline + GNMI client + + Sheet.2 + + + + Sheet.3 + + + + Sheet.4 + + + Sheet.5 + + + + + + + GNMI client + + + + + + + + Object lifeline.6 + GNMI server + + Sheet.7 + + + + Sheet.8 + + + + Sheet.9 + + + Sheet.10 + + + + + + + GNMI server + + + Activation + + + + + + + Message + SetRequest + + + + + + + + + + + SetRequest + + Return Message + SetResponse + + + + + + + + + + + SetResponse + + Self Message + + + + + + + + + + Sheet.15 + Full system reload or gnmi container reload + + + + Full system reload or gnmi container reload + + + + + + + + User + + Sheet.17 + + Sheet.18 + + + + Sheet.19 + + + + + + + + + + + + Script + + Sheet.21 + + + + Sheet.22 + + + + Sheet.23 + + + + Sheet.24 + + + + Sheet.25 + + + + Sheet.26 + + + + Sheet.27 + + + + Sheet.28 + + + + Sheet.29 + + + + + Sheet.36 + + Message.30 + CapabilitiesRequest + + + + + + + + + + + CapabilitiesRequest + + Activation.31 + + + + + + + Return Message.32 + CapabilitiesResponse + + + + + + + + + + + CapabilitiesResponse + + + Sheet.41 + + Message.30 + CapabilitiesRequest + + + + + + + + + + + CapabilitiesRequest + + Activation.31 + + + + + + + Return Message.32 + CapabilitiesResponse + + + + + + + + + + + CapabilitiesResponse + + + Sheet.45 + + Message.30 + CapabilitiesRequest + + + + + + + + + + + CapabilitiesRequest + + Activation.31 + + + + + + + Return Message.32 + CapabilitiesResponse + + + + + + + + + + + CapabilitiesResponse + + + Activation.31 + + + + + + + Sheet.62 + + Message.30 + CapabilitiesRequest + + + + + + + + + + + CapabilitiesRequest + + Return Message.32 + CapabilitiesResponse + + + + + + + + + + + CapabilitiesResponse + + Sheet.60 + + Sheet.61 + + + + + + Sheet.63 + + Message.30 + CapabilitiesRequest + + + + + + + + + + + CapabilitiesRequest + + Return Message.32 + CapabilitiesResponse + + + + + + + + + + + CapabilitiesResponse + + Sheet.66 + + Sheet.67 + + + + + + Sheet.68 + + Message.30 + CapabilitiesRequest + + + + + + + + + + + CapabilitiesRequest + + Return Message.32 + CapabilitiesResponse + + + + + + + + + + + CapabilitiesResponse + + Sheet.71 + + Sheet.72 + + + + + + Activation.73 + + + + + + + Activation.74 + + + + + + + Message.75 + GetRequest + + + + + + + + + + + GetRequest + + Return Message.76 + GetResponse + + + + + + + + + + + GetResponse + + Self Message.77 + + + + + + + + + + Sheet.78 + Compare ApplDB Configuration + + + + Compare ApplDB Configuration + + diff --git a/doc/mgmt/gnmi/images/incremental_rpc.png b/doc/mgmt/gnmi/images/incremental_rpc.png deleted file mode 100644 index 3fb30d78f530e5caacd0a55d591c7c9e4329b2a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6345 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Page-1 + + + + + + + + + + Object lifeline + GNMI client + + Sheet.2 + + + + Sheet.3 + + + + Sheet.4 + + + Sheet.5 + + + + + + + GNMI client + + + + + + + + Object lifeline.6 + GNMI server + + Sheet.7 + + + + Sheet.8 + + + + Sheet.9 + + + Sheet.10 + + + + + + + GNMI server + + + Activation + + + + + + + Message + SetRequest + + + + + + + + + + + SetRequest + + Return Message + SetResponse + + + + + + + + + + + SetResponse + + + + + + + + User + + Sheet.17 + + Sheet.18 + + + + Sheet.19 + + + + + + + + + + + + Script + + Sheet.21 + + + + Sheet.22 + + + + Sheet.23 + + + + Sheet.24 + + + + Sheet.25 + + + + Sheet.26 + + + + Sheet.27 + + + + Sheet.28 + + + + Sheet.29 + + + + + + + + + + Object lifeline.30 + Host service + + Sheet.31 + + + + Sheet.32 + + + + Sheet.33 + + + Sheet.34 + + + + + + + Host service + + + + + + + + + Script.35 + + Sheet.36 + + + + Sheet.37 + + + + Sheet.38 + + + + Sheet.39 + + + + Sheet.40 + + + + Sheet.41 + + + + Sheet.42 + + + + Sheet.43 + + + + Sheet.44 + + + + + Activation.45 + + + + + + + Message.46 + + + + + + + + + + Return Message.47 + + + + + + + + + + Sheet.49 + Config apply-patch + + + + Config apply-patch + + Self Message.50 + + + + + + + + + + diff --git a/doc/mgmt/gnmi/images/message_example.png b/doc/mgmt/gnmi/images/message_example.png deleted file mode 100644 index 358de5a2df986b3f912ddfb75e7e8a91b5a24a52..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15108 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 WQ*`~td+?j9fSk0lRQ_YbKmG@s>vP!v diff --git a/doc/mgmt/gnmi/images/message_example.svg b/doc/mgmt/gnmi/images/message_example.svg new file mode 100644 index 00000000000..36ad96e9c8f --- /dev/null +++ b/doc/mgmt/gnmi/images/message_example.svg @@ -0,0 +1,1686 @@ + + + + + + + + + + + + + + Page-1 + + + + Sheet.1 + + + + + + + + + + + + + + + + + + + + + + + + + SetRequest Message + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + delete { + + + + + + + + + + + + + + + + + + path { + + + + + + + + + + + + + + + + + + origin: " + + + + + + sonic_db + + + + + + " + + + + + + + + + + + + + + + + + + elem {name: “ + + + + + + CONFIG_DB + + + + + + ”} + + + + + + elem {name: + + + + + + + + + + + + DEVICE_NEIGHBOR + + + + + + + + + + + + } elem {name: + + + + + + + + + + + + Ethernet95 + + + + + + + + + + + + } + + + + + + + + + + + + + + + + + + } + + + + + + + + + + + + } + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + replace { + + + + + + + + + + + + + + + + + + path { + + + + + + + + + + + + + + + + + + origin: " + + + + + + sonic + + + + + + _db" + + + + + + + + + + + + + + + + + + elem {name: “ + + + + + + CONFIG_DB + + + + + + ”} + + + + + + elem {name: + + + + + + + + + + + + DEVICE_NEIGHBOR + + + + + + + + + + + + } + + + + + + elem {name: + + + + + + + + + + + + Ethernet96 + + + + + + + + + + + + } + + + + + + + + + + + + + + + + + + } + + + + + + + + + + + + } + + + + + + + + + + + + replace { + + + + + + + + + + + + + + + + + + path { + + + + + + + + + + + + + + + + + + origin: + + + + + + “sonic + + + + + + _db" + + + + + + + + + + + + + + + + + + elem {name: “ + + + + + + CONFIG_DB + + + + + + ”} + + + + + + elem {name: + + + + + + + + + + + + DEVICE_NEIGHBOR + + + + + + + + + + + + } + + + + + + elem {name: + + + + + + + + + + + + Ethernet8 + + + + + + + + + + + + } elem {name: + + + + + + + + + + + + port + + + + + + + + + + + + } + + + + + + + + + + + + + + + + + + } + + + + + + + + + + + + + + + + + + val { + + + + + + + + + + + + + + + + + + json_ietf_val: + + + + + + “e + + + + + + th1 + + + + + + + + + + + + + + + + + + + + + + + + } + + + + + + + + + + + + } + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + update + + + + + + + + + + + + { + + + + + + + + + + + + + + + + + + path { + + + + + + + + + + + + + + + + + + origin: " + + + + + + sonic_db + + + + + + " + + + + + + + + + + + + + + + + + + elem {name: “ + + + + + + CONFIG_DB + + + + + + ”} + + + + + + elem {name: + + + + + + + + + + + + DEVICE_NEIGHBOR + + + + + + + + + + + + } + + + + + + + + + + + + elem {name: + + + + + + + + + + + + Ethernet + + + + + + 9 + + + + + + + + + + + + } elem {name: + + + + + + + + + + + + port + + + + + + + + + + + + } + + + + + + + + + + + + + + + + + + } + + + + + + + + + + + + + + + + + + val { + + + + + + + + + + + + + + + + + + json_ietf_val: + + + + + + + + + + + + eth + + + + + + 2 + + + + + + + + + + + + + + + + + + + + + + + + } + + + + + + + + + + + + } + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/mgmt/gnmi/images/mixed requests.png b/doc/mgmt/gnmi/images/mixed requests.png deleted file mode 100644 index b3f0678106dfb583762470871c54f6e14cd8905f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5593 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 Q=vX%3O|u(idd^Y*2dI2Sl>h($ diff --git a/doc/mgmt/gnmi/images/mixed requests.svg b/doc/mgmt/gnmi/images/mixed requests.svg new file mode 100644 index 00000000000..75336ca8f0f --- /dev/null +++ b/doc/mgmt/gnmi/images/mixed requests.svg @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + Page-1 + + + + + Process.1000 + GNMI Set Request Full Configuration + + + + + + + + + + + + + + + + + + + GNMI Set RequestFull Configuration + + Process.1001 + GNMI Set Request Full Configuration/ Incremental Configuration + + + + + + + + + + + + + + + + + + + GNMI Set RequestFull Configuration/Incremental Configuration + + Process.1002 + GNOI Reboot Request + + + + + + + + + + + + + + + + + + + GNOI Reboot Request + + Dynamic connector.1003 + + + + Dynamic connector.1004 + + + + Sheet.1005 + + Sheet.1006 + + + + + diff --git a/doc/mgmt/gnmi/images/restapi.png b/doc/mgmt/gnmi/images/restapi.png deleted file mode 100644 index ca1bcf3253ddfbbd542294a7659c8461e433d08b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28816 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 diff --git a/doc/mgmt/gnmi/images/restapi.svg b/doc/mgmt/gnmi/images/restapi.svg new file mode 100644 index 00000000000..ed8cecd1a0d --- /dev/null +++ b/doc/mgmt/gnmi/images/restapi.svg @@ -0,0 +1,373 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + Page-1 + + + + + + + + Process + + + + + + + + + + + + + + + + + + + Sheet.31 + SONiC restapi + + + + SONiC restapi + + Process.35 + Http client + + + + + + + + + + + + + + + + + + + Http client + + Process.34 + Http server + + + + + + + + + + + + + + + + + + + Http server + + Side brace + + + + + + + + + + + + + + + + Sheet.48 + + Datastore + SONiC Redis DB + + + + + + + + + + + + + + + + + + + + + + SONiC Redis DB + + Dynamic connector + + + + + Sheet.49 + + Datastore + SONiC Redis DB + + + + + + + + + + + + + + + + + + + + + + SONiC Redis DB + + Dynamic connector + + + + + Sheet.59 + + Datastore + SONiC Redis DB + + + + + + + + + + + + + + + + + + + + + + SONiC Redis DB + + Dynamic connector + + + + + Sheet.62 + + Datastore + SONiC Redis DB + + + + + + + + + + + + + + + + + + + + + + SONiC Redis DB + + Dynamic connector + + + + + 1-D double.22 + + + + + + + Dynamic connector.72 + + + + Sheet.74 + post patch get delete + + + + postpatchgetdelete + + diff --git a/doc/mgmt/gnmi/images/set_lock.png b/doc/mgmt/gnmi/images/set_lock.png deleted file mode 100644 index de05f4ac452e90ef65af7885f92824b2ff0d1e9c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20111 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Page-1 + + + + + + + + + + Object lifeline + GNMI client + + Sheet.2 + + + + Sheet.3 + + + + Sheet.4 + + + Sheet.5 + + + + + + + GNMI client + + + + + + + + Object lifeline.6 + GNMI Server + + Sheet.7 + + + + Sheet.8 + + + + Sheet.9 + + + Sheet.10 + + + + + + + GNMI Server + + + Activation + + + + + + + Message + SetRequest 1 + + + + + + + + + + + SetRequest 1 + + + + + + + + User + + Sheet.17 + + Sheet.18 + + + + Sheet.19 + + + + + + + + + + + + Script + + Sheet.21 + + + + Sheet.22 + + + + Sheet.23 + + + + Sheet.24 + + + + Sheet.25 + + + + Sheet.26 + + + + Sheet.27 + + + + Sheet.28 + + + + Sheet.29 + + + + + + + + + + Object lifeline.76 + Database + + Sheet.77 + + + + Sheet.78 + + + + Sheet.79 + + + Sheet.80 + + + + + + + Database + + + + + + + + + Database + + Sheet.98 + + Sheet.99 + + + + Sheet.100 + + + + Sheet.101 + + + + Sheet.102 + + + + + + + + + + + Object lifeline.169 + GNMI Write Thread + + Sheet.170 + + + + Sheet.171 + + + + Sheet.172 + + + Sheet.173 + + + + + + + GNMI Write Thread + + + + + + + + + Script.174 + + Sheet.175 + + + + Sheet.176 + + + + Sheet.177 + + + + Sheet.178 + + + + Sheet.179 + + + + Sheet.180 + + + + Sheet.181 + + + + Sheet.182 + + + + Sheet.183 + + + + + Message.184 + Enqueue + + + + + + + + + + + Enqueue + + Activation.195 + + + + + + + Message.196 + SetRequest 2 + + + + + + + + + + + SetRequest 2 + + Message.197 + Enqueue + + + + + + + + + + + Enqueue + + Activation.198 + + + + + + + Message.199 + SetRequest 3 + + + + + + + + + + + SetRequest 3 + + Message.200 + Enqueue + + + + + + + + + + + Enqueue + + Activation.147 + + + + + + + Message.192 + Write database + + + + + + + + + + + Write database + + Return Message.202 + SetResponse 1 + + + + + + + + + + + SetResponse 1 + + + + + + + Object lifeline.225 + GNMI Write Qeue + + Sheet.226 + + + + Sheet.227 + + + + Sheet.228 + + + Sheet.229 + + + + + + + GNMI Write Qeue + + + + + + + + + Script.230 + + Sheet.231 + + + + Sheet.232 + + + + Sheet.233 + + + + Sheet.234 + + + + Sheet.235 + + + + Sheet.236 + + + + Sheet.237 + + + + Sheet.238 + + + + Sheet.239 + + + + + Message.240 + Deque + + + + + + + + + + + Deque + + Return Message.241 + + + + + + + + + + Activation.242 + + + + + + + Message.243 + Deque + + + + + + + + + + + Deque + + Return Message.244 + + + + + + + + + + Message.245 + Write database + + + + + + + + + + + Write database + + Return Message.246 + SetResponse 2 + + + + + + + + + + + SetResponse 2 + + Activation.247 + + + + + + + Message.248 + Deque + + + + + + + + + + + Deque + + Return Message.249 + + + + + + + + + + Message.250 + Write database + + + + + + + + + + + Write database + + Return Message.251 + SetResponse 3 + + + + + + + + + + + SetResponse 3 + + From 8ae72f69c2ea0bab20e72e0aad15ebd290c5a21e Mon Sep 17 00:00:00 2001 From: ganglyu Date: Mon, 4 Jul 2022 14:16:56 +0800 Subject: [PATCH 08/17] expose the capability info like which table can be changed, which one can not --- doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md b/doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md index a21938f22e2..e576ffc4c68 100644 --- a/doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md +++ b/doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md @@ -410,20 +410,26 @@ sonic-restapi uses one authentication mechanism: #### 1.2.1.9 ACL GNMI server will not support OpenConfig Yang models, so ACL configuration will use CONFIG_DB schema and SONiC Yang Models. -#### 1.2.1.10 Docker to Host communication +#### 1.2.1.10 Data Protection + +For ApplDB, gNMI clients can write table directly. We need to specify which table can be changed, which one can not. + +We will create new Yang models for ApplDB, if gNMI set request modifies a table without Yang models, this set request should be rejected. And we can also follow gNMI spec to use "config false" tag, please refer to [link](https://datatracker.ietf.org/doc/html/rfc7950#section-4.2.3). + +#### 1.2.1.11 Docker to Host communication 'config apply-patch' and 'config reload' are designed to run on host, and it's difficult to support them in container: 1. These commands will update redis database and restart container, when they restart gnmi, bgp, syncd and swss, the ongoing gnmi operation will be broken. 2. 'config reload' will stop service at first, run some other operations, and then restart service. If we run this command in container, it will be broken at the stop service step. 3. These commands will execute some host scripts and use systemctl to restart service, it will be dangerous to support these operations in container. The solution is to add host services for 'config apply-patch' and 'config reload' on host, and gNMI server uses dbus method to invoke these services to update configuration -##### 1.2.1.10.1 Incremental Configurations +##### 1.2.1.11.1 Incremental Configurations For incremental configuration, 'config apply-patch' should not restart gNMI, bgp, synd and swss. incremental -##### 1.2.1.10.2 Full Configurations +##### 1.2.1.11.2 Full Configurations For full configuration, there’re 2 possible solutions: * gNMI server needs to send response at first, and then invoke 'config reload'. From e664c3c49916b770a2744cbd9a5dc4f0637e48fc Mon Sep 17 00:00:00 2001 From: ganglyu Date: Mon, 4 Jul 2022 14:24:21 +0800 Subject: [PATCH 09/17] Update RFC. --- doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md b/doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md index e576ffc4c68..8cd2aec3c74 100644 --- a/doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md +++ b/doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md @@ -414,7 +414,7 @@ GNMI server will not support OpenConfig Yang models, so ACL configuration will u For ApplDB, gNMI clients can write table directly. We need to specify which table can be changed, which one can not. -We will create new Yang models for ApplDB, if gNMI set request modifies a table without Yang models, this set request should be rejected. And we can also follow gNMI spec to use "config false" tag, please refer to [link](https://datatracker.ietf.org/doc/html/rfc7950#section-4.2.3). +We will create new Yang models for ApplDB, if gNMI set request modifies a table without Yang models, this set request should be rejected. And we can also use "config false" tag, please refer to [link](https://datatracker.ietf.org/doc/html/rfc7950#section-4.2.3). #### 1.2.1.11 Docker to Host communication 'config apply-patch' and 'config reload' are designed to run on host, and it's difficult to support them in container: From 68574b29801a863fe9fd16f0c70165fee63deb66 Mon Sep 17 00:00:00 2001 From: ganglyu Date: Mon, 4 Jul 2022 15:45:14 +0800 Subject: [PATCH 10/17] Backward Compatibility --- doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md b/doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md index 8cd2aec3c74..695aa87f327 100644 --- a/doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md +++ b/doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md @@ -444,6 +444,15 @@ The full configuration request will be overwritten by subsequent full configurat overwritten-config +#### 1.2.1.12 Backward Compatibility + +SONiC telemetry is using prefix target to identify target database, and we can use the same method to support backward compatibility. + +* If prefix target is ConfigDB or ApplDB, gNMI server should follow current design for set request. +* If prefix target is empty, gNMI server should invoke translib API for set request. + +Now we have two gNMI server, one for read and one for configure. When SONiC telemetry and SONiC gNMI are stable in the future, we can use this prefix target solution to merge them to a single container. + ### 1.2.2 Container All the introduced features will be part of the sonic-gnmi package installed in sonic-gnmi container. From e828bbe625db926e069051ebcc45a11efde8f2f6 Mon Sep 17 00:00:00 2001 From: ganglyu Date: Fri, 8 Jul 2022 07:55:49 +0800 Subject: [PATCH 11/17] Update requirement. --- doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md b/doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md index 695aa87f327..2e715dffa6e 100644 --- a/doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md +++ b/doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md @@ -98,7 +98,8 @@ sonic-telemetry provides gNMI/gNOI server interface. And sonic-telemetry provide * Set and get RPCs must be supported. Customer will use get RPC to retrieve configurations including FRR and VNET route, and use set RPC to apply new configurations. * SetRequest message must support to incrementally update configuration and fully update configurations. * Data models can be SONiC Yang models or CONFIG_DB schema. -* Ability to configure/read different DBs - ApplDB, ConfigDB, StateDB, CountersDB etc. +* Ability to read different DBs - ApplDB, ConfigDB, StateDB, CountersDB etc. +* Ability to write different DBs - ApplDB, ConfigDB. * Configurations must be verified using YANG models even it is in CONFIG_DB schema. * Need to configure huge VNET route entries to ApplDB, with high speed. * Configurations for ConfigDB must be persisted after a device restart. From f5628c8987a66f5fa0acd85be6b296dce6b669d1 Mon Sep 17 00:00:00 2001 From: ganglyu Date: Sun, 24 Jul 2022 15:31:56 +0800 Subject: [PATCH 12/17] Update sonic-telemetry to support gnmi configure. --- .../SONiC_GNMI_Server_Interface_Design.md | 32 ++++++++++++++----- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md b/doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md index 2e715dffa6e..7aeb6aae7f4 100644 --- a/doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md +++ b/doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md @@ -92,6 +92,8 @@ sonic-restapi will be replaced by gNMI interface in the future. sonic-telemetry provides gNMI/gNOI server interface. And sonic-telemetry provides only telemetry via gRPC, and the gap is configuration. +We will update sonic-telemetry to support configuration. + ## 1.1 Requirements ### 1.1.1 Phase 1 Requirements @@ -154,10 +156,11 @@ For ApplDB, we will create Yang models based on requirement. Today we only need #### 1.2.1.3 Data Schema -The ultimate goal is to use SONiC Yang models for configuration, and we also need to support ConfigDB schema and ApplDB schema for backward compatibility. -We will follow OpenConfig specification to use origin field to support mixed schema. +The ultimate goal is to use SONiC Yang models for configuration, and we also need to support ConfigDB schema and ApplDB schema: + +* We will follow OpenConfig specification to use origin field to support mixed schema. -And we use the first element to specify the target database. +* And we use the first element to specify the target database. A single request cannot have both SONiC YANG paths and ConfigDB/ApplDB schema paths. @@ -447,12 +450,25 @@ The full configuration request will be overwritten by subsequent full configurat #### 1.2.1.12 Backward Compatibility -SONiC telemetry is using prefix target to identify target database, and we can use the same method to support backward compatibility. - -* If prefix target is ConfigDB or ApplDB, gNMI server should follow current design for set request. -* If prefix target is empty, gNMI server should invoke translib API for set request. +SONiC telemetry is using prefix target to identify target database, and we will add a new target to support mixed schema. + + enum Target { + option allow_alias = true; + APPL_DB = 0; + ASIC_DB = 1; + COUNTERS_DB = 2; + LOGLEVEL_DB = 3; + CONFIG_DB = 4; + // PFC_WD_DB shares the the same db number with FLEX_COUNTER_DB + PFC_WD_DB = 5; + FLEX_COUNTER_DB = 5; + STATE_DB = 6; + // For none-DB data + OTHERS = 100; + // For mixed schema + MIXED_SCHEMA = 101; + } -Now we have two gNMI server, one for read and one for configure. When SONiC telemetry and SONiC gNMI are stable in the future, we can use this prefix target solution to merge them to a single container. ### 1.2.2 Container From ef7371c966d58a644832d030231af0f50b6c1417 Mon Sep 17 00:00:00 2001 From: ganglyu Date: Mon, 25 Jul 2022 09:17:11 +0800 Subject: [PATCH 13/17] Remove sonic-gnmi --- doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md b/doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md index 7aeb6aae7f4..beac8558d7f 100644 --- a/doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md +++ b/doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md @@ -134,7 +134,7 @@ Currently we do not support rollback for ApplDB, therefore VNET route will be an * Set -Since a single SetRequest will be treated as a transaction, sonic-gnmi does not support parallel write operations. We will put the SetRequests in a queue and serve them with a single worker. +Since a single SetRequest will be treated as a transaction, gNMI server does not support parallel write operations. We will put the SetRequests in a queue and serve them with a single worker. set @@ -403,7 +403,7 @@ We propose to use Capabilities RPC as heartbeat to detect reboot, and after rebo heartbeat #### 1.2.1.8 Authentication -sonic-telemetry provides three authentication mechanisms, and sonic-gnmi will use the same mechanisms: +sonic-telemetry provides three authentication mechanisms, and we will keep the same mechanism: * Password: Like HTTP Basic auth, you pass the username and password in the gRPC metadata * JWT: JSON Web Tokens standard. First you authenticate with username/password and then receive a JWT token. After you send the token in the gRPC metadata. * User Certificate: Use a valid client certificate with the username embedded in the CN field. The certificate is for authentication, the username is for authorization. @@ -472,7 +472,7 @@ SONiC telemetry is using prefix target to identify target database, and we will ### 1.2.2 Container -All the introduced features will be part of the sonic-gnmi package installed in sonic-gnmi container. +All the introduced features will be part of the sonic-telemetry package installed in sonic-telemetry container. # 2 Error Handling supervisord will autorestart gnmi service if it exits after it has successfully started up. From 386358478058078f72e34888ca2d575cf427d3f6 Mon Sep 17 00:00:00 2001 From: ganglyu Date: Tue, 26 Jul 2022 17:07:59 +0800 Subject: [PATCH 14/17] Add reset status. --- doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md b/doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md index beac8558d7f..2043ec51fe5 100644 --- a/doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md +++ b/doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md @@ -398,7 +398,9 @@ If the target database is not ConfigDB, we can't guarantee persisitence. For full system reboot, client has to reprogram ApplDB. If the gnmi container restarts, client doesn't need to reprogram. -We propose to use Capabilities RPC as heartbeat to detect reboot, and after reboot, client should compare ApplDB configuration and check if needs to reprogram. +We propose to use Capabilities RPC as heartbeat to detect reboot, and we will expose reset status. + +After reboot, client should check reset status to decide if needs to reprogram. heartbeat From 2b30ab0e4d3a73981e1bd39eed6e15563ff26324 Mon Sep 17 00:00:00 2001 From: ganglyu Date: Mon, 8 Aug 2022 11:21:19 +0800 Subject: [PATCH 15/17] Update arch diagram --- .../SONiC_GNMI_Server_Interface_Design.md | 4 +- doc/mgmt/gnmi/images/gnmi.svg | 501 +++++++++++++++--- 2 files changed, 428 insertions(+), 77 deletions(-) diff --git a/doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md b/doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md index 2043ec51fe5..ef03539d024 100644 --- a/doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md +++ b/doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md @@ -71,7 +71,7 @@ To understand the requirements, we need to go over current SONiC management comp 2. User could use SONiC CLI command "config apply-patch" to incrementally update configurations systematically and validate target configuration using SONiC Yang models. With generic_config_updater, all operations in a 'config apply-patch' command are processed in a single transaction that will either succeed or fail as a whole. - "config apply-patch" supports ConfigDB, and Yang models. - The green arrow indicates this process, and dotted arrow indicates Yang validation. -3. SONiC CLI commands can use "config reload" to fully update configurations and validate target configuration using SONiC Yang models. +3. SONiC CLI commands can use "config reload" to erase original and fully reload configurations from a file and validate target configuration using SONiC Yang models. - "config reload" already support input in ConfigDB schema or in yang models schema. - The yellow arrow indicates this process, and dotted arrow indicates Yang validation. @@ -120,7 +120,7 @@ We will update sonic-telemetry to support configuration. ## 1.2 Design Overview -gnmi-server +gnmi-server ### 1.2.1 Basic Approach diff --git a/doc/mgmt/gnmi/images/gnmi.svg b/doc/mgmt/gnmi/images/gnmi.svg index 53a0c0fb6e8..9a2f5aab901 100644 --- a/doc/mgmt/gnmi/images/gnmi.svg +++ b/doc/mgmt/gnmi/images/gnmi.svg @@ -2,8 +2,8 @@ + xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" width="22.5984in" height="8.26772in" + viewBox="0 0 1627.09 595.276" xml:space="preserve" color-interpolation-filters="sRGB" class="st35"> @@ -24,28 +24,29 @@ .st10 {fill:#000000;font-family:Calibri;font-size:0.666664em} .st11 {fill:#ffd965;stroke:#7f6000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.25} .st12 {fill:#4672c4;stroke:#c8c8c8;stroke-width:0.25} - .st13 {marker-end:url(#mrkr4-43);stroke:#fee599;stroke-dasharray:3,3;stroke-linecap:round;stroke-linejoin:round;stroke-width:1} + .st13 {marker-end:url(#mrkr4-41);stroke:#fee599;stroke-dasharray:3,3;stroke-linecap:round;stroke-linejoin:round;stroke-width:1} .st14 {fill:#fee599;fill-opacity:1;stroke:#fee599;stroke-opacity:1;stroke-width:0.28409090909091} - .st15 {marker-end:url(#mrkr4-49);stroke:#ffd965;stroke-dasharray:3,3;stroke-linecap:round;stroke-linejoin:round;stroke-width:1} + .st15 {marker-end:url(#mrkr4-47);stroke:#ffd965;stroke-dasharray:3,3;stroke-linecap:round;stroke-linejoin:round;stroke-width:1} .st16 {fill:#ffd965;fill-opacity:1;stroke:#ffd965;stroke-opacity:1;stroke-width:0.28409090909091} .st17 {fill:#a8d08d} .st18 {stroke:#375623;stroke-linecap:butt;stroke-width:1.25} .st19 {fill:#feffff;font-family:Calibri;font-size:0.833336em} - .st20 {marker-end:url(#mrkr4-64);marker-start:url(#mrkr4-62);stroke:#a8d08d;stroke-linecap:round;stroke-linejoin:round;stroke-width:1} + .st20 {marker-end:url(#mrkr4-62);marker-start:url(#mrkr4-60);stroke:#a8d08d;stroke-linecap:round;stroke-linejoin:round;stroke-width:1} .st21 {fill:#a8d08d;fill-opacity:1;stroke:#a8d08d;stroke-opacity:1;stroke-width:0.28409090909091} - .st22 {marker-end:url(#mrkr4-64);stroke:#a8d08d;stroke-linecap:round;stroke-linejoin:round;stroke-width:1} + .st22 {marker-end:url(#mrkr4-62);stroke:#a8d08d;stroke-linecap:round;stroke-linejoin:round;stroke-width:1} .st23 {fill:#ffffff;fill-opacity:0;stroke:#375623;stroke-linecap:butt;stroke-width:1.25} .st24 {fill:#a8d08d;stroke:#375623;stroke-dasharray:0.01,1.25;stroke-width:0.25} .st25 {fill:#90aadb;stroke:#203864;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.25} - .st26 {marker-end:url(#mrkr4-123);stroke:#4672c4;stroke-dasharray:3,3;stroke-linecap:round;stroke-linejoin:round;stroke-width:1} + .st26 {marker-end:url(#mrkr4-121);stroke:#4672c4;stroke-dasharray:3,3;stroke-linecap:round;stroke-linejoin:round;stroke-width:1} .st27 {fill:#4672c4;fill-opacity:1;stroke:#4672c4;stroke-opacity:1;stroke-width:0.28409090909091} .st28 {fill:none;stroke:#31528f;stroke-width:0.75} .st29 {font-size:1em} - .st30 {marker-end:url(#mrkr4-138);stroke:#4672c4;stroke-linecap:round;stroke-linejoin:round;stroke-width:1} - .st31 {fill:#ffffff;stroke:none;stroke-linecap:butt} + .st30 {marker-end:url(#mrkr4-131);stroke:#4672c4;stroke-linecap:round;stroke-linejoin:round;stroke-width:1} + .st31 {fill:#ffffff;stroke:none;stroke-linecap:butt;stroke-width:7.2} .st32 {fill:#3c63ac;font-family:Calibri;font-size:0.666664em} .st33 {fill:#4672c4;font-family:Calibri;font-size:0.666664em} - .st34 {fill:none;fill-rule:evenodd;font-size:12px;overflow:visible;stroke-linecap:square;stroke-miterlimit:3} + .st34 {fill:#ff0000;stroke:#7f6000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.25} + .st35 {fill:none;fill-rule:evenodd;font-size:12px;overflow:visible;stroke-linecap:square;stroke-miterlimit:3} ]]> @@ -60,27 +61,27 @@ - - - - - - @@ -97,7 +98,7 @@ - + Process - + - + Sheet.31 SONiC Gnmi Server SONiC Gnmi Server - + Process.35 GNMI client @@ -161,7 +162,7 @@ GNMI client - + Process.34 generic_config_updater @@ -191,7 +192,7 @@ generic_config_updater - + Side brace @@ -209,14 +210,14 @@ A9.07072 9.07072 0 0 1 264.19 595.28 L514.2 595.28 A9.07072 9.07072 -180 0 0 523.28 586.2 L523.28 581.1" class="st7"/> - + Sheet.73 Get Get - + Process.75 GNMI server @@ -243,10 +244,10 @@ - - - GNMI server - + + + GNMI server + Document SONiC Yang Models @@ -277,7 +278,7 @@ SONiC Yang Models - + 1-D single.81 @@ -285,22 +286,18 @@ - + Sheet.82 Set Set - - Sheet.83 - - - + Sheet.84 - + Process.91 Sonic-config-engine @@ -330,18 +327,18 @@ Sonic-config-engine - + Dynamic connector.92 - + Dynamic connector.97 - - + Sheet.100 - + Datastore ApplDB @@ -379,14 +376,14 @@ 572.39" class="st18"/> ApplDB - + Dynamic connector.41 - + Sheet.101 - + Datastore StateDB @@ -424,14 +421,14 @@ 572.39" class="st18"/> StateDB - + Dynamic connector.41 - + Sheet.104 - + Datastore CountersDB @@ -469,14 +466,14 @@ 572.39" class="st18"/> CountersDB - + Dynamic connector.41 - + - + Sheet.110 - + Datastore ConfigDB @@ -514,14 +511,14 @@ 572.39" class="st18"/> ConfigDB - + Dynamic connector.41 - + Sheet.114 - + Datastore ... @@ -559,12 +556,12 @@ 572.39" class="st18"/> ... - + Dynamic connector.41 - + - + Cloud.34 @@ -582,7 +579,7 @@ A46.0919 18.439 2.99 0 1 23.17 542.7 A18.2225 10.907 0 0 1 6.48 523.86 A17.7505 7.17827 4.73 0 1 8.82 513.73 Z" class="st23"/> - + Process.139 special_config_updater @@ -612,8 +609,7 @@ special_config_updater - + 1-D single.140 @@ -621,17 +617,12 @@ - + Dynamic connector - - Dynamic connector.143 - - - + Decision.1000 Target Database? @@ -662,7 +653,7 @@ Target Database? - + Dynamic connector.1001 ApplDB @@ -670,7 +661,7 @@ ApplDB - + Decision.1002 Incremental or full config? @@ -701,38 +692,398 @@ Incremental or full config? - + Dynamic connector.1003 - + Sheet.1004 ConfigDB ConfigDB - + Dynamic connector.1005 - + Dynamic connector.1006 - + Sheet.1007 Incremental Incremental - + Sheet.1008 Full Full + + Process.1009 + System Telemetry Data collectors + + + + + + + + + + + + + + + + + + + System Telemetry Data collectors + + 1-D single.1010 + + + + + + + Sheet.1011 + Get + + + + Get + + 1-D single.1012 + + + + + + + Sheet.1013 + Subscribe + + + + Subscribe + + Process.1014 + GNMI diaout client + + + + + + + + + + + + + + + + + + + GNMI diaout client + + 1-D single.1015 + + + + + + + Sheet.1016 + Publish + + + + Publish + + Dynamic connector.1017 + + + + Cloud.1018 + + + + + + + Decision.1019 + Target is DB? + + + + + + + + + + + + + + + + + + + Target is DB? + + Process.1020 + DB client + + + + + + + + + + + + + + + + + + + DB client + + Process.1021 + Non-DB client + + + + + + + + + + + + + + + + + + + Non-DB client + + Dynamic connector.1022 + Yes + + + + + Yes + + Dynamic connector.1023 + No + + + + + No + + Dynamic connector.1024 + + + + Dynamic connector.1025 + + + + Dynamic connector.1026 + + + + Document.1027 + Platform data + + + + + + + + + + + + + + + + + + + Platform data + + Document.1028 + Proc data + + + + + + + + + + + + + + + + + + + Proc data + + Document.1029 + ASIC data + + + + + + + + + + + + + + + + + + + ASIC data + + Dynamic connector.1030 + + + + Dynamic connector.1031 + + + + Dynamic connector.1032 + + From c7e462a0981bea32f82d7428ba366fa15fc79a74 Mon Sep 17 00:00:00 2001 From: ganglyu Date: Mon, 8 Aug 2022 11:34:18 +0800 Subject: [PATCH 16/17] Update overview description. --- doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md b/doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md index ef03539d024..c5f8917a754 100644 --- a/doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md +++ b/doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md @@ -122,6 +122,10 @@ We will update sonic-telemetry to support configuration. gnmi-server +We will update sonic-telemetry to support configuration in the same container. + +And there will be a config files for disable/enable telemetry/new-gnmi feature. + ### 1.2.1 Basic Approach #### 1.2.1.1 Transaction From 371ab2b77b9b8e8119c91295f0206b2db2fbfc71 Mon Sep 17 00:00:00 2001 From: ganglyu Date: Sat, 27 Aug 2022 09:15:24 +0800 Subject: [PATCH 17/17] GNMI server already supports OpenConfig YANG models via Management framework. --- doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md b/doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md index c5f8917a754..d97234ba3ad 100644 --- a/doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md +++ b/doc/mgmt/gnmi/SONiC_GNMI_Server_Interface_Design.md @@ -418,7 +418,7 @@ sonic-restapi uses one authentication mechanism: * In the authentication of client certificate, after the certificate chain is validated by TLS, it will further check if the common name of the end-entity certificate is in the trusted common name list of the server config. #### 1.2.1.9 ACL -GNMI server will not support OpenConfig Yang models, so ACL configuration will use CONFIG_DB schema and SONiC Yang Models. +The new GNMI server interface will use CONFIG_DB schema and SONiC Yang Models for ACL configuration. #### 1.2.1.10 Data Protection