From 030e4e2be9621a4aef74ed6f25237e9f6ffae269 Mon Sep 17 00:00:00 2001 From: shamit patel Date: Wed, 1 Oct 2014 15:07:52 -0500 Subject: [PATCH] Tech writer reviewed edits for programmer's guide Change-Id: Ia8703d6017105b819395edfba378521848e56ea1 Signed-off-by: shamit patel --- docs/guides/HowToGuidesIndex.txt | 1474 +++++++++++++++++++++++++++++++--- docs/guides/ProgrammersGuide.txt | 263 +++++- docs/img/seq_find_resource_2.png | Bin 0 -> 72559 bytes docs/img/seq_find_resource_3.png | Bin 0 -> 13681 bytes docs/img/seq_find_resource_4.png | Bin 0 -> 20593 bytes docs/img/seq_register_resource_2.png | Bin 0 -> 52712 bytes 6 files changed, 1620 insertions(+), 117 deletions(-) create mode 100644 docs/img/seq_find_resource_2.png create mode 100644 docs/img/seq_find_resource_3.png create mode 100644 docs/img/seq_find_resource_4.png create mode 100644 docs/img/seq_register_resource_2.png diff --git a/docs/guides/HowToGuidesIndex.txt b/docs/guides/HowToGuidesIndex.txt index d7fdeca..0d8c717 100644 --- a/docs/guides/HowToGuidesIndex.txt +++ b/docs/guides/HowToGuidesIndex.txt @@ -2,6 +2,8 @@ @page OCHowTo How To... Guides +@ref Guide_Representative_Devices "Sample representative devices used in these tutorials" + @ref Guide_Stack_Init "How to initialize the stack" @ref Guide_Register_Resource "How to register a resource" @@ -18,7 +20,210 @@ ******************************************************************** -@page Guide_Stack_Init Stack Initialization + +@page Guide_Representative_Devices Representative Devices + +The best way to understand the concepts for IoTivity is through following an example and understanding the use case. The following devices are referred to throughout this document for use cases and basic operations. The details are listed here for reference so that implementers can compare the responses from these devices with their configuration to develop an understanding of what the responses mean. + +@section Rep_Light_Device Light devices (192.168.1.11-13) + +A lighting device that can handle up to two light bulbs with dimmers. Each light bulb resource has two attributes: +\li Power: controls power and can have a value of 0 (off) or 1 (on) +\li Level: current dimmer level with a value from 1 (low) to 10 (full) + +The separation of the attributes allows the light to return to the previous light level when the power is toggled. + +@subsection Rep_Light_Device_Description Description of resources on this device type + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ResourceDescription

/oc/core

Standard resource listing in JSON format.

/oc/core/d

Virtual (hidden) resource that describes the device. It is searchable and supports the JSON attributes listed in the appendix.

/lights

The resource collection that contains light resources

+ +

rt=alpha.light

+ +

if=oc.mi.ll (linked-list)

/light/1

The resource associated with the first light bulb attached to this device

+ +

rt=alpha.light

+ +

if=oc.mi.def (default)

/light/2

The resource associated with the second light bulb attached to this device

+ +

rt=alpha.light

+ +

if=oc.mi.def (default)

+ + + +@subsection Rep_Light_Device_Resource_11 Resource(s) at 192.168.1.11 + +This device contains a single light resource. The following lists the valid resources and their typical state: + + + + + + + + + + + + + + + + + + + + + + + +
ResourceRepresentation

/oc/core

[

+ +

{ "href" : "/lights", "rt" : ["alpha.light"], "if" : ["oc.mi.ll"]},

+ +

{ "href" : "/light/1", "rt" : ["alpha.light"], "if" : ["oc.mi.def"], "obs" : 1}

+ +

]

/oc/core/d

{

+ +

"di" : "12345678-1234-1234-0000000000000011",

+ +

"dn" : "Alpha Light Controller",

+ +

"dd" : "A Light Controller"

+ +

}

/light/1

{ "power" : 0, "level" : 4 }

+ + + + +@subsection Rep_Light_Device_Resource_12 Resource(s) at 192.168.1.12 + +This device contains a single light resource. The following lists the valid resources and their typical state: + + + + + + + + + + + + + + + + + + + + + + + +
ResourceRepresentation

/oc/core

[

+ +

{ "href" : "/lights", "rt" : ["alpha.light"], "if" : ["oc.mi.ll"]},

+ +

{ "href" : "/light/2", "rt" : ["alpha.light"], "if" : ["oc.mi.def"], "obs":1}

+ +

]

/oc/core/d

{

+ +

"di" : "12345678-1234-1234-0000000000000012",

+ +

"dn" : "Alpha Light Controller",

+ +

"dd" : "A Light Controller"

+ +

}

/light/2

{ "power" : 1, "level" : 6 }

+ + + +@subsection Rep_Light_Device_Resource_13 Resource(s) at 192.168.1.13 + +This device contains two light resources. The following lists the valid resources and their typical state: + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Resource

Representation

/oc/core

[

+ +

{ "href" : "/lights", "rt" : ["alpha.light"], "if" : ["oc.mi.ll"]},

+ +

{ "href" : "/light/1", "rt" : ["alpha.light"], "if" : ["oc.mi.def"], "obs":1},

+ +

{ "href" : "/light/2", "rt" : ["alpha.light"], "if" : ["oc.mi.def"], "obs":1}

+ +

]

/oc/core/d

{

+ +

"di" : "12345678-1234-1234-0000000000000013",

+ +

"dn" : "Alpha Light Controller",

+ +

"dd" : "A Light Controller"

+ +

}

/light/1

{ "power" : 0, "level" : 8 }

/light/2

{ "power" : 1, "level" : 10 }

+ + + +@page Guide_Stack_Init Stack Initialization @section Stack_Init_SD Sequence Diagram @@ -27,8 +232,8 @@ @note API calls take only important parameters. We omitted some of the parameters for clarity. The asynchronous processing block handles incoming network traffic including packet processing, scheduled tasks including communication timeouts and callbacks to the application resulting from these activities. - -@section Stack_Init_CPP Stack Initilization in C++ + +@section Stack_Init_CPP Stack Initialization in C++ @code {.cpp} // Create PlatformConfig object @@ -40,7 +245,6 @@ The asynchronous processing block handles incoming network traffic including pac // Create a OCPlatform instance. // Note: Platform creation is synchronous call. - try { OCPlatform platform(cfg); @@ -48,57 +252,58 @@ The asynchronous processing block handles incoming network traffic including pac { //Handle error } -@endcode + @endcode Stack initialization in C++ consists of: -@li Creating a OCPlatform object with Platform configuration which allows to definition of role operation (server or client), stack operation (in-process or out-of-process), etc. +@li Creating a OCPlatform object with Platform configuration which allows definition of role operation (server or client), stack operation (in-process or out-of-process), etc. @note @li This is a synchronous call. The application will receive an exception if platform object creation fails. @li The C++ SDK handles all of the memory allocation and collection. Therefore, the application need not worry about memory management related to the stack. @li Platform creation happens on the main thread while the message pump happens on a worker thread. -@section Stack_Init_C Stack Initilization in C -@code {.c} - uint8_t ifname[] = "eth0"; - uint8_t addr[20]; - uint16_t port = 5683; - /*Get IP address initialize stack */ - OCGetInterfaceAddress(ifname, sizeof(ifname), AF_INET, addr, sizeof(addr)); - /* Initialize OCStack*/ - if (OCInit((char *) addr, port, OC_CLIENT) != OC_STACK_OK) { - /* Handle stack initialization failure */ - return 0; - } +******************************************************************** -@endcode +@page Guide_Register_Resource Registering A Resource +Registering a resource requires two basic items: +\li A handler to process requests from the stack, and +\li A URI path to register the resource. +The URI path should be rooted (in other words, start with a slash). The stack will construct the fully qualified URI by adding the URI authority to the provided URI path. For example, given a service running on port 5683 in a device at IP address 192.168.1.1, if the application registers a resource with a URI path "/light/1", the resulting fully qualified URI is "oc://192.168.1.1:5683/light/1", which uniquely identifies the resource's location (IP address port and path). +@note Only one resource can be registered at a given URI. + +@image HTML seq_register_resource_2.png +@section Register_Resource_SD Sequence Diagram +The following call sequence diagram outlines the operations performed in the stack when a resource is registered: -******************************************************************** +@image HTML seq_register_resource.png -@page Guide_Register_Resource Registering A Resource +Step 1: +Assuming the application has created a valid OCPlatform object, the application registers a new resource with the stack by calling OCPlatform::registerResource(...). -Registering a resource requires two basic items: a handler that will be called to process requests from the stack and a URI path at which the resource will be registered. +In this example, the call would take the form: -The URI path should be rooted (meaning starts with a slash). The stack will construct the fully qualified URI by adding the URI authority to the provided URI path. For example, given a service running on port 5683 in a device at IP address 192.168.1.1, if the application registers a resource with a URI path "/light/1", resulting fully qualified URI would be "oc://192.168.1.1:5683/light/1" which uniquely identifies the resource’s location (IP address port and path). Please note that only one resource can be registered at a given URI. + platform.registerResource(&handle, "/light/1", "light", "oc.mi.def", handler, OC_DISCOVERABLE) -@section Register_Resource_SD Sequence Diagram -The following call sequence diagram outlines the operations performed in the stack when a resource is registered: +The handle is a reference to the resource that is used on other APIs. The URI path ("/light/1") is where on this server that the resource can be located. The URI path is unique; this call will fail if the application attempts to register another resource using an existing URI. The resource type ("light") and interface ("oc.mi.def") are properties of the resource used in the discovery process. The handler is a function called from the stack to process requests. The flags control how the stack should handle the resource. The OC_DISCOVERABLE flag indicates that the resource should be reported if a client performs a resource discovery on this server. -@image HTML seq_register_resource.png +Step 2: -Steps: +The OCPlatform::registerResource(...) method delegates the call to the appropriate instance of the stack (in-process or out-of-process via IPC). -1) Assuming the application has created a valid OCPlatform object, the application registers a new resource with the stack by calling OCPlatform::registerResource(...). In this example, the call would take the form platform.registerResource(&handle, "/light/1", "light", "oc.mi.a", handler, OC_DISCOVERABLE). The handle is a reference to the resource that is used on other APIs. The URI path ("/light/1") is where on this server that the resource can be located. The URI path is unique and this call will fail if the application attempts to register another resource using an existing URI. The resource type ("light") and interface ("oc.mi.a") are properties of the resource used in the discovery process. The handler is a function called from the stack to process requests. The flags control how the stack should handle the resource. The OC_DISCOVERABLE flag indicates that the resource should be reported if a client performs a resource discovery on this server. +Step 3: +The internal registerResource(...) method constructs a C++ entity handler and registers it with the C SDK using OCCreateResource(...). -2) The OCPlatform::registerResource(...) method delegates the call to the appropriate instance of the stack (in-process or out-of-process via IPC). +In this example, the call would take the form: -3) The internal registerResource(...) method constructs a C++ entity handler and registers it with the C SDK using OCCreateResource(...). In this example, the call would take the form OCCreateResource(&handle, "light", "oc.mi.a", "/light/1", handler, OC_ DISCOVERABLE). Many of these parameters are passed through to the C SDK directly. However, the entity handler is a proxy function for the handler passed from OCPlatform::registerResource(...). + OCCreateResource(&handle, "light", "oc.mi.def", "/light/1", handler, OC_ DISCOVERABLE) +Many of these parameters are passed through to the C SDK directly. However, the entity handler is a proxy function for the handler passed from OCPlatform::registerResource(...). + @section Register_Resource_CPP Register Resource in C++ [Server] @code{.cpp} @@ -123,76 +328,125 @@ Steps: @endcode -@section Register_Resource_C Register Resource in C [Server] -@code{.c} -void MyEntityHandler(OCEntityHandlerFlag flag, OCEntityHandlerRequest * request){ - -} -void createLightResource() { - OCResourceHandle handle; - OCStackResult res = OCCreateResource(&handle, - "alpha.light", - "oc.mi.a", - "/light/1", - OC_DISCOVERABLE|OC_OBSERVABLE); -} +******************************************************************** +@page Guide_Find_Resource Finding A Resource -@endcode +This operation returns all resources of given type on the network service. This operation is sent via multicast to all services. However, the filter limits the responders to just those that support the resource type in the query. Currently only exact matches are supported. +@image HTML seq_find_resource_2.png -******************************************************************** +@section Find_Resource_SD Sequence Diagram -@page Guide_Find_Resource Finding A Resource +The following sequence diagram illustrates the resource discovery process over the network when using CoAP. The mechanism is different for Bluetooth, SSDP/HTTP, etc. In the case of CoAP, a 'get' request is sent via multicast to all IoTivity devices. Each device processes the query and responds if the request filter is satisfied. + +In the following example, the client requests all of the light resources with a resource type (rt). Both lights respond to the request, but the fan does not. + +@image HTML seq_find_resource_3.png -This operation will return all of the resources of a given type on the network service. This operation is sent via multicast to all services. However, the filter limits the responders to just those that support the resource type in the query. Again, currently, only exact matches are supported. -@section Find_Resource_SD Sequence Diagram The following sequence diagram describes the call sequence for discovery from the client side. @image HTML seq_find_resource.png Notes: +\li Assuming that the client has a properly initialized OCPlatform object, a C++ SDK client can discover resources by calling OCPlatform::findResources(...). -1) Assuming that the client has a properly initialized OCPlatform object, a C++ SDK client can discover resources by calling OCPlatform::findResources(...). In this example, the call would take the form platform.findResources("", "/oc/core?rt=light", findHandler). The first parameter is the URI authority (target host) which in the case where it is empty indicates that this is for all nodes. The second parameter "/oc/core?rt=light" is the URI path and URI query. The URI path ("/oc/core") indicates the resource and the URI query ("rt=light") is the filter. +In this example, the call would take the form: -2) The SDK call findResources(...) internally delegates the call directly to the in-process or to the out-of process stack via IPC based on the stack configuration. + platform.findResources("", "/oc/core?rt=alpha.light", findHandler) -3) Within the stack, findResource(...) calls the C API function OCDoResource(...). In this example, the call would be OCDoResource(&handle, OC_REST_GET, "/oc/core?rt=light", 0, 0, OC_NON_CONFIRMABLE, ...) +The first parameter is the URI authority (target host), which, when empty, indicates that this is for all nodes. The second parameter ("/oc/core?rt=alpha.light") is the URI path and URI query. The URI path ("/oc/core") indicates the resource and the URI query ("rt=alpha.light") is the filter. -4) OCDoResource determines which transport is needed to dispatch the request and delegates the call. In the case of CoAP, the following calls are made: - a. Calls OCDoCoapResource(OC_REST_GET, OC_NON_CONFIRMABLE, token, "/oc/core?rt=light", 0). The token in this example is a nonce that ties a CoAP response back to the CoAP request. Internally, this method creates the CoAP PDU for dispatching. - b. Calls coap_send(context, host, pdu) which is a wrapper for the implementation below. - c. Calls coap_send_impl(context, host, packet) which dispatches the packet to the socket and does the appropriate CoAP bookkeeping. - d. Calls OCSend(socket, buffer, size...) which is a wrapper for the socket implementation as the functions for dispatching a UDP packet can vary in the embedded systems. +\li The SDK call findResources(...) internally delegates the call directly to the in-process or to the out-of process stack via IPC based on the stack configuration. +\li Within the stack, findResource(...) calls the C API function OCDoResource(...). In this example, the call is OCDoResource(&handle, OC_REST_GET, "/oc/core?rt=alpha.light", 0, 0, OC_NON_CONFIRMABLE, ...) +\li OCDoResource determines which transport is needed to dispatch the request and delegates the call. In the case of CoAP, the following calls are made: + - Calls OCDoCoapResource(OC_REST_GET, OC_NON_CONFIRMABLE, token, "/oc/core?rt=alpha.light", 0). The token in this example is a nonce that ties a CoAP response back to the CoAP request. Internally, this method creates the CoAP PDU for dispatching. + - Calls coap_send(context, host, pdu), which is a wrapper for the implementation below. + - Calls coap_send_impl(context, host, packet), which dispatches the packet to the socket and does the appropriate CoAP bookkeeping. + - Calls OCSend(socket, buffer, size...), which is a wrapper for the socket implementation as the functions for dispatching a UDP packet can vary in the embedded systems. +\li Servers that offer the resource on the network will reply to the query. The message pump that is evoked from the OCProcess(...) function in the C SDK receives these response packets and dispatches them to the callback associated with the original request based on the CoAP message ID. These responses will come back at the timing defined by their servers. The client stack has timeouts for these responses that are listed in the appendices. +\li As previously mentioned, the stack matches the response to the original request using the message ID and send the results to the callback associated with the request. At this level, the raw payload is presented in JSON format. It is the responsibility of the callback passed to OCDoResource(...) to parse this result. +\li The C++ SDK provides a callback to OCDoResource(...) that will parse the results, construct collections of OCResource objects from the response, and pass them to a C++ client using the handler passed to the platform.findResource(...) method. The handler will be called once for each resource server that responds to the query. -5) Servers that offer the resource on the network will reply to the query. The message pump which is evoked from the OCProcess(...) function in the C SDK, receive these response packets and dispatch them to the callback associated to the original request based on the CoAP message id. These responses will come back at the timing defined by their servers. The client stack has timeouts for these responses which are listed in the appendices. +Notes: +\li Some of the API call parameters have been omitted for brevity. +\li The findResource() method can be used in the following ways: + - Find all resources on the network that match the provided criteria + - Query a specific (single) server for the resources that it provides matching the provided criteria +\li The findResource() method may be used multiple times to find a resource +\li The findResource() callback is called from the message pump thread in multithreaded environments +\li Blocking in the findResource() callback will block other stack processing including servicing the network I/O which can cause delays and missed packets. -6) As mentioned above the stack matches the response to the original request using the message id and send the results to the callback associated with the request. At this level, the raw payload in JSON format is presented. It is the responsibility of the callback passed to OCDoResource(...) to perform the parsing of this result. +Detailed server call sequence diagram +The following sequence diagram illustrates the call sequence for discovery from the server side. -7) The C++ SDK provides a callback to OCDoResource(...) that will parse the results and construct collections of OCResource objects from the response and pass them to a C++ client using the handler passed to the platform.findResource(...) method. Please note that the handler will be called once for each resource server that responses to the query. - -Notes: -@li Some of the parameters of the API calls above have been omitted for brevity. -@li The findResource() method can be used in the following ways: -@li Find all resources on the network that match the provided criteria -@li Query a specific (single) server for the resources that it provides the provided criteria -@li The findResource() method may be used multiple times whenever a resource needs be found -@li The findResource() callback may continue to report discovered resources up to 100 seconds -@li The findResource() callback will called from the message pump thread in multithreaded environments -@li Blocking in the findResource() callback will block other stack processing including servicing the network I/O which cannot only cause delays but also missed packets. +@note When the request is sent to all nodes, all nodes will run through this sequence. +@image HTML seq_find_resource_4.png +Notes: +\li The discovery request under CoAP is handled like any other resource GET request. The request can be received via unicast or multicast, but the response, if any, is always sent via unicast. +\li The stack dispatches the request to an entity handler that is defined by the stack. +\li The handler for "/oc/core", processes the URI query, if any, and builds a list of resources that match the criteria and returns the result in JSON to the network transport. +\li In the case of CoAP, if the request is made to all nodes (multicast) and the resource list is empty, no response is sent to the clients. If the request is directed (unicast) or the resource list has results, the response is sent unicast back the client. @section Find_Resource_CPP Register Resource in C++ [Client] @code{.cpp} - // Callback to found resources +// Callback to found resources void foundResource(std::shared_ptr resource) { - //Handle resource found + + std::string resourceURI; + std::string hostAddress; + try + { + // Do some operations with resource object. + if(resource) + { + std::cout<<"DISCOVERED Resource:"<uri(); + std::cout << "\tURI of the resource: " << resourceURI << std::endl; + + // Get the resource host address + hostAddress = resource->host(); + std::cout << "\tHost address of the resource: " << hostAddress << std::endl; + + // Get the resource types + std::cout << "\tList of resource types: " << std::endl; + for(auto &resourceTypes : resource->getResourceTypes()) + { + std::cout << "\t\t" << resourceTypes << std::endl; + } + + // Get the resource interfaces + std::cout << "\tList of resource interfaces: " << std::endl; + for(auto &resourceInterfaces : resource->getResourceInterfaces()) + { + std::cout << "\t\t" << resourceInterfaces << std::endl; + } + + if(resourceURI == "/a/light1") + { + // Found interested resource + } + } + else + { + // Resource is invalid + std::cout << "Resource is invalid" << std::endl; + } + + } + catch(std::exception& e) + { + //log + } + } @@ -201,85 +455,741 @@ Notes: OCPlatform platform(cfg); // Find all resources - platform.findResource("", "coap://224.0.1.187/oc/core?rt=core.light", &foundResource); + platform.findResource("", "coap://224.0.1.187/oc/core?rt=alpha.light", &foundResource); }catch(OCException& e) { //Handle Error } + @endcode +@section Find_Resource_OTA_Request Over the air Request -@section Find_Resource_C Register Resource in C [Client] +The request is sent to all nodes on the network: -@code{.c} -/* This is a function called back when a device is discovered */ -OCStackApplicationResult applicationDiscoverCB(OCClientResponse* response) { - OC_LOG(INFO, TAG, "Found resource… "); + - /* The IP Address is in response->addr */ - /* The JSON Payload is in response->resJSONPayload */ + + + + + - return OC_STACK_KEEP_TRANSACTION; -} + + + + + -int main() { - /* Initialize OCStack */ + + + + + - /* Start a discovery query*/ - char szQueryUri[64] = { 0 }; - strcpy(szQueryUri, OC_EXPLICIT_DEVICE_DISCOVERY_URI); OCStackResult + + + + + - OCStackResult result = OCDoResource( - OC_REST_GET, - szQueryUri, - 0, - 0, - OC_NON_CONFIRMABLE, - applicationDiscoverCB) + + + + - if (result != OC_STACK_OK) { - OC_LOG(ERROR, TAG, "OCStack resource error"); - return 0; - } + + + + + + + + + + + + + +

Field

Value

Note(s)

Address

224.0.1.187:5683

Multicast packet

Header

NON, GET, MID=0x7d40

Multicast discovery request should be non-confirmable

URI-Path

oc

"/oc/core?rt=alpha.light"

URI-Path

core

URI-Query

rt=alpha.light


+

Accept

application/json


+

+ + + +@section Find_Resource_OTA_Response Over the air Response(s) + +Assuming that all of the representative devices (see @ref Guide_Representative_Devices "Representative Devices") are online, three responses are expected. Only the three devices with light resources respond; the list of resources has been filtered to contain just the resources that match the criteria. + +From 192.168.1.11: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Value

Explanation

Address

192.168.1.1:5683

Client Address

Header

ACK, CONTENT, MID=0x7d40

Success w/content

Content

+ +

Format

application/json


+

Payload

[

+ +

{ "href" : "/light/1", "rt":["alpha.light"], "if":["oc.mi.def"], "obs":1}

+ +

]


+

+ +From 192.168.1.12: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Value

Explanation

Address

192.168.1.1:5683

Client Address

Header

ACK, CONTENT, MID=0x7d40

Success w/content

Content

+ +

Format

application/json


+

Payload

[

+ +

{ "href" : "/light/2", "rt":["alpha.light"], "if":["oc.mi.def"], "obs":1}

+ +

]


+

- /* Call OCProcess() until done */ -} -@endcode + +From 192.168.1.13: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Value

Explanation

Address

192.168.1.1:5683

Client Address

Header

ACK, CONTENT, MID=0x7d40

Success w/content

Content

+ +

Format

application/json


+

Payload

[

+ +

{ "href" : "/light/1", "rt":["alpha.light"], "if":["oc.mi.def"], "obs":1},

+ +

{ "href" : "/light/2", "rt":["alpha.light"], "if":["oc.mi.def"], "obs":1}

+ +

]


+

