From 19dee0c9d50f35619ec6c41cfe652e2622ccfcc2 Mon Sep 17 00:00:00 2001 From: Thomas Dekeyser Date: Wed, 17 Aug 2022 21:38:39 +0200 Subject: [PATCH 01/16] IBC custom app draft --- academy/ibc-dev/ibcapp_app-vs-ica.md | 3 + academy/ibc-dev/ibcapp_intro.md | 25 ++ academy/ibc-dev/ibcapp_packet.md | 338 +++++++++++++++++++++ academy/ibc-dev/ibcapp_steps.md | 423 +++++++++++++++++++++++++++ 4 files changed, 789 insertions(+) create mode 100644 academy/ibc-dev/ibcapp_app-vs-ica.md create mode 100644 academy/ibc-dev/ibcapp_intro.md create mode 100644 academy/ibc-dev/ibcapp_packet.md create mode 100644 academy/ibc-dev/ibcapp_steps.md diff --git a/academy/ibc-dev/ibcapp_app-vs-ica.md b/academy/ibc-dev/ibcapp_app-vs-ica.md new file mode 100644 index 0000000000..6a7ac421b7 --- /dev/null +++ b/academy/ibc-dev/ibcapp_app-vs-ica.md @@ -0,0 +1,3 @@ +# Custom IBC applications versus Interchain Accounts + +//Possible late addition \ No newline at end of file diff --git a/academy/ibc-dev/ibcapp_intro.md b/academy/ibc-dev/ibcapp_intro.md new file mode 100644 index 0000000000..24832c921f --- /dev/null +++ b/academy/ibc-dev/ibcapp_intro.md @@ -0,0 +1,25 @@ +# IBC Application Developer Introduction + +In the previous section you've learned how to create custom SDK modules. Additionally you've had an introduction to IBC, the ibc-go module in the SDK and how to spin up a relayer to send IBC packets. + +Remember the separation of concerns in IBC between the transport layer (IBC/TAO) and the application layer (IBC/APP). The transport layer provides the basic infrastructure layer to _transport_, _authenticate_ and _order_ arbitrary packets of data. The encoding, decoding and interpretation of the data to trigger custom application logic, is then up to the application layer. In the examples of token transfer sent over IBC, we implicitly used the ICS-20 or _transfer_ IBC application module provided by the **ibc-go** SDK module (which also provides the core transport layer functionality). + +In the following sections you'll learn how to develop your custom IBC application modules, either from upgrading an existing module or starting from scratch using Ignite CLI. + + +In the [integration](https://ibc.cosmos.network/v3.0.0/ibc/integration.html) section of the IBC documentation, the necessary steps to integrate IBC in a Cosmos SDK chain are outlined. + +Note that this does not mean that the main application modules turn into IBC modules, it only means IBC is enabled for the chain. The IBC module has come out-of-the-box in Comsos SDK chains since the 0.40.x version of the SDK, so it is unlikely you'll have to implement these steps manually when developing a chain. + +For example, the checkers appchain you developed in the previous section, **is IBC-enabled**. This is revealed when trying to send IBC denoms from other chains to set a wager with. However, this does not make the `x/checkers` module an IBC enabled module. We will investigate all the additions we need to make to make the module IBC-enabled in what follows. + + +## Structure of the section + +In the section we will first investigate the code you have to add to make a module IBC-enabled. For this conceptual example we will build a simple chain from scratch with Ignite CLI. Ignite CLI provides the option to scaffold an IBC module, which does all of the hard work in terms of boilerplate code. Still, it makes sense to take a look at what exactly has changed. Therefore we will compare the code with a _git diff_ when scaffolding a chain with a regular module and when we scaffold an IBC module. + +A similar approach will be taken to check what Ignite CLI implements when scaffolding an IBC packet. + +After finishing the conceptual tour, we are going to expand the checkers blockchain you created to turn it into an IBC module and will create an additional leaderboard blockchain to act as a seperate appchain that can interact via IBC with the checkers blockchain. + +Let's dive into it! diff --git a/academy/ibc-dev/ibcapp_packet.md b/academy/ibc-dev/ibcapp_packet.md new file mode 100644 index 0000000000..87cce04b87 --- /dev/null +++ b/academy/ibc-dev/ibcapp_packet.md @@ -0,0 +1,338 @@ +# Adding Packet and Acknowledgement data + +In this section we learn how to define packet and acks (acknowledgements) for the Leaderboard blockchain. Remember that this blockchain will mostly be receiving packets from the checkers blockchain or other gaming chains. This will be handled in the checkers blockchain extension tutorial. In this section we will add an additional packet definition that will enable the Leaderboard chain to send a packet to connected game chains when a player has entered the top of the rankings. + +The documentation on how to define packet and acks in IBC can be found in [the IBC go docs](https://ibc.cosmos.network/main/ibc/apps/packets_acks.html). + +## Scaffold a packet with Ignite CLI + +We are now going to be scaffolding the IBC packet data with Ignite CLI and compare once more with git diff: + +```bash +ignite scaffold packet ibcTopRank playerId rank score --ack playerId --module leaderboard +``` + +Note that the packet is called `ibcTopRank`, which includes the fields `playerId`, `rank` and `score`. Additionally we send back the `playerId` of the player who entered the top of the rankings through the `Acknowledgement`. + +We see the output on the terminal that gives an overview of the changes made: + +```bash +modify proto/leaderboard/packet.proto +modify proto/leaderboard/tx.proto +modify x/leaderboard/client/cli/tx.go +create x/leaderboard/client/cli/tx_ibc_top_rank.go +modify x/leaderboard/handler.go +create x/leaderboard/keeper/ibc_top_rank.go +create x/leaderboard/keeper/msg_server_ibc_top_rank.go +modify x/leaderboard/module_ibc.go +modify x/leaderboard/types/codec.go +modify x/leaderboard/types/events_ibc.go +create x/leaderboard/types/messages_ibc_top_rank.go +create x/leaderboard/types/messages_ibc_top_rank_test.go +create x/leaderboard/types/packet_ibc_top_rank.go + +🎉 Created a packet `ibcTopRank`. +``` +In the next paragraphs we will investigate each of the most important additions to the code. + +## Proto definitions + +The first additions are to the proto definitions in the `packet.proto` and `tx.proto` files. + +```diff +@@ message LeaderboardPacketData { + oneof packet { + NoData noData = 1; + // this line is used by starport scaffolding # ibc/packet/proto/field ++ IbcTopRankPacketData ibcTopRankPacket = 2; + // this line is used by starport scaffolding # ibc/packet/proto/field/number + } +} +``` +with `IbcTopRankPacketData`: +```protobuf +// IbcTopRankPacketData defines a struct for the packet payload +message IbcTopRankPacketData { + string playerId = 1; + string rank = 2; + string score = 3; +} +``` +and the ack: +```protobuf +// IbcTopRankPacketAck defines a struct for the packet acknowledgment +message IbcTopRankPacketAck { + string playerId = 1; +} +``` + +And in `tx.proto` a Message service is added: +```diff +// Msg defines the Msg service. +service Msg { ++ rpc SendIbcTopRank(MsgSendIbcTopRank) returns (MsgSendIbcTopRankResponse); + // this line is used by starport scaffolding # proto/tx/rpc +} +``` + +where: + +```protobuf +message MsgSendIbcTopRank { + string creator = 1; + string port = 2; + string channelID = 3; + uint64 timeoutTimestamp = 4; + string playerId = 5; + string rank = 6; + string score = 7; +} + +message MsgSendIbcTopRankResponse { +} +``` + +**Note**: the proto definitions will be compiled into `types/packet.pb.go` and `types/tx.pb.go`. + +## CLI commands + +Ignite CLI also creates CLI commands to send packets and adds them to the `client/cli/` folder. + +We can thus send packets from the CLI with the following command: +```bash +leaderboardd tx leaderboard send-ibcTopRank [portID] [channelID] [playerId] [rank] [score] +``` + +## SendPacket and Packet callback logic + +When scaffolding an IBC module with Ignite CLI, we already saw the implementation of the `IBCModule` interface including a barebones packet callbacks structure. Now that we've also scaffolded a packet (and ack), the callbacks have been added with logic to handle the receive, ack and timeout scenarios. + +Additionally for the sending of a packet, a message server has been added that handles a SendPacket message, in this case `MsgSendIbcTopRank`. + +**NOTE**: IBC allows some freedom to the developers how to implement the custom logic, decoding and encoding packets and processing acks. The provided structure is but one example how to tackle this. Therefore it makes sense to focus on the general flow to handle user messages or IBC callbacks rather than the specific implementation by Ignite CLI. + +### Sending packets + +To handle a user submitting a message to send an IBC packet, a message server is added to the handler. + +```diff + @@ x/leaderboard/handler.go + func NewHandler(k keeper.Keeper) sdk.Handler { ++ msgServer := keeper.NewMsgServerImpl(k) + + return func(ctx sdk.Context, msg sdk.Msg) (*sdk.Result, error) { + ctx = ctx.WithEventManager(sdk.NewEventManager()) + + switch msg := msg.(type) { ++ case *types.MsgSendIbcTopRank: ++ res, err := msgServer.SendIbcTopRank(sdk.WrapSDKContext(ctx), msg) ++ return sdk.WrapServiceResult(ctx, res, err) + // this line is used by starport scaffolding # 1 + default: + errMsg := fmt.Sprintf("unrecognized %s message type: %T", types.ModuleName, msg) + return nil, sdkerrors.Wrap(sdkerrors.ErrUnknownRequest, errMsg) + } + } + } +``` +It calls the `SendIbcTopRank` method on the message server, defined as: +```go +func (k msgServer) SendIbcTopRank(goCtx context.Context, msg *types.MsgSendIbcTopRank) (*types.MsgSendIbcTopRankResponse, error) { + ctx := sdk.UnwrapSDKContext(goCtx) + + // TODO: logic before transmitting the packet + + // Construct the packet + var packet types.IbcTopRankPacketData + + packet.PlayerId = msg.PlayerId + packet.Rank = msg.Rank + packet.Score = msg.Score + + // Transmit the packet + err := k.TransmitIbcTopRankPacket( + ctx, + packet, + msg.Port, + msg.ChannelID, + clienttypes.ZeroHeight(), + msg.TimeoutTimestamp, + ) + if err != nil { + return nil, err + } + + return &types.MsgSendIbcTopRankResponse{}, nil +} +``` +Which in turn calls the `TransmitIbcTopRankPacket` method on the module's keeper, defined in `x/leaderboard/keeper/ibc_top_rank.go`. This method gets all of the required metadata from core IBC before sending the packet using the ChannelKeeper's `SendPacket` function. + +```go +func (k Keeper) TransmitIbcTopRankPacket( + ctx sdk.Context, + packetData types.IbcTopRankPacketData, + sourcePort, + sourceChannel string, + timeoutHeight clienttypes.Height, + timeoutTimestamp uint64, +) error { + + sourceChannelEnd, found := k.ChannelKeeper.GetChannel(ctx, sourcePort, sourceChannel) + ... // error validation + + destinationPort := sourceChannelEnd.GetCounterparty().GetPortID() + destinationChannel := sourceChannelEnd.GetCounterparty().GetChannelID() + + // get the next sequence + sequence, found := k.ChannelKeeper.GetNextSequenceSend(ctx, sourcePort, sourceChannel) + ... // error validation + + channelCap, ok := k.ScopedKeeper.GetCapability(ctx, host.ChannelCapabilityPath(sourcePort, sourceChannel)) + ... // error validation + + packetBytes, err := packetData.GetBytes() + ... // error validation + + packet := channeltypes.NewPacket( + packetBytes, + sequence, + sourcePort, + sourceChannel, + destinationPort, + destinationChannel, + timeoutHeight, + timeoutTimestamp, + ) + + if err := k.ChannelKeeper.SendPacket(ctx, channelCap, packet); err != nil { + return err + } + + return nil +} +``` + +Note that when we want to add additional custom logic before transmitting the packet, we do this in the `SendIbcTopRank` method on the message server. + +### Receiving packets + +In a previous section we already examined the `OnRecvPacket` callback in the `x/leaderboard/module_ibc.go` file. + +There Ignite CLI had set up a structure to dispatch the packet depending on packet type through a switch statement. Now by adding the `IbcTopRank` packet, a case has been added: + +```go +// @ switch packet := modulePacketData.Packet.(type) in OnRecvPacket +case *types.LeaderboardPacketData_IbcTopRankPacket: + packetAck, err := am.keeper.OnRecvIbcTopRankPacket(ctx, modulePacket, *packet.IbcTopRankPacket) + if err != nil { + ack = channeltypes.NewErrorAcknowledgement(err.Error()) + } else { + // Encode packet acknowledgment + packetAckBytes, err := types.ModuleCdc.MarshalJSON(&packetAck) + if err != nil { + return channeltypes.NewErrorAcknowledgement(sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, err.Error()).Error()) + } + ack = channeltypes.NewResultAcknowledgement(sdk.MustSortJSON(packetAckBytes)) + } + ctx.EventManager().EmitEvent( + sdk.NewEvent( + types.EventTypeIbcTopRankPacket, + sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName), + sdk.NewAttribute(types.AttributeKeyAckSuccess, fmt.Sprintf("%t", err != nil)), + ), + ) +``` + +The first line of code in the case statement calls the application's `OnRecvIbcTopRankPacket` callback on the keeper to process the reception of the packet. + +```go +// OnRecvIbcTopRankPacket processes packet reception +func (k Keeper) OnRecvIbcTopRankPacket(ctx sdk.Context, packet channeltypes.Packet, data types.IbcTopRankPacketData) (packetAck types.IbcTopRankPacketAck, err error) { + // validate packet data upon receiving + if err := data.ValidateBasic(); err != nil { + return packetAck, err + } + + // TODO: packet reception logic + + return packetAck, nil +} +``` + +Remember that the `OnRecvPacket` callback writes an acknowledgement as well (we cover the synchronous write ack case). + +### Acknowledging packets + +Similarly to the `OnRecvPacket` case before, Ignite CLI already had prepared the structure of the `OnAcknowledgementPacket` with the switch statement. Again scaffolding the packet adds a case to the switch. + +```go +// @ switch packet := modulePacketData.Packet.(type) in OnAcknowledgmentPacket + case *types.LeaderboardPacketData_IbcTopRankPacket: + err := am.keeper.OnAcknowledgementIbcTopRankPacket(ctx, modulePacket, *packet.IbcTopRankPacket, ack) + if err != nil { + return err + } + eventType = types.EventTypeIbcTopRankPacket +``` + +Which calls into the newly created application keeper's ack packet callback: +```go +func (k Keeper) OnAcknowledgementIbcTopRankPacket(ctx sdk.Context, packet channeltypes.Packet, data types.IbcTopRankPacketData, ack channeltypes.Acknowledgement) error { + switch dispatchedAck := ack.Response.(type) { + case *channeltypes.Acknowledgement_Error: + + // TODO: failed acknowledgement logic + _ = dispatchedAck.Error + + return nil + case *channeltypes.Acknowledgement_Result: + // Decode the packet acknowledgment + var packetAck types.IbcTopRankPacketAck + + if err := types.ModuleCdc.UnmarshalJSON(dispatchedAck.Result, &packetAck); err != nil { + // The counter-party module doesn't implement the correct acknowledgment format + return errors.New("cannot unmarshal acknowledgment") + } + + // TODO: successful acknowledgement logic + + return nil + default: + // The counter-party module doesn't implement the correct acknowledgment format + return errors.New("invalid acknowledgment format") + } +} +``` +It allows to add custom application logic for both failed and successfull acks. + +### Timing out packets + +Timing out the packets follows the same flow, adding a case to the switch statement in `OnTimeoutPacket`, calling into the keeper's timeout packet callback where the custom logic can be implemented. + +We leave it up to the reader to check this out. + +### Extra bits + +Next to the above, also some additions have been made to the `types` package. These include `codec.go`, `events_ibc.go`, `messages_ibc_top_rank.go`. + +Again we invite the reader to check those out indepedently. + +## Summary + +Let's summarize what we've accomplished so far: +- we've scaffolded a chain with an IBC enabled module, both chain and module called leaderboard +- Ignite CLI made sure to implement the `IBCModule` interface including channel handshake and packet callbacks +- Ignite CLI has bound our IBC module to a port and added a route to the IBC router +- we've scaffolded an IBC packet, `IbcTopRankPacket` +- Ignite CLI defined the packet and ack data +- Ignite CLI has set up the basic message handling and packet handling to send, receive, acknowledge and timeout packets + +**Note**: even though right now we've enabled the ability to send and receive packets, we've yet to implement application logic that will execute when we do. This is however out of the scope of this section. We invite the reader to follow the checkers blockchain extension tutorial [insert link]. + + + +Ignite CLI by default when scaffolding a packet, will ensure the chain can act both as the sender or receiver of a packet. This is a symmetrical setup which makes sense for some applications, like ICS20. + +However, it's also possible to have an asymmetrical setup where one chain will always be the source or destination chain for a given packet, not both. In this case we can update the message server and packet callbacks to error when for example a chain receives a packet, when it' supposed to be exclusively the destination chain. Interchain accounts or ICS27 is an example of this asymmetrical situation as will the checkers extension tutorial. + + diff --git a/academy/ibc-dev/ibcapp_steps.md b/academy/ibc-dev/ibcapp_steps.md new file mode 100644 index 0000000000..a100564fb4 --- /dev/null +++ b/academy/ibc-dev/ibcapp_steps.md @@ -0,0 +1,423 @@ +# Make a module IBC-enabled + +In this section, you'll build a conceptual SDK blockchain with one module. The first time, a regular module and the second time an IBC module. This will introduce us to what makes a module IBC-enabled. + +## Scaffold a Leaderboard chain + +By now, you are familiar with scaffolding a chain with Ignite CLI (if not, check out the [Create Your Own Chain](insert_link) section). + +Let's scaffold a `leaderboard` chain: + +```bash +ignite scaffold chain github.com/cosmonaut/leaderboard +``` + +This creates a chain with `x/leaderboard` a regular SDK module. + +Next, scaffold another chain (for example in another git branch) but decide to add the `--no-module` flag: + +```bash +ignite scaffold chain github.com/cosmonaut/leaderboard --no-module +``` + +Now we add the `x/leaderboard` module as an IBC module with the `--ibc` flag: + +```bash +ignite scaffold module leaderboard --ibc +``` + +The output you see on the terminal when the module has finished scaffolding already gives a sense of what has to be implemented to create an IBC module: + +```bash +modify app/app.go +modify proto/leaderboard/genesis.proto +create proto/leaderboard/packet.proto +modify testutil/keeper/leaderboard.go +modify x/leaderboard/genesis.go +create x/leaderboard/module_ibc.go +create x/leaderboard/types/events_ibc.go +modify x/leaderboard/types/genesis.go +modify x/leaderboard/types/keys.go +``` + +To have a more detailed view, we can now compare both versions with a git diff. + +## IBC application module requirements + +What does Ignite CLI do behind the scenes when creating an IBC module for us? What do we need to implement if we want to upgrade a regular custom application module to an IBC enabled module? + +The required steps to implement can be found in the [IBC go docs](https://ibc.cosmos.network/main/ibc/apps/apps.html). We find there: + + + +**To have your module interact over IBC you must:** + +- implement the `IBCModule` interface, i.e.: + - channel (opening) handshake callbacks + - channel closing handshake callbacks + - packet callbacks +- bind to a port(s) +- add keeper methods +- define your own packet data and acknowledgement structs as well as how to encode/decode them +- add a route to the IBC router + + + +Now let's take a look at the *git diff* and see if we are able to recognize the steps listed above. + +### Implementing the `IBCModule` interface + +**NOTE:** For a full explanation, please visit the [IBC go docs](https://ibc.cosmos.network/main/ibc/apps/ibcmodule.html). + +The Cosmos SDK expects all IBC modules to implement the [`IBCModule` +interface](https://github.com/cosmos/ibc-go/tree/main/modules/core/05-port/types/module.go). This interface contains all of the callbacks IBC expects modules to implement. This includes callbacks related to: +- channel handshake (`OnChanOpenInit`, `OnChanOpenTry`, `OncChanOpenAck`, `OnChanOpenConfirm`) +- channel closing (`OnChanCloseInit`, `OnChanCloseConfirm`) +- packets (`OnRecvPacket`, `OnAcknowledgementPacket` and `OnTimeoutPacket`). + +Ignite CLI implements this in the file `x/leaderboard/module_ibc.go`. + +//TODO: add collapsible window?? + +Additionally, in the `module.go` file, add the following line (and the corresponding import): + +```diff +var ( + _ module.AppModule = AppModule{} + _ module.AppModuleBasic = AppModuleBasic{} + // Add this line ++ _ porttypes.IBCModule = IBCModule{} +) +``` + +#### Channel handshake version negotiation + +Application modules are expected to verify versioning used during the channel handshake procedure. + +- `OnChanOpenInit` will verify that the relayer-chosen parameters + are valid and perform any custom `INIT` logic. + It may return an error if the chosen parameters are invalid + in which case the handshake is aborted. + If the provided version string is non-empty, `OnChanOpenInit` should return + the version string if valid or an error if the provided version is invalid. + **If the version string is empty, `OnChanOpenInit` is expected to + return a default version string representing the version(s) + it supports.** + If there is no default version string for the application, + it should return an error if the provided version is an empty string. +- `OnChanOpenTry` will verify the relayer-chosen parameters along with the + counterparty-chosen version string and perform custom `TRY` logic. + If the relayer-chosen parameters + are invalid, the callback must return an error to abort the handshake. + If the counterparty-chosen version is not compatible with this module's + supported versions, the callback must return an error to abort the handshake. + If the versions are compatible, the try callback must select the final version + string and return it to core IBC. + `OnChanOpenTry` may also perform custom initialization logic. +- `OnChanOpenAck` will error if the counterparty selected version string + is invalid and abort the handshake. It may also perform custom ACK logic. + +#### Packet callbacks + +The general application packet flow was discussed in [a previous section](https://tutorials.cosmos.network/academy/4-ibc/channels.html#application-packet-flow). + +As a refresher, let's take a look at the diagram: +//TODO insert diagram + +We can now identify the packet callbacks in the packet flow by investigating the `IBCModule` interface. + +##### Sending packets + +Modules **do not send packets through callbacks**, since the modules initiate the action of sending packets to the IBC module, as opposed to other parts of the packet flow where messages sent to the IBC module must trigger execution on the port-bound module through the use of callbacks. Thus, to send a packet a module simply needs to call `SendPacket` on the `IBCChannelKeeper`. + +::: warning +In order to prevent modules from sending packets on channels they do not own, IBC expects modules to pass in the correct channel capability for the packet's source channel. +::: + +##### Receiving packets + +To handle receiving packets, the module must implement the `OnRecvPacket` callback. This gets invoked by the IBC module after the packet has been proved valid and correctly processed by the IBC keepers. Thus, the `OnRecvPacket` callback only needs to worry about making the appropriate state changes given the packet data without worrying about whether the packet is valid or not. + +Modules may return to the IBC handler an acknowledgement which implements the `Acknowledgement` interface. +The IBC handler will then commit this acknowledgement of the packet so that a relayer may relay the acknowledgement back to the sender module. + +The state changes that occurred during this callback will only be written if: + +- the acknowledgement was successful as indicated by the `Success()` function of the acknowledgement +- if the acknowledgement returned is nil indicating that an asynchronous process is occurring + +**NOTE:** Applications which process asynchronous acknowledgements must handle reverting state changes when appropriate. Any state changes that occurred during the `OnRecvPacket` callback will be written for asynchronous acknowledgements. + +In `x/leaderboard/module_ibc.go` scaffolded by Ignite CLI we find `OnRecvPacket`: + +```go +// OnRecvPacket implements the IBCModule interface +func (am AppModule) OnRecvPacket( + ctx sdk.Context, + modulePacket channeltypes.Packet, + relayer sdk.AccAddress, +) ibcexported.Acknowledgement { + var ack channeltypes.Acknowledgement + + // this line is used by starport scaffolding # oracle/packet/module/recv + + var modulePacketData types.LeaderboardPacketData + ... + + // Dispatch packet + switch packet := modulePacketData.Packet.(type) { + // this line is used by starport scaffolding # ibc/packet/module/recv + default: + errMsg := fmt.Sprintf("unrecognized %s packet type: %T", types.ModuleName, packet) + return channeltypes.NewErrorAcknowledgement(errMsg) + } + + // NOTE: acknowledgement will be written synchronously during IBC handler execution. + return ack +} +``` +The *dispatch packet* switch statement is added by Ignite CLI, as it is stated in the docs we strictly speaking only need to decode the packet data (which we'll discuss in a next section) and return the acknowledgement after processing the packet. The structure provided by Ignite CLI is however useful to get us set up, but can be changed according to the preference of the developer. + +As a reminder, the `Acknowledgement` interface: + +```go +// Acknowledgement defines the interface used to return +// acknowledgements in the OnRecvPacket callback. +type Acknowledgement interface { + Success() bool + Acknowledgement() []byte +} +``` + +##### Acknowledging packets + +The last step of the packet flow depends on whether we have a happy path when the packet has been successfully relayed or a timeout when something went wrong. + +After a module writes an acknowledgement, a relayer can relay back the acknowledgement to the sender module. The sender module can +then process the acknowledgement using the `OnAcknowledgementPacket` callback. The contents of the acknowledgement is entirely up to the modules on the channel (just like the packet data); however, it may often contain information on whether the packet was successfully processed along with some additional data that could be useful for remediation if the packet processing failed. + +Since the modules are responsible for agreeing on an encoding/decoding standard for packet data and acknowledgements, IBC will pass in the acknowledgements as `[]byte` to this callback. The callback is responsible for decoding the acknowledgement and processing it. + +In `x/leaderboard/module_ibc.go` scaffolded by Ignite CLI we find `OnAcknowledgementPacket`: + +```go +// OnAcknowledgementPacket implements the IBCModule interface +func (am AppModule) OnAcknowledgementPacket( + ctx sdk.Context, + modulePacket channeltypes.Packet, + acknowledgement []byte, + relayer sdk.AccAddress, +) error { + var ack channeltypes.Acknowledgement + ... //validation + + // this line is used by starport scaffolding # oracle/packet/module/ack + + var modulePacketData types.LeaderboardPacketData + ... //validation + + var eventType string + + // Dispatch packet + switch packet := modulePacketData.Packet.(type) { + // this line is used by starport scaffolding # ibc/packet/module/ack + default: + ... //errMsg + } + + ctx.EventManager().EmitEvent( + sdk.NewEvent( + ... + ), + ) + + switch resp := ack.Response.(type) { + case *channeltypes.Acknowledgement_Result: + ctx.EventManager().EmitEvent( + sdk.NewEvent( + ... + ), + ) + case *channeltypes.Acknowledgement_Error: + ctx.EventManager().EmitEvent( + sdk.NewEvent( + ... + ), + ) + } + + return nil +} +``` +Again, the structure to dispatch the packet with the switch statement as well as the switch statement for the ack (success case or error case) have been structured by Ignite CLI where the [docs](https://ibc.cosmos.network/main/ibc/apps/ibcmodule.html#acknowledging-packets) offer more freedom to the developer to implement decoding and processing of the ack. + + +The events that are being emitted are defined in `x/leaderboard/types/events_ibc.go`. + + +##### Timing out packets + +If the timeout for a packet is reached before the packet is successfully received or the counterparty channel end is closed before the packet is successfully received, then the receiving chain can no longer process it. Thus, the sending chain must process the timeout using `OnTimeoutPacket` to handle this situation. Again the IBC module will verify that the timeout is indeed valid, so our module only needs to implement the state machine logic for what to do once a timeout is reached and the packet can no longer be received. + +In `x/leaderboard/module_ibc.go` scaffolded by Ignite CLI we find `OnAcknowledgementPacket`: + +```go +// OnTimeoutPacket implements the IBCModule interface +func (am AppModule) OnTimeoutPacket( + ctx sdk.Context, + modulePacket channeltypes.Packet, + relayer sdk.AccAddress, +) error { + var modulePacketData types.LeaderboardPacketData + ... // validation + + // Dispatch packet + switch packet := modulePacketData.Packet.(type) { + // this line is used by starport scaffolding # ibc/packet/module/timeout + default: + ... // errMsg + } + + return nil +} +``` + +#### Binding to a port + +Every IBC module binds to a port, with a unique `portID` which denotes the type of application. + + + +Note that `portID` does not refer to a certain numerical ID, like `localhost:8080` with a `portID` 8080. Rather it refers to the application module the port binds. For IBC Modules built with the Cosmos SDK, it defaults to the module's name and for Cosmwasm contracts it defaults to the contract address. + + + +Currently, ports must be bound on app initialization. In order to bind modules to their respective ports on initialization, the following needs to be implemented: + +1. Add port ID to the `GenesisState` proto definition: + + ```diff + @@ proto/leaderboard/genesis.proto + // GenesisState defines the leaderboard module's genesis state. + message GenesisState { + Params params = 1 [(gogoproto.nullable) = false]; + + string port_id = 2; + // this line is used by starport scaffolding # genesis/proto/state + } + ``` +1. Add port ID as a key to the module store in `x/leaderboard/types/keys.go`: + ```diff + @@ const in x/leaderboard/types.go + // MemStoreKey defines the in-memory store key + MemStoreKey = "mem_leaderboard" + + + // Version defines the current version the IBC module supports + + Version = "leaderboard-1" + + + // PortID is the default port id that module binds to + + PortID = "leaderboard" + + ) + + + var ( + + // PortKey defines the key to store the port ID in store + + PortKey = KeyPrefix("leaderboard-port-") + ) + ``` + Note that by default indeed the portID is set to the module name, and the application version is set to `-n` with `n` an incrementing value. + +1. Add port ID to `x/leaderboard/types/genesis.go`: + ```diff + // DefaultGenesisState returns a GenesisState with "transfer" as the default PortID. + func DefaultGenesisState() *GenesisState { + return &GenesisState{ + + PortId: PortID, + // additional k-v fields + } + } + + // Validate performs basic genesis state validation returning an error upon any + // failure. + func (gs GenesisState) Validate() error { + + if err := host.PortIdentifierValidator(gs.PortId); err != nil { + + return err + + } + //addtional validations + + return gs.Params.Validate() + } + ``` +1. Bind the IBC module to the port in `x/leaderboard/genesis.go`: + ```diff + @@ InitGenesis + func InitGenesis(ctx sdk.Context, k keeper.Keeper, genState types.GenesisState) { + // this line is used by starport scaffolding # genesis/module/init + + k.SetPort(ctx, genState.PortId) + + // Only try to bind to port if it is not already bound, since we may already own + + // port capability from capability InitGenesis + + if !k.IsBound(ctx, genState.PortId) { + + // module binds to the port on InitChain + + // and claims the returned capability + + err := k.BindPort(ctx, genState.PortId) + + if err != nil { + + panic("could not claim port capability: " + err.Error()) + + } + } + k.SetParams(ctx, genState.Params) + } + + @@ ExportGenesis + func ExportGenesis(ctx sdk.Context, k keeper.Keeper) *types.GenesisState { + genesis := types.DefaultGenesis() + genesis.Params = k.GetParams(ctx) + + + genesis.PortId = k.GetPort(ctx) + // this line is used by starport scaffolding # genesis/module/export + + return genesis + } + ``` + Where: + + ```go + // IsBound checks if the module is already bound to the desired port + func (k Keeper) IsBound(ctx sdk.Context, portID string) bool { + _, ok := k.scopedKeeper.GetCapability(ctx, host.PortPath(portID)) + return ok + } + + // BindPort defines a wrapper function for the port Keeper's function in + // order to expose it to module's InitGenesis function + func (k Keeper) BindPort(ctx sdk.Context, portID string) error { + cap := k.portKeeper.BindPort(ctx, portID) + return k.ClaimCapability(ctx, cap, host.PortPath(portID)) + } + ``` + + The module binds to the desired port(s) and returns the capabilities. + +#### Keeper + +Previous steps at some points referenced some keeper methods that deal with binding to and getting and setting a port, claiming and authenticating capabilities. These methods need to be added to the keeper. + +For a full overview, check out the [IBC go docs](https://ibc.cosmos.network/main/ibc/apps/keeper.html) and compare with the `x/leaderboard/keeper/keeper.go` file. + +You will notice that Ignite CLI uses a custom `cosmosibckeeper` package you can find [here](https://github.com/ignite/cli/tree/develop/ignite/pkg/cosmosibckeeper). + +#### Routing and app.go + +When looking at `app.go` we see some minor additions, the most prominent of which is adding a route to the `Leaderboard` module on the `IBC Router`. + +```diff + @@ func New in app/app.go + ibcRouter := ibcporttypes.NewRouter() + ibcRouter.AddRoute(ibctransfertypes.ModuleName, transferIBCModule) + ibcRouter.AddRoute(monitoringptypes.ModuleName, monitoringModule) ++ ibcRouter.AddRoute(leaderboardmoduletypes.ModuleName, leaderboardModule) + // this line is used by starport scaffolding # ibc/app/router + app.IBCKeeper.SetRouter(ibcRouter) +``` + +#### Next up + +The step we skipped until now is to define packet and acknowledgement data. In the next section we will first scaffold the packet with Ignite CLI and agains compare the additions with a git diff. + From db866233e548ffba9c3272abac06d062e2a3a9b7 Mon Sep 17 00:00:00 2001 From: Thomas Dekeyser Date: Wed, 17 Aug 2022 22:07:07 +0200 Subject: [PATCH 02/16] add image and fix highlighboxes syntax --- academy/ibc-dev/ibcapp_packet.md | 11 +++++++++-- academy/ibc-dev/ibcapp_steps.md | 16 +++++++++------- academy/ibc-dev/images/packetflow.png | Bin 0 -> 347526 bytes 3 files changed, 18 insertions(+), 9 deletions(-) create mode 100644 academy/ibc-dev/images/packetflow.png diff --git a/academy/ibc-dev/ibcapp_packet.md b/academy/ibc-dev/ibcapp_packet.md index 87cce04b87..230bf14f49 100644 --- a/academy/ibc-dev/ibcapp_packet.md +++ b/academy/ibc-dev/ibcapp_packet.md @@ -109,8 +109,12 @@ When scaffolding an IBC module with Ignite CLI, we already saw the implementatio Additionally for the sending of a packet, a message server has been added that handles a SendPacket message, in this case `MsgSendIbcTopRank`. + + **NOTE**: IBC allows some freedom to the developers how to implement the custom logic, decoding and encoding packets and processing acks. The provided structure is but one example how to tackle this. Therefore it makes sense to focus on the general flow to handle user messages or IBC callbacks rather than the specific implementation by Ignite CLI. + + ### Sending packets To handle a user submitting a message to send an IBC packet, a message server is added to the handler. @@ -258,9 +262,12 @@ func (k Keeper) OnRecvIbcTopRankPacket(ctx sdk.Context, packet channeltypes.Pack return packetAck, nil } ``` + Remember that the `OnRecvPacket` callback writes an acknowledgement as well (we cover the synchronous write ack case). + + ### Acknowledging packets Similarly to the `OnRecvPacket` case before, Ignite CLI already had prepared the structure of the `OnAcknowledgementPacket` with the switch statement. Again scaffolding the packet adds a case to the switch. @@ -329,10 +336,10 @@ Let's summarize what we've accomplished so far: **Note**: even though right now we've enabled the ability to send and receive packets, we've yet to implement application logic that will execute when we do. This is however out of the scope of this section. We invite the reader to follow the checkers blockchain extension tutorial [insert link]. - + Ignite CLI by default when scaffolding a packet, will ensure the chain can act both as the sender or receiver of a packet. This is a symmetrical setup which makes sense for some applications, like ICS20. However, it's also possible to have an asymmetrical setup where one chain will always be the source or destination chain for a given packet, not both. In this case we can update the message server and packet callbacks to error when for example a chain receives a packet, when it' supposed to be exclusively the destination chain. Interchain accounts or ICS27 is an example of this asymmetrical situation as will the checkers extension tutorial. - + diff --git a/academy/ibc-dev/ibcapp_steps.md b/academy/ibc-dev/ibcapp_steps.md index a100564fb4..0dea0be9df 100644 --- a/academy/ibc-dev/ibcapp_steps.md +++ b/academy/ibc-dev/ibcapp_steps.md @@ -48,7 +48,7 @@ What does Ignite CLI do behind the scenes when creating an IBC module for us? Wh The required steps to implement can be found in the [IBC go docs](https://ibc.cosmos.network/main/ibc/apps/apps.html). We find there: - + **To have your module interact over IBC you must:** @@ -61,7 +61,7 @@ The required steps to implement can be found in the [IBC go docs](https://ibc.co - define your own packet data and acknowledgement structs as well as how to encode/decode them - add a route to the IBC router - + Now let's take a look at the *git diff* and see if we are able to recognize the steps listed above. @@ -122,7 +122,7 @@ Application modules are expected to verify versioning used during the channel ha The general application packet flow was discussed in [a previous section](https://tutorials.cosmos.network/academy/4-ibc/channels.html#application-packet-flow). As a refresher, let's take a look at the diagram: -//TODO insert diagram +![packet flow](./images/packetflow.png) We can now identify the packet callbacks in the packet flow by investigating the `IBCModule` interface. @@ -251,9 +251,11 @@ func (am AppModule) OnAcknowledgementPacket( ``` Again, the structure to dispatch the packet with the switch statement as well as the switch statement for the ack (success case or error case) have been structured by Ignite CLI where the [docs](https://ibc.cosmos.network/main/ibc/apps/ibcmodule.html#acknowledging-packets) offer more freedom to the developer to implement decoding and processing of the ack. - + + The events that are being emitted are defined in `x/leaderboard/types/events_ibc.go`. - + + ##### Timing out packets @@ -286,11 +288,11 @@ func (am AppModule) OnTimeoutPacket( Every IBC module binds to a port, with a unique `portID` which denotes the type of application. - + Note that `portID` does not refer to a certain numerical ID, like `localhost:8080` with a `portID` 8080. Rather it refers to the application module the port binds. For IBC Modules built with the Cosmos SDK, it defaults to the module's name and for Cosmwasm contracts it defaults to the contract address. - + Currently, ports must be bound on app initialization. In order to bind modules to their respective ports on initialization, the following needs to be implemented: diff --git a/academy/ibc-dev/images/packetflow.png b/academy/ibc-dev/images/packetflow.png new file mode 100644 index 0000000000000000000000000000000000000000..cba71a87fa131d6dc1ac0d765513ab5e0f76c3ce GIT binary patch literal 347526 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 z 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