+ ******************************************************************** @page Guide_PUT Setting a resource state [PUT] +This operation sets the value of a simple resource. In this example, we turn on a light resource and set the brightness to 50%. + @section PUT_SD Sequence Diagram @image HTML seq_put.png -@section PUT_Server_CPP Set Resource's State [PUT] in C++ [Server] +Steps: +1. The client application calls resource.put(...) to set representation of resource. +Example call: +resource.put(attributeMap, queryParamsMap, &onPut); +2. Client SDK internally calls the setResourceAttributes function of the client wrapper. +Example call: +OCDoResource(OC_REST_PUT, "//192.168.1.11/light/1, 0, 0, OC_CONFIRMABLE, callback); +3. Send PUT request to remote device +4. The OCProcess() service function (server-side message pump) reads the packet from the socket and dispatches the request to the entity handler for the provided URI. +5. The entity handler, which was provided by an upper layer when the resource was registered, parses the representation and in the case of the C++ API passes the results to the upper layer handler. In a C only environment, the results would also be processed in the entity handler. +6. The upper layer entity handler written by the app developer/vendor is invoked, and response is formed accordingly. +7. The upper layer entity handler returns success or failure with a response. +8. Returns success or failure to lower layer for transmission to client. +9. Returns success or failure to lower layer for transmission to client. +10. Returns success or failure to lower layer for transmission to client. +11. Result is formatted and sent over network to client +12. The OCProcess() service function (client-side message pump) reads results and passes the results back to the client application via the callback passed to OCDoResource + + @section PUT__Client_CPP Set Resource's State [PUT] in C++ [Client] -@section PUT_Server_C Set Resource's State [PUT] in C [Server] -@section PUT_Client_C Set Resource's State [PUT] in C [Client] +@code{.cpp} +void putLightRepresentation(std::shared_ptr resource) +{ + if(resource) + { + OCRepresentation rep; + + std::cout << "Putting light representation..."<put(rep, queryParamsMap, &onPut); + } +} + +// callback handler on PUT request +void onPut(const OCRepresentation& rep, const int eCode) +{ + if(eCode == SUCCESS_RESPONSE) + { + std::cout << "PUT request was successful" << std::endl; + + AttributeMap attributeMap = rep.getAttributeMap(); + + for(auto it = attributeMap.begin(); it != attributeMap.end(); ++it) + { + std::cout << "\tAttribute name: "<< it->first << " value: "; + for(auto valueItr = it->second.begin(); valueItr != it->second.end(); ++valueItr) + { + std::cout <<"\t"<< *valueItr << " "; + } + + std::cout << std::endl; + } + + std::vector children = rep.getChildren(); + + for(auto oit = children.begin(); oit != children.end(); ++oit) + { + attributeMap = oit->getAttributeMap(); + + for(auto it = attributeMap.begin(); it != attributeMap.end(); ++it) + { + std::cout << "\tAttribute name: "<< it->first << " value: "; + for(auto valueItr = it->second.begin(); valueItr != it->second.end(); ++valueItr) + { + std::cout <<"\t"<< *valueItr << " "; + } + + std::cout << std::endl; + } + } + + } + else + { + std::cout << "onPut Response error: " << eCode << std::endl; + std::exit(-1); + } +} + +@endcode +@section PUT_Server_CPP Set Resource's State [PUT] in C++ [Server] + +@code{.cpp} +//Entity handle sample for PUT + if(requestType == "PUT") + { + cout << "\t\t\trequestType : PUT\n"; + + // Check for query params (if any) + QueryParamsMap queryParamsMap = request->getQueryParameters(); + + cout << "\t\t\tquery params: \n"; + for(auto it = queryParamsMap.begin(); it != queryParamsMap.end(); it++) + { + cout << "\t\t\t\t" << it->first << ":" << it->second << endl; + } + + // Get the representation from the request + OCRepresentation rep = request->getResourceRepresentation(); + + myLightResource.setRepresentation(rep); // See code snippet below + + // Do related operations related to PUT request // See code snippet below + rep = myLightResource.getRepresentation(); + + if(response) + { + + response->setErrorCode(200); + + auto findRes = queryParamsMap.find("if"); + + if(findRes != queryParamsMap.end()) + { + response->setResourceRepresentation(rep, findRes->second); + } + else + { + response->setResourceRepresentation(rep, DEFAULT_INTERFACE); + } + } +} + + void setRepresentation(OCRepresentation& light) + { + AttributeMap attributeMap = light.getAttributeMap(); + + if(attributeMap.find("state") != attributeMap.end() && attributeMap.find("power") != attributeMap.end()) + { + cout << "\t\t\t" << "Received representation: " << endl; + cout << "\t\t\t\t" << "power: " << attributeMap["power"][0] << endl; + cout << "\t\t\t\t" << "state: " << attributeMap["state"][0] << endl; + + m_state = attributeMap["state"][0].compare("true") == 0; + m_power= std::stoi(attributeMap["power"][0]); + } + } + + OCRepresentation getRepresentation() + { + OCRepresentation light; + + light.setUri(m_lightUri); + + std::vector interfaces; + //interfaces.push_back(m_lightInterface); + + light.setResourceInterfaces(interfaces); + + std::vector types; + //types.push_back(m_lightType); + + light.setResourceTypes(types); + + AttributeMap attributeMap; + AttributeValues stateVal; + if(m_state) + { + stateVal.push_back("true"); + } + else + { + stateVal.push_back("false"); + } + + AttributeValues powerVal; + powerVal.push_back(to_string(m_power)); + + attributeMap["state"] = stateVal; + attributeMap["power"] = powerVal; + + light.setAttributeMap(attributeMap); + + return light; + } + +@endcode + + +@section PUT_OTA_Response Over the air request + +In this example, we are pushing state to one of the lights. At this point, the resource was discovered by its type, and we understand its interface and the attributes exposed by the resource. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Value

Note(s)

Address

192.168.1.13:5683

Unicast packet

Header

CON, PUT, MID=0x7d41

Confirmation is requested

URI-Path

light

"/light/1"

URI-Path

1

Content-Type

application/json


+

Payload

{

+ +

"power" : 1,

+ +

"level" : 5

+ +

}


+

+ + +@section PUT_OTA_Response Over the air response(s) + +Assuming that the request is valid and the resource is able to complete the transition, the following represents a successful change in state. + +From 192.168.1.13: + + + + + + + + + + + + + + + + + + + + + +

Field

Value

Explanation

Address

192.168.1.1:5683

Client Address

Header

ACK, CHANGED, MID=0x7d41

Success (changed)