fBpJbUS9@e_dQu^|YgE*n2zCT$_8U-+I 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

H*BeoWC7<|G4z>U_PLh%*AUO5^&uMo8U9kXB% zc}bKy=t5J{v~xu$xsFa;Ey$PP&ggyDsj?UpbHEphf_kKc8Lst2x|l*3vg)6F-LHw5 zh8hkB5gSAmqJl=-C|14pLh~+RH#@HacLx2lhZnz?51A4JAO^KmncS#yE|n8v?IbHV zXktbhL&;UtRpHdRac8&Fzay4mkH(uz7WN@*Ta1VFaocaETxk&Fg0%I*0w4Ac z%?Gq=qE+5~shj#2(b{~c3#JdP#N`X>>Wzn)&mi7HcPN3%0#G|u*`~>TXX2h zp)^v`<8@!5SdDdHR#_sfGjfZHPwIA$)&gbYRS^T*-m0bsZ-gQ)_J}oY4t@D1ns2sv zsC$E6w-t(W@fe|X2&yeVhw!pwqFRY+N-n$38oWn_9Ckv8Xpq{r%$AI!ikQ0IE5(vF zYrdrlsa3_>aoY-+)dL>*Rcgv%N8q^tsQp~tm&yC>oq@}7S7@v@5f1y;hX;%+0q-@U zx4D$CbcC7PkZh|!jE?Q*(KcN=DhP(@MYVDTOP}X`iTnLBzA%3L?XX#5|A^&FywtKy0A%-%A3>FK zoT8v*m=vwx1Mw}|X5U_}$M4nacpzC*Orb?&F74E5u zNzO>CdnhcIhnE&kGj!7&rrb$|e!vaDVp5q0Waq!B%IKYG`R}ZSGflfb_=0xrx{c!1 zI^Flu$C#lNgA-d<3+3wdk=uln-sBNp<8CeXt1+ql9BnDS9kP;AQcPRe4szVE$bD45 zAiw7dE`-V$x6~s6F}4XWBFWKO8(3L|zl;VyT=F%wRBo<0IZUe$bh+7lc*&-^Z?8v{ zmLVj&tz^dZh@Y>3N7IDuP0&H4p1rjd^T6pu`bnGLzQ($r5=OS2pPWn-=W;q&@-?j8 zUc{iXRG%h>RtRgU8}8O;Oo{1fQGy|Oz{DLz)*qO{)~tUv;%cs>J$o8n`I|jZU7CE^ z?4zu^oR@0}&26IU+T%CA)3k|q6S4Ux7r*n_{`y>T^Iz{#=&9gs1d|x{NALiNhdxX{ zwi{01lvA;7cSAo>mQYlPi+&Jz$zAX{dW>0NvjRj)NZah!v#GDZB<}H`)G2|M%5R(}Xzm&8h%nLBEyNTiY)0r;;ib)e~vG zw(WwgS@mgxew2T+#>rv4%9p2Jj6vRW9xe;dp23JX>x`0CpD%rwj+t?{Vlr3W3M#jP z^)LfGSX{k=D6(Y8db3s>w*EIe4gE0fGton|k%8R2&L;1R@b3IBd9x&anZr&;J)1Lv zVK1?Mth&GPi0PPD+oDxspSH5)gI}-S!cRr4wudI0U;19o1XWQMhmi_(!R5#G_l-f5 zxmGHKG4LPJwf!|{S};x+v4b~Nrt7_ZvI!6GM#IImZXCYcD!hmJ4uvdUa`f8=GJz!(ek zvXtI8i)IfU=h%wbY#+<29p;lqIjrfnq-if3*(Y&07Sl8tCdCZNOe8T99FBMkOWM(B z7ouMnEORNCwsbPPK6B8*`&e!%Kg!&BFyGqx(CcA&zbs;QsLh&{$rrdjt{;f@r6`~B zJ*-$_?KuA)=9K7f@(b=&`kB*F30vX2>P8d+&JJ9c)$Wf(0R42^`({^oP;B?Ocj`PiVxfFOc zV7|8E(9J!25%ptu=Ac=wzVU~b^bjJTwb96>XlOR>{vYG3Y$^mFl6q@sZ;gpO5IFv3 z|FBR+A$D)fPJ7^<->3Yzp-+`fTw*xth_;vE;$2z6^ygf!AqS$VTABErOqm_ie+Lm~ zj-aHIHCHEd8d}_CneRi#eG(e&B0yqjbEM0#R7eA`ub;fA3J$@dsOi~_(5K`0>uFDS zHoQ!|vS)P)7bUts#|K^HO%~6ie)KsNV81~ZtJN^oM_n(6Kv^q}%oH|m?C1C`kaT}9=z45VaDiMX@se}Rrd)$zMkWMKjL zQ^ylO{-7p9GZqU&f~sPd+m$=~E5_;{rjsTm91jIcBSmWN{xd4glVjMA^Tz9Ha^%;9 zl_1x&fF`q&`;%8OY9Vr`W0`j2>3p9U?2P{$F|JHoJP4aGmySiV#`S!kI7~9P6m?UT zjBS1@5}iH$IZ8wRSfigAODqalUZtz=#Hy}nZq$(`$XwPm^KmTCO4IkXt%_Aiu>SF&O}>}^;?GEZfh}l! z1Ip|6`3?;aL&uSy@x=`^PbSVXXsN5JHJBkIOkyTsq&XP>L7ocZwL7|ba_Z!*@dlc> zU|JxNn+G^Xw^tDJ$;iP*?_=>p$U*4(VK>?rVGMXtw=?uU689u_j zV~ywOju)Y23C;@UMa06!s`)LlG8!ZKfJzMp4!jT)fg1LbE(_%T2hE-#p)sXVUh!tV zQQI%5TiyxZIZn#mEYT+3p5%9NH!@aV*B71OoTz@&pU&(LR{m^u7wj#7fCMEJaTcr1 zT}iMVrvHBV@dc~wvAxWj{jv{il;Czz{tL$+65A5~X@K|rhLEPeqLl|;33SAMA0r;( z)`Vjm%;1b6X!Gr(>+s?{_61N0hL2OdceCCB#chOXioOSOk!@b#7O39Iap?p%kSqm% zidduD?634mQnxGWmL0LH=k2kSeUa4q5s7|}4ol6=XM8acoEBQN1u%+mCdIRzq(~Yr z&|#6O4S<+5cP;*@e!Jt8_Hq%w2VSX#(E=c=Rr1UZg>LJiUV2Y>k?LGJXI!k!8y+~w z>a!!b*=*d@z3ShEZMp-R5-kj^Sk~0|EK^^fhundsi? zQfDdMCPU^~co*!!jdzA=*@CZAc<4&q^>n-!pTYjfMZ?CC=9f=QoVf>Vq@sUlUa^$5 zb(;P$VKkOqx76K`$U3N@MAF6V{%xG}&7r3?I04AwvE=CGzhSpMtfU%vGwbs5VV1Xe zl%vsAG9ZHkD4C0I)c#V;1p**I+{$|suSyrwf786_X9q5cm?<>8RkO@S-`@qJB}t~a zH3E;k?;g}y^t7Uv%IKMXH(?xnkVhO7lE>s4G&9{DQBqeVZCB6Zs?Q7@UUU(tjfe<_ zoMzqSix79TzL5Pa9^+D9zF$H4GY>`a;X*oSptZBemCx3`BXa~T@e>~hi6;EhDF;(> z_xMUdsp!*TunxyxO+o*{oZtj7>3n=Y7$hT*!nOjtqZJ;<*Z|-;Tt7msa8NF zRg!YU7dJ|#E*7PF<6TC=f0IJiJ#G^4J)3J;m`FTAvKe(X@Z9%Kk5Fu4`X3u2t;0IR zHpL70=G!8_;$FQ@U7^ySE99(ZM<-tb_J^<+tVc>OzHMg2xq<3DDEkP{-|0`b^%hm~^7VsyCjT(T0~%6*Uz0 z3sg+8wuh`1yTJSKDIbl&KfL~qNmrjRJ3mU?%(JZR~E_}ZOv)NCGtIQhV>8j zWB*OgT7Q1UQ-Bq?%HkpL%)TH8VB|Y$kxHp%O3OGDB^r+6K;7+qgfv$rbqALh6dimT z8d`AjEc$oI@C<|bTuKUFn)1k4^0JQ($ud$)|1n4&*G8c=-C}JzeK{)Pj%sD3|+ro(5$YPcQTg?3+>7 zPU>~}TYOb7JepMhdNcZnBk+gYYd?{G*-u{4oSq*QY_omggT7Q6HUZf2gZ~777)?!4@9^P&1)RpB7nuRxN$q~RN4pN z)UF85F;qqze2e`JwT?e}{@ZiR>tZ5Q-{ErBlT*})_Ydhy2gn` zrDll-PwGHUwVDxKq3=Onzx}8u=u3Qr=XVJ<@otXn80WwFF@8^}i2eN2A+X{5OYSUf zN{frFkB_Cw>|QthI$jc7*A&$d2EnH@^`u?{x`Lrg4xu3N3ege~Pa(Z#XwOWVFHzW1 z>7VZ3Z*faZx&x$MH~G|c`G0v`8yFLDd=m0V5DR}BmL*qF`fYpCIGz#jbo!aC=XDl5 zx^}$yeh&}FM|q}!KdKF_bDkUFnH1S5ZGDqAMtJ&R?l_*Mi9asI!G=0mJanduKKDqC zwP)(L+s6Pb)uR~ZRx$Xi;R4{MxB0=WWM|jlw@7(Iy!~ZD@+oJJtOJiLTs#+^L$(@B z+PQ)@jbkqzIvpC!@Q))v-RC0EX@k$#<@`Ae`G(;o3hm7Q99!0HlmyIwZ69TIZa?Ma z;|M*|swCM;lc7_y#Exg})xsD=pbC7c3e>XI>pLapLI|Rz&1HB6QCpB_9MEU zMX_t2#wp2i2Q+m-xZ$tsOi`L$OAa;&G_4n-B!;vK`PE$IMuxneZxAp|{jmTpykKjA zCboXUoEltN#Eh?apfm!A=p>p^i$1g|%xf~(KSbk*Yc$qVOoz;nHI9?kN(gF>@cU~k zp`qrgdUpn;Xqf&aP1kW*L~qasc6aW}OC@J@VR-@PyrN%)PK^@C@pQJ%J7wWx*mT0{ zFZ$#3hu9&^4Y!%J3%>k@V-I0>G=vP?HFb#O2_*rm=N|P9HWsLE#Y+QkL9aO- z@`d;xyDlNb7C7Hw*1q-@hqD=gh7+s%-)wEMOD;^Ay+@vj5fXIU#p;XFUNbA6)=MS# z=WZQozFNs6K>f=UKI&iz8wN5e8M=PUGA5Mqav(DmQyrmi2A0VE^Y9sN1U9bl-S!MU zkpXdppj|cKbdq^9(l7F*kmD1!lt$H`a}Elay!O8tA)D5ZjI3TBMrRzG8kU0GQ(e#s z3f8tsUhqQE@^{ONIk>%JZCxw_o!&r?ijbj;?XOtCN)O0xwaLQ@UE_u4*pce1lC!q_k1E9{GYyLhtcs- zW+1C1UI5#2w%LVxG_| zyu&UBe{;%C(t}ONGii<*O^Wky%@$7MX9;lLusD2{UQ2>V;oVRhR{pI+pWmSG+&oHQ9e(+V;r*Phv2f41#AHc2vhs znHQ27399GBe@x|zW4F=5trj|)?bZT{Ob!X4RV{~VEecQi+gob;bPUi>A4TR*IbZqZIt?8mRQ4LM1E z8)U%rws4!v$iEyPR@I;S(>IM}m>VT=Uc?AX%7==1*Q@W5ipoD0@o0Litts1ixyDA_ zFwi>AcK0>N1%Y5k-DLF6unMi4^_#b9VF(is-}|Z;9D%N;8W!(VkcU2|oc2hk6k^Im z!pKin@^>a>fWFDvPY0cpd{yV|oCa2xMti5y-h%I28gQ+nNpiAV@n_D+-u1Xb%U-2r~=0LP2B3-yNln;rat=QHKO)) z-{LO{QO!mRZ+U^HQtD88lZ4R1f%!Q`Snel++OMz7dq;4^QY1wl4Eu3x6TH2O#$J_6 zZ`hnJpOsictMNWHhadmCdsKIb&%9Qx6KB~(d{TmLn)~c?c+BaB0obZuR%p@C=+ZPz zv%5)30Ch?sSdD8Osu$EwtsLMZ63{@m0<|QGVwa(UZ{>Pj%i)@^rUQ~{_&3^6^ZZ&T z#*&h^lI3%(=laVbrhpk^TzlfkPGPK{6vjvIv*W5?z_X0d+}pWJ?FHFw>2k`RTVIkC z98_VyRubIdeHn(taQoP3SVS>)`uPP;QQRk$;#9!+o&ASfsSGVryNy1&s(;$8zJrjK z2%{AgV&;X-{NCL+h`bM+Ch;VLrHY1s9036^86qf$rGxMJhf92XgTMJ3F*B{2`ANhF z%6la#t%!UJiM$Z!4u~22dN1_hruaG1^R1KsiC{Jf=y~4roW(2c=Q=cR-|_}1jJuz+ z<@|QA899IYvXjmvSH;;hb}cEJX(Im4BdwgiU4=lwZj6}?*y^Ho6voh0F0okmaB4X+ zL9jz~0PMBlbG>kkQe#Y-{vUs-F{xt)3iJs?yu$cen3moOYg?(Hk%J>kvZXz)fOVk-j2$4nabaOQ z-QH34m6}$j;KJHHs74cY=jlKV3+4}L%<@YlofR7n1qrC_C4(c!J_0mIx!RC;3Oz?MT5# ze4?I5i!aPVrlQY)yhl8=zfFn>v_n%c6X&il>mAZhz6HGif@7&Z&=Zp@)-(Ftm*U_5 zUQ-Tq!fj5g2o|$ei&~$-nq~2d5dqd+_pbbPR-0v!>HuuF(|g62uit)!0?N(oTi!;m zgh1u;Zw=xZWAsl@qmNp7zpNA%vt#vb1;_od#H70c+_=Am6j+;Kysxwg!c zWER&080vyJYklVurE-BTFIdv@qwgz5JujTY4UGx@Jx-`rFkb08``p%PAus7yqk``= zJG1!ngHc{d@Xq4Tl-pgrrlPMmUH-4be^qPN-TnHpJ{H!kWq13Y@R*U{)Vry!E~aj? zNOaLbs*1Ogdkk`u^@H|!d#lFln*PR+kR@)i(mKGm;8w4% z=ZGs{Fdc*L$&zv#s*sdPdhLQ!SSJn4(=^sxJ>v4$Gc6>{M&FPL>t0PW+NRLBW=igO zSUUBO95LU%i3)U7kQwSk)hfpyybG7G% ze>uDO!#DmP=h)Hih=oe2O$Em~xF zZsYa7klp?@4^(o1Q)VLK6BO=a!UyCLz(G`4lfcDL`!H6ISASASz+_TU7EdnSc!w-+k${x%Zw~KNix^ zwsXr_9ZbC*Uie&fPyMQSaqKK%in;Yv2-L>FgH47HP=S%jCQV!HmEXg2V1Sjv$B}o3E(u5_7Od6V@wNNRV)wBIwlM_H` zyyH2|>J4C1+DL3O@^ppOGsI`{^#eBL}t|{>mqGPVG?Vo=wuwtAYW! zc8#b|^&r|p7{d_Pk(TuyMhZHRMbgE)^lo#f*;OeYU>ebK1a*A*%%_OZdRi@QmvqQW z8yuOHsEBMdCF}6e%pF@(#96Z^udz97n_sVDA^?NU*A^(Fy^gD)ujv`^+zzE=_l-WA zsXJcM>%``7E;Ig^4qIrQZ;bDC1!(kVb;XFzl9@}9!>=MjI6tizuE42y+P+_hB5C(W zEYBQ^Oix9vhNj0YGmLe`ojf8&>8( zzUT33w70WL37fN*z;AS83>RbDs0FcIs~NxAI^N7=U1SXiTroQ1@$bkGzFgpn+l%X& zs)}1GAvvkAhSu_GZ2A{hesDaw+bw<7LFOkN2bx={3n104Gcuv$sr_t%8QK=#(mroC z=-D#Hn7os4FF4pxe~V|)G!6KB^3h^AK<`|NqCeJBi>@`QV!=)5Gb&K z207V1oeWlZNDr1N(v6azj50n~kQ~Uq`ieifA~bgsZxpYF_)uZ#15P$dPB~Nry?JP7 zB8uF*OY78SkrZq)ur`mPEdz9Pg_gN&Wm;-6!@N^BU*FT+7K$6D^3lR7Po&BkYy>)xvhamE_#iV|I_>F{&&cJ?SgP3-fe%F`R` zh8?@Vqg1{T(kw!kUQs8-bUKlFJ7U*8O}-l%5Z%3^5$?JDt5O8n-161RzZE>0F|UU{ zA8B>JxOz4$YpqT#v!vLEgkz6K|L^n%czf}M^3zlr$0`&d?;pRIES z9fISMi5^IJOoxYsypfkG($GsD!~X^Ih(7@wsaIzi9VcG-7@h@aIJ&8@V}%@-L}0hH zQ>QS=*mJ)yKZ|}{2a}OnUxqmeE{Bbo6uI@@ z%abs54@O5FRBFjIA^GSK{RJ+joKx-%O&oD&d^Gt?&zK7zoDc>h+B6fju#o6=>o{Ki zp>5ahm*&xS$(m`U29-RLkR+#P{#5Uudt2AhTvilS=B>sjR=aP%rGgR=XL@TNrB*kZnZI1J(9FhOlTM>Tn7z7T4dMitw16H{W=hb) z^Vj_HIONr^p@7tA=P|3l3Nj;G+I!4L1z0}pdv^m73Z$+}k}5Hlz&VQDsa@_xwpg|B zn3ge!_2hmANAQy1%VbK+9tdRJTtU7^Cfh3$^i6Hk=$-IKtGO6UaH?J+O5b10pzbvy z8#%IuFp5q`-wT;5?pu^qf_5=gR+6#gTkdPBwo`=D(&rdyUw zHS@iTVrpkLOL~Bu04A|+8Wr(#27mK{@J43}{rdX7svhPHe`((s6Z#?A|No-aral&T zygh>YhxqgC_X>z3>Tgp|wah_aXZq4xyPPy4H>h)`p8<75orX?$)>b9LL162u#lqIz zrk0A{B?rsKEA!B6uC5F;=lIw}C8UdqBOI`_nAPFO7}PTV(3$8y_Tt(gUsn;sJuMPu z8msKJ>!drAMJ*B6pGt@imUwh~P5IQ)sY)E~GgNE?sdp|rsh~v0rLGKXVuo6jj8@M5 z9P!XnxMtC^TXHDMaq=^uQ<|Yi7ODU|K)tiMkvsQo?1G!j-`Da{9Fr(0{>xJ8Kx>w~ zj4f?+5uxhXM3i>Eu&QO~Op}zLXRtS@y-W+c)BBrZVVO4et37oRvs@v&lc&+Jx#k3K z>EE_BRvm#BpC?}J|KaT~VvxJ+l=4EFaRCbu?ZRuJK^y3f8{rWvbLLIuuyycu(H^xb^9oa-vwg(hSJp5?gN;Y|PO2t6}UcqaC4w%QAB zsMe54m-+sEHV=Nsd})+Ub0W=C^JKk#zsojlxlzvI^V2xM?@2Dj(B~cx^rGW@qg{xc z-uY#vQ8%w^61Nj7xdE~t-@yXyVhPJ44*zj6FyGkf8Dm^Nm9dR+CB*N`y`_1s!+Zt2PgfnoQy_;OAVhN{ zDiRG-()3w}|JB+&n_6`Scg#IPN(yhDuPhjhn~rZrTeit^rM*k>Q!Gc9lm8L>7$nR) z^(lFrs!63j0(QOIfuI2xHMOTV#rS>W&w^1!3e$rro9ut`NmBgloPF+VrAc4Z16*Yf z9zG$CGIcbW`_UYO-AJDvBA}h9MT+b$WlJ3T#&$LhQ7~fATyc`;xerI#o4y(@yf9t~wVc@sqsgAggv7k2Y+)avXIxCwCTDOb$|x zhS`CIz)CxQB=q(qU}ybJGMP_#ehF6hd~f2_IQm)Scn(gIa`=#>Vf)r6&}A7-#dJxGHMpiBQlZSmdOEbse%F^{kEPG7rS=VL6xxAzFtv zy|KWjpqX7WxE2IF`>dC>*1W%v2=j++Jb>CylS~{&m{`?bGLKDB5B4(G^Y*CXY(W9k zuQ$+@_8E#Qaxh0cD3oS=f;pInNeEX7m_sm0?e4c&i|$^{*Pu89yF3TUelCcN8z|1zAzW_4}<^gVL&R_Jp)N}tS@ z;`5}5+#!BR&J+7hvN=$*&TBm`V8R<$i-J}}xDm$00Bo`A$ZxgOBL(HrQJ(l~g}@z* zvBWDQ?x13J{Q>^_^IK0sPdY-(>%>4n%&Tm#p8Cj?Y~YNpUsfu zg@r%ql4Jtpc!W9m-QyIz2FJ$4TXfH`$ta{=y^bPJB_4MKw7&a-<9%;ML+oUZj1FEMxcLulc(Jqx?68e` z6t1g7VV#McVV=MjY&o;uejX9&Z=2~I*x03WZHv+}>^RvT0Jx#@oYAHNX6q$1K(I+f zDLBS~b`R9=$z*xDZlkAS^@);3v6tf7fQC~OR-<{%-r}T;0i2 zHG%q@S}CL?n}8<7RirkEC0S!IdBk$4Z~cB$%E2J{%LVUv?;XShI^Vwi2D#EWc>T}& z?vnoYI;6vgv#xMd2Hf;|thEzxy??|^gl2Bb5<~JN0s+_mvJ4SwIptA-u8;N{=t!

U|6o&2=xTyr)JmC?sbchwXB_nZw#AmOR+tlQ}>O*yvFrZkvw zD_G+^Rw9%;JYQzO1*BjWd}#t2vCj@zs~qpjAzCuA;q`cYtJdihq}ofQ7lo1zRvwI` zBj~t`lqwA1{3p4fxP)HPrrTU!BA{LK<=HJvG_&`ZW?Q%ehp|n>v27w7P9p|Or^Ox` z$+K7Rol}#+7Oa(rpM^GdQ(+60#7Oki79K~?GrYb4ySG0cCtgN_N% zG&YTOKTQ(5nAKolB-|J+y#N`H zL9svy*=V~X?vjwHS5w9e^SA)CJ)+qYNNt!}&r&bRbe-ssAhY=cwL{S~tAe>Kdf&L4 z`Gj&!=hyG!?$O6+@n^{HJ)WUqA_XqJ^B(F=NLn08N*ROb)t2T(wVAIBQDFsXHTs~P zP@OO0RjHR9pV75#C!}6C4!eFUC%mF@Bx?G>92KE`FZ3@%0b$Z;z!&skbKle>8)e=Ag*{Tju{m5pD@^JqIo~d;5T8=W`xbtE z@uQAesOCzVrA!?MO#-fyVQI8#OsUmtV;u0A6ln}*B0k`kgLt?^j#-UaK(F1Csz>A|#uW9F>L0Cd0b&T=Q9c-`cW z`=>1nASqSZ0th5vE+sn;eaRBN&G>Ns5RX4R;M_)B%eNw!`OmR#U(6R@%uZ(8%r#e0 z8^p$z*SncKv<@b92|O>9rGbZN*&&w737s|bm1X+5UdtM&Svz2a6_w*yx84i$hS~Na~wncP{cKLH`gS&%soyHGzuL*5>v%cFeJkB*ZDE>5g;VZlkQfG=D%$=sQ^;O){pZlF*o8o`@}c%4@@k| z5(wb1+{UxyDYS_VwqTKzh8%xWyCHLeWiX9xtWJxd3z?AJR_cr{h=k6&KY6szW!DZT zJkCUSeh0rj(@$*A=2x1%72N+NzA;w8Gq+WNJ$|E+NhFoA*Q2vyAshQ(hOn!R*PX~1 zCyf9p{pYqPLbR@W-Z3iCl6Y-*66k>v;H2InZJX*IO9NDQno z(5wA%w(vGJl3-fD){E-&~%By$~1dg8R zy3);>AsKhR=c^uJHwG7VI|2i9rR4jBaWa_Ylb`n`>!X?(QMp&kbVi#`U&{2 z&hK2vZrj@8hVtQ zn(J7`td-W;{jUYPOyWfE+wH(+exo%y??^2Vg*r)# zlMJ#@(kFGXEQ(zTujz@HD`Xd zk2rnf{_ZRvYk`;NFB8=4K-Z-|-9>3|ps5*A5@}~r+~f;QrT0gRh!s2jTq5EB-m9iE z{oQ~OIqroA-KXY z;kilGY8c9?UZpF0_MOc9dA-6_eHTBc(FfkUt*Od4*mj12rC_6(+N$P5iM z#OOPD*EHI#iPL|}IAIYP64j`bX(rP~H1!Q~A$Sb%o^;aphCs9LB3zzQOJd>Er z0&Bq4<)K(Kye|!3n(HXnRP4o97w|{UJ%jh{bw1HiNX8A@x6o2>?9*Sn&z@h0%U@l( zn7Jl{_~C!{Zxz*M7jBK#@#0e4U5XVCR*DrU#We*=f#U9= zxI=L$R@_N(Pl~&{rnp1!03n=w`;2`q&VTV=FvlHRUJ!;*e8JFT1lO+&DJwcC3dd^D59c^=M)+CmEm+|6<= zLz4AdnZ`nOe1qkh4~U^9stAhkIqyS(uWOIKG7A&C9KSA{-S(=W!9Ldwi5nS2BMckl zj2WGQTW?Po+bdJOpnjwQqO;&9rl5(tlD(S=MtGxSqjK{#O&NkYs7ljv3BNzdk zE)V4Fs)TkTt1?vt&OM(_`9|5Sn}u6c$KTNP?KeTfx~1=*@zMoQFTT$$W7jTa%)VcI z)ZSsk+P%8)$>}qD(3Y?>+v4m)YtP~O-A_~apN#)J1pMQzduS>INDkq~Lyx_9b5a|l z4)GP*S$#|64Bzim!(>3m*)GJ)-y_RqXj&sCq66fyfXX<_^r?`E>>3QwRHep>_xFJ5 z@gul+$(~2op|Pj}CReO{BEAi6^V>Q94~=hKdT2@{=|rl8$^M{=7+axwS-Ozd*{?t6 z2Y#6@&vMqnv|7(wPE1Co%#J^Z6irNiE@d3?++G(&FuZc}mdK^T%jeto>r^wA1b-iDy~oztWoZa4 zw6n`P5g3>{k3jz_D9C0uzCvvQz76oaPm6 z>u<~dU9BbLGG&Mx3^+M(Rfkp!(S%loTkw}Y$5PjZ-FqlXC9NP_lX$zxHBbBan6 zZFN0%o5@cqd_AXIdl!>~EF7)PVvQ|IH4-2OZ6qJNRtSzm z?n~zn7)#eO-n8SKllByL^e~YyWNdls`mcKUdw!$KW?$EyiS_HMGdy`rSaf7I`<~d@ zw7^|-ChxGjQ3B>pX&uaeQE?T*wKCn=+Y2M_I+PQyhW}mfj}@k@x$ZdTG7#dMZ?RfH z{(Nf$$&#I6w&QCrb#`{o+>Q3wDrNc8&~CoTPzXPdr|J=9iS>MG>>Zj7IVvp(XsRhT zx^$u>oc8(nG5q)D8m=yCO>_<^ZIS%ZsegYaa^cmvWV19L+>T8y#BFO5@wGtfLHk}Usv!n0PJeNya$#!IwjD5u z?%VS!Z8(Rf4Zz}f!jSYKdlYc?h+7}+{~`{9WWcyd(|!Mq@^`KG{2ArV zOC9g>T#s2od9{mi=G0P=JXK4DlLF*c*+qPv`bg@fUk<-NL};0vNxXA|n!+J<4Wi?Chq~bd6aAd^kAVL%GgupOR01;_BG*1IB5{wvPk3-+%93Xu zvg2bm_dWAP-3OhVRWQTt52w8ly1~h8yvpbXcV;EqMQ_I9kB3dp9pRm`**3+q>0o|p zC{dwhbXZ`UZV8<39VPJ2lmh$Tm7rO*=}|#=@2P#XS2Wm@H+(cD-rT5m->K=sNH5>Z ztEg^bsg*v`)k1bm+_TyM`3j?Y*7A`1r7Ggi01;O-juir?R?gSIOf=A`MRYjn_FiaU zz$e39lMxSHj+TEOrSNvg%9M(5ZP%O%f235nt+=St5^6b|EQ8H%)_(lt`vQB4ceB(TS%Ecca16n!=S8y**%pG!HHLP~%R$!i+D@(X}WaB2~fx*r= zMM2T^DbVk2oYh*~zkeLJbIGn zOY`J^F4dWEJ9|wi$Dn)7uUMQ-mWs?K<0M%^!H@B8&~=Kx+a{Ff%1kd9g24A)WU<3B z?tP1NAzsle_#1kJae6@Pe0SBj6P)%tRb^w4_(z_J^I{hJW_iWsYwn#@D-d$NV6i8Z zA}y^KtVg@hCfhe!O4??g*wORS=Bq1Z`97=LQO2tin?#2lZOk(|;k@-Ei)4g7icenY zG?spzG$`j&V4(_6C>96d(yv0ZFDD`yHP`2sOLOxZdOyxHpH~YE{Wivx^KTgJK5z3O zgO+HaXelt)Gdm8YpLdoXn(kGd%1Jdvw|wSm{G%0ZSc_0FsL<-DoM1$^mp-7B(IL?v z1WT>h7Z6h5kMzIPjwnfc^J57|-_#-FPOHjQz!9&XW38 zWB`peu$(?*IG(}Bc3#}mcO4kmb}wW-WQw-n`FwF^@Ql(;h*)ufjS+Sg{+rWZ897h- zZbGECpBw3=_JSjJV6+@%k6XUa2il1?m&oK+$5^6as>DvmM;NM)MKkrQtSb6TAdFv3cjJ=7z^M;;u2Q+zV zAX;BfbXI8Uv=uVhsQUYXz81`-g!?hKM9 zd5c|Wu0j7^-SrFqN3hv6B1%St?o%fJ>?dmte}*`mH$;SLVfCD1RJ(FRFyl;dT9OY1 zHg1l&2;(k03Iroha~(Vq>RlrdcsDuZGguBSoGOd0Ggbc0Jbv3%N|>;UNGZU!^WFQr zpLuhTJQ-CrLMR4IXa6R`6P6~=jBVEvRx|1f$Wh-AaVhJskI^1c+IC6zSCz>) z_jIw{YAwvgRblbt>-AKRg0t-T+2%%HcGOxNGAjc!fTSK9TxZ*8WPSjNAcJHNc-!h^0!&38UGYkCahsK} z(fEpcQ-VxLR?$}1P`uUtxXb+ry1*s32jhduFYHIUguaVBMcy##U$iNIH)y<^=HPx1 zvTGXW##~2_TqLBk6bH|c33jSzYo6BwwmRa>`L93XV#$4CKk-mI5xypfmlAR~I&DMO z{7vb%LL%k|C-F#_{25atnM#wE&?jqypq2YaoJ*OR zhCap+u*Zp-vaN0cQ8uf{c*Cp3^z*Ro4aIYvFt(V5@F|mtOs`wEl&5uBh=yxTwsS33 z-;M}a=fkUg)rlH3UMfxQ+BZ4$BQz**)$G7OkO2B3Uy?P%alDDD-4d*P7k7eHu$jk9 z_7Inc&+Krf!%8cMxRzSlQvN3QS&!I6BoW^!@o{B?=lL%EnXkC}kg!ws4bH{i+*HhW zYz;VbT}y%`5Cslb02x`2-AvuolxIY1;;o>TZT%7TW_ z^ZYAz4|6A5btN(_jFuRyro{^`;A~)AZWa&MyUFBDdC|C$65My?D^kSqw37(ZrV$1o zY135sH|6zaBk(>#0RsdY@mg$u>|h!N zZ^T?b?DHz8I*t{Y&+6r40FCEjnJ=4o+coFO3<3%7uWdv@#@&k-<+ts|>ZYyv8;1c@ zeI0Zo>wQ<=D%Z6krx^}-U?@#b2JN&-`%e*^M%0h&%zrV1YqpfA%d-zF9W3(FT@1CU z=+gPq_KQz1eAUCUI@})mgqajY^{;xrlc@Zyfe`TGV!-ci+3$!bwX9AWS$j?=Q3SMx z*}toAc%n_o_-^|4!bQT%+IiH}6E}mb$tozbrB)(ep5>s}bLsFmZjPGQH@wXj(gg>c zwY0D?`WbcDKm|QRdao)DxLH<{qqxbDctkNNCJ<$V)Z*uL#ESyCBX>sy1rAQ$Hy-+0rb>TDBN|0Va z=?{e_5(<<8$mw65QIpwme5y@j@e9`|Z$_9CbhGvP zdw6H^nSA*Dc70QdGY%C`A$~giSuW@&4tJ*vW;iOF0r%u}hVQ<>;UE?PbUO~a7RKzn z`*C0m`QzI>If>?^0|9igntpXzq@Baw=(2X;D3;Ol?MG$I-e4~{Q>04Y?^kZ29P1U- z0xOKZ37>vmcJI@J9xDB?)-zYnNa^Wo;Qsf%6Jw{>Ws!?=$hkONzOZwfobzGfWWe@8 zx68TvH4(J4G|s!&)=CcH(}zAjiW=XQ@Jnavo-M*|4pbR-nXHO+syn{w!+D!UHWT~N zV8uOO@ff+!rl-cf8MLiSC(4@tt+@X>gdh1adC2X$!+^EFx0RDL^eJ9THGQp#8K z^QiNNCs6q$n=LNG4BaU%MVhx|Gp?~;Jmlax>gaDANRI9t$w#N;d8oa0zU3q$5g#dcAH~-FZ_x?O7AbsqMGW4WRLUbXfIm2 z325=#5v+Dy3p}Axkw%Fhjg<)AAXJ%K3s< znit2XQ=j(G`(j0``qb~mF`kI%1MauS=YqH+fX>!Rp%X!i#n<44bp#xnT%Ej2W%K8j z{4WgN7Jov)z|He;p&SFf!jtVmeZ zLd(cE5!?4@DxD@78z075Y_{5U2VS&`#~t~r=Sp8m`)AoR14K6s?1<%%J`D*H?OKky zZC;Ia8i4kVOY{gC=hk6*)nTUB$^gInV7&)+?D|d+_robLu$baRL8li{tg0i7GOih8 z5im5fq-A0wd71ixk4B55SEaXS+wK-U!j)Uvo1n|nrp{)4xIIMFwV6Rt@pB2s`e9{o zWr4G_sM0U@%#7A8QZh{Rb47yOLC7w$Mus2*FvM+GZ8Ght!aE*Xn-=v z#bq|CJ$vnML{uK(Y`|-RO&&(ys?8-9?|X3u??}Z^bJrva#THA8;V)9BQPXu}EB5vc z{ZVt3$7JF;f`De{lpf; zS*T04-(+rgTIb@1V_E&J(8qqPex9zek_U%9HzM2DgPE=`4Jx=YQP0OfE)p}=n0b;2 zU|`lE=5F8@+DmJg$f>tfw`svR`A7jluKRZ_1*1Aqfco=_a(-Eaur%*TG4!~8g@a}{FK+X?XALrY#7E4A1#rJF5msRSuhB0 zD}g(o-GsuUB$2NA9P4I21ZL+?B|Ckh-_qQweo%7xKw=ORXHDT`&%;F!+QqwD?xL&{M%2{s8=0}HE^Bh ztOf-c)n7;L#b;2{m{4R%7cvhMqlH@;a4x^^PB_^Q&=HEUQ_Y=W(nux=*g6Apb7Zj- zYvtbFB<5fPP&h1o<4pG%xv6B27IbOG!hL*c7Pev*b2>X|v3HX=VaBr;1{cz~74Uw1?~@*b56Ng^_p%w=1)8ex6G)=UM(+z$p`5$Ype#jo=>yO}S9}#+V-e z;vp&dEukY0n(B?_bgmyYnO{G!PM7QRckqx<+}!0One?xVM9mLfl(Mk@Z8TBZ-%^>R z)pdUz$l1esNB2>Z_Pj9tD5bA=FyPT+k*z_I49T5Wv8SZg3VLy|26AgSAIIJsoIB>!QN|y#pVM5?(mIjDgiWs_r!c*f$#8o|+=gxt&$6 z-^jOUn6)0dj_JeK{EdwhXxiO%BagYro4rku`6Cn@y1vD+g=1s=eF6AQXK-U4J77DJ zlJ!=#i)9?ZsJFi5gZn&jo;FW23DA<=C_m88u6qQowB8EtHhKvnP_xpb{AuJdO4MuoEKoGSNt zy$;vg^Y1V;c=UwQdsrBPPW)FA$T>>4VrgB<`Og?{rE4cs+16^wUAt!M zR6P&_rqZ|cU9HmJd|bZhIaVSqw{t5y+%KS8Wj`J&Nz=5y>7V)%iJ{p={@d{_?fFm~yU-_k;jqpt zRnThnj7ucUm^bh_28v>HbC;PfQP*&Xah_Hw=Bgat5cI&^6m@kN=jWwJ!5>?NV^)Qu zyOi1xPf3Jpef%cx$@NpBSF*I8TI#L@H;YBX?gaNDYmRbVk`d!#99xzWtpnVps z?)Me)CW`;|qGkFPy65+O0u=NQ_eI?iT85`Z)xnl#DyiFG8r8+mh zK1!XlJa59G!4pXlsz&$uQiU**RpL|zpk?%+=-9)I_ehs*csU(ncx_Py`HmViUi8f= zf_*(RAn-R4v}xB^d(rHm^wqQP&tFZ4n{d=QI-J=#_F@5XqJgmB=o|l^ZFBdN@n5=| zXsgsijU{4tHm&$QEpRm3QN1@A-a|u zdfEuN_I}d~w8nRowZwn<)V1+R(a|^XtmxVBZi70~@GM6;yMJ-UdwDaZD0Iq#W+Iq> z`Pt|dfP2r$^55ymtBo}9;8GY%uv>1{@OHWT4C$n2Slzo*4LX-WVzj)#KoXkSk^2ru z+TbA7#^KhgljnZL#efoe1z}6r1l7*#q0rEDbre7Z!CjK(wib}xKHNv2sWDE^^4nt& zh$+mLGuXvB@?<*Wa7`mJy&)AcI3nEI4c6x*PA17`vuzobRx4uKs?ue{?|H$dS z;d$Nzp8nbwP{e-JdzT<&i9Q`_8+uf&VV_PzDSz5EH2?X<`O)40YhA*D2=avt+!uKQ zc_)k8hhM_^XKldI8R3fxsBbu%dm6`lwY-@tca?nJPq;FrKPPtS75@jlLZg|> z>%qj(x?hL~J9vs5eIX1dG5`ixTiD9R>PMaV3yo+>_u$MB zA=H6!68Or87#f6IN(>d2MS8HbI*Bh@0-Fx{T7K*KxVmVJ;GU;RyY42N*ct|ZY@EB~ zwHW;g(Iq>!Gvae?J-Ld2x0?e_duAjMlxS}HmsU0vMo@TI{J)`;?8eU;etBC!A<}!m zDbRTRe7jwyPVD;7FKRr)Ku$v4Rlk-fd^CO{_(&^nO6ycI5Z>BG(Cpy4*yCsh!*QA? zF=E5Ms95PSRU;ot58vO#9$rCc9bH-i1D|F1Kj)2TRS=F4I!FdF;_> zQS>r&SU^TOk2MyWJ9l!6;$+Lq>X^XB6oXjhD;3DoF$%aXp~>#@3~D07=8#{Gx1?>7 z!qoKF2pV6D-Y0eBl0C_>c;v#q)^$!tRN8g~Lj50+`jw6|jpVaI5?#QpQIfJck!LusnT zXxo<76vzEiyz?}zDP8W*s*aXfwam%c>?L5L1G%Oh%uOHD@lP9`vTm-~2uqSn(9jwB zkJ@o}AcjWz5w-QNz3VT!Fs(>GRSI15%=^yp)$z8nh`=N67FX_`He7&xQ6;bEmhEn# zB$O*9MKqxwH0WQ$h>X-sO6Zr?)K(e3rsO5s2`j!5r-VP5V;LC}noo`3I+jigN zLbslo+y0zy-I=~8(vmyMUieNIeJ#+~sm9c_Bc2b)DEpJd|7`0)&nfYP^v{#Fia*bF z%yP9uWm3Y&W_9g@Y4}c745L5p#6>^xkQS~O74XFX7CHP_mN1$(}o2UEg6ej?| z)MI!nO&mVhb)AHvQV5;m6nYa3KlL`S7BhDC+3hxQ@P2p;{2^+g%k9W<)&2K7{yXEz z+Q|8TG#F?}h@}CVHIC?6-kfdtV7Oiu#9s5mV*50@qdcb$dUz`S?D>PW*P-yt`iw>> ztjbD?H?G|@XXN}~^W#JGd9TKGmsREMpy{|@@~77laW1=0_)X(Q*O}_R+N7WrUwNop zJ4%t)3E2>|Bgn1YeNvJwb^mlVtvgS82P<1xyZ$8f!^rRw9_&bWD z=PRKs>+S$v6okOkvxG-AH(t*rUKQw~Mzj{Cm1dF_I-f1t(VeNGe5i|}&IH;Rdx+-x zBpdT3ldLI03q2Yx{yA&d;pEwO9O#+qCHk13AGWd{V*qX>m*y%U1E*}yH5hW@yYUTg zj4)5`$vrW7VvbVFax6-oklv?$V+C6d4@xW#d&OA!@+a@R3<3idag1{Q%zH1j5c#hu z0xC7db`G5nnSc{hoCL?m<^CVydKL}O91XOQaks)xRG+ElOd00mpp+&X zFzF(j{&MrG_{(WKy{<7;G^4Q}&2)G08$_1@>qXWEn2-HdpUfHlZT~gQ=Cmj2bIQx7!ZE)& zPn@?!$fAlQ+}ZoPj6+Oy`w)~r6#w!f5nrgLg{>FB<$>fylXdd2J9s}Guh4ba{r2DYzzJt~m-X=CA zapUjQ9GAp1xYbaV=TF{$J!PDF&8ZU+g&qMg<*F4~p%0X+%i&3n(m8_lSoYV;81t!> zWnF=MhHSe`T}53|!d=IPfUC%1al>4CJ_wX4sh1Kk^ z`KnUe*1G&TZ>tph%K}^&jLIcOC-UjK$}Zp)^nDH$PfC$zmGB>4*O4a9c%B~eu#}%% zduB7VkzX4Q z$3(FTt?r@iaoI;bGFL56zB`A2+=nyV+ifb!1bYYBi?SrGRPyKThT*h=&ens}6HAeD zzQjVcy&<Wd4a$52hT9Jt!TDgDS~J`O=u}w6{P&&d^9m&x+Fv^1X=W8p?}-Sjr`~T zOfWpX@S*%ggx;pe>CE2SS){6u8X>sFit?K{nH(ZS58<}5zHVBld~&w0S{><(^|a@3 z3T}L7x}Gi9a;TXI;Bsu=sO>(R@8~jO`dtqnF;paqmjDB9dKwAlf7RAY9jF*;c+h@5 z<~qb!yD_$DKL4^3yGx9yTYHS9J|DXqF%IAVH*a<@pio-Iutn||D0huwxl)NU#Jn4# znc$@hN~9#@nr8CUV(A`=&;uvSBpFx@5oJCjiPa^NF%u891(^9_J%YILEQi+5jQPm= zPd55fRg3RpY*;IKFEs&D{KZpu?O;EGON-t_?BW$k>c2tu78EeC&+=`kx! zG9k@*E1Ui%4x6SmRtSL;YnQ#@37de2 z2~P+bZSexuiWCt|Itt3C%=+0t6WvQ#mik&%^J7Qh6~Hb|scnpe!F_?RF2xU@ONuv} zXn)bT*xbhG%usCo@jC3rr1usp@Y}0OLR%Vq45ufg>8$Wd9?fS_sY-bdq~_6AM)AH7At z1#fLTfySv2Wa1|_+Kk6Phj%E1@=RH=@Rs`5;&bMvCf!$f08UBWso_c!He~mS3w#|xZY5)H z&@-Dvca{mefAKS_t_Fcjn#TYxH#CQob`$fGf1jf#yw8U|8}xyAda((74X8xNSs~~U z+KzT*eV6sDqL|3~5#`Bjp^U2Q&&ziL8XKk8OwIdl3x@w4HqoS&X!VtDMEj?K`v^C|RMURea?yD& z23_C4Xc8M}_yccn*I>5wf-jNEI}yu4>Sm{B;bERkI_zo2ImoCm0tnCmVK9FcxPpm7 zEhSA^9hAN(S4HVkUf&JJ%y$5Y0p1y8ra9(diA%64>x&VpFz4tl`s0alb} zRO9jM7zleSFU(AgI#aTKO0S%QoO7sCGcmC-F&<0u50gJL;zT2r)5fWbw#J<)}H&L5j2_}gBP+kD@sBlo_7IT|=`wrY$ z?xBZqJsx`Qv7}WPj2C1Cai&2(zHUagRjU!G@Eh!hE3-=Loc}R=kI*hYBzHYLBi@4^ zzuWuujZ0y`(QnizIUuN%GH|FlS9Sjla&)_&Uk0Gg)AW?1 z9m9NbdnCl1hj12Huk^QZwNP~+PrP@w<#Y3#RckY^>zvi#%9AcbF3KRB+e!VNUMA1~ zad0&MuY)6BiEZt!yU0#|$ET5f$ui&59P(tt-NuX89}HK|Te)Ia&P8`!|JTJyLH_S9 zj$MW^_wQ-;19)Ix?85uT=cCoKs=h^8cgH8+HTmDW_AkadY*1@IJk0ohj#E11m~2Lj zYFcj36mDi0{&xL*6=fYYWF)jSwWAsRJ8{?a!z}3&^i*keKIIijz9{>m-F#%|1i56t z5V0=#X2$zmzMOZtfB=}hgIaKfmE-L{7L6@SAwgpyN#^qzk#;V8+H>&9!J_(On;u=S zgoW?w`K)^gvUNfk;c6i?9HYyL(RBIG*13E|LXXT;SlhJ_yg@h;J+F79o+m*A{A5mk zNv+Ki;f*Kqw&pBDAV)X?cAZMaFY1F^HXAu@zQY*0j>$$sk5$E}E z!mMZh{t0aRK>ppfzMj_jqwqPoMtV|YS4T*+?@jGJZJTWfSaJR;f0qBv(|?b4WkcC5 zvUilg4NRWRH_^_pH)-V?YpPR}U~Hz#K~!Rk9Jc*r!-qZe_0PojZh5${Y|7SO`+TTq z9WQ={!<$&f3Zh!`C*~PPQTeYeN_@7c6v^mdHalLe$WYW`%`8Zk*i{nu$f9b*K&7jc zvB+|q{&J1E+}^Hb0(K6`3?`(^7nIedlP_Ceriq^!Em41B1KqlK&5pm{dBSQ2ZDcR9 z^ZQlnwSC-asx__b2D;}XRI)79cH46N%UVpoJWO7U)G@flQAcr(7-l5(lKy0OpYr@x zct~ECIGopVC=}+{iZ$`<*;(7`yad7!u+C3J5xl8sfDMB{scgbU_RCp&R071`Kg}7w z0-&Y|SiP6WcEIJ|gcden-*2L^GJNhR&V0ijeGC4=(;JMO?#Zn;kEN>R<1Qy8@jf1j z5bnzBa@@gBWg7yC%NMkn`3`DAS+!a#(|Ue!wm+SVZVLW17+W}rUJI;pH4lS*igpYnEgmtE>-lWJoC3$r$IG*}u zKOA(?J070f4Fh`5%&1aQ%1>4VF~yq=8-*$lY{b1^H*Pfd$dJGOQaIseU&aaby&kmpnD3yY;OQrzHy&DH^;1e8 zHry0f*127?x<|Ea71Q5ZVa4jVIxCoo;fYv0JrMIMqvFv3go)v-+JuX9;*stnDb(>% zU(E%EE8@FtL^L5YCQ|bzQupIe8@3O;JDVP#1?GWfG!=yjI$U0I1;FKPhV%gE1g{!b zh1ZP-F}bfTUZ~oPom8kMAGWAE%8S8yXD<9n%Mu`viiP>B*DQWz_ihx@^K+!%Xj$=l zQL9T{f}pkwJwj*y9vtLFL&@1=-3{xfRO;>Q)3m1Y*7BQ*Q{R?mZp7Ad{@5hz=@&}LXi|yYp;}m!lZ~RTZDMh8 z%@?T^d|CSvZ#!JK7&tLVeOPaen~@Tjpi3V18#e9##R6Pnf6*e(fgCW7QW2~e;dTZe zzyEjEcK`P#sEh{jB4%!vGKcVDXM4t7gAkAwd=$g$gUl?J8^|oO?q^M#UYhp{=}WEL zi6b1A=PlWg2$CvH|NRzB(iMlZ7Vf{&!|~^Qq9) z+x_eok6)J%Ew51vM^V?@BN)oUb8-gp-LP>l*^I=L#F#`t610A{%n%QYG{K)-(m>%; z=1TG6w!WgZlGj-KyBYJrHe`_YZvrVTifqZsI@;o9MJV-;N`)}9ZElG|4y634ch%~Z zl3mY=M*~~ro`P_bQ%Kx6-OPC7&xz_3cWPRw^D<66@N6mlf5sAqP%6jFDn3|bFLNLcJ(;Xq3K;mW0>Z}u zitua8fVz@wWwyEO_o^O}N^5c%w#Vh+wOtJPw@eZ?lk2@(JV03suC(pzOQ}DH{CBq< zO_L^y)g=HP+@beP??aCkGnc0IMu&BQDv#p_+WC!$0ewe--jd zaS#SpVNI=SY16DGq(kmSiz(l}{}a)=T%jtK_o0ou8vfv(^Duf}=LSbSulG1h zUGE70AWTaOHP2<)_hJC8o)vuT9o8g-en}HDQ|OOecJB`trlE!2`Oi}~$3f~Jxq=kI zKCdb}KXMl=Vzew`-umK*m~!ZRS2&Vn&D8EWAgPCgAbXoNLxG6Cjuzz+2d^idv0YNM zdS)#ZN}a8FW|~gI+FrcZMRzhxZAaeqp4TNp!jRNdjjXY4J)g#ZD)P(4Ef)S_S;_7> zul#|u)N)AVblCLC1o%V+TCW;V)tnqJQ4GW6PlfWzdbmhk<*HElNE z?MQhtL*QI=j+F3sp&TXAr!$zhYDR#ms~>PxIeJSh=w`gsdt1Pjbg8G^2e^Z>vHWL2 znS--8>l@@p06nikHKI5kS?j3$;w~;q(_w{_6eKC@eX|5$T4mOk*w35nT zy*bW1V+waE?k2u_fjpi3p(Yx-Oh0=OPRs0g>P(pl{776Uj6f z@b|5Cl)8rga9V(OkZ)PKhQ$YU)B3=*W>mvvGK&>HMz*Bv<%9G+y-BiqoN-JOlp#WeU zE^+mhYKgUA_;8WVisy0Q;ofu`KyW1&j^qOGb6vFsX#h1TqkPI685JsG&k-o1kQLg(Pk7E1iYiPK%pq8?GGrO$$|F zyg(79Jh(6F6CzuWx`NE#LTyDW1Z-`rJRsi`jDN;2_nJdDG#ulyICc6Ccu$~K>6<^L z9}2xa*I&4xr+GNfRh(zIWR0$lA*ZzRwg>Ww^Xls6lyG3Fam8yE)?|#UE&pueyel{2 zYRa_@mnt(EI@X5EY_`w;L(j<#lwK41XOFF=p60h10=FfKI3NdQ{A;^DRiuSTIs9|I zWUWJlxgvbOM!VbIs<_X5m=rm^a8OhLuJQK2ItZ46OrdoR9UY3mFN4S>gj^!gELF5H!Rgz<^0+wOm(T9&RHAt$4uu zwJtej4s8uXaumS%((GWA;7a}DL{ICi(8<+jEQl}d!iSqRSFTl0H+sY?%Y@5kp)(P6 zrsVHJFD`VE0v#T!T-Ln{wd;aM^jV)SA9nrcC+v%`ATK7Hw2g`Vr8@i5B#9j3G-=4J z{$l4A+(MQjLv6%GZ)E=Toq9Q{h)Q?_Y~KtnOL}Lf6M^VLfSAy;yP~mz>dMQmxRbl` zgHCH04B*4!Z~3U#0y5w`@Z^y4Z>bry#?|sFQ|7tzF>__1O(9jbNIKWgO)MrIMYEJF zu3{8P8o?=%5GF2apBKJz9a}lk{%0bOG3{wsP&i_i&QS?Gbj`YqfeD>_S7w(oualvx zuvQ>ManxK)i!#3}xjdl>kQ01(;~+UjwP?h6#-g?!pATsye?=_?Q%y;n{^{oL$9K)b zcl#dbzCWktvcdzuoF%-uEc$1j{rh3sbEmiL3X60N4= zUKu$Q*47nUQiOW5)-3cIpUpp-sg4N*aadeZgiP zoD+PCMf**~i28I(Az_L6j?91TxO9(-ExQDKz_V*{alb!tW?yeNStc}TguO0uEcK+z zvGral$M*?&&AwsbU?xQg#YxXexXtJzB$3tAf&2!?V=f6)LQ-1aMVdB3#Dn!7D6%n1 zd5*Yrqes$8TnQcU8Bk`Pc!Q2#{qjD)-MZV5zmeS6iW>Cy^rV*QbasS@CyG@#?0i5q+)C zx-JgoyYh-nQ!A0dll+k4#8?OV4L8D?Ffx01N zMKGCGAzdQdVaxv2Qt=LkD^zmEic*rhdn;oyNE1Ly0_%d&EdeNY|I_Yr7Vl)LEP`}e z9}GXFk^aC1MlthrY#YrS4hH91M2TeHau66`S{P@Z_cRDIE{__R<{gJc5(Q*%EPhWp zi&_3WDe`W>{!d$%$DmONJ{R2n+>2TE!{$CO{Of(X^$iGZpM|%thqcr0ga;q|> z?AoK_CoGQ$$*Y^|VASwT`8I#2=Qr4<+vANx$pgko9*tm=>kaco@?PX~1xi-mBsbJl z$t1YSUrfq=pUjZjOUZ|S(sTJp{SHw*J{frHr)5#X1?BdAmF|KyDMF?5RYVOs693NC zeLm^1xrC(R1H)DRTfcz7>rs>>re|-yU~e0C2(V^6(XE{TdVur)^qq8NY65JU_JUP;(c{kA=APba& zzjRo2OJM_xuCd#`C)pOZvvR?T!Wy_9nN7Phd!x>ye7S9NAm;vqqDejnVxuv)irHiF znhqwb+BZKvR3>Plrd+)h+$u%@(lEV|{FUP$^6eX4tcZ!md=@*1JK#d|vl@$m$2EBB zPIXOTGg=SFMyohWP*+g;R$z1mBs?#cHj;Mvr2xdfOB?Y%+O9ctU!-UyByr(zRTt27 zYP_2iJu;C%iE`cZob6G)0&s8kYoS4lyP{P6%=Rv>@ud+HJ`C6PHjI$#mGul%JK4Hn z$S2IMY%eqW%NFdPta*-2U|3xtH2@MDM-7wZVjagUCczcVEH>e?=L>-~ABV!ZOsS^- z_gwR=hHv7jSnvQ##i)VNCqQ>-S>lX5hYRL2WVbFD$+X1|s_Bgnue%EWdL>%y1b)jY2Cv=ns(lY?0e_BHN_4BPYd5 zY}oIx{L?cOwg2Ws?B(|J#}5}MzcH?a7w=)`PP5Z`O~M@|V85fhmgD-Hg>jqxo2IL1q5ea?i`I-{?P5m|QLBT(+z}DzPn8M(1qkn>?ysJk!)BLV5$pEArKn zZ6l`*^P@s$L-wY74Fj7TV{;%Iv?-f9$d>fStV6p0ho-BHYr>7zQ$#>YX+=tOO&TOd_Xendv`E*G7LZPbZPHSX?(WV3W3X}ezxQ|dc^|g-ea|`1dCob{$;(kk z(vIaAB{{^n@*9UxxMs>Sv{&^iC}H9nHSEe;EBosCPFRaxvP}3<$4Q$lc} z?tos;BkWS7OXF&IqE4{ZZw(KJ2-P;0wqh?J4m~*cuI4od531E`a0tkn|#@9 zhwF+0*gLj5*LidJ80ekt-^%@XQ>%xsL%&ct5^6C_rDpe(vJIO>lqcxcRNW7t(Xuj zQSWHZ?PDkRnZGc!+%UsMbDC>#5^i7P++>G5>&n4CmY^k{d4CMk+r9YuK@d}&$79t_ z6T@bWXI~tBlw8Sfmd#!nS61uhs-HZGKgUB*;&$E{h-aXj}Y7I$@Dc z!G|4Vvh``Lv>w9m=S3w1-)X{2jl>$)o;?CV@1C{xvb$vFvXKswpT3lHdAAKa96d3V z9NH_ma{Ay4E5^eAXuY3f#@NLLeF9R@La0%P#ZOOzw*Ow=$^`lcn@U)*sqeJBF7oZm zA9ccY%E-8SK6SP5meGmRxw~9f*V7v2Ehj-27^Hj%%jsb&7T!n3vr@MP@iV<=)R*io zwWj~d65(%k9U|s;5+K-c%v6>Pa@`PNyen zqr5R80dM=|N`WPGP~P8iz3o*lL_X~Vsf}iw9$~#(UDA{6spETBS++qwR-Ds7xQ9;y*lj zsAUaKs4GW&z5k2)(7BQNg0Jzo)0OCE&&?O8^+HZz@M6e4u9FRWBZf{YIq1MCVocOe8W_W*Ulx-D4woRaQ$FXQ&;Yz=2_(Z)MmDJunY6& z#kF0r>sdc*5c~OpH>NmjieHZL%7QKS$s9d|*DAZ|$#B|$WGXrzd@_9ec1jTY!hGiq z!?0gHq_!#IpQ$fzPA%paA(a!Dq8*t5M(>d!S=y^+6w+O)7K&eD#t&B8v&_pHVT4LFZ@0QMru5r|%C~$(K!X;#=E=2U!Y^gP_{0vIlul zK~NR=^t9FUFTSF2Te4g_n|p;@=HuyB4yvGF(f4Y)3CmS|-D5SEeeLV978}V52j3P5&gdr2M z@~c#35#|}BIHg98-||~}nJs{QQFAf19OSgI1s^*^5tqIbuZhyN3})4d7u4azQptq{ zb>QH6UuVfx=APdRpL5S8`w+q!BLwzoIUR)e z$hJxyU1YVGAlOx7f8z441=Cyaw$s~oKJ5CSz3SYb6xl$Ily&eMniusO9*lG=WT~T8 z-R3L};fh88$3Dz6Ks1~oeDn~F5U*Y?ELSc^!jf~13YxMh(nPUhi_FF^Y(KWFf?k6(Ra*OohnsL@Ct~YE5Y&5%Q*Stui@H-;W)esw$Wdt`8WaB02t` zLaK4inIyvD)41ZQNXKD3Jko3E)Vo$HHj$OjX;>1yy-IBIsBza__KJ)0b!68Dc~4Il z$qP#CX;1iafM+^gMcRV|QPv0zz_M_Iv3JzEB1H%7g@+Z^Al(xde)Nok{ZTdJd1>FU z$d>T55lFKxJr&cCRF#0Tl$9R%5le4JXPID{ZJ{t7x|)YuW0_I6Y4I}vU+6xPt=E&1 zLf|Xkp(*!=U%y`>juKHg_OsaITy8pY-;Gi~ddr11mIh9F4oljOr9Ip*kscHU`>m6V zH*b|Q`;SrT_jwSy)nCUj=BU`fHQq`1*w5MX&TuTk)OxP+Ah<1*4`~k zQcN30F83F(jmRs-#~|ITELLR?pMuYs;`Rg5xqMyXrn@oVH|P{qE2z012h$bT)$A(G z-!$C)F9?IV`;cGmF*VgLoGd{j3^Mr7f@{J+m=^jh0_l{eNRz-Au>!6Zrh{C0uWTuc z`FWEJvIgj%3LK7>sg?|9Mu|FgtR<=CyYb*hl+cu_^T$A*9V(T@n!GJpn!v&Q!{P7_ z^wJ&?x}ZR@Sot)PUtl}z0<-lC_K`l`4DkH1b8;pJLh2bZV9}9Q zWvIlCmBGqwnckj$yYjxL#G<@%YC(E?`7Cu8qvz9CpAMfT>o__TWe2X5Xrd|QAwh-G z5_~2)RT3Laf0JxcBT)#Be9Ua@mh7YPp>^{Rw_2Y~7jl)w2dd$VN&@?+p#`F*(eoV8 z_vzK36+vSjD#I{ao}X4gZWH;iiR@F&cMX@{{_MtG4D~-D2y$a?u{19~9aB`OxbMe- zjb|z%%deVa?HDZZHEr73b(Rgbc)Uz&Ah(Qt^;!pCZn}l#CbbM$6*PF#d&w(RX2HJE z_v+xx+E}R8_Z!Q=Q>+@pwB2yiPR*+?h~WpeOxizRq3QP;BsFv9j?dQd87e3NJ5I*< z6uQy?;*;$4F@srq`b&arQ+^4FUM=#Q>*uYk`~Mdk_^>AfRX{zj62&Nni5y*WXFYyZ zbP+897hp*T*%n@M$GdPN71g0=h6sY$6Bm1cKN<_kgiq*Yzbxn0E8v9N6@5XF=Fb^O$e9J!2mDk{5G zBQH6GAZi-k+XHe41z_YMR#BH0^|nM6Qu}F6}Am!-7jwJ2b=pcDxRAfa{PGrEOtCq0vj!>XIG>-DAU%#yE55&9Bssv zRJ6z$k(DabO-3l^sL7s0A#JOhj>BG`DOcT3Q=bt>C;Nu)K5pUL&E&OqI@{!m{;m-x zRg$R3KqxyxbWop%$wfxMmur6!e0S-SR6+2#b4ric0m9;Ei?{6KM8lGhW{vun=#&gl zh|DGb1PSXO{K;8Z`mV6KI(%U#V4e5>djawjnI1~XtXsZ9p65`#1D;4y?FP$G2U4FXHgM+z24h}Sa3&YWaqdcY>GMXFyhtW!Y_5A zFw8OS)z;^bY}Txx&*!;QT0K`iUda)z`G=vfWu7mHC#t}l5xK4nt_n=cQhB&p4XAj# z#R=ZuH=^F)PeyH9()e0nlL&Ywt^9RBTq`2}0c2&L_$?L6Czlxub*cZEEif)!kTUyp| zf>joYH5RH2OP*^v6OA_-HB-%b)v)6=f4}lBu7kTpM5E~ciXEd#TeRgf^ z2i7m@OOIhqOGN% zo_`1cjlH(+{h>zyE^VR*s3+KXZr0hCQ0!L8*3ceRU|(<5CKvZn_#vGRyU3Qs9iJBN z19QZh_PfSQ9dzL!IKM!2)@dX%E#wqObdf z`TV0z>tU6ylXMp`uaXUf2VILP#Vd15iyOx6u;G-u>!t=+Mq*{3x zN{*13;4U+(Dr7dZk>^aG@bpjgug00vq_;ae$G;xlj#eO-ev0MtK?XP(ODWKaK)P!3 z7{3bVD67m;1%IMK5jJ7voL`AGI6~Z(CFh!4db!>;dedGyT-&pc{9|2YzGlf;VEuV( z;I@3AEgIqy%qwX5{JwX_P>XFB?d`B8$(rQT7p%`LUnitlVsaFJXZeO)2s<4dyS{v< zQ#Y}@@JBQV6LIBp_%C3vkw^cDmHgKQduHIxkk#y_WKyw}*1p$URohj`SS=ZagKg#; zhKoA_bv6_FIYNZi8Y5J$D;ljskzq+PKim1tO-~lb6R@037MLKa=u0r~t{IbtTkBOc zwkWlX^i3OEnGW86E8r@%-2*j4t8ipcyKgi!#nX$~TuY=iGP$)}B@G7&2o-k6YTNLXE|70*gt<%@Xt0Y!Vz z_`4jpkWpVLx=`2qAsReQ!DL}2Rbe<$ztO>2d@{_p?{GAN9>phcO?79cEw!}wOia1~ zW?VT#!<4x6!gEx)-%wcH@WtuJN+J1&pBD?LgVWCE@fTycSrL)K06^%6A8XtHC>Os} zF1Jbsn!hx>1xS8f?~S?-3XB~?Tz|dYdOwlD|HfDkemj=g6S140%=u@v>52BMbpFn& z-tIwe;@qo?$N3rC(<7%fw%c?S^VNJ`0(;IaiIu&^SDP3~fleBWpN$rh?S{RbHiD9x z@oye`$&7p2fH5>t{;|Qj0m&F+Um;9dx15mt{OL94%WD<})s#Ug;+6iOZQ7NuTl`3Q zTDN#$)`NKF9P!o{bM}fSduL)+vG=^7%S^bV<%E&m{#*?`g-gnM|KZ;wpF#JOcY;2N zhZRABB(MT4Aonmy}J*C zI?Sd7CSu&};0}O%K^S9*= z{pa4z;vRRyf#}hsy9NzCeZ1p=n2Djge6+#0^!5ZbO2Gve7^7q-+rr2*uG;e2%__G2 z%}FU5xgdEVno^->@_XA8x2Z0EYY>Vq^eIMl$2)?VRcB=>`&E0}{FT-Gs8*#u$RlQj zXq6-e0DvbZ`*t;pjdN-N^NBd^1@NKu5vIrr^g(3o@nKq*!HZxaszc>r3jUKv-`=F@ zE4t(yLMs%?rS%rEL9#Y*vZ9hhQ}DO$)|xwvwfPBRc9oZ94`q8*OgD8t=KfB2rr1(; zWsDHPOWk{=;G6!*@wLI;tWyM^piS~`uf}W*aKI$^?qW#bEF7JY0BJxM!a~}ly)Ws7 z^Kd~_gbk%lNPdpaV$i=-^e4=pXBUc+jZ$a~{aVUahRjc?g3bA%7Z-(_){iomfz{)i z?GHXj4V&2Q)YZSL`MFvrYn%7FpNTev@6$=a)Bd_C4H&}n)j+`G{kX|h7bl@_%D6!e z$d5ev^^ol@Wsl;-nq@HXnx$AP-6`y5gUomGYavAe>EOE^=zD70TLryzcBlC860oK( z%jJXpTtt>c1%x-JVR`)DJtQvN#(Qa@YGm~Snu7Hbm0%DjSV1G8t?6tmL|o(rB>>R) zfX)AP?RfS2cwz^LZUuagfJXwtCc)~VJz&*(4uW*y_K1lElk0TzcA=*Az1H9;$IbJ3 z&It|p(QM;PDzsuTVxE{^ZA`#>x?y=IOIE%Z9=uZy&(x{7)d|v!Ci`2S0xOR|vUI#X{@4O6bJ(iLc5HYLoNcpG3QAh2%TK5F4^u z3qzyb<$=^0bmwV@n}MCPx&h~RjMz-)xw~t50ipK2%Q*65N#g0wMcV|B2QoP15wq{| zM}8hf5-r}u$>i9IB5rx%^4hP9$^sRW?kSMVvOw7gaR`AXJms>P?Fowcu^C6b8KJGQ z;cHTu#}&{`Pd5Fv^0R}Xo{a9E&1I%|)w+YTf`D%PX#D7`^U=TQTInOSouN#mp-3I7 zw#0v-`EqT^YZ3P86Q#JLz}f2%E6dlr$67?x>d?$h_cxR2ICSB@wZ+1agQ=`gZ`^Fa zG5n!c3HS8UXRo-HQ{;!vtJfE3O5N8g(!vs)DMpD7|NM1y7Rh<)BFcBP-hECy$NbH+ z-!mBV>&|~CSP#^L8c!4o-P43Cnyt76Vs{_B$?c;#PNP^rGRY6N)zAiQZzcqPb8Eh+ zK>rQPx@(h(fB#ji`eNDdQ6+KJY>zA3o=v+j?*%bY^|eQzRM+a1-^L(;(yW-ov&#F< zf<~jZ<=yBd2oI5~`Z7FWWZ#Dt`&m1ePD2TQ))Mj(&MDH^IQXAF_X4?>9WU+||Ka z^S89k8fD_%=ldx>&+@I;hdd#Q>bf^OCv5aYFOAbETfVe1C9Tps?@TK}R2V7+X#tHh zIr;`4u>F#Q*PRdEE9$A*(-D`OOd1Q|9dPW!VRn^n5glI`dSBSwyv~|{C+nJ@-p