********************************************************************** -@page Guide_GET Quering resource State [GET] +@page Guide_GET Querying resource State [GET] + +This operation fetches the value of a simple resource. In this example, we fetch the state from the light resource. @section GET_SD Sequence Diagram @image HTML seq_get.png -@section GET_Server_CPP Quering resource State [GET] in C++ [Server] -@section GET_Client_CPP Quering resource State [GET] in C++ [Client] +Steps: +1. The client application calls resource.get(...) to retrieve a representation from the resources. +2. The call is marshalled to the stack which is either running in-process or out-of-process (daemon). +3. The C API is called to dispatch the request. The call may look like the following: +OCDoResource(OC_REST_GET, "//192.168.1.11/light/1, 0, 0, OC_CONFIRMABLE, callback); +4. Where CoAP is used as a transport, the lower stack will send a GET request to the target server. +5. On the server side, the OCProcess() function (message pump) receives and parses the request from the socket, then dispatches it to the correct entity handler based on the URI of the request. +6. Where the C++ API is used, the C++ entity handler parses the payload and marshals it to the client application depending on if the server stack is running in-process or out-of-process (daemon). +7. The C++ SDK passes it up the C++ handler associated with the OCResource. +8. The handler returns the result code and representation to the SDK. +9. The SDK marshals the result code and representation to the C++ entity handler. +10. The entity handler returns the result code and representation to the CoAP protocol. +11. The CoAP protocol transports the results to the client device. +12. The results are returned the OCDoResource callback. +13. The results are returned to the C++ client application's asyncResultCallback. + +@section GET_Client_CPP Querying resource State [GET] in C++ [Client] +@code{.cpp} +// Local function to get representation of light resource +void getLightRepresentation(std::shared_ptr resource) +{ + if(resource) + { + std::cout << "Getting Light Representation..."<get(test, &onGet); + } +} + +// callback handler on GET request +void onGet(const OCRepresentation& rep, const int eCode) +{ + if(eCode == SUCCESS_RESPONSE) + { + std::cout << "GET request was successful" << std::endl; + + AttributeMap attributeMap = rep.getAttributeMap(); + + std::cout << "Resource URI: " << rep.getUri() << std::endl; + + for(auto it = attributeMap.begin(); it != attributeMap.end(); ++it) + { + std::cout << "\tAttribute name: "<< it->first << " value: "; + for(auto valueItr = it->second.begin(); valueItr != it->second.end(); ++valueItr) + { + std::cout <<"\t"<< *valueItr << " "; + } + + std::cout << std::endl; + } + + std::vector children = rep.getChildren(); + + for(auto oit = children.begin(); oit != children.end(); ++oit) + { + std::cout << "Child Resource URI: " << oit->getUri() << std::endl; + + attributeMap = oit->getAttributeMap(); + + for(auto it = attributeMap.begin(); it != attributeMap.end(); ++it) + { + std::cout << "\tAttribute name: "<< it->first << " value: "; + for(auto valueItr = it->second.begin(); valueItr != it->second.end(); ++valueItr) + { + std::cout <<"\t"<< *valueItr << " "; + } + + std::cout << std::endl; + } + } + + putLightRepresentation(curResource); + } + else + { + std::cout << "onGET Response error: " << eCode << std::endl; + std::exit(-1); + } +} + + +@endcode + +@section GET_Server_CPP Querying resource State [GET] in C++ [Server] +@code{.cpp} + +// Handling GET request in Entity handler +if(requestType == "GET") + { + cout << "\t\t\trequestType : GET\n"; + + // Check for query params (if any) + QueryParamsMap queryParamsMap = request->getQueryParameters(); + + cout << "\t\t\tquery params: \n"; + for(QueryParamsMap::iterator it = queryParamsMap.begin(); it != queryParamsMap.end(); it++) + { + cout << "\t\t\t\t" << it->first << ":" << it->second << endl; + } + + // Process query params and do required operations .. + + // Get the representation of this resource at this point and send it as response + // AttributeMap attributeMap; + OCRepresentation rep; + rep = myLightResource.getRepresentation(); + + if(response) + { + // TODO Error Code + response->setErrorCode(200); + + auto findRes = queryParamsMap.find("if"); + + if(findRes != queryParamsMap.end()) + { + response->setResourceRepresentation(rep, findRes->second); + } + else + { + response->setResourceRepresentation(rep, DEFAULT_INTERFACE); + } + } + } + + +@endcode + + +@section GET_OTA_Response Over the air request + +In this example, we are querying state from one of the lights. At this point, the resource was discovered by its type, and we understand its interface and the attributes that the resource exposes. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Value

Note(s)

Address

192.168.1.11:5683

Unicast packet

Header

CON, GET, MID=0x7d42

Confirmation is requested

URI-Path

light

"/light/1"

URI-Path

1

Accept

application/json


+

+ + + +@section GET_OTA_Response Over the air response(s) + +Assuming that the request is valid, we expect the following reply from the resource. + +From 192.168.1.11: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Value

Explanation

Address

192.168.1.1:5683

Client Address

Header

ACK, CONTENT, MID=0x7d42

Success w/Content

Content

+ +

Type

application/json


+

Payload

{

+ +

"power" : 0,

+ +

"level" : 10

+ +

}


+

-@section GET_Server_C Quering resource State [GET] in C [Server] -@section GET_Client_C Quering resource State [GET] in C [Client] @@ -287,14 +1197,356 @@ int main() { @page Guide_Observe Observing resource state [Observe] +This operation fetches and registers as an observer for the value of a simple resource. In this example, we fetch the state of the light resource. For more implementation details, see "Observing Resources in CoAP" listed in the referenced documents. (https://datatracker.ietf.org/doc/draft-ietf-core-observe/?include_text=1) + +The handling of observation registration is application specific. It should not be assumed that a resource is observable, or a resource can handle any specific number of observers. If the server responds with a success (2.xx) code, the registration is considered successful. + +Notifications from the server to the client may be confirmable or non-confirmable. If the client returns a RST message, the observation registration should be dropped immediately. If the client fails to acknowledge a number of confirmable requests, the server should assume that the client has abandoned the observation and drop the registration. + +If the observed resource is removed, the server sends a NOTFOUND status to all observers. + +If an observed resource fails to notify a client before the max-age of a resource value update, the client should attempt to re-register the observation. + + @section Observe_SD Sequence Diagram @image HTML seq_observe.png -@section Observe_Server_CPP Observing resource state [Observe] in C++ [Server] +Steps: +1. The client application calls resource.observe(...) to retrieve a representation from the resources. +2. The call is marshalled to the stack which is either running in-process or out-of-process (daemon). +3. The C API is called to dispatch the request. The call may look like this: +OCDoResource(OC_REST_GET | OC_REST_OBSERVE, "//192.168.1.11/light/1, 0, 0, OC_CONFIRMABLE, callback); +4. Where CoAP is used as a transport, the lower stack will send a GET request to the target server. The primary difference between a GET request and an observe request is that the observe request contains an observe option indicating that, in addition to querying this resource, the client wishes to get notifications if/when the resource state changes. +5. On the server side, the OCProcess() function (message pump) receives and parses the request from the socket, then dispatches it to the correct entity handler based on the URI of the request. The request to the entity handler will indicate that the request is both a query and subscription request. The entity handler MAY take note of this, but it is not responsible to tracking the observers. The stack tracks the observers of record. +6. Where the C++ API is used the C++ entity handler parses the payload and marshals it to the client application depending on if the server stack is running in-process or out-of-process (daemon). +7. The C++ SDK passes it up the C++ handler associated with the OCResource. +8. The handler returns the result code and representation to the SDK. +9. The SDK marshals the result code and representation to the C++ entity handler. +10. The entity handler returns the result code and representation to the CoAP protocol. +11. The CoAP protocol transport the results to the client device. +12. The results are returned to the OCDoResource callback. +13. The results are returned to the C++ client application's asyncResultCallback. +14. If the entity handler has registered observers, it will periodically be called with the observe flag set so that it may sample or poll underlying hardware to determine if the state has changes. +15. When the application has deemed that the resource state has changed either via polling (entity handler observe) or via external signal, the application should call OCNotifyObservers(). This tells the stack the observers need updating. +16. For each observer of a changed resource, the entity handler is called to generate a representation that is transmitted to the observing clients. +17. Where CoAP is used as a transport, a packet with content is sent to the devices that have observing clients. The packets may be confirmable or non-confirmable based on application needs. +18. The client-side OCProcess function (message pump) receives the message and matches it to the original request based on the CoAP token ID and dispatches the appropriate +C API callback. +19. The C API callback passes the final results to the C++ client application's asyncResultCallback. +20. When the C++ client no longer desires to receive notifications from the server, it calls observation cancellation method cancelObserve(). +21. The C++ cancellation method calls the OCCancel() function from the C API. +22. OCCancel() finds the observation that is associated with the operation and sends an observe deregistration request to the server. + + @section Observe_Client_CPP Observing resource state [Observe] in C++ [Client] +@code{.cpp} + if (OBSERVE_TYPE_TO_USE == ObserveType::Observe) + std::cout << endl << "Observe is used." << endl << endl; + else if (OBSERVE_TYPE_TO_USE == ObserveType::ObserveAll) + std::cout << endl << "ObserveAll is used." << endl << endl; + + QueryParamsMap test; + + curResource->observe(OBSERVE_TYPE_TO_USE, test, &onObserve); + +// callback +void onObserve(const OCRepresentation& rep, const int& eCode, const int& sequenceNumber) +{ + if(eCode == SUCCESS_RESPONSE) + { + AttributeMap attributeMap = rep.getAttributeMap(); + + std::cout << "OBSERVE RESULT:"<first << " value: "; + for(auto valueItr = it->second.begin(); valueItr != it->second.end(); ++valueItr) + { + std::cout <<"\t"<< *valueItr << " "; + } + + std::cout << std::endl; + } + + if(observe_count() > 30) + { + std::cout<<"Cancelling Observe..."<cancelObserve(); + + std::cout << "Cancel result: "<< result < + +

Fields

+

Value

+

Notes

+ + + +

Address

+

192.168.1.11:5683

+

Unicast packet

+ + + +

Header

+

CON, GET, MID=0x7d44, TOK=0x3f

+

Confirmation requested

+ + + +

Observe

+

Register (0)

+

This indicates registration

+ + + +

URI-Path

+

Light

+

"/light/1 "

+ + + +

URI-Path

+

1

+


+

+ + + +

Accept

+

application/json

+

Requesting result in JSON

+ + + + + + +@section Observe_OTA_Response Over the air response(s) + +A successful observe request would be similar to the following: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Value

Explanation

Address

192.168.1.1:5683

Client Address

Header

ACK, CONTENT, MID=0x7d44, TOK=0x3f

Success w/content

Observe

12

Sequence number for ordering

Max-Age

30

Indicates that the value is fresh for 30 seconds.

+ +

It also indicates that the server should send an

+ +

update within this time period.

Content

+ +

Type

application/json


+

Payload

{

+ +

"power" : 0,

+ +

"level" : 10

+ +

}


+

+ +Subsequent Notifications from 192.168.1.1 + +If the light resource is being observed and the light transitions from an off state to an on state, a notification is sent to the client from the server. The following is an example of such a notification: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Value

Explanation

Address

192.168.1.1:5683

Client Address

Header

CON, CONTENT, MID=0x7D45, TOK=0x3f

Content, Can be confirmable or non-confirmable

Observe

15

Monotonically increasing until overflow

Max-Age

30

Indicates that the value is fresh for 30 seconds.

+ +

It also indicates that the server should send an

+ +

update within this time period.

Payload

{

+ +

"power" : 1,

+ +

"level" : 10

+ +

}


+

+ +Since the above notification was marked confirmable, the client should acknowledge the notification with a packet such as the following: + + + + + + + + + + + + + + + + + + + + + +

Field

Value

Explanation

Address

192.168.1.11:5683

Unicast packet

Header

ACK, MID=0x7D45, TOK=0x3f

Success

+ -@section Observe_Server_C Observing resource state [Observe] in C [Server] -@section Observe_Client_C Observing resource state [Observe] in C [Client] diff --git a/docs/guides/ProgrammersGuide.txt b/docs/guides/ProgrammersGuide.txt index 6f3cccf..78f7d46 100644 --- a/docs/guides/ProgrammersGuide.txt +++ b/docs/guides/ProgrammersGuide.txt @@ -4,11 +4,12 @@ @page OCGuides Programmer's Guide -This document captures the architecture and basic operations of the Iotivity Resource API including sample coverage of protocol, flows, APIs and some use cases. It is intended to create context for the developers using IoTvitity API and provide a high level architectural overview of the framework. +This document covers the architecture and basic operations of the Iotivity Resource API stack, including sample coverage of protocol, flows, APIs and some use cases. It is intended to provide context for the developers using IoTivity APIs and provide a high level architectural overview. @section Stack_Blocks Stack Blocks -The Resource API stack consists of several thin layers of software. In unconstrained environments like Android, iOS, Windows, the stack provides APIs in C and C++ which allow developers to talk to both constrained and unconstrained devices via IP networks with potential support for additional network protocols and wireless technologies. In the first release, the key technologies for connectivity include IP, UDP and the Constrained Application Protocol (CoAP). +The Resource API stack consists of several thin layers of software. In unconstrained environments such as Android*, iOS*, or Microsoft* Windows*, the stack provides APIs in C and C++ which allow developers to talk to both constrained and unconstrained devices via IP networks, with potential support for additional network protocols and wireless technologies. In the first release, the key technologies for connectivity include UDP/IP and the Constrained Application Protocol (CoAP). + @image html stack_diagram.png @section Terminology Terminology @@ -22,13 +23,13 @@ A resource is a component in a server that can be viewed and controlled by anoth Resources can be arranged in a hierarchal manner to form a tree of resources. This generic method of structure enables one to model many different topologies of resources. @li Example: A light controller could be a resource. -@li Example: A light array could be a set of resources organized in a flat (non-hierarchical manner). -@li Example: A garage door opener could be a resource, it could host two resources – light and lock. +@li Example: A light array could be a set of resources organized in a flat (non-hierarchical) manner. +@li Example: A garage door opener could be a resource; it could host two resources - light and lock. A more detailed description of resources and management of resources along with code snippets is provided later in this document. Operations -Operations are actions that a Thin Block or Unified Block can perform on attributes associated with a particular resource. Resource attributes can have different operations on it based on the nature of the resource type fundamentally these are GET and PUT operations. Additionally attributes can also be declared to be observable to support remote devices to subscribe to changes to it. +Operations are actions that a Thin Block or Unified Block can perform on attributes associated with a particular resource. Resource attributes can have different operations on it based on the nature of the resource type. Fundamentally, these are GET and PUT operations. Additionally, attributes can also be declared to be observable to enable remote devices to subscribe to changes. @li Example: One of the child resources on the garage door opener is the light control; it has a GET operation that allows a device to get the current light state (on / off). @@ -45,13 +46,263 @@ The initial release of IoTivity includes functionally for: @section External_References External References The following references may provide guidance to this document. - @note In some places, the Iotivity design may differ from the CoRE specifications. In these cases, please consider the CoRE specifications as informative but not definitive on the Iotivity design and architecture. + @note In some places, the IoTivity design may differ from the CoRE specifications. In these cases, please consider the CoRE specifications as informative but not definitive on the Iotivity design and architecture. @li The Constrained Application Protocol (CoAP) - https://datatracker.ietf.org/doc/rfc7252 @li Constrained RESTful Environments (CoRE) Link Format - https://datatracker.ietf.org/doc/rfc6690 @li Observing Resources in CoAP - https://datatracker.ietf.org/doc/draft-ietf-core-observe @li CoRE Interfaces (expired draft) - https://datatracker.ietf.org/doc/draft-ietf-core-interfaces +@section Protocol Protocol Message Format(s) + +The OIC protocol (abbreviated to OC in code) is a REST-like interface similar to HTTP and CoAP. However, it is a one level up abstraction of the those protocols to allow the addition of additional transports including Bluetooth Classic, Bluetooth Smart (BLE), Zigbee or others in the future. To that end, every attempt has been made to keep CoAP and HTTP specific aspects from being expressed directly in the OIC protocol. The following sections describe how specific transports are used to support the OIC protocol and abstractions. + +@subsection Protocol_CoAP Constrained Application Protocol (CoAP) + +Constrained Application Protocol is one of the IoTivity supported transports. It is designed to be used in very simple devices and is particularly targeted for small, low power devices like sensors, switches, etc. The protocol is modeled after HTTP and provides easy translation between HTTP and CoAP. It is UDP-based (instead of TCP), providing support for multicast. + +CoAP is now a standard (RFC7252) as defined by the Internet Engineering Task Force (IETF) Constrained RESTful environments (CoRE) Working Group. Additional RFCs and drafts cover higher order behaviors. + +Message format +The following table contains a brief overview of the contents of a CoAP packet. Use it as a cheat sheet for the following discussion. For details on the Constrain Resource Protocol, see http://datatracker.ietf.org/doc/rfc7252/?include_text=1. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Field

Value

Short

+ +

Hand

Notes

Address

<Device IPD>:<port>

+ +

224.0.1.187:5683


+

Device IP address and port multicast group IP address and port

Version

Version 1 (01b)


+

Constant

Type

Confirmable (00b)

+ +

Non-confirmable (01b)

+ +

Acknowledgement (10b)

+ +

Reset (11b)

CON

+ +

NON

+ +

ACK

+ +

RST


+

Token

+ +

Length

Xxxxb


+

Length of the token. Valid values are between 0 and 8.

Code

Request (0.xx)

+ +

Success (2.xx)

+ +

Client error (4.xx)

+ +

Server error (5.xx)


+

Common requests and responses:

+ +

GET (0.01)

+ +

CREATED (2.01)

+ +

CHANGED (2.04)

+ +

CONTENT (2.05)

Message

+ +

ID

0xXXXX

MID

Generated by sender

+ +

Allows receiver to de-duplicate requests

Token


+

TOK

Generated by client to match REQ to RESP

Options


+

*

Contains the URI path and query, request and response headers

Payload


+


+


+

+ + +Short-hand notation + +The following two tables provide examples of request and response packets with explanations on the meaning of the short-hand notation used through the description of the queries and replies. + +@note Acknowledgements can come back separate from content. For the purposes of understanding the semantics of the query and responses, we will assume that all responses come back immediately. In production, requests can be acknowledged and the contents sent back at a later time. In addition, retry logic, de-duplication, congestion control and other features of the CoAP protocol libraries are neglected here. + +Request example + +In this example, the request is to the CoRE "core" resource in the well-known namespace. It provides a simple example of a multicast request to a compound URI with a query section. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Fields

Sample Values

Explanation

Address

224.0.1.187:5683

Multicast packet address

Header

NON, GET, MID=0x7D40

Non-confirmable

+ +

GET (code=0.01)

+ +

Message ID = 0x7D40

Token

0x75, 0x55

Token Length = s

+ +

Token = 0x75, 0x55

URI-Path

oc

"/oc/core?rt=sensor&if=core.ll"

URI-Path

core

URI-Query

rt=sensor


+

URI-Query

if=core.ll


+

+ +Acknowledged response example + +In this example, the response is returned. +@note The payload in this example is for demonstration of the packet format and not a valid discovery response. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Fields

Sample Values

Explanation

Address

192.168.0.0:5683

Unicast packet

Header

ACK, CONTENT, MID=0x7D40

Non-confirmable

+ +

Content (code=2.05)

+ +

Message ID = 0x7D40

Token

0x75, 0x55

Token Length = 2

+ +

Token = 0x75, 0x55

Payload

"Sample Payload"

Raw content

+ + */ diff --git a/docs/img/seq_find_resource_2.png b/docs/img/seq_find_resource_2.png new file mode 100644 index 0000000000000000000000000000000000000000..671cb17d233d44b67ab2e7c682fc3f25c6b92785 GIT binary patch literal 72559 zcmd4&^+O!p(gg~mVQ_aF+#N!24-g=@L$Kh%HMj;35Zs;M?!n#N-7UC#ZjbiDN?Zv70-6H?0tyNQ1zd4Vgwch7Ko~R^ z6H|~D69X&Q+nAVtF@}JULN1MWQJEUR>D#-Nv8f3FNx`?kPr`$#t`u_p^(iQQ129CT z&?+gy7%Fg7ay5lTn&dkheuk*6ow#>QibD0;np5TKt+Z8qa}C+B_-&( z^x@>U-pI?X4}E0D2rLAGu|7cboe~yek~N#dzJV^7l%2$Y5M7>DG%=(CPQ87DEH&&b zH9TCF=Tvf@@qpAz>7|3{e)C6Ovk0 z!WeiVSB~4mMN{nl*o+^NN#EumMiY-z2;<;!bS-}&-Ddo`ck!;ZgM(2f%wU97(rY}o!jV`{8IODq=e<#8UWP2b6*5p#F(bk5&%q^9BI1(V6I z=ZsTTNl6S3V0ibCa8yMnd6y6Ec<9N{2cx7;eD%<4!`}@v#5xboTSXAsyefPYz!nk` z5Y95)6Q|q#KsA9N5Qj%(#eP1YX?Y3M_2`=+j)1RO1O-`L**-A<$2 ztV1q~E``syop*-+1%1v9rE9cz782tASIiQ`*~#j(yWjrZsa7B{gqLbR_paw$VkG3d z@MVMA)zf4}8i-gsh|$)qK}w#fm+=b}=wM;|aUbe&*l+Df8f51@klgEm;zTf=!kocy zG7z{R;Wtq}#`;tma0nu7^H9z{A1dIEpy4{uZINnxrq=lzkjng1)|p*F4;^T(@b5d| zSRqBwP_l(pq%bG_!^vd&Q4B>%qDZlzBt*{@$YY^G!1y&7TBz7!c?wi2&@*Cf!ap-F z$5jj9noyC2DaN(;Il}!0SdnLa<<=WnF-Q;C$m$Icp5s4aM}LRf_9L^u=a7Wfd*n_X!3 zW)b1|8;W>eX5&8Nm4zdG6NV?+N_cB5~X6P z2N$;!_oj8NbRusEZc4ifG!w6qX87Q4T%H@>iQQG-Y2WSL!TTX}B(8q|QJjH>;8Wlq z;jID)1IRjI6ywZ3IMTewR1Wzaywm-DlWLPpxL{va-ZLa;K;w1JY!~v#e z#21kpG8Xco{*->W{^RY(Z5J$ro`6jW=}alQ6x!=p#8{fx$PX%1mQ-~Z^5zjraZ1&b zOnGyIFvdp4@fR37{5$MBTZ7!OdWC2zvML@b@92wFi&Q=qUKNHHDydqjcBycv$f%$e zeo`e?>ncntxGy}PMwq@S)KwtN%`W(+LQ0>|l-`u#7Q!puH7RTUMT@>P(K%pNj!;!y z*+n5zbxgHfNhoJkUUEWi|BD;1C&x2hOTx?7_)*4L#+Qd+< zTs!rxYHG15c@8;;Vw134Bc_`8K(&Bb_R#F&(Ilr}`1%_!=M{dvOd6lkMt7Owf{fGW=!(H=uV>L_XJ|fFePI-p&XQi)0$lTHc_q)2ut&km`KDeYj2UB(VFCkP@ez zyhK*N@iqVQ?($}g(2?7AuVJp?)}56fL*T~k%KgyYp5Ia+!wuiy?R))u%xSG zZuRXd#%avzmSCA+vB#pPVk=~;MC*!|g%_JwoR|C)@{{rt;gcjZ5wsdi4V)pAKXm<@ zn@Xp79cKY|&VC*<)$tyEds`J-?sQ0|j4Bfuc+fiiBtI&G%KJXVzZE_c&AN#YDeo>ja(oN4d*5 z%e*_5VT*BeBIiPJd+Vv!F$^&eF?w+xn3gMT&7!xmJ0)7elx0Uq-dUbmj^v}A{6aiC z`59I${3m$NfVfWXLf=AnrM{`oNt9f<{JuPH<8=-Uj*lVJ;^x_5Nli(ONdks4c3BNV zLtK`UvjvnIN(souETh(OlTk1~WlX3aMczhjMJvZ$+G!qDZ8a7(W-piR;0$pyd#CSZ z++HGFA)JJMk9%O4D<#tC(Ne7@&`PUmGK$zp_Tv(>gq|hQk<>}3JE`|bd76B>{k=6? zkG+po!i4ukwjT6NG*498VC_vkvb&e~AKIr%_nhb6(1^8ASBbe$tI(m)wpd%4vggl_ z%J=dyDL=TKY@8RH-4UI`%w$g0#!BI2RAnwdz|{v@Tdt1If2w(Y{+`EI7S9uVydb?y zx3r)~qO_`Ipi-H)DU+9ZVIAk9s$A=Q-FtYh+pJsf?0#&$oKyYNb!@Mtv*p$T$|BiP z&SL1s;CAQ8y-vv4dv9zw=#3|kyLpUIBJQV7@IXm<5)NCerC zoC{1Yn$2iTiQCW%B77hG-g-xMp0H}v(Z~CpBa%CvRZ!9Mhg($vzQw0i{zY=L1Dgn& zV;*eBqMVV^l%HsY&>ynX&kEjy>0WoE$ztp(7JWQBj-AQ zXrwOvtAMG^*HvEcrQ4ewz9YW5)6ur2DZ(lDavMdxKLV>Q8;=LKYyACRS&oY(3leRkv_4ThMzV;(j?s<{rvDZwC#@qC6xbB9 zzwGJ66=UgPq4|XUQuttcZCO1>^K$V}Z0XpsKTbH1GEh%-%DG1DdV1Ds#OQG}5EPDz zxg|l$B}DSn{WN{gb8>kZVytJYH`tc!ZS{!rbUg97cRM$cVncQZiZ(YeCI-^g9by1; z6EbrZ#;1TY4Od=Mc&d@Vb9_ye`46uA-slA+We`M!6z(ppj}ae4U-T;80i6`G{S zazO+z7|d_~*@Ra~{QbYpfo}rjW{!@wyeup(E-uV29LzTMrYvkcJUlF{>@4i;Ou!vX z4qvSu4P2S59Vq_kdpKL74?ogI7L@PV2iELN@(nIF7^$d)HydrVU=SJJCrDg7$d0q%iVFoC zk$#^l#45(nVnit^gbWrgY;E+NH(`sPEX z5BmENMGw+Bu>0KM2aAZyd<8n5{M!Q>t$LZx$B!s`ciDDl>m88LZ*&@L$y!ZDlK-}& z`!3w|4f&^B%C6ny&~T|{AwE{aj@BN ziOpK8hnW6OPmW%jmu{1zG_A(oSVqP>JHs0KyM>2wG1T)Ac@&aZB4BH1)|e@BK7;M0 z_D0kA@ZtSvQ@#VwjS|w=cqo1(k&OZ#TNC@QNpn%4d=v3Kj9;Ga<%OQFzJ>KI*|epZ znbet%rAv}}a^7@9w&~b~Q*d+FON8OvuDIwa_AeAD=CHzc$)vd(rT?F2kWYqY_V#kQ z(P4cuR~l2~r{lq-fZJ8n)euXYY_?bs3VTZdW?EEkR}kv&JX%r#x7Y(w6SARrrr)Cq z3UyAuXZO!A8%6xzTp!LX)mq{v*q3S7GjoLo2Jg|U77eFxpKcGtZ1qK|_l-{<%(yQcuF@1b$Nr#0jBRhn0CXY&QBjYJ4ATtt$z;)D?>giRKBk zc=fW7g(stwHK+efk*WhJONe#m0ykjcVF~c*g+J_P%ek@^op?zYM4yMNgRN+Xg<&3x zxw44G%Q2zIa86TZ8rei}9;h)y!Csn_$6mZj%1Fl^-~(i}2JLql!Y1io|RWtNi zsRt9Yg~6U9>}+%eQ8>zkpkO>XR@3$vH#~&F+r?Guga*<2gjKn%`o#eEEp`45UGJp~^G+k3d18zb z8%Cnipu{4VpO^Rvm2>tEf+yB(0PG<&7MZGo!l9~7UNEcTjELN%7Ln(9>h8F(69qq` z<4H+EJS)rxeyE9bREaOHzKKas3x|4@Pn0ojhWA}Gy^%txD?v!!MH4TsJ7oEh6j^$c z`BSbfi)7LSRdZ#Vv1gSs&5AJ3K&+PGJ4B3Jcr zO7?vxes)rvHP+7t-|Pe`c%#R>?ooR*ACmKglNTq;mZ$s6z9EiK8tgWbHP@|(m*>YA z?M$IncH_Z*R2~ri?6Rcz5p4P4U(eW%MvDLit8b!&9NAo`{PUt_)8MB_A($i_j}3~N z(_}dD;re&Zm>RCg2iUoV8gtCS`W5FCtPZhFkC)Aor@$oiw_9n@>20WjcbR%L*#Uc8 z_KTlD9|$Hg;en@=i3U|a|Y zpLXQzyb|08v!&OWHeJ^zYGeQ#OA$epkb`5fCj^Ch=Y@mj-WtmgKU=Bo3wOtc z@8TAep}pS)_paCvG10PW(_2U-_K&w%d{wd}fbBHlUoZ$A{_-$FZtx~x(=eiHUm4MU z(>8W<#*GdZOUp={kD3$k4A~U6=jBh6@RopA-W}!$2!e(meZn79_LBe|HP1JHy(AO+ zX1iPd$x(q}nY8?ob{#cC$~y`UcV@xh?`*TsL7XWAUiu~Drr&*jV%Sj_evF}!kEc)4 z1Zmt}9ZY>KgAd$vVOnN>FJeXt$=az;LQV8_ zDzu6b5tB^NlG%=r4sk~*D@E7<*jO7)EGI(W>qW(OXx0W40uQY0frnL<0J$svlq&Y&)ol9O{G% zclFh<@PerFsKasiPdR=1H87#eNY83P{`JDNizvxnm1nR~q zf7`%{>lO7(puf9&aku;#q{W5w*?i?@yutVsR*8%1ueFt+A;XgLdOcZLUf~ildg42~ zY*$avD<06k9Zu>jjn%AkwhP=FA25 zSV-(c3d?kVS*VF%KK1s`6-VHrGFoP5)+Txh1J42$W^fvqR_15&_NduxiLjla1l*>t z0KK>H%Y|jn2dBy9lsOre32(f$aL2#>d{4}~fN*hw{_5s9Ym8+(hltYsPt^atnCc4>JRfhYW{PG~c^sl@EazS^BW080f&E^Z3$tcb zz*R6h1+U|N=EDz$<&&KRy>uWtoNx8-yaP>Zd;48gqmUej_VmO4#Q43j?{Ma`{ucyB8lTTUYa|{*e z^1hd+0T+VE#6$3Du4F3LS>yFIt`|mn7NkCS5kx#n5745=Hg3N|zKCR1%(i)Zk787< zR2dHe7_HG`GlXVek@BumO~v%ASm8$96n1EX24CCe_w{xYjDzr4JbYwv|Lfm3n8JBJzQ-Aa566&p-b>B)L3 z4EPG^idN&9BAl_1;pbo0+kGd^=CR3OQ1F%j<5Gr#bwbhYp6<@WtuSWoMckgR=R#aV zbf}9yw~IA?S*W72+c@>4nTze>4Sfc!K7?+8?uLfha?gtQKnur+@x>X%&2r15X>7^=4?Y4R!Z%_A*Of-2XUgt9rJ~-z^wT>emVqN`;^&!O|U_gnLH+tll zI_y{i_uDayC=?@+((v>Z2y)qaAgYgV+$o6Jw#W132sI!4{fKm`mI;laNamkJkDk|< z`X8NbyNgtd-QtdTzk}Mdp)d=did%~8Uw9!o4X@BXbe*CSy#t%Om1!L&oIufN}QW-(I~NHFAxcWE+~E?3~+GglOX!h+8# zP3c7T6P%1i`L08h{0J`6xj<7Umk#QQKT1%{k^ViV+wIB7G^GGs8UR2pe);9;%a&k% z_dM%>s|Bwl&S~cQSLTN2Jtt!``4;ZtMm9P9#<1UF6jBd}nTRoPpBPN$M}JMdVTw$q zUgIJJz1r@s-=SrW(a13^RlSZZ09QsM9+=c^1$Dcg~%B^F<`^PxY#sxy_f)?!!U9{OP(HUIl%nH}x2apmzA#~FTe=3^;k82)+< ztt`=FN_vqFxgksPMdumG&HNSe&yC6%WyyP`0@|o zx1(o8i~j(P^Y_49o6))4U*{?X^X8Am(amv(t0t{Vi(7$F*S8SIzAt}q1ez%jw0iIr zI80xWjzs2E4@H)0;%j!o3KNPBscotjzK-iXBl!no@loXbmjMZ|q5ebhfB`Tw;?_Cz zhcLN;)>_cTlW}@4L}pf_VanKXnK9!J<(CmNy=4e4v42}6`2ySr=dZCY(;$*GT&)`F z7i*hk{Kb2(jmGH`T(OGx0yiFLb#=Q#BV1g482=rH3=JEY2M%^J)-amr>{0J{YJ!-6 zR^LL0qJZcV!&T+>?M61Sm+gRX4sTY=dDt=bA_K!;K>s?=TwH*dnmq7g(j&F7Qw|=B z{H}**7@`qp$-*<1yK&NGpw=BunN?o320}i1GX528GC&o=;f>5?g;uvN#3~v*!~{a; z_u&6hDibzzs1;AhtXn#naAa$F_uFDa3}c)f#Y9&?MV{ykFII|hRK{sy8Bx2Y>pxhG z_TY72r|=!v{dNhUk3%IE!Y22t-6)iiOF7rufHAFl zmx$!~GQlFPs^NIv-tVWXxA^5{sDhYIbYU6az<$Fk#3qq>Z>1@$SR_!R8Az=31#zmpXO@+sB{l~lMg4qCR=_WPt*}0w zP1UB7Qn9J=X7qUwDd;o>E#KJ58g$8#NE9^LaTe$xJQRFmt{I8??$6b_%m^8x-#&aD zPdsDN0jMHrL58ITiwO4Zf|;3iGHl-v=WABjfX-^7w(J77eO6%Wk06p|p=ZF5KK|Xd zEf7!$l53nU-9l|m?Ffh&@#Z3$`eCNl{SeYF@}eSQp2|#-qw;*Xk-aAvVz$ms=1}q| zh;+#>@W!!u7*1`JZYYHO~|@Dq)^~oUDj-^+O#8 zqqifMaw_)eH#e6@W9LF1xkuWaKb?%(!j`A#lsEn-TD5)XZ20F*VkkZU-HNXR={_dS zN2L9B0Mgx@Ja4Kd3=Lf!FWuUU2&%KRJ+WWg4<}>G&jxdSVb-dVDsr(jU{%Xd(5|;m zJ2cb6W(4p=gQO#W(Kumlz3kzRNg!X41B0%&;a;do0<&(WcrMq5*8XDc?`R6isCD5q zUZ-(8hpm)!Rs%n$3Q=K;;S#h=Y%z2xjf{+M3DE~a!RXt)&t)8T)B+&0$|KoGXg$Gr zv6NNhzTzUU^G`ny8{nzMlE$xyFzWr|D`z7z6NXLP9LYajkU*3*{YtZ1C01)L{Uq*$ zNdP4+sy~)4fQZ8wteC`SHdCNTkqofLTvUjmI1w$4#y@3~s*Gh^%iFA$>ex7&Gy^|! z+pH2#oQr=G@Rw;7Pjm8Cf;lsC80K3%Asz@k^ym@eM_azwZD z=>m6qBh9)jFXxr046~{s zmd|G`{>AhU%Eo~5D%rYERAq`#O(YP%De_&BryPXgqJP0CVrANuP;OB{Y(&2sU;w41 z1R*aPfBF%n9lKOx?k{K&-jKp=gOepQA--9M zCCF(pUGVjCS6bo+6-A}C0;P3?6gi4hUnFUtRuBsDyWdaI)145hDJj1Udk_YTP^Y1o zw3}V+>`iKGKFKtI8dij@8MtBVx|w25CaU+09Wc=y4oG5mY#&3k!%{xgebM~od>kdk z&F6koLb=RbMEq{;h0%DWNZ`3zGLq!?T)7Kzg(KQ)awJli=#;6aK>mmNb2D0I*p4Ee zhfCt~^Z`0f70b8cF+vEMv2R)^DDwWIL-RADD9#P*8Gn3cklVP2H!5adq7?!ynVCQo z3PE-Oi53?t73yx``#2xTgTR9uyQALkbXaPY)mEp%H=tpMbUX)wpG`rOaFCtQ!_5kF zQDkDDo$Ub*SjYZTHTBa-grMgGtKqp8ZH&k!2J{cCgVh#3jOk2CAmhmd8GQ!I3=$DF zwEcPR@nj0YSQCNjdY;$ANgP;M2okYj^ili(x>E}6N8k-YC8gfL{{|#Sl-9p)xODSA z#NjY$DX38fd^Q^eGLqP?LKA9AW{-#a=~~jKFCC<)>CI>fH-c?D@7}O!i(5{TX3kmk z?Tny1+!qQ5<;skogX+vX%tGQA)B$ckR_C~EvZXdmDXdK>hvivsI2$|)&SjX?)$@LK zs>;5WC$m+W9Th>V;D+$aR2k-NS_tSvjZB>*yvMaW=C^@p4*;3jHB7MQNdn}0=Ss1k z3*y~g{r1Ooz|BqL!Z>x z1!rlV4`$ZKdMRaG&>|qifHfFYhj92aU_<4IlMZ?-Q_3U%pPBq6l5& zSfFyXl}*Qqh>v+f+V+uCj0n}O)GRAJzcmDQzB_I7Ev4|?d&#I2*cciug{ z6gs)>qPcS({7E%7X@@Mvs>jx8Tu!21aM z(2)>d;vGs=ixZq+S6Vb+F^1ZOHGWL^_%)Wy%3*gndgJ)KuMMQ^ot66(B8&^C9L0|8 zc(E-#{3DFKCVYV*9!KEmtV@Bp6XWyoT3ZI=Eb2h&H13Tk?K;x?_mLzKtmHiY^C5ya z2IjIW?^TpjsMtk5Gq|johuC;N-HsK9f34mhc^bsl%@mzU1>9%cQN=rHgJEx1TKgfCdp(;IAO2`TTI5!so)Aj7F_Ut<@_+>vu1= z`L&jr1cM{YBw~~GtwutIJ=xJ(TN{o}lOtV>p6r*NGr2e!B|jgvuHP~?ysq)@b-zl? z-bh-P-j+h}!S@9CgiP$5J~dvc>NVc(hHfp*1Q)t%=3_WUtCecSwbGz33|%pQ5+4o> z!|XODCKIAel)Xy0kh;PRmi%-z1b(jGul*bxm?<)c?RV2<)2jIG*Nft)6Ay zb91icoBfm@uH`UZ`K}%anzSlIS&Bu5r~^lekvU58c0WQjf5ohEtR%S4Fy!f!pU@`J zEF^M^02-@GIEZoki+k1tHJe|mrc5|%DPW#qQH&FUw_g%9rZ{vWAS0pS?HI{q=bQh$ zJW6yHd1J6jR6+-C{eV4Qo>ytF=C#ZQrLi@lO z;6nl}p^LGnDh>TCT zRXbY2^FqeQ)E|qW<3WDHYM(x(7bm2p2{<2Vcy2amN=Q4jIV3!@n|3D%U4$Br48G<@ zUtp@V0{OicE3ctVgL#()L!hsl&MfXp-gav7c+FXRMvUG*y+f5;S z7YeVOL@V!MMMf?B%(g{2opPc&|HY(fP2_S7$O4qGAd|vm759cqWhI37YGWXLV8apN zs@SSKH%#(gX+qc6die4mM%O38ye@{k3xOB67ujcCu1i&pe+ukMaIeK?2bN(>V0-tI z`u@?Vu?2$D{cq2#i3)=*mLE55f6=SC&uebgAibLne5Hlz9^QNj{XtM4@b|}_?>;S% z3P<(rME|#zzm5T5fmz%^41FKM5%Yw^v|{4AMEL}gMZ5VP@s9?~EBjGAq0k$COKu&*WN8V6njza)>@~&?pM^YDYSumiid-DIM*nfus z2|{M0i6D%gZ*-tBCDSg|t~WWN9Nzt2m_2+%ucqLCXtmm`8Ne)oIgr2=C<>JONw_Rx zJ+!qP$W(3V>NBO538KZrLo2gUECC_J`Z9okpZHzR6}BjsXG1s=FSK)b=iuh7Wcpws z)ueZ~w+rY_3iFu^K)}x6`2FT@IvoIVkxOKS1b;)qC$EkvRxjWEaR~?nq=0e}oc-mb z42#q8qUxF7lvMP|$}b8LWVaflK9o>l>&1E-7K>a75$2WZaq3_!(M^Z))`vqtZa_;b z#&!8q#dmvvCL>l!Ty31kcPwt?LgH?I)du@>EK|B^mKKEhZ*^4zwqbi^9E{%9PqS8kY@pQx7z#9i?tmuv`bL6 z(&xC~t!QVHwp@57)tcF8xwtA55NJ2BKc9)k64AaX}rSmpmYRr;A)ZC))%>i{PUgaMWa*^yI)!G2{aymHEy?dh1GcNh>MYw>eW2uQ zio6EOW;h-(5Mic8bk}5VXr$l+XaKNq9y~eY*S*W7`qTc=Z}FbjiuV?(d&;Sh!F)91P6crJsP~ zC4~(W&!nBdWZNH41k5{Rmnh)929`q_Qo+PD9thuaVCP8PUq}Qd5b;BQs6ir3UO=TH znpW>!sKWI8ixCj9*jq&x`LEgWwq^i91|a33Q)E;3MJKk54U7*V;?gCNjFFIJDZszY*yDd{y{{_ zXx~=Kbon~;Mz4y2Ix}W7qjElyqDBCqsMz{GC3YvU-X<;zmlMO9^pShk_2-`8!^j6G z=Z_*Vj3)7Z+&wz%zV9L5&Ox*>KKy>jWmz~ zew1WKbLFJX2y#2B;zRF1acpe^4KmXKVmW#weD>0I-@YO>ZE#kBR#v|5rN#D;l9>V< z@>(1GNop!l^jcZE&Hmv-S&`2Dsbu7?=gk7P-m^v5NQzP4@F4JH*jZTCdQEigBxY6B zRn3-e2)S1i%h?f@qwzUR+7k`B8XFt6#5LYIjFbCz#6&GY#%!ISiC*et3+smye$bmN zLzKWIYgDKKsHiFmF7%2-O^a3B%U4$LM-W6wAX!8rjA~~9-VEm|L|il-<@K8zfA$gv za!<0lECAe?p((3tsbR{#VjCP-0NXUvy`k9$lcRG5(l;oztT%&G5_NYBr6ZNG|5{t6@=eV zQP0bL;OfDAeD24KwdwZDC?|-w=ntbE5$k2>%n}h9Fsj9B*E$!otQ*|>wHS6A26!T* zWz?R-HnYm*y7?$jnqL$8%nxXRviA(l$7Z6Pkf>ir2|N_cr5q6nn$@q?Ku7Plz`l4g zmsDXWVD%jfTGnwP^~L*+&fD~O@(b|_83LZLyCNx*u^>)Xh^oIeNlp?5XL5>5@di5OLxo$#Yw+kzuZMZkS(+)kbW=eVH>)e*C{1K>Ep zs%ZKKXoxM!J%pDOTxbf;fqWB_7+3bsPFw=8jgLy&FJ;#&>0tKo4BwWnCiy@i>?gM7;^Z*)511b8l1m@RA^+a%`UFB#MSy#C8N&0&C5;2Rr9C1gt@usIT%f|UbsoKdgE^pmqn+YfK zOj3&0_ayFrjgaIkY*Nngs8+AwuinZ1@K_#5kH;jVmhfl)Kw))FG$Rf5_|{9FRg*-# zaPPEFl;#s?#}h{|rtZJ=wG=OubZ8P)i>@yN;~ag7n_NsgtZbzj2#uAGQ;_KA_T5rY zmQY))s6n;AQKv_=KZiMDN?@f_qrVN5J&emx-7?bmIP+IPP7jVcA7;e17R|p`uu|DS z${$}t2`oFtqhDbS)Y99a$to`Th7y6ON=S?`m@Yb+#E^i7$8F+RYva}8HuFIQjmL4@ z_2g8~rq)Xg%@}~|ue%8Qb>|_tki~d3WUCY`_K#P>W^puT5k%&x4QXEW3MFb5@x*Jf zVz+VMx;)qoEm z2-k)+p^XL|0d;0TFUw}(lWArhLBPd%EInPKsZ6O*11>QhjHT1A`*MyK^0*U%NdrKm zEpGRdWuCTiit_~Bx-UtFGe6}?aq;CBf)m)r!wPIfUuCXRTMNU0f4M&K{8MQ}>U=bB zcr;JqhU;=F*kHRc6`sJugSb>z%gv09C)17T`|7VwR;s0A2$yOak5}E>j=YN1Z4Or+ z8wcac#|AcZc+ypqOJOJ~fM^IDg?jU;e8rsiDm^=|EMx+m@;3!#fWhX$H1S_hDO8g1 zAj35dwS}ko3vBUW19U7hWu|p*0q&LGVwzUnPY|0)uT_VB(;lF4fiR>(T(q0eem$o* z#)nMbeUUGhvMzl%3BYN#O@ohyrGRi$D@we*N-I|>@53g?-tI^Wrf7_eg$Gcro?)xs zxbxWVNAD4lWzwn%7LO!Jc(Lf_Hm{vEhW~4axx@uOSe}K25jfOV%cZ(KQum_{wNiqE zwv0bdC%Ae~$QSq=)S@dNGX&EHxaSv1TwwMUuNd5LJ;T%Adr!4W8cyc=_8%l&$-9{^ zTXOpYnjqV`0C-GRK|uSElopU@H-P_5+)o%?<&E`pt)==oX2b3|YO~<3`-BG<4z zUKjX8m?bk}luRT=|GWtV6mwX-P#bGHd0l67&}Sm3uL-121lj;)yHhpY^spTx&+F6# zqyis*e%#oLpZ{ZTPhvS=(E$Wc(qiP_qLubcEa)Jjk%6TZ2J~-R`WzT>Ytsf#I{M8E$$VJA2Qd3huwfNlxsg0yOTW?HzA8BE3lP2#=LPyf|EY@1a z$dt%n`3z;kkGLQ#PrW-yjpt z9;`l_0@@f_K&}%-o^J#a7hCTPL~LlJ-swNN^_=@Y6`I-YsWKAm$^&e_)%F?u;o;7^WFb;()6K@(g|ewa_QP z$WC*l6r$`GadE0jY3*vv2vDw0N}3-wmo&egy^EECi(|gmbI!f zVs9-EXqfns0SwNN$$@36Ydf z^kv7^BA-DkP%BOT{bLlmNmQ;{IFzmj5Q>OSsO-yUzV&)?rM~F5SO0d;g-G8apqA@- z>b~ZG>spXCwB21|8j%2kj*r;Dt1bZCgoH1_Mq2utPCh_Iy8u8swu1wLXma`vZbOrF zYO^vbB;RleaN2AVdLyThBDehsHKc4q|UsuUIj+7FoGutZD1JA08cD4oa5qfQ?JiT5_fTmRNUx&mKvHc_0LN%ulo9Pd@`=V@C`tE`Z1k9B!KD$5RBsV z<;!P$R|i$LvzG(nls7C4*0wmxn;a)1FaWn$IDD})WRxmKN1$1ughE$V>R-T?GC&CZ zj`59eGLG~)z+qT80pf0Ud|$@+^v2_{(NPjU=Mq7?X zqp3T`i(JH9hrVWBYK4>5OLc$3DxyWK)e3fu!Q$2W7Y$_KHHdqeM=Zwkf8%>LXs-o@qc08nd4g}vK!k* zk_Zjl#@AWQX!sxB)2H~6t&_K(7{BVpXnTns&bMfcrr3`vju%c=+`mBM;!es+jRDjJ zP*Y7BSF!|(f}n16-Kk+5_yTV*sFiyitO(!+IPAR) zQW;c-Vh^1zH+l~zwoZ6aP8Zk_YpZg7nIC7eKKK#gQ)?YUEhiMG_jh$6F3(=58VKOyw!6jh>q>uk~LKro?=nU4j9ThHUloh?(s z^n3Mrf?4-{IEjG!!p(cYxnGUzBNfB+a$GCOU^Sz5iM?C z)gvmD--nN|Z||~merh;F-Pe7yW@+iRf$lTqaxy#=x2M6pTiMxJWo9{~;xO=oYo#er z$jvI~KUoJFp)as$Cc-O?`kr^W!!*h?8Pa&$dr{PAe-@c)Ux$y>!4AqCWfIi4f9 zfsg=(vA0hrG_JMY?OMB7t%b{KQMp-;D1m^Z14P>1DeISFcil9Sc*Y8y9l_ zC0DxbV4?apm1oTHMsVa54hWxbp`um-5plm0ax>Q@|0@gc zMB4{m!)cQ+A09SC@?VPz3u-fQw0CKlYj;@ zX_KZIrIz&ip4ERz`Ga79Tz71?+^zoK)mT}e!X7vLXi*CAVE@T^9mN5e5AQ11<--3m z;SbaR@Bd-fvsUddvHrJPVcu6|I`L`p{i`o%ruA zBOY)6H_DF?U^+j(>XoYg+Y%45czW3aeMJ5KiDYH zHphNv(1W@e4YoA+AG-^mlSfgS)O{ZKp~uhJU{Sl+v!vyHtoQ5U@};zRRHu<1Ycqow zUNUodCgbI$@=~vbUS~q+#cm@mAzi1b(!SFYS*@e(`qAk6AtNUR`~RWpoWtwr!nNO| zaoRMtZ8T0}+h$|4F&f*p?M97l+qP|glfLJi>-zrRduH~`?6sbCKfn84PbULz=C~;i zOsb8FGp^^68g!Zu#3)>hng4V9^*&DKxY_0Z6kdIf%SKYb*cGq7!|)XsnXZ_IES{^0&KG$i~G!)%+`wb%#pL+f!tVwY%zWF(j^eJYfV%SGbNt znR1Z4sk#ARDC7bhZ(2>Yq*Jv7dw>7^KK!V~90pxHwA=FnLZSy=vTaFg?^^erKg zvi1ux-0!8M_3`$rJ^$=9F*HaP6lM+ipJKyrQw&sX zGMU_3f4pKH4ko;r?4|U65($Sv!6^W)uB0>MS781AGrR_3lTa6t3>-2RyQZ-n4xTCY-DUE6WL5|kErV3g z)zn)xK-Z`8c)m%ouKINXSiPtafN52u_l%o>&*FU;4!sCA_&So3A>luMsdt=k7C_ZZ z;4dJyeAPo8*01k$rLhKpe1X!#(C+%-avRz6c2))Ozd?c%R|pdZ z@Oi4meJr{ph|T88pb3aT7?FJQAmP58w<1>I+x>?JUJ(5}9(hSh>H&VVJSd2+G_Fb# zVHseWWFptA5J{HMv%r>Qi@;{LyV@BPRj$;gF$3l$!YZIq1F%$~#C>W(>4g@89;!rV zrpgyS>OCJMXVf4d(+%%5TU)Y%$)kZJoNi+?h9NoeGGkF#yW}Fk=9VItE1dKWP%hGGQzoJ3t$2T%M5)l@6)pYKV#)iR^f( zj%o**0FwAy&Ky9G`Iu?ShoZOaXSk6|qy%A37ZBbgqBQPPL+ncV0BG}vxArGrB+kFb zFd~RgMMpPo>Eh^k2iTCI-Rq{yXxd88FgNzFatk;t+ z=^`;V(3R^uE8m?&hMHr_?TcxDemJx%ch6lovo5(}xw;alR!hy`FokJxnaBCv-*={$l&kfSTw@s?yZgpz&$AyKg?h7eD&0SI zc8G`Ko{bL8D_U>IGCj`!&dJlQgbE5;)q3uyihMgiyt>v2-3umy)Yf9d2woUGd-=t1 z)&5>%^XmDoY~S-1?o?|zQxYo57TQHr^GnDl9W4V>uJw$@>DIM&FtS+&cLFB3Uzf%_ z7%|K%2FsM_MUp&)MQt#Olxet9Qkl2T%WxKxNp5;(>(S%bsMrlyHhheGkzTE-hy8g; zBojm?i)zA?9g4`}9$pl=IcKN-8`hSk&6n zC-zrIHx0S4_s8G-J!9_D>MPt33i4NM*S1?HPdIG8zjc?sT|9Y)y!p2W=;U@cEWJmX z3T$MVNg>}LstaSP_hIngou02X9oF@xm;*Wz;J5=!2)xUABwdg-A7vXxgjer~eCg*7 z#ViqX@ht)rhSg#_rEw76k~C znX-15&@w0gB$w_L_=|+>bibazJPtfpyjPH#GE2K2H|<8%m{TeJ^3S1TgP+xzbHn}g zKUo0NTTw0P)~%$1QvSeQ+6wg|n?TXoHX8jHrGR!kP~by}4^DgU(tA+UN}AtB(UZcw z-wo<8&r9_T$TL5Tj*k8?aC&4%4ha^Ge@6Oh_0GUFN#{iJNBCr>H9wz<^R1Kn{<}Kn zl#71s-&9XeilPEDN%OWkBWO9+`ptFA7Xjq4jHlQVwf}}iV7euD`B34r-6%l{h08g} z#>leuSl1@urmjaz){O|i3u^`5wcrq`RNq;xd*S5A5JL^L-gSk|zh57^59ja(Mbr$} zU)VgRO}<+n+^By&v!T&c$VNoI=n;9=%Fh4a6@fP}kTBFBH)VJEwK?AAS3bLN`qmHf z?11GHzt+QUZm5M(M zEx{wC2LU>dhG8iy2QtV7jxhf~m;m?K@uH8e}!j&eR@e}E!1#U|gIs!ocg&??F&r;io z2y#l2K`MQ2%3T)gNV5-aB?lfhEHS>WY?URJ_Fm@Dy34P4tSrJP2#4pT*>#(F=VH4H zuwT(H`UE^weR?O3wpTKEO|jVv{mDd-PF3v?CJ(kyXI`cWpTIV>0Z}z7fcNhMdPgW- z+kgnYA>P+EWp+Ra@?>;rjEPJ?zWYfBUP!jj|(;MENQ2RJ7b*pp}~{~%t4Eb-`? zQ0m_AcZ&!D?^T~N6CqX%wRPTw)mF#}X%u8q|29Y3*WRNHY&n4Oo0rf*Yj+r6MI`QV z?M44mJHj%2;g1C#+ya*lH>&jKY-)f5C;{r~WmRXalhODN(=0>l_E#3aFnz#{p8~7z zyLLzdO{;$r4PuS~Sm|oUxsOq!<#C}C5q+)(HVv5g{1yAN6Eox$`{&_^=M^S$i%|)c zDH}7WJ!b)L2%o*;;=f6b4R}*X;Fh~oNeynt3Y5+?achHdE@1VKuf8vM`&C(m(NNyt zHCw|Ax$Td}Cmy42h@*xaw&9koJGrc7)c@M_pKGSAMzZ!F92 zR)VGiKrneigb#FN-7uzr&-O(_eZ~EH)S~YEZ#p_kCV!0eXM888;#B~)bh~LD(j>Ge zNeQ@+yY>CX4K=Pn(8*Zv{?LE~ooz4abmi|50pPFrH3|DVDwPGdj$e}>40>{qlXOQ$i~yRu z4w`k#H$$O7vh%xr$hjLo$R?90=dZ*E--rnuJ?A`sErRF*z8O0^JHWdr4Tii78x2ba8w!ycOLLzY3!la(TF^_IIe78Yp~THL^LcyH2Q|eJ%TpPJgkFS$%HnP ze^)mJ=zG`MGWGZwJWnPM!x-3I)M6b+K=VmJpDu(b4U@^l>pe=&(iDsY>BF}x|Iw5~ zPJ&eprp~1Mne9HaYWP-BqM`Cd4~?h@BJ-D1sKeJL6alv9KQ@?xIjug>w-dEQBu#Jn716+;-c?*Va8uX|;YaR_Dyku`R zVR?{nne!6Cr~Hj@p==YuKS_nT(9{?Fw8P~9fd=7ZyWIP|5@-&EzzO;#vfiFb|LvGq zgoycKDfm-J zZ_d|sP8L42gb-NovX&Ok`m>Xh6F~E7k|ANOpD@)%j!>97by$S%4(M-UElYjT!eSn;l%yvM_xTQ9xIO+RV83 zj~avmNgbtz*Zk+#9~AJCMPjHixkYFr93eueGvUCXVpUJ5s$av@1_fR_Wl*ae=1zF> zDyV~(^mhN2+J}{2vGrO26-h1=nDewg^O?Ald!v)+bM>z(F=lnBULC+8KRgW0u*qn5`64@Z(}Ip zpIH~OrIazYP%`rimtm=tmG)?q{Kn5K)06+rx)|vDOSuq*MHBzi##^pK?*g_k= zCd@b3Za?Jsx^ILw`@SPX5;oH5VT;v%R$SFUs>)J4+QOeBALdKJIoz$mo-|`{$p&5} zWs`%ltbcE^4q-<@1EbN%&k5I?Ns(kLebMLdbjU-4gT+9fTx|qI3^kKc#QPU8yey`M zk2Bc@!IO6Of0M0{%Y{G+2~ zJAfkR;0nY7XfJ%!4b@MfhBnSXbU>6K(^iv|KDguyu_y#7Q{dJ}ecyw-|C+}c0xP)h z%azwuX_8?`{hE*DcliV2fGV<0Nu(j%UvqyT?D9l^y~4KL-b5J z1sSr@UZjX77!_t#Jz&@7i2R{YxgzAKKM9&>M{mmC#B-()peO(635gfgtInVTmmI~cQ~~cw;0UFF5J}PV^II^q zbZ`+SjL-F!WKXh4a<)D-TD6aUt-q4UR*SO)vWR+T3e5pr<3SCCMApwov=un$p_$#k zDpQKy*uw`O2{Xd?U*(xk#9tb}0=1ZzVW+h?#~7HI?-+ng{9!6rTB zuNiJ<(S*+6UXwq^Ssf3S?5E+CPkb5s#6(f=gMu(|x5$D9DFvzt?-=GW4})4~6ec2l z(Y=F^q;usPd*T9HT#u@Uy9h4g`*GbyXc}!c`QJEIeGg$mGu8lYdHKis^O+?NZ4*V! z$L#w^c(D{?n!$7G9ttKWI&n=PI$K=XEq=ke=Dh6Rv)3kyN7eI{^FIzQBQO0Xd0d&;+ z(tMk+hHByaoQCxzYJu9IVaz1}czvup6U)@Mua?X!^G$7r-k;mw^;^?rv6lwEQ1h#U zq&B|ZEzAAl%7)qbf*RL!-u7Gsh1d2tYTe~r6uJe9snIq`ZW~GH${U=N_%iSLsuC~g zce&iKFxbL8NG)wXM zC(C7mz!3~s!vFqoQO zOy+VSSp7F`op(${H|C0WHfa>ChG{&-}oC#bln1~n7*BzpjH^P&P9wU(7F8m}X6#01Ik$b9b za7EGX%%Ku|+~rz9OGIl3%Euy1N`lxkVp4)-y?z0_OCJY6wMu5UfHHsqJ&EL1czhr- zCdUk|V;2>DUi9U4%ukeH@BSj_y;?4~PU8dT9#Nh|JiOX6!;DBYs$K9TXCqeh{l!aw zPM>&2^hYn5rNeI{Gsr7g?Nq-{*PPpA67Jk$E7UypV5TaCnqKLmOyxp`-RBPSs|Gg ztiQx~i!*YCMUF((Jf_KMW;@v#18LdOA>(LSB3R}l#LQ?L-rlI67#=$o-ot_R z6LIPO{aww95uy(Grz#;|B=MPBx z5PZU%gW8tmXA}Jniemruo~A&70ol|xbwo@6UjV^Nqk$$6ql5k-AQI}45>BAG6rKTS zkC^3{8!(*q&ifG_;UhzI6tx2xML+>a{B7T-t|AaWgkZ*yoXZ%H}($w?)}e3dsYR=GUn~m3W(}UKmQ! zv@n@31pRI90h&-1?OK8}JxFbu6*T_px`E?jgMQyLqOv%$H7ncSnwrG1K8g-oEMpV4 z%$7WAM4!YCY0v`ySnM6j`T}p!8-)WsZ$_zH?*ZGrf>bO1F32peXbI{_AfbtQ73^WA zL)?g3to>hZmrQ#WaKHQQ)l$=<*5*3A7MRL*3 zJ|6yPwVT2jTJoJbDWBEi77aA>8S+@fApsj6js@vSX@M7`2(s zBQp!<$!=j?QdU8n;_nE2w9!To?FKc;Ait8;3X_LYk9@BSL^l$>7ph@jaa4JxD1B8zet^LEY8Iar6ir~g`inQRApW$z5gDC()2qxr*6&h#fB9rMA(%VqUliR4UP1J2 zU07MNA6cPapa-qX0WYUVAzSi?v2La9HT3x_RGnilr^hHfv>L51lSS(ASBuxQ-Dp%n9?G07MPKD-fFb9U*$>Bk@chmXb>6Fvq%k7{LH7>@+Bry-Q=zxA^i3(xb#d%9w`#tZL8I2;(RX0nAaIuhliZMIBI zuD|B8DtIiEN$Rkvihv1eUwMKwOXea#1QG$0^=Gal)G~c`!AFcOAQWX8-~*fngeqpV zG|mR*+M8)&n$!H*kJTLIMq@Y6%9Ytc0U`%p(KfPW9uCiqIvf|Z%yJF|L#z2=$5Qb& z#tclnhg*&83IFx8_9vaD^|Qh1VLd+HdX-!`Z!A#l)+7NvTW7*J7G&8 zfpM-O_$i0~9Nu5O_hi6~a#PcS_BWl)@$B6HFVejaUF-FJES_hG+F0JU)%urzLfC%= zbkrn}NNF!ga0aFMaC1ExI2OEE(}Mmimqo|hzZxC{p|kRcMoy%bCMGh&kPS@L|9FHb z*^f>KvNq$HP}WSmO4_?rP1>1*+p03VwfgYiTS{l~vv^2I8dW@YPuth~UC9rC`DNdXmvL#gD^h^kcnG$M%ySW`#!LH(iX z0iXiYPs^!;Zw5=~49&a`9JYtIL<3}xEP`sC$9Hnm1n=EzONgH^@K;)MRYT^}VRhTkV9 zpL0;Y3^sHkhkDlm5COW>6`$TtU&u{t;)Oyf7Ac`Fdb-qlq0bWW7~Ot1g42>IniSy7 z-?g_;zUuO*(mrxG?UXFzRxWIQ?+d6R_k|$mJ6VXG+buh>Io@o>9ex}BkkWAMU$45v z9yC!j9_-Na^8FcOvgDuG<)j{{^sWv5D$IG|rNuj?35B1DH*W~rm^4+LKuaoz5&nMW zBbMcYo88e?NY{)B>T{}-d-F@7)b!zsdR!6O93m}>>m5M^D@$eu{!t_RUUFa8F7B4C zCBQ&IJ7xQ!1Zx9)rS1%eHF+nK>wqUWOm_?Lr+j0-pQba#vwS*D0Re6OdF`IbijP96 zk6Kcc)m13g@-@CfE&<(3xSTxbySvXhju-;*K@fMwKwryN%pa25PW?cL-w&IC;$Z`` z-{|3mF&T}*3=kr1yT2W=+}eqve$E!5ZFDtS_hgamw46~C6%^qK^n&+X^SIZlKZS>b zs)A&dJY+?G*>Dbfu>HhEZ6b>lROB-}7)w^FpW)YW>@8u9F=Vx*Fz1P(W4=&GHAP_R zuYnd#+{RCkshaL`ZA*qmB=2 z)%{bWj#jw6_}3jB%OVwzf95x!Qv5- zb(ZBn8;YrjER8SlsGaZqdrC}^Q+`um%G^dPQiVcM0BN-0z6AA^n z(+>(^UJ=W|3lmN94fMB@NP$|jhkgs2Cj1Cg5x_}t=0{b~A|~DfZ6<8vM}@Ez!@!Ek z!IMPmBEl$iDC#3M;5YC5dI3VhT`BFODXcT#w^2ZV;b$;7fmJ1kON5Kf8z#fA8|$L+ z2L*4ZOfgAf9K;?Jtu8id1#pE+fHnYx6#C`&wz(o7yifL`e8T2CR{WYbh&>M+sK_G3 z2%$yQq&KLaFkhvD+IX|MAPIDMw!NGulQ-`L@pd7KaX1)J8+w8yxy=$%v*vAeHe7B% z8n;)7T+41iEa9LVhsm3JZ6(`dVS{J-nmBsn|0b!~5?J4UV47kAUX>iKDS3=^3=nn{ z{A$Van*zz0{68;#$|7)deZhwb69y~>DCQ<+L2%Fv?82H|C__g0N`9Aq>HtB1kf33O zAirxXPYa!Fg6-cl18IkGM^DAT(*~9j8!Lb!4v(R?dz@zS9Y#FX;T5BRZD1-3^N=6g zS^AhbBar9mRI$&YVBae!n7*8!UuOo?wP!7lW95Qr$Qn$l7i1;rFjhvkgRiP`xaR6M zQ#@EAyU(NZ*SG6|`UVk#wz;g^PeQ*qb>@q7+S>}X$sB=z_O&Wr>F33sAH~{?517r5LPi(BB=g}|W8_=u5Z(y1~kPm^}6-1A> zr`oDF^%y!aHzP-&lbxvT3O$#WiuINw-5pS`SgD;0@V4%cw2vn0;mHA?bT~BuR4rQo z5-_DT0|u@7^|e}{>j`9dQ3B{%0iW(EIEZQ}BxHa~B(OuzNuW0vIL<(@{$PlOUziJZ zknV#nliq{wA0Ym9{q=tR98=J{$O{fV>~QoF->1D8EG2ud|s(5ghg%;ZC6<&HiB#hfslf}&NnoLErt z$iyQS$|RH{GNcdrLfiywIqgCD41`bPnk)(`IYF$ieBQy_pU*@<_yAn(tb>4cGK`u{ z!C{aPlM3PuSeFsK+@2?R#R8Xz_~X0TpN=Emr_{GUmx{!ROZ9c%@B?ARv()WZGQXM$ z{@x^~QE)jTo=QsY91MWNxtWrn;&2$M&~BYtsN(W+c)sHbgtI(cc|5e+rQF%!G=8CW zXi|s129us^b(;rD4ZxrPy;`Z?kBdh8VmV!q-q^SdglVl5EA*RA8)5QL>9TS;{z6Y6 zKFBwdTv-8(xmV0xuFOjZd~RJx3}cuYy<2~l}ahcspD^5BRWgjNZ8yDDHj zxCeAT8a)}?sCl7?!#DOc)Dy+Jx; zCyg#)rXA8TyhDDRHPjgns~1YYa+4X~=ttfHz7>S`fG>}p0O`J3ckFLE{d=OSe<^X{?$p_%4JjYy$Bz zr>tELkkz#Ll##iPLiTjq#!96QKUEbAyO*0@&q7K~h&A|Hw_FB@;{JZnRo;?l&&h89 z$$)7%a1IGd!6XJ*-IScDa(}!6Rq4sdO(8zGwwEwv7J4Yn)xNK-k&VWrQc$y%8 zMcItpww=ffc1bVw!_Azw|C+Pq$5r@#TEa|}&t%&}Wy7|U?=A~f?9e5ud9Z5hRK-GNy> zqlot=fIyAD3Qh1TvY(ZUqN|N!J^LMctJ#KVZl@~dOF;zRSzP=6Kpv+Dt~U6<4X;&N zi!I@6f)%tZ_7HWQoRtqDXVhe|Y_`wKV+Y;iGGAAwuMP9baptE!TY2lM8%Wel`unfo zg*?rc6npk-yO5sC|7{GSt`bWsh5kKHM0+j4>s`4bZLvh@8r>4=s~Q^7d^Mss@0f;& z+iU-spek+C=)!BZSgZ!{z>)r(XAA4(_oJ?sB3DH{jRzuwP$I4T{At8dcR*v# z_U3$Rw*Y|fDn*>~DW=p>1KV*}x|e6b_5d|zoUC7>QaJ>8({wuPx<7V{kkmt@(ck*s zfB;xQ5`JT~1Ob+BQ}0icP+f=|c#0;OKxiY?FZoGodKV5Lg0UpD0A5bo#P2|{r;H8e z+M$itp?4k=%4DUK*9uH-uK?a)t1zW>q>SrVonKjyCSpI~($QXlMM@C01gFAKD>ZrQ zvFv}uEtgF*Om9*f&>(PhyavL&nJrZR2o(Th@#|jdxklraQw!_i z!JnVkRV%N?53WW&CuqGEwQn}IgYTmmAhsTRJy+iRGN*b4Nb=#v87_U9hKT>C7W?vYFx2?N{&Ky02`&WDWU>Bzz1BMX zs8Vlr8%>mXMTLJjQ#{+`&}dPMz%UP}zZPJs#;z9|&y#x$`OmgiGXu>^xk;_}Yj~{} zU7kG^U3ULVNrJ$OVi`G}Y;Ar^ngnJw^?}whwd*D%vX&oQN0wI0caVQWy>oPfK?!)r zH?@XAQEcO(QyDPKc)n;#Qh)610Ia*<0kfK}(HD!`Baa_?Sc(mX!xdJmzsnLc1Xr6_ z7x*o{kvd|)fB4p_(=C_`3nm{~&F7{}U`D(XsGPp?&;pt%Cnjjw*TmJD7Z?kT-pxcb zEkX?jlvQa#*kJlGR9S>$aRmZ5A7W6FyU7VHbRVK_R&2w_m<^#E)2Uef_G9?+pI;h5 z^Miwi2G0qY5{Pmb{ZY-RnB+_pD75JTcUrD`*y=EEvTd~2VuyF4NA-+Q=9Wd}fjDse zV1mG&P`Q&$>r|DJncS}`FB;W5%n6*rjH0&sMw1=Eq{ifi8g!3SZ~`eU*ZIpr)o!sT zGrJUHYoaE0J-DTu`8P3vZ5HKuF>IvtW85;fOymWGzX`C!I}z@iVtz)w4jRPL9OZl) zpfzkcD;)Kvw55P##Z0HGXhVK_-T9SiA$FeFpYZ3MGS#kk4mwFfrhsSLlJ^zg>_#b@ zA|*&Q1Q#)FRP%&Q=#fz9j?g=! zejj4r0Qx~1w?~C$MH9?`itj`paL`$Yv|Ny7p@ zt&dH=3O%mT?}SN}JCoPMlblBmv%pNyIlasDnQG4)d&+g0_6!W_@#?9NIrUGP%*KCW zAN2%!{)UP3z+w%hNr>MQseYgTOMincpy{)s5e_F{oOpIB*SbT*NpUQM^0CP7l0`4@ zsZCidcJ$RO8FSYC`E^KD*|LSu*Otez`i14MQHSPAF4a&XK`m5ktxY@O48J>)&>{Qf zE%9IG#`7s9J@W!BtEHY1pzw4*S;!>X8iuvq?jHwIM|~oq5oROsc$A9ecZ1Y`ol=0! zHHziq_50rtHH^3Wa8Rg(^WSdP-pAKgc|A4a9di0pvZt!$w;MWGkx3^n{Kaq(`{@zB zDIb*(+nXNlz{0hqCXxQ^`$Bo}V8>6-yxSl;oy&6clbQlXhoNUEOTcTOgWe=7jzb-1 z46<#y?(g&4>+kXN_dCw_M2|}2*9;GxXP}XH=d}L*{I)i~cE47!*^4S{73g()$u&sW zgSg^j3+LA8ei^D0Hj%TIF=t6JoJiK?-6V!CgOGoLFT(u&=1`3aV%sFJ2r()(f{9`_ zd;p5Qyd8t7(FEY~DRqBkh$l)x!!_H5^pwWAS|wa@d;^vh$#y#OZK{b^dKtoemAod6GNM6g4DO?h{k+8Vr~ z>HQ{i?ajRXj*@PtFzqU>7;Z4J&AzEm4uC;D%T`cVnsk z?Ti+rR-KxL+m*Y}q-)Es5Ff64uT3zk?Bl2th!Eh{GETFFs5cZF2jeq=AzeX@2UBFp zF)Fm=ZfM~9O5HcsMPGu75}hY3GhG`&FID7dSS7hJY}ay~em-Ip%6=Of(eG(0So73` zOqpGSeb|FICQh1{|UBzR30o_ePEetl)b)$FA~Hm%ye z$la2)9VTt6!CJGeuAqf^bqMYWm#F2aX4iNcGwtXJ^$_yrkerVS7W7U$Tga%fifXJt zbBZT){Mr1iKyz@BNqNra_xanG#zJZy3?2GrUX)^nfqG9T_4MJ4Zf(YpvwB>sHT!yY zFNu<6>uiMu-@^8n;dcAG#dp&thOvEaC*^1B65cDGxBmV!_k9l|j&^6(jAWqzn{X(L z#?|Du+j8s1-&QS`k%cPr>o244vBTCWN-@(i@8QN=#~9{dmW;^j>GzQ1SB}?sKUx>~ z{PR`^`@cFhm5VbC?t)qtz`0P=*2TSzv>HO4J}TgJ@~_fpnD?#fktJwA<`JdUJIR)w zFzkssh!4h8gycz}r)r(iXk4!}vCAAAm(5zM>1Qty)(<5Z`R#rKH~b+LGo$(@E82vK z>#MXn!>VR#ssVPj6R~hlRbG~>skdl~EHCja!SnpXl(cS$&?(=cYv->=o@l5{As&&q z63vt)!XXnSN0m;y_^71QyvCtuT&HQy3`Y&N%|s+WGsyX%lE?6@A8W)N>(u+b*SV{Z!sHWhDFAc7Mia&;taoS~e&G_&4 ztJ$woQ1%*{ux#uDtr~7pI`r1mDcbj=97B$)G#Mdoh^d2d6aHBesT!u8i04lZDSkLv zHS-OvnloMemQGUHq~-Otq*s_WrsdG!mx7-J@Y_L6%YACS8)KjXlw9+ne0-CYZDo5)*;d#UAi|dR31zzi+Ab z7gfCkREG@_QVilO6}Y3OX*zu)zZXlZbW``A>Bwl40@Op7M3EVzH%Aqs+TL*WQPcjq zM$0C~cE3ped{nbz5J&F}04%Y*es z`}xi7KjNQ;5!Yv*HLMyes2FM>IX6H=a35=c0i_~V`l-&vgHhp)%=2nLQTvHUn&)*P zxlw=(UKPSSvF*k%5clb)28~*p1;*=?%Py7Y{XuS~0b3g}QPmgF>xWLRa~GKzN>q-! zxfBOF7RhPxyebgGYr%1onHKdi?q`ckOwI$oZzYiBTSgSwP#J{Poa3C4qmr2-)Fo!0 zm6&&y#u%Sh*I%`^6#}vCf*M7xSICK`{i+o9MM2z)O<>&=d?MdvG z-poQ5`aq8)AB$x?N)WX1B&6|@TWHL2E80Ml`!yvj6QS{-QE?81I|R5n2z&$X3}#zu z;ku>U_31B-2ZwVV+M2(}>V96#r?1(jte2=QIFcXCUvQA3{i$DxU2)f^K7W+l+sqR( z7v3cL((4aCc6>j#tjde}wYYzFtn_aPxGBw5;w?atEM^|jzKfzQEE1^!FRI!E`(fVt z(?b8-%CxP^A3^E}t~=&)=l=KCIb>@`8=w=!=#bXCB{%>oS) zU{~KyRcbq$D+6PpNp3IGCxq@z`s)uSkm=n{^znwpnW zX0BW=hQqWbNWioV4-Tj$>gWT-UQaj$lxh$)%c*@dyniwK0&(DR_82|~VHy8GkYI^d z2JR&426CPw$2a92%dFCtE+>VHLm5w3=-3OWO7dLiu#luFLJEfXu?>z^tRkGM+sPbh&iHz$B_u4Mdod~|+A;q)dsLz_`Y~zQe-zD>srVZE1 zp|sPJ&inB)S?0^02=^5q&x3FMs-e(++V!A*B-iap%{yC zsPR@VCn;cD=eoDAhUxmrRC7tg5>2pwe0(q#)q)=F`RTaQb2@d+z(AAlHYfgQHjVQ_ zUTF3#4$G0qp}Y`@7pc`>o_hC@EtXNt)xDvlF=(QA-Yz4LkqYxu+Ou;ryd2ebkdQdJZswUq*oN9mpi_vDt^uJQts>J)f7Cjjl?L*%}>m6?3S& zW!oFrmL+=E$BenJG5DRi_ZT7vH9#Qat_tIh_O#gT3qFQ{lJw}z=f=#~(r3+`&1$>- zTeo{-s2olHw3+r*Je5sOshRck)Y)y^d$!l(ZnQ(smwwN%=qnoqvZh1p4RhlchsM;M z8K|3FJdd8rx1(*Nv4INHd0<=+yKlP((XK&l=4$(-8a6JxW7SCaNgZBOu7XNMMay*B zk81k%kkX<2uVKBbE9*L*SdN3`+aaaz-foX-d1;w`R(wy_WTo`A1zU^i{&G@?%uFRY`v(@Lr+XyvQXlhk3 zsH7a1JFL$hq}Uraackx4f2~1Hi!VUnlLI?(G~&x8K6Rd!Oea{u2m9jWxII8seh`3V zRn(}XrM9a6*-~qcQrcr$79^DEodI^zaJ_P!@wOM$6S?!nqKj|MMk! zcyuU>%%sJG;eVg{g8~010)n;dX0k$FLT`~iGgz$<|5wK-WW5f&io zd@IhkGJkbl4^q>lEDd`qiN@~!(_~uy!_2VKakSiYxDd5~V_0HoshoDX9JakB-C@R0 zJ4@py(&BD;q_yOwW)=%@0u4;y1b^-CzwSc&x zQ;Skpoy*GUXl#2?R3;?DlMJzcQfkL%2II$sQkYpEsb82|dVF#A?i#>^vTy)%WMX_i zAYpAeWt>0kQb~W_HMf2m`)Q={YKHsv?c-XN$t`jIBuY<4>sgfZrz+3gAtqs1+3zJA z2ebwo%?_;2bV-f^<47yCU^X{fth~EKVJ*-yHud!rKECj1XFqg*j&6Hk$lZCo32Tkv>uE1SU=vQ>4bBEZ(KnGe_2F zN`VTyDh8nw(u%SJt(%%qb}?a5@a_fn(7N7h$H#SwN*1`C4+cXxLu z1b26L2G<}#f(3VXC%C(7aCZ*`cY;f>ZQf6I&)L6oI6Y1GGgsPbgQsCsizm7y!0vQY^0FU<9_pXm73PS{4Wzg!{cMr@$}V6|5m=BwEQrli2z^ED=_ z2m){UwvAlw5A`^jEJd*;OGgZ1kS#v6+ni-ltPi-xp6gH7b+zw>m(O;q;kU7CqPrqp zs>~?U0@R1%zb~%{f8XMLU$b?;U1)aQp`Zxv2fYn#e)lP$*Pnege9I_){&n_-w3qR^ z^yTHM)c4!PW{2HKK!%dt8!(v+je6rUmgSC-E&AHIh2+4p5psS3ABTqPxlnFE$#`=c zuGv8*>ZLHyz!s}HnGmXPUZydcFV;oM0t)42tjSH*NPr1sKyHAj1j@tT-kcv7oJVPk z)jH9_=~e6z4C7)|?;@gbjX4HKJ#4(6$ETjhhX79(XV{#Ha@n@y;}$FD7@lp=Fbj=s zGK2<9_wyd}(A1$B0sF$hHxjxbc#hsa4BT!g|FiHOdlN7)vOW6pGWUfLsBSVo4H>SU z)cLwjk#pynt}PV4-KTfjw{WW5RlhCV3*Hr<19i~-It8P@@t@KE@dD`lCExtyVEFX* zdb$7iF?((O`A_?EkMfsGgpB@L^_I&3><%NAdi6g|$z&}9rN!CSypimaE#|+NU{x^t zgbx>PVnvaA{bN&Y`|YhewBL}^KjNaN$Afoqr@l#81yfHnuq<#8{R2qqPdp~TPGeGm zWZZimlR@-_SLQUYw5y<5N}nR@h7rA5Z*M;(aMzdbag4BFjf8tUya`Yq8ESf>+v8qJ z${yfjw!!g*7&=!w`Aldhvy47rfkRtg7%{$TPZN_aB`X9(B+W@0g&x$3m)4<`KFA>agAa zSR%J=&K4QmH0SAEu=)hxn!cMfbHC1kZ>>=PrT$c(-?H$%vsfBAZcD30TPs>Evci0w z|9Eloag?Ru`V;V72=|Y=8&_EPvvw{}N>%R#Z-heuOKRsQp?p;1Tc;h_0}V zXn;ig5waZ}qP(eWa@$zLSKqWVl1IagqWsS!y-IuDlxiw<^RPDSqz7MlEc21#8V&u; zYO@ihYZMujzX)(_15A>_-W!Oi&f6NP=8zXi`cRC4?x*(d6Bmp~nCIX|4PjKt;v7}$ zoQHmDWWK}PQFQ?~46CTbzGJjxsxJqbU$IgOFQ!8T6Qez6vRo^^J9W}e*sWdp0e$}{ zef2uhyj!6H@(W{>U$OI(kp#A5iv1X{G-iMzp2QYm6579rv8S9Qt7=|Ab=P`4Shm)- z{DbV9CZkiS+hAf#BjKC7bWyT)J$-9Iz8>v>+Bn@TX0eqQO?RzEqkCADvNPt)MOkRz z9%M3SMCJ;9uKJeq48W?WwqN?S1)FNy#T4qf`8?xDLu!L~s*@QvCu; z-hKDm%X?cwd=(q=4gK?3!< zEHx9cBfa(#Kl>AEo;#0KcY#s>SZ-t3ed+*VcTgWU1t5B-*u(9Qn;a4(f6C&S_ zDEc^qPuyZIfG*3hDQM;MLX=JuH)LvfZ6EWxCuqyE!lI+LvfB6M1g$Z+>|qpW{7^-F z*+^Mkc4wX1jHE-qJpcMKF12D~aGg$4ilNGtn+SpprxhtGlfV}pKw2v|bXzf}wMn39 zr=y&pZ2USBElrUc@-jB}DU2n))Lge_Ep+6vHs-tBS}E-$Zey|alP%pOiN!Xre6bI9 z2Wl&X+bh&HU{b50q~W)qmCP%r+F4 zr7nz9Bj-5C_Tz6(nQ=tr69SxKD1S^+7L9a$RK3l@NG&6^yQK0A+JLKtYM>K9ox0g3S;d2P;2AcJi=1Dg%w}=y$HdToFz|!I08IFS7)j9u4bDT#p z6!YIE9DG!<%3Ox{H)`u^42mrPlT)DG(j##4s29_y5()zERz6V!Ub#edMqy+KEu|jeVpkwNG;eqi(*)$a7;&W_Evj1g*&_{dhfe z<1*TvqFk<(*_g$;nbC9oA|8A#Ga$NSLQR@8U9I))NY?OpUt^6pk3{=xcm4QvhqgMc z+}?rj>p|KAJec-F;Kf|dtBadku~l)`Ve#FOgC>HYndw6d_8V`^^@>^jsil>O-vDPZ zSo)aCHb=-DitsT`k|-=QPR>i|{C)gi-_$%?jIHmYe5bEe%>c6|QP^(5#}WwTPx&5s zq;owv=Z7|1v0L)ZIcgF-p!YhiCq;j*OWSc)o(eP)Kll@W8b%dAIe9w2hAz~y8EEc2 zvpeCqgSn_`Kj#x^H2k&|^j?uUp%(8_pyhv8^je+MnFUL!9V#r66J3T5eLi?ezuP#FX@289uF1d7TZr48+ zk=uNnbPs>JtV7u zVzUOcKh@=%@~Nro7Y(zfig|8Job8AiBnNrdWb!2$-2qUU2gNtE#dsHs*7Rh(!gYc= z;dYQlASkMv4L>%-Pom|axxCOd=1p%;;3Jsc<+<8&-6X@gJSuk#c@k&i#NeLq!=hPT z6|AXhL|sO^Dzx(SC9R^zC{sB;Jd}SU2}|k<-OM#|_)9L~Sfb!$ruK zb+(L2k@KHfHT<`;5&_X-(K@UVjk((G6u8UrDi7g?yMuQ374?(hgw;O{y5>rhnxivm z=|?H$aK3k^=^S8b$8!mS4AOw|iegK1o#uJRW6FyteS7{A zK-54s<5K>uc!%WDbv2ne&m%dugpLS1y8NE>OY+u0jmoU3^CE+vX+D=5EIjoFplbBI zic%Eo@RWUT>;2O65pAfRtT1Zw+B?*6BipWz;=kPNi`Gz{!wkQ6EXAc3|}G2#fE=ZNz$^Oz&`9$Pf-um~zk%$;brN-WFN zc(qRIt!H<2-eHV zqvKcvn&=*mus~G&zC7HM>swsLu-Wegr-#@ zH+Q}(FZX1dzV=N=$N1b7{061BAp7{~7~|WwAdp#K({bvK8C%BCKA!^G`)rG!=E|6Z z7Rj=Qrud(obr$l>B^dd2sIZT;3D&S%*u?PpXAvx8dvM~HHcIo9*>`K&n3e}S;g77^ zRTGX?lpAY9^*PNbK0@LHtLd~ql8HMZ`k1HAqW{ihG&be*{4#QpQ}H}vBrrf{t#&@I zsu;C8FD*xA8uXE=7Coe0sjMIqH^IP_B`guMLS{7re&6B-eT)_TORqqyAQ%H$B})b! zG!|@I1o4=6x$8UV?Y2vNE>L4jfdKdAY z^*%sRI&^?C0|=BF!w*fD(`je8;Dr&d$%%)Aj9lNV3chuFT%>;gWZK9}BOH4nOVt}E z5JXurlre=pM3L^Js>9=UXU-2IpTrXpkNUN&NzNM!Ts0 zx$Ks!)5yyeM$sj8$jc$n%_hMgNR^i1g^caqFQ((e1l2I9RukCS+fZL=s3gx6$*3Yo z)A3jSDwM!!^;4bLEF)vLNoxy12|`mBE?$suy7zWeYL#|5Zv_8vLIZ7vJ zY{HlYf8e;fIhbr|E9Rg4i1YYMGKb?}zQy=jgJEjGdTdQuUXt^^(WkWNIFddj&&PGt z3tpJ`ip-p-zAoFj2lc3~slVqAZh*rS)njuOF4o`ql?m)*9V=R2v;`4s9CWhph82BE zaX_}L8Y6XFMqOM;n;637oL)gnapB@L9+~243)pcXsWAYl36vsgloV0m$CZ%GN#JZ2 zPB6(d%f3)zdUvl3pkiWhW(IWp?8Ph%D>>6v)7(8%+GqepGJnw62OZ z9!eT6p`vQ|h($+ECvpBM_V2m*s1D&T3f|Tm_SChRY3rSMxVcHKv8#@0RXRf!#~39~ zY5vM|N*ezHew-QRk8W%0Tv2*_NE3E@ED1~=&u@Z4yS13Y;?k_C1W37U6*-sp)o{BqJTRcH7>JKhzf)s8$jxgT!M|9kBkfz z&$CG*$?;1&#I`<^l{;5=k^fqOB{64ArvFjvaqySgPuDI+Q1SfkkrI{a*=|jhRVD35 zW!>)M(R>@dy$@lP7%dhn(G}s+Yy)}h;*$EvaBgx>(}aF+d{GRq=O8gL}4ILP!quIP6lZj<4-1EKIA+ zhme;iT+UTDgmA8n$ldVx8r%Nm%(c}1$2rQ$_8JS@e;!H`EF?L&N&V?E)ik;`06Vxr z60hc%Fzqh1`I-(>rlIVtV;!JZ*nWWqGdZ;1fz#a$=N=~la+s)_?&uaRjep>ESyyWu z$1I#`=$I{ZMFn^f0IlcUH|&a8h~Bb-Xg=#l%r;H!iA)o!*NDo=k##(i`twNV^Q*bl z%9+%yJs~4rXhg$tU3kna9nONQJ=J8pognk^y0uRJzcgU!u)cnf{LSR$sjX(4+AepV{&CQ@IOG8U}8JK-`CawOdy z1`rm`Xm=$$-(P^6XwSCu$Y zwwY*KzSRo-io=b&8H=I|AntF@hp9UhOZ{9>Mvi2@dNQ(&8pi-7Wy5GIM~_ph?pLuK z#_oeID#LDGXyrp|VOnnO+Nu_I#oHJQ+tb7hDzEx^W+9$GST{$dQz2uqIuJfQkrYdn zh&s3vv#CbNKPRCb@=Q+rD1}K7W)}&Z?6sD!l5_9f{qK+u(PVnN7njaW`d7J)$EA`L zFLBV8*HTU5+%Q%VL!MRFQ%bqwhIUV)6QSz!MLu2|YyEomGF#Fzg>6&c&%YW|u!^VR znToN{+OGqn8q52M)3QHb*YC!nQUIW;C_%^Z0O+;A(_He6$ob#%1>YX0Y=T_N+W)qB zBiUJuXc?fz))m1+%WCKGOK^}P-22VsZ6#kx8=X=zd%y|E+t)uPWyP@&jfPK8$-L;# zIpgJ&Cw~Cl-2~B zxbG4P6Ef%;#dkGKe&Y44h10!;`3|7lOhvmP0iZ`aCWKgjSAqtgdij8Yc#LCoh3D~% z4YT-W@t6pq8C>i#BBNaBG`m)2SUPHXiM;-O$Gy=YHCh~+U~MrvR}aP@cx)2GI2^@e znHq;Y6@&YE8&`Eq6|U`90Mu_`>^g6H{zBX$G`vKe_*TL>7d`@~XNQ-HQnyH$&SorEjtGf?b?1*4^r-dPx)W`8HjCwOt+VtnHNH&-(PR+N4#fQz2-H zaa&lof0kG8;Lj__2o5O4#ZU1{&>Z8jh$8y^awgDlfoHXT!^+ZlKDy(sj!py6U&bXsk(#g@v``=jtC*AOK}E<#x9sd|4q! zuMNlbIQvv4_d~m!tnPi_z4fOinAU5V&S(X#ET;3qNA~vA%YV^b3>3i@&xyT%H0%)d zPw40nvb;0xzr5e*)9sPv%=?YPe(E7QMNB?gyCav(gZ`F%5lC(HVc&m6ng0?e+k6p~ zi;6xP4~88YrfMd{#RREl{FtIUneMj+dUiU42&Q- zOURu{Lc#ga-7CKatoYYU;x{Mt2XRAqiS~6qDKm4#nd(w-?#ED12>RrY7Q|}jY+4|p zC*KcB{mKt#KxL@z3dtbJDh43g=-6%)`a_CLZax z&0#SFar(IWk5UK&@fW=QKoLt7+azwg_BJ3#-rR{AokG;S{BvorB&k_ihB8vrhlZps z62+A6Lm7YA0K7wF`dCp3`SOMPsQ0PUKH58L5!f#j$xG3cEQC=k9+oo+7tO1rtJkO> zo>C|O%8?moFA10XR_&=PKf!8O{;ZQL~-Z(2rg+J(J`tvX%F0yjP&=Gx`alZ;mo4GJ)msZ`QLtHd`_ zhzRN+l)x!0%3%GBgCd$#WvM6P9##4+kcE`Aqgb5jJle*Nlbhx9??}JBZ@i6WRiXh| z9Q}c#+mSpHB_jjLpEbR8#nbG89Y}Yl4A64-5|OK1IbP?jw=3XXa7s1#LP^@bdTEWk zc&iK#GpRiXbHuul$#T3l*3ojeox-@{P99j>md^)3OttF&bhfOYZ0BVD%Pq{ofVFG%3p>`^g7f00H~&>%1e! zcR25Pko8b<;Qiw!u^vfpWa2s3%InYM9#86~6si+de*#qTIl)H^e0H9~aUR-&R+%Y{ z9o`<~>vzi5Tlr0H-kPX_$6lnqzCP^anH(R_o?_BI2-i_hUbs2qVjE1CE7o^^hr$V)bwQq zO*#@9+|bf&F!vX3^()(4!{+I30Zdfo91@&dm*tQpT#R)jq%wEM)tUQXk`WN+pH&{A zIgv`n>l#Bb%~<6E?j?PM>oWfp#K_5FY#|&BIBRV2h>`Iq-sm0KE(b`fG;rN z0<6GcWoi5kaQ>i|U1sDpNcFFQoPwsA(_|8#8tW60{2WdX^`}ii{5eNLjy{QVBnFpBONRMC!|iG)*KnH ziQu#0RY(5B(WT9F?1MA0EfHPD=k+wspgQTmPfWy=NBme$-haLEZ?PE-Y>yRIu)GY= z;wbSgi-rND0F_@G7qhZ<)8r`RQj4uJP;gyAc%E9&h&?Zu*8IdJ32(K2utHRc?v%Q) z&9Fn2wpNsYN&9_JDe*?F8D4H9>uCl^TM9zJxFBnKtRU+BNEeBInCTS|c+I(t zvKCyRuh8cSsJ%E5+V;L@m{zz}QwRG~y)94sFra5aphX2l^7 zqBovlD6C0V3t?VO$zn$ivsVmoc1RyyufR#e-Al)!h0|0XSCg^KW!FYX-e`pXf?N#x zFs49>F;8|WJHvc2SXbGrTc1dLSy#v~d0;AP+8bsvaH=N?4opIW0o z1i=2-Ov}oz-s5Y_mM?Xy8rS(`YPf5}h$XR-73Sw8t(+FFmS;jHr1VOq-;M8F1r>z?=X%fHBas}HuXgV-`ttm ztQK=IHxHB$CoCE+Q@RI`w_@0RPGp1d9XePWA20*TTqpyCbc#tl)?;ZLWLsq~Mn9OS zukP^$={{(fTQMBQD)*lN13pIH3GR+9q(;xjAH>f__ClP4?^Yq{c-c?Efj|1K&}M}O zo5ub~Aws+1L+a9ksc2r>mO9S?(g3qd2XeT=CO~hi!;Ra_=Oo%F&T`Xvv6^vdS7Y%b z6T&w5mWNXI9hET5;u*l6nLFNI{>H3;Uj99uzP^?p&uS0#CutgZEVXaA5+d32sxIVR zKI{MW)LfGfobs6b>Qdg7%=MijE4s&nH2E(3jMftECS&7<3jTfC$=rTg2TgiL`2Pq^beJ?I_X_;@~8blQKDwa zTKHY^c)nkxay`W(APJhW%1DZe&=s*GB`iZsvEgRC>0P=p8f?yA zMYF6)uAdPJucp6QDojvBG;&aM^WZ{r%!%=#$w@`5 zKn}|7t5S%uXghfC;8XhCS@5~T7Y63>dsZ~ zTZTUWJRnS~Q({iPo)7lc|Kv!#MC&=~WrujIdb-kY#x0MQh{sq?L_P9rir;B$O#cJz zd00RR5*UkP@UOjS&t5vcn-2Nlj^&=}sBz2;I;Y zl~_gm3*m#+7YYfim;bGM(r_gwt?2}@&BB+%QQEF86j`*bt~PYCsi?bA6e&m$>oJ;e zSjd=^2~#;_vRekr%TDN|Q2bZDq2<7WCo$bEx zIX}5mBebT>*AZxyLjyNJ?|6Ws)zdu;jqo5wlO?3ziJA=Togz00bk=OwnH_8bG38^n zP{Ee*>i05w!ozyEiL2yv9W07MDv@OwIF=7_vV&ae<9~RN6}a4Vbty>xIs=APG^8UD z1~>WJdk0zW+0DLJ00*MG(^-n(U)8o_T;wJY55NIKDfvc8Nr|2xe zcCpiyF?(D_O~RP02qWp_El!PyV^IESAlpI@@WKbDr}C<{QK%LQ>4)t>s4jHR237mw zg3pg5igzuyQs*2gyyB?<-CPr2_!nG%TMoccGg77<&O!7u07#vj2N=9UEHu;DuH0a3 z^Vex(f4#m`+l9$!B_&K@%!U1<1py9a0AV+9nrAK@1Z0xgvis===NT>Ng#M;`R{PB%(ge>xhT*>(&U4Pj6*4JgBn{nUHZIo# zHE=mEHnVDFMzlM3`0vc#onH$$}LW=Yh;^}a54Oy@U1i3+<)r16oCAv->>bMAEmJ_cvO(ogN!Ju7KLCq~~*41mD-tbWdIDg3&3*P-3 zV7_f+5ceL+Zzt!kKJMgkR!}hp1VNZd=m6$3{msuF7K6IpgX80_2{u$>NG5ax3hSYS zjH6cEIw9)g*KR|jmn@Q@iGo?&oS!t2%Sgnbzdu5_b+j%n+d@!qk0Cu(BintI{I4SK zorr)R(vwUu!N8-G@12*03x0@->mQZx3z6l~xDOqO`b19rp{cf^Dp$48dA{Lise*L4 zev+8UzkxzWh4LDnvy3w`#|X}5d!|6wX<*aVI%ltv0}1B}lU|vsrQ*zu9vtVx+CE;R z*s5b40DV^!n7DUcXX#G-T%b=5mT3O*Q?-#4_dj*td+Ki^uW3xf<#A+~n)$?L8Xb(m zA1OyW2Gx~dQ8M;}fbpk8ol%c;D`#^7Ck)n|vq(*wcqo zNlsR429X8r$H2c~Fmn<;>zz~UGAhcJ9LdWgRX^g z7Qt|U64ms9o&9#ybXm;HKjDx4pnH%+q*UAD1ayjdVew$if40lf#K4RV48z=l*RHeh;_xpwYEUn+}qWVPVJI0 z?xL0gdi*{Bvxjq2jitY2Kjes(9_2_Iz6$y`-Nz!U{YQTtRFMczda`d4=WAXcg|RP` z-7r?vw=993^3*DN54}x{vUfnpJQN)5qVmsD>rrHeK=ooo->AFFY z6@p8$!!0B^xy>4R4a|Pp_igkXmeUgIPg&D=*WqHq9dgB91{VR?u~HE^9xds5%zqLY zVyw+=cs~kP3}2tnW}{FSZzWftXsZq!Ety>`N)@U{eRdp4$aWS)HQy8sm=>mCQzK5x zaEP`DG*H5t36nh~@O{42Nufd?l{v|;Vf019!jI_J13LJhOWrp+4RQ&jR?C;bG*rgd zSjSj7S%_SYdk?|yk0`O`H74VD;g6>B0CNugIH0`<0aqoc=?q+cxZ6u7DVh5$gKGJL zHn!vLPWIu=?UD|a%_dW)kzQ~&MombZIYskz`*gM-<>m9J$ogf5PHy?UMxv4LeTbc2 z^Y7uOaBrqPbspk>TJ^SL^D^i*wLi3;f>%{6=qp_gQJ|Y3Aa(uHJVf|ci^+?&Nmyko zG9dOjhy}t60tXwjIP`y2L@6|;+ebue#Jf0kWj1|O6;ms64eKgE*H~#%R$uB^oXA)+ zfN6GtygllQK285&fc>kgBCT)NZE-c*`t0YA(cHj@N(Ft9>#EpU+^{Io4=6TiY3je7 zoNT5wqck$nzZr#>4sD*(#@wZaC$~uZ(wGGYtoywUQ~!NZx}L} zW9Rh9>-FUg+2Z~Bpc^HJgY#{h$?xjx)3 zQ};2sgb_V>%J=V@Qs3{dRAJRo0=i-ll>d=HJ65A@r>xpDO!AWZq+6J;4rZ-fqCMAUhggd*rhN zXZFqDK;X2uYP`JHXmquxHC+H~4Yj$s$3K~;Tbig(k0+5l18e=?1YSjh%UV<~^|hOR zbO720vLUOArUcj9zU5d_B)O_Twf?KNqGH=|F_9)BtC-Zq1D}sfYt{~&QYOg>yaj4Y^Mc_MJDEWZFEGM7q%f~=z8qnY|n3!xoM zqd@`g8*Me{s}$D0_rAxoqR47e>Ax0g zdh{H0wmf$}W?|g4|M8^Hid!B5+4`rhD4b`{-1+xJi|67C-Bg@O;h6axhWJ>9Psth2 z3xp|uvQjj>qqhYo37h85pjMWe+enEZMUce1NCbWbi7LfXqwI6l^;sxW4iN6Wg$Ul{ zHAKf!hZj)MsjrI?(xL{HO|*)e*!to&|AHzS&~{wc8F5E?ixcy)d1d^Pb^U30wUPs- zN{x;*bRkK`$^K^=k7OTs{{u8PfqgBZIDClKwasL3z_J|o6Wxn5&?pV~rf021u)3G3 z=?8hJuTt%ku2fk7ggm0RwYpgv@OIF0hj`_jB$}n6XW6=j-rL8|FxYwy`j|T|7Gwau zV)FEU=GeanEJ>oc`Rxeqz&|CbT$+uKw;JNktAyIqrgYi&f(bvjLVjMNgnafSXGn-u$j>=O674CGqZ*|eUEnyv{5s#YIpeGp42(V0IOkIy*CYxGvEAC zgsdQeeZh@(y)cUwxxJxP$ha_dih~nnM1!}N@x=T%NMoar9a>rlMe~e<4y-sw) zo6_`k5K&D2g1L3HH5b)I&KDa%N82xk?eEPx@cchVnLKU|Dr<%2@0`Y#Ci=TwT6awEUn!*3ggu0u(atE~j!)fnY#ZZa$45q8W&!Rn!lfw} zzi;AQza4)e-L?*f!Z#8|qAawL>4C`1Zwbv#Hxk z6U;?{4#wiH@PLA0A)_g>Y55R`EY^|(OG<$4U^b`yXv4}gYX1=$OYe(pTk~OH_YJ3&ECab(WPR*W1;=AE-u)@Dy%J z)BpE&V99E-B-t(84zkW&s5h0z{+(KUc{+1vk7l# zo(Nt_3ZlteQr)sX|6NvwXS{ahXjP?$Qtt$3XxknwqBUb&vih3mnGX^BcC;G)NXDcB z5W!TkKS@*~4m__d&SKkBi|$|b<9wALH{T9AEnV4LR81LN8eNL%>PKzp^hN>VE&NQ_aYB{>7S<(mYq8P}c$0bj-A; zhIZ2cgjKxglQj(tNoJ07Wd2wgJ%wzj@-9(q9%zArK2<27_0)G6B|;@GHRl(#4n{W` zLyx_rQcAb7(9+SaH)hy(&6(Cft%9Tp@S;-5{Jb8sshsIO7MplQe&gs?E@;EN%$O6p zd4&MdQsdpO7$VQBmCN0xvjUV4Hf1fL?XCf%YxWB$vi>yf z=k(}FUu3D2q|4_jO;|zn&gK~vG7Q=~0*%O@vg`}WME(MtzrW+mU&|E}v>MsdLf0R` zdHT0#t4h63*8v-U;a7JP1ASl}Jl2j5=3!J%JQ)@j#E|?cX?aQpV~7kI#rtRL z-?2>TjnNY8Ke{Wxw4DPCXI(*V_T~OxeBX;twPedJ2kg&oxmVW;Q`}=p3kB6kKJ5leK_gS9K7F9|KeGHdR#d&NaCd znlM@~W4^M+q`ATrS27LJu__j`FZ_#jK>%$|v!%FPIO!lLjyI?_YMPXBB`IaoMxtt? z^H>sc z43+!xJ4s)4nC(|Zf-Y)%f|gEOf=ltTZZHr3ei}>Qhld-DCz~ezq3_)m-7%5ix z8LbFe{tq2m0M!0HRwP8RfF&SJ!5mi%jl4(Z-BM9!d2$WxGjF6hv4rR+Hx2JP=E?P+ zO;r4RJD)a|_)YCC8`md#Un}O7w#B>O&BVI@!CP5TY!BGteUlXnPe&zgD|vaCv-T?^&nOzsz!$pqmg^)$^;ATI241oB%rY zgzY(d0sEoQD|{$QW=w zH8Iof7Z|+yBqFoC^>ZlI!s6ac1-?=mnn^+B;VPw@L7x>(AWWgDcvoVzJk-M5g{EH- zMZ7^sbi7@vv-XH;Cy$8mlQ=AU$*?NiQ9JYAC9(6OvI@9%mV;e=d6wTEx-D%Su{%>b zm4oz3p!=YA1F}!8iA!egs+@VY&347WsZ>J}FQ~7W_6O^(m5$?T4~}p!g~`eUaSqc? z>UQIjf$kFNvwEVQ1G4e#xC%X?pW@b8RZm?t!eKMvj8$8>o{n&j>(gvXSA#mZm?Ayp!h;S z`4FKy0T`^|qY*k-bqXJHo53m}-&eVa0nN8ymchLB*r#i=#=r%g(m-F~lu(7x@Z9oTE-ih|l(91)n~DThaWKcI-wdpt zxAIDjXWGuEt7J(!JR}@+a@0gDtLqH6cl zDw?~r1zuQnn(~Mqe{=JeyS{8M86o2tVc6 z+a#qg!p^zpiP#8HIqM$u$Brc3y>Yi~^fneDyXcG12~LXu$GVlElg$h6Q6qUxR$7|0 z(b+B?djLBlL&=KJ2&Fm4+-4sCurMs4TKz2?xn$FoeNNzm-X zZ*?C4_tdQZ1Eh$P#J!jmJ9=$PNy>Cqc!mOVa8+^#4h`mc1WK4E-tUw7#Y>E%3fi&v?Jn3_+18MAhh>@|9Ji%i zCPS$r%si*IUk5zFP4zNryc%IvrKH-lkZWmay?qgVCSouFz8=l)3U z*4h49RXdzW&)91uz=P=OZ+cBYbmalE{R-x)UJ(@ps2qS+?tI zhS?#I06KF`XH6t%Yq7MD-K>R#LFN3O%9A&xyiR*F-y4Gwjrp%K;o4RUwQ{HV0P z@4tfHqZ@(jO0E4ORvb}RA_BD&|4lBfQp~o_;iLF^mAk+?SstyzzVMhRdE}mNc9yve znVNK|w?u43Q(BoH`wz0j*`m4uh;)5O&Kdc*A=`>P?QM=CJ1Yj9pgC|K5DFp0l%jy$ zrz8>-f8MsSyLpIJER`b_ea#0JTxf!2RtraepYc zQYu@g0Qao{{(j*6>=w>jW(e+%uBv&hGUlhK%&0AKQqp!es zuIOW}Kg08fSlYjKY5m!{XBfuU2JXn;uTZgqqM1@p|MX`o$=QBcM3TFdJ@-JdU8Cmn zWim=E%%?`jvp9}TmW)a%`+#GO8*eAcnC|p}2iy2{RQ5Fr!rHL)9u)6jaK_!k?wsXQ zS985^C6x1`w#8o7>_5AG@+G2Ns^`U1TbTNjL#8!w6k0Ee7kk6z2%CAI-e~%FTM_l| zAJ*`G?$6`VM0x|Z7_!WQQG2)kmv;py+pqF>_|aAS|@^4nuqO|L_za^^+grW7StT9Za& z+0GR3`nN+-;&49&r`#rXl)M#>0$1%XR*05O*b-PbI)39W-&>jndnE~-mDHdh6 zB_kF9*$myc1YP2!jQ^oB*;?HE?j-NO@3nDFlvriXyFgdyU6%E`_Sti~X`ES>B-r_p zs7&{7K_rX)&uWDPKxrySI&)R5Kw4aMnJ;V=P<>ChNKfah#pNfJkVB@mpcM}YC8vB>)4>3;b#bT15O$@E&-YQ_WuKhkwPO>WW zNHtf(PF=OrK2Ppauw$MvFIx<>23M6d`7?;o%-Dw%Cc5u?Mp;EMs2<4?E($(xp`=Wt z@p;K;`3kqsL6nqLd0On05gC54C1}!}Vw3Twk;5LUBUQ&ECvXK&obOaGBHDGLhYc%L z;C`AlU2XdbcD96H`C*q@sk&`6WAl(h%U}K-7PK=wT^fsLIqsM0u+RzO=nw2ZTMZBw zG%(cXsH8KKj&1oQqCf?;U=)Y-#A#m3rmfrcov}$^H7{MQ2pJ7cGp79UkToZM(&E8I z&`G>yG_|9C3us6l3hc&||C~QvcZ2Or)xv{Lk3h3ncZCm|tH8Xo?%1pKJ*ppO4xAJX z9rBe=zQMX&w!r-H%ASag3##VzNk;RaPIyk|8zY~V7p7FjYU1LN#&bo_Wv4}Q4rRrH z`k~p%n#$S)9MX8QMrkvjrw2C&=_uY_cwKb)M>3DV$o6qPqvT(%L2J!Dn=q|sMb z!rkUSDavK%H8f?h40jglT9WUktTB6-xVrM!t5P)8+;I1L$CHJv4l9TtxKZ7aB5a1l z$Q(HvH+7jkwnbMo=MP}iaVG=2c+f`EgX3y4RSYtPp2C%9DqObhunoP7Dqq+B#|ywI zd`Fs7=_Gg<;>wX~rxoycuEVFy4`yYsXGS>B4r6m$96Z8+K!{!k#| z-2hHqCT!bamnqeETly?dky#DNG*q;!rd$qKHt!MQKNQWP!7NCcZzFF8!f~ zgP50^+B{;z2~EoLd=94m1cdWW%{QZC2H;JJ?}-fmqJN$=gEXY$l~Sl{%?JHfz}mb) zD~=OP<@4LE>rMKI@jPXidg?zZ6go}Baa6;{80(eKDFSN(QvVNEZy8j_wsj2$LV^W% zx8Tmkogl&8-JRg>9^Bm_xO;GShv2Tk-SunExzD|CeN|oj*hR~dp1tN+V~i>8i)Ex_ zYGy%I-}qW*Ol{>1CS|{Vl~yUF^EjOZ-t}qk&lxm%dh{4FYBjBIi<%#&QI14W_07&4 z{2OE>5;}aSko;?-2+SyQLlwn>Hf=S5lo}(2fINFr7djj#-hJq#<=d8iLpcw!xt2X~ z6zCf7irGkMF=f0kd%Ysbgi~|4R1^q@Fp~{dNTAZHh|zX)95tMEW9f<3q=eGS_Ga1y zW(!Mn6k=3g*zFizz`NrGCWqtlC!C6eTE~{nHzT_+2Bo=BWaNp#z_eZ$5NntjK-vICr3;(Zx|qb3%RZSI$zpE9!z76x>04bG#H9vN*K(V%R$!6zwETRS;6LYI%5GB#ldwCqaU8mi-(aLMg?%yF_R zz#2d8W5vO4x%Q!P$r$RPP{b@mTUPeSXvI{=pN->CI}Gt>F$n_&W#{_df>$^C+u}|r+{sJP#kGMG&?Qk7P&7+r}aRS3P_vpU~6BodKGnxsb;#s>X z7~x844%@65p*vcEO_mkU$D>)D?QSPQUyy9>Q$zR1{b=xFCEXPj*z9wK@qHfwGANxA zv&#rU%~bHWdwfw_TWcXe80&x%#0p>EdhC60nZCK?4$f6po=+1i$BJxVTQxQYLO6%G`0z4X`7KyvG8joEQ}`UouEqh%Z(`Zl=e(dAae3t& zmPXzUn$c85o>@cP9vxS7!T-%kBFzJioSFeG;ao2n7Kb`Mbn?pja#O#N^a;wr+x8~- zBk?K>BvQ+D83)3vVY6OhbE}rGf>fLGi+sYkq(j?^7A+{OOp!f#Q5xGQ}P6>XAULJR1JC~k?zAXqGZjn@IpAL-s;%ZUaITe zNxb*minjfm`e)P4Mpp+LfeY?S!4dPIMevv5X~UIj?Q6y=^U8}<7`Sl@>qRq^a9u|% zh6qjm>Xy~UM=o;Dllu9F2sFMy9+kV0xlxbXx<{>M_xmO&o)4E+Wu@bJxw9%sVX`{z zk6Uo3+kTL%NsQ&Mt<3N-14LX`4ud?wvD8E^gtT9>%Vf0K4~iwb!E4a!o4F@z5Wiod zhIi9>^YE4qy?(R!zD*gHn%exA=S=Ne!YOh(LlqS<(cWeh#RiGe*5cD?i}gan%2$RU z^8za7b$g5uB1p3s24=sPcLTb^xVp&=rQVY1 z4eD&_pvM*=U8Phx41;7~|L!<>r{Ud$XoXb0*`*z+%|A_WYd*`7Pfns&j&N1CNu$tS z1#cj%lR#fub@d(W;%QqJj^T}#2^;*nL(a3CsS`>O9Hi=rql7sKl9s5BY(u|T_J2o6siB+3`V0PCD@xp`_mloi02cB)l~+T5!bjJG$=auroI zV=40jluykf75tHm63h~c^xAUQhYg{tbTT_S__x0ChRE!AQj4;G)hUDQmW-7{Y0WJ5 z)Jtok%4}2@ZBW&2qIx6c@bk%{>tS)>9=<2AOWJIVuJWhf&eRPNhK%%CHjg%p)}=1M zjAt8bf*sJr@PK2;;2^^wgJ0M5iV1)twfEgpV{{ZdXe%B%Fmqd+#HSs|&y=noRZoZPXe^Jh)23;$a|%x#>c)x%!$UF!P^pdZY1tv8MDp|&_B zANhlir&-=DJrZw+l|9ADhFDKu!EGpj@s*u?%s%-Kp{0d)N*I-jyN0=d8yOAkb<*fz zr_LJboy@}NmjGc>l1jj$=LtX$c>^D!%UOdD> zEby2E)014CrW$G(rB5Vms1)Zu_NYVld0i2l+n9QvDR>+UKx>@4ic=94p=-7+v)7xP zd=h?du0N@SiDOlWsOOk^2vd!Md-APM>TZ?3pqkC+;olU+PFT>_vIMA)L*X{hh6)tW z&VdQs!{o{@S3_SQH||x{$r3b5PaJ&MGFy!e-B9;{#Yv zQnIdI%;Jb|+N$b(lo2voO$A{*-8Oc#>DEGvXy)g|({Kt?o4A=ahbNaNd70y1<%qAH zMYOx(lm9k~ABMmNb5{mpdwvJJwcCK^sQPW&Y` z`Y||iBXJ&dO`2mnGu}Gnklw<=0-|M@t62S@Ewk>1l&ba%#qNWHTXZQMxp!??3)wL_ z4+SnuoBG1v&!4`p@hxLJ3PrFtUj7nxvvXy)sw6EGuKJ~wxM3IP!1KpQmn#v1{U*ES zG4iYNkxC3@T8gWjQVgqH8+6?PcdfELjKu5DLvtiJG!+FQ_vNr!7A7g@4QH4ejQOFA zX0#&GX!FX*w5@1)5R1M01!Qtm8{m(3Q$s|yx+(ra>l1z9X}Ks<@?z-566LUH5Xp7| zXt~vg6P4%)re+Q+z4)M|Z*W`C#L&$=RUN~C8aAK%Ch>xMdB3iyT%tTfxnq=!(P|#t z)uQ7#p8V_9&mV9J^*tz<$w1~^`MH-7Gs=+b$E-zl;kM*&R8(xr>(C)2GB|sJGR*4f z+CP_+M%OWD&Z_39qkGCpAML+=x=ij$SqY?sm9`o3M;{Rom}G*MBT(DhpS+0Pzz;U- zCx{9#^D}k{Ld;k);P5XD(TgKQ&y3Fu#O2+MR}h^>ys?virUXMn_@$a0BDtCU(Eo=y zE90Ji%9B(uR?r9XHtS5@Pw8g@-{v1}3r=*H#mGz>hg z#R(s+kcO@1$wzEVD&orgKh}NH%7e0*jhUE>-mgoy=_>dn@|_l z+o|?!Yqg^u8tE)b@?oJtLF#?;qsXX^$EHboVaP~C`zrUaI}#7wL3#SYQR%#}rO5cU zKt*4r{?y50)&kSjqL7ZLJH=b*WVTzQ@-CIIIY_|xhLo@lPw{gpG~T_{Nvf>3ZFz=6 zGixYwi}Ka?6YHur%ccJDKMrCL%-%s%83!I%X6~-OJ>^%_;_Ls&i(zqr?QLV0hI#R{ zmczPI+?UG5FA7`$L=?$*zhYa^Bv``@J~xbfVoh#M*%Gno=x&#F(;U~)zw4`>S1_4f z&&||bBchF5=U zDWG_Bex}vqcutRKEGVQxA;KWXHX;ok7dw?#uYvVpgW>i$^MM=8hOb6F6xs41@ej(T ztV)hB^IuyCqnf9%hOL#ij2RuS)^W14?Pd5T7spZjp$pzD$akWYD;^PZ7;fQJC;MDA zLYyY#TUu~yZ|onv_;n2T#}|kO9$*vQe%blLbc0_PmZXYMJMbF^YpxY+t^>zvN9QHAyQ0HW2d_W%ASBHHVpji^OIeD%+joVxF?sweE_w%K-VxmY(SiN} zMc((SSxLatOfwe&%Fu>j?HJT_;^mNh5$|kfGxtV@ehu8$ce6LZ$hHj*yGAQbc0`qC zk>BFS3t+t~PFv9+Nhu-9K1!?cn)aw}WPtVLFkEV;F9w_6FkMpmk7@xPJS{LqEptjg zjSKP)&Z^k4k?ZN>8ho^seQ4q;zz$es9a}VpGsDjc*iPZFGV?RDU_D7QU%%h(S%XXdRtD!cX}7P z@g5jRE6$AEdGxWtv$Lh$1>WMLuMwi^C5{*uP5I-K02ibx23r^!ea{eQV_#<(eHQI6 z8V&24Khk>tfLAR9zKj!=cLu!X@78AxMBsCLrTOy#mEjCq8X*R1)yfs5GPH4XF${L@ z8}|`pnwCEV$B1^&lObm1TOEi^hGX}gLSm>Rj5!P+(4ZxdMtYO%$cY+};69C5iQ;^d zVwRw_%^vRmcBkQ0Lal}jV_py{o>K1$XU#@J^%CaOj?c}m!gmq zM&g$n4Fut5>q*%dfU+`J5J$xCv{bzgPlC?;<4#brwcK&YgXJjqLO|`&N;z$>&@+WS zyP_!NdrmepMK@BJrwS3!*jNk#u)%h0n;?ih#ADM<9t+oB0vBKNXan3 zw{RhGZ93i5aGd7+e5xhfKQG{lm6bYu4DYHU_%hV)?!=<130sk;(W8!9%oCe0M-X6U zd$F^m$AEs$iX$NkTW+*X*0EUYnu!P3mH(&Ia+X(VuTVEl(4h9N!4EL@RQ108?v2W& z2+>%(SqxF1>*HkID@!S31wRDL`HP6G@HGEOV zDJS_8@RChNta@UT=>~VDr`Ryie$kJkau|fCo>FerVw0Mno}HCEH|kf@ySzjLM!PH= zHc{M|Fd-2ZO-fzfu>G`~q;u-*+YVPNi1PQ~%LBhIIZ0Jh^5Q$K`<>nLbkevkeH!~t zE4+kKHSJ%RynGb27esOaT)@L9-ez@Plo~tYE_icDe5vCmBq!8k5O`-%x74@q!Z)>5 z^A?movu*p^%)dL5VT&f9-4UzdX62<+rROXMEHZPWR*@BjG;0A04LSQ9V;01ITXsvw zhzND0a6wnXszAgAO~By}j7<~oA8H65`1}5kaN6kp;SSW~L17jh%uUmTXT^wJXnQh` zF~m9GbbG>#Q7(s@fE3sa#CiPtPRI(nr2rP*O=ua!MvDjZ&nZK%E3BmBXA;_%$U=x# z^7DUEl=U+g-#y#zbtH-d;%BaK^J6BwA7uOfTOBXe!4x z5I^j%#@HGW-y=DBri=bdO1+wen7a`(Qdic#K8cLS7K+pq5Wo5;B369)i3pANDvg`B z!vBfUp=G4i0KQ-UyKZq9hHH}z8vdfZ9|ooPTdnxC8{NF0A-K8~onEdKvw~*sSEbg_ zuWluW;*&8WcF!q)1$X$a1^E(C}fX^F;ISJC6?{DmQ@r}i2| zN<<|c`;mmc*Ia5mYUNTdD9iCO%zo}K87xomP@(--Witd7t^{(jJBw;~$8rCSzl2py z?^cBNHv{L!03`i?OreZ-y9BPLyYI{IUc3K?S8KlG)lH8EF7ImL|0DcJzk})-D^GbR z|NTc`|A`I=_AU8*?brGAYNpF)t>ZCA`*sTEN$%wi`G<-ZBvITo((}nxe!GBI+^@Mo z$t;b)zJtHqe>u(ob_vE&8MAZfrpTWf`O4f%g2Gc;>q9ncp2T^A)c@WiIiyoshh-b^ zNONBX1Wz$$ee}iX+*M1e2(1lc3tr7p?9QRZL zXu1wdD-(rJDPIAVGQXmj^2mC<8dB-Zn86M!VjD*?@n z$L3aYT*hT2V4vDiTHy=^URnh$`MGrCT`gCNJAWXKvf0jlAr1@w^53s>9n|rDa*8Qd z#bgj?Ks$}fiSNq>Bp;?^t`WUU7p!@FG=tq!Z%Crj?|dWU&wa=SwUhd2U$#s&=lV`} zhWc*H{^F+<={4|Fqez%5&Sg66W7HQL9Y^z3`{Qc?j_>sp9--tT^oP0!Rv|U%Wo8jd zLg0Z)B`b6!PT>#L1W$}PWwPl}9y=r$nl`>fOJ+am4DSHr%c_n{hrejX#n4otU5Z+w z#`(jP;D^GIuCw~`a0hdZG_KecPz(Z8wm@olC;;2IdS z^Y2eKzy3RktGk4XM_V$Hs&@g3WFQW3uv`I1aI;RDA<;jAe5g2>)H?7oyB?;ST*5*Yl^%w1z=rDO;k#G7J5T;m{$pFNv4s=D3ZLL1Y?HU{Vh zU6hPVh&cV6f@Y&JQ(4mt;ymqZ*@HwR4+vTMBZkCxTvm^?gHtxq2PdyG?^=^X5&R@K zy{n)96!I!nP|5N~$hT%d?4f>-8PVN~?h}3R5y}LN{`E^%kcz((fhfakC=%Ka(|F zE1U2)U;+y`+Qe(yzk#BqBTJXi*HH5hQEwM~C3t)w^kPd7iY;VTF`^%Q*Et9oO9Phb zK)UL+ou*?;qHtgMiA(IKiU@CMKe*xmnq`N~jzGe$<44xIsuU*~A7UnA+XC<)xo z7z`gFVDla`)*tXl(t>yw5A-c_HHjc=ytc@_a!V-+->psi;`U~{!6TV!H|PR?V~7VJ zrAlM$wyfP$Xi03_e z=Bg%LzwbFh)BcsXw)hJ!wrhB)Jq`4hK>mNi`3c zD3ok~@92Nt1X-x#m1Ha^8m*v|6exmJVjCmNm}kK6;VO(R+f;e%JUq%TS~Bx7mmNA* z4z#s*Cl}?0N_JuWcGAJp1=~iF&7&Ve?iljJb_u~U*em2Rl!Bxf%V@;MToQ_7 zp_|pTYo!taN}2jGY7?OR%JsfGd(}FCUA@S`Wwn=}E~>WNg~c7&WTus}ttW|3Q4`Lj zqH@Y#lb~w~0DtX8nd&lc*=mhIijXhf9i}ozYvR``(v!X#p|;Xfqn*o4hO#udvmSZjUfD5en0=XRpE%`aQMEYqUvY|Nl-1uEtaME`FM!mo?= zAOEi~ynmNtTSSX2D_X z1u7%38WvaBytTfdQVNSOdkI?TuM->AjfxtDwWo#m`5me1?G?vQf~T)_)E2ZM0H3|A zFJI2-pH-G62*T;w)Ob0GI^SqGSKvxjbR=3?1$G1!F^VdWe(wrAZ;K>wSBk-(dG%F< zV}p{rDczr(s4U*^IuhC2TG5*C8uxj;EVqnyoR$UpLV9WjNchzu|Kk_}B#DskelbyA zD@VfgZgNj7TdZcYb7nyywkZm~9X0VY|Bn-4ETsE=0?5npYSgoYoSD?j>pzP$u@K2p zPnQo3Q*i%hp~r>)z7)Mk>iqCdTu@bk@c7wQamyOW2=c+O=50vPXfyHD2wyJPU)}5_ z69g87QgcK-89;#B&_O)!I(ye(yp1escidWZC?jwXU~}c4R|WHo2KP)2QHtSROM#Us zzyRhiMMZy>#JTE?q%D$u8pSsTz^}aS$h`KdXu`H?)y#6jk9%PxtKXH8dTQLc8BB5q zE6EB{G&#)ok+|>vt4UQ*Xk0+!#c2Qvfd-e|NVE2*r$!jCYdm(8Im&%{BCSHJ7 zbjo-;0PpkL8z+W_vWzP(On+;u(k`!U3~fJ$MGTlAUQYB~nclFBzM7M^lPeFim0&6l z%WxG@o{B0e=?gJ;EObqDF7!}%fsRUEJUxDtn+Mi{RZI|GH!9xsT72|@VwR1meV=LjR41z2m+@yw^i&Vg^#N%mn~^6 zuR*@39V?$Ju9#Ic>og0T-f2`^XOI3I+xsoi;H%L6r0MO@h=!CzM21>qLJ#t8xI<^i zUnL0@k0p|ftSgTV$zU6`%x_~q{Ut&b!*XS`W6f}OFIQNyo0(^*_78Sb@;NJi6gx_{ zncsqjYFQakN!>H)Z2ZO z#!&MwT8Oj0q}{#&Ur7Alue7-6K$!`QccY=Fj5CkF*AwDl^Sktopc){Bt4QQ@6ubw- zAkGVV!5P3}IsjQZZgNLHte4v5D>5@RTOkZ*MceJtph1(vS5!*a7!B_!_IUaCY~i4g zh6U1F9df@n`)^jwbfN{BqNbmaT0Wp6LO>F)Gg5H0bV8GhB;U27Db+HKZj^puqDK1p z%Yg4&$HjNQ`ajDJ)TjCA9nay#_hNCfsgsrB5^<$e#EO;79C#fL;Oe-^(CW;33Cf`E zYA7|`h`^E}~_eanuZ0@hb&x_x-3T(catLZ>gRw;&CMOa zCEVp4Qz_xu(1zq?W0~rmYd@@TC&z~_g zYx1yoiMnunSk=q}3^rW%Zasq{6W@L1N(DL}+a_H4LFO_)lLv#eBvMi2++VM=994l)Km z3YeV9qzUF_t{)=;1EUYNF9w|d6gx6nI8Og3SxHUeR(gDe%9Hj+>-Cft2YYXiehWv( z*4Qvxk#FQF@f}& zT4|{I{=gxkiyb3PHY@*0%aRKByHjcKAJEKfL(s&4851!sSXQIz&j>EN6UiK1hw zDuw;ru$gxhq7QsjJ`c_9Gju6f)Jf$#6oHwliTbRM{2>b)l2Q9kAxC0C8U8t`Z#Oho zso73Sce@J`E zuHft5mV(CVHp&ce8<4}-TPGD~qJX49V#r?gu;>g{Vd-;Z2B~8c z$G=pF^dmGX^|81}h`xA1AMT7qbl5obZ}bNkS|Xaw@ohT6=#F6-7#84``U+d~Qw5C8 zj!%!L?+#{6uJ*>9O#MT-5|}zW&m#U_U`uQPf(G)~HVR9YG&bMmdx(}Xv>mC9ZtXFv zwM2z;wK`KIFiTmJTH?^Dq`{-gjy2-|t7<%)GDax_@UgOLh7OtrgX22EO3w}C-#(3m z7-nF`yEfeCN+#346|i!^2tcJ8jXw;lV-|KD!OB88?Dx(C3FCjY*C7Q(&XSVo>4Xu2 ziVBBJl+aW2K59k!7#KBk7_~y+nvXY&5FJ|#J2?I#CxKJ&zrI#d3HU^8jwWBBlFgQK z!)YC5N4eUUP$7Zqvf)ct&Bh-#xoGOSY~SZT+YM;*U&CQ3w{M~vu)$ZwjEX`WVLLej3&6`4b(@SRXTNpB&Xu5VC`&NfjSsNU_ zz7lm^ubDIV%PS`GmBXfc03j1~xd&;(ee}`DrN|j_B7W^CZYL)HxXBziOFB5z&Qi6q z=tEt!Rfwi3QPPK!pvIQjPv7z07)}}2q3g2!Hq{JM0Qu~H}4(6h3Ykk35OOEd%^;r+| zq5ah5q?fIqc>%zz#-~A|Uuf2(jjHreR6&0<+p0E`Rc<1w^F$(;cdCH329iT1Uj-26 z2@}(=9*n*o&wS0#oC{2cH>S?}e0@H}L~?AkLTIjo)YYSlM+-NstKSaDC|rVog7Vw7 z8@1C^s;0_}RrS1Q>U`o!=M5x%j1kh1*>^#xQde^5NBcR4jxnFnvV*VceE6HiIeq2C zulJ;!p+TH393P(sY>X}#C26hT7vRROW$a216U9bxow8d$14LN_5&g6BC}hg5sqX}<0PXhd z_cpwQBvZP{S~%ImPm)Ofl=o75>uB9$TD?X7ZUF$@OGe}ljaqr*%xu0QBaN}HmEEi= zpW#(BoWp1)h8!?j11i*nta9je2lylKx=dyZe07S2-qzG3cP}H3=RRw_vUJIt+wU(% z;Cqhtq%1-b<^$N$gOv329Y8IDLDL)JpzxKrHYGAfGy#;Fs?nbUOU&1a7L1C+FyG2j zj1oVaeaZKJ-X`b*tP~3gTz6u=UJ2MwV-o6kTnIy`8_4O5e!pwS$$&Gfz$;&Auv*ry zMTREb(Tz@d-3-tQsSuVw6hj(SB`PT>=nw4)Y%rgtQisb+X*ZEFDD*1|dAr|^svegj zozH8Xy_=m9ni^1L^#Z;o1}z`6@S@E~tSiFR^J(S--0Lq%?RggOH{3?Pit@?XB!}j(7Xhw^|gCGA+steP<00Kf6s5} z&I-fu{ptiK&TbI0hF(oo*b32_WK*@;rqqvYltbnCi@MpOwKa80|nAF7?Pk#k%fNZWu*sZtFD z;5q))sUBsD_iZ|(g)G$50~c1wW|$3^AC{Iwri_64=>yE*OsECyTg$+fe62;}a4WYn z^{0)}_-Z9C>b_RTYhz0_f^%_G&*WM6KBc^Un7T~8im!tviPW*NB<~OM?@>-lI8s&* zk)Q)1#Q&eePMAMYtwK~h@}HXk_wj+MOZ1_sokLdi0(yuWY2#CyCFzxLZnR9TF}2iz zFmPh_IfP*fT4s|t5atIZKh%cHgorSXyDYASY?s!0_^;uKd^v}sRVHvB*_wR45QB}I zpl3w-M3wT-#gl=Hqvt8ScRx4s#>`)jjx}B%eC=?nHr!0IXPWi?9gEBMyS=@!v|#Y# zggDa%%c?>M5sE@DVNed8RlhQz)Mvs_l|ZN3hNtnakU!ws-I9%KBE&*?v_3R*0_QBhDTzzp;xHTz?bn8 z7^roj2>yvulgN^(UBSEoRXILI*^tNsFdBtW$*E4MNdMaR+LS~lLK zYq$S9zQ2KMN2d*jga~vzG}sAPG)g!!F*q@z0{C%YI8nXf5b_K{Wtxf{sH&>-rw5=N z6E$1Lup5K{)h@IiKyQ=xD3g%zHbLUM@K=7izu%Vy#xemI%X;MOnlK-z-qa628n8gd zzm|zphbBkpJ66(SHlZ^pY7DZXj_o-8({z~#QYAH5+rT#NDS$_frUnMuPFUU! z7-&1mPBl3?ez3JF>Iq@a+R>zGQX4gz4XLvTv6MC8W*?bU_anmLRCD43YvdNVd?#C5-^>i&PdkNizs?EQV_;|v5WhtP)6V~Ce@@6pnx_f1d z2?+^uFxct}wPrK@6qE^M>kw2_REIcwkK!>#dmnQJf!E<1iZ10#$H|}DEk+ZJX59n~ z!Yadqo>JxVaMP5S8tVyqxH4W=LJ_1uGKQNyjiyLqbz@j`y608DEDUwwgrv~UdGmJK z5gIhiz7QWM)HHtA!nP;xeCz6Z*$1N|9k+*@0lrl?BACb@kOW0RVc=BjW_zz&?PZ~| zrAC3Jogww(Wu2W$>HllzFCbdb&|+r*lkGo;FE~oHk+SXvmGu7t$TV`aQ6hST^m~l@ z_u%&h#*Ui7295lGk;e@9Ng_;y{J(KWD7*7Lh+zH>Mfu<5>wur~h4WDUjaKh}Wp#le zgZZNQ-XtN?^U}T!o_yA6Rsn&KJi6q`w_kc)F4m*8jq6H_cSn_NuWZ(a4SLi+YrL2b zmMCYe)n1>J7RAr=b)KF%>vB)q?;-H~{5ldTEx-0$iI}a}Kx?c$acPCs+~)xmaot@K z!%gg`Gnf)%=OGx()CR()&GLQ?sd81&Td*kR&+4uXA0;7ctY z+mt7Jhb+}POO-~xqOxI7+=u0UB%xktqs*(rKG3R(mpVgBW_muhr>D8U@plSUPUAYu zJXIQC{8lK5%foa4H?Z3;jFI17b&0hucX%p=V);n1%X=G4j<0pYPPy)JWrclOpn+2& zgKvB1P5U#J?Q6u5G?5vMYf0VRm}Ya`n376@)vCJFtkN=FTU}XmbM(Ga;y-LHRo(8sx+GqAtpvyI%N4Z0 z?aEQDona^&qYGh7Qrd3jG^C`Y0?Rb|YuqGLra#w)djly_8k3RKKqOWzg)h(~B17^4DkA7WveGC+k8^K( z=J~c2qCoeA)RT~}=Vi5X=XE|)9LKSP3T9%|tlo0`i|7Sye$}v|SWi&qGBufuLAgV= zug6zhQEz1*RBkQ=o-PXh9EqjWa)ja36{yVhj0zNmd-K}jABcts?;=Nd{#T5+^VlYY`2}^TEj$!cmuP!$$Is8%Ux%`kw=%P_BIgoD(cv}1Mh9}5(wM&O zotD!*4gU*iT@UaIn4+CWOw}KmGrC^-7VP*EWqd7bY1IahX_@0$6-_<9x+-8-k6Gik ziE85Aa?NpQhH#-Wk!hpC2IEdDMJ%2Syqax^8MHtsP*ZD~k>*;ppWvaLVUlTb^Sq9U zTe;1P+A7GLu^NCqu5&zkJ!@~N@O=8ESbnrOMt{<<%(qNteESv-dYwRvM;*kv*;xzq z-reaMa6Yc$BH_FWf;~+=`7zLb{DZZ8nFx~6dbd7~VdQsPEU#fholGSOeJVSt5uJ`e zmtc4Zb!CU^*vwdAR`biRV$avb`he<*(TpIoZ(5i+t5=U15qF4!&nOm|-!>)sJtsyn z%A#?+SpPz<;~3S8V6&3u8Dv#@#x>>CeviCAqON2r^tVc#x?iY}>U!f)g2bE8>aLzh z_EL9y<1W>b#Uq@gn=8|GNW|(n!E=5Cw@;_3u=QVb$5j@iGtr9iNfCdPWH4gbTWOx5 z)IYI5nj9-WA;GQY(kqsg!v3jlfH9pk_7|~P`MtI3H9xMyQ~9bSI69ot^S75b_X`XBi-WU6Jd3{hhk+IC>rA3SvP40Gc=x|v4q-7(}3=ulP z1{VJH$4iICx&2j~94>1p55@LLXKI(nX7!qsG>0c9e8*DbL|cdUR=;9d)iTdEMBl3C(H8~FeX);LYG3pjG0rD{w|;RC_dA^g|8oAT z>2QG0Mx7{H!DZy$v1bQN=lB@(-NP=_h5d9uMgFn!@BB6biI2gTG-MNGGRg$~PXDOV z43&wi@3Z8IH(ALv*WktCjmHt#qX|xu>EVv?-6vUyH3f08 z@9g5v-`J=ID@$2mRB7q5>`07LQnoQqaoDVGIo(@l>D@4u4x+~wJ+>}pnS*&sC$;y$ zq!w-DIGw5vs+$R)~pN!v}H}cT;_)uPEGJO2juWTt7@xM?PJN^Bf0Sf+yKN04&7RIwpyU|;{a^$?~y)B+wWH;FdfjsZ>#jT>E- zWSS;Pte!ugCTzfk-NlIMn2mm;mv|1%XN0Y`H?O;M1KhdD`^2z1TiDttxf#RD5jCL{ znjZgmrD96jaVRU3YFU!zb_UP%p{K03`VTEDWx4VBzrwx{ z;pTJ6S^Tl7cY>K5hEzU2!;UnvLVB{{Sl*Qjr!*)t6ZFVM*=v;PhXTL{ibxBU3&GR3G=S#R1ojqC0pNARu5Y(^T7 z6PL-|Ne@PevT{82W-|!R#>Mt>r_J1a3ju;h4mo2=^GB_IJ%#~?v!L|>xgx>HGx*(b zcGhTGI724Yp1x{afI!d{&3@`-exqP!_(l85U1w~W9furE5wT@vEiB&!&LX9G7bk0X z_?#-fWVzj4A*#M5W|iTs1*@jbR@7!NU#04C)T+~qADgvD_rj#M5#crsxwQv_B`f+G zJ-116CX$xUo+qOT4tneaA2v;2pYD=8%n@n`G|~I(?#nTRo?S^yU>(PiPQ#>ceH}7< zmy=V)dpw+br0(s+Ncj=yo#F8D#Y820lF*R=iI69L_Ra9sA#*L)qID^MoP?mBj6J0^ zCDXN@l^}^FrXvPj{*HNVcf-FK4_3<+T0e%w)y2X07-|*vSi_oZjp0EGn2l3aLWK~Z0WjH@9Mk6LQ zv}0|r*5y@dY9H3!Fz)wPZF1pwiMp}!g}j1 z$C&{F4@d5DjS(KsNE!?Dec{EZu=S5@y#w_q7;>QFtQIdbD~Xb6g|qsXt>Jk|9_059 ztA3e)d`nx=oS-YyAYfAvnd&Ia}gUMG5^f5H;E!cw6K9qcP8F6@Q1O8%LFp-Zkj*i zr6t|0bP9!}NUK15?*;dD@$j%470%SUE-N}n^L_#II8O!fBRH?&uj`+AlptkRf8zsB z^QX}9g^WS`YuHr7y8?D5s6d27>W;yZ1?0U}C%c+>Le5d$c2mlf7} z>p7!uwJ-c@rO@WZQsq_q3Xdz1&)rg)kb7^IlJ}iY<@K(mjXEM%NU<2M;${UUe!DC0 z+Vgk|YOrBT0!TXGZ;iE8bmoUOmg7DS5bp~(uibg?m$xWJ7x84$F6b_YlBa?XAE86W z0NY9|-*Ba}?;`e!oMo4?=3`}a`0QVO{D7Loc+RUgur4|HZaa*Ps>{i}JM+rgX(jX> zkEx#5JE73ql00NiSXWh2&>LwEu(j!zKY~VD7RED3qiYVvp8R&Wted*h7BC9T&Rdbi zT0qVIOKt1e((DF6Ot?xx_;Om9Hb3onLW@|S{9ukvdWlcbLD4Dk;o{m;AEs8lQ!(FP z?$ceXz^{iYS7Ti=#(RAJ{>X@cc&Q0&0I9>zxA?(yIe}k&E}r@@LLGOCcVg3x)e<+G zdgE>S?T9eT8PxQ}RU>XBdbs8%cpFAe{W1LD`#`X`X3x5a8WxssS za*n{bcHx`)(+_WO0>8vb#C@bt4+HjfdA4?RfcP9&j7oD88&yG`JwnVobuFlAEn_8b4S4npXY2-_0U05m9dPnvw;(m?I zFg4%8^)iabmS-2oUkh0BL^FCql0|*fcxp1ueU?ZNGW?nJ&#h|T#QZtM2yML?zduQV zJH1(6x2mB9H6DkfW=hvS7`(UWGL*|YGQ93IN}Yxm>bj~G4t#DbYO>4oW+6ih)&5d4 zbi@aTsDG_~&?oj#BkY!G6a_0U*sS$#27sK%OGz%Phl)~L&Z{#SAwwG5#SyrFbgHz4 z?y{~JFOz?aLQ&V!;<4T81&gSDExW^WV=syt%?nzWBIM@rfC zxO7nA{9-bqZZm_2l!@f^Xd`yb=(Xr9Zst0{z2qTDJZJH zI^(HB7UF0YF`oZA`(=Tr;csR+QBmvv(&c{;j^UNLlqP*D4mqd=)(>*>{X}pIYpFMp zf`X!u?}_}vCXkCSZ>F(FqCIOEY&SzM^I1j5dk3#NuUGK6lL>1a`~zJQM{5G9ckHqg z^qi)KKl$&AU(Np{`24)U=_BM?L+Jm@+byAhpMnyn-;taDU;w<(`=wY9zo-|vV0>@l z$P(t~4sk58mhA!9Jq&|h`}g^pR2r+=*5&1;@5c^C(@8>btXgUyUwc2D26XcdEc$5i zE;a(F8C3BdKrOx834w#V@&Am+V`umVkH@?EXwwtam`J0>pw}H`ZgE5=oxW0`)q+UG zN%}ABFe2&xVV?@ocMe&#$!>RlDlZ7`>AgGz%rG|ZGX!yE+wHj5OJpjCy)>{mW{A-L z7n%qM?tYS{7GNRpT1d=4p%F7vxX$kVs&%y|RZ><4MQQkae>V3AS3`yEG2OoZ&s-)} ztbF17soC*Bzr;|8FDiF>CNXe1H!Y6B1Aa5S4@ktK|YO z07*Fp%k~7pj&lF)V_{>X*SMW*`uplGKE(I5NG}q8e<1}_m*JM6yCf#sRTKUPgrj_i zdxpz(>Y6RqM{{!~w7Mc9u7cpW=rUUS`yqqB9Aur+T%-?Uns z)S9mg(a->f#!?Jx(Vw_KF znpGP&P4);t>19hMG*J0m3R+zIurv(V@!;KjrA%l;;8bmED~h}R-)M`)QyYm_h|1%Dt-7aX!h>?<96U$k%S4B5&SeBkW;#iG}q zUmUUyuBaxw6a7I2rXR~HNif9~jdY~!_-eP>(SEP~fK(GgU08Rcvnve4`!L?zm++D} z=Mxr*v0he4UZ!hM@AIjP#uShwQN7}bVE3o}$f#4Y$ zWSVJD5&kW@$W}Wu7$Z!fD!dojnJwU-M5BgAd=@J)zC*7C4ovPF8e3q7J~k`y$rcRB4zevbIu8waY-ZD;*f)G`7fsKX{M}vm zAZnk+FSTXX>#sX7GAX6CZ7P-H2}Q|+n(!72P$H)Oe^97#Tr~>hF~@LPvY@V5YU4r=!UtNK-f8k+W2_1SZkuS>a51kYB;D; zS`xW2AylP+;th+zyHug|Bpl|Ykt{ZPTqk2}&U>(Iv?auwncD4iI(G^h zxX?ZXLlZi!o6Ta45iAB>GT&Qb0`;4&D{#4z5>B_R|F60$e}{7Y!_An=QjVo_B$Xvg zB5Nq3si-V-vSc)bY$J{3IEhgPL&8ubhMAEiM$r&vNE2h<$C8TSl*u|2ha~%Q9y;f` zzW>7a{qeot>w4bz^L*a>x$o=#JkO^gpKo5*H-Ic^T`C`5%`cE*47?~8fUpX*+T0@k z2GWjkJDO_ovuI&NH&NB!xBuisUT^$)6?v=ONC72Gc5yFBp@d?}J12fs&!vt_p$It^ zv|)50PDy@cdjw*H@FyAL;#GGVcSg_0ScFe|Oe=J>oFb%K8qwwS!U>mQkcFm=uqXQc z5;X`HC;nNZdp`E%s#is+{uYGJX0NBfxw{XKSa9-2=%l==0I%i6We+dZxF@rCiL!pj zueD^_EXKJt&mBZZS0+ubW@I<2Al@z~_w|y6SAZ=gg3lGXLHGHqJa>YuWQa0x5R~>} zi&qh2$D+ax8;Z~0CJ}9IUK`7V!InmqXVAp=CX7l1Wux(M@o?7p4gD1P=6m72TVu)v zn2bZrZyGB@U4MO@BhI|MS|5$R&As5}p5iRtEw{YG@m z%c?xLX5q(5bje=K-+n`N25$nVwOkv#q;$PwdaMr5yai2QsG{3E<)|EFy57oo=@>H+ zmh?p%V<8aEzuY{MQLS@%imOc0*t9T0eQBTLv`qSyrdpGeK{v^ z+DO_-GpM|LA-A-2@qiTX_5Ph(tVCuK#_&V;I9RU4!S$g6boOj0f)W_Ylw=2_r0e=j zz0bG17$Ph4M5Gb;e=(rN@a!pgU@m8EB8S!&A8WSLG7>NbO9FxOji2%2`K)ih*ruRj zs}@BEgZ3C>@$H&laH*PjD%pJS7ID4Man+8C5^ir_tXvwNiI)lr{g;q{(4{r6wNJd2 zuKwPcM>XF(fz=2b#MLL+rqUQ6SR~Ytwd=+3E>A_kGUQR{@4PN4-Knn+%Y@Rg!*-xn zL3e|B`ztt^oPGP-ARK|%Y>Z2tu-&099t8rCbSZ1KGPnv!<1BZde{(Ic->U2MJ671{ zhxL`osPMWI)P)Y!Jv=dW1x?}>^Cy#gVTaI+%(y9z|6)K#E0Y1?duU&Y_1CE7wYNt; zB5Y*~-dN=1^)+m{muo*tj**fCNSLI6{PYX&RS=;70rx-g<*YEbHVxYVmu0B?CzxQr%I($52VWr|X2TJF94 zCN69udlMXq&KeS~!mBy9_0ddS?s*y9Qm5A4`@|xho}jxbRuEo~)ZnpD3rVV|wBIY$ zepYQ%x7X;USIRbRIBl*|<;f)~+}A&voj#cn6_|En&?&o^|DMR_RV@nf_$@cHOKoZC zH@E)kwC7?)O%XeV#yi(1af?y7jQNdKu$ShSXD=P^`k7h1d$zgOC~+o3*M~VnTj-dF zD9_6FS^Ob)Ul~0k3^5zQ?EB^qH!JWfHndt&L01aa{Dv2PC^Y3{J9hZ&W6FJ|1THdf zi`-mp$(pox#_!#`my)VJgLKZ^w=cGYO(v7Sd|_4H`Qa$*UVohKKazKQvWFKTq&92X zo$}NE+=_cL?1WQpgV^_$1{6A$)Ip=su2pZOEOIwBmL8y3skIIy)lJVQ{Yu;v#3xfS zc|*&+1(n~WybTl}+qFcySzvF(WQZ`oe3Rz|$9~AI(UuJz9lnSkp~JDBF;gFdXK;(3 zRItP}1Z8k~pbS0Igs7$8*(IoD6%VqXEuf*Czu4wBc)?m-5hljdHfP&u-}qeOrk<`j zBBAWS44V0SjjG+=qJ>*oD{=cl?N6TF2gFk1X=qpPhmz-~g728SfzPmjCApLK?$^jF zE#=Wr`4UUf?-}`C(@6>m3DRMvmk#_S%P>)XmfmBTF=_!Anja4m|BBlHLz3>v<$kO* z$~9xzs3N2cSD3&^W?=d{gUq(;2!JOl12xcvOjAhQg+^vwQ^AWj`cM6v=1Q4NmFPXE zsGeOJ%O5Oyw#;idEHD6idHzdTj-CH*TINCr`)&@>))oLjdyME~P#)YlTlbrKD9yRr zif?y@e&||4z0H^HS_>e<+~t8-(3Z1~=oP=j@y@f|KjPg;IO9F|u?Q%c0|!FOTLe|Lc` zAda4UL?;kBb6r+S^CwAXBOgkinqv>uN3Z@#J^h|VQZ6}a{h!MW3Qm&d4e28KQw6PO z!~!O|&ziTLgHM9Gu9}BuKl?p+K+AZm)FJqhyt3he$MbS48bEliWRhN%9Wz?y#l>Tv z`GKkSey|36S*zw zwu5M#bsZKcl8JhOE%S+s98kjdLA}@e$1h6z=#TH`q71GaI2n_$az7!wC=Ti@G4s;7 zx&UM6tis902vJ*QrMcL*g)CNOdGF}65!wk8-aC)shGd*f#v_9keLA)-1^GYn{Z~i_ z8XaXG`*ZfT0XzXLFH{z>ONI_S55F&SusR-9C$D=FhmJ);csAI5Z<8Y99Rg@{~$zI4=^zJK{FwtuM$E+ zL|^S~jLj^Kz`(>2OA?$FCkHV5c5b9>s{LTa;acD(;E2dCzvlSrl9KuOp?(oZt{@Gi zDaTaIQ4_=xLDxheviMA^s)~*K|!;QZZKfk^420%Bd}7T^2H5nX*$p^b*{MkQ)oV=h!3A%~qL6ZeKaiFX)eCB61e zU12P1^jObI#Td7FwxLJs_jlkFgc@FVsA4 z0p!Wi@Gn`HcjpgG7{1=4%8UXF4CbP8nD+Uvv(|M>6p1e#B!_IW8{_M zBEtiyUOfaXmC?ywWkXx;I#Qp4kkZCo-F4cqw?p;O&w_H7;RV(&3m^C}1O)g5f0^tE zQ*TR>kHhoDqmi|hDO~HD)vrr?Gn_&a_eX;3d*jeVct zq{vf(#o2+4v~CQNaZNstog+a831W|VQ;fX}Xn(Ite8vUNvFb032h}Oa8U!N+h6O7K z9p!DLORfq7|CwnP!pU2*9Oe)brUS+HeYN-GDsTP!Qs2~7dKcLH4rCWN(GD0!@XyFd zS%Qksq+=SpEMY$e7!jv^WL6s((TqDfY+0K>%KB7+RsvgwO6;mR)vL$m|DY3i()n~M zQC*5=|9?h*mOpR@9|p~k@zW2ol12ThY&{@7b&SoZb4p)DrXk{E&f~81YPdT zAe51TQNlUu7Vj4G*2W-5oK7LKqO_vBBIlW~u(EB+1EdS_W51MZx)N zq|&HT**AggWjV2NnO#daZV#5Hk1dJMt_dTw)3ndU;Z-;$ODSxnOd4HMzGd<`<2iOJ z8&woSlX5IF4n@YH+Xi&i3I57{)66AH>WS6bz&xN+DllD(^Woq zYuyJe};75&=D3b7X@kn=!-F*(lR~R%!M{>sdWc^Bfa&^XiF$j$I$7jwCZ$#$~fb zGhSSCFV*b+GG2wGkzOa@-`iE)C&etGt zLxs|WGFTydGN>xrAq3&eG6 zu6Y-?7uTb>jvTf-^)vN107hO^zH7Hjz&^m9*Mcw84cqOkdA~WMYFMqXxT|<(nSB}c zBzAd&zm&hoecnU96}(lXb;;A*lgTsQQ|=M*QQ;ByQ4A6fQW>fmMjyf#vJU#X;`^+o z6CZ%JpUYHftVh@0R?*hzbP_ofSwdWc3J(Xpk?wNbed8|cj!us#48NA{(5~LhMftW2 zWj5$E=y#AwbZs;ZDNlBRyi_)lh)2+M#4_F!V=t{J<|IlHUK3RDxg18TET}B9!BfI!S)s{|$qmVT`cihk>IH__EX1Y@ z$W*^2A{sG_SjSI9LFG#sQ#^cTkJ^YESW4aDw7rmJ7 z<0J8EV8EB$FA{ny&~=CaPvIA;#|l99Q*TK4N{EZdOo&y;P)J*xtyJlg;e*1RTx@C# z$9Eg2`DOruQ>dxbiSlR(jFghpg(OU!zqQ5k$gFnt(^Et)PiX>I+|iuGBK5+Y4#Br& zbv?z3+;yqkpXb)`&Pob3PFKDAXIjl#bxwdI>&5J9MkmHUf=n*9(DUBA_B26HR~Oi*7a|4SEW?w zA9PyB2KITKd!7dOib_@Fv<$Q@8jc-X8ipzkHf(hr^Xty|aJv#;`ofVCN}d?q%o z%iLZIH`iM{hdeVUBW(+lxRZb~8+n}-hNlcGutE5;q0uwPmx0zrUHde zOOH2sp83x#kgbqfa@iUDc$-MAkE9Qg3_|ZlsYVAg4*1FlYjOGc)&=Y@dOER$7c~%6SMXg!#<#Gh!C;~5IlB2 zPTg@GUt9zm>DcNFwxxJkJzzc_jT`oE<|L7>NpC?=<@m?Og1Z2~2GG{Qe=b9L7qF&d z$*BoWHt=?ittipIV9D)_oP(1Ef`yA?ZNKw2-~sE4UjDd8EsiM0IgikOeH{XyC*@Sh z7c)xqj--aDP-1R#lZTA3I~nq{#>U=0%gFxR0zalr0PN>emm@zthcegu_GK&f5g+2E z;{6)?t;{U}cOr-+VkEUwFfj0RGeuQLRT*h+0~;%PJwqFPBYGDrTM+661LJk!20dCC zIqDI)SXo*-aJ%r4{FUGaJ->dDwg#%_D5&U|?@%>u6?UP4qgip1#d@M?Mmg*MwLl6oy!J3K z(K9mq&)lG)yszJKe>HP4vQ!l|vof-F0Ik8#&dSL9SN{L$`QH`)&q%fZ9m&Mb`hQ3M zpPqjsc^O_6_&*B0S?lk&Aan7<^D_L8>G|P%?rqq>z^ED|gg+~~fFGs9Md9}(?<^(W zf2&ik8}m?yA1-+uy$rLqb6Y|NHULh1-NqO}9sTYl5TfQV@YF^ZeJ#iW~)&58hab z{!iMS;YVr2bj1FXcIIi5!;sikLO4=e`cqALc6N4YX=z&pdaDl9`Nc(ONC-SU{5=NE zqYn=c&uBUimM2fPwVsHGh^(yal+;?4PIw;-nMnTD)|RWQD;Aus?DEg5545uKp45`H zjy=wj){n9wsB#9C1t$t}eDR`?mBa_**LVwMJh zS_V7>$BMgymDSO7i3Z(SGK-1!_diN<0#BEHgkE^5OF0s;s=9Ye&MQ~i>j{JN`F33Z z-+^>jDCDU^h5XjjPK2wgt2m@9tqT2~k#rspx^8%W{chNl=|DoyU5iiM<`x!J=*%CY zCF5YhkH63--8gOXX75IUiB(Kb=(42j+iy){1412DHn`np4(sJNlbN6f2L~4;u&8Jv zt)G@m4bRqlfI#3V|AS>Oqx@%R(bchELc+sIEuv)YkQUHt_@SST8ygmCt+K_Ky`CS> zHu`*hA4mfa$Qd;2ZKn$4Z=0{CH7>PwAyKyXi^{e~9_|myOxRiv>3Q{~SvcJ;cL66Y zVr`gpd<)}>r>yMN^ypYO$4gC-cwApJNHFs=UmkZ#{ups|9@6oJck|fl`_cq-rNGxw z7&GzT?~-QRo^gyaUQFQGCRtGC)Q+cObJ>%%#Zte+!yw{xSAEJ@ z)JsiC`N+IJu{W7Nn!$%V@ok`35VpQo$og9FdXT0pjr)6u!olLIF46p=inc3xel<3( zJHP8WnH3x%{+xvO16N15P&J5?v~1Vph;4(`jEB% zDhwIJ?d+mpcO#^vluZlzP$zp|-xo=Ek_#mb=}?oC(~aAbc-k1J2W1)7o#I2IE+X>I zcQlNVMOPfn{@FfAFcYdCp9$p}bd=`_-T<`RQB^&JC~5E!YFaw&d&2pM=H=_>>E`H3 zhY;vG!UdFCh@lK0l%FLRSFm<>-rc!^ACgdrQ$5zazz~hOXSJ@lVF#%7@}!g3wWrRZ zqj;*|Gyz97=ur)D#)p~`d*E`Z?1*x>dfV@4oCkJ@$P_-h2Yqqm>$+Pt+@S_~Cv*W# zdc&}n&vs15>&d|BHJ(C$m@P5T*t4qeEjD^d?P0a8oc0kCw;R>HFxOd5^}QIhYRQ~( zcy%^MD8MwTkJc2Cp@BGfW6&nb-VnS{=}3X|JX^aS?{Teal%u(`5??TzD?r`vU_5 z)XWgD?Mf7V3Xk^DXSOM0rq8XN*KfXP#I%H^ zn6eImNURsFT;;U6=aQX(A7`y1tcg;_AFHz2r^Px8VBo3{%OeHbZ3Px4pmBEe`*roN zDNBC3OpU*adqvgr)Lr-rg?|T)R|qBXxP54UVFV-EPo2&{=jj#17fNS6ie&%VU-e$k z7nyhKL6r_SIW&g{D~7~q7+edm@4tE@l&QlNUVm7ZyS1aXnR*}a(+-_Z6mhX_)hnppzD9SSbge9VOufIK zSj-d{t49)L4neIGlx;e`gwF=!5Hg6Jmsgc4U>tz~Cl{AAZpmwZY^XsodG zdoBY62@wQIloJHxA-MB2LDywkOo%7O&+jKyPw-{!uYIrGg;3B`?LZrAs)n^TM&AXe z-9OXL>@4J()w}cuo%iBr$}ISr%cGU9>x<_EE5rNd{Bn!WA&m??=^@^*L70pi3fPBv|fvPr)o5$cNUz>-8`i|4hE!y5(snQqd z4mWsGuYUom|NZMG6yPvjfK;SUm4HTTr^P59PK=V zA|=3%|ETtHsbs_)(0Xo^;gQs>lvqF0S-=A z1t77>t*TdAL@d*vT)SAAt1?;m1n*umfZ(y5u!nksLCKD91J-Jh!sASDb{<`Dr{UrN zz>VifSfnOF)=>Lp#miTN#($~%E2+M&QYw($7QD6@MR8Km*&J!oz$B9)>E`!LxcbG8 z{(#*cl0kJ@*L4>Y!N!U_#at^x?bsYo1O6NUs_ zPFH;(m*liC39hyKONiN z1!Z)uy?hqS&91!d@-xN0)ARF^Lwa^J%U0LQ+}k~QT|yY+g%%pyJ<6sP2?McsMG4Bv z$|K1vefe7zdoDxPHPO>OV)u=vt?WCFjF!wu8Lf*(*;XScJWv@K0+jN-iPg04lLOZTeKewDW(a7MvJ*NxS?L4 z7_v~Z4ot9N>KzX1?0ld|KVC|#SGXtA%fRNe#}{X1LbBwV>g zC;Qt|y?}4c;Vcb7^o;`)9A>$g&=5iTi_^Z)q!q1JP)xIp8He2Kp%@(aO?UGdWbelh zXDfVF7Zdk{Vwu$rmzrj7ewi#fHvbH=E*j(-<+d#9#)tD{l|M%JnIAj0ISF?dDmWG@5I+8BO1X8JO=NKr_3QXjG1DAW90i zS}RAn)#2N;0y!2f0W~HbA~dAd>dvL%=n~osMjAh2X{~8>9nc-Fh?c}p|3tR9OP>)Q z9!~!;qg9N_*$gZKob?cVGmEMP4c2P|u0Fj0W)XzJhKm-@ua6e`$nYRN`pXe-Vl%Jxl?uB=8Gf5@Tex?8# zPbJRj{9c|H%6#{0YfPoKmdUUmS(}1L#u48O8WISMV?5@M-DhbB!*R+q`_v8w>(_h+ zwIVwONgzlQ;*Oq^$PfQ%h=xTxuZ6)NJd)hCrEK&xhQ&txN>LXYuHl6_4(Q{npn;Vl z%P9Zx!zPl&q)$t}5GK?vHP&5V2-x>*7Nau{OUu-Geh#NBRcG-GkHLpFB*ZR<^z2M!N|ZoaUAs zKyZv~8NfY^9ouAOXL{j9*53sl*g}GvTC-KKqKFn$5-~*I6y`>(gY)6L)ns*EcD87^ z{bXHp!s~WjOwFh`U<#Q+I~YzzNjK>gE)Mzd4}X0}!IJu_Z^^<$fs!f`VKrN!FeE$^ z?Fdmy(DV{3aHoT0wXwF1R+nC1_tQ)fJ+MjN9#>9QMI|v20BqS>o;+=mQgP4U>^<>Y z8F^M0r;NGbdcdWzcDWqAyQqNCLUe0))Vbwz*nXey^auAnVQ;SM1DxFbAl|JDq$;;d z46My0G8jgkBQ4pB8AZYN9DtjwQxBiWhQ2%e%2BQ95c;s){<%Y6XAa-?$6D}h)5;S) zb?>DjzI#>2v5zv3VfWDhv;eKb%&=RTGK9iAzh7snxK%l(yv?K12&|*Wz2hnuj8eP0 zXzLs^z_zpbC5^s=jL9$k4~2p;`0Q}2u>u_?Sw=gnLio4 zt>ocQkT7{WwtTo5jUN=J)oylX1seenT&#^k3F3__!lHsWLivPYW{OPJ^fsEJa{noRpQej;FUhxXiu@VW zgjG(F#{5g%g80GVY%dSKlE2Z=ARqTp$Xvo12@#?BVzk*fPM9G&au4-lb=S=`1?Cjnr30 z8)4Vmx`qUa(9fmZC-713zt~R)^{dhQb_wcUj6@~?apb=xCC6YwcVb(187NU&7vW*` zKtQuXJ*_WKvVEtMhayWwBNKf3HUtN)%!qP|GTWTp_$zm5r%(Y!+^;>mEK{6J6}Ahc zH!*F4H0nP}$_lb!K1yrlo2LERAjJ<$0P&h{Mhgc?oB5R$i~O}(Wg>{L0uHpvvHlJg zC-w2>7n--bT-@3ifF)KcpGF}>+u)B2ZO0(N41d0}#Q2B5mr9UlB{lZq~#Gt8x z%35#%EitvOvi}ddAhSX2$B35n8kW5sn<$9ln+UW0Mt)4%@- z)|f4852nOjikf1m!P9y$a&?0{sr(yc3afvk-Z-I-~wg zMG7+iIxte}>i!l-bLpN3E%A@%yK5uEe5(^1tHpCLuaVXI4)+WhhL;opUO%tWweuw;Sj+izO{8G1}9H`)z^+mi9AR#$)gW&j=pz zWaXbW)A{?N>kqXXU1rM#*mOJ`>!zh{^`{{W+i{Aku?jAFEO?i+b&kT;cON@1T`xhX zpzu4}43^UJ_;bg?&hr^fS8LM}Zt+z*Fb%139YI^p!I{l#Uf$HxN^3l;>0DIy#^0=L zdE=sRr5qZEU+y1(%SjXrfMvw-9ZR5nNf^&Lu|O)z*RooAuv~jwIHw%GuoD}F2DbF@ z?xoh^ySC__cmCLu0_NWV5w(CjA&HMy`S}^`ty0r`--%@;gZ)!T7I>lR4P|uhfF92$ zdx_2&JjnuQ3@JsPq3KqE+T@bQQ56+VDd3No(k;_dGvuiXs>W;SAFgBV7dljKulQ{1 z9XH?J6>$U~?|`2QTI{U7g$%9@rB*5iCE;8*W`ZD)9D-R)@zJ0YXk+z})q$(6{;W_7 zK)Ro*zzS7TgQ|!VeSI-jF8h7r^;%Z$$2)fh+fy$qHjG)aBrdhbD-&ur zzd~sO-|pKyoT2!KSv%n(Zd_TGBu&qoE*BC5(+?5ajWL=c_y-x4`{xjL?y zvifMzk#9RZg<=-=9_QMOB39e{-L%qhwh%DE1GR*(n3wphvIi8ne5cD_U-hi0QuPAV z#+r2=0FK1SE}srKrnJDFtB%>(JDVIa@uH|Z2cOyQ7!S`i06+i2VSj3O?Zr`JER5-7 z{v(rg?uG4BcRK9Q6lDKO2fShZ!e1{`Os}}*UHU540y9mx946Z+jYMlbo?8{FR$d*{>uvF2MeT1oX?=j`_XN4a0aAu$`?O0uY{3ya z{N>w2NV7|#ltEK!iVdaYe84{i4QXJNe#>EM}5$N6!hau5Z z+1NXDX)VLOvFw_P#kBQbG8&Bv^hwn}kH*+-bWg}xn>L2m@~}MT8Ubj~n{r7jf81I( zrhGc(w2djAwmCd!zFpbYG4*V*uP-%Qd5ru-bpRj^;WE|i_2}rku03j`r*HrK%5~@e z4y~;Al*-~ESW7FMu#OPWbQk|3b6X3kL5E3v(KnovlWr2p(e~_R4fGH5ql%;K|in}Ly*iB0(R=CR6Z2C77s z*UgmumP#^Lt&cNDdRjMaT-@8`_ykG?oI<) zrpPW%H-)DRScHgib0%Bc_*mM`;mUiEsH=(B>3Vh7roWw& zT-J|1Sm4et7UGdaar#_o2#E9A7JPvQ<#j$eWcJS5$9OLnI7GXN21tAX0@Z-uZHarF7YAjz&S~*GR>TX%i2WSSLryjVSi?p_p8p7&|?%_)h z{zV9KBJk@OJSjndO1?gqQJt9HB7I?#Ioup7uwG5b;MB_N;M>lX*$xH14eg292Fr~G zV^(Tblj^^VZios_m%3UeV>sF>sZR-wS*?Et@2+Y!m;l(cAe?rpmBF!8E4qmEn53JL zeu+1#QpKH6&hP99Y;dW(1##R_ww8M$8o(Hxv5)k%v|)qfx79dSo>X%+w-iJSZgZqY zIe^+Yx1|o>o!;JCP}ThjIs#97s)CCzY|$EuV>#$v3)}tgPPt}-!AtO)&-2CW56;(F zHp^aC*-e>i@?eH#Kfp3B+)T*Vo;XLF)PA?OkC3fOlwV(=dI%dYd^^@8IMAf;T)E!4 zj^iFjERD9)jKWRR$fw<-=B^E#REWif@@!f}P6TdG?Ugp6)4^Ox(TNQitKkwr_?imb zjW>z-!RWGUd{a-t8efN*T5q%4xWqPCKjB6evE>rks#Swn(!4g_ZGoi~vSMjnI$$SU z=+N#owVG4$0>ZMOST(&9{biujVw{u$jBu0VDQ@z-JfH#I@3MTL6-)QI%2TSA`P{jC&%)h)9Ee3ZrYZi zzc9qr6-~9#420lHLYupp6SPF0}G}HR>c>Q5HkI)?sj*M&n{_0?7 zG!tZ}Ub6h6%}VcfP-5F;G~?+a^QF0=feRs|h=d|m(3m5`8_H!Pl~Rp{Gx<- z&UmiNbatNi=QGarf?uRFc<;{o2w#9Uo|B>PXQpa|okgYvsf=wX1nvgpv_YB1Y_Uk$ zWM+TFehUkMbgwhiyC;jj8q8{}pheMkHiC?`n-NpGUGGn%=5wkW zYuLw&4Gwm=a*l*gko(|bCA~&Akx=f;&DKke1it$}U^S(GW@SO_Ewy^^EZd#rV8P5J z!)g+Fzn{b%Deol(Z~fX~PcGX&a2m?c+Fze#$Z6*YzZb99i*eF&v%J4wU`?4n|31mP z?#!^AMN`n`vrg-7@BGF?^;e6CIA zymsrtXXO@{bBn-%G56THlVbAbFLD9$@y-oS4hH{v6bKocp@TxFqjxh zl;v@(pr_~a=~`E+#)3UO^cA)$xNy4^5eJ9!es< z@mq~_2!W->`;*E(ES|PTd}FslioKviJGt+f94CHO%4M zJ}}QNL|Gyr@yHBo!;;k?=9sx)WX_pcr=R!kB*Yk^Q2KDqfUMGrT)t@?ev&cDSNML! zBFza2@-J(&&Bg!m21gVSZwPHZ$M{PH`prSsDlYZJ(0=0$S|I5?k}~&yyded|8;Xi_ z{QvO=EFaKIaX6MmO#W`~Q_eY}HyFqr!9+z@_KQQrip9mDn>XBs6)(hL?Vq2?FKtt% zTYO%yj<6JE_qe}|Q;BB&uNugRB0fr*FL4rq&$A6o<#0XUyoBI#*d9)x(@-wcwlbcY znXy@Jo?9$ZE^)ix%g18S9`>vo<-Hir5(xzrkld%&y{;{9R7?@D=yPZvZcg$wF^%ue zw}gv-|K@hTEzgZim8z+!5jHb5rJ|$TiqnxKfAx_ERJy5krLtVYrdP!Yg9!16DtZgj-7dBWG)qm=^ek0T(7gY$SNyqCEnRG&~e3d>i*$VK7UU=qHyh zBXP?m1)=-tXLN);ty)X9k5gD(U+WLb+B{E|Tk28dJyAqFqct4S`*=>8g#v3TD^crC zezqMv?v=;%hhekOCXnlYirDdigi+Vf@EC8&-=z<{8v|}7ul7fiE`!;>QDH+=A8)tz zmB+rFP}vr~#$w(6C}Kx1E=*cg+a3&+kCN4{8@=I2N6-Gd5U^biVEd+88r>6a1+DO+ z9w6U&bP)!?!Cit%Y7aBGcw}~h%;oVyHdMeXI=MpBegAj0YU*TwD%&ul+IHQ86h7es{h-|)?To6!-HDv;&0}x<7 z;3u#=vxF1Mq_SJBcLy`#FzNe|vVjt@qH^cMZk@9G!WT{m}Ed-0tQr-pw{rPebV&*sx@6krUz~LCPfgD=SljY65SlTXn zpbXP4Ox6K;On;GTA*^pDvy4T;Y!0n@za`BF`1dlAxEv8u@2M{&<79T{h0Cg-!rjjY zDEIK0o273O*Gy6MG;!{Pd0aadG(`Q}C-Y?N-X-a>KOg>aA#**Nui+1`gGvWqzT9wg zgItx>O6vX5IEwe+2)mS6DEs!B>ceekmDN@Y?AkqF zd|RG==a|f!{3xJ+W~8(tUYMU3jlgsLqoe}5%3^G6Y`m<}$;|IYK{a2J0&;Tl_wkeI zz<~j5KDTO-WL7iO#)q{)!gDEM-n*O-#xV8R^O_m$P&pM9EXb41&d-{Son-!PxoL@s zV(U55=zo)GMIhgw_hjfthD)9pVT50+ zopU%IU3r0^i2E$weSAGY{UW#82snN_Hno8qpe=OH8L@T8JeyE`ma_SzfVeeZ{-!gOhHgo z8cqMo?__FsYuDcij`mSaxn6fLziJOsRv4u!p?!T6sf_B6{h6A^OQPZ_!*J*@SzcKh zI1v27{?8l6^M*C#dVRgrWYv29MGA02aJcdhLI2KAm{+m zo0^pNq8;5!6=&bmsBn}Z%~8HqT@dWFCakpb z2TrJXBD4ufZxJZU$X#uHg@5##1PWpwoKioeQ#hqP2Zh|LrW%k*gZ~!Sf|14Z!Kxs^ zH8!uSH?&EnX`~xr>pddSn26XJQzgk!<@H`Y7?CerjtRA7PU2D&D3$FDWSbdI$=!Mo zT54yvoc*e)d5GCzTqf!yYpBq((HB`2ONvXe>@doAyV~YVNGsSALnS|Bgdfo)YxVyiz zS}nsZ*&RZr?$9H&@UaI#PMk-7$p3zQG+@xF@b~YKC5*Y9B!&5QP^hA%zShf04Ewo0 z%8;@7CB+FN-e|=r)M$@rcvRq}89-4kb=cjk-vfUVFo>zz_VT(#w5}omTEPfu2h-G6?gJI-)>N4DyU)Mqx2kI znKbInSDRsa8w+OsSpr9G`ViRJXmU)Q_Yas!xk_+O>TkJN>|IAO;7Qam-J^s-&<$#xOcqIqattl z=2k>iQ5LaCt+lDD=cMxB81)W9F0(#AD$FH&(cd47JyZ)+;-KgOUOwHdnEVhr>g$kJ zd9Z^fQ^k6xqFql}U;nq9pVfpdBnZ)LIDpznd-yyQ#!&bDnYcxI2bkJNH+$f#p@$dc zc&2xbfoqu&&!r|BOevkDtEFdx8=+LB{B&K{hR!^Xq40?_V9#7b9d|20o!$oL9aE_cU=-_1iY zLXL+CI50Q~jX8#Lx#br#c3ilE+%Ps?tqG}HCJ0!U6c-z+V|g{^I7V1uCVVyy_?hXl z4!1nuww-KJ+InxE-yNoPF^z#EvDy=gm0cOhe_yc2eWG-xo&smQcJ9${jT3Hd3nSlFxFJOLmr_uWZSAoicv9HdI1`boU2%K9FS*?M5n_K^He zI1bE1v(QHPK-L%p9H8WgevU@DeNtWAYs`Qc5*UWUQJ;@YvwmOYUn%p7C%=dg0U_`{ zVKQ%jgT>=px|P!qsEPBm=#xZaiP0}`#*F`yvDOsCp!@z`#`>4a z;G5SXK^A$AIDK@>zb>J{BmepKxcZWjab z2ky*BSrMYo5O41IM2Dxe$>B#hbyi0Kh%#sO4jopb-3HPHs(lkUGVb@LLcLuhycQX^ zv_t|eA}RK2ufO&B5DTC`<+obA874hl%|koHe%|Ju9ZAUDpz-AM6| zF;IhkY9@=KO8#aSB8V0gSX1gjQnv6|v4l(Gpi+@Euodvk-xk;$)tu{FQFnX9KQ)Bi z>P>`8|L)sXbgB~m4et^`NRWb#H|Lk)mw)z&;smX|UX1?jFBcGmiV+orNMntY6#v&o zr39^=7XRhHtxtedi4FJ$7yM7P|0hKSnr`CjC*uE9OKX3DF(-4H!FS4Ddi_nQgovzg J=@;D}{~r`&oRRa#J`_0T+-~Mq{?97Oala6>I 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 literal 0 HcmV?d00001 diff --git a/docs/img/seq_register_resource_2.png b/docs/img/seq_register_resource_2.png new file mode 100644 index 0000000000000000000000000000000000000000..25c4523381ff9d47db9bcd1d46c2a3252174190e GIT binary patch literal 52712 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

ym?k})OZ9qxW&gx4?`duZfVq`_Gk7U^U>P~v}J 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 literal 0 HcmV?d00001 -- 2.7.4