From 3e19f91a0da2e4a4400da82aa28c62da19c48f42 Mon Sep 17 00:00:00 2001 From: MobarakHsn Date: Mon, 8 Jul 2024 19:15:37 +0600 Subject: [PATCH 01/16] Pgpool docs Signed-off-by: MobarakHsn --- docs/guides/pgpool/concepts/opsrequest.md | 783 ++++++++++++++++++++++ docs/guides/pgpool/concepts/pgpool.md | 281 +++++++- 2 files changed, 1060 insertions(+), 4 deletions(-) create mode 100644 docs/guides/pgpool/concepts/opsrequest.md diff --git a/docs/guides/pgpool/concepts/opsrequest.md b/docs/guides/pgpool/concepts/opsrequest.md new file mode 100644 index 0000000000..6a25285d41 --- /dev/null +++ b/docs/guides/pgpool/concepts/opsrequest.md @@ -0,0 +1,783 @@ +--- +title: MongoDBOpsRequests CRD +menu: + docs_{{ .version }}: + identifier: pp-opsrequest-concepts + name: PgpoolOpsRequest + parent: pp-concepts-pgpool + weight: 25 +menu_name: docs_{{ .version }} +section_menu_id: guides +--- + +> New to KubeDB? Please start [here](/docs/README.md). + +# PgpoolOpsRequest + +## What is MongoDBOpsRequest + +`MongoDBOpsRequest` is a Kubernetes `Custom Resource Definitions` (CRD). It provides a declarative configuration for [MongoDB](https://www.mongodb.com/) administrative operations like database version updating, horizontal scaling, vertical scaling etc. in a Kubernetes native way. + +## MongoDBOpsRequest CRD Specifications + +Like any official Kubernetes resource, a `MongoDBOpsRequest` has `TypeMeta`, `ObjectMeta`, `Spec` and `Status` sections. + +Here, some sample `MongoDBOpsRequest` CRs for different administrative operations is given below: + +**Sample `MongoDBOpsRequest` for updating database:** + +```yaml +apiVersion: ops.kubedb.com/v1alpha1 +kind: MongoDBOpsRequest +metadata: + name: mops-update + namespace: demo +spec: + type: UpdateVersion + databaseRef: + name: mg-standalone + updateVersion: + targetVersion: 4.4.26 +status: + conditions: + - lastTransitionTime: "2020-08-25T18:22:38Z" + message: Successfully completed the modification process + observedGeneration: 1 + reason: Successful + status: "True" + type: Successful + observedGeneration: 1 + phase: Successful +``` + +**Sample `MongoDBOpsRequest` Objects for Horizontal Scaling of different component of the database:** + +```yaml +apiVersion: ops.kubedb.com/v1alpha1 +kind: MongoDBOpsRequest +metadata: + name: mops-hscale-configserver + namespace: demo +spec: + type: HorizontalScaling + databaseRef: + name: mg-sharding + horizontalScaling: + shard: + shards: 3 + replicas: 3 + configServer: + replicas: 3 + mongos: + replicas: 2 +status: + conditions: + - lastTransitionTime: "2020-08-25T18:22:38Z" + message: Successfully completed the modification process + observedGeneration: 1 + reason: Successful + status: "True" + type: Successful + observedGeneration: 1 + phase: Successful +``` + +```yaml +apiVersion: ops.kubedb.com/v1alpha1 +kind: MongoDBOpsRequest +metadata: + name: mops-hscale-down-replicaset + namespace: demo +spec: + type: HorizontalScaling + databaseRef: + name: mg-replicaset + horizontalScaling: + replicas: 3 +status: + conditions: + - lastTransitionTime: "2020-08-25T18:22:38Z" + message: Successfully completed the modification process + observedGeneration: 1 + reason: Successful + status: "True" + type: Successful + observedGeneration: 1 + phase: Successful +``` + +**Sample `MongoDBOpsRequest` Objects for Vertical Scaling of different component of the database:** + +```yaml +apiVersion: ops.kubedb.com/v1alpha1 +kind: MongoDBOpsRequest +metadata: + name: mops-vscale-configserver + namespace: demo +spec: + type: VerticalScaling + databaseRef: + name: mg-sharding + verticalScaling: + configServer: + resources: + requests: + memory: "150Mi" + cpu: "0.1" + limits: + memory: "250Mi" + cpu: "0.2" + mongos: + resources: + requests: + memory: "150Mi" + cpu: "0.1" + limits: + memory: "250Mi" + cpu: "0.2" + shard: + resources: + requests: + memory: "150Mi" + cpu: "0.1" + limits: + memory: "250Mi" + cpu: "0.2" +status: + conditions: + - lastTransitionTime: "2020-08-25T18:22:38Z" + message: Successfully completed the modification process + observedGeneration: 1 + reason: Successful + status: "True" + type: Successful + observedGeneration: 1 + phase: Successful +``` + +```yaml +apiVersion: ops.kubedb.com/v1alpha1 +kind: MongoDBOpsRequest +metadata: + name: mops-vscale-standalone + namespace: demo +spec: + type: VerticalScaling + databaseRef: + name: mg-standalone + verticalScaling: + standalone: + resources: + requests: + memory: "150Mi" + cpu: "0.1" + limits: + memory: "250Mi" + cpu: "0.2" +status: + conditions: + - lastTransitionTime: "2020-08-25T18:22:38Z" + message: Successfully completed the modification process + observedGeneration: 1 + reason: Successful + status: "True" + type: Successful + observedGeneration: 1 + phase: Successful +``` + +```yaml +apiVersion: ops.kubedb.com/v1alpha1 +kind: MongoDBOpsRequest +metadata: + name: mops-vscale-replicaset + namespace: demo +spec: + type: VerticalScaling + databaseRef: + name: mg-replicaset + verticalScaling: + replicaSet: + resources: + requests: + memory: "150Mi" + cpu: "0.1" + limits: + memory: "250Mi" + cpu: "0.2" +status: + conditions: + - lastTransitionTime: "2020-08-25T18:22:38Z" + message: Successfully completed the modification process + observedGeneration: 1 + reason: Successful + status: "True" + type: Successful + observedGeneration: 1 + phase: Successful +``` + +**Sample `MongoDBOpsRequest` Objects for Reconfiguring different database components:** + +```yaml +apiVersion: ops.kubedb.com/v1alpha1 +kind: MongoDBOpsRequest +metadata: + name: mops-reconfiugre-data-replicaset + namespace: demo +spec: + type: Reconfigure + databaseRef: + name: mg-replicaset + configuration: + replicaSet: + applyConfig: + mongod.conf: |- + net: + maxIncomingConnections: 30000 +status: + conditions: + - lastTransitionTime: "2020-08-25T18:22:38Z" + message: Successfully completed the modification process + observedGeneration: 1 + reason: Successful + status: "True" + type: Successful + observedGeneration: 1 + phase: Successful +``` + +```yaml +apiVersion: ops.kubedb.com/v1alpha1 +kind: MongoDBOpsRequest +metadata: + name: mops-reconfiugre-data-shard + namespace: demo +spec: + type: Reconfigure + databaseRef: + name: mg-sharding + configuration: + shard: + applyConfig: + mongod.conf: |- + net: + maxIncomingConnections: 30000 + configServer: + applyConfig: + mongod.conf: |- + net: + maxIncomingConnections: 30000 + mongos: + applyConfig: + mongod.conf: |- + net: + maxIncomingConnections: 30000 +status: + conditions: + - lastTransitionTime: "2020-08-25T18:22:38Z" + message: Successfully completed the modification process + observedGeneration: 1 + reason: Successful + status: "True" + type: Successful + observedGeneration: 1 + phase: Successful +``` + +```yaml +apiVersion: ops.kubedb.com/v1alpha1 +kind: MongoDBOpsRequest +metadata: + name: mops-reconfiugre-data-standalone + namespace: demo +spec: + type: Reconfigure + databaseRef: + name: mg-standalone + configuration: + standalone: + applyConfig: + mongod.conf: |- + net: + maxIncomingConnections: 30000 +status: + conditions: + - lastTransitionTime: "2020-08-25T18:22:38Z" + message: Successfully completed the modification process + observedGeneration: 1 + reason: Successful + status: "True" + type: Successful + observedGeneration: 1 + phase: Successful +``` + +```yaml +apiVersion: ops.kubedb.com/v1alpha1 +kind: MongoDBOpsRequest +metadata: + name: mops-reconfiugre-replicaset + namespace: demo +spec: + type: Reconfigure + databaseRef: + name: mg-replicaset + configuration: + replicaSet: + configSecret: + name: new-custom-config +status: + conditions: + - lastTransitionTime: "2020-08-25T18:22:38Z" + message: Successfully completed the modification process + observedGeneration: 1 + reason: Successful + status: "True" + type: Successful + observedGeneration: 1 + phase: Successful +``` + +```yaml +apiVersion: ops.kubedb.com/v1alpha1 +kind: MongoDBOpsRequest +metadata: + name: mops-reconfiugre-shard + namespace: demo +spec: + type: Reconfigure + databaseRef: + name: mg-sharding + configuration: + shard: + configSecret: + name: new-custom-config + configServer: + configSecret: + name: new-custom-config + mongos: + configSecret: + name: new-custom-config +status: + conditions: + - lastTransitionTime: "2020-08-25T18:22:38Z" + message: Successfully completed the modification process + observedGeneration: 1 + reason: Successful + status: "True" + type: Successful + observedGeneration: 1 + phase: Successful +``` + +```yaml +apiVersion: ops.kubedb.com/v1alpha1 +kind: MongoDBOpsRequest +metadata: + name: mops-reconfiugre-standalone + namespace: demo +spec: + type: Reconfigure + databaseRef: + name: mg-standalone + configuration: + standalone: + configSecret: + name: new-custom-config +status: + conditions: + - lastTransitionTime: "2020-08-25T18:22:38Z" + message: Successfully completed the modification process + observedGeneration: 1 + reason: Successful + status: "True" + type: Successful + observedGeneration: 1 + phase: Successful +``` + +**Sample `MongoDBOpsRequest` Objects for Volume Expansion of different database components:** + +```yaml +apiVersion: ops.kubedb.com/v1alpha1 +kind: MongoDBOpsRequest +metadata: + name: mops-volume-exp-replicaset + namespace: demo +spec: + type: VolumeExpansion + databaseRef: + name: mg-replicaset + volumeExpansion: + mode: "Online" + replicaSet: 2Gi +status: + conditions: + - lastTransitionTime: "2020-08-25T18:22:38Z" + message: Successfully completed the modification process + observedGeneration: 1 + reason: Successful + status: "True" + type: Successful + observedGeneration: 1 + phase: Successful +``` + +```yaml +apiVersion: ops.kubedb.com/v1alpha1 +kind: MongoDBOpsRequest +metadata: + name: mops-volume-exp-shard + namespace: demo +spec: + type: VolumeExpansion + databaseRef: + name: mg-sharding + volumeExpansion: + mode: "Online" + shard: 2Gi + configServer: 2Gi +status: + conditions: + - lastTransitionTime: "2020-08-25T18:22:38Z" + message: Successfully completed the modification process + observedGeneration: 1 + reason: Successful + status: "True" + type: Successful + observedGeneration: 1 + phase: Successful +``` + +```yaml +apiVersion: ops.kubedb.com/v1alpha1 +kind: MongoDBOpsRequest +metadata: + name: mops-volume-exp-standalone + namespace: demo +spec: + type: VolumeExpansion + databaseRef: + name: mg-standalone + volumeExpansion: + mode: "Online" + standalone: 2Gi +status: + conditions: + - lastTransitionTime: "2020-08-25T18:22:38Z" + message: Successfully completed the modification process + observedGeneration: 1 + reason: Successful + status: "True" + type: Successful + observedGeneration: 1 + phase: Successful +``` + +**Sample `MongoDBOpsRequest` Objects for Reconfiguring TLS of the database:** + +```yaml +apiVersion: ops.kubedb.com/v1alpha1 +kind: MongoDBOpsRequest +metadata: + name: mops-add-tls + namespace: demo +spec: + type: ReconfigureTLS + databaseRef: + name: mg-rs + tls: + issuerRef: + name: mg-issuer + kind: Issuer + apiGroup: "cert-manager.io" + certificates: + - alias: client + emailAddresses: + - abc@appscode.com +``` + +```yaml +apiVersion: ops.kubedb.com/v1alpha1 +kind: MongoDBOpsRequest +metadata: + name: mops-rotate + namespace: demo +spec: + type: ReconfigureTLS + databaseRef: + name: mg-rs + tls: + rotateCertificates: true +``` + +```yaml +apiVersion: ops.kubedb.com/v1alpha1 +kind: MongoDBOpsRequest +metadata: + name: mops-change-issuer + namespace: demo +spec: + type: ReconfigureTLS + databaseRef: + name: mg-rs + tls: + issuerRef: + name: mg-new-issuer + kind: Issuer + apiGroup: "cert-manager.io" +``` + +```yaml +apiVersion: ops.kubedb.com/v1alpha1 +kind: MongoDBOpsRequest +metadata: + name: mops-remove + namespace: demo +spec: + type: ReconfigureTLS + databaseRef: + name: mg-rs + tls: + remove: true +``` + +Here, we are going to describe the various sections of a `MongoDBOpsRequest` crd. + +A `MongoDBOpsRequest` object has the following fields in the `spec` section. + +### spec.databaseRef + +`spec.databaseRef` is a required field that point to the [MongoDB](/docs/guides/mongodb/concepts/mongodb.md) object for which the administrative operations will be performed. This field consists of the following sub-field: + +- **spec.databaseRef.name :** specifies the name of the [MongoDB](/docs/guides/mongodb/concepts/mongodb.md) object. + +### spec.type + +`spec.type` specifies the kind of operation that will be applied to the database. Currently, the following types of operations are allowed in `MongoDBOpsRequest`. + +- `Upgrade` / `UpdateVersion` +- `HorizontalScaling` +- `VerticalScaling` +- `VolumeExpansion` +- `Reconfigure` +- `ReconfigureTLS` +- `Restart` + +> You can perform only one type of operation on a single `MongoDBOpsRequest` CR. For example, if you want to update your database and scale up its replica then you have to create two separate `MongoDBOpsRequest`. At first, you have to create a `MongoDBOpsRequest` for updating. Once it is completed, then you can create another `MongoDBOpsRequest` for scaling. + +> Note: There is an exception to the above statement. It is possible to specify both `spec.configuration` & `spec.verticalScaling` in a OpsRequest of type `VerticalScaling`. + +### spec.updateVersion + +If you want to update you MongoDB version, you have to specify the `spec.updateVersion` section that specifies the desired version information. This field consists of the following sub-field: + +- `spec.updateVersion.targetVersion` refers to a [MongoDBVersion](/docs/guides/mongodb/concepts/catalog.md) CR that contains the MongoDB version information where you want to update. + +Have a look on the [`updateConstraints`](/docs/guides/mongodb/concepts/catalog.md#specupdateconstraints) of the mongodbVersion spec to know which versions are supported for updating from the current version. +```yaml +kubectl get mgversion -o=jsonpath='{.spec.updateConstraints}' | jq +``` + +> You can only update between MongoDB versions. KubeDB does not support downgrade for MongoDB. + +### spec.horizontalScaling + +If you want to scale-up or scale-down your MongoDB cluster or different components of it, you have to specify `spec.horizontalScaling` section. This field consists of the following sub-field: + +- `spec.horizontalScaling.replicas` indicates the desired number of nodes for MongoDB replicaset cluster after scaling. For example, if your cluster currently has 4 replicaset nodes, and you want to add additional 2 nodes then you have to specify 6 in `spec.horizontalScaling.replicas` field. Similarly, if you want to remove one node from the cluster, you have to specify 3 in `spec.horizontalScaling.replicas` field. +- `spec.horizontalScaling.configServer.replicas` indicates the desired number of ConfigServer nodes for Sharded MongoDB cluster after scaling. +- `spec.horizontalScaling.mongos.replicas` indicates the desired number of Mongos nodes for Sharded MongoDB cluster after scaling. +- `spec.horizontalScaling.shard` indicates the configuration of shard nodes for Sharded MongoDB cluster after scaling. This field consists of the following sub-field: + - `spec.horizontalScaling.shard.replicas` indicates the number of replicas each shard will have after scaling. + - `spec.horizontalScaling.shard.shards` indicates the number of shards after scaling + +### spec.verticalScaling + +`spec.verticalScaling` is a required field specifying the information of `MongoDB` resources like `cpu`, `memory` etc that will be scaled. This field consists of the following sub-fields: + +- `spec.verticalScaling.standalone` indicates the desired resources for standalone MongoDB database after scaling. +- `spec.verticalScaling.replicaSet` indicates the desired resources for replicaSet of MongoDB database after scaling. +- `spec.verticalScaling.mongos` indicates the desired resources for Mongos nodes of Sharded MongoDB database after scaling. +- `spec.verticalScaling.configServer` indicates the desired resources for ConfigServer nodes of Sharded MongoDB database after scaling. +- `spec.verticalScaling.shard` indicates the desired resources for Shard nodes of Sharded MongoDB database after scaling. +- `spec.verticalScaling.exporter` indicates the desired resources for the `exporter` container. +- `spec.verticalScaling.arbiter` indicates the desired resources for arbiter node of MongoDB database after scaling. +- `spec.verticalScaling.coordinator` indicates the desired resources for the coordinator container. + +All of them has the below structure: + +```yaml +requests: + memory: "200Mi" + cpu: "0.1" +limits: + memory: "300Mi" + cpu: "0.2" +``` + +Here, when you specify the resource request, the scheduler uses this information to decide which node to place the container of the Pod on and when you specify a resource limit for the container, the `kubelet` enforces those limits so that the running container is not allowed to use more of that resource than the limit you set. You can found more details from [here](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/). + +### spec.volumeExpansion + +> To use the volume expansion feature the storage class must support volume expansion + +If you want to expand the volume of your MongoDB cluster or different components of it, you have to specify `spec.volumeExpansion` section. This field consists of the following sub-field: + +- `spec.mode` specifies the volume expansion mode. Supported values are `Online` & `Offline`. The default is `Online`. +- `spec.volumeExpansion.standalone` indicates the desired size for the persistent volume of a standalone MongoDB database. +- `spec.volumeExpansion.replicaSet` indicates the desired size for the persistent volume of replicaSets of a MongoDB database. +- `spec.volumeExpansion.configServer` indicates the desired size for the persistent volume of the config server of a sharded MongoDB database. +- `spec.volumeExpansion.shard` indicates the desired size for the persistent volume of shards of a sharded MongoDB database. + +All of them refer to [Quantity](https://v1-22.docs.kubernetes.io/docs/reference/generated/kubernetes-api/v1.22/#quantity-resource-core) types of Kubernetes. + +Example usage of this field is given below: + +```yaml +spec: + volumeExpansion: + shard: "2Gi" +``` + +This will expand the volume size of all the shard nodes to 2 GB. + +### spec.configuration + +If you want to reconfigure your Running MongoDB cluster or different components of it with new custom configuration, you have to specify `spec.configuration` section. This field consists of the following sub-field: + +- `spec.configuration.standalone` indicates the desired new custom configuration for a standalone MongoDB database. +- `spec.configuration.replicaSet` indicates the desired new custom configuration for replicaSet of a MongoDB database. +- `spec.configuration.configServer` indicates the desired new custom configuration for config servers of a sharded MongoDB database. +- `spec.configuration.mongos` indicates the desired new custom configuration for the mongos nodes of a sharded MongoDB database. +- `spec.configuration.shard` indicates the desired new custom configuration for the shard nodes of a sharded MongoDB database. +- `spec.verticalScaling.arbiter` indicates the desired new custom configuration for arbiter node of MongoDB database after scaling. + +All of them has the following sub-fields: + +- `configSecret` points to a secret in the same namespace of a MongoDB resource, which contains the new custom configurations. If there are any configSecret set before in the database, this secret will replace it. +- `applyConfig` contains the new custom config as a string which will be merged with the previous configuration. + +- `applyConfig` is a map where key supports 3 values, namely `mongod.conf`, `replicaset.json`, `configuration.js`. And value represents the corresponding configurations. +For your information, replicaset.json is used to modify replica set configurations, which we see in the output of `rs.config()`. And `configurarion.js` is used to apply a js script to configure mongodb at runtime. +KubeDB provisioner operator applies these two directly while reconciling. + +```yaml + applyConfig: + configuration.js: | + print("hello world!!!!") + replicaset.json: | + { + "settings" : { + "electionTimeoutMillis" : 4000 + } + } + mongod.conf: | + net: + maxIncomingConnections: 30000 +``` + +- `removeCustomConfig` is a boolean field. Specify this field to true if you want to remove all the custom configuration from the deployed mongodb server. + +### spec.tls + +If you want to reconfigure the TLS configuration of your database i.e. add TLS, remove TLS, update issuer/cluster issuer or Certificates and rotate the certificates, you have to specify `spec.tls` section. This field consists of the following sub-field: + +- `spec.tls.issuerRef` specifies the issuer name, kind and api group. +- `spec.tls.certificates` specifies the certificates. You can learn more about this field from [here](/docs/guides/mongodb/concepts/mongodb.md#spectls). +- `spec.tls.rotateCertificates` specifies that we want to rotate the certificate of this database. +- `spec.tls.remove` specifies that we want to remove tls from this database. + +### spec.readinessCriteria + +`spec.readinessCriteria` is the criteria for checking readiness of a MongoDB pod after restarting it. It has two fields. +- `spec.readinessCriteria.oplogMaxLagSeconds` defines the maximum allowed lagging time between the primary & secondary. +- `spec.readinessCriteria.objectsCountDiffPercentage` denotes the maximum allowed object-count-difference between the primary & secondary. + +```yaml +... +spec: + readinessCriteria: + oplogMaxLagSeconds: 20 + objectsCountDiffPercentage: 10 +... +``` +Exceeding these thresholds results in opsRequest failure. One thing to note that, readinessCriteria field will make impact only if pod restarting is associated with the opsRequest type. + +### spec.timeout +As we internally retry the ops request steps multiple times, This `timeout` field helps the users to specify the timeout for those steps of the ops request (in second). +If a step doesn't finish within the specified timeout, the ops request will result in failure. + +### spec.apply +This field controls the execution of obsRequest depending on the database state. It has two supported values: `Always` & `IfReady`. +Use IfReady, if you want to process the opsRequest only when the database is Ready. And use Always, if you want to process the execution of opsReq irrespective of the Database state. + + +### MongoDBOpsRequest `Status` + +`.status` describes the current state and progress of a `MongoDBOpsRequest` operation. It has the following fields: + +### status.phase + +`status.phase` indicates the overall phase of the operation for this `MongoDBOpsRequest`. It can have the following three values: + +| Phase | Meaning | +|-------------|------------------------------------------------------------------------------------| +| Successful | KubeDB has successfully performed the operation requested in the MongoDBOpsRequest | +| Progressing | KubeDB has started the execution of the applied MongoDBOpsRequest | +| Failed | KubeDB has failed the operation requested in the MongoDBOpsRequest | +| Denied | KubeDB has denied the operation requested in the MongoDBOpsRequest | +| Skipped | KubeDB has skipped the operation requested in the MongoDBOpsRequest | + +Important: Ops-manager Operator can skip an opsRequest, only if its execution has not been started yet & there is a newer opsRequest applied in the cluster. `spec.type` has to be same as the skipped one, in this case. + +### status.observedGeneration + +`status.observedGeneration` shows the most recent generation observed by the `MongoDBOpsRequest` controller. + +### status.conditions + +`status.conditions` is an array that specifies the conditions of different steps of `MongoDBOpsRequest` processing. Each condition entry has the following fields: + +- `types` specifies the type of the condition. MongoDBOpsRequest has the following types of conditions: + +| Type | Meaning | +| ----------------------------- | ------------------------------------------------------------------------- | +| `Progressing` | Specifies that the operation is now in the progressing state | +| `Successful` | Specifies such a state that the operation on the database was successful. | +| `HaltDatabase` | Specifies such a state that the database is halted by the operator | +| `ResumeDatabase` | Specifies such a state that the database is resumed by the operator | +| `Failed` | Specifies such a state that the operation on the database failed. | +| `StartingBalancer` | Specifies such a state that the balancer has successfully started | +| `StoppingBalancer` | Specifies such a state that the balancer has successfully stopped | +| `UpdateShardImage` | Specifies such a state that the Shard Images has been updated | +| `UpdateReplicaSetImage` | Specifies such a state that the Replicaset Image has been updated | +| `UpdateConfigServerImage` | Specifies such a state that the ConfigServer Image has been updated | +| `UpdateMongosImage` | Specifies such a state that the Mongos Image has been updated | +| `UpdateStatefulSetResources` | Specifies such a state that the Statefulset resources has been updated | +| `UpdateShardResources` | Specifies such a state that the Shard resources has been updated | +| `UpdateReplicaSetResources` | Specifies such a state that the Replicaset resources has been updated | +| `UpdateConfigServerResources` | Specifies such a state that the ConfigServer resources has been updated | +| `UpdateMongosResources` | Specifies such a state that the Mongos resources has been updated | +| `ScaleDownReplicaSet` | Specifies such a state that the scale down operation of replicaset | +| `ScaleUpReplicaSet` | Specifies such a state that the scale up operation of replicaset | +| `ScaleUpShardReplicas` | Specifies such a state that the scale up operation of shard replicas | +| `ScaleDownShardReplicas` | Specifies such a state that the scale down operation of shard replicas | +| `ScaleDownConfigServer` | Specifies such a state that the scale down operation of config server | +| `ScaleUpConfigServer` | Specifies such a state that the scale up operation of config server | +| `ScaleMongos` | Specifies such a state that the scale down operation of replicaset | +| `VolumeExpansion` | Specifies such a state that the volume expansion operaton of the database | +| `ReconfigureReplicaset` | Specifies such a state that the reconfiguration of replicaset nodes | +| `ReconfigureMongos` | Specifies such a state that the reconfiguration of mongos nodes | +| `ReconfigureShard` | Specifies such a state that the reconfiguration of shard nodes | +| `ReconfigureConfigServer` | Specifies such a state that the reconfiguration of config server nodes | + +- The `status` field is a string, with possible values `True`, `False`, and `Unknown`. + - `status` will be `True` if the current transition succeeded. + - `status` will be `False` if the current transition failed. + - `status` will be `Unknown` if the current transition was denied. +- The `message` field is a human-readable message indicating details about the condition. +- The `reason` field is a unique, one-word, CamelCase reason for the condition's last transition. +- The `lastTransitionTime` field provides a timestamp for when the operation last transitioned from one state to another. +- The `observedGeneration` shows the most recent condition transition generation observed by the controller. diff --git a/docs/guides/pgpool/concepts/pgpool.md b/docs/guides/pgpool/concepts/pgpool.md index 54ad3c87a7..9e0c443480 100644 --- a/docs/guides/pgpool/concepts/pgpool.md +++ b/docs/guides/pgpool/concepts/pgpool.md @@ -31,6 +31,13 @@ metadata: spec: version: "4.5.0" replicas: 1 + healthChecker: + failureThreshold: 3 + periodSeconds: 20 + timeoutSeconds: 10 + authSecret: + name: pgpool-auth + externallyManaged: false postgresRef: name: ha-postgres namespace: demo @@ -57,8 +64,8 @@ spec: labels: release: prometheus interval: 10s - deletionPolicy: WipeOut - syncUsers: true + configSecret: + name: pgpool-config initConfig: pgpoolConfig: log_statement : on @@ -79,6 +86,8 @@ spec: log_min_messages : warning statement_level_load_balance: on memory_cache_enabled: on + deletionPolicy: WipeOut + syncUsers: true podTemplate: spec: containers: @@ -89,7 +98,6 @@ spec: requests: cpu: 200m memory: 256Mi - serviceTemplates: - alias: primary spec: @@ -97,4 +105,269 @@ spec: ports: - name: http port: 9999 -``` \ No newline at end of file +``` +### spec.version + +`spec.version` is a required field specifying the name of the [PgpoolVersion](/docs/guides/pgpool/concepts/catalog.md) crd where the docker images are specified. Currently, when you install KubeDB, it creates the following `PgpoolVersion` resources, + +- `4.4.5`, `4.5.0` + +### spec.replicas + +`spec.replicas` the number of members in pgpool replicaset. `Minimum` allowed replicas is `1` and `maximum` is `9`. + +KubeDB uses `PodDisruptionBudget` to ensure that majority of these replicas are available during [voluntary disruptions](https://kubernetes.io/docs/concepts/workloads/pods/disruptions/#voluntary-and-involuntary-disruptions) so that quorum is maintained. + +## spec.healthChecker +It defines the attributes for the health checker. +- `spec.healthChecker.periodSeconds` specifies how often to perform the health check. +- `spec.healthChecker.timeoutSeconds` specifies the number of seconds after which the probe times out. +- `spec.healthChecker.failureThreshold` specifies minimum consecutive failures for the healthChecker to be considered failed. +- `spec.healthChecker.disableWriteCheck` specifies whether to disable the writeCheck or not. + +### spec.authSecret + +`spec.authSecret` is an optional field that points to a Secret used to hold credentials for `pgpool` `pcp` user. If not set, KubeDB operator creates a new Secret `{pgpool-object-name}-auth` for storing the password for `pgpool` pcp user for each Pgpool object. + +We can use this field in 3 mode. +1. Using an external secret. In this case, You need to create an auth secret first with required fields, then specify the secret name when creating the Pgpool object using `spec.authSecret.name` & set `spec.authSecret.externallyManaged` to true. +```yaml +authSecret: + name: + externallyManaged: true +``` + +2. Specifying the secret name only. In this case, You need to specify the secret name when creating the Pgpool object using `spec.authSecret.name`. `externallyManaged` is by default false. +```yaml +authSecret: + name: +``` + +3. Let KubeDB do everything for you. In this case, no work for you. + +AuthSecret contains a `user` key and a `password` key which contains the `username` and `password` respectively for `pgpool` pcp user. + +Example: + +```bash +$ kubectl create secret generic pgpool-auth -n demo \ +--from-literal=username=jhon-doe \ +--from-literal=password=O9xE1mZZDAdBTbrV +secret "pgpool-auth" created +``` + +```yaml +apiVersion: v1 +data: + password: O9xE1mZZDAdBTbrV + username: jhon-doe +kind: Secret +metadata: + name: pgpool-auth + namespace: demo +type: Opaque +``` + +Secrets provided by users are not managed by KubeDB, and therefore, won't be modified or garbage collected by the KubeDB operator (version 0.13.0 and higher). + +### spec.postgresRef + +`spec.postgresRef` is a required field that points to the `appbinding` associated with the backend postgres. If the postgres is KubeDB managed an appbinding will be created automatically upon creating the postgres. If the postgres is not KubeDB managed then you need to create an appbinding yourself. `spec.postgresRef` takes the name (`spec.postgresRef.Name`) of the appbinding and the namespace (`spec.postgresRef.Namespace`) where the appbinding is created. + +### spec.sslMode + +Enables TLS/SSL or mixed TLS/SSL used for all network connections. The value of `sslMode` field can be one of the following: + +| Value | Description | +|:-------------:|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `disabled` | The server does not use TLS/SSL. | +| `require` | The server uses and accepts only TLS/SSL encrypted connections. | +| `verify-ca` | The server uses and accepts only TLS/SSL encrypted connections and client want to be sure that client connect to a server that client trust. | +| `verify-full` | The server uses and accepts only TLS/SSL encrypted connections and client want to be sure that client connect to a server client trust, and that it's the one client specify. | + +The specified ssl mode will be used by health checker and exporter of Pgpool. + +### spec.clientAuthMode + +The value of `clientAuthMode` field can be one of the following: + +| Value | Description | +|:-------------:|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `scram` | The server uses scram-sha-256 authentication method to authenticate the users. | +| `md5` | The server uses md5 authentication method to authenticate the users. | +| `cert` | The server uses tls certificates to authenticate the users and for this `sslMode` must not be disabled | + +The `pool_hba.conf` of Pgpool will have the configuration based on the specified clientAuthMode. + +### spec.tls + +`spec.tls` specifies the TLS/SSL configurations for the MongoDB. KubeDB uses [cert-manager](https://cert-manager.io/) v1 api to provision and manage TLS certificates. + +The following fields are configurable in the `spec.tls` section: + +- `issuerRef` is a reference to the `Issuer` or `ClusterIssuer` CR of [cert-manager](https://cert-manager.io/docs/concepts/issuer/) that will be used by `KubeDB` to generate necessary certificates. + + - `apiGroup` is the group name of the resource that is being referenced. Currently, the only supported value is `cert-manager.io`. + - `kind` is the type of resource that is being referenced. KubeDB supports both `Issuer` and `ClusterIssuer` as values for this field. + - `name` is the name of the resource (`Issuer` or `ClusterIssuer`) being referenced. + +- `certificates` (optional) are a list of certificates used to configure the server and/or client certificate. It has the following fields: + - `alias` represents the identifier of the certificate. It has the following possible value: + - `server` is used for server certificate identification. + - `client` is used for client certificate identification. + - `metrics-exporter` is used for metrics exporter certificate identification. + - `secretName` (optional) specifies the k8s secret name that holds the certificates. + > This field is optional. If the user does not specify this field, the default secret name will be created in the following format: `--cert`. + + - `subject` (optional) specifies an `X.509` distinguished name. It has the following possible field, + - `organizations` (optional) are the list of different organization names to be used on the Certificate. + - `organizationalUnits` (optional) are the list of different organization unit name to be used on the Certificate. + - `countries` (optional) are the list of country names to be used on the Certificate. + - `localities` (optional) are the list of locality names to be used on the Certificate. + - `provinces` (optional) are the list of province names to be used on the Certificate. + - `streetAddresses` (optional) are the list of a street address to be used on the Certificate. + - `postalCodes` (optional) are the list of postal code to be used on the Certificate. + - `serialNumber` (optional) is a serial number to be used on the Certificate. + You can find more details from [Here](https://golang.org/pkg/crypto/x509/pkix/#Name) + - `duration` (optional) is the period during which the certificate is valid. + - `renewBefore` (optional) is a specifiable time before expiration duration. + - `dnsNames` (optional) is a list of subject alt names to be used in the Certificate. + - `ipAddresses` (optional) is a list of IP addresses to be used in the Certificate. + - `uris` (optional) is a list of URI Subject Alternative Names to be set in the Certificate. + - `emailAddresses` (optional) is a list of email Subject Alternative Names to be set in the Certificate. + - `privateKey` (optional) specifies options to control private keys used for the Certificate. + - `encoding` (optional) is the private key cryptography standards (PKCS) encoding for this certificate's private key to be encoded in. If provided, allowed values are "pkcs1" and "pkcs8" standing for PKCS#1 and PKCS#8, respectively. It defaults to PKCS#1 if not specified. + +### spec.monitor + +Pgpool managed by KubeDB can be monitored with builtin-Prometheus and Prometheus operator out-of-the-box. To learn more, + +- [Monitor Pgpool with builtin Prometheus](/docs/guides/pgpool/monitoring/using-builtin-prometheus.md) +- [Monitor Pgpool with Prometheus operator](/docs/guides/pgpool/monitoring/using-prometheus-operator.md) + +### spec.configSecret + +`spec.configSecret` is an optional field that allows users to provide custom configuration for Pgpool. You can provide the custom configuration in a secret, then you can specify the secret name `spec.configSecret.name`. + +> Please note that, the secret key needs to be `pgpool.conf`. + +To learn more about how to use a custom configuration file see [here](/docs/guides/pgpool/configuration/using-config-file.md). + +NB. If `spec.configSecret` is set, then `spec.initConfig` needs to be empty. + +### spec.initConfig + +`spec.initConfig` is an optional field that allows users to provide custom configuration for Pgpool while initializing. + +To learn more about how to use init configuration see [here](/docs/guides/pgpool/configuration/using-init-config.md). + +NB. If `spec.initConfig` is set, then `spec.configSecret` needs to be empty. + +### spec.deletionPolicy + +`deletionPolicy` gives flexibility whether to `nullify`(reject) the delete operation of `Pgpool` CR or which resources KubeDB should keep or delete when you delete `Pgpool` CR. KubeDB provides following four deletion policies: + +- DoNotTerminate +- Delete (`Default`) +- WipeOut + +When `deletionPolicy` is `DoNotTerminate`, KubeDB takes advantage of `ValidationWebhook` feature in Kubernetes 1.9.0 or later clusters to implement `DoNotTerminate` feature. If admission webhook is enabled, `DoNotTerminate` prevents users from deleting the database as long as the `spec.deletionPolicy` is set to `DoNotTerminate`. + +Following table show what KubeDB does when you delete Pgpool CR for different deletion policies, + +| Behavior | DoNotTerminate | Delete | WipeOut | +|---------------------------| :------------: |:------------:| :------: | +| 1. Block Delete operation | ✓ | ✗ | ✗ | +| 2. Delete PetSet | ✗ | ✓ | ✓ | +| 3. Delete Services | ✗ | ✓ | ✓ | +| 4. Delete Secrets | ✗ | ✗ | ✓ | + +If you don't specify `spec.deletionPolicy` KubeDB uses `Delete` deletion policy by default. + +### spec.syncUsers + +`spec.syncUsers` is an optional field by default its value is false. If it is true, you can provide a secret with username and password as key and with some desired labels to sync PostgreSQL users to Pgpool in runtime. + +The contains a `user` key and a `password` key which contains the `username` and `password` respectively. + +Example: + +```yaml +apiVersion: v1 +kind: Secret +metadata: + labels: + app.kubernetes.io/instance: + app.kubernetes.io/name: postgreses.kubedb.com + name: pg-user + namespace: +stringData: + password: "12345" + username: alice +``` +In every `10 seconds` KubeDB operator will sync all the users to Pgpool. + +Secrets provided by users are not managed by KubeDB, and therefore, won't be modified or garbage collected by the KubeDB operator (version 0.13.0 and higher). + + +### spec.podTemplate + +KubeDB allows providing a template for pod through `spec.podTemplate`. KubeDB operator will pass the information provided in `spec.podTemplate` to the PetSet created for Pgpool. + +KubeDB accept following fields to set in `spec.podTemplate:` + +- metadata: + - annotations (pod's annotation) + - labels (pod's labels) +- controller: + - annotations (statefulset's annotation) + - labels (statefulset's labels) +- spec: + - volumes + - initContainers + - containers + - imagePullSecrets + - nodeSelector + - affinity + - serviceAccountName + - schedulerName + - tolerations + - priorityClassName + - priority + - securityContext + - livenessProbe + - readinessProbe + - lifecycle + +You can check out the full list [here](https://github.com/kmodules/offshoot-api/blob/39bf8b2/api/v2/types.go#L44-L279). Uses of some field of `spec.podTemplate` is described below, + +#### spec.podTemplate.spec.nodeSelector + +`spec.podTemplate.spec.nodeSelector` is an optional field that specifies a map of key-value pairs. For the pod to be eligible to run on a node, the node must have each of the indicated key-value pairs as labels (it can have additional labels as well). To learn more, see [here](https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector) . + +#### spec.podTemplate.spec.resources + +`spec.podTemplate.spec.resources` is an optional field. This can be used to request compute resources required by the database pods. To learn more, visit [here](http://kubernetes.io/docs/user-guide/compute-resources/). + +### spec.serviceTemplates + +You can also provide template for the services created by KubeDB operator for Kafka cluster through `spec.serviceTemplates`. This will allow you to set the type and other properties of the services. + +KubeDB allows following fields to set in `spec.serviceTemplates`: +- `alias` represents the identifier of the service. It has the following possible value: + - `stats` is used for the exporter service identification. +- metadata: + - labels + - annotations +- spec: + - type + - ports + - clusterIP + - externalIPs + - loadBalancerIP + - loadBalancerSourceRanges + - externalTrafficPolicy + - healthCheckNodePort + - sessionAffinityConfig + +See [here](https://github.com/kmodules/offshoot-api/blob/kubernetes-1.21.1/api/v1/types.go#L237) to understand these fields in detail. From df94c8becdb805ee55df59fcd66e5cc32eb53621 Mon Sep 17 00:00:00 2001 From: MobarakHsn Date: Mon, 15 Jul 2024 15:20:09 +0600 Subject: [PATCH 02/16] Add pgpool ops-request, auto-scaling Signed-off-by: MobarakHsn --- docs/guides/pgpool/concepts/autoscaler.md | 73 +++ docs/guides/pgpool/concepts/opsrequest.md | 667 ++++------------------ 2 files changed, 179 insertions(+), 561 deletions(-) create mode 100644 docs/guides/pgpool/concepts/autoscaler.md diff --git a/docs/guides/pgpool/concepts/autoscaler.md b/docs/guides/pgpool/concepts/autoscaler.md new file mode 100644 index 0000000000..85630fcedc --- /dev/null +++ b/docs/guides/pgpool/concepts/autoscaler.md @@ -0,0 +1,73 @@ +--- +title: PgpoolAutoscaler CRD +menu: + docs_{{ .version }}: + identifier: pp-autoscaler-concepts + name: PgpoolAutoscaler + parent: pp-concepts-pgpool + weight: 26 +menu_name: docs_{{ .version }} +section_menu_id: guides +--- + +> New to KubeDB? Please start [here](/docs/README.md). + +# PgpoolAutoscaler + +## What is PgpoolAutoscaler + +`PgpoolAutoscaler` is a Kubernetes `Custom Resource Definitions` (CRD). It provides a declarative configuration for autoscaling [Pgpool](https://pgpool.net/mediawiki/index.php/Main_Page) compute resources of Pgpool components in a Kubernetes native way. + +## PgpoolAutoscaler CRD Specifications + +Like any official Kubernetes resource, a `PgpoolAutoscaler` has `TypeMeta`, `ObjectMeta`, `Spec` and `Status` sections. + +Here, some sample `PgpoolAutoscaler` CROs for autoscaling different components of pgpool is given below: + +**Sample `PgpoolAutoscaler` for pgpool:** + +```yaml +apiVersion: autoscaling.kubedb.com/v1alpha1 +kind: PgpoolAutoscaler +metadata: + name: pgpool-auto-scale + namespace: demo +spec: + databaseRef: + name: pgpool + compute: + pgpool: + trigger: "On" + podLifeTimeThreshold: 24h + minAllowed: + cpu: 250m + memory: 350Mi + maxAllowed: + cpu: 1 + memory: 1Gi + controlledResources: ["cpu", "memory"] + containerControlledValues: "RequestsAndLimits" + resourceDiffPercentage: 10 +``` + +Here, we are going to describe the various sections of a `PgpoolAutoscaler` crd. + +A `PgpoolAutoscaler` object has the following fields in the `spec` section. + +### spec.databaseRef + +`spec.databaseRef` is a required field that point to the [Pgpool](/docs/guides/pgpool/concepts/pgpool.md) object for which the autoscaling will be performed. This field consists of the following sub-field: + +- **spec.databaseRef.name :** specifies the name of the [Pgpool](/docs/guides/pgpool/concepts/pgpool.md) object. + +### spec.compute + +`spec.compute` specifies the autoscaling configuration for the compute resources i.e. cpu and memory of Pgpool components. This field consists of the following sub-field: + +- `trigger` indicates if compute autoscaling is enabled for this component of the pgpool. If "On" then compute autoscaling is enabled. If "Off" then compute autoscaling is disabled. +- `minAllowed` specifies the minimal amount of resources that will be recommended, default is no minimum. +- `maxAllowed` specifies the maximum amount of resources that will be recommended, default is no maximum. +- `controlledResources` specifies which type of compute resources (cpu and memory) are allowed for autoscaling. Allowed values are "cpu" and "memory". +- `containerControlledValues` specifies which resource values should be controlled. Allowed values are "RequestsAndLimits" and "RequestsOnly". +- `resourceDiffPercentage` specifies the minimum resource difference between recommended value and the current value in percentage. If the difference percentage is greater than this value than autoscaling will be triggered. +- `podLifeTimeThreshold` specifies the minimum pod lifetime of at least one of the pods before triggering autoscaling. \ No newline at end of file diff --git a/docs/guides/pgpool/concepts/opsrequest.md b/docs/guides/pgpool/concepts/opsrequest.md index 6a25285d41..8401c99cc8 100644 --- a/docs/guides/pgpool/concepts/opsrequest.md +++ b/docs/guides/pgpool/concepts/opsrequest.md @@ -1,5 +1,5 @@ --- -title: MongoDBOpsRequests CRD +title: PgpoolOpsRequests CRD menu: docs_{{ .version }}: identifier: pp-opsrequest-concepts @@ -14,599 +14,220 @@ section_menu_id: guides # PgpoolOpsRequest -## What is MongoDBOpsRequest +## What is PgpoolOpsRequest -`MongoDBOpsRequest` is a Kubernetes `Custom Resource Definitions` (CRD). It provides a declarative configuration for [MongoDB](https://www.mongodb.com/) administrative operations like database version updating, horizontal scaling, vertical scaling etc. in a Kubernetes native way. +`PgpoolOpsRequest` is a Kubernetes `Custom Resource Definitions` (CRD). It provides a declarative configuration for [Pgpool](https://pgpool.net/mediawiki/index.php/Main_Page) administrative operations like version updating, horizontal scaling, vertical scaling etc. in a Kubernetes native way. -## MongoDBOpsRequest CRD Specifications +## PgpoolOpsRequest CRD Specifications -Like any official Kubernetes resource, a `MongoDBOpsRequest` has `TypeMeta`, `ObjectMeta`, `Spec` and `Status` sections. +Like any official Kubernetes resource, a `PgpoolOpsRequest` has `TypeMeta`, `ObjectMeta`, `Spec` and `Status` sections. -Here, some sample `MongoDBOpsRequest` CRs for different administrative operations is given below: +Here, some sample `PgpoolOpsRequest` CRs for different administrative operations is given below: -**Sample `MongoDBOpsRequest` for updating database:** +**Sample `PgpoolOpsRequest` for updating version:** ```yaml apiVersion: ops.kubedb.com/v1alpha1 -kind: MongoDBOpsRequest +kind: PgpoolOpsRequest metadata: - name: mops-update + name: pgpool-version-update namespace: demo spec: type: UpdateVersion databaseRef: - name: mg-standalone + name: pgpool updateVersion: - targetVersion: 4.4.26 -status: - conditions: - - lastTransitionTime: "2020-08-25T18:22:38Z" - message: Successfully completed the modification process - observedGeneration: 1 - reason: Successful - status: "True" - type: Successful - observedGeneration: 1 - phase: Successful + targetVersion: 4.5.0 ``` -**Sample `MongoDBOpsRequest` Objects for Horizontal Scaling of different component of the database:** +**Sample `PgpoolOpsRequest` Objects for Horizontal Scaling:** ```yaml apiVersion: ops.kubedb.com/v1alpha1 -kind: MongoDBOpsRequest +kind: PgpoolOpsRequest metadata: - name: mops-hscale-configserver + name: pgpool-horizontal-scale namespace: demo spec: type: HorizontalScaling databaseRef: - name: mg-sharding + name: pgpool horizontalScaling: - shard: - shards: 3 - replicas: 3 - configServer: - replicas: 3 - mongos: - replicas: 2 -status: - conditions: - - lastTransitionTime: "2020-08-25T18:22:38Z" - message: Successfully completed the modification process - observedGeneration: 1 - reason: Successful - status: "True" - type: Successful - observedGeneration: 1 - phase: Successful + node: 3 ``` -```yaml -apiVersion: ops.kubedb.com/v1alpha1 -kind: MongoDBOpsRequest -metadata: - name: mops-hscale-down-replicaset - namespace: demo -spec: - type: HorizontalScaling - databaseRef: - name: mg-replicaset - horizontalScaling: - replicas: 3 -status: - conditions: - - lastTransitionTime: "2020-08-25T18:22:38Z" - message: Successfully completed the modification process - observedGeneration: 1 - reason: Successful - status: "True" - type: Successful - observedGeneration: 1 - phase: Successful -``` - -**Sample `MongoDBOpsRequest` Objects for Vertical Scaling of different component of the database:** +**Sample `PgpoolOpsRequest` Objects for Vertical Scaling:** ```yaml apiVersion: ops.kubedb.com/v1alpha1 -kind: MongoDBOpsRequest +kind: PgpoolOpsRequest metadata: - name: mops-vscale-configserver + name: pgpool-vertical-scale namespace: demo spec: type: VerticalScaling databaseRef: - name: mg-sharding + name: pgpool verticalScaling: - configServer: - resources: - requests: - memory: "150Mi" - cpu: "0.1" - limits: - memory: "250Mi" - cpu: "0.2" - mongos: + node: resources: requests: - memory: "150Mi" - cpu: "0.1" + memory: "1200Mi" + cpu: "0.7" limits: - memory: "250Mi" - cpu: "0.2" - shard: - resources: - requests: - memory: "150Mi" - cpu: "0.1" - limits: - memory: "250Mi" - cpu: "0.2" -status: - conditions: - - lastTransitionTime: "2020-08-25T18:22:38Z" - message: Successfully completed the modification process - observedGeneration: 1 - reason: Successful - status: "True" - type: Successful - observedGeneration: 1 - phase: Successful + memory: "1200Mi" + cpu: "0.7" ``` -```yaml -apiVersion: ops.kubedb.com/v1alpha1 -kind: MongoDBOpsRequest -metadata: - name: mops-vscale-standalone - namespace: demo -spec: - type: VerticalScaling - databaseRef: - name: mg-standalone - verticalScaling: - standalone: - resources: - requests: - memory: "150Mi" - cpu: "0.1" - limits: - memory: "250Mi" - cpu: "0.2" -status: - conditions: - - lastTransitionTime: "2020-08-25T18:22:38Z" - message: Successfully completed the modification process - observedGeneration: 1 - reason: Successful - status: "True" - type: Successful - observedGeneration: 1 - phase: Successful -``` - -```yaml -apiVersion: ops.kubedb.com/v1alpha1 -kind: MongoDBOpsRequest -metadata: - name: mops-vscale-replicaset - namespace: demo -spec: - type: VerticalScaling - databaseRef: - name: mg-replicaset - verticalScaling: - replicaSet: - resources: - requests: - memory: "150Mi" - cpu: "0.1" - limits: - memory: "250Mi" - cpu: "0.2" -status: - conditions: - - lastTransitionTime: "2020-08-25T18:22:38Z" - message: Successfully completed the modification process - observedGeneration: 1 - reason: Successful - status: "True" - type: Successful - observedGeneration: 1 - phase: Successful -``` - -**Sample `MongoDBOpsRequest` Objects for Reconfiguring different database components:** - -```yaml -apiVersion: ops.kubedb.com/v1alpha1 -kind: MongoDBOpsRequest -metadata: - name: mops-reconfiugre-data-replicaset - namespace: demo -spec: - type: Reconfigure - databaseRef: - name: mg-replicaset - configuration: - replicaSet: - applyConfig: - mongod.conf: |- - net: - maxIncomingConnections: 30000 -status: - conditions: - - lastTransitionTime: "2020-08-25T18:22:38Z" - message: Successfully completed the modification process - observedGeneration: 1 - reason: Successful - status: "True" - type: Successful - observedGeneration: 1 - phase: Successful -``` - -```yaml -apiVersion: ops.kubedb.com/v1alpha1 -kind: MongoDBOpsRequest -metadata: - name: mops-reconfiugre-data-shard - namespace: demo -spec: - type: Reconfigure - databaseRef: - name: mg-sharding - configuration: - shard: - applyConfig: - mongod.conf: |- - net: - maxIncomingConnections: 30000 - configServer: - applyConfig: - mongod.conf: |- - net: - maxIncomingConnections: 30000 - mongos: - applyConfig: - mongod.conf: |- - net: - maxIncomingConnections: 30000 -status: - conditions: - - lastTransitionTime: "2020-08-25T18:22:38Z" - message: Successfully completed the modification process - observedGeneration: 1 - reason: Successful - status: "True" - type: Successful - observedGeneration: 1 - phase: Successful -``` - -```yaml -apiVersion: ops.kubedb.com/v1alpha1 -kind: MongoDBOpsRequest -metadata: - name: mops-reconfiugre-data-standalone - namespace: demo -spec: - type: Reconfigure - databaseRef: - name: mg-standalone - configuration: - standalone: - applyConfig: - mongod.conf: |- - net: - maxIncomingConnections: 30000 -status: - conditions: - - lastTransitionTime: "2020-08-25T18:22:38Z" - message: Successfully completed the modification process - observedGeneration: 1 - reason: Successful - status: "True" - type: Successful - observedGeneration: 1 - phase: Successful -``` +**Sample `PgpoolOpsRequest` Objects for Reconfiguring:** ```yaml apiVersion: ops.kubedb.com/v1alpha1 -kind: MongoDBOpsRequest +kind: PgpoolOpsRequest metadata: - name: mops-reconfiugre-replicaset + name: pgpool-reconfigure namespace: demo spec: type: Reconfigure databaseRef: - name: mg-replicaset + name: pgpool configuration: - replicaSet: - configSecret: - name: new-custom-config -status: - conditions: - - lastTransitionTime: "2020-08-25T18:22:38Z" - message: Successfully completed the modification process - observedGeneration: 1 - reason: Successful - status: "True" - type: Successful - observedGeneration: 1 - phase: Successful + applyConfig: + pgpool.conf: |- + max_pool = 30 ``` ```yaml apiVersion: ops.kubedb.com/v1alpha1 -kind: MongoDBOpsRequest +kind: PgpoolOpsRequest metadata: - name: mops-reconfiugre-shard + name: pgpool-reconfigure namespace: demo spec: type: Reconfigure databaseRef: - name: mg-sharding + name: pgpool configuration: - shard: - configSecret: - name: new-custom-config - configServer: - configSecret: - name: new-custom-config - mongos: - configSecret: - name: new-custom-config -status: - conditions: - - lastTransitionTime: "2020-08-25T18:22:38Z" - message: Successfully completed the modification process - observedGeneration: 1 - reason: Successful - status: "True" - type: Successful - observedGeneration: 1 - phase: Successful + removeCustomConfig: true ``` ```yaml apiVersion: ops.kubedb.com/v1alpha1 -kind: MongoDBOpsRequest +kind: PgpoolOpsRequest metadata: - name: mops-reconfiugre-standalone + name: pgpool-reconfigure namespace: demo spec: type: Reconfigure databaseRef: - name: mg-standalone + name: pgpool configuration: - standalone: - configSecret: - name: new-custom-config -status: - conditions: - - lastTransitionTime: "2020-08-25T18:22:38Z" - message: Successfully completed the modification process - observedGeneration: 1 - reason: Successful - status: "True" - type: Successful - observedGeneration: 1 - phase: Successful + configSecret: + name: new-custom-config ``` -**Sample `MongoDBOpsRequest` Objects for Volume Expansion of different database components:** -```yaml -apiVersion: ops.kubedb.com/v1alpha1 -kind: MongoDBOpsRequest -metadata: - name: mops-volume-exp-replicaset - namespace: demo -spec: - type: VolumeExpansion - databaseRef: - name: mg-replicaset - volumeExpansion: - mode: "Online" - replicaSet: 2Gi -status: - conditions: - - lastTransitionTime: "2020-08-25T18:22:38Z" - message: Successfully completed the modification process - observedGeneration: 1 - reason: Successful - status: "True" - type: Successful - observedGeneration: 1 - phase: Successful -``` +**Sample `PgpoolOpsRequest` Objects for Reconfiguring TLS:** ```yaml apiVersion: ops.kubedb.com/v1alpha1 -kind: MongoDBOpsRequest +kind: PgpoolOpsRequest metadata: - name: mops-volume-exp-shard - namespace: demo -spec: - type: VolumeExpansion - databaseRef: - name: mg-sharding - volumeExpansion: - mode: "Online" - shard: 2Gi - configServer: 2Gi -status: - conditions: - - lastTransitionTime: "2020-08-25T18:22:38Z" - message: Successfully completed the modification process - observedGeneration: 1 - reason: Successful - status: "True" - type: Successful - observedGeneration: 1 - phase: Successful -``` - -```yaml -apiVersion: ops.kubedb.com/v1alpha1 -kind: MongoDBOpsRequest -metadata: - name: mops-volume-exp-standalone - namespace: demo -spec: - type: VolumeExpansion - databaseRef: - name: mg-standalone - volumeExpansion: - mode: "Online" - standalone: 2Gi -status: - conditions: - - lastTransitionTime: "2020-08-25T18:22:38Z" - message: Successfully completed the modification process - observedGeneration: 1 - reason: Successful - status: "True" - type: Successful - observedGeneration: 1 - phase: Successful -``` - -**Sample `MongoDBOpsRequest` Objects for Reconfiguring TLS of the database:** - -```yaml -apiVersion: ops.kubedb.com/v1alpha1 -kind: MongoDBOpsRequest -metadata: - name: mops-add-tls + name: tls namespace: demo spec: type: ReconfigureTLS databaseRef: - name: mg-rs + name: pgpool tls: + sslMode: verify-ca + clientAuthMode: cert issuerRef: - name: mg-issuer + name: pgpool-ca-issuer kind: Issuer apiGroup: "cert-manager.io" certificates: - alias: client - emailAddresses: - - abc@appscode.com + subject: + organizations: + - kubedb + organizationalUnits: + - client ``` ```yaml apiVersion: ops.kubedb.com/v1alpha1 -kind: MongoDBOpsRequest +kind: PgpoolOpsRequest metadata: - name: mops-rotate + name: tls namespace: demo spec: type: ReconfigureTLS databaseRef: - name: mg-rs + name: pgpool tls: rotateCertificates: true ``` ```yaml apiVersion: ops.kubedb.com/v1alpha1 -kind: MongoDBOpsRequest +kind: PgpoolOpsRequest metadata: - name: mops-change-issuer + name: tls namespace: demo spec: type: ReconfigureTLS databaseRef: - name: mg-rs - tls: - issuerRef: - name: mg-new-issuer - kind: Issuer - apiGroup: "cert-manager.io" -``` - -```yaml -apiVersion: ops.kubedb.com/v1alpha1 -kind: MongoDBOpsRequest -metadata: - name: mops-remove - namespace: demo -spec: - type: ReconfigureTLS - databaseRef: - name: mg-rs + name: pgpool tls: remove: true ``` -Here, we are going to describe the various sections of a `MongoDBOpsRequest` crd. +Here, we are going to describe the various sections of a `PgpoolOpsRequest` crd. -A `MongoDBOpsRequest` object has the following fields in the `spec` section. +A `PgpoolOpsRequest` object has the following fields in the `spec` section. ### spec.databaseRef -`spec.databaseRef` is a required field that point to the [MongoDB](/docs/guides/mongodb/concepts/mongodb.md) object for which the administrative operations will be performed. This field consists of the following sub-field: +`spec.databaseRef` is a required field that point to the [Pgpool](/docs/guides/pgpool/concepts/pgpool.md) object for which the administrative operations will be performed. This field consists of the following sub-field: -- **spec.databaseRef.name :** specifies the name of the [MongoDB](/docs/guides/mongodb/concepts/mongodb.md) object. +- **spec.databaseRef.name :** specifies the name of the [Pgpool](/docs/guides/pgpool/concepts/pgpool.md) object. ### spec.type -`spec.type` specifies the kind of operation that will be applied to the database. Currently, the following types of operations are allowed in `MongoDBOpsRequest`. +`spec.type` specifies the kind of operation that will be applied to the database. Currently, the following types of operations are allowed in `PgpoolOpsRequest`. - `Upgrade` / `UpdateVersion` - `HorizontalScaling` - `VerticalScaling` -- `VolumeExpansion` - `Reconfigure` - `ReconfigureTLS` - `Restart` -> You can perform only one type of operation on a single `MongoDBOpsRequest` CR. For example, if you want to update your database and scale up its replica then you have to create two separate `MongoDBOpsRequest`. At first, you have to create a `MongoDBOpsRequest` for updating. Once it is completed, then you can create another `MongoDBOpsRequest` for scaling. +> You can perform only one type of operation on a single `PgpoolOpsRequest` CR. For example, if you want to update your database and scale up its replica then you have to create two separate `PgpoolOpsRequest`. At first, you have to create a `PgpoolOpsRequest` for updating. Once it is completed, then you can create another `PgpoolOpsRequest` for scaling. > Note: There is an exception to the above statement. It is possible to specify both `spec.configuration` & `spec.verticalScaling` in a OpsRequest of type `VerticalScaling`. ### spec.updateVersion -If you want to update you MongoDB version, you have to specify the `spec.updateVersion` section that specifies the desired version information. This field consists of the following sub-field: - -- `spec.updateVersion.targetVersion` refers to a [MongoDBVersion](/docs/guides/mongodb/concepts/catalog.md) CR that contains the MongoDB version information where you want to update. +If you want to update your Pgpool version, you have to specify the `spec.updateVersion` section that specifies the desired version information. This field consists of the following sub-field: -Have a look on the [`updateConstraints`](/docs/guides/mongodb/concepts/catalog.md#specupdateconstraints) of the mongodbVersion spec to know which versions are supported for updating from the current version. -```yaml -kubectl get mgversion -o=jsonpath='{.spec.updateConstraints}' | jq -``` +- `spec.updateVersion.targetVersion` refers to a [PgpoolVersion](/docs/guides/pgpool/concepts/catalog.md) CR that contains the Pgpool version information where you want to update. -> You can only update between MongoDB versions. KubeDB does not support downgrade for MongoDB. ### spec.horizontalScaling -If you want to scale-up or scale-down your MongoDB cluster or different components of it, you have to specify `spec.horizontalScaling` section. This field consists of the following sub-field: +If you want to scale-up or scale-down your Pgpool cluster or different components of it, you have to specify `spec.horizontalScaling` section. This field consists of the following sub-field: -- `spec.horizontalScaling.replicas` indicates the desired number of nodes for MongoDB replicaset cluster after scaling. For example, if your cluster currently has 4 replicaset nodes, and you want to add additional 2 nodes then you have to specify 6 in `spec.horizontalScaling.replicas` field. Similarly, if you want to remove one node from the cluster, you have to specify 3 in `spec.horizontalScaling.replicas` field. -- `spec.horizontalScaling.configServer.replicas` indicates the desired number of ConfigServer nodes for Sharded MongoDB cluster after scaling. -- `spec.horizontalScaling.mongos.replicas` indicates the desired number of Mongos nodes for Sharded MongoDB cluster after scaling. -- `spec.horizontalScaling.shard` indicates the configuration of shard nodes for Sharded MongoDB cluster after scaling. This field consists of the following sub-field: - - `spec.horizontalScaling.shard.replicas` indicates the number of replicas each shard will have after scaling. - - `spec.horizontalScaling.shard.shards` indicates the number of shards after scaling +- `spec.horizontalScaling.node` indicates the desired number of pods for Pgpool cluster after scaling. For example, if your cluster currently has 4 pods, and you want to add additional 2 pods then you have to specify 6 in `spec.horizontalScaling.node` field. Similarly, if you want to remove one pod from the cluster, you have to specify 3 in `spec.horizontalScaling.node` field. ### spec.verticalScaling -`spec.verticalScaling` is a required field specifying the information of `MongoDB` resources like `cpu`, `memory` etc that will be scaled. This field consists of the following sub-fields: +`spec.verticalScaling` is a required field specifying the information of `Pgpool` resources like `cpu`, `memory` etc. that will be scaled. This field consists of the following sub-fields: -- `spec.verticalScaling.standalone` indicates the desired resources for standalone MongoDB database after scaling. -- `spec.verticalScaling.replicaSet` indicates the desired resources for replicaSet of MongoDB database after scaling. -- `spec.verticalScaling.mongos` indicates the desired resources for Mongos nodes of Sharded MongoDB database after scaling. -- `spec.verticalScaling.configServer` indicates the desired resources for ConfigServer nodes of Sharded MongoDB database after scaling. -- `spec.verticalScaling.shard` indicates the desired resources for Shard nodes of Sharded MongoDB database after scaling. -- `spec.verticalScaling.exporter` indicates the desired resources for the `exporter` container. -- `spec.verticalScaling.arbiter` indicates the desired resources for arbiter node of MongoDB database after scaling. -- `spec.verticalScaling.coordinator` indicates the desired resources for the coordinator container. +- `spec.verticalScaling.node` indicates the desired resources for PetSet of Pgpool after scaling. -All of them has the below structure: +It has the below structure: ```yaml requests: @@ -619,91 +240,34 @@ limits: Here, when you specify the resource request, the scheduler uses this information to decide which node to place the container of the Pod on and when you specify a resource limit for the container, the `kubelet` enforces those limits so that the running container is not allowed to use more of that resource than the limit you set. You can found more details from [here](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/). -### spec.volumeExpansion - -> To use the volume expansion feature the storage class must support volume expansion - -If you want to expand the volume of your MongoDB cluster or different components of it, you have to specify `spec.volumeExpansion` section. This field consists of the following sub-field: - -- `spec.mode` specifies the volume expansion mode. Supported values are `Online` & `Offline`. The default is `Online`. -- `spec.volumeExpansion.standalone` indicates the desired size for the persistent volume of a standalone MongoDB database. -- `spec.volumeExpansion.replicaSet` indicates the desired size for the persistent volume of replicaSets of a MongoDB database. -- `spec.volumeExpansion.configServer` indicates the desired size for the persistent volume of the config server of a sharded MongoDB database. -- `spec.volumeExpansion.shard` indicates the desired size for the persistent volume of shards of a sharded MongoDB database. - -All of them refer to [Quantity](https://v1-22.docs.kubernetes.io/docs/reference/generated/kubernetes-api/v1.22/#quantity-resource-core) types of Kubernetes. - -Example usage of this field is given below: - -```yaml -spec: - volumeExpansion: - shard: "2Gi" -``` - -This will expand the volume size of all the shard nodes to 2 GB. ### spec.configuration -If you want to reconfigure your Running MongoDB cluster or different components of it with new custom configuration, you have to specify `spec.configuration` section. This field consists of the following sub-field: +If you want to reconfigure your Running Pgpool cluster or different components of it with new custom configuration, you have to specify `spec.configuration` section. This field consists of the following sub-field: -- `spec.configuration.standalone` indicates the desired new custom configuration for a standalone MongoDB database. -- `spec.configuration.replicaSet` indicates the desired new custom configuration for replicaSet of a MongoDB database. -- `spec.configuration.configServer` indicates the desired new custom configuration for config servers of a sharded MongoDB database. -- `spec.configuration.mongos` indicates the desired new custom configuration for the mongos nodes of a sharded MongoDB database. -- `spec.configuration.shard` indicates the desired new custom configuration for the shard nodes of a sharded MongoDB database. -- `spec.verticalScaling.arbiter` indicates the desired new custom configuration for arbiter node of MongoDB database after scaling. - -All of them has the following sub-fields: - -- `configSecret` points to a secret in the same namespace of a MongoDB resource, which contains the new custom configurations. If there are any configSecret set before in the database, this secret will replace it. +- `configSecret` points to a secret in the same namespace of a Pgpool resource, which contains the new custom configurations. If there are any configSecret set before in the database, this secret will replace it. - `applyConfig` contains the new custom config as a string which will be merged with the previous configuration. -- `applyConfig` is a map where key supports 3 values, namely `mongod.conf`, `replicaset.json`, `configuration.js`. And value represents the corresponding configurations. -For your information, replicaset.json is used to modify replica set configurations, which we see in the output of `rs.config()`. And `configurarion.js` is used to apply a js script to configure mongodb at runtime. -KubeDB provisioner operator applies these two directly while reconciling. +- `applyConfig` is a map where key supports 1 values, namely `pgpool.conf`. ```yaml applyConfig: - configuration.js: | - print("hello world!!!!") - replicaset.json: | - { - "settings" : { - "electionTimeoutMillis" : 4000 - } - } - mongod.conf: | - net: - maxIncomingConnections: 30000 + pgpool.conf: |- + max_pool = 30 ``` -- `removeCustomConfig` is a boolean field. Specify this field to true if you want to remove all the custom configuration from the deployed mongodb server. +- `removeCustomConfig` is a boolean field. Specify this field to true if you want to remove all the custom configuration from the deployed pgpool server. ### spec.tls -If you want to reconfigure the TLS configuration of your database i.e. add TLS, remove TLS, update issuer/cluster issuer or Certificates and rotate the certificates, you have to specify `spec.tls` section. This field consists of the following sub-field: +If you want to reconfigure the TLS configuration of your pgpool cluster i.e. add TLS, remove TLS, update issuer/cluster issuer or Certificates and rotate the certificates, you have to specify `spec.tls` section. This field consists of the following sub-field: - `spec.tls.issuerRef` specifies the issuer name, kind and api group. -- `spec.tls.certificates` specifies the certificates. You can learn more about this field from [here](/docs/guides/mongodb/concepts/mongodb.md#spectls). +- `spec.tls.certificates` specifies the certificates. You can learn more about this field from [here](/docs/guides/pgpool/concepts/pgpool.md#spectls). - `spec.tls.rotateCertificates` specifies that we want to rotate the certificate of this database. - `spec.tls.remove` specifies that we want to remove tls from this database. - -### spec.readinessCriteria - -`spec.readinessCriteria` is the criteria for checking readiness of a MongoDB pod after restarting it. It has two fields. -- `spec.readinessCriteria.oplogMaxLagSeconds` defines the maximum allowed lagging time between the primary & secondary. -- `spec.readinessCriteria.objectsCountDiffPercentage` denotes the maximum allowed object-count-difference between the primary & secondary. - -```yaml -... -spec: - readinessCriteria: - oplogMaxLagSeconds: 20 - objectsCountDiffPercentage: 10 -... -``` -Exceeding these thresholds results in opsRequest failure. One thing to note that, readinessCriteria field will make impact only if pod restarting is associated with the opsRequest type. +- `spec.tls.sslMode` specifies what will be the ssl mode of the cluster allowed values are: disable,allow,prefer,require,verify-ca,verify-full +- `spec.tls.clientAuthMode` specifies what will be the client authentication mode of the cluster allowed values are: md5,scram,cert ### spec.timeout As we internally retry the ops request steps multiple times, This `timeout` field helps the users to specify the timeout for those steps of the ops request (in second). @@ -714,64 +278,45 @@ This field controls the execution of obsRequest depending on the database state. Use IfReady, if you want to process the opsRequest only when the database is Ready. And use Always, if you want to process the execution of opsReq irrespective of the Database state. -### MongoDBOpsRequest `Status` +### PgpoolOpsRequest `Status` -`.status` describes the current state and progress of a `MongoDBOpsRequest` operation. It has the following fields: +`.status` describes the current state and progress of a `PgpoolOpsRequest` operation. It has the following fields: ### status.phase -`status.phase` indicates the overall phase of the operation for this `MongoDBOpsRequest`. It can have the following three values: +`status.phase` indicates the overall phase of the operation for this `PgpoolOpsRequest`. It can have the following three values: | Phase | Meaning | |-------------|------------------------------------------------------------------------------------| -| Successful | KubeDB has successfully performed the operation requested in the MongoDBOpsRequest | -| Progressing | KubeDB has started the execution of the applied MongoDBOpsRequest | -| Failed | KubeDB has failed the operation requested in the MongoDBOpsRequest | -| Denied | KubeDB has denied the operation requested in the MongoDBOpsRequest | -| Skipped | KubeDB has skipped the operation requested in the MongoDBOpsRequest | +| Successful | KubeDB has successfully performed the operation requested in the PgpoolOpsRequest | +| Progressing | KubeDB has started the execution of the applied PgpoolOpsRequest | +| Failed | KubeDB has failed the operation requested in the PgpoolOpsRequest | +| Denied | KubeDB has denied the operation requested in the PgpoolOpsRequest | +| Skipped | KubeDB has skipped the operation requested in the PgpoolOpsRequest | Important: Ops-manager Operator can skip an opsRequest, only if its execution has not been started yet & there is a newer opsRequest applied in the cluster. `spec.type` has to be same as the skipped one, in this case. ### status.observedGeneration -`status.observedGeneration` shows the most recent generation observed by the `MongoDBOpsRequest` controller. +`status.observedGeneration` shows the most recent generation observed by the `PgpoolOpsRequest` controller. ### status.conditions -`status.conditions` is an array that specifies the conditions of different steps of `MongoDBOpsRequest` processing. Each condition entry has the following fields: - -- `types` specifies the type of the condition. MongoDBOpsRequest has the following types of conditions: - -| Type | Meaning | -| ----------------------------- | ------------------------------------------------------------------------- | -| `Progressing` | Specifies that the operation is now in the progressing state | -| `Successful` | Specifies such a state that the operation on the database was successful. | -| `HaltDatabase` | Specifies such a state that the database is halted by the operator | -| `ResumeDatabase` | Specifies such a state that the database is resumed by the operator | -| `Failed` | Specifies such a state that the operation on the database failed. | -| `StartingBalancer` | Specifies such a state that the balancer has successfully started | -| `StoppingBalancer` | Specifies such a state that the balancer has successfully stopped | -| `UpdateShardImage` | Specifies such a state that the Shard Images has been updated | -| `UpdateReplicaSetImage` | Specifies such a state that the Replicaset Image has been updated | -| `UpdateConfigServerImage` | Specifies such a state that the ConfigServer Image has been updated | -| `UpdateMongosImage` | Specifies such a state that the Mongos Image has been updated | -| `UpdateStatefulSetResources` | Specifies such a state that the Statefulset resources has been updated | -| `UpdateShardResources` | Specifies such a state that the Shard resources has been updated | -| `UpdateReplicaSetResources` | Specifies such a state that the Replicaset resources has been updated | -| `UpdateConfigServerResources` | Specifies such a state that the ConfigServer resources has been updated | -| `UpdateMongosResources` | Specifies such a state that the Mongos resources has been updated | -| `ScaleDownReplicaSet` | Specifies such a state that the scale down operation of replicaset | -| `ScaleUpReplicaSet` | Specifies such a state that the scale up operation of replicaset | -| `ScaleUpShardReplicas` | Specifies such a state that the scale up operation of shard replicas | -| `ScaleDownShardReplicas` | Specifies such a state that the scale down operation of shard replicas | -| `ScaleDownConfigServer` | Specifies such a state that the scale down operation of config server | -| `ScaleUpConfigServer` | Specifies such a state that the scale up operation of config server | -| `ScaleMongos` | Specifies such a state that the scale down operation of replicaset | -| `VolumeExpansion` | Specifies such a state that the volume expansion operaton of the database | -| `ReconfigureReplicaset` | Specifies such a state that the reconfiguration of replicaset nodes | -| `ReconfigureMongos` | Specifies such a state that the reconfiguration of mongos nodes | -| `ReconfigureShard` | Specifies such a state that the reconfiguration of shard nodes | -| `ReconfigureConfigServer` | Specifies such a state that the reconfiguration of config server nodes | +`status.conditions` is an array that specifies the conditions of different steps of `PgpoolOpsRequest` processing. Each condition entry has the following fields: + +- `types` specifies the type of the condition. PgpoolOpsRequest has the following types of conditions: + +| Type | Meaning | +|--------------------------------|---------------------------------------------------------------------------| +| `Progressing` | Specifies that the operation is now in the progressing state | +| `Successful` | Specifies such a state that the operation on the database was successful. | +| `DatabasePauseSucceeded` | Specifies such a state that the database is paused by the operator | +| `ResumeDatabase` | Specifies such a state that the database is resumed by the operator | +| `Failed` | Specifies such a state that the operation on the database failed. | +| `UpdatePetSetResources` | Specifies such a state that the PetSet resources has been updated | +| `UpdatePetSet` | Specifies such a state that the PetSet has been updated | +| `IssueCertificatesSucceeded` | Specifies such a state that the tls certificate issuing is successful | +| `UpdateDatabase` | Specifies such a state that the CR of Pgpool is updated | - The `status` field is a string, with possible values `True`, `False`, and `Unknown`. - `status` will be `True` if the current transition succeeded. From 43d9dbcf003f7fcf6f7f638cbbbb125a7f097940 Mon Sep 17 00:00:00 2001 From: MobarakHsn Date: Mon, 15 Jul 2024 18:42:15 +0600 Subject: [PATCH 03/16] Add pgpool monitoring Signed-off-by: MobarakHsn --- .../pgpool/monitroing/builtin-prom-pp.yaml | 13 + .../pgpool/monitroing/coreos-prom-pp.yaml | 18 + docs/guides/pgpool/concepts/appbinding.md | 4 +- docs/guides/pgpool/monitoring/_index.md | 10 + docs/guides/pgpool/monitoring/overview.md | 86 +++++ .../monitoring/using-builtin-prometheus.md | 360 ++++++++++++++++++ .../monitoring/using-prometheus-operator.md | 354 +++++++++++++++++ .../monitoring/pp-builtin-prom-target.png | Bin 0 -> 71252 bytes .../monitoring/pp-coreos-prom-target.png | Bin 0 -> 75174 bytes 9 files changed, 843 insertions(+), 2 deletions(-) create mode 100644 docs/examples/pgpool/monitroing/builtin-prom-pp.yaml create mode 100644 docs/examples/pgpool/monitroing/coreos-prom-pp.yaml create mode 100755 docs/guides/pgpool/monitoring/_index.md create mode 100644 docs/guides/pgpool/monitoring/overview.md create mode 100644 docs/guides/pgpool/monitoring/using-builtin-prometheus.md create mode 100644 docs/guides/pgpool/monitoring/using-prometheus-operator.md create mode 100644 docs/images/pgpool/monitoring/pp-builtin-prom-target.png create mode 100644 docs/images/pgpool/monitoring/pp-coreos-prom-target.png diff --git a/docs/examples/pgpool/monitroing/builtin-prom-pp.yaml b/docs/examples/pgpool/monitroing/builtin-prom-pp.yaml new file mode 100644 index 0000000000..7461964752 --- /dev/null +++ b/docs/examples/pgpool/monitroing/builtin-prom-pp.yaml @@ -0,0 +1,13 @@ +apiVersion: kubedb.com/v1alpha2 +kind: Pgpool +metadata: + name: builtin-prom-pp + namespace: demo +spec: + version: "4.5.0" + deletionPolicy: WipeOut + postgresRef: + name: ha-postgres + namespace: demo + monitor: + agent: prometheus.io/builtin \ No newline at end of file diff --git a/docs/examples/pgpool/monitroing/coreos-prom-pp.yaml b/docs/examples/pgpool/monitroing/coreos-prom-pp.yaml new file mode 100644 index 0000000000..2349aed470 --- /dev/null +++ b/docs/examples/pgpool/monitroing/coreos-prom-pp.yaml @@ -0,0 +1,18 @@ +apiVersion: kubedb.com/v1alpha2 +kind: Pgpool +metadata: + name: coreos-prom-pp + namespace: demo +spec: + version: "4.5.0" + postgresRef: + name: ha-postgres + namespace: demo + deletionPolicy: WipeOut + monitor: + agent: prometheus.io/operator + prometheus: + serviceMonitor: + labels: + release: prometheus + interval: 10s \ No newline at end of file diff --git a/docs/guides/pgpool/concepts/appbinding.md b/docs/guides/pgpool/concepts/appbinding.md index 105ed2829e..91dde2c9e0 100644 --- a/docs/guides/pgpool/concepts/appbinding.md +++ b/docs/guides/pgpool/concepts/appbinding.md @@ -114,13 +114,13 @@ Elasticsearch: #### spec.clientConfig -`spec.clientConfig` defines how to communicate with the target database. You can use either an URL or a Kubernetes service to connect with the database. You don't have to specify both of them. +`spec.clientConfig` defines how to communicate with the target database. You can use either a URL or a Kubernetes service to connect with the database. You don't have to specify both of them. You can configure following fields in `spec.clientConfig` section: - **spec.clientConfig.url** - `spec.clientConfig.url` gives the location of the database, in standard URL form (i.e. `[scheme://]host:port/[path]`). This is particularly useful when the target database is running outside of the Kubernetes cluster. If your database is running inside the cluster, use `spec.clientConfig.service` section instead. + `spec.clientConfig.url` gives the location of the database, in standard URL form (i.e. `[scheme://]host:port/[path]`). This is particularly useful when the target database is running outside the Kubernetes cluster. If your database is running inside the cluster, use `spec.clientConfig.service` section instead. > Note that, attempting to use a user or basic auth (e.g. `user:password@host:port`) is not allowed. Stash will insert them automatically from the respective secret. Fragments ("#...") and query parameters ("?...") are not allowed either. diff --git a/docs/guides/pgpool/monitoring/_index.md b/docs/guides/pgpool/monitoring/_index.md new file mode 100755 index 0000000000..bc68f8664e --- /dev/null +++ b/docs/guides/pgpool/monitoring/_index.md @@ -0,0 +1,10 @@ +--- +title: Monitoring Pgpool +menu: + docs_{{ .version }}: + identifier: pp-monitoring-pgpool + name: Monitoring + parent: pp-pgpool-guides + weight: 50 +menu_name: docs_{{ .version }} +--- diff --git a/docs/guides/pgpool/monitoring/overview.md b/docs/guides/pgpool/monitoring/overview.md new file mode 100644 index 0000000000..d5f14165cb --- /dev/null +++ b/docs/guides/pgpool/monitoring/overview.md @@ -0,0 +1,86 @@ +--- +title: Pgpool Monitoring Overview +description: Pgpool Monitoring Overview +menu: + docs_{{ .version }}: + identifier: mg-monitoring-overview + name: Overview + parent: mg-monitoring-pgpool + weight: 10 +menu_name: docs_{{ .version }} +section_menu_id: guides +--- + +> New to KubeDB? Please start [here](/docs/README.md). + +# Monitoring Pgpool with KubeDB + +KubeDB has native support for monitoring via [Prometheus](https://prometheus.io/). You can use builtin [Prometheus](https://github.com/prometheus/prometheus) scraper or [Prometheus operator](https://github.com/prometheus-operator/prometheus-operator) to monitor KubeDB managed databases. This tutorial will show you how database monitoring works with KubeDB and how to configure Database crd to enable monitoring. + +## Overview + +KubeDB uses Prometheus [exporter](https://prometheus.io/docs/instrumenting/exporters/#databases) images to export Prometheus metrics for respective databases. Following diagram shows the logical flow of database monitoring with KubeDB. + +

+  Database Monitoring Flow +

+ +When a user creates a database crd with `spec.monitor` section configured, KubeDB operator provisions the respective database and injects an exporter image as sidecar to the database pod. It also creates a dedicated stats service with name `{database-crd-name}-stats` for monitoring. Prometheus server can scrape metrics using this stats service. + +## Configure Monitoring + +In order to enable monitoring for a database, you have to configure `spec.monitor` section. KubeDB provides following options to configure `spec.monitor` section: + +| Field | Type | Uses | +| -------------------------------------------------- | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | +| `spec.monitor.agent` | `Required` | Type of the monitoring agent that will be used to monitor this database. It can be `prometheus.io/builtin` or `prometheus.io/operator`. | +| `spec.monitor.prometheus.exporter.port` | `Optional` | Port number where the exporter side car will serve metrics. | +| `spec.monitor.prometheus.exporter.args` | `Optional` | Arguments to pass to the exporter sidecar. | +| `spec.monitor.prometheus.exporter.env` | `Optional` | List of environment variables to set in the exporter sidecar container. | +| `spec.monitor.prometheus.exporter.resources` | `Optional` | Resources required by exporter sidecar container. | +| `spec.monitor.prometheus.exporter.securityContext` | `Optional` | Security options the exporter should run with. | +| `spec.monitor.prometheus.serviceMonitor.labels` | `Optional` | Labels for `ServiceMonitor` crd. | +| `spec.monitor.prometheus.serviceMonitor.interval` | `Optional` | Interval at which metrics should be scraped. | + +## Sample Configuration + +A sample YAML for Pgpool crd with `spec.monitor` section configured to enable monitoring with [Prometheus operator](https://github.com/prometheus-operator/prometheus-operator) is shown below. + +```yaml +apiVersion: kubedb.com/v1alpha2 +kind: Pgpool +metadata: + name: sample-pgpool + namespace: databases +spec: + version: "4.5.0" + deletionPolicy: WipeOut + postgresRef: + name: ha-postgres + namespace: demo + monitor: + agent: prometheus.io/operator + prometheus: + serviceMonitor: + labels: + release: prometheus + exporter: + resources: + requests: + memory: 512Mi + cpu: 200m + limits: + memory: 512Mi + cpu: 250m + securityContext: + runAsUser: 70 + allowPrivilegeEscalation: false +``` + +Here, we have specified that we are going to monitor this server using Prometheus operator through `spec.monitor.agent: prometheus.io/operator`. KubeDB will create a `ServiceMonitor` crd in databases namespace and this `ServiceMonitor` will have `release: prometheus` label. + +## Next Steps + +- Learn how to monitor Pgpool database with KubeDB using [builtin-Prometheus](/docs/guides/pgpool/monitoring/using-builtin-prometheus.md) +- Learn how to monitor Pgpool database with KubeDB using [Prometheus operator](/docs/guides/pgpool/monitoring/using-prometheus-operator.md). + diff --git a/docs/guides/pgpool/monitoring/using-builtin-prometheus.md b/docs/guides/pgpool/monitoring/using-builtin-prometheus.md new file mode 100644 index 0000000000..95f17fb5c9 --- /dev/null +++ b/docs/guides/pgpool/monitoring/using-builtin-prometheus.md @@ -0,0 +1,360 @@ +--- +title: Monitor Pgpool using Builtin Prometheus Discovery +menu: + docs_{{ .version }}: + identifier: pp-using-builtin-prometheus-monitoring + name: Builtin Prometheus + parent: pp-monitoring-pgpool + weight: 20 +menu_name: docs_{{ .version }} +section_menu_id: guides +--- + +> New to KubeDB? Please start [here](/docs/README.md). + +# Monitoring Pgpool with builtin Prometheus + +This tutorial will show you how to monitor Pgpool database using builtin [Prometheus](https://github.com/prometheus/prometheus) scraper. + +## Before You Begin + +- At first, you need to have a Kubernetes cluster, and the kubectl command-line tool must be configured to communicate with your cluster. If you do not already have a cluster, you can create one by using [kind](https://kind.sigs.k8s.io/docs/user/quick-start/). + +- Install KubeDB operator in your cluster following the steps [here](/docs/setup/README.md). + +- If you are not familiar with how to configure Prometheus to scrape metrics from various Kubernetes resources, please read the tutorial from [here](https://github.com/appscode/third-party-tools/tree/master/monitoring/prometheus/builtin). + +- To learn how Prometheus monitoring works with KubeDB in general, please visit [here](/docs/guides/pgpool/monitoring/overview.md). + +- To keep Prometheus resources isolated, we are going to use a separate namespace called `monitoring` to deploy respective monitoring resources. We are going to deploy database in `demo` namespace. + + ```bash + $ kubectl create ns monitoring + namespace/monitoring created + + $ kubectl create ns demo + namespace/demo created + ``` + +> Note: YAML files used in this tutorial are stored in [docs/examples/pgpool](https://github.com/kubedb/docs/tree/{{< param "info.version" >}}/docs/examples/pgpool) folder in GitHub repository [kubedb/docs](https://github.com/kubedb/docs). + +## Deploy Pgpool with Monitoring Enabled + +At first, let's deploy a Pgpool with monitoring enabled. Below is the Pgpool object that we are going to create. + +```yaml +apiVersion: kubedb.com/v1alpha2 +kind: Pgpool +metadata: + name: builtin-prom-pp + namespace: demo +spec: + version: "4.5.0" + deletionPolicy: WipeOut + postgresRef: + name: ha-postgres + namespace: demo + monitor: + agent: prometheus.io/builtin +``` + +Here, + +- `spec.monitor.agent: prometheus.io/builtin` specifies that we are going to monitor this server using builtin Prometheus scraper. + +Let's create the Pgpool crd we have shown above. + +```bash +$ kubectl apply -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/pgpool/monitoring/builtin-prom-pp.yaml +pgpool.kubedb.com/builtin-prom-pp created +``` + +Now, wait for the database to go into `Running` state. + +```bash +$ kubectl get pp -n demo builtin-prom-pp +NAME TYPE VERSION STATUS AGE +builtin-prom-pp kubedb.com/v1alpha2 4.5.0 Ready 65s +``` + +KubeDB will create a separate stats service with name `{Pgpool crd name}-stats` for monitoring purpose. + +```bash +$ kubectl get svc -n demo --selector="app.kubernetes.io/instance=builtin-prom-pp" +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +builtin-prom-pp ClusterIP 10.96.124.220 9999/TCP,9595/TCP 2m20s +builtin-prom-pp-pods ClusterIP None 9999/TCP 2m20s +builtin-prom-pp-stats ClusterIP 10.96.132.175 9719/TCP 2m20s +``` + +Here, `builtin-prom-pp-stats` service has been created for monitoring purpose. Let's describe the service. + +```bash +$ kubectl describe svc -n demo builtin-prom-pp-stats +Name: builtin-prom-pp-stats +Namespace: demo +Labels: app.kubernetes.io/component=connection-pooler + app.kubernetes.io/instance=builtin-prom-pp + app.kubernetes.io/managed-by=kubedb.com + app.kubernetes.io/name=pgpools.kubedb.com +Annotations: monitoring.appscode.com/agent: prometheus.io/builtin + prometheus.io/path: /metrics + prometheus.io/port: 9719 + prometheus.io/scrape: true +Selector: app.kubernetes.io/instance=builtin-prom-pp,app.kubernetes.io/managed-by=kubedb.com,app.kubernetes.io/name=pgpools.kubedb.com +Type: ClusterIP +IP Family Policy: SingleStack +IP Families: IPv4 +IP: 10.96.132.175 +IPs: 10.96.132.175 +Port: metrics 9719/TCP +TargetPort: metrics/TCP +Endpoints: 10.244.0.27:9719 +Session Affinity: None +Events: +``` + +You can see that the service contains following annotations. + +```bash +prometheus.io/path: /metrics +prometheus.io/port: 9719 +prometheus.io/scrape: true +``` + +The Prometheus server will discover the service endpoint using these specifications and will scrape metrics from the exporter. + +## Configure Prometheus Server + +Now, we have to configure a Prometheus scraping job to scrape the metrics using this service. We are going to configure scraping job similar to this [kubernetes-service-endpoints](https://github.com/appscode/third-party-tools/tree/master/monitoring/prometheus/builtin#kubernetes-service-endpoints) job that scrapes metrics from endpoints of a service. + +Let's configure a Prometheus scraping job to collect metrics from this service. + +```yaml +- job_name: 'kubedb-databases' + honor_labels: true + scheme: http + kubernetes_sd_configs: + - role: endpoints + # by default Prometheus server select all Kubernetes services as possible target. + # relabel_config is used to filter only desired endpoints + relabel_configs: + # keep only those services that has "prometheus.io/scrape","prometheus.io/path" and "prometheus.io/port" anootations + - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scrape, __meta_kubernetes_service_annotation_prometheus_io_port] + separator: ; + regex: true;(.*) + action: keep + # currently KubeDB supported databases uses only "http" scheme to export metrics. so, drop any service that uses "https" scheme. + - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scheme] + action: drop + regex: https + # only keep the stats services created by KubeDB for monitoring purpose which has "-stats" suffix + - source_labels: [__meta_kubernetes_service_name] + separator: ; + regex: (.*-stats) + action: keep + # service created by KubeDB will have "app.kubernetes.io/name" and "app.kubernetes.io/instance" annotations. keep only those services that have these annotations. + - source_labels: [__meta_kubernetes_service_label_app_kubernetes_io_name] + separator: ; + regex: (.*) + action: keep + # read the metric path from "prometheus.io/path: " annotation + - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_path] + action: replace + target_label: __metrics_path__ + regex: (.+) + # read the port from "prometheus.io/port: " annotation and update scraping address accordingly + - source_labels: [__address__, __meta_kubernetes_service_annotation_prometheus_io_port] + action: replace + target_label: __address__ + regex: ([^:]+)(?::\d+)?;(\d+) + replacement: $1:$2 + # add service namespace as label to the scraped metrics + - source_labels: [__meta_kubernetes_namespace] + separator: ; + regex: (.*) + target_label: namespace + replacement: $1 + action: replace + # add service name as a label to the scraped metrics + - source_labels: [__meta_kubernetes_service_name] + separator: ; + regex: (.*) + target_label: service + replacement: $1 + action: replace + # add stats service's labels to the scraped metrics + - action: labelmap + regex: __meta_kubernetes_service_label_(.+) +``` + +### Configure Existing Prometheus Server + +If you already have a Prometheus server running, you have to add above scraping job in the `ConfigMap` used to configure the Prometheus server. Then, you have to restart it for the updated configuration to take effect. + +>If you don't use a persistent volume for Prometheus storage, you will lose your previously scraped data on restart. + +### Deploy New Prometheus Server + +If you don't have any existing Prometheus server running, you have to deploy one. In this section, we are going to deploy a Prometheus server in `monitoring` namespace to collect metrics using this stats service. + +**Create ConfigMap:** + +At first, create a ConfigMap with the scraping configuration. Bellow, the YAML of ConfigMap that we are going to create in this tutorial. + +```yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: prometheus-config + labels: + app: prometheus-demo + namespace: monitoring +data: + prometheus.yml: |- + global: + scrape_interval: 5s + evaluation_interval: 5s + scrape_configs: + - job_name: 'kubedb-databases' + honor_labels: true + scheme: http + kubernetes_sd_configs: + - role: endpoints + # by default Prometheus server select all Kubernetes services as possible target. + # relabel_config is used to filter only desired endpoints + relabel_configs: + # keep only those services that has "prometheus.io/scrape","prometheus.io/path" and "prometheus.io/port" anootations + - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scrape, __meta_kubernetes_service_annotation_prometheus_io_port] + separator: ; + regex: true;(.*) + action: keep + # currently KubeDB supported databases uses only "http" scheme to export metrics. so, drop any service that uses "https" scheme. + - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scheme] + action: drop + regex: https + # only keep the stats services created by KubeDB for monitoring purpose which has "-stats" suffix + - source_labels: [__meta_kubernetes_service_name] + separator: ; + regex: (.*-stats) + action: keep + # service created by KubeDB will have "app.kubernetes.io/name" and "app.kubernetes.io/instance" annotations. keep only those services that have these annotations. + - source_labels: [__meta_kubernetes_service_label_app_kubernetes_io_name] + separator: ; + regex: (.*) + action: keep + # read the metric path from "prometheus.io/path: " annotation + - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_path] + action: replace + target_label: __metrics_path__ + regex: (.+) + # read the port from "prometheus.io/port: " annotation and update scraping address accordingly + - source_labels: [__address__, __meta_kubernetes_service_annotation_prometheus_io_port] + action: replace + target_label: __address__ + regex: ([^:]+)(?::\d+)?;(\d+) + replacement: $1:$2 + # add service namespace as label to the scraped metrics + - source_labels: [__meta_kubernetes_namespace] + separator: ; + regex: (.*) + target_label: namespace + replacement: $1 + action: replace + # add service name as a label to the scraped metrics + - source_labels: [__meta_kubernetes_service_name] + separator: ; + regex: (.*) + target_label: service + replacement: $1 + action: replace + # add stats service's labels to the scraped metrics + - action: labelmap + regex: __meta_kubernetes_service_label_(.+) +``` + +Let's create above `ConfigMap`, + +```bash +$ kubectl apply -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/monitoring/builtin-prometheus/prom-config.yaml +configmap/prometheus-config created +``` + +**Create RBAC:** + +If you are using an RBAC enabled cluster, you have to give necessary RBAC permissions for Prometheus. Let's create necessary RBAC stuffs for Prometheus, + +```bash +$ kubectl apply -f https://github.com/appscode/third-party-tools/raw/master/monitoring/prometheus/builtin/artifacts/rbac.yaml +clusterrole.rbac.authorization.k8s.io/prometheus created +serviceaccount/prometheus created +clusterrolebinding.rbac.authorization.k8s.io/prometheus created +``` + +>YAML for the RBAC resources created above can be found [here](https://github.com/appscode/third-party-tools/blob/master/monitoring/prometheus/builtin/artifacts/rbac.yaml). + +**Deploy Prometheus:** + +Now, we are ready to deploy Prometheus server. We are going to use following [deployment](https://github.com/appscode/third-party-tools/blob/master/monitoring/prometheus/builtin/artifacts/deployment.yaml) to deploy Prometheus server. + +Let's deploy the Prometheus server. + +```bash +$ kubectl apply -f https://github.com/appscode/third-party-tools/raw/master/monitoring/prometheus/builtin/artifacts/deployment.yaml +deployment.apps/prometheus created +``` + +### Verify Monitoring Metrics + +Prometheus server is listening to port `9090`. We are going to use [port forwarding](https://kubernetes.io/docs/tasks/access-application-cluster/port-forward-access-application-cluster/) to access Prometheus dashboard. + +At first, let's check if the Prometheus pod is in `Running` state. + +```bash +$ kubectl get pod -n monitoring -l=app=prometheus +NAME READY STATUS RESTARTS AGE +prometheus-d64b668fb-4khbg 1/1 Running 0 21s +``` + +Now, run following command on a separate terminal to forward 9090 port of `prometheus-d64b668fb-4khbg` pod, + +```bash +$ kubectl port-forward -n monitoring prometheus-d64b668fb-4khbg 9090 +Forwarding from 127.0.0.1:9090 -> 9090 +Forwarding from [::1]:9090 -> 9090 +``` + +Now, we can access the dashboard at `localhost:9090`. Open [http://localhost:9090](http://localhost:9090) in your browser. You should see the endpoint of `builtin-prom-pp-stats` service as one of the targets. + +

+   +

+ +Check the labels marked with red rectangle. These labels confirm that the metrics are coming from `Pgpool` database `builtin-prom-pp` through stats service `builtin-prom-pp-stats`. + +Now, you can view the collected metrics and create a graph from homepage of this Prometheus dashboard. You can also use this Prometheus server as data source for [Grafana](https://grafana.com/) and create beautiful dashboard with collected metrics. + +## Cleaning up + +To cleanup the Kubernetes resources created by this tutorial, run following commands + +```bash +kubectl delete -n demo pp/builtin-prom-pp + +kubectl delete -n monitoring deployment.apps/prometheus + +kubectl delete -n monitoring clusterrole.rbac.authorization.k8s.io/prometheus +kubectl delete -n monitoring serviceaccount/prometheus +kubectl delete -n monitoring clusterrolebinding.rbac.authorization.k8s.io/prometheus + +kubectl delete ns demo +kubectl delete ns monitoring +``` + +## Next Steps + + +- Monitor your Pgpool database with KubeDB using [Prometheus-Operator](/docs/guides/pgpool/monitoring/using-prometheus-operator.md). +- Detail concepts of [Pgpool object](/docs/guides/pgpool/concepts/pgpool.md). +- Detail concepts of [PgpoolVersion object](/docs/guides/pgpool/concepts/catalog.md). +- Want to hack on KubeDB? Check our [contribution guidelines](/docs/CONTRIBUTING.md). diff --git a/docs/guides/pgpool/monitoring/using-prometheus-operator.md b/docs/guides/pgpool/monitoring/using-prometheus-operator.md new file mode 100644 index 0000000000..ba7d98fe38 --- /dev/null +++ b/docs/guides/pgpool/monitoring/using-prometheus-operator.md @@ -0,0 +1,354 @@ +--- +title: Monitor Pgpool using Prometheus Operator +menu: + docs_{{ .version }}: + identifier: pp-using-prometheus-operator-monitoring + name: Prometheus Operator + parent: pp-monitoring-pgpool + weight: 15 +menu_name: docs_{{ .version }} +section_menu_id: guides +--- + +> New to KubeDB? Please start [here](/docs/README.md). + +# Monitoring Pgpool Using Prometheus operator + +[Prometheus operator](https://github.com/prometheus-operator/prometheus-operator) provides simple and Kubernetes native way to deploy and configure Prometheus server. This tutorial will show you how to use Prometheus operator to monitor Pgpool database deployed with KubeDB. + +## Before You Begin + +- At first, you need to have a Kubernetes cluster, and the kubectl command-line tool must be configured to communicate with your cluster. If you do not already have a cluster, you can create one by using [kind](https://kind.sigs.k8s.io/docs/user/quick-start/). + +- To learn how Prometheus monitoring works with KubeDB in general, please visit [here](/docs/guides/pgpool/monitoring/overview.md). + +- We need a [Prometheus operator](https://github.com/prometheus-operator/prometheus-operator) instance running. If you don't already have a running instance, you can deploy one using this helm chart [here](https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack). + +- To keep Prometheus resources isolated, we are going to use a separate namespace called `monitoring` to deploy the prometheus operator helm chart. We are going to deploy database in `demo` namespace. + + ```bash + $ kubectl create ns monitoring + namespace/monitoring created + + $ kubectl create ns demo + namespace/demo created + ``` + + + +> Note: YAML files used in this tutorial are stored in [docs/examples/pgpool](https://github.com/kubedb/docs/tree/{{< param "info.version" >}}/docs/examples/pgpool) folder in GitHub repository [kubedb/docs](https://github.com/kubedb/docs). + +## Find out required labels for ServiceMonitor + +We need to know the labels used to select `ServiceMonitor` by a `Prometheus` crd. We are going to provide these labels in `spec.monitor.prometheus.serviceMonitor.labels` field of Pgpool crd so that KubeDB creates `ServiceMonitor` object accordingly. + +At first, let's find out the available Prometheus server in our cluster. + +```bash +$ kubectl get prometheus --all-namespaces +NAMESPACE NAME VERSION REPLICAS AGE +monitoring prometheus-kube-prometheus-prometheus v2.39.0 1 13d +``` + +> If you don't have any Prometheus server running in your cluster, deploy one following the guide specified in **Before You Begin** section. + +Now, let's view the YAML of the available Prometheus server `prometheus` in `monitoring` namespace. +```bash +$ kubectl get prometheus -n monitoring prometheus-kube-prometheus-prometheus -o yaml +``` +```yaml +apiVersion: monitoring.coreos.com/v1 +kind: Prometheus +metadata: + annotations: + meta.helm.sh/release-name: prometheus + meta.helm.sh/release-namespace: monitoring + creationTimestamp: "2024-07-15T09:54:08Z" + generation: 1 + labels: + app: kube-prometheus-stack-prometheus + app.kubernetes.io/instance: prometheus + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/part-of: kube-prometheus-stack + app.kubernetes.io/version: 61.2.0 + chart: kube-prometheus-stack-61.2.0 + heritage: Helm + release: prometheus + name: prometheus-kube-prometheus-prometheus + namespace: monitoring + resourceVersion: "83770" + uid: 7144c771-beff-4285-b7a4-bc105c408bd2 +spec: + alerting: + alertmanagers: + - apiVersion: v2 + name: prometheus-kube-prometheus-alertmanager + namespace: monitoring + pathPrefix: / + port: http-web + automountServiceAccountToken: true + enableAdminAPI: false + evaluationInterval: 30s + externalUrl: http://prometheus-kube-prometheus-prometheus.monitoring:9090 + hostNetwork: false + image: quay.io/prometheus/prometheus:v2.53.0 + listenLocal: false + logFormat: logfmt + logLevel: info + paused: false + podMonitorNamespaceSelector: {} + podMonitorSelector: + matchLabels: + release: prometheus + portName: http-web + probeNamespaceSelector: {} + probeSelector: + matchLabels: + release: prometheus + replicas: 1 + retention: 10d + routePrefix: / + ruleNamespaceSelector: {} + ruleSelector: + matchLabels: + release: prometheus + scrapeConfigNamespaceSelector: {} + scrapeConfigSelector: + matchLabels: + release: prometheus + scrapeInterval: 30s + securityContext: + fsGroup: 2000 + runAsGroup: 2000 + runAsNonRoot: true + runAsUser: 1000 + seccompProfile: + type: RuntimeDefault + serviceAccountName: prometheus-kube-prometheus-prometheus + serviceMonitorNamespaceSelector: {} + serviceMonitorSelector: + matchLabels: + release: prometheus + shards: 1 + tsdb: + outOfOrderTimeWindow: 0s + version: v2.53.0 + walCompression: true +status: + availableReplicas: 1 + conditions: + - lastTransitionTime: "2024-07-15T09:56:09Z" + message: "" + observedGeneration: 1 + reason: "" + status: "True" + type: Available + - lastTransitionTime: "2024-07-15T09:56:09Z" + message: "" + observedGeneration: 1 + reason: "" + status: "True" + type: Reconciled + paused: false + replicas: 1 + selector: app.kubernetes.io/instance=prometheus-kube-prometheus-prometheus,app.kubernetes.io/managed-by=prometheus-operator,app.kubernetes.io/name=prometheus,operator.prometheus.io/name=prometheus-kube-prometheus-prometheus,prometheus=prometheus-kube-prometheus-prometheus + shardStatuses: + - availableReplicas: 1 + replicas: 1 + shardID: "0" + unavailableReplicas: 0 + updatedReplicas: 1 + shards: 1 + unavailableReplicas: 0 + updatedReplicas: 1 +``` + +Notice the `spec.serviceMonitorSelector` section. Here, `release: prometheus` label is used to select `ServiceMonitor` crd. So, we are going to use this label in `spec.monitor.prometheus.serviceMonitor.labels` field of Pgpool crd. + +## Deploy Pgpool with Monitoring Enabled + +At first, let's deploy an Pgpool database with monitoring enabled. Below is the Pgpool object that we are going to create. + +```yaml +apiVersion: kubedb.com/v1alpha2 +kind: Pgpool +metadata: + name: coreos-prom-pp + namespace: demo +spec: + version: "4.5.0" + postgresRef: + name: ha-postgres + namespace: demo + deletionPolicy: WipeOut + monitor: + agent: prometheus.io/operator + prometheus: + serviceMonitor: + labels: + release: prometheus + interval: 10s +``` + +Here, + +- `monitor.agent: prometheus.io/operator` indicates that we are going to monitor this server using Prometheus operator. +- `monitor.prometheus.serviceMonitor.labels` specifies that KubeDB should create `ServiceMonitor` with these labels. +- `monitor.prometheus.interval` indicates that the Prometheus server should scrape metrics from this database with 10 seconds interval. + +Let's create the Pgpool object that we have shown above, + +```bash +$ kubectl create -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/pgpool/monitoring/coreos-prom-pp.yaml +pgpool.kubedb.com/coreos-prom-pp created +``` + +Now, wait for the database to go into `Running` state. + +```bash +$ kubectl get pp -n demo coreos-prom-pp +NAME TYPE VERSION STATUS AGE +coreos-prom-pp kubedb.com/v1alpha2 4.5.0 Ready 65s +``` + +KubeDB will create a separate stats service with name `{Pgpool crd name}-stats` for monitoring purpose. + +```bash +$ kubectl get svc -n demo --selector="app.kubernetes.io/instance=coreos-prom-pp" +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +coreos-prom-pp ClusterIP 10.96.201.180 9999/TCP,9595/TCP 4m3s +coreos-prom-pp-pods ClusterIP None 9999/TCP 4m3s +coreos-prom-pp-stats ClusterIP 10.96.73.22 9719/TCP 4m3s +``` + +Here, `coreos-prom-pp-stats` service has been created for monitoring purpose. + +Let's describe this stats service. + +```bash +$ kubectl describe svc -n demo coreos-prom-pp-stats +``` +```yaml +Name: coreos-prom-pp-stats +Namespace: demo +Labels: app.kubernetes.io/component=connection-pooler + app.kubernetes.io/instance=coreos-prom-pp + app.kubernetes.io/managed-by=kubedb.com + app.kubernetes.io/name=pgpools.kubedb.com +Annotations: monitoring.appscode.com/agent: prometheus.io/operator +Selector: app.kubernetes.io/instance=coreos-prom-pp,app.kubernetes.io/managed-by=kubedb.com,app.kubernetes.io/name=pgpools.kubedb.com +Type: ClusterIP +IP Family Policy: SingleStack +IP Families: IPv4 +IP: 10.96.73.22 +IPs: 10.96.73.22 +Port: metrics 9719/TCP +TargetPort: metrics/TCP +Endpoints: 10.244.0.26:9719 +Session Affinity: None +Events: +``` + +Notice the `Labels` and `Port` fields. `ServiceMonitor` will use this information to target its endpoints. + +KubeDB will also create a `ServiceMonitor` crd in `demo` namespace that select the endpoints of `coreos-prom-pp-stats` service. Verify that the `ServiceMonitor` crd has been created. + +```bash +$ kubectl get servicemonitor -n demo +NAME AGE +coreos-prom-pp-stats 2m40s +``` + +Let's verify that the `ServiceMonitor` has the label that we had specified in `spec.monitor` section of Pgpool crd. + +```bash +$ kubectl get servicemonitor -n demo coreos-prom-pp-stats -o yaml +``` +```yaml +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + creationTimestamp: "2024-07-15T10:42:35Z" + generation: 1 + labels: + app.kubernetes.io/component: connection-pooler + app.kubernetes.io/instance: coreos-prom-pp + app.kubernetes.io/managed-by: kubedb.com + app.kubernetes.io/name: pgpools.kubedb.com + release: prometheus + name: coreos-prom-pp-stats + namespace: demo + ownerReferences: + - apiVersion: v1 + blockOwnerDeletion: true + controller: true + kind: Service + name: coreos-prom-pp-stats + uid: 844d49bc-dfe4-4ab7-a2dc-b5ec43c3b63e + resourceVersion: "87651" + uid: a7b859d8-306e-4061-9f70-4b57c4b784f7 +spec: + endpoints: + - honorLabels: true + interval: 10s + path: /metrics + port: metrics + namespaceSelector: + matchNames: + - demo + selector: + matchLabels: + app.kubernetes.io/component: connection-pooler + app.kubernetes.io/instance: coreos-prom-pp + app.kubernetes.io/managed-by: kubedb.com + app.kubernetes.io/name: pgpools.kubedb.com +``` + +Notice that the `ServiceMonitor` has label `release: prometheus` that we had specified in Pgpool crd. + +Also notice that the `ServiceMonitor` has selector which match the labels we have seen in the `coreos-prom-pp-stats` service. It also, target the `metrics` port that we have seen in the stats service. + +## Verify Monitoring Metrics + +At first, let's find out the respective Prometheus pod for `prometheus` Prometheus server. + +```bash +$ kubectl get pod -n monitoring -l=app.kubernetes.io/name=prometheus +NAME READY STATUS RESTARTS AGE +prometheus-prometheus-kube-prometheus-prometheus-0 2/2 Running 1 13d +``` + +Prometheus server is listening to port `9090` of `prometheus-prometheus-kube-prometheus-prometheus-0` pod. We are going to use [port forwarding](https://kubernetes.io/docs/tasks/access-application-cluster/port-forward-access-application-cluster/) to access Prometheus dashboard. + +Run following command on a separate terminal to forward the port 9090 of `prometheus-prometheus-kube-prometheus-prometheus-0` pod, + +```bash +$ kubectl port-forward -n monitoring prometheus-prometheus-kube-prometheus-prometheus-0 9090 +Forwarding from 127.0.0.1:9090 -> 9090 +Forwarding from [::1]:9090 -> 9090 +``` + +Now, we can access the dashboard at `localhost:9090`. Open [http://localhost:9090](http://localhost:9090) in your browser. You should see `metrics` endpoint of `coreos-prom-pp-stats` service as one of the targets. + +

+  Prometheus Target +

+ +Check the `endpoint` and `service` labels marked by the red rectangles. It verifies that the target is our expected database. Now, you can view the collected metrics and create a graph from homepage of this Prometheus dashboard. You can also use this Prometheus server as data source for [Grafana](https://grafana.com/) and create a beautiful dashboard with collected metrics. + +## Cleaning up + +To clean up the Kubernetes resources created by this tutorial, run following commands + +```bash +kubectl delete -n demo pp/coreos-prom-pp +kubectl delete -n demo pg/ha-postgres +kubectl delete ns demo +``` + +## Next Steps + +- Monitor your Pgpool database with KubeDB using [out-of-the-box builtin-Prometheus](/docs/guides/pgpool/monitoring/using-builtin-prometheus.md). +- Detail concepts of [Pgpool object](/docs/guides/pgpool/concepts/pgpool.md). +- Detail concepts of [PgpoolVersion object](/docs/guides/pgpool/concepts/catalog.md). +- Want to hack on KubeDB? Check our [contribution guidelines](/docs/CONTRIBUTING.md). diff --git a/docs/images/pgpool/monitoring/pp-builtin-prom-target.png b/docs/images/pgpool/monitoring/pp-builtin-prom-target.png new file mode 100644 index 0000000000000000000000000000000000000000..d51ffee029b71d2c0a26504a9460163b03baa5b8 GIT binary patch literal 71252 zcmc$_cT`hb_cn?R3r1{+7!VssM+HKYq6jERZ_-f=HKBI|L=Y4ORGM^<-XQ@(M?gU7 zJqaNcDWQj&03pfU{`8#poc9~!j&IyMzI*o{89OUGtIRdmoX_*Dwcl#0D}zp4I>Ere z0DAQBfi?pJBbb5V;OS$GK*?vxiG2o!mkf^{+|%_kTgF>^p0{qGQoWCCF7Kn`eT!Us z-peqal!!W$Ca?7J`xTcS$)N9&OjoZS4|HND1jBFj9EiML>D>IZH2e_TqvW0re-Mn_r0F!#3?GwItU-I(+*8iVN7m7B4Y%L5b z6YDl3Ha0htwXf2fC6B1H50_!7ZtIj?2!8GVia%NQ(E2_1~!2Pihscv66GZ4YrYy+z@i8=q&jx?HKcx3WJ7@A$eU zBT_aW7+3I0Nxq7@`bhI@rWObDI@CmLvF5BOfxx@eScqynfw{lwvggwLOtI7* zZY_eDU%peKg?f@iI-7`9@Jg?kRo6vA4Kw7S4{6zuy0=u~L#!wBt;l;RDTVk`R#2rl zepT!(`w;a7H~3N97KeBVGX8WbSoS65RtExmDqh){_vdAwVzw`?Yk958 zYv{i_8&^uL9z!%)Nq9NZ=QAR=y2U3X1a%?4fwatT52YS~91k%L6PH zn?6Ay6N$@%DhDZes~dH+y(KA+<zSVXadaCYyqKy!Y4JIg`=Va2&+Cnya?k>i*UeTDY89)V)OrZU= z;=}ls`jS^marLlLS`f3W6R9GA?hnV;h;5CIktfELeOE~7r8r_OQMP`6qZ1f6sWVR4 z)5;OEEdp^Edy?5#n#w9@G?T zN3VlWHgDVle)-h*&Q5;qD<=CJ3LKA%jmu#V^A`lNqCI~;{0Lt$UZGK|!}!7D{uH?N z6`a4v(T$?RpCND~n-60n%cy&v;53a#kNWvb>VBTw!nG!>_ghu>q?8*M~pzOL%MoMIJPgM7*jftbb7x83oK~;15wReo?^spZS zc0aj3op&vfExJA}C4pqCgSMWcv^ z_rO`j%A)SORpfDB1r$~s2fsD0a+HFX%XNThj)k2hd-9)$fjzJ64{FGPj7dLKA}Pei ziQQ^}P9CfUwUJJBBv_M;PLTG-C~&7=&x5xN_`%Bh}&vEbeUFlME>GL0-uAvo5p()GkzUF8q;kwfa zpeZ@oI23GtAnToLLp}Ovnd6SJp{PyY73&GeV7ln+OO`Vv@@ykskFA5z7w)01^6ucl z-?rIt-DEw*Vk-LCo)28t$&-xtNIgX=%s7N!bt^_sLRsI*Vm2=)<7p**q%1?FADxU9 zseU9wYX)rPTTu*b_9cGK{NRrUMaNDCY%lGe`{w>;uQZZrYyxh9tqu3f7!NxIe(Z_8 zQf(|BodqkMeF2l?reKSWEy%uPd*rQU2Hp}g-dKN*0%9`lP zm%VRnQ3kS96>v{(KbOO;`U8NdUO~a`c(#6&<3#DSYm6>LHyavV=(L8o z-_#RT??|KYEy|ty6ZT_5QBJw@Uz&i>X`wn_^+V26$=dU7;b7$R`7X|z^ z#SjzlD`S;qP4>c`PEs;5^?=Knp2k`kVR~23s#k7(3Yb`3s<7wwvbNjlWVBSJV<7sE zpIo&l=?@Snw&`G$b^zyk2B5fNVPIgXa+NGw8;5n!jq1>8JQ2yNzD27OuT5W!jh~}8 zjJ-2dmXe(o1j8ix0dF(G(!xzMntI~M&K`n{l*F=)Z?us8_Bn@h3+@m2Sg+yrjrwCj zA2HrP6aHYHui>47?0hvgx6rx}3@UpiaakSfwEIcj!6-8$s%CM1=(3{P;ujrb1C>Dj zP9dzo5zlby!?0SbAcM>%EAUpOpR$qC0ucM%{mIPvi3Kqr65}!!d2{)q3B<{9qFGq& z>Q6!NGCPLqQGbLkYijPl3$;1Ub1o0>e&YW>_;j*Ie?YgVC}VUeZfX%7S+CRf{}c zzCWlxiMi4kAboCO=RII|3XF}5ZZ8;-Y)nb?uwT}sp7`&C4j?ID zFq3<(y)vHA{QFmWtA$z?j_SDEbt0}US8mpNJls7nOCU(A9r-B?;3@-vRFk}P3x+98$5?K~ zg4&9YKAo6HwPP&d7GpGbB8pHpjS47AD&=}x2MwY+lnlmxFhW{|yCyNQ3Z0Z0|21F= zz8GoIZl@T?5oP*tG~!3V$+lP##BBQV?t4>uvz2!h^mVsvDH|850i&3P-!zJi2etJ? z3T8YLw#k5~jz14!2 zf)tcQJYHUwfLOm2qHol@rm}!Mu38z>#~V3I0H5P$fO%i5@qu%My13gBwVVQ zU~GWb`x#&Rv5I=uoPrb7sC1lIJ=uYir}oOxmrstyxs}a_34q639ZQ;I^lQ~$(J#L5 zmMwFn;dT*N9tvs2HS8c!zLAB=V}%jd_5#3R>0ho4tg{7RE!v+SY1Yw@nLTgmL0c*F zFwap>PP*38gGy%hja0312;wb%!z286`prk!3xVIWobvbx1+Voqdfl^5!DL>aj&ghc z>}Ikb$!ylVX8z;=E{!%E#yF{@e+C-VEtEI!j`uIH`HNHi15*gYo6FEczYAXGzegO%J^VL%(}hNZ z#vuJ1k!d|KdjwDYHh^=b0o+yRG4x7^Ux z^_XDJe|0~yJ-n6PB-r!$w&i`UmIN{TFaUJ+0-=^n!Z}JS2GZA|(BAE@hnOWO8?H=8 zeT!{QgqD|!7Ma#UmPug)MaJSQm@);Rch3GL1|=z*)$Eck&oPxeqF!qj6#z(I_V{gp zv5S0lu+n?dU;$KfQ@{jgcUZ{KkgoNIi2!p&#FwU?w;+o>qN~jMw{z*(Q_-Nc0H^C^ z_X5CUsK$a%jAUGeJ?rR*Y#fc!*-X+hv7JhuI;}Rf25@3KTqXP|${>1ux?MU|lK=V& znGtkJqEXnq;Vulfah8*_EWm z>`{H$9U_0xrtSBG_OZ)}ZahR@8S{X``K_uGr?Q=KP z-6DSYS8hJt6dEx zrzRN1FVK&odj-KA+UyvHLYcP9!05_V_`raaz@jg)gW?5sgxoJOs?hfFsS)Atv|lyzVXnX;P(<784lKah}Db$kM$8<=HxM6DKg54-%5AgM)+nAS9y|h$mxkvNQ!> z%RaC+)sp zn5M5OJ>#^gWhkeUeqt&~7wId|b>(Of6Wf2xd zf8rp0a?p;r_QIH?YTaSWOaVg#Mw zAb;Xg4NKw#FQb}VeJ_L8P^ob4SDs*SE^0PC7$C=Fb%_9yxTLBC8Ka}){Jh=wCVaFb)zu8NHL@JE@`?UDR9Z?^AJfz&W!o$5CyU^ycfG9Z-kJZOFuwXtGM zsT2mwqj0dVcq?uoFU`Ixl&`QXPld<6?0!({I+Ck(-CAySdfAA%GMwe=s@O#nj}%xU z0K7vTke`|vm++sOqdnNT_*q~94s1`MK`41AEah4IYQ0%-fN?D?xI21HwkHBmoG`tu zf*C_K?tr?)58Lnkok3qBc*%$+4t8-8l1}UBh=rB`IM<&vVQ$t@^Zt|RbkpVOMvh-G zO8hK;*>d7G4foCxr(_h=C_sCInCeSc@Y(8Deh0G*S_S;#P&5LU0MZvIN z92==4yoVa-G+*nqi3VFoa$Gi$YJ6(DIl3yjqF@0u0wODA+>dNZuuiP7=)6T;YhmsY z->FwU7E=i@*(jw5_JtSr6DJP&)_bg5QBbyn**%YsQLu~~^^uzZ?(aAYE=0k@yPuT? z;Fmlxll8u`CLcQ(6VsoTwE8+P`~>vZHIyN@2fO~_Xk(=uS&YJTIIdpSlb1U#z!=xo z6I$E#sqE}GjO4F{K`Fe2XdmrjwG#X7IVQC(!r;ex{OrXB{T79HF^vHMn3dMD_-nrw zV^tXdNUGCy#M$OpdBg#K zup27Nqr(Vt(O1?p?`1c9Z`C~lT1u62P6;0Y&@2u7#N|nl5{&H%@N5z#>V!GFMTeBM%1Bp zQ58R%I}YOFQt`wT)&T4zf-Ac4SedJZ2yY$w+wTF&FX%qRTI8!tImx_ZwCqg9Nb+_s z19-o(qJ4+h@;~S!0(2Ueh9WnA^Y=)FPjfzQxPUHzd979x?lt^6LRXmsWdGVL2$mCodi}KBLgYH2Dl%Ey za#8T+PSLT{iAiDBYo=F5tvIVxAMawnHgYtYS~t~q*UOg+ip-2#wZ0)A?DwdD`w+k)Q0D3d zWoFERzFI*rE=rIqjzPU1$p;;=7HH1W2_zDk>`42y3hY@iE{`i`;$>0=ji0lAtmH~9 zbSs6!JOWwRNJ$XauRZOSkuq~*)}5T#^@g=(rXKkkxP8_KQ`M#hEHTBBym!JQ{D9{! zCtctmt`YRvSki*^ZY3N061s%hGyDXM7|pxL*5RS)?Jk|ca(^gmz-9kR?G>?AKsVx(utA2m>=&%2y~<==xB2DS6O>tk}5=MzxoxLO5jNL?PdwUs$-yS_R0~LiQnFyQ-Aa< zXnK`eSs1l4c-a%!Sd!W75>Y(C0Omo>rmCmPu5@*j+TR6)BL2g$zKMobM`(~I_v<(o zp33qMaQn`iSpPaQZuyY32miHYlRc(GmhD!oVU>PQ@&G@t!(n&VgdLwR`;}g6x6*lX zb+X5$bkmY6to|~%4@H5kO;C*miea}Z_dmkzDQ>Dv^e%RO{X#DU{Cy15xcx1RWNABg z`J}WskRl<8Voyu@FI)CDwSM`HDT>uz$APl%2p@Vr;j%s9QIGL<7G{74#s6Xwe4COj z+XR5Kgo7q!w}*7p*(`#(^-Zw79>(4*pf<*)q6ejp3vu5ndAm;@(*;2uIwC>EvyRBS zn65LP*}t|Yfr~G6NgH6(5%eHqBNE7ipY1($xskK#0>rZ0%3#N_S0p5?=dyHgVve*Zau{TIIj2t%M;m|)iPP7W+W8BhT46MB-9xjw?;uh)`-0hwF% zins8^-vsrg9KhTEAMibfrNKXRKer3mVC1{P&CR{s@;663@~hHv2YdqdFCNS%2y`v1 zv>8Z?no_@e%a9BETO?qR*ZtqQ4~qu<;`o16%Am=u*byQX{_M|Y90Nl~@LzQy6&`kvkI(4hy3T^b1eovI^<_6Ibs43zfM4~-A;osap|;x_ikGC*m;%UWDl~hm zjiW1`B_$|(IWD@V6jw-s#nM%6>H4(8scgS}YClg`6Z;{@QJgvKmhV;dG6muwfw0LU zQE7Va>^|8*Fg#~Wc`UbY)-K#sbt<{TK*w{Mw)b#siFxhKPobA44}wf9gbamtTqZ^)%T|1$k#?}}6$ zh+B)-(M;2Sl2ztb7vsY8kX>tN%|(gqn>R`QTQ?hrK5nvZZ?;$tr%m1tuX#KeLXaKs z4DFpK*WIQ1?|mSx`rKCyaoaj+gzAe(W%cS>5Np%hsdd8A@E$ zS@*xp)vp)}@HstXjSIhagF#+Pa7n_7+2H?kZk zniH30i;mOkSYS&MC=oiK=Likk|HbZh-=EXWp#P!}Pnknppk|3+7 zhips51bKIR_tfO9V}k4OlmO z7m|}5mk2~N^r1wE?RGSOr@-)1oo)$7x6b4;v(Gk7v^y2`@ZCV_5G7QIm);!UMxU>I zP4T;0HPK1gnhG^vh}nu?MEj;OcKh8oPwF(7ToaP1T{5mmLQ@z?Y-tTTuG_2Y@@pjc zC60urXL2z8%u9)z2a+iZrZPzlDz0sOdKm}mHjgm%#zBYq9~D(ZCI zoP&)^ldJI2DwjO%3q^z3E57d6PWQd_MCV3HPa4G{u6jgQuGXHvYdx_vd=z5$<0p#| zf+h>6{0!bW*tpQ$iZ3Ca)n5-1lNK=+*(=wshgep4>4b2*sjb1zJ)IQg)=F0HMgQE! zc64FCfR^-a1}2N`mSwrKbGS3%{dH4*qE6$C(C32vxo_=bDrU{#E;DvheGi5~Dbtlr zWV@zO0qD#OpNNQpDnVTzH8M_U^l&$R-&dzrZ6urRdYd4s4ocwmI#G1kT?1Pf&f79% z+vQT!*)tM-*+W2Z$nNXOZqs_Lg(fN#YHiorys(HJk?E0W1(~LIZ5gVpN^0>|nvPh( zADX7WrG7dQR{aX`be)HbTcdxh!ebR;PhEU{X|!4|*s}J5v&zK=m3XY`P)=t2BQ-{w zHg0l#l>xSCS{>1dEE+EkoLe z@n_NZCrHHtZns*O@k9^pjhQT?Re`1Gg7=`j1ZnR#Mv!+-urnt)Wv;pv0`Nb8g5dYX zYKo_aGIl>n*JDeJiHXXn=p@)ZjDs8rP;Kaa?@IkFXe5Cs*;6;q6JwKX>V1$M+sjsR zimP7ZcQ}-ntfoN~km;icVU685*^#hJe$`G=e!ac& zIbQcU_@Y@T{+!H3sovecQvl7fsGY( zwhClKr;?*CgNZ^n&ka@8Th-Zdbqf1f%*U)Oxf_-+_a1ednccNB&6KyvIzT2etx|$h z5{)#oqtjtFx3-?HFwZR1jx{Mx1XZ0GU7Kt7;r9$9+|@0Y5CfO%vMsm{wKDpHZ|2i~ zcB>@!qbBcOfazqyY|=^R(EK8<;oMuq;$VG_7zvBYSZizB9(n%LuW;YC`Y=N#MTYhF zk;-J9XYCPomvBapq6VVlrA!|kFB-~ylyu20HP1b9K-68HxxywUcaGzz&CE{$xQVR3 zV8;}@=);tPtt8N;!MyT`hZ>q_L&**!l)kHVq;^hbvC5lwdQ^3t3aOi_n{8WqiIp5f zb$*;6(+_!F!%-(_kP|&xJ={g{a?pAJfe&s+2cWWl~0rRE=Ty_sv= zexu@8!+2Te%5H~awtPKly25QxKT9w*kA|1dv;F2c(q5odFqMF`eK&V%HSKfNg{H=C ziHeKWQaiFGBUQ5ap)c-7E0(41i@YLEkLLa8nNYxIPZ6Ki7sP_r?PP@X;%%A4a_w)n zqL$M}WZLXVdy~|2waT;ro>vcFE9?SC5Yk{zB(>nvM)_JWt=lqI7X-o2q--Cq`QfUp ziuXL#v`v4e0YFsGly&q1cRzodY@$c@RQDey5?Bx-$_d-hZxwpGUh+R ztpCA)vrBt1pxZ@5b%X~+nDrnbz%$(lV|^ASzFG?{8tPjo<&TOb=I6jkP3bwJV|38$ z=T)Qab*_a02SK7mtNcCeX^BE*W#2gDBh6Ib08KNRWPQ>=o2ze z?>xErdw!{`eZ3lw4REC7;SPS=;z|yt`3+R{;=;+%SY61&xW?~%Nimbh98%fFWWCs> zt;(HJ8e8^y-FTf;qzRtFdnT2PG>me&u$Mq+>Sw1}<0U8$c#*koLn@-N?D0zC1w5(7 ze#|T=)?uV3??*bcEaB9X!uRjJ7cVDFO@SrCISUO9tBs`ieux-fxyQks!|&RCqoNGW z`GVe_?VvX|pq29Th8euA$iT|RqTT``-^T8~o)lWM{zzr{^OIBPAt$DnESEGhlTOGg zN6p#w6~4Yya~}yVK7SA!&otbLJgJ4ZS{eG{r!2N!huZedUn+;f{6FAVR*y1ei59$9f{1BCJ1`owaD}FyRzwU{dlUA*#j@n~37`)rr*? zGEF<4!N_0snt*wB)Si?rs2Hnd_n}X#XtV-E6~r`*Mri2Fjs7@7jHk=I7gWSLL9fWU zHl1$uia=^5I@sZ|^=^x(U)#KJYSuvXGk^QMut*rjjT8C+EzXk{MBcgLXm6736hgxLEOdb)yNA*MFOM?Wu9W4&Mbz-f^i%_?ss zDxU25uXzhE4oe!uezujO!%e%$oKF3R)g90hIXgVSfhBZx+}sW$a(YPCJyK|vUL0p_ z2<*c8-akM;x8t(Dk`;z*k4uN;o*OiN=gDDkMJ~;?akalkS=|1|`~F2IQz2~=UAzZL za0he=omIWq`px{~t%oAw4g-b$tK0lxr;^MJwXK5M_N<5@YksH!-geR}JjB zx7YT&A6(3JkW*JhxK=nU2!OyC1GsVJnrX&$DYaz8(=5iyjTGEr_r!WbtnuALKN9B( zYDEsES>$Du&bk@p>NWmIXt1f!&$QwZlhIicXC!|_Dz%JycZ8_Di&^H7a2UH66gz7- zofK#{zv_$qd`-k)k(`vVrN%GXXYl4hkuy`P=cP27rIp>>fGGSsHh+0pRBZ{JZXsE+ z2FTG`i&9dGuCXP9`Q_m~OOKfv%0Q_DU&W})%2LY>rOY;IS~^f1CX6R<)- z8>;}nUYc2C^rZKr;Ws3-zwB=pcsY=phPawGU7M=cbHTIp7vpe=uCaRCw!Nh5M!G+L zJ8p}Zr5LA@kLFi4H?2HC<_ZJ(7SCNG?L0kluzh>T%Mn{@uuu;;nt{-yiC1kS>=>Dl!+c?}tc?cNMFSYcS@;ndYY$Z_Mu>FIBij zA;d3q86D>b8|8JrKM92v_RY)Uhrj6ICYN9ZH;nJ_=OdaN?9=CdOpAF>No85#CLYDc zX1&)74G#0`&N7I#hkPr*2a8&dJd7n1C#WYgyEQ{Ue}}dp`jf+GoTKj9BZ@q$f2MFl z{~lB!7#gjj3B!IUH{*=Cg?u{ZdXweYe*V$WIA!eVg3r<7Zdc_rD4gtuVV04V01W@A zf!*d&x5YiD;2Q%{KXrt>?Oh6Pgss{1QxS|lV3s_*t`^Bxa@7!@@?jZm?N$%7xFgDnbANM*w?~{uS+wJ%(upO zsAyEXfR584(3o2fc!6LoQXOY)oA%`r+1xD#ksiJ$H1^Z@V0*FZ9dkAs;wsEaK^bJ| z54BPV0*p#Wq?;it!@?t91gZa!*hjiE0Nop~ z#(}Qh_KTs-LT6J0^mIyEF0EFszOd^VebwYLK~B?X+4MDZQ_^vt}4jvlju+or|) z94u${YZq=gCnJC@*yWlFoh~uAYa4S)Z8FSU5y|oFfWFhsmVoKr^kkQo9~7UvkQ921 z;-K3D4HC(?Vz9sz!s;Et|8sauh#|TDf#34p>2yT;WZmHajWQ-B<_!~Ru1XYl5z28% z!yxo$M+m_0tq!e^W3L}q5W87x;Z*NzU$H1Dzv9R0?is=5o^Y0$IxF|U5IC%~+@)<7 z+}N)qD4qLu)AM{D46|5Ac1~dv5mYYG(;qpwebSWk$ZxOCy%)u+vJZujvJpbc zuGq_6h2Bv;x%p0n>1ezva5|L1GGDgpL&?{va)Sb7KM?eO3}2dOF|(%@!VBGc!Fu@g+II^YWMD{1Drg{d5Dy z>g%x}$k#gVs?^y_BUwnJa##^$T017b@=1%2yWVE(+c1sCBQK*t9VT)L9Gy!)v1Kx% z&ul9Z;#v0N(YF_q$CQ(6$T}tIQDT0I*$5Yi-Rk#MyJZ+>-svir^`*kC)=SaRx!HoX z`GjxK1Zmd>{h8;sN_3Ll&<$FLL)$`-)M9RoZiYh z7c*27{_GsZc4r@&AY~tO2N`E;QLArvdOCpFIA0yrMh2(+QO1Z^qnerJg`akftXyT zoO2Lx&_U^%0P2Zu!*X>jj=cEbO4UT9c)oS+d7I(}WAYKsfO`|Nwc6K@p3*IOimY%T zp!OE28g5sd49y8A-5AHgq|T8P*8`?f2xZ(VJ{PKLV6&dUF06d>p6_p-K)&TW zEL}|~6H+#mlr)mcE?5*>$h~~-f~~EQlN^9eMMS)0FFZDIdBz)C%=eD_t;!{cj;nsQ zeURyzgf((tq@+K|c6wN*EQ`SYKx9b?g1 zY<{@&Ng3XYgYNIMOTKHiWecikm=>@5Nu7T&a*bH~qLcAliIu6cZS(%HQF57~p@$g~ zQSP&QEgU?ipmty6xKVyfRg4km3$^%#&0!H){cx#>f%kfbqo0wA;1R*Wss@hXv{?%^ z4SZo&xT;v1yUC8PO=_pvps1XC6vWD!-@RKqd;zZ$6bBngcxxbZ+N?y;5u|FEB?eyc zIzcnb4%dD5!n=OXCZ-H_EI+YNC&;R>k59UtL@sy8%8q!bFGAQ?;saM6?lmyqPO8%7 z4~qQJ)#Fxd{LzcU>h_;R5z_#>1(H_N8g;F$AkG__*1dQ{P~XqgFl#Uu`BaZ&?#O^u zx%lpXW$~E|uiu-UIbzyTn~79zL{oa9wlLNS#n;oJcH72s3tO`UZf5OdVt<6-=1_NlGj4~Lu(=buH}&m^>8Z=;g+u1H)}-?l zM0?hOp23D91*V>A%B6-Ojhj77+E>y5dB=uMa9jw?x;|8=Ex;dySns7V+#N$a)t#X$ z{2s{5Fj8D2b({Vp+5pRtc1;tKcKELocsoI_tswg=C3F^#n=dOW z`0tO*Lf$*b|D`M)cI7{h0Cx{{|JRb;cfR$E9gP2~E!af$Ggkhe^#^~*z5l;a^3w#_ zRPS);A07MEs$omlf7Sm0n3R9F_<$t`wu3XLcN(g^{d-jZ)A`K8r&j+};}>9a=HG4n ze_9fz0|BQ0zpRbEXa)Iq$8Y3o{%@2-8w29TTAI&rogTd^t8Q4oz}=j$mmd7Di942e z9+)R*n~o4U=Y#EAs|su?YMq*^iAT?`O=$dUo*taBf{Y!LtT(+*EL=$HK z^*-&aSg~_f)qlB<_Bd}NB3-vSH!f#LPylQP8ou7XK?Q$wQA;5~J<))tV?pG1wRu+M^;ey3uAPA4H7_=MDa&V;&8OJa+t9hpLshc zID7Fax^b;m?GbiDS;D|uY8Maov4Dq#aNXps)bbn7XSv%uY+ulp96pq*=eeC+`XIh{ zbtI69)_(S%Q&io*5l8pv2;oP9`DD>%kbPRqJEOkqN+{h;=Fg$Ec|I}~@wChaN#ca+ z(+v&TqI(Wl&7y|vI)AM|^VGq4?h2+z;rZ0=*m)Vc?#qcrve5nawC6-q=e%}L{IAFsAcovEzl=?K}J zSa^#ybu$PrkfX~v)g|K7nBTP}} z!eTEEI}9ct#}E5rY(R@>(=zgTcKZtH^KxXhl>n=9yI`};D>81GpV2Q?U7_3dg^4nh zhP*ZzJ4|{bV`MyVzAGfxwKJpv?Ts=Leqr41S9_P-@23(U^JPIKgs-8}n0-ih#pAkI zw}WSw&R$~sc^{i`4IkKpbJRh~{xER>fBey6(%mawDN(}>YOZ)cSAb;$8~jnj8bJJZV^e)pLF zI#+lto+G$XCul%qc&Rd>CQrZ6r@On~QrZl?R8pU5ol1FlR6*qEhWiW3^I@iLo7}tr z$fe97@ql6CxF6kL-qAWzA8FJ?MZXy=?U&IL+)4;t=s$NRf@ep{Jf**`^joe+=(CXL z^TV7ydl7OwQgQ)Cyvg+?$g&Vwcg?5g*ahOohstXzPDG$G?Ew*FNOe%R-4EVGh~%i% zBksG%!Wws3Pc3A$U*O4$sGUft$uiBC<#*7#`A-+U8n77L!Kky&>-#Hweem&Zh&M0j zJ=EH(e~jB{?GdOZ$LVyPPwG(?=ix8!O6;0VSN-kz(@mxI3Sx4j(W+0*@;Ij6sU15b zMN72fvTbd*rW&)%ApCu-UR|m|+a0T)oATLzzGE*-?{{epjTOo-V$4VxpnWfT8MQCM zX>0g1Io)#Cda&B(`apVg4Xi3HE(daKg&3<}P+t2m=%+?QPhI0+x&N9^3X{pVzOynnrCu%d{6a zd7&1yN-~Q}t2`UKqMxaTpP}9~UU76sm1OyHuMRnKaXhAJ!NCOM1YT|I2YO;YP-@me-V9*fZDF74O%qDaHC4Evb^1{T)<{A&33@W6e;kFaw>6n++yzl}ee1Pc6oD z#TZ3xzr5_dDz+l|;NR(1{28AgR+BWdkhrB@)9M$IKy`D>%mdL7QzMr<_R=wuAcW%v zr!VZYU2v>qe#yG9Qi6)6Xq>EBo&<3@4ltucE@kh0ENIwgtblq(9sDmR|Jj>b3hXu#it3q4K04V8!}o4C=T?`% zsZ8}5y z>3Xl^G5lh}nf2b_n9&u-vw%hBKaCq-G~e0F7uO`a(?`<3gU|iT-_mvK5mN(>d+VFz zt&PfdH)5=siiYZ7f_t7({YZuSCZi8yx8q8lnw*l&8Q=hknETQjIG^_$dSPXF4Zqv6 zI665CExd<%8_hH-S?y$)vxc~8uFT0+xVTCcGqUMd&f=Kr9rQHB-$zO~T67d@>h#$v{o70H=g+6VO~#5MG)#?+rEQeDzPT@f{SeiM0T7 zg*Ienq0e4*n0DFoYu$T5o*B{~%;EwyAB`dhA!^1hj1mP`1}nsy9a_%y(FE&H#JPuQ zLSEG5!*>CbjoP(Z_eXqA9c}g5&D`E<^(hb841@*80g-mEe zd0WsHqPbOp>&Gm=RqZH$rs(Z1p_N_Q2lXV1Y1}&j;<>(FGHKleneGNvSl-Z3xg6X} zF^f+Igt5@@J?`IK8JjuV86s1FV*$KxDff}Kqx*_8=+n(bfBL0O^3-Jm7b?Y;L(HPslv3vZ^d7hhVP^xJ;Y?Tylv z7BcO~gYkUY-yEfnTnM){^lDlT&@IS$s=+xeb?TqCcR7>|XoGQbCi$N)9l?#e)PCZ; zn_1ui+HG9OJ3~G%tLz;Es>u|$@>UIc>a&mf87UK8=UCq0H?^TU1yxvc_pj3~OF?4` zL`#t6d2bNuR{|AqqF(}Qi3#~K9<@C?;@AG!+D48>mJnE|{V{uITq$hX*E02TYs#_m7Vd-SWdM%0t=`-iqYZN6HztD0rsq-UC? z;Orb^LT8!?k$c#%{QL* zXsxs_NN||a%*eVxJjH3&7>l^a>S3$@UfL<3z@b>ggqf~w!h5kVuWH%LMGZ(qMJQ6VojF67w4_NY7;HYH9Yq(!{)01Q7x^GGiGo)qK_m# z{099dw6Pz1jrj+9*PK=)s3WylxhUqY`mWVyI$6waH9oM3VY`J@hj-gM z*6l43OB-)Xwwr67h8<_QEv6^qoGe>CiR=4BuF%Gzg)luQKHcls-7}f@+VrQJs++p3 z%5aXzfI2yD$KM=(+}dd zYyNg#W=F5-_*V<;I9hH$i=qx6g^fG!bVP$313gi=gPFS_8`J zit9F_$%UpmyX9DzSl=ms#GJ_CoILFJ^%jU-Lf-W3w0o^|Vw08*9VYRZ?0-%_=lqN( z)%V_uk6B3$`Oc`tZW>=K>rvV(4&>EZ3*6kJ#i4>mAM#30aq`*W zs-6`^GrC+p+5lD9tM~K4$$t$yU{rSlarN^)aun(PX3>`^^p=>O$kU|C7e4uuU<&J2 z|At2j+p*O&ufn-1R`-TBpv${)$tvqF3gkW|I@km8!oPTM_W;!-6LwMS1=eEMuhBzb zDTh%^)u;YQK0ZCf&tS2Y+R6el_(Yz*zDVRXuX9+Kj0MHMRDTg&a7K{GYs7uNAlo4i zZ7RY^F|t1qmAY5LxZC3ChxpR98u%UC#{F;EsYq}QQFnY(hYogOvggEAs+X8EyBBu5M>UzpTe3tGq3J zi8q_d5N^I+I!^l`llGECAPE6nG;&15I&7KuSr2_LFy;G`w2yvLd4?H2HDWsnj>XQk zb|bdgn9Kv0>aQ4U5M_Djoe@bdlBqt4vG3=q8T!9LE{}*@f9o6Kv z^^Ky~6;Kh~ihzoOfPhMq62J|L^xm6=-g_@rumRF*hytO7B7_}`Q z5R#CDkT1Sx?|sfb?|bgORQ9CLJvaGLfzQsJROv^Bn_{@)sAavDm|Rp^9k3RR{i!qaBv&0mjA5YBWWb#bHj zIz^_c54wxtn+Pv36Gm`j9Q66ge+`P>Y1m#B?91Dkj|w%iw+wfeI(6zWk|1wQtcgWJ z!s|I#S&H(I-ltpHprpIRR1p~_?e5?Fss-Id(LsNcmss8K;dRBD^r_dTYl=vGoi>7P z@+CQfxW)`+I<5xbMgxz=rYtZlsw?Wh#nwl_WT zY`x3zeHriHzudF`#GUKce!KoIwLsg{bl>e${7;V@&`f)o_H19TGH=@117cLRD$>%B zCXXGE=RO9AW!Df*OChi?__5f^A@ef5z`(fGeUp=1o7gG3M^WLAOmAD@7z4+(NX)dlK&;NhWV4?krU|cA>;OA?ZOGlLd zk@eu>y3<8BR8(t_S9|Kxb>+k#-##vS;=*m}@h7wS>bZN0$6x%xb?5p&;-4}=7p;5& zSnz|aAP40&okHm zDJ;%iu9m7UMMIqErYRS(t4&+Y4HlPyPkk!CM+M`;JaqGv~UPgM|AM_q@ar+X8s%^LZ@_=5wT zQ1B@^Z=$SQ5kF5A%}(NPIG*6>Bo@l*H|^~0|pat{U#G8D^nbCum3-DXls_2Vf6 z^XWd@jkavRY+A5tqZOk%-N!~jr_z7PHuTH2p4I+tL$gQF)qaK^s4ycdhS*F3fSZ$b zy*txuwqgOGf9i_NE0-<-EY%~@4VJJ4J$bm_B5G3?T(&xvloGLgxY^}d=DqJmnWeiI zSj}aT)rsS7)ftf{u)6&4!Ya{G2Qov*U+=J((~PT=9NB{4hcF*&*I;GHKP);0(5__U zHb`nQmV)s?-dIPlj-uY#&YZ=RtRg2xa!#bRYu+00$7Sgl9mSk@XLeo4b$h~%-x*|m zYKRp2BkI~Cf?CB?K*exj?cHZ!Hz5f#Pj^gpi`(0V{?%ZVHR4*z&b~hu z{JlrZzBHbGi&>(%9I_eRWZ73MXv(^A4=T2!|2GHVhldWQ42i)<)avotu+8_oaPz)d>INCSH>0 zk8^oOXI6%TxozEN?&8N4@drRB_<6GPDXW<$2RCct?57H(d1A&?JDSkR4Qpl_!RP`>0l>e^ zEt`KgP0rW?F2~}_Cj24T zwvbX7BPOUA15&Lp{dUfBR@WB_9wq9O;GJ)YUK_gj*G|#;ATC%V6s8&N zxT_CcED<&v>sg~80icJ?^K!0K=bXKT{#h$wcGqg%^yn^Md{Y`vA~Z-`a7ZzQi7WM~ zuV2&d#$S(b3n~$=MPn3J&fvG5Dh5@}Ufmw0aF@uaY8fkTYg~YBs)0CyYx}A++WW{1 z03Cwp=wpoZq+{;7K0o)DDf})&by}gL=d$kr~;k8iLtN}3OuN-#y|M*WkHx;_|9clAtg2`J9^5M1?Ef9?X1e!UA@e^sdst7U6`2511i%W zQ{#IUHWx&WI_$3f*>Zk05x`V0q34|#^&;C%RYJuDRbJ%yeC+!n104Xkwc&1%Q_d5C zG>1P^a3=Dnyy|D2=acc;-GPnqO9P%(I}~8Cp2C<&JoV%~#hjKoSA4$(emkxLwQSZ! zE3tCccNS_$KhDQP8Opc5bg`2>E$^)2I)M&uw}^RvN>%S%osLSw=Q!Nrvy!uCM=M{L zO>^--0w1;q(-ie{-QbceuoR1PVbbHJFM9Nhvz~74z0O|$`p;h*NqTLARIo@|Wtax^ z?eB;GSSigBlZf5~MF?d}EZe9C`yqb6?r#ngf%$NQaL-+FNGRpXJD-npgo|d&i=$H( z5~4aPVGen%7L^*eXfbr%Uvlyuzg=uQI>)hfP&mI^huj(c%$UN=;~KpNN|@AKXp#uF)pi%H z2Y2_R@uUjJM;K4#UIfhQCY-wPm$q~F9=PPZ!F*!YN(1|IjAHz|IKlgcCVxg5Ci3rm zE^H>(nDvL6g_SnAv}TM;eNtOK{+EvaAK-3>{Od0kT+&=t3Jm<`unU_18Th<3xcp}w zLoUrH@BS>{!o{`!_rKg7*QrCje^xZ%GP&^os=*F{^e^rAT>szbZ6(!9Q zQ8d?&_6^eWl#D+Fe@Tcl+U2Bp@tBf7*7`V}i z988}TzX7tl-V>iz6R1McXJux*F;p;aEC=C{&1t(Drr2C zhbCs@FVc{rlQ6AD|2N~_SzGiyYzcb!4JyrSQ7?0S#XFui{x|WppO6@Pls@HvZnpB` znCcZ;NXjv?^3Ir^&DOiS=V`g`L}O_kr?CA_Jp#`LacK3iqa)L`B@f;5W#yPi-xT(^ z96kJtj@}<4NlkXq5`G%G?fgBKa;RzjUCz^}(2NjU>x#uF_N#yN-58K(F)$TQwhfuW z#{!m1wwAQz>ono>tm@)%DvCWS)=KqgWl@>Eg5M%%01wOjp90Tvk(rq*LwM0oi8tpKl`RtJNbs+~nVc z=Koc|us3NwHrLG=)xn)i7#VCngrr)DV_iE+5cTb3Nqa9+2+WBNYmn@TLo1;Jh-RMi zh*3v>y?BCW78ch|O=?io^xw&%jA}h9iKpG@m%~u9v%v?K^i=nTEbX?Nd2QuwwF!@k z9MB(h)6Eap@7<%a6H5#I6oR&WhX zLMPz1GW~W;qT)g6FK@6T=YevncUbAXf)jex2J{_Bv!i^ZMQSv5Aoc6fe>Mk+!LfljHCF&Cwkh&hk? zR*#g$>=hF%Sa?o3`xWu7N)i-nQt3ljjCB(+A2{0K)Lgc#ivDqg72Ob?8q#RaXO|!K z@zbg~Yj%_reUI(FsUl zo9uy`VT^&c*w&B^x!TbF4;uNt+Z>^26t8mbxg6A2lxI%*&6iGNkUrdM(c?abNlbC+l9? zA`6W?XmV%ChK+tobFaUM&B&)19DuGbLDsSzmKs4RDr3PiM)k8lgT&GIF9nut9VEle zme{XY9gAC_SEF$tQo_xWXrR4>BjE1Tyy{>|o6Lf^fpXHVOC3M;9(yj|*!7MJ4wJ3( zcV5(3i}}NXAIHmh)L#tEw&-m&9MI_2&j$#VFAwVy@_ky`6Ssa!;%$;+DLX>kK-XMK z7>;;t>AgjD8H)kJWyXa?y{A>B?#^F6FFbX>(~a_*hT^1cLL`EWS(Ta`si2HWIvy=qif06(jRGB%u-0nv$Ci_L-NL0GTbRAUv zhHYMJ^8PS3GKC~5>bWIk4Xr(?az7L^9|DujTUP^pDl?xxIl7zBlB5rBL`B;A;|IG6 z74)Q*(Fm=p)HFcemwNvf;U%{hZI{T+DsaPr-Ko{G$h9Eo+i+l_th-OfuGgUVL?rv1 z|HB_Y!zz6E+Tikb1Ub9UAY(wsbOur$v3KuxDfBznz6%pm;c^}R?=dEhB`#ezaHLcT z$e!pmQ?VNJ(Xp;I#DHYB6P$V9?Kid2NaJ`s2I`ZqU<@x({nJ0bzuJ1gH$gogeEQki zP(M4`JdcF8Z7R?bukf#*H5SoNtQI!wVYIqAx!YxmtPag1p+FRDs`-ubpuwujbRiAF z50)pJE%8>Aj2+%>;|s>|deAPBGJk$f<7qs@2(ihhB~$Sp@iTZ2KCy++e7s`8#tj=L(Bk>2}ujA-+~? z=p`EYH-wDG{KTuf3ca%p?72v#Iw}8dw@i+UkGvwtdkw15-_O)@jy!_29{Q%MxE+_W z>!)sxdm^NICPH-)!pc!SEQjY`mRrBr0VK$MPNB>=JfOCAH;)=8mPjXp4NKw8^(T*E z*Ic@!a5)HE21=bAIglsK8mS;{EVU_<-Zvn>GJvDSZXz|;N%jGnm0qz!ZiQ1z%s{XF zE$3x9czpHN?7>zPiKER_1#|1c9gbyD%vHe!zcnv2L<8WX?QTu}5Ok?)=}bm*TFGZ8 z8m>oX7yO5n(k?uj?z1Av>d}?AVZ*&MvGi!WJ*v9i0|@L1FUQYuz%gAqqBqQ)QYI3O za-Q?8n2nyf7gV#-oYgsXZDr+%e_0$J-Rd8k(Ww7AOa=FAD>TSN$IM(HWilpU`MI$O zWtk)ejM}P>e>-d%ZaLUmg-MH=T%CW22cI21ItE@Y(|ZM2jjWBrFfYu%?>*4t2TdMv zi-yH|%a)Cm&G6!K@SJd!KIxpY<2OIsIEn*?+VyV(D^x=VmQlf}4J$du*c&g%Er_dG zujgabt;wYL?M%xd(~2j-Oc9z2^Pa#=rb?W6YzIQT;>24t{h(Si-#IC8!4>6H>-x{Z zs-=*-x|qGvWgPg-%DsbB>f*CGGeiWL2W2A)BxYEu8163s*R@yugYW_6OW5^{d7jd^ z4tC}=;^5f_>KKp#mI$ zlZb7~rHAF=&PeSU)`}v&+X`S$6E%Q7*NMbO>e;no7$zH|RPtgdjJ3;8M*9U2-rM@k zx4NN=pLMQxrda*uR=!*o+?ngM2Giky#r><7eH*6T<3xkoww%j~=_&kcQWHJ!@TIWr z#83=K8LiGYs9=gDy8zdY_|w_Bh>*EJJhs=&#~I{_T}$PO z1tz-L$ET=C0yGR5iMg~DJ3L=uq;r~BF5lK+a;&cl0VOViZVqO6rEh&diC;8bVs7O% zgd{2{FCR9ppG7SxdAvd=9{?11E|KG>R!NvggYx{U2Ee$9nC^J80qNupMf1DqpXC@?gUF=Ic(#nuy|BE?{5b9BbQ)l&TJLFS+Js%e()R<1XUS}ZZ%znp z#P|Uf^X$V2s#yV7yb@ z#`1~L_sG$S^wI7?x3;PiM>!sPOHMFm*C^*fUsNtF%V?q@+<>*JI30r+B=sRQ?#2H` zy4)~;3ogxFV|`hjrx^jZeyzY%>gdun&sy7_FmYojcL-92<-Y~M|;W^^@RJ~Y+wyh1+dqtL~C0i$WTyB zIuEUue9e~Ol@>0j>PLga!(WjLp2^()WutH=%_DZ*sl{&b#u2BzR9%;9=LSS*)#%gS zj*oz$xu`_Cn!!}Z+w`z6Ur`nE_~ouvRb;h36%>a=Cz~FLu@}{+(j(opsCz1k8bwND z3bCotQ=ZE?K3BifR#HTkg{uP@%HodgIMEabgwIcAK}>7&6`P!!z!b5ou4jU zxaw3MVo-|D_G-q~q^9}7M7`kVJlM{&t@VhC$pFupbNJ5!VE~Tfz^C%KwZ0kH^baGL zf4u4zSEl0k?zBO;Izr8f_SYFw#;5-CEtn}IWeiVGIXtu$un=s2nm<0;I?r&=5|GwbPv^6|1?xIU=2j~mp{}hq47-uq4rj~ zrbdZN0eK5fs?QEN2PJ*k*=Y_LnB z-0xqm5ldfC8D>_u5E<74yY?}?LLpD|92I^E*fM^{nFFU^;5c@@NG%qO74QMRU>& zZ5r46Fl^l<4fhrh~SL48W$LqKzwZDkjczh_=$ig%eehi~aun z$KsEEb7w%{AZFCZTx1SNnxibqVH!79dk;YTV*IJ>_@Rb5=X=oxjxV7E@T=Wu@QXGe zM%%XkM!f8#I9Bk-Y5Ot|`u+?pE!TfXhq{vZ&`l%iS~?+@mT}W{n_@t^TE$pWg|663 zD1RsZ30gdsbNuP@3~8!Njb&2$VYQq)%`2{tVIc<8ZZf1=)UZEVf(%tsSOI-fS;V^uFoTb2UcW+WT^zFJ@35Z4ZPs8bSVSjk^fXb9h z@megDI(vX@YtYZ@8?S}!_FaOq+Mv?e`LS%&al8h1I|!-Z2CwimdXOvdHV)_1sZgDR zP9QRGVIIukL~<9EUlgWZLWZckuU>2Odxr*n9%YAyJ4N@d5{=wjZ$}8P7C?;b>p6#% zp`G^+nwH^>qnl@q4$=ZVUl_mmKD}i4b$^oZXgT!lqZQ3lw7CIjX0br zWDdKWF^_yy0&v%jE2v|YPOm%NCv2N~E}!s((%Uh%qPJqwjuz5m*vW+#1_2j*0Y2i! zc2P^jhbdLP9}C?dW&+VORz&cYbm>e4^|QE16?>xSviiEWwMVWpr-j3xx;XTTuGmqhgzEiZ-90ryfzq&+O~sr>Tuj9`PPIYT^Z zA}-IB2kHlTlm!^OCe=-Nr&P=Kd^!H0BX*J9=W4e0fV$HubieQ0YFC(fLSpkhrCi^Z z(U@emVn0(|b&JL0DVXG2D$^h&E33Dpj-L#8mg}@@N>>Fms9FD zK|a6H;ErLP?60b3U(;HvfAk*Ezlsy(-~rrZdhLyPoXYgBFl%HyDSGLiDhsYt))e92 zyAW+(r8zXYd*}~%`NAj=<-%>Uz(JF470cJ0z2ZA4r5gB(Y^XS0FHdrL(Sr{X<1YVci$OPNacjBilcB@~fNufwaF2 zxh(itZQ*>jAIUphlKr5dK`w=trf*x`n?R~|_X%m#Q3ye=X;2Jyfj?7E{=;Mc7dE-j zl|ZLc{xKI{pmxH~2ik$sdWQzkG zat#TxjkfRoHT6^P7E&k6O2bX5yKhu~07kP8gLGAQ^qQ)Oo{Wn{oc;3{14_E5*FuvK>FhP~RV~6~IS>+Q+)T6U6qmFXDyxb6d$a)+*Z0e>N@oSbZ zJsO-3>5SWRX;Gfg*Ev@IiMRe@Wv#?KGgxp95j``?BAtGT+P zvDi0aLQWsyIxC_^S3DkFBXn>y2z$3T6XwLvY_#qo2nYx|-*qK6jR!x8-i1NqS_z7iOr~nwhmcNLc2P*HVs-6wI;F4C&?Y zeRqd%avwkaKd8gg3GAwL6nV%+Amz1n?~(Azu8%1SzP+b~48rLM30L2d$t)gwQ{U0NxG&&hP-D2b zpx?{tT0afp>@uRpqYWt-4UJ7mYj8?eNS9ndlZtG>GM(s z!qk|AoF^vLaOeFDP=@**mSlf%fJ*1ujW*Zl<@p-KtnhVYD)eF7l3|3FBgm&BDzm>_yCFT|WkuELc}|rxw4HLxlcE9d5nBBF z*ger(9lZ%@jSR05{6WoyrM@AHyHS;;0CUrC#V0Mns7o~HB~FkqM?&Rb3k6)f$Lzyf zQG&>j5=D0()OR=V>g8{b_fK`m-eDT}fPOwdSv)U*@_U_3uc_kNl;rF@MR9b%uiTTS zcG16D7fX*&B}b-pY{g8twbfy%K$DKHoPAE^wt?#*G-(RI+0J&-9JuLl7orDnD zB}%^>?mPAgoRG@H_4wu8f3>fW`=PXj!puAcx>nMT%PU?cVEux(u7+hw(iqRH6yh6x zTRZjla6LOwLA$poC&VXiYgn?-t@qBn=S}UJj5(zb@A;}=@t_LVbsT1CXnabr|^QxGK%%(8zL>C1woa&)AB-FmjzD>kL2tJRrCXtAQlfjGvV~x6oyxR z`1lK3#D)T>(w^82yP>RWdRV{`+{=GXEjDpAcOt2pE1<73st z7Szg6Zhq6({k6hn5N?;VsL}Y|L4{!({ViuL$xFp7{|Ky(>#_dbkJSD-Jxo=t^I8e> z+=Ln43~X_;=4~28VWI<(JUjqAy9?z$WB4N~zc_YY#G*mjNy0Y#W7e6Kh^tyqP;JSa z>8r|_@Z2Ny<-fdwPJ!~0euTD&NC@5d0M`ZMCm2A#L@dR{6MI~s_9h~}Odr4UcK)6X z$M+7rAlNB<#weW@sxAL|q|$`u*N9it!}%$H(4Q@@xSl+}H#>K^Z5>y(k~G(g@H*!# z{eD=v*|eUYcmIj)o=@WFv;rE2SLC9bTzt_Vjf=|5Ul1 zqXM%$_!F?h?wOyig%7hfBP&`W@)o$&(d%kuPkZK7 z`!YTDYESCbQO?B1dJ`h9Skw^LMIct-r$xoUWOB*fs5rvRURvghrGen|0%y1-j=HvG z!klI7ZhxzQKItD|I?CF@?mmX!;ZI_C3olz}erSsj6`Wfi!C+*k5eqMj6bs}~7Y(Bt z+F$o91zz9Fb@kM3Of8S-`1PUlD?Lgm2+FRBbs?mF@_s&Q2y%0DS^H*@@NIW=T#o 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 literal 0 HcmV?d00001 diff --git a/docs/images/pgpool/monitoring/pp-coreos-prom-target.png b/docs/images/pgpool/monitoring/pp-coreos-prom-target.png new file mode 100644 index 0000000000000000000000000000000000000000..a64994a36e33d0350c009ee9b5d6f5e110682a71 GIT binary patch literal 75174 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

+Qwu5}AilaB5>k60 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 literal 0 HcmV?d00001 From 3008aba1730a3abcbf779bf5ae9a7cf7771b78e3 Mon Sep 17 00:00:00 2001 From: MobarakHsn Date: Tue, 16 Jul 2024 13:14:32 +0600 Subject: [PATCH 04/16] update image Signed-off-by: MobarakHsn --- docs/guides/pgpool/concepts/pgpool.md | 4 +- docs/guides/pgpool/tls/_index.md | 10 + docs/guides/pgpool/tls/overview.md | 70 +++++ docs/guides/pgpool/tls/replicaset.md | 266 +++++++++++++++++ docs/guides/pgpool/tls/sharding.md | 274 ++++++++++++++++++ docs/guides/pgpool/tls/standalone.md | 245 ++++++++++++++++ docs/images/day-2-operation/pgpool/pp-tls.svg | 4 + 7 files changed, 871 insertions(+), 2 deletions(-) create mode 100755 docs/guides/pgpool/tls/_index.md create mode 100644 docs/guides/pgpool/tls/overview.md create mode 100644 docs/guides/pgpool/tls/replicaset.md create mode 100644 docs/guides/pgpool/tls/sharding.md create mode 100644 docs/guides/pgpool/tls/standalone.md create mode 100644 docs/images/day-2-operation/pgpool/pp-tls.svg diff --git a/docs/guides/pgpool/concepts/pgpool.md b/docs/guides/pgpool/concepts/pgpool.md index 9e0c443480..c713178cb9 100644 --- a/docs/guides/pgpool/concepts/pgpool.md +++ b/docs/guides/pgpool/concepts/pgpool.md @@ -159,8 +159,8 @@ secret "pgpool-auth" created ```yaml apiVersion: v1 data: - password: O9xE1mZZDAdBTbrV - username: jhon-doe + password: "O9xE1mZZDAdBTbrV" + username: "jhon-doe" kind: Secret metadata: name: pgpool-auth diff --git a/docs/guides/pgpool/tls/_index.md b/docs/guides/pgpool/tls/_index.md new file mode 100755 index 0000000000..a96cb50f0c --- /dev/null +++ b/docs/guides/pgpool/tls/_index.md @@ -0,0 +1,10 @@ +--- +title: Run pgpool with TLS +menu: + docs_{{ .version }}: + identifier: pp-tls + name: TLS/SSL Encryption + parent: pp-pgpool-guides + weight: 45 +menu_name: docs_{{ .version }} +--- diff --git a/docs/guides/pgpool/tls/overview.md b/docs/guides/pgpool/tls/overview.md new file mode 100644 index 0000000000..633b54bd4c --- /dev/null +++ b/docs/guides/pgpool/tls/overview.md @@ -0,0 +1,70 @@ +--- +title: Pgpool TLS/SSL Encryption Overview +menu: + docs_{{ .version }}: + identifier: pp-tls-overview + name: Overview + parent: pp-tls + weight: 10 +menu_name: docs_{{ .version }} +section_menu_id: guides +--- + +> New to KubeDB? Please start [here](/docs/README.md). + +# Pgpool TLS/SSL Encryption + +**Prerequisite :** To configure TLS/SSL in `Pgpool`, `KubeDB` uses `cert-manager` to issue certificates. So first you have to make sure that the cluster has `cert-manager` installed. To install `cert-manager` in your cluster following steps [here](https://cert-manager.io/docs/installation/kubernetes/). + +To issue a certificate, the following crd of `cert-manager` is used: + +- `Issuer/ClusterIssuer`: Issuers, and ClusterIssuers represent certificate authorities (CAs) that are able to generate signed certificates by honoring certificate signing requests. All cert-manager certificates require a referenced issuer that is in a ready condition to attempt to honor the request. You can learn more details [here](https://cert-manager.io/docs/concepts/issuer/). + +- `Certificate`: `cert-manager` has the concept of Certificates that define a desired x509 certificate which will be renewed and kept up to date. You can learn more details [here](https://cert-manager.io/docs/concepts/certificate/). + +**Pgpool CRD Specification :** + +KubeDB uses following crd fields to enable SSL/TLS encryption in `Pgpool`. + +- `spec:` + - `sslMode` + - `tls:` + - `issuerRef` + - `certificates` + - `cientAuthMode` +Read about the fields in details from [pgpool concept](/docs/guides/pgpool/concepts/pgpool.md), + +When, `sslMode` is set to `require`, the users must specify the `tls.issuerRef` field. `KubeDB` uses the `issuer` or `clusterIssuer` referenced in the `tls.issuerRef` field, and the certificate specs provided in `tls.certificate` to generate certificate secrets using `Issuer/ClusterIssuers` specification. These certificates secrets including `ca.crt`, `tls.crt` and `tls.key` etc. are used to configure `Pgpool` server, exporter etc. respectively. + +## How TLS/SSL configures in Pgpool + +The following figure shows how `KubeDB` enterprise used to configure TLS/SSL in Pgpool. Open the image in a new tab to see the enlarged version. + +

+Deploy Pgpool with TLS/SSL +
Fig: Deploy Pgpool with TLS/SSL
+
+ +Deploying Pgpool with TLS/SSL configuration process consists of the following steps: + +1. At first, a user creates a `Issuer/ClusterIssuer` cr. + +2. Then the user creates a `Pgpool` cr which refers to the `Issuer/ClusterIssuer` cr that the user created in the previous step. + +3. `KubeDB` Provisioner operator watches for the `Pgpool` cr. + +4. When it finds one, it creates `Secret`, `Service`, etc. for the `Pgpool` database. + +5. `KubeDB` Ops-manager operator watches for `Pgpool`(5c), `Issuer/ClusterIssuer`(5b), `Secret` and `Service`(5a). + +6. When it finds all the resources(`Pgpool`, `Issuer/ClusterIssuer`, `Secret`, `Service`), it creates `Certificates` by using `tls.issuerRef` and `tls.certificates` field specification from `Pgpool` cr. + +7. `cert-manager` watches for certificates. + +8. When it finds one, it creates certificate secrets `tls-secrets`(server, client, exporter secrets etc.) that holds the actual certificate signed by the CA. + +9. `KubeDB` Provisioner operator watches for the Certificate secrets `tls-secrets`. + +10. When it finds all the tls-secret, it creates the related `StatefulSets` so that Pgpool database can be configured with TLS/SSL. + +In the next doc, we are going to show a step by step guide on how to configure a `Pgpool` database with TLS/SSL. \ No newline at end of file diff --git a/docs/guides/pgpool/tls/replicaset.md b/docs/guides/pgpool/tls/replicaset.md new file mode 100644 index 0000000000..3ff6a02879 --- /dev/null +++ b/docs/guides/pgpool/tls/replicaset.md @@ -0,0 +1,266 @@ +--- +title: MongoDB ReplicaSet TLS/SSL Encryption +menu: + docs_{{ .version }}: + identifier: mg-tls-replicaset + name: Replicaset + parent: mg-tls + weight: 30 +menu_name: docs_{{ .version }} +section_menu_id: guides +--- + +> New to KubeDB? Please start [here](/docs/README.md). + +# Run MongoDB with TLS/SSL (Transport Encryption) + +KubeDB supports providing TLS/SSL encryption (via, `sslMode` and `clusterAuthMode`) for MongoDB. This tutorial will show you how to use KubeDB to run a MongoDB database with TLS/SSL encryption. + +## Before You Begin + +- At first, you need to have a Kubernetes cluster, and the kubectl command-line tool must be configured to communicate with your cluster. If you do not already have a cluster, you can create one by using [kind](https://kind.sigs.k8s.io/docs/user/quick-start/). + +- Install [`cert-manger`](https://cert-manager.io/docs/installation/) v1.0.0 or later to your cluster to manage your SSL/TLS certificates. + +- Now, install KubeDB cli on your workstation and KubeDB operator in your cluster following the steps [here](/docs/setup/README.md). + +- To keep things isolated, this tutorial uses a separate namespace called `demo` throughout this tutorial. + + ```bash + $ kubectl create ns demo + namespace/demo created + ``` + +> Note: YAML files used in this tutorial are stored in [docs/examples/mongodb](https://github.com/kubedb/docs/tree/{{< param "info.version" >}}/docs/examples/mongodb) folder in GitHub repository [kubedb/docs](https://github.com/kubedb/docs). + +## Overview + +KubeDB uses following crd fields to enable SSL/TLS encryption in Mongodb. + +- `spec:` + - `sslMode` + - `tls:` + - `issuerRef` + - `certificate` + - `clusterAuthMode` + +Read about the fields in details in [mongodb concept](/docs/guides/mongodb/concepts/mongodb.md), + +`sslMode`, and `tls` is applicable for all types of MongoDB (i.e., `standalone`, `replicaset` and `sharding`), while `clusterAuthMode` provides [ClusterAuthMode](https://docs.mongodb.com/manual/reference/program/mongod/#cmdoption-mongod-clusterauthmode) for MongoDB clusters (i.e., `replicaset` and `sharding`). + +When, SSLMode is anything other than `disabled`, users must specify the `tls.issuerRef` field. KubeDB uses the `issuer` or `clusterIssuer` referenced in the `tls.issuerRef` field, and the certificate specs provided in `tls.certificate` to generate certificate secrets. These certificate secrets are then used to generate required certificates including `ca.crt`, `mongo.pem` and `client.pem`. + +The subject of `client.pem` certificate is added as `root` user in `$external` mongodb database. So, user can use this client certificate for `MONGODB-X509` `authenticationMechanism`. + +## Create Issuer/ ClusterIssuer + +We are going to create an example `Issuer` that will be used throughout the duration of this tutorial to enable SSL/TLS in MongoDB. Alternatively, you can follow this [cert-manager tutorial](https://cert-manager.io/docs/configuration/ca/) to create your own `Issuer`. + +- Start off by generating you ca certificates using openssl. + +```bash +openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout ./ca.key -out ./ca.crt -subj "/CN=mongo/O=kubedb" +``` + +- Now create a ca-secret using the certificate files you have just generated. + +```bash +kubectl create secret tls mongo-ca \ + --cert=ca.crt \ + --key=ca.key \ + --namespace=demo +``` + +Now, create an `Issuer` using the `ca-secret` you have just created. The `YAML` file looks like this: + +```yaml +apiVersion: cert-manager.io/v1 +kind: Issuer +metadata: + name: mongo-ca-issuer + namespace: demo +spec: + ca: + secretName: mongo-ca +``` + +Apply the `YAML` file: + +```bash +$ kubectl create -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/mongodb/tls/issuer.yaml +issuer.cert-manager.io/mongo-ca-issuer created +``` + +## TLS/SSL encryption in MongoDB Replicaset + +Below is the YAML for MongoDB Replicaset. Here, [`spec.sslMode`](/docs/guides/mongodb/concepts/mongodb.md#specsslMode) specifies `sslMode` for `replicaset` (which is `requireSSL`) and [`spec.clusterAuthMode`](/docs/guides/mongodb/concepts/mongodb.md#specclusterAuthMode) provides `clusterAuthMode` for mongodb replicaset nodes (which is `x509`). + +```yaml +apiVersion: kubedb.com/v1alpha2 +kind: MongoDB +metadata: + name: mgo-rs-tls + namespace: demo +spec: + version: "4.4.26" + sslMode: requireSSL + tls: + issuerRef: + apiGroup: "cert-manager.io" + kind: Issuer + name: mongo-ca-issuer + clusterAuthMode: x509 + replicas: 4 + replicaSet: + name: rs0 + storage: + storageClassName: "standard" + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi +``` + +### Deploy MongoDB Replicaset + +```bash +$ kubectl create -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/mongodb/tls/mg-replicaset-ssl.yaml +mongodb.kubedb.com/mgo-rs-tls created +``` + +Now, wait until `mgo-rs-tls created` has status `Ready`. i.e, + +```bash +$ watch kubectl get mg -n demo +Every 2.0s: kubectl get mongodb -n demo +NAME VERSION STATUS AGE +mgo-rs-tls 4.4.26 Ready 4m10s +``` + +### Verify TLS/SSL in MongoDB Replicaset + +Now, connect to this database through [mongo-shell](https://docs.mongodb.com/v4.0/mongo/) and verify if `SSLMode` and `ClusterAuthMode` has been set up as intended. + +```bash +$ kubectl describe secret -n demo mgo-rs-tls-client-cert +Name: mgo-rs-tls-client-cert +Namespace: demo +Labels: +Annotations: cert-manager.io/alt-names: + cert-manager.io/certificate-name: mgo-rs-tls-client-cert + cert-manager.io/common-name: root + cert-manager.io/ip-sans: + cert-manager.io/issuer-group: cert-manager.io + cert-manager.io/issuer-kind: Issuer + cert-manager.io/issuer-name: mongo-ca-issuer + cert-manager.io/uri-sans: + +Type: kubernetes.io/tls + +Data +==== +ca.crt: 1147 bytes +tls.crt: 1172 bytes +tls.key: 1679 bytes +``` + +Now, Let's exec into a mongodb container and find out the username to connect in a mongo shell, + +```bash +$ kubectl exec -it mgo-rs-tls-0 -n demo bash +root@mgo-rs-tls-0:/$ ls /var/run/mongodb/tls +ca.crt client.pem mongo.pem +root@mgo-rs-tls-0:/$ openssl x509 -in /var/run/mongodb/tls/client.pem -inform PEM -subject -nameopt RFC2253 -noout +subject=CN=root,O=kubedb +``` + +Now, we can connect using `CN=root,O=kubedb` as root to connect to the mongo shell, + +```bash +root@mgo-rs-tls-0:/$ mongo --tls --tlsCAFile /var/run/mongodb/tls/ca.crt --tlsCertificateKeyFile /var/run/mongodb/tls/client.pem admin --host localhost --authenticationMechanism MONGODB-X509 --authenticationDatabase='$external' -u "CN=root,O=kubedb" --quiet +Welcome to the MongoDB shell. +For interactive help, type "help". +For more comprehensive documentation, see + http://docs.mongodb.org/ +Questions? Try the support group + http://groups.google.com/group/mongodb-user +rs0:PRIMARY> +``` + +We are connected to the mongo shell. Let's run some command to verify the sslMode and the user, + +```bash +rs0:PRIMARY> db.adminCommand({ getParameter:1, sslMode:1 }) +{ + "sslMode" : "requireSSL", + "ok" : 1, + "$clusterTime" : { + "clusterTime" : Timestamp(1599490676, 1), + "signature" : { + "hash" : BinData(0,"/wQ4pf4HVi1T7SOyaB3pXO56j64="), + "keyId" : NumberLong("6869759546676477954") + } + }, + "operationTime" : Timestamp(1599490676, 1) +} + +rs0:PRIMARY> use $external +switched to db $external + +rs0:PRIMARY> show users +{ + "_id" : "$external.CN=root,O=kubedb", + "userId" : UUID("9cebbcf4-74bf-47dd-a485-1604125058da"), + "user" : "CN=root,O=kubedb", + "db" : "$external", + "roles" : [ + { + "role" : "root", + "db" : "admin" + } + ], + "mechanisms" : [ + "external" + ] +} +> exit +bye +``` + +You can see here that, `sslMode` is set to `requireSSL` and a user is created in `$external` with name `"CN=root,O=kubedb"`. + +## Changing the SSLMode & ClusterAuthMode + +User can update `sslMode` & `ClusterAuthMode` if needed. Some changes may be invalid from mongodb end, like using `sslMode: disabled` with `clusterAuthMode: x509`. + +The good thing is, **KubeDB operator will throw error for invalid SSL specs while creating/updating the MongoDB object.** i.e., + +```bash +$ kubectl patch -n demo mg/mgo-rs-tls -p '{"spec":{"sslMode": "disabled","clusterAuthMode": "x509"}}' --type="merge" +Error from server (Forbidden): admission webhook "mongodb.validators.kubedb.com" denied the request: can't have disabled set to mongodb.spec.sslMode when mongodb.spec.clusterAuthMode is set to x509 +``` + +To **update from Keyfile Authentication to x.509 Authentication**, change the `sslMode` and `clusterAuthMode` in recommended sequence as suggested in [official documentation](https://docs.mongodb.com/manual/tutorial/update-keyfile-to-x509/). Each time after changing the specs, follow the procedure that is described above to verify the changes of `sslMode` and `clusterAuthMode` inside the database. + +## Cleaning up + +To cleanup the Kubernetes resources created by this tutorial, run: + +```bash +kubectl delete mongodb -n demo mgo-rs-tls +kubectl delete issuer -n demo mongo-ca-issuer +kubectl delete ns demo +``` + +## Next Steps + +- Detail concepts of [MongoDB object](/docs/guides/mongodb/concepts/mongodb.md). +- [Backup and Restore](/docs/guides/mongodb/backup/overview/index.md) MongoDB databases using Stash. +- Initialize [MongoDB with Script](/docs/guides/mongodb/initialization/using-script.md). +- Monitor your MongoDB database with KubeDB using [out-of-the-box Prometheus operator](/docs/guides/mongodb/monitoring/using-prometheus-operator.md). +- Monitor your MongoDB database with KubeDB using [out-of-the-box builtin-Prometheus](/docs/guides/mongodb/monitoring/using-builtin-prometheus.md). +- Use [private Docker registry](/docs/guides/mongodb/private-registry/using-private-registry.md) to deploy MongoDB with KubeDB. +- Use [kubedb cli](/docs/guides/mongodb/cli/cli.md) to manage databases like kubectl for Kubernetes. +- Detail concepts of [MongoDB object](/docs/guides/mongodb/concepts/mongodb.md). +- Want to hack on KubeDB? Check our [contribution guidelines](/docs/CONTRIBUTING.md). diff --git a/docs/guides/pgpool/tls/sharding.md b/docs/guides/pgpool/tls/sharding.md new file mode 100644 index 0000000000..63b19ece57 --- /dev/null +++ b/docs/guides/pgpool/tls/sharding.md @@ -0,0 +1,274 @@ +--- +title: MongoDB Shard TLS/SSL Encryption +menu: + docs_{{ .version }}: + identifier: mg-tls-shard + name: Sharding + parent: mg-tls + weight: 40 +menu_name: docs_{{ .version }} +section_menu_id: guides +--- + +> New to KubeDB? Please start [here](/docs/README.md). + +# Run MongoDB with TLS/SSL (Transport Encryption) + +KubeDB supports providing TLS/SSL encryption (via, `sslMode` and `clusterAuthMode`) for MongoDB. This tutorial will show you how to use KubeDB to run a MongoDB database with TLS/SSL encryption. + +## Before You Begin + +- At first, you need to have a Kubernetes cluster, and the kubectl command-line tool must be configured to communicate with your cluster. If you do not already have a cluster, you can create one by using [kind](https://kind.sigs.k8s.io/docs/user/quick-start/). + +- Install [`cert-manger`](https://cert-manager.io/docs/installation/) v1.0.0 or later to your cluster to manage your SSL/TLS certificates. + +- Now, install KubeDB cli on your workstation and KubeDB operator in your cluster following the steps [here](/docs/setup/README.md). + +- To keep things isolated, this tutorial uses a separate namespace called `demo` throughout this tutorial. + + ```bash + $ kubectl create ns demo + namespace/demo created + ``` + +> Note: YAML files used in this tutorial are stored in [docs/examples/mongodb](https://github.com/kubedb/docs/tree/{{< param "info.version" >}}/docs/examples/mongodb) folder in GitHub repository [kubedb/docs](https://github.com/kubedb/docs). + +## Overview + +KubeDB uses following crd fields to enable SSL/TLS encryption in Mongodb. + +- `spec:` + - `sslMode` + - `tls:` + - `issuerRef` + - `certificate` + - `clusterAuthMode` + +Read about the fields in details in [mongodb concept](/docs/guides/mongodb/concepts/mongodb.md), + +`sslMode`, and `tls` is applicable for all types of MongoDB (i.e., `standalone`, `replicaset` and `sharding`), while `clusterAuthMode` provides [ClusterAuthMode](https://docs.mongodb.com/manual/reference/program/mongod/#cmdoption-mongod-clusterauthmode) for MongoDB clusters (i.e., `replicaset` and `sharding`). + +When, SSLMode is anything other than `disabled`, users must specify the `tls.issuerRef` field. KubeDB uses the `issuer` or `clusterIssuer` referenced in the `tls.issuerRef` field, and the certificate specs provided in `tls.certificate` to generate certificate secrets. These certificate secrets are then used to generate required certificates including `ca.crt`, `mongo.pem` and `client.pem`. + +The subject of `client.pem` certificate is added as `root` user in `$external` mongodb database. So, user can use this client certificate for `MONGODB-X509` `authenticationMechanism`. + +## Create Issuer/ ClusterIssuer + +We are going to create an example `Issuer` that will be used throughout the duration of this tutorial to enable SSL/TLS in MongoDB. Alternatively, you can follow this [cert-manager tutorial](https://cert-manager.io/docs/configuration/ca/) to create your own `Issuer`. + +- Start off by generating you ca certificates using openssl. + +```bash +openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout ./ca.key -out ./ca.crt -subj "/CN=mongo/O=kubedb" +``` + +- Now create a ca-secret using the certificate files you have just generated. + +```bash +kubectl create secret tls mongo-ca \ + --cert=ca.crt \ + --key=ca.key \ + --namespace=demo +``` + +Now, create an `Issuer` using the `ca-secret` you have just created. The `YAML` file looks like this: + +```yaml +apiVersion: cert-manager.io/v1 +kind: Issuer +metadata: + name: mongo-ca-issuer + namespace: demo +spec: + ca: + secretName: mongo-ca +``` + +Apply the `YAML` file: + +```bash +$ kubectl create -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/mongodb/tls/issuer.yaml +issuer.cert-manager.io/mongo-ca-issuer created +``` + +## TLS/SSL encryption in MongoDB Sharding + +Below is the YAML for MongoDB Sharding. Here, [`spec.sslMode`](/docs/guides/mongodb/concepts/mongodb.md#specsslMode) specifies `sslMode` for `sharding` and [`spec.clusterAuthMode`](/docs/guides/mongodb/concepts/mongodb.md#specclusterAuthMode) provides `clusterAuthMode` for sharding servers. + +```yaml +apiVersion: kubedb.com/v1alpha2 +kind: MongoDB +metadata: + name: mongo-sh-tls + namespace: demo +spec: + version: "4.4.26" + sslMode: requireSSL + tls: + issuerRef: + apiGroup: "cert-manager.io" + kind: Issuer + name: mongo-ca-issuer + clusterAuthMode: x509 + shardTopology: + configServer: + replicas: 2 + storage: + resources: + requests: + storage: 1Gi + storageClassName: standard + mongos: + replicas: 2 + shard: + replicas: 2 + shards: 2 + storage: + resources: + requests: + storage: 1Gi + storageClassName: standard + storageType: Durable + terminationPolicy: WipeOut +``` + +### Deploy MongoDB Sharding + +```bash +$ kubectl create -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/mongodb/tls/mg-shard-ssl.yaml +mongodb.kubedb.com/mongo-sh-tls created +``` + +Now, wait until `mongo-sh-tls created` has status `Ready`. ie, + +```bash +$ watch kubectl get mg -n demo +Every 2.0s: kubectl get mongodb -n demo +NAME VERSION STATUS AGE +mongo-sh-tls 4.4.26 Ready 4m24s +``` + +### Verify TLS/SSL in MongoDB Sharding + +Now, connect to `mongos` component of this database through [mongo-shell](https://docs.mongodb.com/v4.0/mongo/) and verify if `SSLMode` and `ClusterAuthMode` has been set up as intended. + +```bash +$ kubectl describe secret -n demo mongo-sh-tls-client-cert +Name: mongo-sh-tls-client-cert +Namespace: demo +Labels: +Annotations: cert-manager.io/alt-names: + cert-manager.io/certificate-name: mongo-sh-tls-client-cert + cert-manager.io/common-name: root + cert-manager.io/ip-sans: + cert-manager.io/issuer-group: cert-manager.io + cert-manager.io/issuer-kind: Issuer + cert-manager.io/issuer-name: mongo-ca-issuer + cert-manager.io/uri-sans: + +Type: kubernetes.io/tls + +Data +==== +ca.crt: 1147 bytes +tls.crt: 1172 bytes +tls.key: 1679 bytes +``` + +Now, Let's exec into a mongodb container and find out the username to connect in a mongo shell, + +```bash +$ kubectl exec -it mongo-sh-tls-mongos-0 -n demo bash +root@mongo-sh-tls-mongos-0:/$ ls /var/run/mongodb/tls +ca.crt client.pem mongo.pem +mongodb@mgo-sh-tls-mongos-0:/$ openssl x509 -in /var/run/mongodb/tls/client.pem -inform PEM -subject -nameopt RFC2253 -noout +subject=CN=root,O=kubedb +``` + +Now, we can connect using `CN=root,O=kubedb` as root to connect to the mongo shell, + +```bash +root@mongo-sh-tls-mongos-0:/# mongo --tls --tlsCAFile /var/run/mongodb/tls/ca.crt --tlsCertificateKeyFile /var/run/mongodb/tls/client.pem admin --host localhost --authenticationMechanism MONGODB-X509 --authenticationDatabase='$external' -u "CN=root,O=kubedb" --quiet +Welcome to the MongoDB shell. +For interactive help, type "help". +For more comprehensive documentation, see + http://docs.mongodb.org/ +Questions? Try the support group + http://groups.google.com/group/mongodb-user +mongos> +``` + +We are connected to the mongo shell. Let's run some command to verify the sslMode and the user, + +```bash +mongos> db.adminCommand({ getParameter:1, sslMode:1 }) +{ + "sslMode" : "requireSSL", + "ok" : 1, + "operationTime" : Timestamp(1599491398, 1), + "$clusterTime" : { + "clusterTime" : Timestamp(1599491398, 1), + "signature" : { + "hash" : BinData(0,"cn2Mhfy2blonon3jPz6Daen0nnc="), + "keyId" : NumberLong("6869760899591176209") + } + } +} +mongos> use $external +switched to db $external +mongos> show users +{ + "_id" : "$external.CN=root,O=kubedb", + "userId" : UUID("4865dda6-5e31-4b79-a085-7d6fea51c9be"), + "user" : "CN=root,O=kubedb", + "db" : "$external", + "roles" : [ + { + "role" : "root", + "db" : "admin" + } + ], + "mechanisms" : [ + "external" + ] +} +> exit +bye +``` + +You can see here that, `sslMode` is set to `requireSSL` and `clusterAuthMode` is set to `x509` and also an user is created in `$external` with name `"CN=root,O=kubedb"`. + +## Changing the SSLMode & ClusterAuthMode + +User can update `sslMode` & `ClusterAuthMode` if needed. Some changes may be invalid from mongodb end, like using `sslMode: disabled` with `clusterAuthMode: x509`. + +The good thing is, **KubeDB operator will throw error for invalid SSL specs while creating/updating the MongoDB object.** i.e., + +```bash +$ kubectl patch -n demo mg/mgo-sh-tls -p '{"spec":{"sslMode": "disabled","clusterAuthMode": "x509"}}' --type="merge" +Error from server (Forbidden): admission webhook "mongodb.validators.kubedb.com" denied the request: can't have disabled set to mongodb.spec.sslMode when mongodb.spec.clusterAuthMode is set to x509 +``` + +To **update from Keyfile Authentication to x.509 Authentication**, change the `sslMode` and `clusterAuthMode` in recommended sequence as suggested in [official documentation](https://docs.mongodb.com/manual/tutorial/update-keyfile-to-x509/). Each time after changing the specs, follow the procedure that is described above to verify the changes of `sslMode` and `clusterAuthMode` inside the database. + +## Cleaning up + +To cleanup the Kubernetes resources created by this tutorial, run: + +```bash +kubectl delete mongodb -n demo mongo-sh-tls +kubectl delete issuer -n demo mongo-ca-issuer +kubectl delete ns demo +``` + +## Next Steps + +- Detail concepts of [MongoDB object](/docs/guides/mongodb/concepts/mongodb.md). +- [Backup and Restore](/docs/guides/mongodb/backup/overview/index.md) MongoDB databases using Stash. +- Initialize [MongoDB with Script](/docs/guides/mongodb/initialization/using-script.md). +- Monitor your MongoDB database with KubeDB using [out-of-the-box Prometheus operator](/docs/guides/mongodb/monitoring/using-prometheus-operator.md). +- Monitor your MongoDB database with KubeDB using [out-of-the-box builtin-Prometheus](/docs/guides/mongodb/monitoring/using-builtin-prometheus.md). +- Use [private Docker registry](/docs/guides/mongodb/private-registry/using-private-registry.md) to deploy MongoDB with KubeDB. +- Use [kubedb cli](/docs/guides/mongodb/cli/cli.md) to manage databases like kubectl for Kubernetes. +- Detail concepts of [MongoDB object](/docs/guides/mongodb/concepts/mongodb.md). +- Want to hack on KubeDB? Check our [contribution guidelines](/docs/CONTRIBUTING.md). diff --git a/docs/guides/pgpool/tls/standalone.md b/docs/guides/pgpool/tls/standalone.md new file mode 100644 index 0000000000..d5dd367ba8 --- /dev/null +++ b/docs/guides/pgpool/tls/standalone.md @@ -0,0 +1,245 @@ +--- +title: MongoDB Standalone TLS/SSL Encryption +menu: + docs_{{ .version }}: + identifier: mg-tls-standalone + name: Standalone + parent: mg-tls + weight: 20 +menu_name: docs_{{ .version }} +section_menu_id: guides +--- + +> New to KubeDB? Please start [here](/docs/README.md). + +# Run MongoDB with TLS/SSL (Transport Encryption) + +KubeDB supports providing TLS/SSL encryption (via, `sslMode` and `clusterAuthMode`) for MongoDB. This tutorial will show you how to use KubeDB to run a MongoDB database with TLS/SSL encryption. + +## Before You Begin + +- At first, you need to have a Kubernetes cluster, and the kubectl command-line tool must be configured to communicate with your cluster. If you do not already have a cluster, you can create one by using [kind](https://kind.sigs.k8s.io/docs/user/quick-start/). + +- Install [`cert-manger`](https://cert-manager.io/docs/installation/) v1.0.0 or later to your cluster to manage your SSL/TLS certificates. + +- Now, install KubeDB cli on your workstation and KubeDB operator in your cluster following the steps [here](/docs/setup/README.md). + +- To keep things isolated, this tutorial uses a separate namespace called `demo` throughout this tutorial. + + ```bash + $ kubectl create ns demo + namespace/demo created + ``` + +> Note: YAML files used in this tutorial are stored in [docs/examples/mongodb](https://github.com/kubedb/docs/tree/{{< param "info.version" >}}/docs/examples/mongodb) folder in GitHub repository [kubedb/docs](https://github.com/kubedb/docs). + +## Overview + +KubeDB uses following crd fields to enable SSL/TLS encryption in Mongodb. + +- `spec:` + - `sslMode` + - `tls:` + - `issuerRef` + - `certificate` + - `clusterAuthMode` + +Read about the fields in details in [mongodb concept](/docs/guides/mongodb/concepts/mongodb.md), + +`sslMode`, and `tls` is applicable for all types of MongoDB (i.e., `standalone`, `replicaset` and `sharding`), while `clusterAuthMode` provides [ClusterAuthMode](https://docs.mongodb.com/manual/reference/program/mongod/#cmdoption-mongod-clusterauthmode) for MongoDB clusters (i.e., `replicaset` and `sharding`). + +When, SSLMode is anything other than `disabled`, users must specify the `tls.issuerRef` field. KubeDB uses the `issuer` or `clusterIssuer` referenced in the `tls.issuerRef` field, and the certificate specs provided in `tls.certificate` to generate certificate secrets. These certificate secrets are then used to generate required certificates including `ca.crt`, `mongo.pem` and `client.pem`. + +The subject of `client.pem` certificate is added as `root` user in `$external` mongodb database. So, user can use this client certificate for `MONGODB-X509` `authenticationMechanism`. + +## Create Issuer/ ClusterIssuer + +We are going to create an example `Issuer` that will be used throughout the duration of this tutorial to enable SSL/TLS in MongoDB. Alternatively, you can follow this [cert-manager tutorial](https://cert-manager.io/docs/configuration/ca/) to create your own `Issuer`. + +- Start off by generating you ca certificates using openssl. + +```bash +openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout ./ca.key -out ./ca.crt -subj "/CN=mongo/O=kubedb" +``` + +- Now create a ca-secret using the certificate files you have just generated. + +```bash +kubectl create secret tls mongo-ca \ + --cert=ca.crt \ + --key=ca.key \ + --namespace=demo +``` + +Now, create an `Issuer` using the `ca-secret` you have just created. The `YAML` file looks like this: + +```yaml +apiVersion: cert-manager.io/v1 +kind: Issuer +metadata: + name: mongo-ca-issuer + namespace: demo +spec: + ca: + secretName: mongo-ca +``` + +Apply the `YAML` file: + +```bash +$ kubectl create -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/mongodb/tls/issuer.yaml +issuer.cert-manager.io/mongo-ca-issuer created +``` + +## TLS/SSL encryption in MongoDB Standalone + +Below is the YAML for MongoDB Standalone. Here, [`spec.sslMode`](/docs/guides/mongodb/concepts/mongodb.md#specsslMode) specifies `sslMode` for `standalone` (which is `requireSSL`). + +```yaml +apiVersion: kubedb.com/v1alpha2 +kind: MongoDB +metadata: + name: mgo-tls + namespace: demo +spec: + version: "4.4.26" + sslMode: requireSSL + tls: + issuerRef: + apiGroup: "cert-manager.io" + kind: Issuer + name: mongo-ca-issuer + storage: + storageClassName: "standard" + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi +``` + +### Deploy MongoDB Standalone + +```bash +$ kubectl create -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/mongodb/tls/mg-standalone-ssl.yaml +mongodb.kubedb.com/mgo-tls created +``` + +Now, wait until `mgo-tls created` has status `Ready`. i.e, + +```bash +$ watch kubectl get mg -n demo +Every 2.0s: kubectl get mongodb -n demo +NAME VERSION STATUS AGE +mgo-tls 4.4.26 Ready 14s +``` + +### Verify TLS/SSL in MongoDB Standalone + +Now, connect to this database through [mongo-shell](https://docs.mongodb.com/v4.0/mongo/) and verify if `SSLMode` has been set up as intended (i.e, `requireSSL`). + +```bash +$ kubectl describe secret -n demo mgo-tls-client-cert +Name: mgo-tls-client-cert +Namespace: demo +Labels: +Annotations: cert-manager.io/alt-names: + cert-manager.io/certificate-name: mgo-tls-client-cert + cert-manager.io/common-name: root + cert-manager.io/ip-sans: + cert-manager.io/issuer-group: cert-manager.io + cert-manager.io/issuer-kind: Issuer + cert-manager.io/issuer-name: mongo-ca-issuer + cert-manager.io/uri-sans: + +Type: kubernetes.io/tls + +Data +==== +tls.crt: 1172 bytes +tls.key: 1679 bytes +ca.crt: 1147 bytes +``` + +Now, Let's exec into a mongodb container and find out the username to connect in a mongo shell, + +```bash +$ kubectl exec -it mgo-tls-0 -n demo bash +mongodb@mgo-tls-0:/$ ls /var/run/mongodb/tls +ca.crt client.pem mongo.pem +mongodb@mgo-tls-0:/$ openssl x509 -in /var/run/mongodb/tls/client.pem -inform PEM -subject -nameopt RFC2253 -noout +subject=CN=root,O=kubedb +``` + +Now, we can connect using `CN=root,O=kubedb` as root to connect to the mongo shell, + +```bash +mongodb@mgo-tls-0:/$ mongo --tls --tlsCAFile /var/run/mongodb/tls/ca.crt --tlsCertificateKeyFile /var/run/mongodb/tls/client.pem admin --host localhost --authenticationMechanism MONGODB-X509 --authenticationDatabase='$external' -u "CN=root,O=kubedb" --quiet +> +``` + +We are connected to the mongo shell. Let's run some command to verify the sslMode and the user, + +```bash +> db.adminCommand({ getParameter:1, sslMode:1 }) +{ "sslMode" : "requireSSL", "ok" : 1 } + +> use $external +switched to db $external + +> show users +{ + "_id" : "$external.CN=root,O=kubedb", + "userId" : UUID("d2ddf121-9398-400b-b477-0e8bcdd47746"), + "user" : "CN=root,O=kubedb", + "db" : "$external", + "roles" : [ + { + "role" : "root", + "db" : "admin" + } + ], + "mechanisms" : [ + "external" + ] +} +> exit +bye +``` + +You can see here that, `sslMode` is set to `requireSSL` and a user is created in `$external` with name `"CN=root,O=kubedb"`. + +## Changing the SSLMode & ClusterAuthMode + +User can update `sslMode` & `ClusterAuthMode` if needed. Some changes may be invalid from mongodb end, like using `sslMode: disabled` with `clusterAuthMode: x509`. + +The good thing is, **KubeDB operator will throw error for invalid SSL specs while creating/updating the MongoDB object.** i.e., + +```bash +$ kubectl patch -n demo mg/mgo-tls -p '{"spec":{"sslMode": "disabled","clusterAuthMode": "x509"}}' --type="merge" +Error from server (Forbidden): admission webhook "mongodb.validators.kubedb.com" denied the request: can't have disabled set to mongodb.spec.sslMode when mongodb.spec.clusterAuthMode is set to x509 +``` + +To **update from Keyfile Authentication to x.509 Authentication**, change the `sslMode` and `clusterAuthMode` in recommended sequence as suggested in [official documentation](https://docs.mongodb.com/manual/tutorial/update-keyfile-to-x509/). Each time after changing the specs, follow the procedure that is described above to verify the changes of `sslMode` and `clusterAuthMode` inside the database. + +## Cleaning up + +To cleanup the Kubernetes resources created by this tutorial, run: + +```bash +kubectl delete mongodb -n demo mgo-tls +kubectl delete issuer -n demo mongo-ca-issuer +kubectl delete ns demo +``` + +## Next Steps + +- Detail concepts of [MongoDB object](/docs/guides/mongodb/concepts/mongodb.md). +- [Backup and Restore](/docs/guides/mongodb/backup/overview/index.md) MongoDB databases using Stash. +- Initialize [MongoDB with Script](/docs/guides/mongodb/initialization/using-script.md). +- Monitor your MongoDB database with KubeDB using [out-of-the-box Prometheus operator](/docs/guides/mongodb/monitoring/using-prometheus-operator.md). +- Monitor your MongoDB database with KubeDB using [out-of-the-box builtin-Prometheus](/docs/guides/mongodb/monitoring/using-builtin-prometheus.md). +- Use [private Docker registry](/docs/guides/mongodb/private-registry/using-private-registry.md) to deploy MongoDB with KubeDB. +- Use [kubedb cli](/docs/guides/mongodb/cli/cli.md) to manage databases like kubectl for Kubernetes. +- Detail concepts of [MongoDB object](/docs/guides/mongodb/concepts/mongodb.md). +- Want to hack on KubeDB? Check our [contribution guidelines](/docs/CONTRIBUTING.md). diff --git a/docs/images/day-2-operation/pgpool/pp-tls.svg b/docs/images/day-2-operation/pgpool/pp-tls.svg new file mode 100644 index 0000000000..f238b998af --- /dev/null +++ b/docs/images/day-2-operation/pgpool/pp-tls.svg @@ -0,0 +1,4 @@ + + + +            Enterprise            Operator              Community            Operator
service
se...
secret
se...
tls-secret
tls-secret
Cert- manager
Cert- ma...
PetSet
Statef...
Issuer/Cluster Issuer
Issuer...
Pgpool
Pgpool
Certificates
Certif...
User
User
2.Create
2.Create
1.Create
1.Create
5a.Watch
5a.Watch
3.Watch
3.Watch
4.Create
4.Create
5c.Watch
5c.Watch
6.Create
6.Create
7.Watch
7.Watch
uses
uses
8.Create
8.Create
9.Watch
9.Watch
10.Create
10.Create
5b.Watch
5b.Watch
refers to
refers to
Text is not SVG - cannot display
\ No newline at end of file From d482bc108ee78293a25b8adc772c310209472a56 Mon Sep 17 00:00:00 2001 From: MobarakHsn Date: Tue, 16 Jul 2024 18:01:58 +0600 Subject: [PATCH 05/16] Pgpool tls related docs Signed-off-by: MobarakHsn --- docs/examples/pgpool/tls/issuer.yaml | 8 + docs/examples/pgpool/tls/pgpool-ssl.yaml | 29 ++ .../monitoring/using-builtin-prometheus.md | 2 +- docs/guides/pgpool/tls/configure_ssl.md | 321 ++++++++++++++++++ docs/guides/pgpool/tls/overview.md | 4 +- docs/guides/pgpool/tls/replicaset.md | 266 --------------- docs/guides/pgpool/tls/sharding.md | 274 --------------- docs/guides/pgpool/tls/standalone.md | 245 ------------- 8 files changed, 361 insertions(+), 788 deletions(-) create mode 100644 docs/examples/pgpool/tls/issuer.yaml create mode 100644 docs/examples/pgpool/tls/pgpool-ssl.yaml create mode 100644 docs/guides/pgpool/tls/configure_ssl.md delete mode 100644 docs/guides/pgpool/tls/replicaset.md delete mode 100644 docs/guides/pgpool/tls/sharding.md delete mode 100644 docs/guides/pgpool/tls/standalone.md diff --git a/docs/examples/pgpool/tls/issuer.yaml b/docs/examples/pgpool/tls/issuer.yaml new file mode 100644 index 0000000000..38ec31b1ab --- /dev/null +++ b/docs/examples/pgpool/tls/issuer.yaml @@ -0,0 +1,8 @@ +apiVersion: cert-manager.io/v1 +kind: Issuer +metadata: + name: pgpool-ca-issuer + namespace: demo +spec: + ca: + secretName: pgpool-ca \ No newline at end of file diff --git a/docs/examples/pgpool/tls/pgpool-ssl.yaml b/docs/examples/pgpool/tls/pgpool-ssl.yaml new file mode 100644 index 0000000000..ac9efe45f1 --- /dev/null +++ b/docs/examples/pgpool/tls/pgpool-ssl.yaml @@ -0,0 +1,29 @@ +apiVersion: kubedb.com/v1alpha2 +kind: Pgpool +metadata: + name: pgpool-test + namespace: demo +spec: + version: "4.5.0" + replicas: 1 + postgresRef: + name: ha-postgres + namespace: demo + sslMode: require + clientAuthMode: cert + tls: + issuerRef: + apiGroup: cert-manager.io + name: pgpool-ca-issuer + kind: Issuer + certificates: + - alias: server + subject: + organizations: + - kubedb:server + dnsNames: + - localhost + ipAddresses: + - "127.0.0.1" + syncUsers: true + deletionPolicy: WipeOut \ No newline at end of file diff --git a/docs/guides/pgpool/monitoring/using-builtin-prometheus.md b/docs/guides/pgpool/monitoring/using-builtin-prometheus.md index 95f17fb5c9..94b98773e5 100644 --- a/docs/guides/pgpool/monitoring/using-builtin-prometheus.md +++ b/docs/guides/pgpool/monitoring/using-builtin-prometheus.md @@ -354,7 +354,7 @@ kubectl delete ns monitoring ## Next Steps -- Monitor your Pgpool database with KubeDB using [Prometheus-Operator](/docs/guides/pgpool/monitoring/using-prometheus-operator.md). +- Monitor your Pgpool database with KubeDB using [out-of-the-box prometheus-Operator](/docs/guides/pgpool/monitoring/using-prometheus-operator.md). - Detail concepts of [Pgpool object](/docs/guides/pgpool/concepts/pgpool.md). - Detail concepts of [PgpoolVersion object](/docs/guides/pgpool/concepts/catalog.md). - Want to hack on KubeDB? Check our [contribution guidelines](/docs/CONTRIBUTING.md). diff --git a/docs/guides/pgpool/tls/configure_ssl.md b/docs/guides/pgpool/tls/configure_ssl.md new file mode 100644 index 0000000000..b04851df9f --- /dev/null +++ b/docs/guides/pgpool/tls/configure_ssl.md @@ -0,0 +1,321 @@ +--- +title: Pgpool TLS/SSL Encryption +menu: + docs_{{ .version }}: + identifier: pp-tls-configure + name: Pgpool_SSL + parent: pp-tls + weight: 20 +menu_name: docs_{{ .version }} +section_menu_id: guides +--- + +> New to KubeDB? Please start [here](/docs/README.md). + +# Run Pgpool with TLS/SSL (Transport Encryption) + +KubeDB supports providing TLS/SSL encryption (via, `sslMode` and `clientAuthMode`) for Pgpool. This tutorial will show you how to use KubeDB to run a Pgpool database with TLS/SSL encryption. + +## Before You Begin + +- At first, you need to have a Kubernetes cluster, and the kubectl command-line tool must be configured to communicate with your cluster. If you do not already have a cluster, you can create one by using [kind](https://kind.sigs.k8s.io/docs/user/quick-start/). + +- Install [`cert-manger`](https://cert-manager.io/docs/installation/) v1.0.0 or later to your cluster to manage your SSL/TLS certificates. + +- Now, install KubeDB cli on your workstation and KubeDB operator in your cluster following the steps [here](/docs/setup/README.md). + +- To keep things isolated, this tutorial uses a separate namespace called `demo` throughout this tutorial. + + ```bash + $ kubectl create ns demo + namespace/demo created + ``` + +> Note: YAML files used in this tutorial are stored in [docs/examples/pgpool](https://github.com/kubedb/docs/tree/{{< param "info.version" >}}/docs/examples/pgpool) folder in GitHub repository [kubedb/docs](https://github.com/kubedb/docs). + +## Overview + +KubeDB uses following crd fields to enable SSL/TLS encryption in Mongodb. + +- `spec:` + - `sslMode` + - `tls:` + - `issuerRef` + - `certificate` + - `clientAuthMode` + +Read about the fields in details in [pgpool concept](/docs/guides/pgpool/concepts/pgpool.md), + +`sslMode` enables TLS/SSL or mixed TLS/SSL used for all network connections. The value of `sslMode` field can be one of the following: + +| Value | Description | +|:-------------:|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `disabled` | The server does not use TLS/SSL. | +| `require` | The server uses and accepts only TLS/SSL encrypted connections. | +| `verify-ca` | The server uses and accepts only TLS/SSL encrypted connections and client want to be sure that client connect to a server that client trust. | +| `verify-full` | The server uses and accepts only TLS/SSL encrypted connections and client want to be sure that client connect to a server client trust, and that it's the one client specify. | + +The specified ssl mode will be used by health checker and exporter of Pgpool. + +The value of `clientAuthMode` field can be one of the following: + +| Value | Description | +|:-------------:|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `scram` | The server uses scram-sha-256 authentication method to authenticate the users. | +| `md5` | The server uses md5 authentication method to authenticate the users. | +| `cert` | The server uses tls certificates to authenticate the users and for this `sslMode` must not be disabled | + +The `pool_hba.conf` of Pgpool will have the configuration based on the specified clientAuthMode. + +When, SSLMode is anything other than `disabled`, users must specify the `tls.issuerRef` field. KubeDB uses the `issuer` or `clusterIssuer` referenced in the `tls.issuerRef` field, and the certificate specs provided in `tls.certificate` to generate certificate secrets. These certificate secrets are then used to generate required certificates including `ca.pem`, `tls.crt` and `tls.key`. + +## Create Issuer/ ClusterIssuer + +We are going to create an example `Issuer` that will be used throughout the duration of this tutorial to enable SSL/TLS in Pgpool. Alternatively, you can follow this [cert-manager tutorial](https://cert-manager.io/docs/configuration/ca/) to create your own `Issuer`. + +- Start off by generating you ca certificates using openssl. + +```bash +openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout ./ca.key -out ./ca.crt -subj "/CN=pgpool/O=kubedb" +``` + +- Now create a ca-secret using the certificate files you have just generated. + +```bash +kubectl create secret tls pgpool-ca \ + --cert=ca.crt \ + --key=ca.key \ + --namespace=demo +``` + +Now, create an `Issuer` using the `ca-secret` you have just created. The `YAML` file looks like this: + +```yaml +apiVersion: cert-manager.io/v1 +kind: Issuer +metadata: + name: pgpool-ca-issuer + namespace: demo +spec: + ca: + secretName: pgpool-ca +``` + +Apply the `YAML` file: + +```bash +$ kubectl create -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/pgpool/tls/issuer.yaml +issuer.cert-manager.io/pgpool-ca-issuer created +``` + +## TLS/SSL encryption in Pgpool + +Below is the YAML for Pgpool with TLS enabled: + +```yaml +apiVersion: kubedb.com/v1alpha2 +kind: Pgpool +metadata: + name: pp-tls + namespace: demo +spec: + version: "4.5.0" + replicas: 1 + postgresRef: + name: ha-postgres + namespace: demo + sslMode: require + clientAuthMode: cert + tls: + issuerRef: + apiGroup: cert-manager.io + name: pgpool-ca-issuer + kind: Issuer + certificates: + - alias: server + subject: + organizations: + - kubedb:server + dnsNames: + - localhost + ipAddresses: + - "127.0.0.1" + syncUsers: true + deletionPolicy: WipeOut +``` + +### Deploy Pgpool Standalone + +```bash +$ kubectl create -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/pgpool/tls/pgpool-ssl.yaml +pgpool.kubedb.com/pp-tls created +``` + +Now, wait until `pp-tls created` has status `Ready`. i.e, + +```bash +$ watch kubectl get pp -n demo +Every 2.0s: kubectl get pgpool -n demo +NAME TYPE VERSION STATUS AGE +pp-tls kubedb.com/v1alpha2 4.5.0 Ready 60s +``` + +### Verify TLS/SSL in Pgpool + +Now, connect to this database through [psql](https://www.postgresql.org/docs/current/app-psql.html) and verify if `SSLMode` has been set up as intended (i.e, `require`). + +```bash +$ kubectl describe secret -n demo pp-tls-client-cert +Name: pp-tls-client-cert +Namespace: demo +Labels: app.kubernetes.io/component=connection-pooler + app.kubernetes.io/instance=pp-tls + app.kubernetes.io/managed-by=kubedb.com + app.kubernetes.io/name=pgpools.kubedb.com + controller.cert-manager.io/fao=true +Annotations: cert-manager.io/alt-names: + cert-manager.io/certificate-name: pp-tls-client-cert + cert-manager.io/common-name: postgres + cert-manager.io/ip-sans: + cert-manager.io/issuer-group: cert-manager.io + cert-manager.io/issuer-kind: Issuer + cert-manager.io/issuer-name: pgpool-ca-issuer + cert-manager.io/uri-sans: + +Type: kubernetes.io/tls + +Data +==== +tls.key: 1675 bytes +ca.crt: 1151 bytes +tls.crt: 1131 bytes +``` + +Now, Lets save the client cert and key to two different files: + +```bash +$ kubectl get secrets -n demo pp-tls-client-cert -o jsonpath='{.data.tls\.crt}' | base64 -d > client.crt +$ cat client.crt +-----BEGIN CERTIFICATE----- +MIIDFjCCAf6gAwIBAgIRAO9tAQn/9lqHN4Pfi+UCe2IwDQYJKoZIhvcNAQELBQAw +IjEPMA0GA1UEAwwGcGdwb29sMQ8wDQYDVQQKDAZrdWJlZGIwHhcNMjQwNzE2MTAz +NzEzWhcNMjQxMDE0MTAzNzEzWjATMREwDwYDVQQDEwhwb3N0Z3JlczCCASIwDQYJ +KoZIhvcNAQEBBQADggEPADCCAQoCggEBAMo7Wikoc8XMAYorLO3lRJbcebiO+8ij +cI96UZ0SMzf7edyBbO1vVrlrBean9toCcW8Wf43o+Q+jRnvZJzzVnfV2C7gLeabC +o1I/g0JUmHdTxnIOLl6C4pvyoYZt4qB/cDorj89u6NIWnzs/fjFhYwCePQfPo7vM +eIeb8Mjngf77Cj5XENFpxR7+2Uy7SrpkeBoxuoPxrnStcwOIE06MbEHsLzGS59Kg +8qVLSyZAdguo8hBVV96gaRzW41uuf6MtBrrvwbv5IwtY9iHhlS9I3Uk+abnEnO6X +5aPUIQMcZixV2NXyEWZpbkoalvsywNcwNO/ESfN1DNA1oXknTknKeLkCAwEAAaNW +MFQwDgYDVR0PAQH/BAQDAgWgMBMGA1UdJQQMMAoGCCsGAQUFBwMCMAwGA1UdEwEB +/wQCMAAwHwYDVR0jBBgwFoAUXmZGbZwUM7ojagZqJW24+Z+c2PMwDQYJKoZIhvcN +AQELBQADggEBAG0+bEOLTAXeYUIeyA5+aqCs4WTxT4KJo0jY8vWjNH2que4fydDI +860ZP/RWogO+dpVKWYmvmYVkCcNalYs5HnGJDhs+4IyiKcARcKWimuYXy3FtrLWu +UzKACXptOpnLKzD9v1vv1HfyfeB1hXyaEJLUuBPDGb05YSNFehcipbGFBHSWFv13 +rMQCOKGt8R0JJUXR0fcuDEGKv+jpz5P+n5dBtPQ40CrE34mhpa3m00Y64X4PVDI6 +RusaLKyNGkaU+15WErg44/zM3LayvMImRnnoIttO7NkOe/9ige8C3hgEjZoivZKM +0Jc7koXlrnszBH2K/MOst9kHRTPk0VVmxBo= +-----END CERTIFICATE----- +$ kubectl get secrets -n demo pp-tls-client-cert -o jsonpath='{.data.tls\.key}' | base64 -d > client.key +$ cat client.key +-----BEGIN RSA PRIVATE KEY----- +MIIEowIBAAKCAQEAyjtaKShzxcwBiiss7eVEltx5uI77yKNwj3pRnRIzN/t53IFs +7W9WuWsF5qf22gJxbxZ/jej5D6NGe9knPNWd9XYLuAt5psKjUj+DQlSYd1PGcg4u +XoLim/Khhm3ioH9wOiuPz27o0hafOz9+MWFjAJ49B8+ju8x4h5vwyOeB/vsKPlcQ +0WnFHv7ZTLtKumR4GjG6g/GudK1zA4gTToxsQewvMZLn0qDypUtLJkB2C6jyEFVX +3qBpHNbjW65/oy0Guu/Bu/kjC1j2IeGVL0jdST5pucSc7pflo9QhAxxmLFXY1fIR +ZmluShqW+zLA1zA078RJ83UM0DWheSdOScp4uQIDAQABAoIBAQC7PPSfQsreCaIr +UQpKQImevAcer5PDEj/3N6M0sFMns/gCBvrZYsqC5eoSwtS0yKpJ1iTHOTrQFbX+ +mPHRS17ykxcKkeVSVsdsMU3QLg7z/Gax1xtrefdht+WBV2AKhbNcyFRgFCoPyc4n +xwOJqMdHHTsYblEEYa3+sIzhFiev8Qv/eORQGcA/RFWier4sIZMGlhz/2aRmWXqr +9g+3g1VdMqor/0QX/MzAmuffoeGK/lSDZZLZ0fjZHxTXT56hMknzHkOoz3XK/BXj +AnOAosdg/MXCZEiP13aLMYcZ13Lx9txdcgBIU2tZmssNiN9XiGq+tcaYwnbqF7YS +mwyyS4NZAoGBANO3qMoRP3OOR5butEy03K0nLv8oMEgFy4nkFUBsCnr9+ABgZrUn +c/i8pt1kuwTElkV2MMNgCrNIZK6EAWoeuVqzpEwkI/F5FDvyOcXq76okpd21IoqE +PWtn7CR0VQqRfn6XWhU3lle8VrujE+w4OJqWE7a9x1AfxqLqqY2aAgfLAoGBAPSH +ynOi8+aM7LxCTGrROXVE8E4YWaMegLNkYj6WygQYxsww7eQ3Jk6cm+vVgwqIdZyW +hcsDzNutlMBuLreQwCP+asciHBhw8F58Z+6TZO/cBShTq+gXCWMG2zXP5pmxqrKD +UcyQ5F7WcNl+sv9zUYrPry+Jt2zdDzbPsfpyigkLAoGAIaH8a1VAGjBRCRYUiFb2 +837VBW2x9c8N3XLhOWGwbIdp3U1zI3YIA0ycyXDWENTV9mTnLDJWoNJwRBTuUJhe +45zEDeBz4UlVwIwjR2CiAApgWw8KVKzbQPO6XLQqSkqAqMWMZvB0rq1ZrecjJBRu +UYhjy1Tsk7roiDr1Amyjw+8CgYABt2JIZYBowdx3hc+bgFRy6kT1h145suEcYTv/ +THemh7X9gOpqi6iNLLQ7d4gv7r1EmBngTuqFMDa3Ew7o4u82UXbWZvrjgQdu4lio +aAhxVo4CtnOicWbzdvza59aqhYC5OAq+8NVphP/NxwHioSCVZNfJ8aGD9hlBPTv2 +kg89+QKBgAQDWZkq2mPZMmb+ltW1TZO2HqmEXBP9plgYGfrSjpofTjsBzykoaHnA +J/ocHs2cNkW8arrhiZQzDyokZRc1j5+PIYLfXZ1gSK7WfOe6HO/667eCNuoEcfDv +w8MtuCJgbYP8J0BXun982+EnLkuyDAoyX9GvEqyGQagme1ENiwFm +-----END RSA PRIVATE KEY----- +``` + +Now, if you see the common name of the client.crt you can see, +```bash +$ openssl x509 -in client.crt -inform PEM -subject -nameopt RFC2253 -noout +subject=CN=postgres +``` +Here common name of the client certificate is important if you want to connect with the client certificate, the `username must match the common name of the certificate`. Here, we can see the common name(CN) is, `postgres`. So, we will use postgres user to connect with Pgpool. + +Now, we can connect using `subject=CN=postgres` to connect to the psql, + +```bash +$ psql "sslmode=require port=9999 host=localhost dbname=postgres user=postgres sslrootcert=ca.crt sslcert=client.crt sslkey=client.key" +psql (16.3 (Ubuntu 16.3-1.pgdg22.04+1), server 16.1) +SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, compression: off) +Type "help" for help. + +postgres=# +``` + +We are connected to the postgres database. Let's run some command to verify the sslMode and the user, + +```bash +postgres=# SELECT + usename, + ssl +FROM + pg_stat_ssl +JOIN + pg_stat_activity +ON + pg_stat_ssl.pid = pg_stat_activity.pid; + usename | ssl +----------+----- + postgres | t + postgres | t + postgres | t +(3 rows) + +postgres=# \q +⏎ +``` + +You can see here that, `postgres` user with `ssl` status as t or true. + +## Changing the SSLMode & ClusterAuthMode + +User can update `sslMode` & `clientAuthMode` if needed. Some changes may be invalid from pgpool end, like using `sslMode: disabled` with `clientAuthMode: cert`. + +The good thing is, **KubeDB operator will throw error for invalid SSL specs while creating/updating the Pgpool object.** i.e., + +```bash +$ kubectl patch -n demo pp/pp-tls -p '{"spec":{"sslMode": "disabled","clientAuthMode": "cert"}}' --type="merge" +The Pgpool "pp-tls" is invalid: spec.sslMode: Unsupported value: "disabled": supported values: "disable", "allow", "prefer", "require", "verify-ca", "verify-full" +``` + +> Note: There is no official support for Pgpool with the Postgres cluster having `clientAuthMode` as `cert`. Check [here](https://www.pgpool.net/docs/42/en/html/auth-methods.html#:~:text=Note%3A%20The%20certificate%20authentication%20works%20between%20only%20client%20and%20Pgpool%2DII.%20The%20certificate%20authentication%20does%20not%20work%20between%20Pgpool%2DII%20and%20PostgreSQL.%20For%20backend%20authentication%20you%20can%20use%20any%20other%20authentication%20method.). + +## Cleaning up + +To clean up the Kubernetes resources created by this tutorial, run: + +```bash +kubectl delete pgpool -n demo pp-tls +kubectl delete issuer -n demo pp-ca-issuer +kubectl delete ns demo +``` + +## Next Steps + +- Detail concepts of [Pgpool object](/docs/guides/pgpool/concepts/pgpool.md). +- Detail concepts of [PgpoolVersion object](/docs/guides/pgpool/concepts/catalog.md). +- Monitor your Pgpool database with KubeDB using [out-of-the-box Prometheus operator](/docs/guides/pgpool/monitoring/using-prometheus-operator.md). +- Monitor your Pgpool database with KubeDB using [out-of-the-box builtin-Prometheus](/docs/guides/pgpool/monitoring/using-builtin-prometheus.md). +- Want to hack on KubeDB? Check our [contribution guidelines](/docs/CONTRIBUTING.md). diff --git a/docs/guides/pgpool/tls/overview.md b/docs/guides/pgpool/tls/overview.md index 633b54bd4c..6dbb520405 100644 --- a/docs/guides/pgpool/tls/overview.md +++ b/docs/guides/pgpool/tls/overview.md @@ -41,7 +41,7 @@ When, `sslMode` is set to `require`, the users must specify the `tls.issuerRef` The following figure shows how `KubeDB` enterprise used to configure TLS/SSL in Pgpool. Open the image in a new tab to see the enlarged version.
-Deploy Pgpool with TLS/SSL +Deploy Pgpool with TLS/SSL
Fig: Deploy Pgpool with TLS/SSL
@@ -67,4 +67,4 @@ Deploying Pgpool with TLS/SSL configuration process consists of the following st 10. When it finds all the tls-secret, it creates the related `StatefulSets` so that Pgpool database can be configured with TLS/SSL. -In the next doc, we are going to show a step by step guide on how to configure a `Pgpool` database with TLS/SSL. \ No newline at end of file +In the next doc, we are going to show a step-by-step guide on how to configure a `Pgpool` database with TLS/SSL. \ No newline at end of file diff --git a/docs/guides/pgpool/tls/replicaset.md b/docs/guides/pgpool/tls/replicaset.md deleted file mode 100644 index 3ff6a02879..0000000000 --- a/docs/guides/pgpool/tls/replicaset.md +++ /dev/null @@ -1,266 +0,0 @@ ---- -title: MongoDB ReplicaSet TLS/SSL Encryption -menu: - docs_{{ .version }}: - identifier: mg-tls-replicaset - name: Replicaset - parent: mg-tls - weight: 30 -menu_name: docs_{{ .version }} -section_menu_id: guides ---- - -> New to KubeDB? Please start [here](/docs/README.md). - -# Run MongoDB with TLS/SSL (Transport Encryption) - -KubeDB supports providing TLS/SSL encryption (via, `sslMode` and `clusterAuthMode`) for MongoDB. This tutorial will show you how to use KubeDB to run a MongoDB database with TLS/SSL encryption. - -## Before You Begin - -- At first, you need to have a Kubernetes cluster, and the kubectl command-line tool must be configured to communicate with your cluster. If you do not already have a cluster, you can create one by using [kind](https://kind.sigs.k8s.io/docs/user/quick-start/). - -- Install [`cert-manger`](https://cert-manager.io/docs/installation/) v1.0.0 or later to your cluster to manage your SSL/TLS certificates. - -- Now, install KubeDB cli on your workstation and KubeDB operator in your cluster following the steps [here](/docs/setup/README.md). - -- To keep things isolated, this tutorial uses a separate namespace called `demo` throughout this tutorial. - - ```bash - $ kubectl create ns demo - namespace/demo created - ``` - -> Note: YAML files used in this tutorial are stored in [docs/examples/mongodb](https://github.com/kubedb/docs/tree/{{< param "info.version" >}}/docs/examples/mongodb) folder in GitHub repository [kubedb/docs](https://github.com/kubedb/docs). - -## Overview - -KubeDB uses following crd fields to enable SSL/TLS encryption in Mongodb. - -- `spec:` - - `sslMode` - - `tls:` - - `issuerRef` - - `certificate` - - `clusterAuthMode` - -Read about the fields in details in [mongodb concept](/docs/guides/mongodb/concepts/mongodb.md), - -`sslMode`, and `tls` is applicable for all types of MongoDB (i.e., `standalone`, `replicaset` and `sharding`), while `clusterAuthMode` provides [ClusterAuthMode](https://docs.mongodb.com/manual/reference/program/mongod/#cmdoption-mongod-clusterauthmode) for MongoDB clusters (i.e., `replicaset` and `sharding`). - -When, SSLMode is anything other than `disabled`, users must specify the `tls.issuerRef` field. KubeDB uses the `issuer` or `clusterIssuer` referenced in the `tls.issuerRef` field, and the certificate specs provided in `tls.certificate` to generate certificate secrets. These certificate secrets are then used to generate required certificates including `ca.crt`, `mongo.pem` and `client.pem`. - -The subject of `client.pem` certificate is added as `root` user in `$external` mongodb database. So, user can use this client certificate for `MONGODB-X509` `authenticationMechanism`. - -## Create Issuer/ ClusterIssuer - -We are going to create an example `Issuer` that will be used throughout the duration of this tutorial to enable SSL/TLS in MongoDB. Alternatively, you can follow this [cert-manager tutorial](https://cert-manager.io/docs/configuration/ca/) to create your own `Issuer`. - -- Start off by generating you ca certificates using openssl. - -```bash -openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout ./ca.key -out ./ca.crt -subj "/CN=mongo/O=kubedb" -``` - -- Now create a ca-secret using the certificate files you have just generated. - -```bash -kubectl create secret tls mongo-ca \ - --cert=ca.crt \ - --key=ca.key \ - --namespace=demo -``` - -Now, create an `Issuer` using the `ca-secret` you have just created. The `YAML` file looks like this: - -```yaml -apiVersion: cert-manager.io/v1 -kind: Issuer -metadata: - name: mongo-ca-issuer - namespace: demo -spec: - ca: - secretName: mongo-ca -``` - -Apply the `YAML` file: - -```bash -$ kubectl create -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/mongodb/tls/issuer.yaml -issuer.cert-manager.io/mongo-ca-issuer created -``` - -## TLS/SSL encryption in MongoDB Replicaset - -Below is the YAML for MongoDB Replicaset. Here, [`spec.sslMode`](/docs/guides/mongodb/concepts/mongodb.md#specsslMode) specifies `sslMode` for `replicaset` (which is `requireSSL`) and [`spec.clusterAuthMode`](/docs/guides/mongodb/concepts/mongodb.md#specclusterAuthMode) provides `clusterAuthMode` for mongodb replicaset nodes (which is `x509`). - -```yaml -apiVersion: kubedb.com/v1alpha2 -kind: MongoDB -metadata: - name: mgo-rs-tls - namespace: demo -spec: - version: "4.4.26" - sslMode: requireSSL - tls: - issuerRef: - apiGroup: "cert-manager.io" - kind: Issuer - name: mongo-ca-issuer - clusterAuthMode: x509 - replicas: 4 - replicaSet: - name: rs0 - storage: - storageClassName: "standard" - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 1Gi -``` - -### Deploy MongoDB Replicaset - -```bash -$ kubectl create -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/mongodb/tls/mg-replicaset-ssl.yaml -mongodb.kubedb.com/mgo-rs-tls created -``` - -Now, wait until `mgo-rs-tls created` has status `Ready`. i.e, - -```bash -$ watch kubectl get mg -n demo -Every 2.0s: kubectl get mongodb -n demo -NAME VERSION STATUS AGE -mgo-rs-tls 4.4.26 Ready 4m10s -``` - -### Verify TLS/SSL in MongoDB Replicaset - -Now, connect to this database through [mongo-shell](https://docs.mongodb.com/v4.0/mongo/) and verify if `SSLMode` and `ClusterAuthMode` has been set up as intended. - -```bash -$ kubectl describe secret -n demo mgo-rs-tls-client-cert -Name: mgo-rs-tls-client-cert -Namespace: demo -Labels: -Annotations: cert-manager.io/alt-names: - cert-manager.io/certificate-name: mgo-rs-tls-client-cert - cert-manager.io/common-name: root - cert-manager.io/ip-sans: - cert-manager.io/issuer-group: cert-manager.io - cert-manager.io/issuer-kind: Issuer - cert-manager.io/issuer-name: mongo-ca-issuer - cert-manager.io/uri-sans: - -Type: kubernetes.io/tls - -Data -==== -ca.crt: 1147 bytes -tls.crt: 1172 bytes -tls.key: 1679 bytes -``` - -Now, Let's exec into a mongodb container and find out the username to connect in a mongo shell, - -```bash -$ kubectl exec -it mgo-rs-tls-0 -n demo bash -root@mgo-rs-tls-0:/$ ls /var/run/mongodb/tls -ca.crt client.pem mongo.pem -root@mgo-rs-tls-0:/$ openssl x509 -in /var/run/mongodb/tls/client.pem -inform PEM -subject -nameopt RFC2253 -noout -subject=CN=root,O=kubedb -``` - -Now, we can connect using `CN=root,O=kubedb` as root to connect to the mongo shell, - -```bash -root@mgo-rs-tls-0:/$ mongo --tls --tlsCAFile /var/run/mongodb/tls/ca.crt --tlsCertificateKeyFile /var/run/mongodb/tls/client.pem admin --host localhost --authenticationMechanism MONGODB-X509 --authenticationDatabase='$external' -u "CN=root,O=kubedb" --quiet -Welcome to the MongoDB shell. -For interactive help, type "help". -For more comprehensive documentation, see - http://docs.mongodb.org/ -Questions? Try the support group - http://groups.google.com/group/mongodb-user -rs0:PRIMARY> -``` - -We are connected to the mongo shell. Let's run some command to verify the sslMode and the user, - -```bash -rs0:PRIMARY> db.adminCommand({ getParameter:1, sslMode:1 }) -{ - "sslMode" : "requireSSL", - "ok" : 1, - "$clusterTime" : { - "clusterTime" : Timestamp(1599490676, 1), - "signature" : { - "hash" : BinData(0,"/wQ4pf4HVi1T7SOyaB3pXO56j64="), - "keyId" : NumberLong("6869759546676477954") - } - }, - "operationTime" : Timestamp(1599490676, 1) -} - -rs0:PRIMARY> use $external -switched to db $external - -rs0:PRIMARY> show users -{ - "_id" : "$external.CN=root,O=kubedb", - "userId" : UUID("9cebbcf4-74bf-47dd-a485-1604125058da"), - "user" : "CN=root,O=kubedb", - "db" : "$external", - "roles" : [ - { - "role" : "root", - "db" : "admin" - } - ], - "mechanisms" : [ - "external" - ] -} -> exit -bye -``` - -You can see here that, `sslMode` is set to `requireSSL` and a user is created in `$external` with name `"CN=root,O=kubedb"`. - -## Changing the SSLMode & ClusterAuthMode - -User can update `sslMode` & `ClusterAuthMode` if needed. Some changes may be invalid from mongodb end, like using `sslMode: disabled` with `clusterAuthMode: x509`. - -The good thing is, **KubeDB operator will throw error for invalid SSL specs while creating/updating the MongoDB object.** i.e., - -```bash -$ kubectl patch -n demo mg/mgo-rs-tls -p '{"spec":{"sslMode": "disabled","clusterAuthMode": "x509"}}' --type="merge" -Error from server (Forbidden): admission webhook "mongodb.validators.kubedb.com" denied the request: can't have disabled set to mongodb.spec.sslMode when mongodb.spec.clusterAuthMode is set to x509 -``` - -To **update from Keyfile Authentication to x.509 Authentication**, change the `sslMode` and `clusterAuthMode` in recommended sequence as suggested in [official documentation](https://docs.mongodb.com/manual/tutorial/update-keyfile-to-x509/). Each time after changing the specs, follow the procedure that is described above to verify the changes of `sslMode` and `clusterAuthMode` inside the database. - -## Cleaning up - -To cleanup the Kubernetes resources created by this tutorial, run: - -```bash -kubectl delete mongodb -n demo mgo-rs-tls -kubectl delete issuer -n demo mongo-ca-issuer -kubectl delete ns demo -``` - -## Next Steps - -- Detail concepts of [MongoDB object](/docs/guides/mongodb/concepts/mongodb.md). -- [Backup and Restore](/docs/guides/mongodb/backup/overview/index.md) MongoDB databases using Stash. -- Initialize [MongoDB with Script](/docs/guides/mongodb/initialization/using-script.md). -- Monitor your MongoDB database with KubeDB using [out-of-the-box Prometheus operator](/docs/guides/mongodb/monitoring/using-prometheus-operator.md). -- Monitor your MongoDB database with KubeDB using [out-of-the-box builtin-Prometheus](/docs/guides/mongodb/monitoring/using-builtin-prometheus.md). -- Use [private Docker registry](/docs/guides/mongodb/private-registry/using-private-registry.md) to deploy MongoDB with KubeDB. -- Use [kubedb cli](/docs/guides/mongodb/cli/cli.md) to manage databases like kubectl for Kubernetes. -- Detail concepts of [MongoDB object](/docs/guides/mongodb/concepts/mongodb.md). -- Want to hack on KubeDB? Check our [contribution guidelines](/docs/CONTRIBUTING.md). diff --git a/docs/guides/pgpool/tls/sharding.md b/docs/guides/pgpool/tls/sharding.md deleted file mode 100644 index 63b19ece57..0000000000 --- a/docs/guides/pgpool/tls/sharding.md +++ /dev/null @@ -1,274 +0,0 @@ ---- -title: MongoDB Shard TLS/SSL Encryption -menu: - docs_{{ .version }}: - identifier: mg-tls-shard - name: Sharding - parent: mg-tls - weight: 40 -menu_name: docs_{{ .version }} -section_menu_id: guides ---- - -> New to KubeDB? Please start [here](/docs/README.md). - -# Run MongoDB with TLS/SSL (Transport Encryption) - -KubeDB supports providing TLS/SSL encryption (via, `sslMode` and `clusterAuthMode`) for MongoDB. This tutorial will show you how to use KubeDB to run a MongoDB database with TLS/SSL encryption. - -## Before You Begin - -- At first, you need to have a Kubernetes cluster, and the kubectl command-line tool must be configured to communicate with your cluster. If you do not already have a cluster, you can create one by using [kind](https://kind.sigs.k8s.io/docs/user/quick-start/). - -- Install [`cert-manger`](https://cert-manager.io/docs/installation/) v1.0.0 or later to your cluster to manage your SSL/TLS certificates. - -- Now, install KubeDB cli on your workstation and KubeDB operator in your cluster following the steps [here](/docs/setup/README.md). - -- To keep things isolated, this tutorial uses a separate namespace called `demo` throughout this tutorial. - - ```bash - $ kubectl create ns demo - namespace/demo created - ``` - -> Note: YAML files used in this tutorial are stored in [docs/examples/mongodb](https://github.com/kubedb/docs/tree/{{< param "info.version" >}}/docs/examples/mongodb) folder in GitHub repository [kubedb/docs](https://github.com/kubedb/docs). - -## Overview - -KubeDB uses following crd fields to enable SSL/TLS encryption in Mongodb. - -- `spec:` - - `sslMode` - - `tls:` - - `issuerRef` - - `certificate` - - `clusterAuthMode` - -Read about the fields in details in [mongodb concept](/docs/guides/mongodb/concepts/mongodb.md), - -`sslMode`, and `tls` is applicable for all types of MongoDB (i.e., `standalone`, `replicaset` and `sharding`), while `clusterAuthMode` provides [ClusterAuthMode](https://docs.mongodb.com/manual/reference/program/mongod/#cmdoption-mongod-clusterauthmode) for MongoDB clusters (i.e., `replicaset` and `sharding`). - -When, SSLMode is anything other than `disabled`, users must specify the `tls.issuerRef` field. KubeDB uses the `issuer` or `clusterIssuer` referenced in the `tls.issuerRef` field, and the certificate specs provided in `tls.certificate` to generate certificate secrets. These certificate secrets are then used to generate required certificates including `ca.crt`, `mongo.pem` and `client.pem`. - -The subject of `client.pem` certificate is added as `root` user in `$external` mongodb database. So, user can use this client certificate for `MONGODB-X509` `authenticationMechanism`. - -## Create Issuer/ ClusterIssuer - -We are going to create an example `Issuer` that will be used throughout the duration of this tutorial to enable SSL/TLS in MongoDB. Alternatively, you can follow this [cert-manager tutorial](https://cert-manager.io/docs/configuration/ca/) to create your own `Issuer`. - -- Start off by generating you ca certificates using openssl. - -```bash -openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout ./ca.key -out ./ca.crt -subj "/CN=mongo/O=kubedb" -``` - -- Now create a ca-secret using the certificate files you have just generated. - -```bash -kubectl create secret tls mongo-ca \ - --cert=ca.crt \ - --key=ca.key \ - --namespace=demo -``` - -Now, create an `Issuer` using the `ca-secret` you have just created. The `YAML` file looks like this: - -```yaml -apiVersion: cert-manager.io/v1 -kind: Issuer -metadata: - name: mongo-ca-issuer - namespace: demo -spec: - ca: - secretName: mongo-ca -``` - -Apply the `YAML` file: - -```bash -$ kubectl create -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/mongodb/tls/issuer.yaml -issuer.cert-manager.io/mongo-ca-issuer created -``` - -## TLS/SSL encryption in MongoDB Sharding - -Below is the YAML for MongoDB Sharding. Here, [`spec.sslMode`](/docs/guides/mongodb/concepts/mongodb.md#specsslMode) specifies `sslMode` for `sharding` and [`spec.clusterAuthMode`](/docs/guides/mongodb/concepts/mongodb.md#specclusterAuthMode) provides `clusterAuthMode` for sharding servers. - -```yaml -apiVersion: kubedb.com/v1alpha2 -kind: MongoDB -metadata: - name: mongo-sh-tls - namespace: demo -spec: - version: "4.4.26" - sslMode: requireSSL - tls: - issuerRef: - apiGroup: "cert-manager.io" - kind: Issuer - name: mongo-ca-issuer - clusterAuthMode: x509 - shardTopology: - configServer: - replicas: 2 - storage: - resources: - requests: - storage: 1Gi - storageClassName: standard - mongos: - replicas: 2 - shard: - replicas: 2 - shards: 2 - storage: - resources: - requests: - storage: 1Gi - storageClassName: standard - storageType: Durable - terminationPolicy: WipeOut -``` - -### Deploy MongoDB Sharding - -```bash -$ kubectl create -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/mongodb/tls/mg-shard-ssl.yaml -mongodb.kubedb.com/mongo-sh-tls created -``` - -Now, wait until `mongo-sh-tls created` has status `Ready`. ie, - -```bash -$ watch kubectl get mg -n demo -Every 2.0s: kubectl get mongodb -n demo -NAME VERSION STATUS AGE -mongo-sh-tls 4.4.26 Ready 4m24s -``` - -### Verify TLS/SSL in MongoDB Sharding - -Now, connect to `mongos` component of this database through [mongo-shell](https://docs.mongodb.com/v4.0/mongo/) and verify if `SSLMode` and `ClusterAuthMode` has been set up as intended. - -```bash -$ kubectl describe secret -n demo mongo-sh-tls-client-cert -Name: mongo-sh-tls-client-cert -Namespace: demo -Labels: -Annotations: cert-manager.io/alt-names: - cert-manager.io/certificate-name: mongo-sh-tls-client-cert - cert-manager.io/common-name: root - cert-manager.io/ip-sans: - cert-manager.io/issuer-group: cert-manager.io - cert-manager.io/issuer-kind: Issuer - cert-manager.io/issuer-name: mongo-ca-issuer - cert-manager.io/uri-sans: - -Type: kubernetes.io/tls - -Data -==== -ca.crt: 1147 bytes -tls.crt: 1172 bytes -tls.key: 1679 bytes -``` - -Now, Let's exec into a mongodb container and find out the username to connect in a mongo shell, - -```bash -$ kubectl exec -it mongo-sh-tls-mongos-0 -n demo bash -root@mongo-sh-tls-mongos-0:/$ ls /var/run/mongodb/tls -ca.crt client.pem mongo.pem -mongodb@mgo-sh-tls-mongos-0:/$ openssl x509 -in /var/run/mongodb/tls/client.pem -inform PEM -subject -nameopt RFC2253 -noout -subject=CN=root,O=kubedb -``` - -Now, we can connect using `CN=root,O=kubedb` as root to connect to the mongo shell, - -```bash -root@mongo-sh-tls-mongos-0:/# mongo --tls --tlsCAFile /var/run/mongodb/tls/ca.crt --tlsCertificateKeyFile /var/run/mongodb/tls/client.pem admin --host localhost --authenticationMechanism MONGODB-X509 --authenticationDatabase='$external' -u "CN=root,O=kubedb" --quiet -Welcome to the MongoDB shell. -For interactive help, type "help". -For more comprehensive documentation, see - http://docs.mongodb.org/ -Questions? Try the support group - http://groups.google.com/group/mongodb-user -mongos> -``` - -We are connected to the mongo shell. Let's run some command to verify the sslMode and the user, - -```bash -mongos> db.adminCommand({ getParameter:1, sslMode:1 }) -{ - "sslMode" : "requireSSL", - "ok" : 1, - "operationTime" : Timestamp(1599491398, 1), - "$clusterTime" : { - "clusterTime" : Timestamp(1599491398, 1), - "signature" : { - "hash" : BinData(0,"cn2Mhfy2blonon3jPz6Daen0nnc="), - "keyId" : NumberLong("6869760899591176209") - } - } -} -mongos> use $external -switched to db $external -mongos> show users -{ - "_id" : "$external.CN=root,O=kubedb", - "userId" : UUID("4865dda6-5e31-4b79-a085-7d6fea51c9be"), - "user" : "CN=root,O=kubedb", - "db" : "$external", - "roles" : [ - { - "role" : "root", - "db" : "admin" - } - ], - "mechanisms" : [ - "external" - ] -} -> exit -bye -``` - -You can see here that, `sslMode` is set to `requireSSL` and `clusterAuthMode` is set to `x509` and also an user is created in `$external` with name `"CN=root,O=kubedb"`. - -## Changing the SSLMode & ClusterAuthMode - -User can update `sslMode` & `ClusterAuthMode` if needed. Some changes may be invalid from mongodb end, like using `sslMode: disabled` with `clusterAuthMode: x509`. - -The good thing is, **KubeDB operator will throw error for invalid SSL specs while creating/updating the MongoDB object.** i.e., - -```bash -$ kubectl patch -n demo mg/mgo-sh-tls -p '{"spec":{"sslMode": "disabled","clusterAuthMode": "x509"}}' --type="merge" -Error from server (Forbidden): admission webhook "mongodb.validators.kubedb.com" denied the request: can't have disabled set to mongodb.spec.sslMode when mongodb.spec.clusterAuthMode is set to x509 -``` - -To **update from Keyfile Authentication to x.509 Authentication**, change the `sslMode` and `clusterAuthMode` in recommended sequence as suggested in [official documentation](https://docs.mongodb.com/manual/tutorial/update-keyfile-to-x509/). Each time after changing the specs, follow the procedure that is described above to verify the changes of `sslMode` and `clusterAuthMode` inside the database. - -## Cleaning up - -To cleanup the Kubernetes resources created by this tutorial, run: - -```bash -kubectl delete mongodb -n demo mongo-sh-tls -kubectl delete issuer -n demo mongo-ca-issuer -kubectl delete ns demo -``` - -## Next Steps - -- Detail concepts of [MongoDB object](/docs/guides/mongodb/concepts/mongodb.md). -- [Backup and Restore](/docs/guides/mongodb/backup/overview/index.md) MongoDB databases using Stash. -- Initialize [MongoDB with Script](/docs/guides/mongodb/initialization/using-script.md). -- Monitor your MongoDB database with KubeDB using [out-of-the-box Prometheus operator](/docs/guides/mongodb/monitoring/using-prometheus-operator.md). -- Monitor your MongoDB database with KubeDB using [out-of-the-box builtin-Prometheus](/docs/guides/mongodb/monitoring/using-builtin-prometheus.md). -- Use [private Docker registry](/docs/guides/mongodb/private-registry/using-private-registry.md) to deploy MongoDB with KubeDB. -- Use [kubedb cli](/docs/guides/mongodb/cli/cli.md) to manage databases like kubectl for Kubernetes. -- Detail concepts of [MongoDB object](/docs/guides/mongodb/concepts/mongodb.md). -- Want to hack on KubeDB? Check our [contribution guidelines](/docs/CONTRIBUTING.md). diff --git a/docs/guides/pgpool/tls/standalone.md b/docs/guides/pgpool/tls/standalone.md deleted file mode 100644 index d5dd367ba8..0000000000 --- a/docs/guides/pgpool/tls/standalone.md +++ /dev/null @@ -1,245 +0,0 @@ ---- -title: MongoDB Standalone TLS/SSL Encryption -menu: - docs_{{ .version }}: - identifier: mg-tls-standalone - name: Standalone - parent: mg-tls - weight: 20 -menu_name: docs_{{ .version }} -section_menu_id: guides ---- - -> New to KubeDB? Please start [here](/docs/README.md). - -# Run MongoDB with TLS/SSL (Transport Encryption) - -KubeDB supports providing TLS/SSL encryption (via, `sslMode` and `clusterAuthMode`) for MongoDB. This tutorial will show you how to use KubeDB to run a MongoDB database with TLS/SSL encryption. - -## Before You Begin - -- At first, you need to have a Kubernetes cluster, and the kubectl command-line tool must be configured to communicate with your cluster. If you do not already have a cluster, you can create one by using [kind](https://kind.sigs.k8s.io/docs/user/quick-start/). - -- Install [`cert-manger`](https://cert-manager.io/docs/installation/) v1.0.0 or later to your cluster to manage your SSL/TLS certificates. - -- Now, install KubeDB cli on your workstation and KubeDB operator in your cluster following the steps [here](/docs/setup/README.md). - -- To keep things isolated, this tutorial uses a separate namespace called `demo` throughout this tutorial. - - ```bash - $ kubectl create ns demo - namespace/demo created - ``` - -> Note: YAML files used in this tutorial are stored in [docs/examples/mongodb](https://github.com/kubedb/docs/tree/{{< param "info.version" >}}/docs/examples/mongodb) folder in GitHub repository [kubedb/docs](https://github.com/kubedb/docs). - -## Overview - -KubeDB uses following crd fields to enable SSL/TLS encryption in Mongodb. - -- `spec:` - - `sslMode` - - `tls:` - - `issuerRef` - - `certificate` - - `clusterAuthMode` - -Read about the fields in details in [mongodb concept](/docs/guides/mongodb/concepts/mongodb.md), - -`sslMode`, and `tls` is applicable for all types of MongoDB (i.e., `standalone`, `replicaset` and `sharding`), while `clusterAuthMode` provides [ClusterAuthMode](https://docs.mongodb.com/manual/reference/program/mongod/#cmdoption-mongod-clusterauthmode) for MongoDB clusters (i.e., `replicaset` and `sharding`). - -When, SSLMode is anything other than `disabled`, users must specify the `tls.issuerRef` field. KubeDB uses the `issuer` or `clusterIssuer` referenced in the `tls.issuerRef` field, and the certificate specs provided in `tls.certificate` to generate certificate secrets. These certificate secrets are then used to generate required certificates including `ca.crt`, `mongo.pem` and `client.pem`. - -The subject of `client.pem` certificate is added as `root` user in `$external` mongodb database. So, user can use this client certificate for `MONGODB-X509` `authenticationMechanism`. - -## Create Issuer/ ClusterIssuer - -We are going to create an example `Issuer` that will be used throughout the duration of this tutorial to enable SSL/TLS in MongoDB. Alternatively, you can follow this [cert-manager tutorial](https://cert-manager.io/docs/configuration/ca/) to create your own `Issuer`. - -- Start off by generating you ca certificates using openssl. - -```bash -openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout ./ca.key -out ./ca.crt -subj "/CN=mongo/O=kubedb" -``` - -- Now create a ca-secret using the certificate files you have just generated. - -```bash -kubectl create secret tls mongo-ca \ - --cert=ca.crt \ - --key=ca.key \ - --namespace=demo -``` - -Now, create an `Issuer` using the `ca-secret` you have just created. The `YAML` file looks like this: - -```yaml -apiVersion: cert-manager.io/v1 -kind: Issuer -metadata: - name: mongo-ca-issuer - namespace: demo -spec: - ca: - secretName: mongo-ca -``` - -Apply the `YAML` file: - -```bash -$ kubectl create -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/mongodb/tls/issuer.yaml -issuer.cert-manager.io/mongo-ca-issuer created -``` - -## TLS/SSL encryption in MongoDB Standalone - -Below is the YAML for MongoDB Standalone. Here, [`spec.sslMode`](/docs/guides/mongodb/concepts/mongodb.md#specsslMode) specifies `sslMode` for `standalone` (which is `requireSSL`). - -```yaml -apiVersion: kubedb.com/v1alpha2 -kind: MongoDB -metadata: - name: mgo-tls - namespace: demo -spec: - version: "4.4.26" - sslMode: requireSSL - tls: - issuerRef: - apiGroup: "cert-manager.io" - kind: Issuer - name: mongo-ca-issuer - storage: - storageClassName: "standard" - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 1Gi -``` - -### Deploy MongoDB Standalone - -```bash -$ kubectl create -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/mongodb/tls/mg-standalone-ssl.yaml -mongodb.kubedb.com/mgo-tls created -``` - -Now, wait until `mgo-tls created` has status `Ready`. i.e, - -```bash -$ watch kubectl get mg -n demo -Every 2.0s: kubectl get mongodb -n demo -NAME VERSION STATUS AGE -mgo-tls 4.4.26 Ready 14s -``` - -### Verify TLS/SSL in MongoDB Standalone - -Now, connect to this database through [mongo-shell](https://docs.mongodb.com/v4.0/mongo/) and verify if `SSLMode` has been set up as intended (i.e, `requireSSL`). - -```bash -$ kubectl describe secret -n demo mgo-tls-client-cert -Name: mgo-tls-client-cert -Namespace: demo -Labels: -Annotations: cert-manager.io/alt-names: - cert-manager.io/certificate-name: mgo-tls-client-cert - cert-manager.io/common-name: root - cert-manager.io/ip-sans: - cert-manager.io/issuer-group: cert-manager.io - cert-manager.io/issuer-kind: Issuer - cert-manager.io/issuer-name: mongo-ca-issuer - cert-manager.io/uri-sans: - -Type: kubernetes.io/tls - -Data -==== -tls.crt: 1172 bytes -tls.key: 1679 bytes -ca.crt: 1147 bytes -``` - -Now, Let's exec into a mongodb container and find out the username to connect in a mongo shell, - -```bash -$ kubectl exec -it mgo-tls-0 -n demo bash -mongodb@mgo-tls-0:/$ ls /var/run/mongodb/tls -ca.crt client.pem mongo.pem -mongodb@mgo-tls-0:/$ openssl x509 -in /var/run/mongodb/tls/client.pem -inform PEM -subject -nameopt RFC2253 -noout -subject=CN=root,O=kubedb -``` - -Now, we can connect using `CN=root,O=kubedb` as root to connect to the mongo shell, - -```bash -mongodb@mgo-tls-0:/$ mongo --tls --tlsCAFile /var/run/mongodb/tls/ca.crt --tlsCertificateKeyFile /var/run/mongodb/tls/client.pem admin --host localhost --authenticationMechanism MONGODB-X509 --authenticationDatabase='$external' -u "CN=root,O=kubedb" --quiet -> -``` - -We are connected to the mongo shell. Let's run some command to verify the sslMode and the user, - -```bash -> db.adminCommand({ getParameter:1, sslMode:1 }) -{ "sslMode" : "requireSSL", "ok" : 1 } - -> use $external -switched to db $external - -> show users -{ - "_id" : "$external.CN=root,O=kubedb", - "userId" : UUID("d2ddf121-9398-400b-b477-0e8bcdd47746"), - "user" : "CN=root,O=kubedb", - "db" : "$external", - "roles" : [ - { - "role" : "root", - "db" : "admin" - } - ], - "mechanisms" : [ - "external" - ] -} -> exit -bye -``` - -You can see here that, `sslMode` is set to `requireSSL` and a user is created in `$external` with name `"CN=root,O=kubedb"`. - -## Changing the SSLMode & ClusterAuthMode - -User can update `sslMode` & `ClusterAuthMode` if needed. Some changes may be invalid from mongodb end, like using `sslMode: disabled` with `clusterAuthMode: x509`. - -The good thing is, **KubeDB operator will throw error for invalid SSL specs while creating/updating the MongoDB object.** i.e., - -```bash -$ kubectl patch -n demo mg/mgo-tls -p '{"spec":{"sslMode": "disabled","clusterAuthMode": "x509"}}' --type="merge" -Error from server (Forbidden): admission webhook "mongodb.validators.kubedb.com" denied the request: can't have disabled set to mongodb.spec.sslMode when mongodb.spec.clusterAuthMode is set to x509 -``` - -To **update from Keyfile Authentication to x.509 Authentication**, change the `sslMode` and `clusterAuthMode` in recommended sequence as suggested in [official documentation](https://docs.mongodb.com/manual/tutorial/update-keyfile-to-x509/). Each time after changing the specs, follow the procedure that is described above to verify the changes of `sslMode` and `clusterAuthMode` inside the database. - -## Cleaning up - -To cleanup the Kubernetes resources created by this tutorial, run: - -```bash -kubectl delete mongodb -n demo mgo-tls -kubectl delete issuer -n demo mongo-ca-issuer -kubectl delete ns demo -``` - -## Next Steps - -- Detail concepts of [MongoDB object](/docs/guides/mongodb/concepts/mongodb.md). -- [Backup and Restore](/docs/guides/mongodb/backup/overview/index.md) MongoDB databases using Stash. -- Initialize [MongoDB with Script](/docs/guides/mongodb/initialization/using-script.md). -- Monitor your MongoDB database with KubeDB using [out-of-the-box Prometheus operator](/docs/guides/mongodb/monitoring/using-prometheus-operator.md). -- Monitor your MongoDB database with KubeDB using [out-of-the-box builtin-Prometheus](/docs/guides/mongodb/monitoring/using-builtin-prometheus.md). -- Use [private Docker registry](/docs/guides/mongodb/private-registry/using-private-registry.md) to deploy MongoDB with KubeDB. -- Use [kubedb cli](/docs/guides/mongodb/cli/cli.md) to manage databases like kubectl for Kubernetes. -- Detail concepts of [MongoDB object](/docs/guides/mongodb/concepts/mongodb.md). -- Want to hack on KubeDB? Check our [contribution guidelines](/docs/CONTRIBUTING.md). From a78955f5be18479939ca3b00dc6cb3e98bf3b05f Mon Sep 17 00:00:00 2001 From: MobarakHsn Date: Wed, 17 Jul 2024 18:22:55 +0600 Subject: [PATCH 06/16] Pgpool autoscaler,ops-req Signed-off-by: MobarakHsn --- .../autoscaling/compute/pgpool-autoscale.yaml | 23 + .../compute/pgpool-autoscaler.yaml | 21 + .../pgpool/scaling/pp-horizontal.yaml | 15 + .../pgpool/scaling/pp-vertical-ops.yaml | 20 + docs/examples/pgpool/scaling/pp-vertical.yaml | 12 + .../pgpool/scaling/ppops-hscale-down-ops.yaml | 11 + .../pgpool/scaling/ppops-hscale-up-ops.yaml | 11 + .../pgpool/update-version/pp-update.yaml | 12 + .../pgpool/update-version/ppops-update.yaml | 11 + docs/guides/pgpool/autoscaler/_index.md | 10 + .../pgpool/autoscaler/compute/_index.md | 10 + .../autoscaler/compute/compute-autoscale.md | 438 ++++++++++++++++++ .../pgpool/autoscaler/compute/overview.md | 55 +++ .../monitoring/using-builtin-prometheus.md | 3 + .../monitoring/using-prometheus-operator.md | 3 + docs/guides/pgpool/scaling/_index.md | 10 + .../scaling/horizontal-scaling/_index.md | 10 + .../horizontal-scaling/horizontal-ops.md | 438 ++++++++++++++++++ .../scaling/horizontal-scaling/overview.md | 54 +++ .../pgpool/scaling/vertical-scaling/_index.md | 10 + .../scaling/vertical-scaling/overview.md | 54 +++ .../scaling/vertical-scaling/vertical-ops.md | 282 +++++++++++ docs/guides/pgpool/tls/configure_ssl.md | 5 +- docs/guides/pgpool/update-version/_index.md | 10 + docs/guides/pgpool/update-version/overview.md | 54 +++ .../pgpool/update-version/update_version.md | 246 ++++++++++ .../pgpool/compute-process.png | Bin 0 -> 77242 bytes .../day-2-operation/pgpool/pg-updating.png | Bin 0 -> 100124 bytes .../pgpool/pp-horizontal-scaling.png | Bin 0 -> 105966 bytes .../pgpool/pp-vertical-scaling.png | Bin 0 -> 106139 bytes 30 files changed, 1827 insertions(+), 1 deletion(-) create mode 100644 docs/examples/pgpool/autoscaling/compute/pgpool-autoscale.yaml create mode 100644 docs/examples/pgpool/autoscaling/compute/pgpool-autoscaler.yaml create mode 100644 docs/examples/pgpool/scaling/pp-horizontal.yaml create mode 100644 docs/examples/pgpool/scaling/pp-vertical-ops.yaml create mode 100644 docs/examples/pgpool/scaling/pp-vertical.yaml create mode 100644 docs/examples/pgpool/scaling/ppops-hscale-down-ops.yaml create mode 100644 docs/examples/pgpool/scaling/ppops-hscale-up-ops.yaml create mode 100644 docs/examples/pgpool/update-version/pp-update.yaml create mode 100644 docs/examples/pgpool/update-version/ppops-update.yaml create mode 100644 docs/guides/pgpool/autoscaler/_index.md create mode 100644 docs/guides/pgpool/autoscaler/compute/_index.md create mode 100644 docs/guides/pgpool/autoscaler/compute/compute-autoscale.md create mode 100644 docs/guides/pgpool/autoscaler/compute/overview.md create mode 100644 docs/guides/pgpool/scaling/_index.md create mode 100644 docs/guides/pgpool/scaling/horizontal-scaling/_index.md create mode 100644 docs/guides/pgpool/scaling/horizontal-scaling/horizontal-ops.md create mode 100644 docs/guides/pgpool/scaling/horizontal-scaling/overview.md create mode 100644 docs/guides/pgpool/scaling/vertical-scaling/_index.md create mode 100644 docs/guides/pgpool/scaling/vertical-scaling/overview.md create mode 100644 docs/guides/pgpool/scaling/vertical-scaling/vertical-ops.md create mode 100644 docs/guides/pgpool/update-version/_index.md create mode 100644 docs/guides/pgpool/update-version/overview.md create mode 100644 docs/guides/pgpool/update-version/update_version.md create mode 100644 docs/images/day-2-operation/pgpool/compute-process.png create mode 100644 docs/images/day-2-operation/pgpool/pg-updating.png create mode 100644 docs/images/day-2-operation/pgpool/pp-horizontal-scaling.png create mode 100644 docs/images/day-2-operation/pgpool/pp-vertical-scaling.png diff --git a/docs/examples/pgpool/autoscaling/compute/pgpool-autoscale.yaml b/docs/examples/pgpool/autoscaling/compute/pgpool-autoscale.yaml new file mode 100644 index 0000000000..0cce69d6ee --- /dev/null +++ b/docs/examples/pgpool/autoscaling/compute/pgpool-autoscale.yaml @@ -0,0 +1,23 @@ +apiVersion: kubedb.com/v1alpha2 +kind: Pgpool +metadata: + name: pgpool-autoscale + namespace: demo +spec: + version: "4.5.0" + replicas: 1 + postgresRef: + name: ha-postgres + namespace: demo + podTemplate: + spec: + containers: + - name: pgpool + resources: + requests: + cpu: "200m" + memory: "300Mi" + limits: + cpu: "200m" + memory: "300Mi" + deletionPolicy: WipeOut \ No newline at end of file diff --git a/docs/examples/pgpool/autoscaling/compute/pgpool-autoscaler.yaml b/docs/examples/pgpool/autoscaling/compute/pgpool-autoscaler.yaml new file mode 100644 index 0000000000..8294d52e37 --- /dev/null +++ b/docs/examples/pgpool/autoscaling/compute/pgpool-autoscaler.yaml @@ -0,0 +1,21 @@ +apiVersion: autoscaling.kubedb.com/v1alpha1 +kind: PgpoolAutoscaler +metadata: + name: pgpool-autoscale-ops + namespace: demo +spec: + databaseRef: + name: pgpool-autoscale + compute: + pgpool: + trigger: "On" + podLifeTimeThreshold: 5m + resourceDiffPercentage: 20 + minAllowed: + cpu: 400m + memory: 400Mi + maxAllowed: + cpu: 1 + memory: 1Gi + controlledResources: ["cpu", "memory"] + containerControlledValues: "RequestsAndLimits" \ No newline at end of file diff --git a/docs/examples/pgpool/scaling/pp-horizontal.yaml b/docs/examples/pgpool/scaling/pp-horizontal.yaml new file mode 100644 index 0000000000..8b401b85fc --- /dev/null +++ b/docs/examples/pgpool/scaling/pp-horizontal.yaml @@ -0,0 +1,15 @@ +apiVersion: kubedb.com/v1alpha2 +kind: Pgpool +metadata: + name: pp-horizontal + namespace: demo +spec: + version: "4.5.0" + replicas: 1 + postgresRef: + name: ha-postgres + namespace: demo + initConfig: + pgpoolConfig: + max_pool : 60 + deletionPolicy: WipeOut \ No newline at end of file diff --git a/docs/examples/pgpool/scaling/pp-vertical-ops.yaml b/docs/examples/pgpool/scaling/pp-vertical-ops.yaml new file mode 100644 index 0000000000..37885dc378 --- /dev/null +++ b/docs/examples/pgpool/scaling/pp-vertical-ops.yaml @@ -0,0 +1,20 @@ +apiVersion: ops.kubedb.com/v1alpha1 +kind: PgpoolOpsRequest +metadata: + name: pgpool-scale-vertical + namespace: demo +spec: + type: VerticalScaling + databaseRef: + name: pp-vertical + verticalScaling: + node: + resources: + requests: + memory: "2Gi" + cpu: "1" + limits: + memory: "2Gi" + cpu: "1" + timeout: 5m + apply: IfReady \ No newline at end of file diff --git a/docs/examples/pgpool/scaling/pp-vertical.yaml b/docs/examples/pgpool/scaling/pp-vertical.yaml new file mode 100644 index 0000000000..912c096cb4 --- /dev/null +++ b/docs/examples/pgpool/scaling/pp-vertical.yaml @@ -0,0 +1,12 @@ +apiVersion: kubedb.com/v1alpha2 +kind: Pgpool +metadata: + name: pp-vertical + namespace: demo +spec: + version: "4.5.0" + replicas: 1 + postgresRef: + name: ha-postgres + namespace: demo + deletionPolicy: WipeOut \ No newline at end of file diff --git a/docs/examples/pgpool/scaling/ppops-hscale-down-ops.yaml b/docs/examples/pgpool/scaling/ppops-hscale-down-ops.yaml new file mode 100644 index 0000000000..8288c1b2f7 --- /dev/null +++ b/docs/examples/pgpool/scaling/ppops-hscale-down-ops.yaml @@ -0,0 +1,11 @@ +apiVersion: ops.kubedb.com/v1alpha1 +kind: PgpoolOpsRequest +metadata: + name: pgpool-horizontal-scale-down + namespace: demo +spec: + type: HorizontalScaling + databaseRef: + name: pp-horizontal + horizontalScaling: + node: 2 \ No newline at end of file diff --git a/docs/examples/pgpool/scaling/ppops-hscale-up-ops.yaml b/docs/examples/pgpool/scaling/ppops-hscale-up-ops.yaml new file mode 100644 index 0000000000..67f8c5ef6d --- /dev/null +++ b/docs/examples/pgpool/scaling/ppops-hscale-up-ops.yaml @@ -0,0 +1,11 @@ +apiVersion: ops.kubedb.com/v1alpha1 +kind: PgpoolOpsRequest +metadata: + name: pgpool-horizontal-scale-up + namespace: demo +spec: + type: HorizontalScaling + databaseRef: + name: pp-horizontal + horizontalScaling: + node: 3 \ No newline at end of file diff --git a/docs/examples/pgpool/update-version/pp-update.yaml b/docs/examples/pgpool/update-version/pp-update.yaml new file mode 100644 index 0000000000..97f3ac6362 --- /dev/null +++ b/docs/examples/pgpool/update-version/pp-update.yaml @@ -0,0 +1,12 @@ +apiVersion: kubedb.com/v1alpha2 +kind: Pgpool +metadata: + name: pp-update + namespace: demo +spec: + version: "4.4.5" + replicas: 1 + postgresRef: + name: ha-postgres + namespace: demo + deletionPolicy: WipeOut \ No newline at end of file diff --git a/docs/examples/pgpool/update-version/ppops-update.yaml b/docs/examples/pgpool/update-version/ppops-update.yaml new file mode 100644 index 0000000000..2a8c9f81d0 --- /dev/null +++ b/docs/examples/pgpool/update-version/ppops-update.yaml @@ -0,0 +1,11 @@ +apiVersion: ops.kubedb.com/v1alpha1 +kind: PgpoolOpsRequest +metadata: + name: pgpool-version-update + namespace: demo +spec: + type: UpdateVersion + databaseRef: + name: pp-update + updateVersion: + targetVersion: 4.5.0 \ No newline at end of file diff --git a/docs/guides/pgpool/autoscaler/_index.md b/docs/guides/pgpool/autoscaler/_index.md new file mode 100644 index 0000000000..22da6df266 --- /dev/null +++ b/docs/guides/pgpool/autoscaler/_index.md @@ -0,0 +1,10 @@ +--- +title: Autoscaling +menu: + docs_{{ .version }}: + identifier: pp-auto-scaling + name: Autoscaling + parent: pp-pgpool-guides + weight: 46 +menu_name: docs_{{ .version }} +--- diff --git a/docs/guides/pgpool/autoscaler/compute/_index.md b/docs/guides/pgpool/autoscaler/compute/_index.md new file mode 100644 index 0000000000..47b2598ffc --- /dev/null +++ b/docs/guides/pgpool/autoscaler/compute/_index.md @@ -0,0 +1,10 @@ +--- +title: Compute Autoscaling +menu: + docs_{{ .version }}: + identifier: pp-compute-auto-scaling + name: Compute Autoscaling + parent: pp-auto-scaling + weight: 46 +menu_name: docs_{{ .version }} +--- diff --git a/docs/guides/pgpool/autoscaler/compute/compute-autoscale.md b/docs/guides/pgpool/autoscaler/compute/compute-autoscale.md new file mode 100644 index 0000000000..1189db3295 --- /dev/null +++ b/docs/guides/pgpool/autoscaler/compute/compute-autoscale.md @@ -0,0 +1,438 @@ +--- +title: Pgpool Autoscaling +menu: + docs_{{ .version }}: + identifier: pp-auto-scaling-pgpool + name: pgpoolCompute + parent: pp-compute-auto-scaling + weight: 15 +menu_name: docs_{{ .version }} +section_menu_id: guides +--- + +> New to KubeDB? Please start [here](/docs/README.md). + +# Autoscaling the Compute Resource of a Pgpool + +This guide will show you how to use `KubeDB` to autoscale compute resources i.e. cpu and memory of a Pgpool. + +## Before You Begin + +- At first, you need to have a Kubernetes cluster, and the `kubectl` command-line tool must be configured to communicate with your cluster. + +- Install `KubeDB` Provisioner, Ops-manager and Autoscaler operator in your cluster following the steps [here](/docs/setup/README.md). + +- Install `Metrics Server` from [here](https://github.com/kubernetes-sigs/metrics-server#installation) + +- You should be familiar with the following `KubeDB` concepts: + - [Pgpool](/docs/guides/pgpool/concepts/pgpool.md) + - [PgpoolAutoscaler](/docs/guides/pgpool/concepts/autoscaler.md) + - [PgpoolOpsRequest](/docs/guides/pgpool/concepts/opsrequest.md) + - [Compute Resource Autoscaling Overview](/docs/guides/pgpool/autoscaler/compute/overview.md) + +To keep everything isolated, we are going to use a separate namespace called `demo` throughout this tutorial. + +```bash +$ kubectl create ns demo +namespace/demo created +``` + +> **Note:** YAML files used in this tutorial are stored in [docs/examples/pgpool](/docs/examples/pgpool) directory of [kubedb/docs](https://github.com/kubedb/docs) repository. + +## Autoscaling of Pgpool + +### Prepare Postgres +Prepare a KubeDB Postgres cluster using this [tutorial](/docs/guides/postgres/clustering/streaming_replication.md), or you can use any externally managed postgres but in that case you need to create an [appbinding](/docs/guides/pgpool/concepts/appbinding.md) yourself. In this tutorial we will use 3 node Postgres cluster named `ha-postgres`. + +Here, we are going to deploy a `Pgpool` standalone using a supported version by `KubeDB` operator. Then we are going to apply `PgpoolAutoscaler` to set up autoscaling. + +#### Deploy Pgpool + +In this section, we are going to deploy a Pgpool with version `4.5.0` Then, in the next section we will set up autoscaling for this pgpool using `PgpoolAutoscaler` CRD. Below is the YAML of the `Pgpool` CR that we are going to create, + +```yaml +apiVersion: kubedb.com/v1alpha2 +kind: Pgpool +metadata: + name: pgpool-autoscale + namespace: demo +spec: + version: "4.5.0" + replicas: 1 + postgresRef: + name: ha-postgres + namespace: demo + podTemplate: + spec: + containers: + - name: pgpool + resources: + requests: + cpu: "200m" + memory: "300Mi" + limits: + cpu: "200m" + memory: "300Mi" + deletionPolicy: WipeOut +``` + +Let's create the `Pgpool` CRO we have shown above, + +```bash +$ kubectl create -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/pgpool/autoscaling/compute/pgpool-autoscale.yaml +pgpool.kubedb.com/pgpool-autoscale created +``` + +Now, wait until `pgpool-autoscale` has status `Ready`. i.e, + +```bash +$ kubectl get pp -n demo +NAME TYPE VERSION STATUS AGE +pgpool-autoscale kubedb.com/v1alpha2 4.5.0 Ready 22s +``` + +Let's check the Pod containers resources, + +```bash +$ kubectl get pod -n demo pgpool-autoscale-0 -o json | jq '.spec.containers[].resources' +{ + "limits": { + "cpu": "200m", + "memory": "300Mi" + }, + "requests": { + "cpu": "200m", + "memory": "300Mi" + } +} +``` + +Let's check the Pgpool resources, +```bash +$ kubectl get pgpool -n demo pgpool-autoscale -o json | jq '.spec.podTemplate.spec.containers[0].resources' +{ + "limits": { + "cpu": "200m", + "memory": "300Mi" + }, + "requests": { + "cpu": "200m", + "memory": "300Mi" + } +} +``` + +You can see from the above outputs that the resources are same as the one we have assigned while deploying the pgpool. + +We are now ready to apply the `PgpoolAutoscaler` CRO to set up autoscaling for this database. + +### Compute Resource Autoscaling + +Here, we are going to set up compute (cpu and memory) autoscaling using a PgpoolAutoscaler Object. + +#### Create PgpoolAutoscaler Object + +In order to set up compute resource autoscaling for this pgpool, we have to create a `PgpoolAutoscaler` CRO with our desired configuration. Below is the YAML of the `PgpoolAutoscaler` object that we are going to create, + +```yaml +apiVersion: autoscaling.kubedb.com/v1alpha1 +kind: PgpoolAutoscaler +metadata: + name: pgpool-autoscale-ops + namespace: demo +spec: + databaseRef: + name: pgpool-autoscale + compute: + pgpool: + trigger: "On" + podLifeTimeThreshold: 5m + resourceDiffPercentage: 20 + minAllowed: + cpu: 400m + memory: 400Mi + maxAllowed: + cpu: 1 + memory: 1Gi + controlledResources: ["cpu", "memory"] + containerControlledValues: "RequestsAndLimits" +``` + +Here, + +- `spec.databaseRef.name` specifies that we are performing compute resource autoscaling on `pgpool-autoscale`. +- `spec.compute.pgpool.trigger` specifies that compute resource autoscaling is enabled for this pgpool. +- `spec.compute.pgpool.podLifeTimeThreshold` specifies the minimum lifetime for at least one of the pod to initiate a vertical scaling. +- `spec.compute.replicaset.resourceDiffPercentage` specifies the minimum resource difference in percentage. The default is 10%. + If the difference between current & recommended resource is less than ResourceDiffPercentage, Autoscaler Operator will ignore the updating. +- `spec.compute.pgpool.minAllowed` specifies the minimum allowed resources for this pgpool. +- `spec.compute.pgpool.maxAllowed` specifies the maximum allowed resources for this pgpool. +- `spec.compute.pgpool.controlledResources` specifies the resources that are controlled by the autoscaler. +- `spec.compute.pgpool.containerControlledValues` specifies which resource values should be controlled. The default is "RequestsAndLimits". +- `spec.opsRequestOptions` contains the options to pass to the created OpsRequest. It has 2 fields. Know more about them here : [timeout](/docs/guides/pgpool/concepts/opsrequest.md#spectimeout), [apply](/docs/guides/pgpool/concepts/opsrequest.md#specapply). + +Let's create the `PgpoolAutoscaler` CR we have shown above, + +```bash +$ kubectl apply -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/pgpool/autoscaling/compute/pgpool-autoscaler.yaml +pgpoolautoscaler.autoscaling.kubedb.com/pgpool-autoscaler-ops created +``` + +#### Verify Autoscaling is set up successfully + +Let's check that the `pgpoolautoscaler` resource is created successfully, + +```bash +$ kubectl get pgpoolautoscaler -n demo +NAME AGE +pgpool-autoscale-ops 6m55s + +$ kubectl describe pgpoolautoscaler pgpool-autoscale-ops -n demo +Name: pgpool-autoscale-ops +Namespace: demo +Labels: +Annotations: +API Version: autoscaling.kubedb.com/v1alpha1 +Kind: PgpoolAutoscaler +Metadata: + Creation Timestamp: 2024-07-17T12:09:17Z + Generation: 1 + Resource Version: 81569 + UID: 3841c30b-3b19-4740-82f5-bf8e257ddc18 +Spec: + Compute: + Pgpool: + Container Controlled Values: RequestsAndLimits + Controlled Resources: + cpu + memory + Max Allowed: + Cpu: 1 + Memory: 1Gi + Min Allowed: + Cpu: 400m + Memory: 400Mi + Pod Life Time Threshold: 5m0s + Resource Diff Percentage: 20 + Trigger: On + Database Ref: + Name: pgpool-autoscale + Ops Request Options: + Apply: IfReady +Status: + Checkpoints: + Cpu Histogram: + Bucket Weights: + Index: 0 + Weight: 10000 + Reference Timestamp: 2024-07-17T12:10:00Z + Total Weight: 0.8733542386168607 + First Sample Start: 2024-07-17T12:09:14Z + Last Sample Start: 2024-07-17T12:15:06Z + Last Update Time: 2024-07-17T12:15:38Z + Memory Histogram: + Bucket Weights: + Index: 11 + Weight: 10000 + Reference Timestamp: 2024-07-17T12:15:00Z + Total Weight: 0.7827734162991002 + Ref: + Container Name: pgpool + Vpa Object Name: pgpool-autoscale + Total Samples Count: 6 + Version: v3 + Conditions: + Last Transition Time: 2024-07-17T12:10:37Z + Message: Successfully created PgpoolOpsRequest demo/ppops-pgpool-autoscale-zzell6 + Observed Generation: 1 + Reason: CreateOpsRequest + Status: True + Type: CreateOpsRequest + Vpas: + Conditions: + Last Transition Time: 2024-07-17T12:09:37Z + Status: True + Type: RecommendationProvided + Recommendation: + Container Recommendations: + Container Name: pgpool + Lower Bound: + Cpu: 400m + Memory: 400Mi + Target: + Cpu: 400m + Memory: 400Mi + Uncapped Target: + Cpu: 100m + Memory: 262144k + Upper Bound: + Cpu: 1 + Memory: 1Gi + Vpa Name: pgpool-autoscale +Events: +``` +So, the `pgpoolautoscaler` resource is created successfully. + +you can see in the `Status.VPAs.Recommendation` section, that recommendation has been generated for our pgpool. Our autoscaler operator continuously watches the recommendation generated and creates an `pgpoolopsrequest` based on the recommendations, if the pgpool pods are needed to scaled up or down. + +Let's watch the `pgpoolopsrequest` in the demo namespace to see if any `pgpoolopsrequest` object is created. After some time you'll see that a `pgpoolopsrequest` will be created based on the recommendation. + +```bash +$ watch kubectl get pgpoolopsrequest -n demo +Every 2.0s: kubectl get pgpoolopsrequest -n demo +NAME TYPE STATUS AGE +ppops-pgpool-autoscale-zzell6 VerticalScaling Progressing 1m48s +``` + +Let's wait for the ops request to become successful. + +```bash +$ watch kubectl get pgpoolopsrequest -n demo +Every 2.0s: kubectl get pgpoolopsrequest -n demo +NAME TYPE STATUS AGE +ppops-pgpool-autoscale-zzell6 VerticalScaling Successful 3m40s +``` + +We can see from the above output that the `PgpoolOpsRequest` has succeeded. If we describe the `PgpoolOpsRequest` we will get an overview of the steps that were followed to scale the pgpool. + +```bash +$ kubectl describe pgpoolopsrequest -n demo ppops-pgpool-autoscale-zzell6 +Name: ppops-pgpool-autoscale-zzell6 +Namespace: demo +Labels: app.kubernetes.io/component=connection-pooler + app.kubernetes.io/instance=pgpool-autoscale + app.kubernetes.io/managed-by=kubedb.com + app.kubernetes.io/name=pgpools.kubedb.com +Annotations: +API Version: ops.kubedb.com/v1alpha1 +Kind: PgpoolOpsRequest +Metadata: + Creation Timestamp: 2024-07-17T12:10:37Z + Generation: 1 + Owner References: + API Version: autoscaling.kubedb.com/v1alpha1 + Block Owner Deletion: true + Controller: true + Kind: PgpoolAutoscaler + Name: pgpool-autoscale-ops + UID: 3841c30b-3b19-4740-82f5-bf8e257ddc18 + Resource Version: 81200 + UID: 57f99d31-af3d-4157-aa61-0f509ec89bbd +Spec: + Apply: IfReady + Database Ref: + Name: pgpool-autoscale + Type: VerticalScaling + Vertical Scaling: + Node: + Resources: + Limits: + Cpu: 400m + Memory: 400Mi + Requests: + Cpu: 400m + Memory: 400Mi +Status: + Conditions: + Last Transition Time: 2024-07-17T12:10:37Z + Message: Pgpool ops-request has started to vertically scaling the Pgpool nodes + Observed Generation: 1 + Reason: VerticalScaling + Status: True + Type: VerticalScaling + Last Transition Time: 2024-07-17T12:10:40Z + Message: Successfully paused database + Observed Generation: 1 + Reason: DatabasePauseSucceeded + Status: True + Type: DatabasePauseSucceeded + Last Transition Time: 2024-07-17T12:10:40Z + Message: Successfully updated PetSets Resources + Observed Generation: 1 + Reason: UpdatePetSets + Status: True + Type: UpdatePetSets + Last Transition Time: 2024-07-17T12:11:25Z + Message: Successfully Restarted Pods With Resources + Observed Generation: 1 + Reason: RestartPods + Status: True + Type: RestartPods + Last Transition Time: 2024-07-17T12:10:45Z + Message: get pod; ConditionStatus:True; PodName:pgpool-autoscale-0 + Observed Generation: 1 + Status: True + Type: GetPod--pgpool-autoscale-0 + Last Transition Time: 2024-07-17T12:10:45Z + Message: evict pod; ConditionStatus:True; PodName:pgpool-autoscale-0 + Observed Generation: 1 + Status: True + Type: EvictPod--pgpool-autoscale-0 + Last Transition Time: 2024-07-17T12:11:20Z + Message: check pod running; ConditionStatus:True; PodName:pgpool-autoscale-0 + Observed Generation: 1 + Status: True + Type: CheckPodRunning--pgpool-autoscale-0 + Last Transition Time: 2024-07-17T12:11:26Z + Message: Successfully completed the vertical scaling for Pgpool + Observed Generation: 1 + Reason: Successful + Status: True + Type: Successful + Observed Generation: 1 + Phase: Successful +Events: + Type Reason Age From Message + ---- ------ ---- ---- ------- + Normal Starting 8m19s KubeDB Ops-manager Operator Start processing for PgpoolOpsRequest: demo/ppops-pgpool-autoscale-zzell6 + Normal Starting 8m19s KubeDB Ops-manager Operator Pausing Pgpool databse: demo/pgpool-autoscale + Normal Successful 8m19s KubeDB Ops-manager Operator Successfully paused Pgpool database: demo/pgpool-autoscale for PgpoolOpsRequest: ppops-pgpool-autoscale-zzell6 + Normal UpdatePetSets 8m16s KubeDB Ops-manager Operator Successfully updated PetSets Resources + Warning get pod; ConditionStatus:True; PodName:pgpool-autoscale-0 8m11s KubeDB Ops-manager Operator get pod; ConditionStatus:True; PodName:pgpool-autoscale-0 + Warning evict pod; ConditionStatus:True; PodName:pgpool-autoscale-0 8m11s KubeDB Ops-manager Operator evict pod; ConditionStatus:True; PodName:pgpool-autoscale-0 + Warning check pod running; ConditionStatus:False; PodName:pgpool-autoscale-0 8m6s KubeDB Ops-manager Operator check pod running; ConditionStatus:False; PodName:pgpool-autoscale-0 + Warning check pod running; ConditionStatus:True; PodName:pgpool-autoscale-0 7m36s KubeDB Ops-manager Operator check pod running; ConditionStatus:True; PodName:pgpool-autoscale-0 + Normal RestartPods 7m31s KubeDB Ops-manager Operator Successfully Restarted Pods With Resources + Normal Starting 7m31s KubeDB Ops-manager Operator Resuming Pgpool database: demo/pgpool-autoscale + Normal Successful 7m30s KubeDB Ops-manager Operator Successfully resumed Pgpool database: demo/pgpool-autoscale for PgpoolOpsRequest: ppops-pgpool-autoscale-zzell6 +``` + +Now, we are going to verify from the Pod, and the Pgpool yaml whether the resources of the pgpool has updated to meet up the desired state, Let's check, + +```bash +$ kubectl get pod -n demo pgpool-autoscale-0 -o json | jq '.spec.containers[].resources' +{ + "limits": { + "cpu": "400m", + "memory": "400Mi" + }, + "requests": { + "cpu": "400m", + "memory": "400Mi" + } +} + +$ kubectl get pgpool -n demo pgpool-autoscale -o json | jq '.spec.podTemplate.spec.containers[0].resources' +{ + "limits": { + "cpu": "400m", + "memory": "400Mi" + }, + "requests": { + "cpu": "400m", + "memory": "400Mi" + } +} +``` + + +The above output verifies that we have successfully auto-scaled the resources of the Pgpool. + +## Cleaning Up + +To clean up the Kubernetes resources created by this tutorial, run: + +```bash +kubectl delete pp -n demo pgpool-autoscale +kubectl delete pgpoolautoscaler -n demo pgpool-autoscale-ops +``` \ No newline at end of file diff --git a/docs/guides/pgpool/autoscaler/compute/overview.md b/docs/guides/pgpool/autoscaler/compute/overview.md new file mode 100644 index 0000000000..0486940bea --- /dev/null +++ b/docs/guides/pgpool/autoscaler/compute/overview.md @@ -0,0 +1,55 @@ +--- +title: Pgpool Compute Autoscaling Overview +menu: + docs_{{ .version }}: + identifier: pp-auto-scaling-overview + name: Overview + parent: pp-compute-auto-scaling + weight: 10 +menu_name: docs_{{ .version }} +section_menu_id: guides +--- + +> New to KubeDB? Please start [here](/docs/README.md). + +# Pgpool Compute Resource Autoscaling + +This guide will give an overview on how KubeDB Autoscaler operator autoscales the database compute resources i.e. cpu and memory using `pgpoolautoscaler` crd. + +## Before You Begin + +- You should be familiar with the following `KubeDB` concepts: + - [Pgpool](/docs/guides/pgpool/concepts/pgpool.md) + - [PgpoolAutoscaler](/docs/guides/pgpool/concepts/autoscaler.md) + - [PgpoolOpsRequest](/docs/guides/pgpool/concepts/opsrequest.md) + +## How Compute Autoscaling Works + +The following diagram shows how KubeDB Autoscaler operator autoscales the resources of `Pgpool`. Open the image in a new tab to see the enlarged version. + +
+  Compute Auto Scaling process of Pgpool +
Fig: Compute Auto Scaling process of Pgpool
+
+ +The Auto Scaling process consists of the following steps: + +1. At first, a user creates a `Pgpool` Custom Resource Object (CRO). + +2. `KubeDB` Provisioner operator watches the `Pgpool` CRO. + +3. When the operator finds a `Pgpool` CRO, it creates `PetSet` and related necessary stuff like secrets, services, etc. + +4. Then, in order to set up autoscaling of `Pgpool`, the user creates a `PgpoolAutoscaler` CRO with desired configuration. + +5. `KubeDB` Autoscaler operator watches the `PgpoolAutoscaler` CRO. + +6. `KubeDB` Autoscaler operator generates recommendation using the modified version of kubernetes [official recommender](https://github.com/kubernetes/autoscaler/tree/master/vertical-pod-autoscaler/pkg/recommender) for different components of the database, as specified in the `PgpoolAutoscaler` CRO. + +7. If the generated recommendation doesn't match the current resources of the database, then `KubeDB` Autoscaler operator creates a `PgpoolOpsRequest` CRO to scale the pgpool to match the recommendation generated. + +8. `KubeDB` Ops-manager operator watches the `PgpoolOpsRequest` CRO. + +9. Then the `KubeDB` Ops-manager operator will scale the pgpool vertically as specified on the `PgpoolOpsRequest` CRO. + +In the next docs, we are going to show a step-by-step guide on Autoscaling of Pgpool using `PgpoolAutoscaler` CRD. diff --git a/docs/guides/pgpool/monitoring/using-builtin-prometheus.md b/docs/guides/pgpool/monitoring/using-builtin-prometheus.md index 94b98773e5..7ffc026a50 100644 --- a/docs/guides/pgpool/monitoring/using-builtin-prometheus.md +++ b/docs/guides/pgpool/monitoring/using-builtin-prometheus.md @@ -38,6 +38,9 @@ This tutorial will show you how to monitor Pgpool database using builtin [Promet > Note: YAML files used in this tutorial are stored in [docs/examples/pgpool](https://github.com/kubedb/docs/tree/{{< param "info.version" >}}/docs/examples/pgpool) folder in GitHub repository [kubedb/docs](https://github.com/kubedb/docs). +## Prepare Postgres +Prepare a KubeDB Postgres cluster using this [tutorial](/docs/guides/postgres/clustering/streaming_replication.md), or you can use any externally managed postgres but in that case you need to create an [appbinding](/docs/guides/pgpool/concepts/appbinding.md) yourself. In this tutorial we will use 3 node Postgres cluster named `ha-postgres`. + ## Deploy Pgpool with Monitoring Enabled At first, let's deploy a Pgpool with monitoring enabled. Below is the Pgpool object that we are going to create. diff --git a/docs/guides/pgpool/monitoring/using-prometheus-operator.md b/docs/guides/pgpool/monitoring/using-prometheus-operator.md index ba7d98fe38..f94d8ffc5a 100644 --- a/docs/guides/pgpool/monitoring/using-prometheus-operator.md +++ b/docs/guides/pgpool/monitoring/using-prometheus-operator.md @@ -165,6 +165,9 @@ status: Notice the `spec.serviceMonitorSelector` section. Here, `release: prometheus` label is used to select `ServiceMonitor` crd. So, we are going to use this label in `spec.monitor.prometheus.serviceMonitor.labels` field of Pgpool crd. +## Prepare Postgres +Prepare a KubeDB Postgres cluster using this [tutorial](/docs/guides/postgres/clustering/streaming_replication.md), or you can use any externally managed postgres but in that case you need to create an [appbinding](/docs/guides/pgpool/concepts/appbinding.md) yourself. In this tutorial we will use 3 node Postgres cluster named `ha-postgres`. + ## Deploy Pgpool with Monitoring Enabled At first, let's deploy an Pgpool database with monitoring enabled. Below is the Pgpool object that we are going to create. diff --git a/docs/guides/pgpool/scaling/_index.md b/docs/guides/pgpool/scaling/_index.md new file mode 100644 index 0000000000..9e2a06d899 --- /dev/null +++ b/docs/guides/pgpool/scaling/_index.md @@ -0,0 +1,10 @@ +--- +title: Scaling Pgpool +menu: + docs_{{ .version }}: + identifier: pp-scaling + name: Scaling + parent: pp-pgpool-guides + weight: 43 +menu_name: docs_{{ .version }} +--- \ No newline at end of file diff --git a/docs/guides/pgpool/scaling/horizontal-scaling/_index.md b/docs/guides/pgpool/scaling/horizontal-scaling/_index.md new file mode 100644 index 0000000000..688b70070a --- /dev/null +++ b/docs/guides/pgpool/scaling/horizontal-scaling/_index.md @@ -0,0 +1,10 @@ +--- +title: Horizontal Scaling +menu: + docs_{{ .version }}: + identifier: pp-horizontal-scaling + name: Horizontal Scaling + parent: pp-scaling + weight: 10 +menu_name: docs_{{ .version }} +--- \ No newline at end of file diff --git a/docs/guides/pgpool/scaling/horizontal-scaling/horizontal-ops.md b/docs/guides/pgpool/scaling/horizontal-scaling/horizontal-ops.md new file mode 100644 index 0000000000..8cbea8b186 --- /dev/null +++ b/docs/guides/pgpool/scaling/horizontal-scaling/horizontal-ops.md @@ -0,0 +1,438 @@ +--- +title: Horizontal Scaling Pgpool +menu: + docs_{{ .version }}: + identifier: pp-horizontal-scaling-ops + name: pp-horizontal-scaling-ops + parent: pp-horizontal-scaling + weight: 20 +menu_name: docs_{{ .version }} +section_menu_id: guides +--- + +> New to KubeDB? Please start [here](/docs/README.md). + +# Horizontal Scale Pgpool + +This guide will show you how to use `KubeDB` Ops-manager operator to scale the replicaset of a Pgpool. + +## Before You Begin + +- At first, you need to have a Kubernetes cluster, and the `kubectl` command-line tool must be configured to communicate with your cluster. If you do not already have a cluster, you can create one by using [kind](https://kind.sigs.k8s.io/docs/user/quick-start/). + +- Install `KubeDB` Provisioner and Ops-manager operator in your cluster following the steps [here](/docs/setup/README.md). + +- You should be familiar with the following `KubeDB` concepts: + - [Pgpool](/docs/guides/pgpool/concepts/pgpool.md) + - [PgpoolOpsRequest](/docs/guides/pgpool/concepts/opsrequest.md) + - [Horizontal Scaling Overview](/docs/guides/pgpool/scaling/horizontal-scaling/overview.md) + +To keep everything isolated, we are going to use a separate namespace called `demo` throughout this tutorial. + +```bash +$ kubectl create ns demo +namespace/demo created +``` + +> **Note:** YAML files used in this tutorial are stored in [docs/examples/pgpool](/docs/examples/pgpool) directory of [kubedb/docs](https://github.com/kubedb/docs) repository. + +## Apply Horizontal Scaling on pgpool + +Here, we are going to deploy a `Pgpool` using a supported version by `KubeDB` operator. Then we are going to apply horizontal scaling on it. + +### Prepare Postgres +Prepare a KubeDB Postgres cluster using this [tutorial](/docs/guides/postgres/clustering/streaming_replication.md), or you can use any externally managed postgres but in that case you need to create an [appbinding](/docs/guides/pgpool/concepts/appbinding.md) yourself. In this tutorial we will use 3 node Postgres cluster named `ha-postgres`. + +### Prepare Pgpool + +Now, we are going to deploy a `Pgpool` with version `4.5.0`. + +### Deploy Pgpool + +In this section, we are going to deploy a Pgpool. Then, in the next section we will scale the pgpool using `PgpoolOpsRequest` CRD. Below is the YAML of the `Pgpool` CR that we are going to create, + +```yaml +apiVersion: kubedb.com/v1alpha2 +kind: Pgpool +metadata: + name: pp-horizontal + namespace: demo +spec: + version: "4.5.0" + replicas: 1 + postgresRef: + name: ha-postgres + namespace: demo + initConfig: + pgpoolConfig: + max_pool : 60 + deletionPolicy: WipeOut +``` +Here we are creating the pgpool with `max_pool=60`, it is necessary because we will up scale the pgpool replicas so for that we need larger `max_pool`. Let's create the `Pgpool` CR we have shown above, + +```bash +$ kubectl create -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/pgpool/scaling/pp-horizontal.yaml +pgpool.kubedb.com/pp-horizontal created +``` + +Now, wait until `pp-horizontal ` has status `Ready`. i.e, + +```bash +$ kubectl get pp -n demo +NAME TYPE VERSION STATUS AGE +pp-horizontal kubedb.com/v1alpha2 4.5.0 Ready 2m +``` + +Let's check the number of replicas this pgpool has from the Pgpool object, number of pods the petset have, + +```bash +$ kubectl get pgpool -n demo pp-horizontal -o json | jq '.spec.replicas' +1 + +$ kubectl get petset -n demo pp-horizontal -o json | jq '.spec.replicas' +1 +``` + +We can see from both command that the pgpool has 3 replicas. + +We are now ready to apply the `PgpoolOpsRequest` CR to scale this pgpool. + +## Scale Up Replicas + +Here, we are going to scale up the replicas of the pgpool to meet the desired number of replicas after scaling. + +#### Create PgpoolOpsRequest + +In order to scale up the replicas of the pgpool, we have to create a `PgpoolOpsRequest` CR with our desired replicas. Below is the YAML of the `PgpoolOpsRequest` CR that we are going to create, + +```yaml +apiVersion: ops.kubedb.com/v1alpha1 +kind: PgpoolOpsRequest +metadata: + name: pgpool-horizontal-scale-up + namespace: demo +spec: + type: HorizontalScaling + databaseRef: + name: pp-horizontal + horizontalScaling: + node: 3 +``` + +Here, + +- `spec.databaseRef.name` specifies that we are performing horizontal scaling operation on `pp-horizontal` pgpool. +- `spec.type` specifies that we are performing `HorizontalScaling` on our pgpool. +- `spec.horizontalScaling.replicas` specifies the desired replicas after scaling. + +Let's create the `PgpoolOpsRequest` CR we have shown above, + +```bash +$ kubectl apply -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/pgpool/scaling/horizontal-scaling/ppops-hscale-up-ops.yaml +pgpoolopsrequest.ops.kubedb.com/pgpool-horizontal-scale-up created +``` + +#### Verify replicas scaled up successfully + +If everything goes well, `KubeDB` Ops-manager operator will update the replicas of `Pgpool` object and related `PetSet`. + +Let's wait for `PgpoolOpsRequest` to be `Successful`. Run the following command to watch `PgpoolOpsRequest` CR, + +```bash +$ watch kubectl get pgpoolopsrequest -n demo +Every 2.0s: kubectl get pgpoolopsrequest -n demo +NAME TYPE STATUS AGE +pgpool-horizontal-scale-up HorizontalScaling Successful 2m49s +``` + +We can see from the above output that the `PgpoolOpsRequest` has succeeded. If we describe the `PgpoolOpsRequest` we will get an overview of the steps that were followed to scale the pgpool. + +```bash +$ kubectl describe pgpoolopsrequest -n demo pgpool-horizontal-scale-up +Name: pgpool-horizontal-scale-up +Namespace: demo +Labels: +Annotations: +API Version: ops.kubedb.com/v1alpha1 +Kind: PgpoolOpsRequest +Metadata: + Creation Timestamp: 2024-07-17T08:35:13Z + Generation: 1 + Resource Version: 62002 + UID: ce44f7a1-e78d-4248-a691-62fe1efd11f3 +Spec: + Apply: IfReady + Database Ref: + Name: pp-horizontal + Horizontal Scaling: + Node: 3 + Type: HorizontalScaling +Status: + Conditions: + Last Transition Time: 2024-07-17T08:35:13Z + Message: Pgpool ops-request has started to horizontally scaling the nodes + Observed Generation: 1 + Reason: HorizontalScaling + Status: True + Type: HorizontalScaling + Last Transition Time: 2024-07-17T08:35:16Z + Message: Successfully paused database + Observed Generation: 1 + Reason: DatabasePauseSucceeded + Status: True + Type: DatabasePauseSucceeded + Last Transition Time: 2024-07-17T08:35:41Z + Message: Successfully Scaled Up Node + Observed Generation: 1 + Reason: HorizontalScaleUp + Status: True + Type: HorizontalScaleUp + Last Transition Time: 2024-07-17T08:35:21Z + Message: patch petset; ConditionStatus:True; PodName:pp-horizontal-1 + Observed Generation: 1 + Status: True + Type: PatchPetset--pp-horizontal-1 + Last Transition Time: 2024-07-17T08:35:26Z + Message: is pod ready; ConditionStatus:True; PodName:pp-horizontal-1 + Observed Generation: 1 + Status: True + Type: IsPodReady--pp-horizontal-1 + Last Transition Time: 2024-07-17T08:35:26Z + Message: client failure; ConditionStatus:True; PodName:pp-horizontal-1 + Observed Generation: 1 + Status: True + Type: ClientFailure--pp-horizontal-1 + Last Transition Time: 2024-07-17T08:35:26Z + Message: is node healthy; ConditionStatus:True; PodName:pp-horizontal-1 + Observed Generation: 1 + Status: True + Type: IsNodeHealthy--pp-horizontal-1 + Last Transition Time: 2024-07-17T08:35:31Z + Message: patch petset; ConditionStatus:True; PodName:pp-horizontal-2 + Observed Generation: 1 + Status: True + Type: PatchPetset--pp-horizontal-2 + Last Transition Time: 2024-07-17T08:35:31Z + Message: pp-horizontal already has desired replicas + Observed Generation: 1 + Reason: HorizontalScale + Status: True + Type: HorizontalScale + Last Transition Time: 2024-07-17T08:35:36Z + Message: is pod ready; ConditionStatus:True; PodName:pp-horizontal-2 + Observed Generation: 1 + Status: True + Type: IsPodReady--pp-horizontal-2 + Last Transition Time: 2024-07-17T08:35:36Z + Message: client failure; ConditionStatus:True; PodName:pp-horizontal-2 + Observed Generation: 1 + Status: True + Type: ClientFailure--pp-horizontal-2 + Last Transition Time: 2024-07-17T08:35:36Z + Message: is node healthy; ConditionStatus:True; PodName:pp-horizontal-2 + Observed Generation: 1 + Status: True + Type: IsNodeHealthy--pp-horizontal-2 + Last Transition Time: 2024-07-17T08:35:41Z + Message: Successfully updated Pgpool + Observed Generation: 1 + Reason: UpdateDatabase + Status: True + Type: UpdateDatabase + Last Transition Time: 2024-07-17T08:35:41Z + Message: Successfully completed horizontally scale pgpool cluster + Observed Generation: 1 + Reason: Successful + Status: True + Type: Successful + Observed Generation: 1 + Phase: Successful +Events: + Type Reason Age From Message + ---- ------ ---- ---- ------- + Normal Starting 4m5s KubeDB Ops-manager Operator Start processing for PgpoolOpsRequest: demo/pgpool-horizontal-scale-up + Normal Starting 4m5s KubeDB Ops-manager Operator Pausing Pgpool databse: demo/pp-horizontal + Normal Successful 4m5s KubeDB Ops-manager Operator Successfully paused Pgpool database: demo/pp-horizontal for PgpoolOpsRequest: pgpool-horizontal-scale-up + Normal patch petset; ConditionStatus:True; PodName:pp-horizontal-1 3m57s KubeDB Ops-manager Operator patch petset; ConditionStatus:True; PodName:pp-horizontal-1 + Normal is pod ready; ConditionStatus:True; PodName:pp-horizontal-1 3m52s KubeDB Ops-manager Operator is pod ready; ConditionStatus:True; PodName:pp-horizontal-1 + Normal is node healthy; ConditionStatus:True; PodName:pp-horizontal-1 3m52s KubeDB Ops-manager Operator is node healthy; ConditionStatus:True; PodName:pp-horizontal-1 + Normal patch petset; ConditionStatus:True; PodName:pp-horizontal-2 3m47s KubeDB Ops-manager Operator patch petset; ConditionStatus:True; PodName:pp-horizontal-2 + Normal is pod ready; ConditionStatus:True; PodName:pp-horizontal-2 3m42s KubeDB Ops-manager Operator is pod ready; ConditionStatus:True; PodName:pp-horizontal-2 + Normal is node healthy; ConditionStatus:True; PodName:pp-horizontal-2 3m42s KubeDB Ops-manager Operator is node healthy; ConditionStatus:True; PodName:pp-horizontal-2 + Normal HorizontalScaleUp 3m37s KubeDB Ops-manager Operator Successfully Scaled Up Node + Normal UpdateDatabase 3m37s KubeDB Ops-manager Operator Successfully updated Pgpool + Normal Starting 3m37s KubeDB Ops-manager Operator Resuming Pgpool database: demo/pp-horizontal + Normal Successful 3m37s KubeDB Ops-manager Operator Successfully resumed Pgpool database: demo/pp-horizontal for PgpoolOpsRequest: pgpool-horizontal-scale-up +``` + +Now, we are going to verify the number of replicas this pgpool has from the Pgpool object, number of pods the petset have, + +```bash +$ kubectl get pp -n demo pp-horizontal -o json | jq '.spec.replicas' +3 + +$ kubectl get petset -n demo pp-horizontal -o json | jq '.spec.replicas' +3 +``` +From all the above outputs we can see that the replicas of the pgpool is `3`. That means we have successfully scaled up the replicas of the Pgpool. + + +### Scale Down Replicas + +Here, we are going to scale down the replicas of the pgpool to meet the desired number of replicas after scaling. + +#### Create PgpoolOpsRequest + +In order to scale down the replicas of the pgpool, we have to create a `PgpoolOpsRequest` CR with our desired replicas. Below is the YAML of the `PgpoolOpsRequest` CR that we are going to create, + +```yaml +apiVersion: ops.kubedb.com/v1alpha1 +kind: PgpoolOpsRequest +metadata: + name: pgpool-horizontal-scale-down + namespace: demo +spec: + type: HorizontalScaling + databaseRef: + name: pp-horizontal + horizontalScaling: + node: 2 +``` + +Here, + +- `spec.databaseRef.name` specifies that we are performing horizontal scaling down operation on `pp-horizontal` pgpool. +- `spec.type` specifies that we are performing `HorizontalScaling` on our pgpool. +- `spec.horizontalScaling.replicas` specifies the desired replicas after scaling. + +Let's create the `PgpoolOpsRequest` CR we have shown above, + +```bash +$ kubectl apply -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/pgpool/scaling/horizontal-scaling/ppops-hscale-down-ops.yaml +pgpoolopsrequest.ops.kubedb.com/pgpool-horizontal-scale-down created +``` + +#### Verify replicas scaled down successfully + +If everything goes well, `KubeDB` Ops-manager operator will update the replicas of `Pgpool` object and related `PetSet`. + +Let's wait for `PgpoolOpsRequest` to be `Successful`. Run the following command to watch `PgpoolOpsRequest` CR, + +```bash +$ watch kubectl get pgpoolopsrequest -n demo +Every 2.0s: kubectl get pgpoolopsrequest -n demo +NAME TYPE STATUS AGE +pgpool-horizontal-scale-down HorizontalScaling Successful 75s +``` + +We can see from the above output that the `PgpoolOpsRequest` has succeeded. If we describe the `PgpoolOpsRequest` we will get an overview of the steps that were followed to scale the pgpool. + +```bash +$ kubectl describe pgpoolopsrequest -n demo pgpool-horizontal-scale-down +Name: pgpool-horizontal-scale-down +Namespace: demo +Labels: +Annotations: +API Version: ops.kubedb.com/v1alpha1 +Kind: PgpoolOpsRequest +Metadata: + Creation Timestamp: 2024-07-17T08:52:28Z + Generation: 1 + Resource Version: 63600 + UID: 019f9d8f-c2b0-4154-b3d3-b715b8805fd7 +Spec: + Apply: IfReady + Database Ref: + Name: pp-horizontal + Horizontal Scaling: + Node: 2 + Type: HorizontalScaling +Status: + Conditions: + Last Transition Time: 2024-07-17T08:52:28Z + Message: Pgpool ops-request has started to horizontally scaling the nodes + Observed Generation: 1 + Reason: HorizontalScaling + Status: True + Type: HorizontalScaling + Last Transition Time: 2024-07-17T08:52:31Z + Message: Successfully paused database + Observed Generation: 1 + Reason: DatabasePauseSucceeded + Status: True + Type: DatabasePauseSucceeded + Last Transition Time: 2024-07-17T08:53:16Z + Message: Successfully Scaled Down Node + Observed Generation: 1 + Reason: HorizontalScaleDown + Status: True + Type: HorizontalScaleDown + Last Transition Time: 2024-07-17T08:52:36Z + Message: patch petset; ConditionStatus:True; PodName:pp-horizontal-2 + Observed Generation: 1 + Status: True + Type: PatchPetset--pp-horizontal-2 + Last Transition Time: 2024-07-17T08:52:36Z + Message: pp-horizontal already has desired replicas + Observed Generation: 1 + Reason: HorizontalScale + Status: True + Type: HorizontalScale + Last Transition Time: 2024-07-17T08:52:41Z + Message: get pod; ConditionStatus:False + Observed Generation: 1 + Status: False + Type: GetPod + Last Transition Time: 2024-07-17T08:53:11Z + Message: get pod; ConditionStatus:True; PodName:pp-horizontal-2 + Observed Generation: 1 + Status: True + Type: GetPod--pp-horizontal-2 + Last Transition Time: 2024-07-17T08:53:16Z + Message: Successfully updated Pgpool + Observed Generation: 1 + Reason: UpdateDatabase + Status: True + Type: UpdateDatabase + Last Transition Time: 2024-07-17T08:53:16Z + Message: Successfully completed horizontally scale pgpool cluster + Observed Generation: 1 + Reason: Successful + Status: True + Type: Successful + Observed Generation: 1 + Phase: Successful +Events: + Type Reason Age From Message + ---- ------ ---- ---- ------- + Normal Starting 96s KubeDB Ops-manager Operator Start processing for PgpoolOpsRequest: demo/pgpool-horizontal-scale-down + Normal Starting 96s KubeDB Ops-manager Operator Pausing Pgpool databse: demo/pp-horizontal + Normal Successful 96s KubeDB Ops-manager Operator Successfully paused Pgpool database: demo/pp-horizontal for PgpoolOpsRequest: pgpool-horizontal-scale-down + Normal patch petset; ConditionStatus:True; PodName:pp-horizontal-2 88s KubeDB Ops-manager Operator patch petset; ConditionStatus:True; PodName:pp-horizontal-2 + Normal get pod; ConditionStatus:False 83s KubeDB Ops-manager Operator get pod; ConditionStatus:False + Normal get pod; ConditionStatus:True; PodName:pp-horizontal-2 53s KubeDB Ops-manager Operator get pod; ConditionStatus:True; PodName:pp-horizontal-2 + Normal HorizontalScaleDown 48s KubeDB Ops-manager Operator Successfully Scaled Down Node + Normal UpdateDatabase 48s KubeDB Ops-manager Operator Successfully updated Pgpool + Normal Starting 48s KubeDB Ops-manager Operator Resuming Pgpool database: demo/pp-horizontal + Normal Successful 48s KubeDB Ops-manager Operator Successfully resumed Pgpool database: demo/pp-horizontal for PgpoolOpsRequest: pgpool-horizontal-scale-down +``` + +Now, we are going to verify the number of replicas this pgpool has from the Pgpool object, number of pods the petset have, + +```bash +$ kubectl get pp -n demo pp-horizontal -o json | jq '.spec.replicas' +2 + +$ kubectl get petset -n demo pp-horizontal -o json | jq '.spec.replicas' +2 +``` +From all the above outputs we can see that the replicas of the pgpool is `2`. That means we have successfully scaled up the replicas of the Pgpool. + +## Cleaning Up + +To clean up the Kubernetes resources created by this tutorial, run: + +```bash +kubectl delete mg -n pp-horizontal +kubectl delete pgpoolopsrequest -n demo pgpool-horizontal-scale-down +``` \ No newline at end of file diff --git a/docs/guides/pgpool/scaling/horizontal-scaling/overview.md b/docs/guides/pgpool/scaling/horizontal-scaling/overview.md new file mode 100644 index 0000000000..4b47faea86 --- /dev/null +++ b/docs/guides/pgpool/scaling/horizontal-scaling/overview.md @@ -0,0 +1,54 @@ +--- +title: Pgpool Horizontal Scaling Overview +menu: + docs_{{ .version }}: + identifier: pp-horizontal-scaling-overview + name: Overview + parent: pp-horizontal-scaling + weight: 10 +menu_name: docs_{{ .version }} +section_menu_id: guides +--- + +> New to KubeDB? Please start [here](/docs/README.md). + +# Pgpool Horizontal Scaling + +This guide will give an overview on how KubeDB Ops-manager operator scales up or down `Pgpool` replicas of PetSet. + +## Before You Begin + +- You should be familiar with the following `KubeDB` concepts: + - [Pgpool](/docs/guides/pgpool/concepts/pgpool.md) + - [PgpoolOpsRequest](/docs/guides/pgpool/concepts/opsrequest.md) + +## How Horizontal Scaling Process Works + +The following diagram shows how KubeDB Ops-manager operator scales up or down `Pgpool` database components. Open the image in a new tab to see the enlarged version. + +
+  Horizontal scaling process of Pgpool +
Fig: Horizontal scaling process of Pgpool
+
+ +The Horizontal scaling process consists of the following steps: + +1. At first, a user creates a `Pgpool` Custom Resource (CR). + +2. `KubeDB` Provisioner operator watches the `Pgpool` CR. + +3. When the operator finds a `Pgpool` CR, it creates `PetSet` and related necessary stuff like secrets, services, etc. + +4. Then, in order to scale the `PetSet` of the `Pgpool` database the user creates a `PgpoolOpsRequest` CR with desired information. + +5. `KubeDB` Ops-manager operator watches the `PgpoolOpsRequest` CR. + +6. When it finds a `PgpoolOpsRequest` CR, it pauses the `Pgpool` object which is referred from the `PgpoolOpsRequest`. So, the `KubeDB` Provisioner operator doesn't perform any operations on the `Pgpool` object during the horizontal scaling process. + +7. Then the `KubeDB` Ops-manager operator will scale the related PetSet Pods to reach the expected number of replicas defined in the `PgpoolOpsRequest` CR. + +8. After the successfully scaling the replicas of the related PetSet Pods, the `KubeDB` Ops-manager operator updates the number of replicas in the `Pgpool` object to reflect the updated state. + +9. After the successful scaling of the `Pgpool` replicas, the `KubeDB` Ops-manager operator resumes the `Pgpool` object so that the `KubeDB` Provisioner operator resumes its usual operations. + +In the next docs, we are going to show a step-by-step guide on horizontal scaling of Pgpool using `PgpoolOpsRequest` CRD. \ No newline at end of file diff --git a/docs/guides/pgpool/scaling/vertical-scaling/_index.md b/docs/guides/pgpool/scaling/vertical-scaling/_index.md new file mode 100644 index 0000000000..cdcd7b9818 --- /dev/null +++ b/docs/guides/pgpool/scaling/vertical-scaling/_index.md @@ -0,0 +1,10 @@ +--- +title: Vertical Scaling +menu: + docs_{{ .version }}: + identifier: pp-vertical-scaling + name: Vertical Scaling + parent: pp-scaling + weight: 20 +menu_name: docs_{{ .version }} +--- \ No newline at end of file diff --git a/docs/guides/pgpool/scaling/vertical-scaling/overview.md b/docs/guides/pgpool/scaling/vertical-scaling/overview.md new file mode 100644 index 0000000000..ce810c4b18 --- /dev/null +++ b/docs/guides/pgpool/scaling/vertical-scaling/overview.md @@ -0,0 +1,54 @@ +--- +title: Pgpool Vertical Scaling Overview +menu: + docs_{{ .version }}: + identifier: pp-vertical-scaling-overview + name: Overview + parent: pp-vertical-scaling + weight: 10 +menu_name: docs_{{ .version }} +section_menu_id: guides +--- + +> New to KubeDB? Please start [here](/docs/README.md). + +# Pgpool Vertical Scaling + +This guide will give an overview on how KubeDB Ops-manager operator updates the resources(for example CPU and Memory etc.) of the `Pgpool`. + +## Before You Begin + +- You should be familiar with the following `KubeDB` concepts: + - [Pgpool](/docs/guides/pgpool/concepts/pgpool.md) + - [PgpoolOpsRequest](/docs/guides/pgpool/concepts/opsrequest.md) + +## How Vertical Scaling Process Works + +The following diagram shows how KubeDB Ops-manager operator updates the resources of the `Pgpool`. Open the image in a new tab to see the enlarged version. + +
+  Vertical scaling process of Pgpool +
Fig: Vertical scaling process of Pgpool
+
+ +The vertical scaling process consists of the following steps: + +1. At first, a user creates a `Pgpool` Custom Resource (CR). + +2. `KubeDB` Provisioner operator watches the `Pgpool` CR. + +3. When the operator finds a `Pgpool` CR, it creates `PetSet` and related necessary stuff like secrets, services, etc. + +4. Then, in order to update the resources(for example `CPU`, `Memory` etc.) of the `Pgpool`, the user creates a `PgpoolOpsRequest` CR with desired information. + +5. `KubeDB` Ops-manager operator watches the `PgpoolOpsRequest` CR. + +6. When it finds a `PgpoolOpsRequest` CR, it pauses the `Pgpool` object which is referred from the `PgpoolOpsRequest`. So, the `KubeDB` Provisioner operator doesn't perform any operations on the `Pgpool` object during the vertical scaling process. + +7. Then the `KubeDB` Ops-manager operator will update resources of the PetSet to reach desired state. + +8. After the successful update of the resources of the PetSet's replica, the `KubeDB` Ops-manager operator updates the `Pgpool` object to reflect the updated state. + +9. After the successful update of the `Pgpool` resources, the `KubeDB` Ops-manager operator resumes the `Pgpool` object so that the `KubeDB` Provisioner operator resumes its usual operations. + +In the next docs, we are going to show a step-by-step guide on updating resources of Pgpool `PgpoolOpsRequest` CRD. \ No newline at end of file diff --git a/docs/guides/pgpool/scaling/vertical-scaling/vertical-ops.md b/docs/guides/pgpool/scaling/vertical-scaling/vertical-ops.md new file mode 100644 index 0000000000..def3657be7 --- /dev/null +++ b/docs/guides/pgpool/scaling/vertical-scaling/vertical-ops.md @@ -0,0 +1,282 @@ +--- +title: Vertical Scaling Pgpool +menu: + docs_{{ .version }}: + identifier: pp-vertical-scaling-ops + name: pp-vertical-scaling-ops + parent: pp-vertical-scaling + weight: 20 +menu_name: docs_{{ .version }} +section_menu_id: guides +--- + +> New to KubeDB? Please start [here](/docs/README.md). + +# Vertical Scale Pgpool + +This guide will show you how to use `KubeDB` Ops-manager operator to update the resources of a Pgpool. + +## Before You Begin + +- At first, you need to have a Kubernetes cluster, and the `kubectl` command-line tool must be configured to communicate with your cluster. If you do not already have a cluster, you can create one by using [kind](https://kind.sigs.k8s.io/docs/user/quick-start/). + +- Install `KubeDB` Provisioner and Ops-manager operator in your cluster following the steps [here](/docs/setup/README.md). + +- You should be familiar with the following `KubeDB` concepts: + - [Pgpool](/docs/guides/pgpool/concepts/pgpool.md) + - [PgpoolOpsRequest](/docs/guides/pgpool/concepts/opsrequest.md) + - [Vertical Scaling Overview](/docs/guides/pgpool/scaling/vertical-scaling/overview.md) + +To keep everything isolated, we are going to use a separate namespace called `demo` throughout this tutorial. + +```bash +$ kubectl create ns demo +namespace/demo created +``` + +> **Note:** YAML files used in this tutorial are stored in [docs/examples/pgpool](/docs/examples/pgpool) directory of [kubedb/docs](https://github.com/kubedb/docs) repository. + +## Apply Vertical Scaling on Pgpool + +Here, we are going to deploy a `Pgpool` using a supported version by `KubeDB` operator. Then we are going to apply vertical scaling on it. + +### Prepare Postgres +Prepare a KubeDB Postgres cluster using this [tutorial](/docs/guides/postgres/clustering/streaming_replication.md), or you can use any externally managed postgres but in that case you need to create an [appbinding](/docs/guides/pgpool/concepts/appbinding.md) yourself. In this tutorial we will use 3 node Postgres cluster named `ha-postgres`. + +### Prepare Pgpool + +Now, we are going to deploy a `Pgpool` with version `4.5.0`. + +### Deploy Pgpool + +In this section, we are going to deploy a Pgpool. Then, in the next section we will update the resources using `PgpoolOpsRequest` CRD. Below is the YAML of the `Pgpool` CR that we are going to create, + +```yaml +apiVersion: kubedb.com/v1alpha2 +kind: Pgpool +metadata: + name: pp-vertical + namespace: demo +spec: + version: "4.5.0" + replicas: 1 + postgresRef: + name: ha-postgres + namespace: demo + deletionPolicy: WipeOut +``` + +Let's create the `Pgpool` CR we have shown above, + +```bash +$ kubectl create -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/pgpool/scaling/pp-vertical.yaml +pgpool.kubedb.com/pp-vertical created +``` + +Now, wait until `pp-vertical` has status `Ready`. i.e, + +```bash +$ kubectl get pp -n demo +NAME TYPE VERSION STATUS AGE +pp-vertical kubedb.com/v1alpha2 4.5.0 Ready 17s +``` + +Let's check the Pod containers resources, + +```bash +$ kubectl get pod -n demo pp-vertical-0 -o json | jq '.spec.containers[].resources' +{ + "limits": { + "cpu": "500m", + "memory": "1Gi" + }, + "requests": { + "cpu": "500m", + "memory": "1Gi" + } +} +``` + +You can see the Pod has default resources which is assigned by the KubeDB operator. + +We are now ready to apply the `PgpoolOpsRequest` CR to update the resources of this pgpool. + +### Vertical Scaling + +Here, we are going to update the resources of the pgpool to meet the desired resources after scaling. + +#### Create PgpoolOpsRequest + +In order to update the resources of the pgpool, we have to create a `PgpoolOpsRequest` CR with our desired resources. Below is the YAML of the `PgpoolOpsRequest` CR that we are going to create, + +```yaml +apiVersion: ops.kubedb.com/v1alpha1 +kind: PgpoolOpsRequest +metadata: + name: pgpool-scale-vertical + namespace: demo +spec: + type: VerticalScaling + databaseRef: + name: pp-vertical + verticalScaling: + node: + resources: + requests: + memory: "2Gi" + cpu: "1" + limits: + memory: "2Gi" + cpu: "1" + timeout: 5m + apply: IfReady +``` + +Here, + +- `spec.databaseRef.name` specifies that we are performing vertical scaling operation on `pp-vertical` pgpool. +- `spec.type` specifies that we are performing `VerticalScaling` on our database. +- `spec.VerticalScaling.standalone` specifies the desired resources after scaling. +- Have a look [here](/docs/guides/pgpool/concepts/opsrequest.md) on the respective sections to understand the `timeout` & `apply` fields. + +Let's create the `PgpoolOpsRequest` CR we have shown above, + +```bash +$ kubectl apply -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/pgpool/scaling/vertical-scaling/pp-vertical-ops.yaml +pgpoolopsrequest.ops.kubedb.com/pgpool-scale-vertical created +``` + +#### Verify Pgpool resources updated successfully + +If everything goes well, `KubeDB` Ops-manager operator will update the resources of `Pgpool` object and related `PetSet` and `Pods`. + +Let's wait for `PgpoolOpsRequest` to be `Successful`. Run the following command to watch `PgpoolOpsRequest` CR, + +```bash +$ kubectl get pgpoolopsrequest -n demo +Every 2.0s: kubectl get pgpoolopsrequest -n demo +NAME TYPE STATUS AGE +pgpool-scale-vertical VerticalScaling Successful 3m42s +``` + +We can see from the above output that the `PgpoolOpsRequest` has succeeded. If we describe the `PgpoolOpsRequest` we will get an overview of the steps that were followed to scale the pgpool. + +```bash +$ kubectl describe pgpoolopsrequest -n demo pgpool-scale-vertical +Name: pgpool-scale-vertical +Namespace: demo +Labels: +Annotations: +API Version: ops.kubedb.com/v1alpha1 +Kind: PgpoolOpsRequest +Metadata: + Creation Timestamp: 2024-07-17T09:44:22Z + Generation: 1 + Resource Version: 68270 + UID: 62a105f7-e7b9-444e-9303-79818fccfdef +Spec: + Apply: IfReady + Database Ref: + Name: pp-vertical + Timeout: 5m + Type: VerticalScaling + Vertical Scaling: + Node: + Resources: + Limits: + Cpu: 1 + Memory: 2Gi + Requests: + Cpu: 1 + Memory: 2Gi +Status: + Conditions: + Last Transition Time: 2024-07-17T09:44:22Z + Message: Pgpool ops-request has started to vertically scaling the Pgpool nodes + Observed Generation: 1 + Reason: VerticalScaling + Status: True + Type: VerticalScaling + Last Transition Time: 2024-07-17T09:44:25Z + Message: Successfully paused database + Observed Generation: 1 + Reason: DatabasePauseSucceeded + Status: True + Type: DatabasePauseSucceeded + Last Transition Time: 2024-07-17T09:44:25Z + Message: Successfully updated PetSets Resources + Observed Generation: 1 + Reason: UpdatePetSets + Status: True + Type: UpdatePetSets + Last Transition Time: 2024-07-17T09:45:10Z + Message: Successfully Restarted Pods With Resources + Observed Generation: 1 + Reason: RestartPods + Status: True + Type: RestartPods + Last Transition Time: 2024-07-17T09:44:30Z + Message: get pod; ConditionStatus:True; PodName:pp-vertical-0 + Observed Generation: 1 + Status: True + Type: GetPod--pp-vertical-0 + Last Transition Time: 2024-07-17T09:44:30Z + Message: evict pod; ConditionStatus:True; PodName:pp-vertical-0 + Observed Generation: 1 + Status: True + Type: EvictPod--pp-vertical-0 + Last Transition Time: 2024-07-17T09:45:05Z + Message: check pod running; ConditionStatus:True; PodName:pp-vertical-0 + Observed Generation: 1 + Status: True + Type: CheckPodRunning--pp-vertical-0 + Last Transition Time: 2024-07-17T09:45:10Z + Message: Successfully completed the vertical scaling for Pgpool + Observed Generation: 1 + Reason: Successful + Status: True + Type: Successful + Observed Generation: 1 + Phase: Successful +Events: + Type Reason Age From Message + ---- ------ ---- ---- ------- + Normal Starting 4m16s KubeDB Ops-manager Operator Start processing for PgpoolOpsRequest: demo/pgpool-scale-vertical + Normal Starting 4m16s KubeDB Ops-manager Operator Pausing Pgpool databse: demo/pp-vertical + Normal Successful 4m16s KubeDB Ops-manager Operator Successfully paused Pgpool database: demo/pp-vertical for PgpoolOpsRequest: pgpool-scale-vertical + Normal UpdatePetSets 4m13s KubeDB Ops-manager Operator Successfully updated PetSets Resources + Warning get pod; ConditionStatus:True; PodName:pp-vertical-0 4m8s KubeDB Ops-manager Operator get pod; ConditionStatus:True; PodName:pp-vertical-0 + Warning evict pod; ConditionStatus:True; PodName:pp-vertical-0 4m8s KubeDB Ops-manager Operator evict pod; ConditionStatus:True; PodName:pp-vertical-0 + Warning check pod running; ConditionStatus:False; PodName:pp-vertical-0 4m3s KubeDB Ops-manager Operator check pod running; ConditionStatus:False; PodName:pp-vertical-0 + Warning check pod running; ConditionStatus:True; PodName:pp-vertical-0 3m33s KubeDB Ops-manager Operator check pod running; ConditionStatus:True; PodName:pp-vertical-0 + Normal RestartPods 3m28s KubeDB Ops-manager Operator Successfully Restarted Pods With Resources + Normal Starting 3m28s KubeDB Ops-manager Operator Resuming Pgpool database: demo/pp-vertical + Normal Successful 3m28s KubeDB Ops-manager Operator Successfully resumed Pgpool database: demo/pp-vertical for PgpoolOpsRequest: pgpool-scale-vertical +``` + +Now, we are going to verify from the Pod yaml whether the resources of the pgpool has updated to meet up the desired state, Let's check, + +```bash +$ kubectl get pod -n demo pp-vertical-0 -o json | jq '.spec.containers[].resources' +{ + "limits": { + "cpu": "1", + "memory": "2Gi" + }, + "requests": { + "cpu": "1", + "memory": "2Gi" + } +} +``` + +The above output verifies that we have successfully scaled up the resources of the Pgpool. + +## Cleaning Up + +To clean up the Kubernetes resources created by this tutorial, run: + +```bash +kubectl delete pp -n demo pp-vertical +kubectl delete pgpoolopsrequest -n demo pgpool-scale-vertical +``` \ No newline at end of file diff --git a/docs/guides/pgpool/tls/configure_ssl.md b/docs/guides/pgpool/tls/configure_ssl.md index b04851df9f..b793e0e8f3 100644 --- a/docs/guides/pgpool/tls/configure_ssl.md +++ b/docs/guides/pgpool/tls/configure_ssl.md @@ -108,6 +108,9 @@ $ kubectl create -f https://github.com/kubedb/docs/raw/{{< param "info.version" issuer.cert-manager.io/pgpool-ca-issuer created ``` +## Prepare Postgres +Prepare a KubeDB Postgres cluster using this [tutorial](/docs/guides/postgres/clustering/streaming_replication.md), or you can use any externally managed postgres but in that case you need to create an [appbinding](/docs/guides/pgpool/concepts/appbinding.md) yourself. In this tutorial we will use 3 node Postgres cluster named `ha-postgres`. + ## TLS/SSL encryption in Pgpool Below is the YAML for Pgpool with TLS enabled: @@ -144,7 +147,7 @@ spec: deletionPolicy: WipeOut ``` -### Deploy Pgpool Standalone +### Deploy Pgpool ```bash $ kubectl create -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/pgpool/tls/pgpool-ssl.yaml diff --git a/docs/guides/pgpool/update-version/_index.md b/docs/guides/pgpool/update-version/_index.md new file mode 100644 index 0000000000..7cfe17ab8a --- /dev/null +++ b/docs/guides/pgpool/update-version/_index.md @@ -0,0 +1,10 @@ +--- +title: Updating Pgpool +menu: + docs_{{ .version }}: + identifier: pp-updating + name: UpdateVersion + parent: pp-pgpool-guides + weight: 42 +menu_name: docs_{{ .version }} +--- \ No newline at end of file diff --git a/docs/guides/pgpool/update-version/overview.md b/docs/guides/pgpool/update-version/overview.md new file mode 100644 index 0000000000..5527d3fb73 --- /dev/null +++ b/docs/guides/pgpool/update-version/overview.md @@ -0,0 +1,54 @@ +--- +title: Updating Pgpool Overview +menu: + docs_{{ .version }}: + identifier: pp-updating-overview + name: Overview + parent: pp-updating + weight: 10 +menu_name: docs_{{ .version }} +section_menu_id: guides +--- + +> New to KubeDB? Please start [here](/docs/README.md). + +# updating Pgpool version Overview + +This guide will give you an overview on how KubeDB Ops-manager operator update the version of `Pgpool`. + +## Before You Begin + +- You should be familiar with the following `KubeDB` concepts: + - [Pgpool](/docs/guides/pgpool/concepts/pgpool.md) + - [PgpoolOpsRequest](/docs/guides/pgpool/concepts/opsrequest.md) + +## How update version Process Works + +The following diagram shows how KubeDB Ops-manager operator used to update the version of `Pgpool`. Open the image in a new tab to see the enlarged version. + +
+  updating Process of Pgpool +
Fig: updating Process of Pgpool
+
+ +The updating process consists of the following steps: + +1. At first, a user creates a `Pgpool` Custom Resource (CR). + +2. `KubeDB` Provisioner operator watches the `Pgpool` CR. + +3. When the operator finds a `Pgpool` CR, it creates required number of `PetSets` and related necessary stuff like secrets, services, etc. + +4. Then, in order to update the version of the `Pgpool` the user creates a `PgpoolOpsRequest` CR with the desired version. + +5. `KubeDB` Ops-manager operator watches the `PgpoolOpsRequest` CR. + +6. When it finds a `PgpoolOpsRequest` CR, it halts the `Pgpool` object which is referred from the `PgpoolOpsRequest`. So, the `KubeDB` Provisioner operator doesn't perform any operations on the `Pgpool` object during the updating process. + +7. By looking at the target version from `PgpoolOpsRequest` CR, `KubeDB` Ops-manager operator updates the image of the `PetSet`. + +8. After successfully updating the `PetSet` and their `Pods` images, the `KubeDB` Ops-manager operator updates the image of the `Pgpool` object to reflect the updated state of the database. + +9. After successfully updating of `Pgpool` object, the `KubeDB` Ops-manager operator resumes the `Pgpool` object so that the `KubeDB` Provisioner operator can resume its usual operations. + +In the next doc, we are going to show a step-by-step guide on updating of a Pgpool using updateVersion operation. \ No newline at end of file diff --git a/docs/guides/pgpool/update-version/update_version.md b/docs/guides/pgpool/update-version/update_version.md new file mode 100644 index 0000000000..7466e0d713 --- /dev/null +++ b/docs/guides/pgpool/update-version/update_version.md @@ -0,0 +1,246 @@ +--- +title: Updating Pgpool +menu: + docs_{{ .version }}: + identifier: pp-updating-pgpool + name: updatingPgpool + parent: pp-updating + weight: 20 +menu_name: docs_{{ .version }} +section_menu_id: guides +--- + +> New to KubeDB? Please start [here](/docs/README.md). + +# update version of Pgpool + +This guide will show you how to use `KubeDB` Ops-manager operator to update the version of `Pgpool`. + +## Before You Begin + +- At first, you need to have a Kubernetes cluster, and the `kubectl` command-line tool must be configured to communicate with your cluster. If you do not already have a cluster, you can create one by using [kind](https://kind.sigs.k8s.io/docs/user/quick-start/). + +- Install `KubeDB` Provisioner and Ops-manager operator in your cluster following the steps [here](/docs/setup/README.md). + +- You should be familiar with the following `KubeDB` concepts: + - [Pgpool](/docs/guides/pgpool/concepts/pgpool.md) + - [PgpoolOpsRequest](/docs/guides/pgpool/concepts/opsrequest.md) + - [Updating Overview](/docs/guides/pgpool/update-version/overview.md) + +To keep everything isolated, we are going to use a separate namespace called `demo` throughout this tutorial. + +```bash +$ kubectl create ns demo +namespace/demo created +``` + +> **Note:** YAML files used in this tutorial are stored in [docs/examples/pgpool](/docs/examples/pgpool) directory of [kubedb/docs](https://github.com/kube/docs) repository. + +### Prepare Postgres +Prepare a KubeDB Postgres cluster using this [tutorial](/docs/guides/postgres/clustering/streaming_replication.md), or you can use any externally managed postgres but in that case you need to create an [appbinding](/docs/guides/pgpool/concepts/appbinding.md) yourself. In this tutorial we will use 3 node Postgres cluster named `ha-postgres`. + +### Prepare Pgpool + +Now, we are going to deploy a `Pgpool` =with version `4.4.5`. + +### Deploy Pgpool: + +In this section, we are going to deploy a Pgpool. Then, in the next section we will update the version using `PgpoolOpsRequest` CRD. Below is the YAML of the `Pgpool` CR that we are going to create, + +```yaml +apiVersion: kubedb.com/v1alpha2 +kind: Pgpool +metadata: + name: pp-update + namespace: demo +spec: + version: "4.4.5" + replicas: 1 + postgresRef: + name: ha-postgres + namespace: demo + deletionPolicy: WipeOut +``` + +Let's create the `Pgpool` CR we have shown above, + +```bash +$ kubectl create -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/pgpool/update-version/pp-update.yaml +pgpool.kubedb.com/pp-update created +``` + +Now, wait until `pp-update` created has status `Ready`. i.e, + +```bash +$ kubectl get pp -n demo + NAME TYPE VERSION STATUS AGE + pp-update kubedb.com/v1alpha2 4.4.5 Ready 26s +``` + +We are now ready to apply the `PgpoolOpsRequest` CR to update this Pgpool. + +### update Pgpool Version + +Here, we are going to update `Pgpool` from `4.4.5` to `4.5.0`. + +#### Create PgpoolOpsRequest: + +In order to update the Pgpool, we have to create a `PgpoolOpsRequest` CR with your desired version that is supported by `KubeDB`. Below is the YAML of the `PgpoolOpsRequest` CR that we are going to create, + +```yaml +apiVersion: ops.kubedb.com/v1alpha1 +kind: PgpoolOpsRequest +metadata: + name: pgpool-version-update + namespace: demo +spec: + type: UpdateVersion + databaseRef: + name: pp-update + updateVersion: + targetVersion: 4.5.0 +``` + +Here, + +- `spec.databaseRef.name` specifies that we are performing operation on `pp-update` Pgpool. +- `spec.type` specifies that we are going to perform `UpdateVersion` on our Pgpool. +- `spec.updateVersion.targetVersion` specifies the expected version of the Pgpool `4.5.0`. + + +Let's create the `PgpoolOpsRequest` CR we have shown above, + +```bash +$ kubectl apply -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/pgpool/update-version/ppops-update.yaml +pgpoolopsrequest.ops.kubedb.com/pgpool-version-update created +``` + +#### Verify Pgpool version updated successfully : + +If everything goes well, `KubeDB` Ops-manager operator will update the image of `Pgpool` object and related `PetSets` and `Pods`. + +Let's wait for `PgpoolOpsRequest` to be `Successful`. Run the following command to watch `PgpoolOpsRequest` CR, + +```bash +$ watch kubectl get pgpoolopsrequest -n demo +Every 2.0s: kubectl get pgpoolopsrequest -n demo +NAME TYPE STATUS AGE +pgpool-version-update UpdateVersion Successful 93s +``` + +We can see from the above output that the `PgpoolOpsRequest` has succeeded. If we describe the `PgpoolOpsRequest` we will get an overview of the steps that were followed to update the Pgpool. + +```bash +$ kubectl describe pgpoolopsrequest -n demo pgpool-version-update +Name: pgpool-version-update +Namespace: demo +Labels: +Annotations: +API Version: ops.kubedb.com/v1alpha1 +Kind: PgpoolOpsRequest +Metadata: + Creation Timestamp: 2024-07-17T06:31:58Z + Generation: 1 + Resource Version: 51165 + UID: 1409aec6-3a25-4b2b-90fe-02e5d8b1e8c1 +Spec: + Apply: IfReady + Database Ref: + Name: pp-update + Type: UpdateVersion + Update Version: + Target Version: 4.5.0 +Status: + Conditions: + Last Transition Time: 2024-07-17T06:31:58Z + Message: Pgpool ops-request has started to update version + Observed Generation: 1 + Reason: UpdateVersion + Status: True + Type: UpdateVersion + Last Transition Time: 2024-07-17T06:32:01Z + Message: Successfully paused database + Observed Generation: 1 + Reason: DatabasePauseSucceeded + Status: True + Type: DatabasePauseSucceeded + Last Transition Time: 2024-07-17T06:32:07Z + Message: successfully reconciled the Pgpool with updated version + Observed Generation: 1 + Reason: UpdatePetSets + Status: True + Type: UpdatePetSets + Last Transition Time: 2024-07-17T06:32:52Z + Message: Successfully Restarted Pgpool pods + Observed Generation: 1 + Reason: RestartPods + Status: True + Type: RestartPods + Last Transition Time: 2024-07-17T06:32:12Z + Message: get pod; ConditionStatus:True; PodName:pp-update-0 + Observed Generation: 1 + Status: True + Type: GetPod--pp-update-0 + Last Transition Time: 2024-07-17T06:32:12Z + Message: evict pod; ConditionStatus:True; PodName:pp-update-0 + Observed Generation: 1 + Status: True + Type: EvictPod--pp-update-0 + Last Transition Time: 2024-07-17T06:32:47Z + Message: check pod running; ConditionStatus:True; PodName:pp-update-0 + Observed Generation: 1 + Status: True + Type: CheckPodRunning--pp-update-0 + Last Transition Time: 2024-07-17T06:32:52Z + Message: Successfully updated Pgpool + Observed Generation: 1 + Reason: UpdateDatabase + Status: True + Type: UpdateDatabase + Last Transition Time: 2024-07-17T06:32:52Z + Message: Successfully updated Pgpool version + Observed Generation: 1 + Reason: Successful + Status: True + Type: Successful + Observed Generation: 1 + Phase: Successful +Events: + Type Reason Age From Message + ---- ------ ---- ---- ------- + Normal Starting 2m55s KubeDB Ops-manager Operator Start processing for PgpoolOpsRequest: demo/pgpool-version-update + Normal Starting 2m55s KubeDB Ops-manager Operator Pausing Pgpool databse: demo/pp-update + Normal Successful 2m55s KubeDB Ops-manager Operator Successfully paused Pgpool database: demo/pp-update for PgpoolOpsRequest: pgpool-version-update + Normal UpdatePetSets 2m46s KubeDB Ops-manager Operator successfully reconciled the Pgpool with updated version + Normal get pod; ConditionStatus:True; PodName:pp-update-0 2m41s KubeDB Ops-manager Operator get pod; ConditionStatus:True; PodName:pp-update-0 + Normal evict pod; ConditionStatus:True; PodName:pp-update-0 2m41s KubeDB Ops-manager Operator evict pod; ConditionStatus:True; PodName:pp-update-0 + Normal check pod running; ConditionStatus:False; PodName:pp-update-0 2m36s KubeDB Ops-manager Operator check pod running; ConditionStatus:False; PodName:pp-update-0 + Normal check pod running; ConditionStatus:True; PodName:pp-update-0 2m6s KubeDB Ops-manager Operator check pod running; ConditionStatus:True; PodName:pp-update-0 + Normal RestartPods 2m1s KubeDB Ops-manager Operator Successfully Restarted Pgpool pods + Normal Starting 2m1s KubeDB Ops-manager Operator Resuming Pgpool database: demo/pp-update + Normal Successful 2m1s KubeDB Ops-manager Operator Successfully resumed Pgpool database: demo/pp-update for PgpoolOpsRequest: pgpool-version-update +``` + +Now, we are going to verify whether the `Pgpool` and the related `PetSets` their `Pods` have the new version image. Let's check, + +```bash +$ kubectl get pp -n demo pp-update -o=jsonpath='{.spec.version}{"\n"}' +4.5.0 + +$ kubectl get petset -n demo pp-update -o=jsonpath='{.spec.template.spec.containers[0].image}{"\n"}' +mongo:4.0.5 + +$ kubectl get pods -n demo mg-standalone-0 -o=jsonpath='{.spec.containers[0].image}{"\n"}' +ghcr.io/appscode-images/pgpool2:4.5.0@sha256:2697fcad9e11bdc704f6ae0fba85c4451c6b0243140aaaa33e719c3af548bda1 +``` + +You can see from above, our `Pgpool` has been updated with the new version. So, the update process is successfully completed. + +## Cleaning Up + +To clean up the Kubernetes resources created by this tutorial, run: + +```bash +kubectl delete pp -n demo pp-update +kubectl delete pgpoolopsrequest -n demo pgpool-version-update +``` \ No newline at end of file diff --git a/docs/images/day-2-operation/pgpool/compute-process.png b/docs/images/day-2-operation/pgpool/compute-process.png new file mode 100644 index 0000000000000000000000000000000000000000..27fb1ba6bc9ad630bb4ebb832e213bb6aeecf285 GIT binary patch literal 77242 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 oRJO*st)ey=tyrHnG9noAv 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
QUS?-2b+hMmK39qaz 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%0DimS;YEC2U278)$D24`n#(OiH)tp4A8nZz ze@IM1z`xoToRJ8b3s%pM_1WHD%Kb&TYL7Fkv-f_B@x7)d*1%Q&4-T)3HH4kaj0`wi zx(pv=@67)5j!anwN@YXTm243dI6*>H-Xa8Cra+ED6CaHUWX_or4HAK~X zqS_Ei`F%}*6Vj|Q&b#j6N4t=dZdkfIsMjm?>T-PqdcHLN;bU@3Q>ffV*n+i{TRrFU zXYYOCro9y4j>cu?^A46ea~*nviwp*Km!=Vl zRHk+<+TLIiSwWi{-mFox6Xu##S+3x-$Mj=H8xCVaolor!Rxh`m93oZa>Dm)%1?(}t zi6D5Dkfyuv|GTVPDY*%50c#6X_bSj80uwKxA)zmpS9}hf`7P#RL5Uu#>&j?f zVwAv%Qo@W|pLpv*e-=Ka5PX-T-|Yd1F2~HuN}Bxb(NzC#jIlYq5H!+^70(T%f*DH^ z%64iXzZPl5MTY;o%9g>zg~X;a>10UmxSSs12hT0**GPz@V8DcTMEaRO5sx{CJ!`H} zYwdKx`BtRj$Np0JUoT%%>8Fp(X9rhEp=8Ngt`g)saQwT_l#?)tho2LN>mmkCt`PuB z21Y4mdtJh<0w$JiYmJjCsA{|PO+sqHCu9)>dkXiqe-ax>4Dm|CC$OS8z#m&5WKx-D zQ2c;TkmP^9^ZSjVF+CYGuZsatUnFSALcIvu`+@M7YBXR08$s0?;lCcYhJ*0Rg{(>b z-}FRD*tDH>a_oMV`#9&frTw_rOGTQr!z#Y8)ST7`M($bUERUM%i9d0=`XDuu~fi5_xHlp5YXYgVjpUF z%g$SQ+H)i{Fitf^E0jKUDb=sywOs;MHfi)X-oy2D!H@n94UYh(H&T6HC$%^@O0}fd z*jIk8$qA9(Ec^D5Ul>`m5YZ`YWwjZd(g~?o%y8?#+Iz>!86IJvsnaQpIETn=*E2=7 zkR3TIOTV5UWS6I*`x`zR_b4sRyKPQj*t<6jMvpaZZZ@ z?lCD7V)&o$cnVfECAXb{;B$qHRphxmakTLFvc1B@0W2vleMhoVrUlaLT<+AH_?JiD z9MiK~qHbbrcw74q4;%1Mv9(rLN7VuNf6*s^%P#}xn$faC|X2yFQUFd;<&Z>T+>4=rEv| z7(c@FZ9AqAa1{3s#dYsA;hRo;+i{$WRpp4{kd4l+^vGN){PO?*Es}xYkvZBUO%Gaz z1;nBsF~cE(Vbz4so14$M?6l}XspMqA7t&?8$@aXDbdTLD7uMfxlO2+1!O@&8)Z9|? zdBjWp3U6i~%*`MTW|h&YsZI1&fFPi_dFopM^Xr`Djp90?RkP+@JKf7HT(>{{f;?cY zmP|_Su-r60OJ27_4&Y9>yHC_JApBCoUAt-i;m!HlY3iNiQWNUy-PS(;_=S!jbAwckXQFDE}e}lu}IXGnlOI@n|R;nS){XjS|g#H z#e)871Rkxld@P|MvJ~?)>$oEQ_}*@Brl?%X%v81f(Kn@5&k$Pel6)h@kzlSiC9X(T zV{TO$Jy7(|de2S!NOVE+mBNz!dP@9be60f9xx?cz zrBj%xApGeRTj^ZhBg21Wn`~pMYOJCGq)35uta|s%M-DafhkTox#@7ySh@MMl6Lyr} zu{f?(Kn{+SS!;-D)!)ar3kE`__RO4|`ZN>#`*lQfxTx0XjgK-C{Ht-gWSM6E=le*6 zz>l7OjQ75eWAS`WRWex6xhiz1PqnCO}Sbyi# ztAM~$#9D7G{@&QL_2=C>udzCP_H<0FqB(Y}QWTS)cdcC#697`83Xm6pl`KEFMTJgF zlN>xpPVE(DBfI8b#8%8eD5?pbEUgG9Ayl*CKd-?m24Q#v!;u$u<3yoUON$R=BG~(x z7-=cFz}JBFf>u|fck-#@RN1mgNkgw+32*aEhf>02J2SS}Sl1ie$CWr3|4ll=`Ky0i zHV?1YhrOMu5=l#I)?R>&sBqY6-WMcB>l?p&ocSI7RlZ`28~h1N4to!sOlPy9SF@c+ zf0_?#U$s7ghG*l*gX5WtAPs**vcTmRNV{`PVZ}Ww*8VhMU|03_qyC0zpET>eH1V*Tn2w*ngx)Yv zK6mFpak`EE@Qc=A6Yb22_u_Qc^y>GfLbegUAoa$ZA&>R@O!=?xX02YW_Fe`rbPR+V z3#Zzql`vn*+Esx?U?V_y6w>-9Mm9qZadoW`!I?(}4qw4v^$2+aT3^Cfg8Boy_AS-0 z)!(iVqKhFLj<8H3bw$|HGc@1R+U(Xo-^9GqGAI*v4d3PWRTEu}`1Y=|_Z|P8r~*!CqG#BrHcHnwt5HCA#LARC;U*OJXteuqPxsp^to&H6YTS+EAYL`n2xTXbYSHrpAGpgg~EJNW81IXd%^o|cU zah&uCGJx=zutRoraeaXF<<_nkFWKM*d7(}*p74*a&6yr<<b7GwNaK=I>$4rK$pTNrV-W&f+N@rXfScI+#>@1KnHGuAQPd6X}l9Ir%2RN2md zq+s~Q+bz@y@Gg6=JZ$v(teO=l&ZXQg`y&an=G6FAbhu^#jqiU_w(!=+ zP3xjFk!1<9y2k!eRAi_RQ35-eb%X;tbmJ2qSFB7@6u*4naivPMB)%Rr&dMwIsMHW8 z#!0cC*ntyzqy{fS`#JHc2o=ze7R?1fV&0X!~j=nDFEb z!+ScGVkJbo2>h9Y!AK`@=Gzk3HXtNp;+d@>B!=k9Gtf7%MU?o^?56)aMfgC2HQ$I6bbf=qysH&-aJpAt3iSvMHZ7hl<9=5u5rND}LqJl};+QFchKy z;mNAyDM=xqD4?Q2)DV2}Z&V&t_gTZf^ZE1P21e5?Y+$JL+cblU0t7SZQ|digKm02w z{`FKhl3a+C8aLrn+C3NR5@J6~DWOb9YPyhnCAU|Jt8zWxMuNA+yoxymW~0D*AbWO+ zT2PLmNg&;8b$)*x)3pWvogC$r4XIzb%XR>XT4KB%tvqzVHL)Lgy`lv`l*H5f4*6H#-T-(+C zrPx z->$@;qL)W~`L;-El^Pz(pd1=7(bdye%Kq_`ku;hz5#3hvGIOuX*HSh;m7?<*vUPM0NXqm}F-{ zQKaYh{)hAYmmX}55mjyCM>`c?w@8Vx@)eq!EfqY}J2^!~)hLx`BfSqqSwsV3=UEn) z6d?vtk)I!0(rOOHSCQLg_hZy7oR$9hXa7|CI$6GXc{2!O$`6#u+5PqSyN1PPZ3_oA;DK;2Mc}#-~I2iM$khAqY%}UV1898dWGrSW1y- zfoLWFswaN3sIs?D+Uzxabb3Aj+*^NAjo0uJ5urjXMx5`YLNHhkJ%4>3IB+9kJB`D5 z9F0+x4t`h}C-93!i*Ir=v!AgDb{c^?&g?&R&W4X)hcKP3Y4VRxNZ{^G>1D;gHmZ`T zWK$!`{dgqq3e!VAJLH}`LAaYV__8I_N0TO&45#)V5qWUP)vU(pzl?tNa9+66PSl$@ zWJvst9kPn=h{U*~4pWQS4IEHw+eS}SLZ~2jHnFl|UZ?jUYu*B}@D} zB0Uh<01sR)cSoSte7!rMs8H^`sgW#kxJp>=+B@fLO2wD7I-E0&Bb$7>)zA#I4kwQJ zH^3A4lZ7zgDvY4-X;>#S@uf8b?||Nqkno>iz;Or^7WjH!slrZnmDCy@3wW*6E`1kY z0F{r0VZ`YDCmN49wC0E2S5;EeJ6wK|B)Dh8>h?(Kb1KyUP8>mlO7Teu`MG zUc&0W`)rP#cy-are+&50Yo6~}f+i%Tb4k`qzMLRf0J0Yz4{tZdxN=q%HhhNW_qEHN zs?B0yFsPy@KRiODTuw~Wg&@{XgNqURqEec7H)cDwSW)hTi3%&@bE(^O3YJ6=qA&Sc z&@{~Er^<1_-o#3ZUu-+V$MOMrIV*9>_A@hQ&3_LIIGT^_i-OZB?6Lot%`?W}L07PQ|s^ifBaNRF8REdGa^PUa3wQ2Budf*R8=$!1>6 z-77AvbA}nK$!u;IDsbh;*5ZaakT~-C`nh__w|eXJ0-Fd?yURi-pD!ubbjSiDM5)4E z)k$}I&tZ;8`5exbvcH{$CUetKqB z<*hV;#C{7wr27e$1fjR$`E4bf8##AR@>Dj<+dyg8oybH3c^hkBNU+y5EJRCa1GR=9 zrz=i^RwwYbXK%nNB>%~FPCDN1Vuct6Evd%zS3Z^D56jb)2lt^y1pOB(M=vOahP$QZ zYrU+6kiA#kdVIjRx_wQ%EK~UA++W|mUbB1NP~goC{|8k4DQI%0udx|ZIY z>Ls4FgWdE+Adu20SXp|Hy3?l=TUWlr)anCi@I|tLmE;*YR(q5FItHyig(=l>P6jIy z7Jg)iND@LGefB8tH0Ym=CoFG&$0gvWfUYcV*xUEkz|6e;z@fRaoM;|-kpx8#KoIga z0%7JBNPGg-#6r{T8Hat1oT0Pn+EAg-Ml^pu#WgZv3ZpPmxm|{UmB(d~K@Usy^%3{dd z%dBd)+RpcK&T=$9N_#_jASSv}P-V=<=@%_Xv=rBGT{*h*@3}5Nb-kYF^zg;-E5oa? zaZm0RUImadTGK8$bi0VF&m=rND!Ds16|0~%DcG2+=N^`W$+53Lp$0cSpT-~65K|-T z#$uwT+e=BE*Fm30KgZ=fOKmc|4X#H?(_B%bZg5;uClbQXJYIYCww!HAeu3-1y%5fP zZPMGy7frwAN1*$P(tE@Be4?}VKL=R}W8Tl=luojrZ%Ai`1ktLve}9zitHj+ctlI9L zPL?1EsvZ5NSU>6xLihtM!8=k?{Q)%~C-C*tB~*fbjV+hxv|ENzL8mJ)e<~7sCnwjL zvkM?pQsf8ZJRg5zh~!$*6gb=NB@CnTO@5L<_O+E!q*{n$#a7V|3tIoGnBLNht63SC z)Ta1T>5P?d>O88O6b_XYyO#e*E6WP}VSyw*`iS>eh;iBmVp~It&_<1M^_mZ@o=52Y z{{@5cYTU#h1>Fuq{0il*!n;t@46^*z(hVaqNql?fYGx_{q^ae= z(I{k(@C}Gws=ML+d>t};NyF-0@4)cl3trv6bxm&Ft!(9^kNIULhVQPy&-W~jU$MUW zO)KB2twoHJ_~zn0>Zh3;6M;zkd5oNTba;R6uhzyi;8u_9xVu61AU+7`C)G$p8=52` z*J0v2&o2ToIloSoyNU)NnDkol{N#mH!XfNuF#LubN3X3A04{4b=!RH{eSdEGnWjXp zu5lQ|FWJt8bSnF|gdOtv8bz)(S%wp0f^FjeUdIm~z-|wcXjh2cSu$}X<*?g}J}rA+ zdCsD^o!=7RorUAJm|#f-IN3L<=$MNWFnONhO>|TEN4ORW28`tgAYGj^cBmj6R?&t= zzW-{Y{j!B-BeQ`-%M~WZwDo@g-slXSGES?5hm{$nFW2|??MW2qT=n(ult%ft5!E=9p=5S za!!^=`BdJtFR$j_lYfgQtQ|NPake7h2^wIq>wrir-gzRg^8K|+W&ll@OX+IA<3(%| zBMffb2;j$F7i+4Ll{ClO&nl4JwhdgdqD|eDMI`LbChn-G zD>vGB^S=4ScZ~imV%Rc373{AW12-~lQBC`$NcPBVY0 z2q}66^#R&E!`BZZ=Uf&Abo`9ZZ%#%-v~*lWel)&=Lkw_XCl(8T zi@%D<1(8Tqvvb>?&&3^m(M0%7&y&_s{(jo->#nT31En#kI25=0mTlW>c*q1haK~f! zObz+ABSGdq?vhz&Mo@I_!|1vzSYFrt{swH==1qo;ja^t#VQtk`p=3OxQ*M}3;c{%d zOgv(0G_zfIsq+UOqK9t4IAcQPWMG;xjx>*~`o53CpMv2l$KSH36k(q<>DW;V0P@KA z1pG;7MS)YgzCQ}Bap*+rw-j4x2u9_UMe2$>UlNr!{S)BP!>&W?x|kq3yfZodYA=8bYoEDb&JPia31uq;ynP_CCdfS(k5W*N1@>w#^O_#w!42|D z71FRok{ES{ZdJ}degsnkilM&AS>^EKYK&B-XBN+)6S9i-KQHSWzfzzIw)HVdvkybN z>)4t5C`M>1oJ9wSdg{bp_x>@FeUUHDxYb8I6lJSSu!$lurb0sp%Y>_@ZY!5)1|A2Bh5Jr#h1(MIg&OGg2n|)dh z`q0xVmpyO#?SM!nj1Q55qH>g8&73O8@?DkKFyc?=wwsNs(hix?_c*0UDJU|lO_k@VISP>-7%%FDr1k+bz z7IX_x4SW?=LEa!$^-uvW<;b-nO}g!@LH**0B4r;7HQg13+3L#Y?)3Z(NWGRk1McG9 zK65mE}0|Ts-zCUxr7@YC1Blb6;z`L#{^@ZBiFi^AuG65F-;8B+mFz9udBqovDzE z*yMZp{&vME{0+IHHDVZhhp@)2fBwb$oG9|niah!J2ONqBMVGalIZi~~-qZaH!E#X# z^26h?$xn4YR{44r8}bAyu@{S;d8&`TP$t{SxYO1q99gy~I7T^9cQsCjFzPK6*kvYU zMUP;vFRF9Rk^ZkBFNV`juTnE2uzlTth}l`G|P1buBGR5-NpurU5Oq5*QnM ztm|jPWa%@i!#kQk-Ik^&^fLdbnS^XOC%mk6%jJ$XGiKfvN*wT-{;i9b1CJCvo!uLh zuv_-Z(c1Ft-&9|LKxe=7sENRL%$-8M9U+?K2-iXuR^A=wQbxf z%(D^m6`i}()XI0<=VDK9;P#iu(@~kMK9?A`4Q+4zB?bGHuMz@gq7l-FsF>N*Q&wh- zQLLpxa4^H0AumlMtIq)Fe`$!H>fE;|J^5peX`um9NLR?kNBriO;Y(~R<_XzzoM<1l=o4m0A(+DObUAehh*&w1)kLp0sWv{4LV)z_~(p@#irqO{~uLv z8P!(TMU57zPzsdd#frN-6ez{LxVw9i;O_3O#oaZyyA(@s_uv+sn?Cow^8HRm#>m-c z?>*O=vM`US1lC3Ikwmt^`)tI^G}|m4rkP7tQ=H&2vL-l)3_vRY5PhpNK{ zuI4J*+dt07`hB*0i~0P_?2|zBPFNtm&qie7UjqsReRz+?|@;Q4vUHMZ4x7#fI{VDCKSHH7GTyG2*| z11NEl!9OxCFcRxs)P>uSJe$B!GUvr0z-GPkbU%h&c-_DQtXTt7VF^7zseWm@*?n8R z2=@xj8m8LF2TSaA@n0ObeLd)hDy;quandBO8u6EN5FC~HPj&(8wg)sJ#8|gs){^)1 z_mR<`kF@AuSo8G+B1Y~G7?Jz^@Q*BJ-=-g7rhUWL&wfQ8w!=nMN-es=J@a~%YL#^E z7ZPO4zk^#^m!t15Rui}LVdVvcL@S{I=VIMqQM4qPA!|}}bJOoz`Y}CC{!+mma^Jed zeA&f5YfUNZ`Hv-vT0YJ`%MbNRlV8i7Lu!iJivjcYyfqWXo;w^g;-E~86~ypk-^7We z!3+Eh!UKaK7}n42n3Y_;Kd)K{AZ^rctSiQx8#zcHKk8TFffi-Yd+3{_yLsg%c1OO~ zBmn!&!atTij{efgj+vv@bGNQ$iHNE{-WJiS&no8`VzfR$t4bak$X*7jmEn;coLBCCTJ7O4F& zV8kePLdh%yTrIuEw>k~$Jn8v7T~LVyQA|TZfk=3JCpst)839$L5W+{ft*$G8s*>^Z zx< z($AN*gTF8ABJTwxecFk;SJ9g8wtcvmk!j8UAL53`yzP9rDPpFN`Zx}a0D0GefgO^- z%$2I=IDuV3wj4Ye8N$ntoX){={-`DYu^&GEt-*A0-Dj!#WC5fua}@S8jbB6J`o@CZ zmgWtgKb?m4{Q9yAUdPEDoBcB(Bdk5A{^{EYMRr78H?3ApbfizrN3xLzOIvvdy(QZI z%DHd07MSqC*F{QP?&N z{Th>E+DD-zFE0Mg)(E=+Kj9C7c;`10P)!wWL=NNAxjtgQ!@heyw*7R%#j(*7lYXx~ z&m0$YMb;}^gxKMPVIzmnrtV`xHk%1b69F+AqlaOMBEroBfus{<{ah71q~t5C;EOHI z9n@0_L;9|ny`Ials%-U-i|d%1AgMvrj3EC-Wnc;?Nffgp!UMB-!VF^*8jcw&z?co$UFXwZP!?uE$eV*{ID+ zOis8$t{qj25cMRo`1iz0Q9D<57A`_1Gjchhy0~_OUcg^)c0-^g1}@kR5nfp%PtQvx z4$zq@<@*QS{K6>0SM%B+yN&0a_tb|$(Ib=$(=3X{fh(Qx{vSq8IV^@TcYo!QZZ2*Q z!r=0OFO{To(LXB*da4u5%GenF`Jj2jt(x#}jhM^24)3?4JHS^TLQ(S}=;1@Vzt-I} zPdz{8@SV0p_a_&>Dm3WizJo)EdWH=OAE&RC?%~Z(r@a}LkQ8$WM-ArHQXjFWFn65z zbJ|82v}H(Df;95-arirYoMnRTJQ>+SM5pN)PYqiiH%zs=2=@ntR|NGc(8WA>;sznD zRSXIbQc+Wr?*4Brt*os6pS7f`a|%Ax+mC-~&Ph(raU(^A-tRJck@+i>zS;42lYo zwdb&bz-2`m^Z4iK2fBfX-@k+K$@T}yu6Mn!JA=qi^Gzr;LQ#nffH7oHRx)5`l;j)7 z|8+|6&y03#`8PS4$6LICHLuxwk9;xv@XRjtH<8S&V`Bkr#p$hyZBt(*j^c0n2Zpv< z|A%g?5_D98R-PaKum$s8jo>2^&*gDI!o!hc)3p9RRHGM1{~VehV~G37TWgW=NN7Hr zZK1b=d;EM!qFG;6mMFNll{}=#%zX zsG(&8l=Z@Cs!65i4~gdQ8m~fvWENs&Kr@)Cx+De38J*K%Vus&TVPpcegtcNA(yp$( z&kDpMr}ZlN^~y1k)D&~Qhd|6hV1OJ~cA;a6Y?YLZ*`Ue#YrO=X%r5Vh-p3Z7zl&n zB+28U;aS0EBbS2mK^mrvcmX0i4m>L_oY-(|eSgS>5L9@6p&m+_Dc?^-g}_dyu-d0c zQXV*ml^0QFY~_}TSCkDdU;bERIrO~_p4O0!+)fActn-4%aFoUH@L<#HiM6J zKv$h(MRGazNA3xiNH8^P4iOq7Qe+i<%FEG^o!`L;G#lFllh0wYuH#F@Er{uoVYJAFI zci>$sn%7Eqvx56e9`F?AH5s>2p3f8>5Z(4J(9JS=+Brk2B2>aJZZRS=D%{oPSIqfd zRaGX&bJB)sZ-i;8?lQ>zlAyhwH0V6W6n~+1%9$-&a^$8sctkwZVn$UI8AH{Ya7;Ss+ys`}nNOT;H)_d|;EH4oAPZHTe`F(HwlGxV8Q||U>K|nQ0fM15j3#RTbR8F~x-iJA zQk-vf1cZ_FbU{>}@T75;%s*>*1<2?%&L*h1;qb)E6!b>Sf&gcms{`l&?D?~({@-Y} z?J=%o#tGkMtsL><13C`f-Ls99htCY7hv({Azk+nyoMquDU>La2wC1#DX79|0RZku> zvnGons|S|C=gSRW`GP&qTCsgJoD)_T3~2HviTrEh8=u1}4VTKSkTZhy^$s|)!KvF9 zP|Nu)43i?NP=CU%(4;7aK|Mv%EE*{RO*6BoL5|Vfr2-oEzst~Sk;-y%duwvF#kK5H zRGag5xH|=-vT~k6hJQJ}l6`GmxNTeBn3$IZ4P&)-Sn$)&Ibxc@w3wppJ}xoCQ1JGh zAS}&FaIigq$&jNZPa`72tmPS0A!M|reD}Qi-maq_SIyz3M9|sa$_Q(KHWbE#XtJUQUC5z&*^#%E;O|R<61^lly%R=e7ULj5~Vl!OKYoM?Oc$NQ|_O51D79d3AFJay>}*WSYBFyjy{JQB;H-BdTc!L;7|Og zMk`l?9oWOSjwY)dnOz?DFoEws7m}X3PZOn<_KG*h(I0Z=Q*@?JP_)2xW~P<|4mzy0 z51M9?MPx{q3G2t~Xj!0t2jMmUqQMp0CWeRmt`fIB4PuV|qbLhC%rDy3 z3J#P8B0$>#6M$tlG2XP^KtcqbgHC0O$4AA>?n0ZB^>ysA^UR_L>Q@9D48E|x*U#dO zB_G;o!ird`NP-u92cd_tnWZo{61Y`59Hr%Rj&J?p@-Js*V!%Zh_f-Iq+3k~WYan9c zF4iCSF;!cS?{YiDgFF+OnR>ZmNYK<{wX8b0!ndN@t0Ky$D^atLXnz=4;vPLdC-FH? z-%24z{7Q)TN7nYB(AKH*IZ1C^F*3r}nz0Zp=wkD5uz1C3xgAB_owe85So#K#TnFe? zZ#>FrN2lLtX3~F`S*~2FO}LdDw0{_SE?FteKZ&cIw_cEV%=Ic)+gdr|;O^n?>?TyY z*<;{N(vyIw?i~vSy@)S~-S>RYTuqi7lD{pNeZdCkc}>K)-KUh?+w#lJaJF(^Y-*=|i4|UL>6t|pQubAxr_Btybl3FSo zU630Rc_`6nCIaYrOAaYOchyRsoe8~Uj?QK0x4Jfrx5Z?tqkkqwnDIs0i-&umyEla zgK&thpi7ZO>ru!bpdpye9MCGSdW;DZ<(SwD{JKUHaR9yraA1*t`~AoM!7BU^2WmP; zJo4j`6-(LP(m0j$tW`o5<)*1e-=vHOHjbUDSEgEaSUx?*c(c`62CDs!Y;}=mQ-^Mt zKlGwpyBqfUBn*hEI#5>dsd^EKPhASA8l{Q;1pQ&NDK^pW$SJ$iVCWYI4(<3D)~!$1 z@0Vze-&)!xR7+d0?!z>#4AM(Su`#6Xo;zioU0M>J2o4rFFx z-`IaznzXa<{NYzu%NrnPMTo43!pT6Cbw{0P@!+s&s1}X`9EBl*?nzbSuY2JkViYXu zR4}C;%nj4SJLI{Q_^ns+oWy5^yD|~PqcJEb;0V%w?Z5bPT3y@8e_*&Y+32x#C+RI% z_loCzv=^pm)Ydnl&;lOqV5SYsd-GQeDayfx`79eZ2OsY|U0%H1+bs{ZaZ0XxlejPdb= zu>@}ti6Ww&Wp*2)?FDDf!W=p~54C?GPsSz5?kDmM71ho-+7Va{>9P&B-s-ZAt9t*^ zCmfkHg$KlirEM7w%_&E*UL3Ys{J88z6p6MUI^X3i>Yghgjjd?BEMc1C*y^oP`Hv#c zKGz`+w1?+7h#H~5JkQP!w@envTmC2Q{=ZL)Pn9FXY|$llePpO8i;j zdw0sI@D)Ge@H@zJHOE`^8g8{M`IH0u^A^YI9=3c5_+Xek*n+P|+qRu)#n}I5SJNNB zM|NjXW1w;U+VDXEUf81v0fGvfVA**11X3qqMt?Mw>2kYk@K|hkTwPrQHR15 zGOGVs0ASV+Azy$Xb`Fc4GF^%-Iu2h^#=8<-r;uJgL_9$9gsfJ;hGg+~>d&c$7=F1l z3Dw(#Nlc7KnrUnuv>O=N2Ka*scTa7-#FE=vN6_ndlm@Rr7;rmW&ZZaijPtv_L2)L# zUOPTt^rxYJW0x+R?5OiWMBz==?ia7Gs-C=P^+}tlgpG)FiZ|4?3THwvVJEZ;W{yd( zrU98Yy>y()s6%(T-0t*mZI7asW2S8m7pa)7P`jd@=B?>_VQu1b53dflE(?;wYo9IH z7t)C_zEPb9xE@}5?eQ9hc*RQQ??ZN z4@gU)T#gnzHXb2ZsOReXH6U!&eLsbz>R!8tTD_9+tgNhVQ0_lMZesA%b8)~f-4yQT zz)p6Jff-hu|JH3STwA)D#@HJs=EpUsiQ9|4816>z` z$WA+f$oM?T%M%Mff){wB=6|;JGuV|J>E1J0; z`I(a`IfaX7sv)D9*fsXDNv078*sY)eGmk2j|0izx=Yr{L&EMT;xnscUC_&Ax#=>b9 zK0$Pz;3WdxQ!QtEFTsenz&bBpW8)(QkogKoJ4)H8NDZpCCv3MgSxTdY#5C}`WRzh! zwKYc@3-qk47d%FdL1AP+cUILJmg%o4**3|H z23a{js{6jPtC5+N?t8BGFhip*fWEv;aHAT3N4pAsg?xd$V0R%lhwQj+MNvqMvDq@w z4c?kyoP)c5bCvt#M4i|K1v~_~`n64;U{xd~1OMPvv~?x@nJ5HfuE9mvS8cYoEEMq~ zfY7O%iZ|GU94UW6r~UbsC3pO5~9H`B-^j9Z|rS0#WP$*@jV5*oq ztdN?=A9w=MixGqmiciq(GvJ9^7Ca=>kxQ)SEN#u7m}ckPmGaGK)X!hy*5MUb19K&{ zxaX;b-Z^pTzqCY`?W<^gH4h`;Y?Fz-EU8-jBlcPHt3ms@(kF!;eE}5MNC&(aqd&xZ z)nh+`DZlg)o2BXL2vvQ6L?@|kUD>EH^PZxLEnbx8tP5?VxM)_e*)H0tS6X!+&dvyA z9?oWR?dtyc8?NO%B;3>$=lb3#Ws#U|k*H(Sy;x?Gqlfo(ex@!wo_+j|__Sl)3Z8w) zIteF#0d)J(qlOU;S^PIwnvWY65@*pu(S#>_U5Go0c^1b;J|mrweQnf9e{^@N(TY0S z@?uv;T2Jev+WpW}dU03$_+@k%oBpa<&RPDfj_jXkZvK75%2{l6oCoiBTghjAi7uQO z%?w(#>mNZ3>h15PyH-ND;1vsM7!SYgc_td&uDJ22ca~l0XN`yk!yE6N22ASP*?gZ) z2dESduTIS~HL0zeD|NIh(n;*a%EH9vGvaU#($;fqG4+m9dM+IQhbajiq%zN8c-J7} zF2w)RH{W7^rDmUmItr)H^%sYvKJmlX?YBX_$lha@ZJcFQlz4t#Fmc!y|G-LKWAnM; z&&FlDqJ#J!&cx}vc3RQG0%3``k}EC_9O^E0$DcZv9nrUwpTno^C%(Kwu1rPD&%Wg! zFy5xDijL;CeVBftEEWGAeAUlnM*`X4krbS~h6Xj>#q7P))uAOsxZtDn=^O3n+73x@ zsl7VT8DE#`&N^X zFR3Z!TvEzKka9dr*$ZLsR)%JDBYlFB@G`r;N z6sA8qm46<|s%ClB5UQp#9kRo~X)b{oWR1%X#jl|1J+19u1WL7Fdog95pkOzS_>9v| ztAQT;5fsJ{2p|WF%IWebvVK}f_ktHKwz@be+Je!Bm2E+Y7~`uT7~K8;Oio$#e0v2Hzt2r-hKXBqOZ(1*Rq`V` z@a3znmgOqb#ZG}~0oGG=-spObIfR3LeKF9DMlDYFH%7?RQ}jaQ`bN&T)u|Z17ZgG5 z?ox;SN-;a-o<62GdbjcF|UCsE$J|sV?5U~c9 zb2XBEDeMxQch8Y@{R2(DT66URkAXgg%a1QsBr~WHj~Mqq;GZ5HaspzyeE+;fg59zH z=PdF+USjceAC%F)l&0KrfYllVvt2{+XG4F}Z$5x_a1GY0+|KWjo1ZPbE7GfR3j=y3;-_aKyR!@RBc zV8NdW?hD6fGZ7a4Nbr!(devC zF`AW)RH-V!nPUp_+&y<^HN?Yy_?Q9|_lw__>(91}Fkcm`HYqa^jL-@r$Zo zR9N>cj_?<}&j}_%=}w#ZVKy$T>WrRhGH8t3Fy->-%xAfxftRUI1xUqRMC$%2E5^S) zyxtODs2bRPrQeUYrgwWr5|}w*^4h$5_%tpp6QIkQ)f59 z(BEX-=Ebyk(mfl(^7@0=2Co*W7l8y0XXj1TQD9M6d+bF?ZjI*Z8f<-PuQiWX6Yctl zR;V7Qt^XoOs`!4j$Dz27x6X7mE?m=-+3dY(u-QL#%Z1V|%ytoaB|SCcP^U|zAze*Z z)YEjTShDU#6c8-(qfb9;?Emzt!b7})^O0Qp<_81U$UR8hj;G-*;oC5~%^Zy`Dgxg# z0X!5FmxyXS+nvczhhwf9md~()bJctl7l-*1oR`2aKp+)G^ezCEHXdDd6B!WYsz<37 zTMoNKsOV~$Z$64K0ZneH=VjZ!cwoKQqb#U+B5#&6k)21lSB!T?8_iGLoj?Wc59Vy> zCt89p>~Ss>q{y6~uG>`bDIdMOF~ZVN;=TE{0PA|)JJsIUkx*<;9FEQ1pp+Wg{ddU) zdVT$O?w)nI=sdw%EzVbH%G&J+C!P4I$#XyaRtE!`FJ5@zAq7U+^{2GAg!YpUfbSIv z`DcQb?=wmQ!AGn__l5EA za}o{jvN@clDZ;d3wI)V-id}YVm??<1 zcm^DFv66Vvu=q`%y#F6wtJE6Vukz%26zuL%L18O1%` zFY|EeNT6d0onp#V{m!n5e<2GhfWz<|(LoqneJs^UtiPJI{@T6c200jLm?|jb)^JmR zC4^Wa*R+)iOX%TY8qMYPe}cLHk7pV;BvjRiXEmMpS2o!w;M|2?CoY{K^ake(&3+7)*a8SP{-=c-f2n2BNr&fB zW7cZ?%fW~3eQ?MkRl-ZUfdm~$9Ki-^kPG=`o2!h>WL$YS?-vc61a~~6?J;!kufOO<^Vkuw`2p5{>&Cjj6(r~q9eU)4_WT&s1>fEtJnL9FEiu-aVl&^BHk+_`&`I0@o>twTs5)-CjCNUuk47lpmt zJ~X=!c}7}oOFraghhP;I;N0pH0+247D!YH0eAazlr@Av2av>g9*RsyHg~FU0&=`q9 zwb^TMyOG(zfXz&pBMv!O@8qKCO!{C>%@BTYxXFkEun=p&Y)2)x42TpPL$AT+(0i}q zPXyy{izpQwiiY&8En~!F9 zc4Wm5*flN|($ci97Nw)Mnxl1KPR_Zquj$^&?f;890o$&9@o4}iu4%Q0=}MrvKF^}+ z$t)+5byqRsdB==y{Oh$G!gJ)i?|UMmUid$feRLH#iHJ3ESB}6Cox}UXR4T5dBM>j_ zWgff~n`Ia}v_tEFr7jMxcr5*xd*n{!I#JEyv9jg3(DM4u#psSsK)TI;gNbQlRyGA4 zSOtg7sXM5A`pV>@JrI_@em=3L$07#k8#UUt{dUwgmIb>?_O*^Ss>`+qwXHZzStr{s zm(^3218Y=pF4oT&H}h{&4qS!jaW3pfDGuaUdZV{Y$M5!VMpBC_Tf$G?TecZb@P>ik z=7NPC+CR(2^DR*0EKpV~bK*07zd+QjNm%J=m_p9k%iU6k*99a92~hU5qh{+Y`vEA1 zq_`sTk-kszGe2%{IriWmo2K8hxjUlIx>ucTW~8XHj!2O5{WV;0k&5R z<58ULdhpt@wW3n?wLFw%P}cOk(1VKYU?`J|A(f8^xT#-;vy4?R_aI(uvYRVj(Z3Qi_qH|%)yT!T zy~aA`lwr$euee8*@k28+I7t~CgXm44vO}e>X>3jT- z$nSWsU@43D!Cf2f?3a)#7^XGt7><(MjEc=lZWKIafO`la(Pyx8#WT&OFR) zXG^`m(YRxbjZSfu>UAptsMRvOzMBEU#!YRq%BHip$6?OhGjv1;Mj~@N^a2%pZTtZR zFIy>pAtZS2&txBv=QRroE#p4##&org{Dm?^QG8?synBduH!?LE&}68KvRXe(>5yt3 zd)-$VSC4%&!OPH4j={`y_jajjSrNe?fCP^E+2#SdIF- zj8{QUMK3KaEdY)kVScL5oqe9np4K0f)8?Z^(^f0@ZNDLGK9{iklr8cF(@Bxz6D%#? zFO>%t_rAYEDMFcG?!WKt2%&mn?;UTDfo5o2^whY&5>7Ong&nwVMF z-2iJ{c@d;)qA~OS}j)<{-crAjs2W2kYV{iX+XYZ6%1*5-3+77 z*tN{7gq9W+j+7Ggg`BoSkA93bfwgmTJSC5oK9{r}7JcaJVjIq%lF9Ej8#)}SiyS6} z1+=9fRa7fIM<#8}z*z<^bs5Zj38B+rA_)@gVZt(bJEp(#Nd~FI!%=9Pa6a2DbQIw;|1We zgQ%;S1Y)#lqBY-gQ5oZ!XgXB4ex-+$EV}a0_c2?BU!Ns?mE>}(qB&Bv<|mKN88;9M z?807BgRD$dQX?45Jg>CA>sxq|Em?}n9}Wy;A^C7b7`VZ7BQa6!2&`jzw z*6XyQ@#P2BPkPG!?HEydQt5z$FP$7~Le;6_@<}mUr+qCQ-gvI`U2o7O_b+aZFRmC8 zr`{Yh-~dLa)JDbYrEB+6NHd!nCOU3#p~z#rH|g~=h~d zP;$kZyjd?&zv zGh7K|oHOvV_pQDtTis&j2|SyuWs!*`Hm0 zV}JHhOYyTOyC!1s9I$3S8@cbzzFgyFjxb%4i%OR>nwb9`{0_Q0XkM&Ue)X#oi$JPU zShHb4T@~lE>FQ8SIk7%uIz(ckGlJ)^xyBGm*l)5T7JLs|a-UGNJ>JBrh>j2%t0ZW( zQ7ToCN!EjmMkYx$i!Mr-=)j4`R?Ea{=UI1ShBNq8_q&pHUt0O6ZH>6ju0poM)25kM zN&^jX5kgzxWV`{eTQkk2oRtd!01KcHwmfj5^!uC3&o`bsq;zk30s_!WuKdKxg(dP9 z-SoIDhQK91?wn`3T_iLg*C8hr=sm0KmtHqAC|>7e=zjq-q|}lGy!sQYKLsf&(Yt@ixI*3-8p@saqATws86DDD}2emR|fad-?AB3$H*FUC(Go zvwh()y6x&SR##?A1ab0ucegsesdb%^5J*^5gQ^2$hU9F$p!E6zm|1krsE=TAJCTjl zu*c6&;UYXty(o1iKcSC%{l1mscToZR$1%$;gs#s@0qv8isWq|$7;*SU|CUmYw_HwB zL?UQ)MWt?vK#?@_%+ljAdk9vku+t?) zrRFPh!Td^w+}AAGAAcj}@nwfIq|7%V#GxCT=*$Ji-P--PlUgN>6?~qTq}XP<;tO?B zpLCq6HSXOlC`=2IjO2CWwr)V_RU27pF6XLFg_*juwwn_p;ETb2L(jGy-gxLruNty6 zv!l}6a4BMg5a5^c+qK}rI}&Gtt_b;U%hA^NRp640F8QtiBsyswVtHB=C0X#fLOVi7 zk)W-@TGn&T(Ud|kMzNbkB~^$?mb<5&L;@JEqcePHTh9k$NMvVF9X4t!q?`t#z7W^E z;8oCl!!Kw!=x)E#x>F~Iu!_4m&KrVJ#VI# z8T=~?q_L4UF)YFI&C~odyzXr&!&&RQA3g;-@^1@J^9JiqchY{+kF-a72Zw}{LL}Yz zZqZ2j1JA7H8YWygWf_xi^idXp2s0oECwYT7ZSotNyPJ$5a> zEL_YIrRf-yPT$Y1reuMdiLHBh*IvGq9|U>=Vq`i7(}DQpJf%h ztr5fVH~e)%6S9nR&AjH3-qnGR)F4!1P<&L<(lFz3A%fg$4{Y3dgu|Bu-RznWf+q?u zgTHW8dyF~|(bY2=Y*c({=Q;eimZ`oYW!}s2l*2Z=cs;LBjMYEsw`|+|OwdRO&E!<80=AJ#X*-Sv> zZ$*eK5u3FFMU$~!5Aa>5oP0*RO;{+A;McysV54ghg!uYP%%KMM`{e|KRGX5VmU{`A z#ZOAvmv?59gPX30E??VOX_a`C6x2b$uJS_Xr{(wVZj~&K_iVP>q9TO;uu}sV6f;Os zTSFG(GVbv975iBGyALmm20?RHp7MPp$G%D7yje*HZfGdIOH08VoR!oEC(XmF8B%5t zDbWvIDOr;&Whom$*!?@GHBSLT5M3)9Z3_;;ORvi0i*XB$y?2Sr1jw$b=k480 z-0!1z9m21LH*8IWE?sA92a-5Ou$WolvBs8sEX*&k3#kXh= zb1^FPpFAC1&p*Mnp&#%wnq<3=&TN0vSEPtIk?0(eMj^x(}I2LoZ&z2u8`vwNz7Ocbbjd_i3Ro8(80=ZAU(B+Fb(gUrDYE>e$aSO$XW6 zh_kFFm$0rLZC%Oe(RrrMAHr)YtiZ008qk3`W!O{Gm&xNMB~8+Y9XhtTxpmP&gl_S( zIM#PlF=oT-VB(jSPiRE^*k~47N!Z5pkw5N+e~a`N_pEdeq7sfI<3;;ceci|N4Z}8I z`*bO0Nej6pt|xVn<#~`%!&Xy#H|gOEOpA$ixlqe&xh~gs_3CWd%qw@9xAM$#mF^^H zJRKV5aVNr1)Bds1{}7}jyA}f^PjLpCosm8|QE=|8_3mGABFfPWXw6zm^U`>gT@Li( zFQlKei)TAgu7_u-T~uw_&hLLq0yG}lwZx3z6L&iuk*J=O2YUC((l2-;*U#D+Or^b7 ze~M84A(i9ty#IEhJ!E*^I2nO|l*+nxOWh)P z+Bp4LuXqqu%Q=Le3p>0;&1yM#;GS9Z;B%PT&bY@pH|-yIH|w}1+Kyq8G*yKhNiSAi z%Jo-^Y4xniTOeC2*d$GDrye?~YBJk7cIVks>CQKBJF`AeGvHGD;)`H)yWUe1sQ4*c ziFEzd_8IOF3eM`1Z#EjTe@|KENbQ_K$h|K&4<1xKt6NJZ7X+kg+jjh&@+BBp2|UQ2 z5}Lioid>_dEF)VbW1P}B=SWPit9muut@!4{5d55bw4RUijKG6k6+}G8II@zFm;N@p&BVitHU#; zyElvci-7mz^4k{s`i^GZ6YgkMd}|X1I!eNz(hqS=i#L9+ux|3wJ)(#Mu_ZO6;BlnT zSZ5%_v2axrf~hl0djZ%YtXT6w3ufTDuvh^^$};vfwYLrPyAVI1VBJ+5)n1g3)>7^h z71_i)TUP2hb#Rq`ndQ>1Zmutbfqu}d0}=5Awa64w6!{h@Je8j4f2EIV)$n7jNh)x& z>7n9E&2~p1W$BDt32A~9}JQyuiRrT$E*&Z zjoEGVX>j)20)y@d(I6dSvI1E?(reSIPfHwBBd@WOWgbXkn#S zaNX&Cru3cR^o0Aavi=-HI}Z>uKhi{kb#?IXJ;j~-G@xR|137ssq-NDKaw6nZ|7n!< zQ?^ZC1w-@a=KRe(NFT5{F4ewqZRopO>zlAcSedzVb-b9*x)!513PWLmYOCMI6cU24* ztF&6wFF(NU{*bAy!n(=mJ3__H1J9_|Lky*`P?f^)>eYmVFngb)h%`c3z!qQ{Z{ zouSjQC;6Z#FH=g=X^tAyVX@sfuzhaPZN055#x9jG%3iPC&$i3uB}2WrVl2!JVM@iT zlc|IM>oihWs-O+`gT&Oy)0f~v_U-Ww)DL64Q01#ZDDhg>N65Sb3}4gs{Rc8+HK?+L zn)#uTaB>Xt(YKu?s50~HAjK!;BVgteM94VJ{&M+(G&-* z|3OU6@GvweMB#k7^Wfk}1kkzY2>p#b%9Hka@25m}Zo0z(JosutFB(4*U5%5Ze<8YIyoXwtnV^z^`BIMEa4az`1SJ8$G9;fZ5 zQo&<=Bo)X|i=5h)KEL-g>D1H@@Rnuq=27;rs7xGRA@!^;Xg|8@(z&@$*`AP8yZDFK z#9)oh`Nd`ygLxEOm&IMSqmNYr{ijcDB~DMldU7iREjx<$U)Jwce1g}eT`=*!!;YTi z2rQpqs=+$!z86V^3F2TQMuKHQfOFxhCk~$#IEIQ7>3)7yE z2Mm7QU6s7_rVOi661B- z$Mf&G9e3emsLr-5@5!vc|HfyV8Le?RBLr4J2)(q12|wxl@{96-*s&`luqDG2@N4)A z4_P@7g~Z@&ork?syt#`j)059uSmQfw*!`|p4%?rf!Cw2D6o@ChMx$TAzVv4^YV2I4t&iFsF=3&ufz-a#`KW zSxf4MqB-A^5m+hvGUMmE>5_G^BvP6==7{}!X8&9Eba9KBj=)~me*2m3u%Qyf#&~+r zKx5zgA(&@siI z{uDA45*?0n`~*6=Z&+?f9ffSi?B|E2YT9c@!>A#0S~n|kl&6T&tgy{8v-c?js(G>4 zPUp(DrPz@NxwjJTNhx4LVk%^3%3-ei_LOeZ;>!ckTL%c)xh zG957@nskD8X}HYHCFL>&Vge^{{_@qmpw@R#Vj27$9}8V|Lhz7NF|<$(YIhU$d8Uxj z@zC+6H<_~eBwO-hJ@tWavQy{gkyuT;+GWHhf;04 zm`wzHZ9fkIpD(>C?=w|zMm4`TTu?{gBrfCUWZFXkE)oAB|4a4d@h(JAs=ybW{CSb%1cws@K!xrA@pVT2uDZpL5`vK zF7XSjmcgg-ur=(Dx4I+Uq}^&tG6=ax-Lt7Db5-S8OIPhWI1=2ZEUK&}d39RG0dS1K zFlvGl;~y~jZjSJ%$8-v_mr?1Ho1LID{+P4MMgox2ZAjzd>eb^~*0ZeubJ?*nJZAQ3 z=i4RIjMw@@_b+JOZ0q7a{YW;1tLvenp_m5pweyo|WPL?BFQ*U>tj^sTQ?(l91uuF7 zW`1c<4aA3x7f$2y7YOP;_8~j?-DTQ-+spWRr*8W>8E~3^nz6imoAqT#qyUz~8aiwv zkClU2Py_ikEy$J=CuPMkmnn*Hth% zsO-{U@-njB3fZL?7H}83uwP=`FRNpNeix%}|8>K|m6@$_$TuGjHDdg~sCo;BsG@Ft zSVci4hwhf{mXvOh?x6&v8DKzKqy`X>ZV)7;yFt1^Y7iu(W9V+aGrsq}_xJq)XP$?pGpNv2ne;2F)(^h-~qKe^Fe^KL(jw!6G{Jr?`R2e{!{`cB_m zS&1tc^$*FtMQ~2(&qmf#Hsp^wXPnUg}d&P-gKgcIeOZ#0h#Qb z=fUIq<12g55pFZTCZJGQ3hT0q!d>fAM16oW53IKPeUrs9sLr2iH_6HFG;I@`QyMIAd6&^oX(%(%VU z;=F5o(5W6O^#&kA??Qc#(_0=aY^pn!s4#_f07i)cZU8CyrTrrpDmXE$03Y+P#J9=#T|f8c3c0;*Lk!hb1Or4)7t8o3Ygh zPfUEH=@;pGL10a#U(Err%7YRci*F{*Lj>bLl&@uR{G2#F*%CbSncg%KoY-{gG1Ro* zqIg9B9Xw6*Ly0LaThY7MTr4OHNH)J2A`@}DFA&7x5gC+cr(N$!)Y8*%Y4GUAEYnBDj7gXaP_9kVh3 zH-`S}{5dx-Wpznh;9kb$c+lkE1kFZEX#?A#-Q4`0iMSX`Z~dMxjrf`rL2TI&x#{AX zpB!#p;?y3Kx0(20Sr8Kay^&${)6@Av67Zw#Y5xj&7cxW`a7o9I4)XLb9&Q!Q1Tv6Npch7sn&Lp{tElG zeoFta*Rh?u8&dG{{MUk2UQVaD5E&WDARto|byhGJuLTbfOQ#Ca?%+U*FB-y|UXi&1 zLg)80ElrLVw1eg^5>j*ERZ(W5Vr&TE(c@AyV>|4VS#zNJ{hu|mZ)s;%)~238k`!~! zYd@~~&0JUjqobANR1K@oehS1Bm+jnJFZAHtU%W#sjr)Xj-4<%k^(r_Fk-9^o?myIB z=N<}E$htx5&H6EZ{k3|TwJSux3rYbYyBe$k*}p{lE5*)GO4G*nfIyzqK)aMn>S@i< ztQ3p)Ot*(yJ)n!oQl<7oHi<~ zU%C>wMOvFXi`AW7FG{}*W|1Qh)A&$>xN+Q_9|7Jw_r^O3s*#H;#l}D!Qj`@z#L434 zKF^)00dM6s&u+QDOmx!1^CUn@FHC1ul0?LAf|!BP<>*)o8~tV3ksCGQj0!7^bd%Ay zt~DU&dD_Kw=6ZE(*)tX;(u+4Jyq!okalI-bkr_ZH$lAjV^5pur($!{p<6vA@0Y{ic zj!vBGE$zKY`@r!{~aNZe=9v=JItVL`> zjG`xt$Ro;Ns7bZi&Le9n&I1e>UJ}x2e?a#&itM%EZH`LveMc@%dI@A<<{O58tl>1ni-fH$OV6EVP zE;Sc@QrC~3N`n{I15%HO*O~8F3T5nHQWIU?6DQ@ zSwfESt1!yPKrz1!3i`!u_I$56PFX~ih(bybA|{<{g|w2h@G|X&#jxA;!`Bd%sazTm zV7R00zTf&Pt4I79(_nLnA_-6^-9o)`lg#<`83JQfJx0l9+g{_y8(gZc2@H#t*-B-l z7)o&DRV!$->j~$8maVL@XMgoapO#FK%f@tpHNf}Jb1;DwC?PAs(LVF;SyQ5Vc)OB79-tbR9%M7;UQr}g}Cen#L z6`!LfRyG>@A8473e)fj({8N}QV z(+WlA1GSWAB(9yHwQ}kHow@1I(%r=3PXoXGn?~_qw$t_sw3b7eamW`w1zs3YQ`Dhr z;v3xEEz|P_c&7&^A}3O0t+qc)JT(fj?$Heq!;;_IFRPOxv-Ptc!wAl5K`+6sF}?*s zzKwEJVDX-o+bvJdJa^=m%oRu4!YlHMeF0i?=SM!xAHIzXeLsu-)Hv!ZbgEoGgr0TL z$5!O~wa{P+cXKvL1HLE90L0_SijtEy`-LWL4usqn;(#VixD&e_`CaEkxX3Z4S6+|W_2R8C zr_`e3#xdJWXG70LFinnoU)AUh4|GSXu_Ug_;{ebu)r9Hm)88<>?s# zjgiaG)Qo_sT&-NoR5MM=H!>`pNXRS7tvB6?(IhB;ru87?S?}YC?b`sZ^itp7iTG?; z#zgU2hAZ0hO%eWn9!h6<&lqj78Om!ubouG33;K_Mk@AEi<$3+O5e#%|R@KZ=7RejE z6hp$>;6{Es+{xu9ka?!Qedn#3w&$dHQ9m6uYzl%Mou9Z2b<>6QYa(Ofg+@xiFCrke zIDC@zk+0~6eJdlq#2P8|6+EgW0o`jy5E|cABLLDuERmFN7vYq+0@(Tr9#|%ORI+9Q zfJ2SkiO|IaZi`-~!6ph3ccy<5EC5MXhy9*PHED+aI!~k<5=S0v^Q-T@kYG5|P_Wro zEQ4*0nSIG$*6=nnhmq0JR-Ry(RwT0LPVy1EtrdShOD_P$jc6%OkRuA17e)tpH&KEV z0jh)NuFkseE#ecCr(}&;QltADu*KQAsIL0Vge(wwL;+Fac6aS%)fp|}CHmnOB>9by z`l|gu$+gF+YZ)=6kTgOxHpT2ie=v$FBh^zMn>V)R#7~-RL0s}J-vPe`>K$4aP5|gK zVE-JuyYiGtS=MhS@vMZaTx z_v3tAvCgj@$`)awPmpit6`((zmb&qJI-CHdtlRATwWQl7FaO5g^+(f>vyoP`%M0w& zJsUGCV?>KZYL!{Sh}F}GY>c{BAI*naTRLW6WToCH)vfRsQaiq7k)+xX8u31Tw~ zIvjC6oTjo-+3+P(i-`RmQ2ksZ`iJuJl^&4iHxsNZR|4pFD@Pmv1E6I?w9sjgFcP{! zc^&5XdR&PCB_vht$H54Wo8BL)4fUwwl_+fOp+x$q3G=d{O?;zz=bhCA6TT>-qaEu; zdP6Kb>l4YQIS)KvuctJk17A=%q8wsZJLqnYx`;hv;!{%?qXq(ZCHx-y9mov&&zPtg z(gEEiP+xk==fBPP!L-$#F6OOsBpTwWF`r#xSmBt}!m&+>ALg2*)B{;{5A9GxgjSTK zqMJ}~^*#N$DNAviD_D_tGZm>4oVTydB(ny9L7*5i*Pr0`!L@oV((*&}B~Xs|#pfA} zQT@^i7yjdz$qWx-{*;XxK@pD6XTW(%}eZlJJoj%M*+XwCun@?r{J@uy9kse8k<_(t?*5`bQxw_x?2_Uu{(}7tXi9s zYtFv4z`XeB3ES`B_Yp!~0#RtuTpvo*??rA;B&<4JDrJy@0ENz&s+U(&4$ST?E*>61 zc@I})Uh7cPY3mj6Q#>ey8KcN7qmD!CBCxW<8Y{GY7vU&H&%JAHeg6z#)1>Vfy?$pE zz$}K6PgiGE>KUf6fOJ$AfG@ecq>VCi^7#3fmZRPQQzf;a7{Lqm<>wS>1_!uv4-~@k zUr!Dpb}^2EFiv1)MluTA=`{|n@a96jdp zU?r~xE*DJyERbjVaus#mGymz$R+Eh#C*9W^%uo0Bd#t(kB5a)b_b00)K=U>;_qeh4 z7jx0^(jSR-5dt(d0WUOZ+G89xgedRT)m1od*{j)RkMb3MlKku%YkeXC-;5TyZL+#| zFzQl5NyTa46d`n6ubVf;=+bg$(&y71hufr|YX;{EKrx$0t6?#h?oEDl={E6Z zQaki#n-q7!S-?_pz;jAcEMG0+&)`Ikm}we%S^eFq`CCD=J#mPPBNJP1#`L5W6mF=m0 ze!$C?n-NC$sgwq1depcdB_GG=BJl}8lpSgt-WNqBCxQNBra@oAKG85^GE@_sr;fZ* z;=$o?5FVeVTHYR1e*dZ{#q&64Cz`7F?|q>BO7eXFMF`&v?Z>{y5kS7h?x`B(<+U0n zmVG=k@!MXY2f_0t`5c(4tCrngEifOGT7q{dA@f3^-><85&{Qnkj_m08nA8dFoeo+*d@N*jf2(eu6R;EkR)Th)jb*4a;Blb)f7 z;)X=FvO?qO-5(5=h(#Zu@}m4=nX&mwM8r_NMNHLw_jmS3hY-*trR4&04#PhvzZ%=E z4www+=m)l&^pArgdqEl%gJvZsISHz#7V3N1a8ogo903#^v&)BwTv=25j3;IEC?GN4j9_CTlPxgzn@{bWHQMbL z6sAGJ*3%$Q0FIPd1MQ+=Joi#Zafp7GOBkm4Q{6soI)$?8+$cNC^ub$Af-en{9(H0OL&m#modUK-sS&^8~boD{ho1Z77mo1c0UvM`q zqIl3%5O_G;qQn8hR96{_R||sxTX+jF?Y%;tgmQw*tqsj?IUm# zv+jRjiA{Y)H8ov)$FW#;!#XB$)UGL2!$jyov_5UQX4@A7_NY`-`MJM4)tfcC52LfShH^45zipLSj0C*Ja%ZY2ymL>V2U!IDQ$}%>=^}1R)Ho}M%3vLzFxtx+A zah)xLVg+4mzClMh1A8GU)TcBb-Z6Eq@|qTHuT%ap4Sx}mRpUN=O~b?!nAC(DgDgTd z%B4`AWL*U8mv=nRF#W{MO9U_Q39Nc3>^bhVyROPufz3(UT4mZDkvYuM0R1C6knz%U zb90%(>)`!OPy{|zgqiKcoaMszzINKfVj<5`TygI>A$Q0cBXFF3O>;4!xHdxT$~Kzg z9wwymfcd_87WU4c>T1L)Yo_a~*ZF`G7hcQ-vUS`!@Ajajs30;lE5@fP=k#4-_B>j@ zcuTLux(~Ckl_v9tEDF9;TIPX`9gB@qe=Ni!^uvqpL| zys^70;}(LrG6?6Aq`x}nUQ@i^79X62U-wNr>%|BN;Iz497f37kaAY3)TGJkLA^ozN z;1%_|rr~c9R8RWyJLY5>FYc3NJV65NkY=GAfn(RYYWf5o$3+0DkO2ch!I~Z!6sl^i zqNpUwE|W3n^7x0Enh*&YXrtj4M9T3JHO5a&KlE;Zq6X)9x9ywH{`q{g^P2cFrWNfm z*1uQ&W(Q8neIo^w<(3mDSjn2FFk+IY?HmSMA=Z4?QI=MtBr{UGbCHP)T*(HGGuf_X z$q+0Z&zY`&P$CB_w9Tz|y#^6zd=wvcE!{6#fiB<4!J2iu`K+l zKGaOyiK}p>sVWfX1fKU$6G!~OhG?vjd*v#V*^Zt!X}D;TYqAQtT;txK z-7#I+iSoJR0jVOkvP9E=VsesT-N10|Z%1Hw^axj}I=pld-252caZ3wf13;Z7LQ-QP zmo)XCDS66PBK&s@JRna_WJn|d0{FNzih~-8QT?H>eL!{rwohp8Yfkx!0-7~XOrLhX zY4P&MRFTTDM3!-c_IUEAU*2Z6hfDYo)A{?NJ=Bm#``@Vo^^XEDow-X9@!;4PPC*Im z_@rNLMI#_U$ZI{?eY!mf!ox#p1xMRV<}Vjy`Dx%gYxG7@L>#U5SmZ)X_qF?Sq}qrO?X^dpd2>p`a5KIdJ4 zg-{&)(2w!^2d9Md8X0J!^_tRM8@=FDr8ck4;qS-tcut=87Pl^*0RrNF#X>m+&I39D z0K~%TuewB1iL+k6A0CPWn(nF^^^Q$Q$Ya{cB^UG3g0OY*365#N*%up@&U*J!B3`XD z*Z>?n;1*warorXeG~IUv(Qit5iX3M<#vmyfEi@qD9aCfJ>4wt$m1Xw-|(Q;HoJJDaJC~!wP|-!c)zCf4&HiD|y7KrxIgwUep2Dr&RUb3iHFf&l_?lMNa!?cpMspB{uo744Vtv;N}EIAgXJ_JexPeTP_(kj&nb*^S?PZ9AI+%h3)=N?9yhHgn2Lp$3swmE zkVfxu6_A<1Fyt?jpKsyun%d+gG0=|n06>9g^ukN!l*?}@iEd(2;8Kq5rc0WN0<1YA z>90S8>fpZySl49@0c3XtmU{Td=^^whFp4iXj+Pu3@+;E=+_6v*z$zF?NJx+d?C00^ z&wvdK;Cleifno2Otr`d%wz|jw*!9|Ugpc|ZYO?7oog3?z3u>Hb{mjaX^W#K%E5CPX zQS{@)jzL34WB(9As@?B+?c;u&vV3Y@BgHsvgYyQ+Z0JxCG+YI46p+vLPw8VI5 z`~5lD;9kDyi4><#Ut-PqpY2#G$< zH(&15TZdM?L;~(aPD?$G`0`VqoGjo?FGqdl(Sg{nUJZ2PnYjf8tl|A`@CgkpA9{{Pyay1_C9s{ZW+vJhSDnjm;!FRYv5%49)s>US} zh@-K^KEj^&sY3a}xgOu`+H^#)(+T=yWJY=cf2)EbbO4a8$GnmWX+imomc|-1C zWfUP)w((~FssD%OEu7T%A*I9N^YPA4f&L)hn^;AajhFo>;Bapz8it}uE+a#a%<-9s zH$rY1HP2P-|5A+cpz~mTp{uJ>~w0kCOZ$?M)ZKRZ7e+)b4wtgJ2knvuB6zwXrMPsT0fZ07uzk3?Ahc5r z5&e9d&?7SFD0dZV6N16Xu93U^R z)hcH#pQMS4^WwJ|_;2;RdaI5^K|0&(C47Vx?UdMk9!OCw{O$<8sw>k;@pn);PX2CejT^aEZJQ;@0&Bj;9#d^v$U*a4`^fL(@` zs7nG2Iq(i-P)tnB2Z9eiKK_4x(!g=);2ed#F(PRmkEjRY+uZecW&o{&`K%mX@#l@C{7KO0hy#orSwLUA^%Zlr_?`R=L2qluG9W& zf+jP7Ad(JOBxlu5#W}BX^KW|hUQ0(pCpP5kKI!GT>ZiO>@7B80cU!=aEsZ)eL|$gf z2kDa{$!CWLxw3DxR?!(J6-+*O%ltIDuosmaS;sYzD#EnAE{G$YPz4!? z;pHaffG&(0oF)Gy2-O6rG-G-E3?~qr!oLIKJYt*}t<6lRJ1=gp40UPlISnH^FjvW@ zh@acq(}uw^kuyop(9?I9Q}d4+XrhaWbo}{$vW)Hs`F3ou6k=@*#R zak+%@-he8o#Oab&*Hz_TCMPa0+1ZuX0D)3=SdQ8Ra|h5{%;I#XMMe!v28C7()_U3g zFaz2)c!t#WT&*2a+c`P3|IxMqWH|ovdA)g+?=!uGh(Z*(7#tgf0Xx&zmU3QY|?F&Krb1pJ>3Xi*4 zM$SP1^_3|NvCO!5f3`CXgwnx08c@5g{*E`;o4oINo4jD51b`5)1sCs>awl3P!HquM=S+vYRax(=l~ zQ@GO8|lRiID!zVQEE7Ck>hx!I89>FfHbF!MFO! zMgPsKBQMxw$(a~?N-Rfbd7Z3m#dc|23bG5S!pel+dCCJ5ex$;INz1{&5A9;4&#$bQ z|5NxBJHkcH$gR`@zAt33X_Bg=VHNyp=_Q$30YFgr=Si90`=53tJwBWkRu(QjMV#C} z4;%PY8zwuWc4W9NYtkP?u+sm1S40Q4KaD=WJZ^^!?PPCkO09Z( zT{|XtvJM^gsPyTIflUP<&6Hif^2LiTlx1DxiK{aV=}t#7a_tA}KMrpWhYT*y1>w!n z#>VjC^)e3|Rr#0QmGVM9JGl4jt%dORc64B1jZ7l+jEu-60@Qe#|B?uho;}CMj)gbc zB~pNf+q<)!Pex`x4EZ)15fydGL&OT(wvP#RFwNwT22ceZFNR+R>5`-l54Txb%cI+m zMzKN~tpLU3h$_&0O=3x+m$R=NIJSaPN@mIm>7P0!df9+~#>dD1i&b(gh`P;8NNZ&( zKnuAX!vMwnL3RY-0bIOCOS;nEmfow!yKz{`J+Y$6Pp@LdoMu36pl z5A7cGFT?IkTFG3^1~6guG;^f(l$11(+B0b{LuxMrNE357fh~zCz!2wB4S0v)KmRL= zQ8u)jjUgj>L=}m8uWkj=8(WhlIhJz%rT1M(BQM8p{Sxu(^>J3wQon3r!-%pRtnd!# ze>2$(>r~XI6q(uCwUH`|tf5J)N%TY@u3CgY!Tybf)y1&%CNY5>2SlWisKDmP_wiwU zQyzQ0>@%~_Kdz%N3+>8;g+!uS{s_bE3mF*-pv=DL{=mlq{0K`+OXM``wSMKRzFL7l z{XY(FQ~kR~mEEtiW05UNd}dCJ`aO|XQ45)FYQo!#ZWEiF3&n4n ztSLb1@<_$&SG^AdiaiZ=^=v@#nel3jWnX7_J6QZs5@1NU-BU31#WJVex9zovPuZyN z@#{)*i&+6Kh$rN7-y@wANC{SyvU;E#HrtX%^bA=l!wJ@V^=1N(Va;6 z67Vg6cm@dB;GCUPcyo;?C+Oo=(R}Te^HY0j#IOI?AA>a0~ujhtE84D5uHey=&A76!NU$&3%)SW}3y0+B@+ABZf9Qc|CDN^Z{o zI3Y!{2-8nxF1NlvT+~VzHKdn7e&+uym6oy6VlueYu8Je?Xkj!@sHE<%3cENwUzsa~zRn z17R(hN8`n;zsy=I(o&E}qvZk&M28Q^BE5YFZE4BBvNEu3?b8Q}l~g2pXNv-i%KOp# z>VFV^-Osh^Ghi;}iGo?s($*u(5gw;SQCWRK+bJeM5IQTLc`HxV6O%yepI);%PXG5Y zWDT1iVGqRkbez<>PGfj|6z1njo9m6omb7Wu|JDL_CwTK%kCMykUo3bmAt&BVvo)+^ zwPpJCcNONN|J4dvO1o8g%O@XziL_FK$!+FTr_ev?nkN~D598PNp4?Y6X0AQz z&3acSARvp0*%Sa-%*7Cy#VRW+!>c$%MU5cjT?&eesjCKm-dkn88@5B{jsN^?vg@<@ zrNd4C;dr9>p?XUEJ_lRr#M#>9j4B~%;jSj$v~^|3@Jo%GBNPK9p{C5 zAYVMJJ5uM2_b#Z!ijyOdvw(kIT1dh6$K?&!=zff`dd}^r;o?KK9nFoyumMoFA-%1I zaeRC{ylNkbijenxbi&FKJup}rRvge6CQ~vjtB1knfC7^?$Ne~I%z7wd7)iNQFBXb7 z36f|L)V?R~$}a)f=`uf%CX+LRAh28rdVvSn?_wHuC*Jzm$lt6)W~<0xz#WT7{;d<6 z?xz6$a6j`m<>M{FY2`A7TtfE?Wnj+w40cMzllHsbXDpy1GNfy2X~pN1M8IJ00J*HK z*oNX~1c4y)8IQ2od{OWJ)FY1^PZFi0!!0Ae7g$v${+<4+cLhbeH|_TAqXURww9~-; z4zUzr=#QL|G$BaNics&3x$wt9=oMlj@&^AT|Nnlxh(Q8G2JC#l{e9b6)Q2s~aM-Js z{Nd(`{EGi3(jX|U{s17cfr@aEB}qK9CcdTd`}euX^(Hpcu8v7Jiwm{GXXE~#_0Vs5 z-hw~&mM^kK8LZ7k8g89wx7-@E786##TCeYs24a5%GRhvW4TM*{^->XyIx3SHUZO3B z+)89dp(m9wZ>asBY46#OM14PAIaxxJTiw44U1`uCbXw>Eg5+TNNxhjXWI%@oNcKnq zSqozvgQ^CwBV*Qm1@h(MeZ)YcPHdIH$yf8m^#60Z$GN=AxzDzcXAX?xEwny7>R94T z$a;{-8t!aV&Rd}Y{wmT$X&15ppfXpLv3r&HpuaX&qvd{^%`*ef@%Oi6K|vs1D~td? z0|fm9Yyk8G{UGDQtY@WIX;7cws0#Eq;E=dLPMFrNijfOaBJ=J0&Y&0JRgQBtHbCe; z=r1I(D=sHb4xAuc5BGHaKhHt)6tNFzA_7R*U{v$a4vpB4(0XHe|m;2?`qQVco9A!&eGyQ!x z&t%Qp|82fUvI1HdCGJk+0Aq`a(gBRkebl(&GbPIR_1e++;O%fv<^M;h9YL3v7N(4t z_*YRoR~+tvh>Q*3Wco0`pQBeDEsZ@r8`CEyH1ZR8fl%Dt+iMP>k;&q|!sh1Yz;Onm zQ8o*(rB#XyvzUQn;mr&XI(~J*i~q(hiVwit%hT*yqkRC_;;KPD1i(yr=doXRHG#C( zPuD1|?{T)Hjl6{Y*|TRDt1*qv%b#z>z#1B~N#iSHZ@ev+=N8IpN89KKdv0z1&kE7J z0Uos{gcLbQz-c_Ro>}1sXz|D;Euim#N(D-vKx|&w!IeqA?G0ur?8yqPdkglXX+o17 zw4>+>&j`Po4EeABVkK5S)D(YZWp3W{GGaNfrBoXkELLU`uDDQn&gGp@Dv(K`GWv`O_~wuf zu0>*CL)&>n`NDAS-m!sv69w#QShnX@|G(c9L-sqy4wB#s9V;}f5jPZ#hxN18c15ARE^i(I#TVSjG;@f1QP58jL#96MI*OWDcw0Hx|b3I5pJ zV_yUx$)F#c_dR@fdqk5XurXk{5H=YMGcXD8uo9Ch-;PeB*uE@6usFBuT&>vgs2Cy< zW$ZqVgb3knT?ichzxlpDVxhrTUR|k1dzh%)bY}U<7AC`&i210I=3_|i-`EwQ5J;bv z)*^ww53DfK(?vh2uADfFqahSLNtLaug02C*{rb!!rY^~PhI=m!*t?d?yPcae3h<=K z#h{YhPKf{g>uWvsf=U1<*b43v`XLWJy z$4?k~bW>5$UYz}Y?5#ijpa+GaK#!)X_CMS|Q!zG-`t}=bi{PZ9Cnl3o%*2c0sFozZ zbYcS7Y9nYo;=4mw`Ug-yu$kq~|9tc*Q#kM5swP2kh!PuyVd_hQlCwdE25$Y>F(0`R z(xY%0KI-1UkIF`g3R<0{pQ(2~p%sFDZ7IO0sVT{G-pGW0d=xG-6_!K25{bsb(knUQ z_fWpHpJ|rw-GKi!X4B-1Gudy0{>$qH?}>VB#d5nw1tplgkMSsnbYO$J zHi=8U9Ibtf#4S-UjjbKWASvH3sa)2;5O2!Vla--K(#g#l{ukS5;qUHCF48x!$bt!s zEZCcc1|yy$Mx7VW5tb@o&EO8JH{>T@Uqy3?Yh1E8OnT!AW{z}i#Fd%pk4moWa0Qie z0l|tiOvLqD!kH5-(R*quPiiY~?@rf!(Wm9gl2LFKiK>psVCY+LjA)^SwrQRNyX9vn zJ?=oPY(;UUSH1Elh4(cg|98BH+h7y;_@B)+FLzV5VOr(cg630xE-q%v((Ef zFC8TrVykPI*qZ6n(p3Dw48UZEC%;QB`%?~n}rR2iq!mPFnEG=enTk!h@N~QBD<^&)~+R zvbY{&jY)Z!?BzrtI6*p2&Q1vDq?xlq?QqH0pohdh;HcLZZJTXXGZW&&_CD{-pGjo7 zVMe&bkUC}zx1h;*?5v0U)hhKd@`c;t;E_Cr+6I)UR?kt0IRsrLz%xu8O7Yw35rMOn z$M9x1Z*G0;!P^Fe79cpYw%2FuKQYBh8!sLZ zqp*H%-Z~DuC*$%(ZwkV=^Jg@zzi$rNi+Kd?O$EMYcUeJMzSVt&FMxtm$jxhF%%K#p zxzyl0HzubPlX6bfjTsCT@n`4DZSUP1j;pQD1@1IZpjRdYG+l&=&^I%d9C&v7O&k^z zTcd-z-Rl!$3d^x8WPH0|70WX;ya6WielD+6Nc`;TD#dhRvXET8%b`KS)c30)qce;2 z+8b6TFjVHZjSbnyzt(@=KK5QRvWcUnxRBRRIHe78{X^>fAuZ}oT~}MV9ko+fAhc}M zJBUlyo2-Fh>Jgt8p77w>H~F2v4xN3j%*-Q zN^3zC!|)glHB^-E@`M2U$RQo8=-D)ItYYUHjO@2h#Y@eG@?GdojP0fKUP;!Gkbv4R zEA;5H$*v~9J)^8gCWd@67e=NeA7wG?fR)d)T zwf*Xumsei@+>TK(O~u<{*^Xs{UPBn!6GYik;m0oeKQFb}GhRa`Wnd zuPw70g~Ktws0?F5HMI#dvwGq^b(H6vF0(TQMPGEC?YK*nVa`nR`lX~o{KHc zl`EDiv?z&%Mt3xiKI#u`oT4qQ%LMpXXKis+;_RE>VfuJcU!Cisz4i-g@|}ihc=y%_ zxjUK)eu4ad*H?eG_?S}Dqh;OoYewmD+L7XhrX_Scd9eqzu8Xc?3^?=o|xLU3CQ$y;)Ux;JWc26mZCo zmHj`Xr;9-dOuc$Sy*^rk1&JyGO{Y@RKYu99W>>^)y8d1YdyMV%oUWeFUzA@2|ELI9 zO_SurEwLDP3Y$$jvg{Vaz`F1HEBOOWFa8v#(fS9dW?djXaESZ$tuR)S=vsT!Uohud z*(QOm1;nLxKyQPy>%hEvBX(VGW*P+%UcJ#FS@h}b19YU;g5-G`_oD^rsMN=5tFWm_?;8^Kjt;8C<3iEC~UKoChVmQGUqG7$Qmgd2_UPSAmX8Z^od< zpitgpWurdi_*L27tGYyf;mGhp#n9=(<=454B?&8+NsUJ)PigbsRMkCeps8?l+|r?( zI!hxDIYtOt?y&<0|NdXl_afE1$hsn_+7d)v${$wXAye!t^L_2fD(=A_>@@t{NWiQ! zm%X-A40TU0yhJf~VY4!s*NM?zAk)ps$~Zmp8~4G_ri@F;*~40t#k3qbuc8$0k-Z7x z2AK7!UbNQgx0;3iD>BAaOusQDq0%C>-I%nIrwGzwC3@AG;1#F`eab6m{)t!UrUMX5 zv3F|ajDVS_ccAdGHn%ySod%34MSeB#dQG`++#nz#|1r3aj`{V=dyaFdpgDuPTj38I z&u6Z^f@s9015bmv8ZN3n=lGfw)|9BdcB${Bv&|FPZM?`D!SR>r>7~1?QRvRZr*RST z@YgY3KJ}&d?={RVr)#R3nhsM8;nNMw#P7^XYe%p}DrQFtn^Da0+O%NShtScMhb56V zm67P_rYt}6MwOLFjjH%fPv7Hmv1>{~G5YGLp38n&`)RlC-$4f&qvM@Y#`&|C%U+!h-Mjv5 zfl%qs`fdxVetz4jgv-~a3+`%e{)&&Ai_C+J)KQ;2%)WS;M}azwAtUqt=@aYI015;z z%ahmU9pR=D)_&axrY+`hggQL^i;JG|1qSKbsUM>r#L6qD~HX2w;zCsU-Kabfi9MniF-DqP4nZ zl@%D9S=wEZ{0oc8|Kz;y(fr;!?uJRH!F{7+{tuos$W`H!G1|qe&apF9CITh5v{*ex zHakMH4&ffwsOLZU&G+f0*5J^UQP{VD_Xo=W6r2i+q64~oO(j`S|t@9(M%CQOGc zjLo_V3Q1AqC|ovwyFRo+xQw%E-+N~lCy3ofCxgq$;Ex;I?AuZym|)$Ph|IOlcA^X5 zTpa2dA>T6>{B$sXq%B_>>L1vVY7x;3xWh}%IJY@`=UoOMtU_3@d&45s&sy2o7dOY6`L zf*~Q$^B>}vJ28lM2D2zU^zBlD(RF6+mS6D6X z%74CW{L1X^Fu#K05hbmdE-S7H@+qkWK?g@O#w#;$53VeSZn&sk%0B2e+<9zcAlz%a zg#DrmhU*7>!q50!jaP0vQRh9FJ(lKB%e*CjTeprC#<AlzU{}oN@qOm9r3d-Ut9Y!3;tgNK6Kf8`R}iW2?LUhtEBu55=cFY|8DU=&c#q78?otFP4$rOI z-VrHn^oIrXRe0Er=6L4uij$X1<><5}hMiS7CJTx#uEReLk%d`N>r@?}y>q$ATHEWC z7Q@ri^}@GphkR6Pm*2-GMbw9MS*)smf8Bj^b)!-OL;p0{TrN3K@QC%OSAL$~MkY&u zzz^>x`;STYjm^yCg=^O_DX+4{B9*6+505BJK-bI;5}zWJFw5`DvseGV)8z7EA*11? z7$0$7#J>1q6+}1t=t+;*IWb!MtJOmRL&I&@wc#a6Ql@Je%*(hDN~Rf){x(>jH@zpfHgtd3TZo~r zdhJ?K#=V-R0Td_7Q%0Rc#VnZL_TzpQU%tPWT^#pj1>peZR@xfU?0-uXoq0rbov2R7Z?dG9MLY01##2*ImQLTP z*hIeduMNzo+$*_SauRFpS;0B`*_3*Q{x{Kv{p=o_ zD0?Hf&gVsP^Bhg^&@d|YQi{(<0%mquh>^*4zgtC4P+mEAVi-NIMusN86W&sA&`0Uu z6@jB9!Nn#bhofuC)e>Qg#=|?2UWA8cuMNCn#edf)ZhOT)jtWV(?5prVImRmH-QeQI zOLS(}#^%C2c?eq;Pe@lL$v=z#<)o0e7wC}d)$eG*7kp2eyAowa zM6DADWhf1f=M2Lnx27m3FiBrLy6K+h6Gs@tgE2OMW59)yFpBT4(pf3{KOtbQFSNr`KK2pZ}|B;zokZW@a;%M1ZB^(@3c;l!0@(TJ-6j zl~xf4N+?Wg=pLR80U zcWNShZ<-h&@kO`Iu@;@5|KeLjaqlt?vC`HG1?PsEI-2kyKS&yWct_8aC-Foho!C7T zCTcVV2aCqtn7$+H5H|d@##sE&CEQG_stjl1=yJzXxJzaaS z$yj83$~+v-ziYW$V=|PxB2bMHO@ed^!kw_6S|h@)sz@-WdaYJ=g#Ph_vdCaHpMneMlCeQDUxJ+PDz;w< zQmK_F-F)E!0!t>m>yB|Yd4BC^)umKYGUcIJg>C@|77Er)hNCdJu!3=$8dwuEVM&l^ z4)l{kY{zek=VB0HirFk;=S~njs4?jy$M}8m?}OTUbq19{77$0w|4ER!EQk%1O-p>X)60TBr#S z8|jf}50Ae2$uJL+4X}@5Lo#gto`u$p-^i0Brtu4n-9>GWUBeM}EHct7@Rtdp`>*$J z70|Z2+x+xg{mEjQk_d7=0Ypps{{X<9V6cTnbCKMc4I3m=Ulc;J+ojXQi_7_9KK<_W z-ebKDs1~GuS5?1(n7xn_pw)phS?!Q`(X{;1(Usyr5EJulK9{hj+hdnRCGHxM^8Ng!ssCHyhpWs9t4HGWb(1oGvG z1}MPaohZZ@sTV8kR+KM!69@4N_i%O%m3?S!Dfxib;jN0SAZ0Sqg|6XLbAVpWbnaHE zsqMi`Ceo<`)q5>Yzy3_Hs$Z2wypuQzj_KoTb+347O@OR8Rhos|Ns zGlL6$zDd@8x<_tzJ$JO2rj?$Q5D)CmYs@ZvFCxVlmQ$le7&FR=SmP1P(1R0}xOy@& z7DiR*Q?V_;^?Z9@GaeTV9vnFZ2Y$l$LuF@K>e-ooWhsu1eo=iLQ{xcqY;J%V{AB%n za11l8(;z2Ww`MY~`eMmX%5)2AS~Ho`E1-m{oyr%2pTCDWbyN&9AGbJPGSThWzl1sn zL(E<&V!q8rk_?PYY3*|XWPYU9P&|N zu~U_dGGXhn8=lo;w#rSMIrWzICMzgu?Ne?dL=eV_&|$s4dJ`m$H8%HM%zIaCDmdG9 zGh2?{He{Jp42mw(Qc-kUxhTk7&u&4L)2R#x^D~u1%xXiB;$lo$8S#giP3)chk&=-m z5L$(7Jp>=h?o=4ORk1?e#@8pE9lz3{UpQR;!^V*&kQV5_$aQL}(p)XjBTS7htJezN z;p;UNYM->U@tz3Pkae<3wmMqHPA?Waw#GKDy>ohT1#6=x&p>Eh@h|wn*}(`|x|U2s z#n4ICWb|=Z)y;{3gF(K{zXm04B%J379#hgoP4 zGfO9jNu})@_AP>@ot43Z>_b}`|M8BvR?+p~^OSp|)Ay57NRQTggOu~)OPTUd~z(w}9`9%n^} zn2KRoRU1p#MT*J0AqMZZ^#)y@aKZKJ#OcRG1VW6IT3EHjJ0*pz67uVbVwi9u5^c*?F=;n)t_#~>Q|G*^a zqOv9{`(%2Cmhy{1Ft3X0rHR@dIugdkmzDzItet^^5x$HHfOk;$qQ;pOZQ915LJd>3 zGd?*?xH#wbbJM4|HU#oV2;qucBwmlc<5qd403OTBz`S5F?k$_rc`j6v6F3shx!~Mk z^d`(>)G-3~LKZSZ1BiT#f(&(!K*8O1POg1Im(wqh_$PAEdyVxrc}rt5iXuW7lC*{)` znSRp_RnrfD3FBp#01prJiys?57Q2uNSoW%b#{qU_oS!|7H{VLZneNy_ozBN>S!sS?p7hwr$Ms-rx0gB=ain0R+Ay5V>u|uv4yj`_N z&V?7?R9r!<$xZ>HhXg^I!^e5D-Wf1ckGFP-X!Ybm<(rJj1%RNU{zMaFOcpg4Zt=Ay zUZ;(>EXi+uBZiHyl0AT6X-!$W%PHhz{MV}Q@bNRD^-FCN^7w`?Q>lQKoA~OPXw{Eo zp(FL3zb-*3y#m-HjWAGZsYG54VlI{KoFxc$g?y@9wG4VqKf=^EToMHKy)bN_|Ix5^ zkyE(4jb^m~uHx@kbbJGu?N?oPj^tAJ=iXhqUdWKIsX{B771NR{Bw{t78J#4^+w=8W zeK<(0$_Gi7j43Ej z$|cQaJ^b>zVC;}*tUc^|0?4eED&S&wBZHt8;g>hR3vC;SD8_gKYLJOC zNIy*A`O~w^P)R2R#mYZ-If!ww?a}qkWqOW2p5;7z5)vn>KYXJJ91Kap0t5>4Y1jI4 z8NjMb)R|)gh}cq%p_}$_Nm3oxd^7E9RqrZ&F_3;6eW>dO$exPN6p1Q!R($ZF0@4%u z2x&@7KfKI5mEp|Rij0QE$}UsGh?YSR!77dZsCLWMR!)H?SfCiAEnEQzN;Elz+ncu+ zqOx`KzJiR7ha6fI6GkmRmCv|+d`>2UWBk#?9$vSLU1X^6)zFzAgD?FXHp;+G%smPl zedAzPYw|e~P6fu(jKx23UqIEYsDep)aeLHT>{XdNHvyC#rglO2_5*5*t+n>B?~OKE zSAs}PUJz&@{krG31tFf>bMf&&ffAZ#Hqk25-^0v8?wEtWh!FU9G81!QVU^a*)Y+$-(9nel3Eom}06Yf2NOZ=bu3*Q##-NZ{o z;ja11x=_*f0=RjAm9l0E@aSFPj*47NiF{SNkdDxS`+Ope_+U zIS|o=PTwXUuB)rwyRc(Sh7hbKfMLzSL_G1K0|d>+iLuh|MxZm=$k~~6lHff%6o9dF z?;d8*{!{1==jP*r<`rhW^JcwVOp3(=0cMgS&T^HBjtw>1`%^3pD3t>}$@!@0&)^!|5+amuzYxq!RS zyO_YofTYETye6LC-ve!kSuiGOJ+tVbQL$o9ZM7?M*!PL)bLu+pg*^x|ChBU~B~QquA`)w-*{@a2 z3z{@Ocw#y40-e{^2nUY85<=NuQk$}b_)G0RxS79lb45^1 z&`bP-F)>${gn^qK)`PT0EbI5ZnQ%r3IfPiXJuW2J@BJBizXjre?$<^ht=Q>LIl`IB zd%g|21Q593p7Rjdx_~f&;%V_`jpE6DpAhxQgp{|5J)6R_`1eYt zCn8k=V)hRt0*t#nfYSEgx@41ibHsL>EE(WK^@R|+vdCH@$ghoBGr~SC*9D3ZPi+yxQ z5Xr44pIn2njdMN=>DG-4;?&&8Rny8}|H*cd-a^_*$JBqfmGYyLozl~)0sV?4=5%Ky zY)`}#zD)+sz#baX-nTAiuAE=g0d{1!yjOm<8%A@(By$=$_>#?LAMD$8SUk=$=3u9vhwLytb+u*tZHtYVl3gQtuRyGfM@)4bIYijPV zTKwhU)LvGviY+D+vw`axNa@~JeL20L!OQB16kj?Y;nzecuEWfhvOIosC~zw1e$NnC zR;d%V06|f+jyO}ZA)k}wzj3aBEB23k!e=y^PH#(LI@fwL`?CFVltbOp?0n2P{t-BiGxR1K6~Vvqw!9} z+%zAj1mDOr>^AR*?Tm;UkuIEeEENIfRufAg9VCP=8?Od!DUcOO)>Ij$TADhXU@CXa5K+XZqp=zp$rJyE4=B#P zyjzPbgF!?v+~xWOu290s<%KA5S=z4$v?>u2Hk&4L z`O4mp0g^pu72gTj{P1s;bfQF(`o3ibl{r(T5m)vt`wpnTX!DaYKCqt1pCDW@`Mj5WkM7-7V+Yw{{2I9L8DC?XU@!0};k{DA~;5ExU1L^B=4iAf=ol%NcrpC*dQ zAipO1e4&#*F8&^wk*L93^mY03bfIx`W!FL4=TG$m#&jV$fYFXTn1gWi3w=nzp;clp zP?UR+@qHDaBU=oUxodo}f0wY48bVh?cj94AArggvBnb@PL5_&WFL>)i5Joq(F|f~( z#ncrzYsH#Zc*tSN5}hQBkxQ+4F^o41J+dBDUMbPk51`AB0;%UzDQX{WmnLjz#~?OTT}vaR4|X zA_xX(1!1*+c*bHPx@cU0q-czzJx<|+v-V5=ZG?{1WfCBUHn#I&C5myf?-h7_tCX{H z^J%8Y>gZ3r4-OXC=>fN&=4!l2Yo|h6XIc-hPDM2yHB)(3%>1Hv?wW-Cxcx)ySzIto zA70*%2PW-%>xeDyg=$>B{uzIdll?P_8s=8Y<|;eojUa+rE{1VA%qoauc*xHsA4{xmXIe55;iBSzVUKHe@2X1>wuhD!#}jUf z8B7LAMfP%F%^N=Jkt4m_wwDmJ{xr=Y>!==1^eWGO`GCNcyhrI>Q=Nh z(UzvoyzYBW#KCtVv^x0a#cFoQDYP_fZ(kRo_|dA5B0a~aHcwedk^=J4`^$K%qzQt&td{G%adpAWZWW<$z4s1AjFk-G^#|LB=k zg_nQuC-2T~i!=ktXXE#%pM{aocdAncmccxf{m)q(*x0~YaB3O>>RWlo?Bv3axB-vz zzk2axtAJ9+Te(EZHMvP{mGBR1mO`Up%obv5N%j4Jg9JBOhb8k|X969VI^|2EI99<< zAKKeC*bd(ZyDPkss853RE?1TlRL`YkW(=iU9r{v}nm5<$e}0@Kg)Cim-4+Armvj|^P4ORNnBN#rvEab+@;A%St?b>%64h@W;tlTGzdyjmQ zcG7!54M`nYPD63csXZ2%!8H82n^ZNu!m>~%RkLpA>Fs5Dbgw6k!4^c^9$M}S z#Jk^neDaqvpW=9}wpz89(%b@o46&tX>W@SrE&{By72em@w?0K>Zi|G~T-YOr)hUAE z7rHU_(|*X$e+69m^~-|ek}4wY$|iKq*;Q-ou&tcfl}EU52{L>d?-dFRr@dnfXwskm zH4R<@AtoH7!BX**>G?>ybo)(A5xFFRfotE0MN#M%^>^;;$dEnD63;>BV?goy{a>YF z1__kNXY;c?hw|=~q)@I1)vMf-6S^|Kd=GmF`NtwxnEN7xoj@x5ds6X(}rH_aYfZ%JYrX0?2?h3wlQog($@OgKtduo*0X_?4ywoQMDOL*r|0Dx#RmC-Iz~ z>*R;HrePY2YMJ>wnq_rfA(m7NiK$<`me$C3(ydS~$ScRlsh*KZPL@>C?criVsJrwVDLqmj2aXj0$$ppBnCg-Lnz(qa*Yw}z zfrAmMFT36dWu-irJZlbT@kF z8$2`e&T@3=_}rw*@5=SUG#^;{h40CcQJzdrzx+T^rV$;et&>K5-w~IGQQgOUL0lK` zgiw&0y2bfjBeZy}ccVVxMUA8tM~c^IM!U@7`n}cspuDjPcy*)IU~LEz=N_>thkkMK z9=jUvYq=7$3e{1gmLMf}um)R|6m}#jRuFQ1aS!I^APeQvo11D@X>@sn z_D@~W*rAI65!6xdL*RR}kkPV3`RTl(w&DkTaj4O5??QBg;Avc0&yO#Rr}1r3_c&z! zqg6vA%Coh(EWilr?2#Xh~#&|nP2;B|^1#&m9ALmX=ITaFP z#|X1G2Cv6p8nobpq+LHF)nU)VNq`=SLN3X};7bJCbqPR^yxudGp z7OB$s!)>*8x@Uc&cYK|hW}Lk(GyEu1@lBRB3BU(~ADoxla+c4-!AyNjz_6KcRxjgc zjifKvBX+~z-$Pm>%CP6Xw3}adqkEJ;4qT4XEqny0CYWb7ZqR=ERl)B4U7U!Jr2T*# z^YO}U8l1_U%I1G*;6UC~jY3#h-q#b>%>L>J!{*icutz4tkG4YwfOI7Bi5KlDpnHlK zFVN7=@g*^9@nc?b(F+Cld73H3mP#B1VbpPFj!Q7T zi&YiuVr&mVtNx$~>p(C+>SGBib)(b+hmI(XfI?*A(HPEOm_Jch^FIy*t1z%P1p|Zl zMapX@p7$CSDozeY)IF}6x*^8dcRwqg$SpDsMx$k!es5@z@~K3d?XrG_`Z++$HwGRk z^Y+-&?_ROkvr6UzIvN05e3XkH9X{|opvKJMa5XsCw1TBpTg=N@%zN=7LTkMm8)H*5 z+Dq=CnDn_bh_IY@N(?G#*kLs<0&ZAUDLDklB=Khy6)LGpMe2h4)+kz)3hm=QSAjA@ zJwHrhu#VMjVds8~;ix}9Q2yN8=r|$S+VB&e!y%3=C8{kXKl_Ow2O+}~T^LejGEWd`Iu z`Mk8*83v}+KRayeVK`VK2ONd!CN<^g@l>TGY)?4A{`PxhI`sKj@c&U+g;@wNDYPLS z{kHl1Sv2^LK^Rg&FeC>^u0Dfhn=F&kgZKoGuS*^d|FXD?woPv!_3ly<_GYn6Jpusg zZbhFZ&4=;mMvr{ouUIOwT!yt{|FU4&bnvsDqu;1~TqDUJbvDiI_)AqS&K;NYE_0M? z?XMYioUn#SLYl1h-7dvhw=kwZnjt{l{=Y?$Isiefzh|X#o@e*n%Cy9><^}AZSi6Na z#}xr5Jqu`=3Je__O6j%FRnUHqOy?w3P80jGtsp^HD4tOuZ+~6#wC!i#V_iYHeq=br zuP#El6dzWMKh-S=mOGhm5v3mZym&p_%c_9cf8~G~ID04cumcY8aW z2#=ca3tph^LzjnN;&?Mz*pegZ8cfwyGyYN!z(!R_jWVKT9l?Q(jSE#jm!5uQpy{uW z3|FqVbAC4Ut_G+26Sh<1qQn8iB;%SFTUzr@ZwfiP=XovX;2)U)T7sA^n+N^46B3$R zeZ^CARQj|=Ud4zp?R%!DfC6J^ZtHLIGYZY#HliF&&us2w+^i@RP9Fdp<;GuF>0h@- z8fWX|3K#^dj4if0JsTmW4sL@#2OQS0>aCK_Wqsq|W(!-M0rqxQvy13BfK}Y>Uo$F`fy{bgaE_ayJ!~KJMYfFyX*~AT4kHy z1-*%|y(I_*{pig(x8W=+%XoXS;orQZfJe1qN?TKZeEZ6&yD%37t*te2s&6KkF+1`$ z?J2cRYZgG_f4&f4%l(IU{=Zz97)m6#WsH6Q@+2IV#+T%#`EXsJFRx}G-8x`8=>c>h zJdICo%%>ONj8C5?igtJGd#$iW%ZKGEy7^dhGsY(oooKo5PjMO`L~pbo`^fq11s*x3 zDC^mHyJA1KOR433Z(P!JTz2mHBj30|*-&&cywj}@3ccZPIKzFa1;)6bF(brp#SIT| zA+(bNg}V}_gU zQ>dxJE}!Wc&beDW+(Uh8;6O;5&7ObDy^`W{ve4&eTlDo~v6@K#*x-{O!3fj#GMsskioS>oKt^rq-G9VQL==pSNNJUBDwnpQ_`Q zZ6h3P2vYt@jGdr&r~RzhZX(>%sF(jnVtwF?WHb9m6!1%aqaPE-t2+qSH4H}tSXdS0 zk1s`S8JuB{xW~5!kTq~-!n2hx)6RD-e}qd2n~txVPxohBNp?sPueSUtI)(5|hOA45 z)>z+iz_77R)t6>_1kSB%R55DeVI*%H0U3bbQaL&FE4p4<2>AZ;nYkV6&|%c%-g&d) zy%n6T53j_Bafk){UsP0vnendL%y$gl!_fKnA>Y(itfITu$rxIWK!T;IG(O<#L*RCc{et8W@ zEd)pu63Bl2dS)vnSE36#p%hP zN2K3rd?Z#qKY7jZz>|Nixp}c|b13*5uG{F_hRj!SKyWs6YjphT+>?6<@+W}A#-Vq{ z3>=oo@mff-LQgtS=ZmyLA8vAa`Is&V;!{KhqRE<1x62u|JGN=N;=00-(0JLvm-vwF zt3h<5(8BxP_0-zoCnpkTAC|L^s%@5P0%i_MU7jK5Hs`xjXM;p|?=N&dzBaTK(WWcx zW!U(UNoi}QVXZ?9=~9phIf}Q|qjpUT0xy~Aeu$f@V1&M_UsB*ZcW79mQZxJaL4pGu zBn7)HXGl~-N_Y$%b&>74I0+5GkhqggwjNE!FS6U%jSbf8t+=v?E+T^l2!Em5_*0l11bA{xElZU2Lz{Tb#;Bk!+Pe zsxRR!(AQP)F{AQ>6~Y~*NTjH3Yz1I*`XB4g=7LsxpR=M+w0WVN^8a{u;H$XFp~+!_ zeOF+*(k3a>+u^1foRf*Gg8fJ#DuWiBR>swh(>4(U?FFNIQj`U!I~kmI4A-l$1OZUh z{drxmPu;iT*`fa7MffJoO<@<;i_6G&d2Zb+^^w00F_y31i2^2*v@RadG1){mYa^D9-|z7Y zeELG$C%=<~N;Gb~>J%C|ZQa<{hOwA-CouPpY>k$wuR)y-~Sd?v>lfah<;fAc1@=(%~29f-O@ez z&;dTg$o-iC% zuR(SugOjm8pR`M6Vcv;%!`dD-~6-h0-Nuj0u@qMn_$F;Qk zEu^wrtyXz8LH(Wq5<`IhsP!f35u(h8XE5Tsl?<^;_&+kFq1y%y5IS3!>1&Ob*lA7( z?2E~f^4($8^QryduadEb-q=r3t;m$5A5}MPh^^KeEXHB3?04UL8u5W0yZ{TNaPD8&`}lMWHF}%6#tcJL-sdE8@9Q# z&8&jZ$aj9d=yII@N?LMIAU@bxeAi_3OP$E6e4KA%TDfq^1GMHOdJR7CK?GYq^$O6e zk?%jpa^%b*VJXalqQl~;%zxUhPzYvE2Na_-ZmK4xl%D<%+(UAanu}JfdvTYy`aHQqfjv`z+=y{m-gt`m^@DEm*@UJja z?7E}y%bpSHB{`$0Q8}7vpOO&~W|H_JEU8W9*m!^Wg6IlOHB}DubsWdlGU&TCa-fV~ zRvM^6m)F*a7sGHg9WiYxA;!XL4e7c0l@e9X>7saH$9Ii0>4N(h@d+o}o8Qd6fxXns z!BBfxRh?5)UOcxO{ac(zNsiN%<`~91JZjUmlGU*CI!G?q1C&jIdfhEM37NHgWp@DQ z*35HDVaWq=jNNZ_CoumPHU^lr-aF=eEs3r}?cxx%VC&#(=%u*LnN_5pp2_ zn0i*0;%(#12L9{nQD++rRzia*ZC@+I5 z`I8r1YH-#a+k&QotIbZSybwuZY~&UL44Z~#Z^qM2OFioL+Eg7VKnq`w2%Rw1G>!Vc z^k6uFHm|7R!Q)0%Rd4%pFz$V4xOMxM`iafWE#JB>$V);A8VQhy9asT{Qqf06QA!%tUzgr*bvI49>?OoMw4)y0m z6V@NLb`$jkr0d(&W5a#65j?5o@?r1KUvM3A(=UOC7ACmupFv=7C8tTW4_H+mV#DrI zNVJNBJ%gI?MGZZOyZ0A_rI(V-!1kF=M>rUk6~iRrw%`jW8RB)YPGhTUF9jKYBC&w5 zeNH0rEiP>V@cug;*=PbarArEKTOHoFE6mfc1bb>04Y(A3#iAaSiUwnnKS{MNjwp*G zi1VEf0{?nrh5>Jka9e&wZTrIMnzsQp>S?pv5tp_vRAZ6U% zA^FtoI@Q{B?YKWW;NNRf-J* ziWzVWzO!_gmH19{SCUObNajm`(9LV+U=%{2zj5V?AwB`LmL`!|xwG5dO+ed!pJ3No0G`p@8r$-TPq3}*L+X8w5 zi(P*wm7>vTk-b^t?2gXqZn=q8zESf2jm8PCrFe}b1w(#7CdVTnx|=+C<0QrR>2lhk zu~(p}nhQT`?ZCLMM0SG#e!LSFV_pEpdAL0@j)xy2-W#f<5W%G&K2n?BC*zxl>oq(B ziL3!=B8LW*b-8fcl9Kc%F6G!Lu~#U^yJdiv5oBY5W?i$R$^gdSrtjAO3QTg4{?S+; z=2Q3P+e}E6t_j&FHb2m$d0!^AjxBxk#Z_(cy%4XVK%tVkBuLpcPcDDBEig9*t zNj#OGBhL(0HdjFSD$;&BxQH(;Deh<1(jA87!>^AWC-j(g=rwg$ZA?|Yag{!CVYV@%s|!Dg80fDp~T6W;Z2FHijyh6{^gf))lyPhZZ?qQ?LnoyQuLPt zd!(=s^f0B1kD~;$oUvaMF5 zv#-w22}v~XmZJZ&`6 z-Bc5&Z`?#LW|zHWk?PK;zV6sD3|kVI_5H%}CDsl$$rm;7gwG9I>4~J_RUmUoTAoty zgtUeqb@TWYQv4p|`gcx<45cX~@88_+CN@L~`*6dhvGswErwd;;r^iF}p~?V0>Fl)1#?~Tv3Q^pe-|-SQF}>g0$Ra<0GQ>Yxu`{wp9DkePkxHljv7l8Zx7kk`7XM_u1{goF=)&4m~8~ zbB{LA1Hd?+aHuv!*Mh3cM~$=98pz4MnvgMYpE?_}jgeQyXrtS+a9OLI5=~Z4cd_;j zlovxr%aS`kX4q)9y(<+VI2q#vomsE=S}Hzg6NW2cTyOk%5i=}Byw{{K`B0T>V+OW#TaVo~9? z>=tO6+)8hH5uU=KLZUh##2@GH#y6X6 zGX?!(4Jz0ZJD)O<`KAHV^Tq8~$L9zb^*Y-bqZeS#tuFJ;$P{#*B4S!|Lxu;Wq}sv2 zXzUkwj%#wwhJSQmQaFOV}%?G0v zyXw3L&fPddSQn8|Y<1Kez>jcGN3c2ir$o)W&I2(va~Xh#%gU(+0#4$)3=mPN7Xayg z)u|F=l0>mazSEK0g-mYk$L9MJB=LDrSjq@r8Y-_e3%SJ>6RGAIyohn{bRLw>Ka^Ee5bR zdEE@^^T1B{BTDppRP3Yds)~7*Nf3gca|a2ynE9S6`lh#rwLWN znRgE9q!Sj|y8nyE1;z`sV@bwLo*z|qYXe!}&-_#=bE6m43#~iv;|E(_7OL*KwnE9l z73HKBC9P-k)GbbbIx-1nh$c*C<)HdlTx;lzY0CE!Uz1L{KET>|Y5fB%=y!E;JRMeG zvtj2C#8eLtvN~Ug_8CG0QkSkA^L2CdTr0Ty1T2x;;-3s-3v_$KmOcsiZJMJ6vDXd$ z{h|L$E^a4#SSa^p#myQw7v}~(^$Ca1GchM?gxfP{4^KkmM72X>v#7eFnOtX%afKje zlC%p;dYp={oOhjXP>y`mts#IZyhdHda(S+cbbLbocLp(>;L@QVSsb~P78zzI^r`0zQ zA0Bsbrg77)Ix(}fevGj5zHvXiwx60&zPW_t0sfkY~%VI^sHRo8I zo4JmoN&Dxux)70u`?7kZCv!T2q36gnMO&v=} zq&DlQ4)Pb)4GwL1*VPjG*tS;C9l2G}PiyrsS<+MYzF`PcyW^$LuP~r%nTxCTSf}(K zrmUg}XzP@vCr#T-qqpe=9{?+I|Ux^sSE_M6fU{+lNLr%P2FY@=Y9 zgHMb$$yWcNC9jB2mRePk9k`w@;L_8cZ?=31S zs=JOT`iB8S2H618!i+#*?xJ^L@eE8o<2rv1zze{u?N?LCRZ9MGT_wu9ov-<2u_3UI z{A~KM&I(Mfy2C1T#K4KVAid}?COfaxYerp4T+Y(rT5YtQH$Op<`%6Im=c-IJ_rBlF zz2|o?sWwdN1#$eAbo<&!B2@aw>Q_UTs2i6<2l%JO1d&;_3$YQ1R9nPo_39RFs__{>-$>IYG0*>F z38?@I6{qZblrdSlyg$J|-YH4~c&bp7E*Nai@muGgYY5P0REfITfcoz1Pb>ESySM(l z6Tqke4I6+D$^EN5`Hz$8&pZA9{2@>4@no}baQ$$gt*PctUd(omuPHz`9vP3rZCnn;W};^ham zc;XX7pH)1kK%}4*%)i?h)iDh|SCePx>gZ)u3q+9T1-E@b6)c=t!TI?mthiUN)k5j{Wcd%HV7h{{Qi5 zXy;OIYK7OnExSP#&VvUJlBN75B~RD*V5UtpO_vw-Q0TRV<}}Bn8(AMHhs8!a|Fkkr z{?Y@D+>fobHY6pXO~tRVPo2`I(U4ceyb5rOR8Wbu1hd2x`kY6&0Z~x| zXWoqTruf#X(vaJXc?_;K)qU?(!lnGXp2J7J* zY)psI%LaY3>`tt^IKevYkLt~Lv6b}*H8wWZ9ZcFe?e+>~+l`eLokU){mkyp%!5Ywp}Xj z8|8YA7sFsdB*uA9)3=$>sDInzMJ6OZqs_JTKWn>o&L_9Kkhg?gmhk>~VyMq{GcV=# zS4X#-E>D|OMn(%XZ|fOD6Oiv3kw;ROyHW+(g|S{gR1#QiCBUXF#`)^$<&M*$So&+9 z?|8;=+i6`+_!#7Bl?VNvZqMj;_`3VE0%>FYTeA*5R06T%-DFBQY2a^-M(jNWgqx5= zW=MPpkCNzH&mZwDYX~pKcqkA|p*Jm!CC|lGOLW>9UbG87UY z$ECMZr#;kZ5zAIu*Q}q%Fr==9aJJ;P8M>3{cfxXUI&*12pm@C^&YKet%v2PPYa--> zptCU^0jMhf{9=kvb+-`&)};}$kaoH|BL{(HWwd9hfpq3Zyu3Y&mNgK$YFwFt-xW$? znGsbJnm7(b!O>2p42_C}x3Ho`Lq6Dh1>bc(oro0=@40b+VjvsFUXsLxeA$F3)*F60 z>+L10Q9o;DgH7Ty@{4-i=&>3^p>?8REq4_3i|16}4K3 z>Zqacr`zW`QN%NoH*q#70*`t<>$|N=!xUYk2=54Ny~ZAoRyRpXm`7I$y-UwPyFd>` z9fGBU&#UpsGjJDj7;JLRq3<(3o4&!xdJ6XcEttc+(3t0k|A|oWInj#9gwiVWY2*v7 zkDoXw3x^rjoAfZ7IeEM8yi(JHC0@q-pFXd3=kQj>(%$;oDfyeQb{c{B!L`&*mu10y zYqiU}lk_6u)2K*Y@zb6^e?4Z7$M$qKQ~z%8C`rDNZR>e|>iwKdvv{ZU9Xd5UIfEVt zhVk)T@8_!Wr_zdCFpdHoA0rLM1i@hJIuDpXy=;_Iu1-@DA#y?@)g2cbmn_!jTRZEX5uA z90wekpgdvA^wf&+zI=v8yASi`HRpu*)>5dgG_~dY4YB7_2zHSM>W+k zIIqeqZhR6`q=TCV#9FQDL)ZI#-)(SCXB5|u+34hWmHHX4HznythAK7PySbILKXM#E z*Ee2oX>yQSAp`e*;jEkaZ2X*%5!{AGS+J zu;2PPWNC;hqYVD0D;e~Z6C@2 za?A@H`WC+Lu*$97eyRBo=8RX)>X7tACsAh|6}{n*mf-|fF9|SHRCmo1t9Zy1snggG zPZyX$H7+TqQ8`VXYm?W`M~GHv36pA05{891$X3ZFj}T9o@v>m} zVn+C0g(UryE_}MO^ss62BMxnPy!F9|PyH`s%qs)k5J(6gUL-zw7>H0?=mx!nd3x+X z(8z?7QjK<=B~yS%faWXyp|r8EXz;?1|Kjo4qH(lzAc*D8y0z3n3BJ;?=p z?m|CHM2FW+6m|%j{_az5KEC)%gN(2g^+)PCY)BdJJFe>}#Hh4_jH z#bk%|>_-dc^t=8b^+C6Q(yMO=5YAP+LZys1cnf8CZ-|U8>a=`Kd~eXRa@v+eVm&3n zgjIEwPZwv(DzzOgvi0x%Dj=)UCErLzbQMU^aApn)X^gMFfssZ@MkBkW295Wtk<7xyhL+vegDR{cE z3T1Lmx?Jx)%7}&Aef!}L#MatbHiX^!Ld9Z~PjuY8OHpIW1MpH?ZgY+V3zqY!Z};%v8;DN;`9<_@A+Ow!@BRE{~_FFQ_^#IW@i~o zTuj@mtN>v+_Fd>g_M}AGDm9fNK_hDS=5lPywQgjg43dDoZ9jRAO`{TX!;}5;s1;vm z>Wz|M@dq}Qy(6f>fsGAwg1a+Ydo<6s+s2fQ1j)agQo78FydhWWJRV*3JrbAe%hboO zzWm4(+0Z*~k#ae%-aT>et!sb3kb4*8odU@MjPQa=Mvh7cUp6b%sRuSb^mtVGeVec) zFOv!S&7J4RPd*9f%ek=qtICRR$EDL zp^OKjL0McXCylgNIBQX4?4iutCbE{YUhbm3C&23h(qAlk#QX&weWyLU{h8?T!jq75 z>V6^UhitFD#fGd7g|pw0%34*hVe_Ffox0RR8^&hsT!`dQ$`vGe0md+jh>-vK^{c2z zUG8fsj7?pxt&{YTgavGavzWPPK*tM;MYU4C`(gH9*6UlgWxS+O?x@M7Qz=UDc}Ze0 zw9YfIZLGl*|7yMmp<4gGrBiSN5*s4ZjclmE(S>tTDLej%B}Xrj-3fyfQHBQ(ZYvqY zgfGZ%2UAllEjJpPgOf;Cf{Kx`Cr9+=DZK?Zb{*WEz)3vQ^vJVM%|v{B4>}KAUaADk zx*pQC*V$UKW6g7lZJznd!OCIJpJ<^TOxP#~uaJg*^Fru+xp2sehShfKp)5g#UzCJR z@3@7_Ol3iGU`jG`dt`D|PFz?#r?mTe;H0VHL6QkF0-j7cWZ@Ab5MJc3P$DVZX18on zu)=_^^4%9^S)N95l8yH`&=c(iZfGKZC7!+VZxEWRxXB4H#4F?_uU(xB{J`4GpJ`<-kIJ-0Tt+oAEuQ zo~*L5aMdFjv?6&gAK^LopfE3Pdo?FZJxsJg?apk0W;QHe?iw|9kx*)#h_I%g*@nH} zmQ9xTvgC4763_e@Jk`a*oD!Brh+@Fqrc6WE#VIpY!QxaTbN^PAJ5BTjjYvmwA{wPN zm3XMfYJ_NJ9b^b4pVJhA1sS1G*LCf=9=W{pAEQ0Rj*xW!%ms1mQmfzE&5v6p)B#&D zAxaW&Q|ipYIWDpHtjA_{SJa&rK7XJI>EKo_=y?`{V?!L&5yH|D?{oxdzEfz#-+RI; z!*BV)B1qdk&TK(MFKO(7d^Gf+H%Y`auIN{=ft^=_J$W01{%#jCO}hnOLk^j1=iDaO zj@NuseK3&?`-#Xx+Xm#G)?zh?m}kVT;cuyest*nJBcd3#Bex0Jj_DyrUkg)9EShol z#e0a=sKONsV5R~%npk$Eqq{f=@+tZl5oZgOwQcd|*fn;OA7o=D-X%O4X|86~UA0+q z3r5wpqee8OLFB6O$Pfu| z(u6$N2Ap}0jJVYC`CPS+Gjp8UvMq~%vTX62JE(_U{xGo=`lWYyOIXmvAV|4ilKlb6)(OI`9Ir*Hzqa(lLtYAuU*=~nO zq|K?M7h4!1z6t)q!QB(0Az03Mt4%jq(+-kjy}2HBdN+vfhsK>|v`G8+-EG;ew=pky ze|^rj%g?5?2R*iK2NhX-n{4tjX++H5M@s0qm%S!}q^|}|4vTDLoIRQhq|dSzmZ3QQ zRi@J+&zw9khpIK!eAy=_3{FA@0sIz0H84`BAC)rrio*Yn%J4)WX2Do-%CD$BI8;Bc12GnQ-bSm)?{} zzle{ka|W*HuNt8TgXy3DGB>N1QIdrg+?@aywb=gmdY4|O zT~QKc)GwZ2zn8bBwwG-0(dGDy4@D*;OP3h1+B)c1vVbt|;eKg9=KW7ZJZPiydyt+- zir>~Wr1~>Lio}W?+(97pf{Mlr0J^B-1NInLf*;3N)9?}T(kt>ee--h+Z_D)OIiq9$ zd-6*4ID|?cm-}VgsTqenHGP1GD2WMbeWLRI_wV0}x?Z|}9&J{a9N7ymJ-Mx~@x;ux zhiW298zW$c!mG6I*KI%EZl~Se8`jA7+Fw<$Os8S!pP8ZMv+5~NBfn->wvFsNB$Gex zO_O)Hz1zo?KZwDDSdp0B$5h53gs4~U^O|)lmi|hN2yY^zGrh7bhmz&EX55=@Ry2|0s++cUW*75B@I9@=dq%4-LLu zG%c{ysO;u$WQk!d==pOcs4+=rUT*qRXC$^L(PgI&mR;Y|#VbLR4r7xVE7sG{!EzYZ zu=iKg*iU>?r1j<32uz;}{YfeA@je6k;CkEimY*Hm#hYm(<+2bIS}|gd8K&(=VSToS zoC`VhHFnRlbn7xAcxb+(9nn|0Jpq>s3(y?_hK`8VXlJW!s|-9D4RQKfXVZt`MBbni zR=v{jlYMNqalKozxF>I4hJ>9&yo{Bf@6qfR&0G}{*`uo#pR4H%4%N8^M>0y}-_SI0i%(^2`dL&FWR-Ppl-~v_Qsh1x z9rwD4lex*d10*;PF2EOZ^YZ4}DBo#6RtL?!)Eix?SgcBmD=qQT!XdH;Ew7Fge)hlE z&GcBW9*d5T&nd$6rHfgw`Tq{W_qaSitZB86fAa3qgI;e)N=7)I= z*K4?bhz?Z>OoD2Gnc=0rrw2vFw(9DS`qD(QLGyjeNxG@MLA#iTjXg}U8~bCXip9Dm zBkW~JG%Q${I>sHK$$pnLT@=+E1HB!O>+&lBzv-VJZ*zG6XOCCcC&BMRj%bfoLjfFt zlD~I(zUjX`X6ny^IB2K!f9}Z)dbiY*vW%`RE9!{jS?eLzQp&-?GNg4i)SZ6g3%yyN zthUXRadWFFD#cDz<}Vifv)RY zE#~pqdb77Yc$+}-h;9Rcq0ufgG1lo`Avd0|M3SVtxIi9sfZG}BMpneJtVp)iIe5*Yw8Mz z{_gwP=DR^=$>v{x@Jzwwz(Up#``EGhI1Ne7${)5laP^i{xuO-hzLhRfj=8A^A{_fu z9NikIPBM=$QZ5B&XZTmM#OwQcqv`x0l>(h)MwTZ$Xc0gx6D*`M&rla&0U&jf%(74@0bO!*qHWtv~lG_PF_XtR?!v!%kKeWYUH^FnF;hSvPwPA8VN z>%Bb3k_EAVuh_poYJmw*-uhzgx=u!-1U9|4mJs3y%lWp5Za&Wdot_n3F=OTY*MLp1 zfq{YK2~dFWYkny-ozvDtY*TCAiaRg<&p52{P`uyq*Yw@Hyyh;^m0N7ahPmdY3K0~^ z+-9FD?8nQ^Jlitj3=w4j8gN$En_4ka8(Hy%u8j{S?{(}e6w%dPWWz!}g?R2ReU}e=YTG01ayXovOeSEJu2YqukW*Z& zjY?^U)gLdVI-wnE&Hn!U*wN9!{r}tt3`U&8X0M`xD|xmh>vK5m-Zsym7^$t*%Q~sT zFf_dn-Vl?6;#?-RSyu3>bC1zZaF z@!9EQJ_1lw$^Y{b#**S&KW_)w$8|F0fUXFN0waX;cVveNbX2E6w}isS*Eb=D_!sl3 zEr7>>)C-ZIx-N%2(*MH?o@00D1qF2guk zbH!Za&U5<%n`+G(OXxy=6|l=vP2wC!LW}na|E(AQe}qsF zd;0<5%?#kBzjQf8rJ9ftZ zlDgh~v#s3h_j_zfZBc0nXjN_?ByG5sSHU=46iWE?X&$n{%F4>X9hkuYJK((azwHgO z?$2o5o^R)|L$UujSuIxSlGy2BSRN@P27y4@NfQ7fnFY!q>gB&J(Eo4O{b!Q-EkUsR zj<#Uqq#v%!SccqMJ~KCKh*=l&Ca1_pf=1zw3!Cbo`2m)sLo0dw|GLq)b}}!1eZKFs zx2(B;cZizzv%RkF(?`^zIjDcWE#ICBNmq*fMQi>2(mn{Wmy+)MxQWKeH&eIjI@$pP zg06-{ckbQG0v1We{pJR$%rt6bMB4|L&9trOD8~)ts*>_MOg_0hYL|l5|C|2>{-lH$ zqdM)?Og)?B6S;eG`zS-e<7XDFrSR zNRiG%JyYN6uRK8EE|meY;s3nubk5=vXt*`zRDwirT=Oa=T`h78W%%wpfSzra^kSf( z1&D%v%3WQ@vL8DtBw)^N2ulCjnYCQSjZwX)t2tq0W@H+wd!N`LH158ax&i-Zv+w?h zPdRsU1m(mTa;z@s-pP;)NY@_kT)Scqfa<*L0f(KM&9IQNG;?QsZ7I`0{`kTsbDdxD zERBhTo#yVC`0neBz`(?kl9CD}>A@l~t_G8x=YRjcfj}Vo?$ZBU>?3nGl3=X7C~~`$ zs_?@o^r~RK3xb#4fLM(k?_w+f2-ao+6c`!cH{7udv?Mo>;_o<8K;(Bcd*31z$diAw zqa>Rnsl~$Eudk?d0j!LYzh5VaJDeF)yiW3NO|(lCD3h|lyrHg6Sp0l%`0WJznPdIB z;FR}f!_iu0fB2&R`9A5!k6ra=O8_{A6=CI2%C+OzvL+fzAxC~ms;gADwe^0=V?Lq| z;Cr^0v!muBg#NtH)lICB0wAUA!N!vu`&uw9=hF#v9FY{yy}{qvM0^4?o#@JvVj$C6 zhUIr5C7Q|~vd{Y#1{<5P{42AGP=E)2WqL=xfCCJ_V~ljwjFZtW)RGSoj(P6|4;~nJ zW&h^~x&P&P?W7<*{Y{~1*Ej=>L{%YuAh(XbJXjvgwoL~bC-atIqM!l3&8u$daK^vs ztC?;~y3e<9``qE5%mMLy6Dvv?G!a{ZH@Eh;Luc#;fIUo{Tg*YlDH24Qv#W> z>Y0)erhdnF#oRYq08BRcUH1NzQ#*BmL3Pn!`smo09@HkGWBxID{su4{_?aQ$9qt=J z&ZnR(6!T8NcI3t3#&m`Ep`*ny0KFq99qXjm%YcF2RSF%E+`rh*c>+40tZ@hfAWP9k z<>|rtZySq^wV0dSix(eat$7d9wCg(qh(x`D^dvabJA?~siVbTyf$4D&pLJis`Nc6NlT6h0 zx$RhK#1|SbC7nMu3)Y20aqIF6osDumosG|y=9M7`oF4$A@a<))pvOvXQn}Buv;Ab1 za;LmZFtfSr&bL=`;o*v1CY1KYpjp#G2weSu=vC+ao9D5!Lo53}qUMIj&G}Z(=c4pU zMaw6e(vZZStJ`5Z3+c7=Vr-ZDxX-Zm2V5N@sQV9q$OQ7f+Daf$(`9~yb?c&(-A92& zw5Vdq+}u1~jaZtQ#1Yh5mBaQN9;qaH433a9tfZ{W6UmXa z@#{V<|DCjr6IK!^%0fT8_*9Ou>&Ttg#H7jZy!`#FOio^2QK*$t2-!H6S4yG z579S6lxoMt(FbyJP`pn~WiAaxz`&C@ia+1AJB`{(DlhZ=lDpk`=BwY)*kQMAqZMqNQM&}Pk2#LyNnt7 zHpT)jIh$zcsCjE^+I_|{mzqAKt0=Y$>Dp4Y6{s~!cN)&EXuB%I%%ZO)99{5$|X<=fdXQ6*OD}4Yh zzQ@4SYn%>H4n|a6qCqSTSAiMq?ljSb?2KccuO2gbJ>S)v%ySz6joRem9_6b@(YFJ1 z0^|Wx{aoj#hkB>c(8UWFxRTp(N*Irfo34M{)hcJlp*i4z{tu6e)izdi*9kncpy0WM z=|~r*9;Cmo@lH-q+l@-+Q$1>s{b)LmTF|Ub6JMK&NX2s|-f-zy= zW2vIkG`)vM>`g2}qFOmku??&$Z7Dab11`aL@- z%(9hppQe(4yT1fk)WBECE$jxN9{_c)5PaU=74oP5(`pG|?;yPtO95tP#a=k;;WMB* z@R~Qgi*R)kcy|c2o(1Qf^LNiNT&A4+3xr3AsT=^r=RU%a za`4itp-~ELuY!-Y>Cs3Z8~O=0i;xZ@-0+RFNU+wtZ`xvh8%;W^UZVz$ZqImea@liq)xrmVoju z-Osdpenn{e0i_i-ES(q!(crW!p?-fOEY@Zx6-YnmGj2tpDP-dO_&itTf-b(|WAEn2 zSHg$?^DSE*U}j=@A3z{dWN7CX^MD3Ga}sKqlEzSJY6&m?wkX=NMCDqY6;V;QHGQZQ zC#QPvauEZ1F)4(Yd1=B5;8&7)Epe^-(rlFCfs_V(#pmc|W)a*v`Es#MJhYr8bT)@Z_rZ$(}|5Re>4by))gin;pwP!V@H zr4+F!}#*vr~>O~f$!(wC-5wu5mhw%iWscYfiu`JQ(dAEP-!}s z&#FA##JOWy$66&XksOeN7mQ!&H<(585a12~%SB4Vg@tI{ zC(R7jO{C@%t@Q4xZc#d8iH$D<6NxS&nIGdxZ2FXG;nc*++Q87UQcJ^3RS~9r zw8)Hov>+Lj29X=7%q)X`dLUL)1<9f6I3=SGc=Ggr8`JS%ZQ`mjw|9z$q{V5EtaJ&v zSZ0>C#GS$;ON%Nuvc*A|Q6$t3tE!5_;-E`HhZSt6W8@|@8!jQ{(XXKQwJq?KLKwe( zjbdW3u>!c?<6rGUghbuW7``B)1fO{v47aZu?{dXjh&;8Utv0*;i5ejE|}}$Jz;I!_*di0hI^QGFD%sZIrJq zt1|PQ45JK%aFTM-Jvzt>(9kZWHz0MnZi4#Q z*?kscbhlMhH{Ej%$5=DJzJ1lDNqZg@!tb+`Vhsbr0zmn}?J{7@%@D(|$o~Epr{XD} z2X3kka2$NYp8Sbri5vW@LTluEd27rv$>v`M1h$rM{du1sc+3~bOnT}DYTpxvA|Jvs zCUo>B6Ra2N`lT*^TzNjwL2T=H$)eUzR!EcDITHc=5`-^T!e-QDSY)JmyLyB2Bd3#N z&FZD;O@@@xl0jH`RVASL+e$EM52;R zygE;Yu6Z91_Cti^gug0@OWw0LoKN<|UsSZGs;4oRmLLBo9)GMBs)=}G)z{ZAnR_i6k(aLYVxlRMO0Q^p@1mNlD#OA?F6VER%`kfz`?U{X zv`paYS%K5N1O%^%oDK(v-c5yybs?wr)~9bK`1lN#A4<+wm}trll$+qUAHG^)^~Ssi zkfe-U9d(o)z#>i?N)4#_{cLX<%#2a#l)Cy@muT1Hf0fEy1-H!zv+GwyT+@7k zgrfRc5Cgc0o)63ah*l~>wjJ*D%6adJpM*1R)A+8-k}{RB&tvj08g%mm56;R@Zw$Gu zD^B*EkHcMP8)qsAW|V6-TbF1L%!di2X3-9@661AH0>PYhY1_#trRg1p#tAqjwrM5; zI-@+ay}#t@Q|(FGI0fmi6{|pH#7Br#Sp9wkOU!X>SKZ|NX*}Id*32p8qzFz*wXUz0 zewIn`_AEC0Q%NQui8wv%H*gsEfreCVO5EcxmN;WJ>2Y~C>S-T z+t`%2P2lQHv~P=UGBnkseR*%8tLb8%Dcg+W6e$47bz4KT=(o!j*fL*t})G}t)arL_NYJT9$?(1Wm ztM?QEkSE&!>z54N-e4hy8HvS*Z@*Jc2)<@O(`3h_Ti8M_b&(Nk=l3hi`!gDvXxcTJ zlp@Xg``fqXKW2|RXn3^|txa-uw)FX?j8_N|qYr7?2&5(|F@!Y}mHX|VmC(L~hHjUk z94k$8r^Zcx#k>VK&&X5V&cffhQ~j((6TF!xARm9Dv08I}WL3<79X>FdPV_zU>NfG& zKR59?p4MQs6WWyS%9GHqTv3EwpfV!rE4nhc1aszhM_gfQ(}5&2-sG)+b3nqGX+KwW%z#)6J!1Xq$=f*VM}^zzLHi}=~k%)`2xq%LV5>iR_; zvo*=ig>G&+?N}vvW;!S|@4P(f$Ut;AwoYj@wWetZnI8;A9Bswn2iIDoVzqlzR9bs- z-fjKzZ~PVBirsF642r6m);$`2>K9Sx?;mmaRH?Cfx_#>WLs73#DjxLWhwWK zj0~_JEnvRG20V&z}EGZeuB|@bKmf&H%q!NDi=B~o{?g5@M z?;kHI^56OXL1qU(L>xr^gd0XK*IAOC{Ncq*Ibr#eyu)%&104D*E@^JRGxNgtx z%d_BEHT_Q?E0oFJ^cT-xe%5PKemcKc5jN=G1Ns5cSg3!vJ@>Y=Y4F`h)3!{{E%A36 zGww^-{YuIpuP7zC7Bp>kl7z$z-1Ty@3-IG zoAWUjn+$uoE35>H>c5*z(t^I2gv*}#IlVn>_GTrJlp-P6OAn21d_7PTCDFhKG%=OLg=6@4=rm#o^|-nUAL!6&Z2Q6Yb7O(OE|xA;WL6t~tkag*`UI%XC(J^L2c^iZi$=);*Havfu*WGOg;9G& z|Jz+jf-LkrM|^G%zT>(hB3KYf3r);e-CRU*FgM9Lp+qO%R5+ zcO!@MHRcoaOj!6*a&uEl-^a}_s|Xb;#chSO#}4#MNF;H z(B5VZWW(w?b{i;FDz6nxoS-_^MYFgwwsjT19LOYGQf$913BoIlDJJfR4s@tfAlRT9TZq4vEriR(0n)C@;2lyJb58r3!8@k#>Rq{` z9T!uB9W{y+6AV-Q@Gl5ENO2G#-CehTYe+Fswlv%k*^?hLEu_I9rYQjTUL5Y&n9Yls zZor9HYu~YfNSQlA6h$c}2qq{e)_Wt?Fu5@fQMM2bCqX#i0fm-&L5qPUmk zmzS)U{eO-Z-rkwGoM|Xdg@ngu9EuCv<5;^Cs>PuV^IpHyn6bW;s<$NQ^q3kohAhA3 zciJ$FWWzut^jsE<+8AN(MD$4xY4Flme@gxzn@;??D<6W~`4veDztzJfDGny*^bbFa zyfx}&pLE_`d+qS5Qyz8Pe7UXN&2u>WQOtLC9({9NzV4;_#%?6fvZX|A9r@em=4GvT zU$(p@ZjG*EyrwPej58FQZq62%OPMs}r(q0kT22S#Dz4AWT&&mF9WGK_^SJXsQ%EM_ z3`vQ=x}lY;3ykso!5FT(~yVve^CXH@BM2;#`Ei;%)R` zhnrw|u2Tucc=iCSn7U)8M5|drSR@@gGN-luS6S~67@)#;tU4)6q{e- zt**_hlT#$eSlppo==k`UbyOW>LF@B}-a3~;1yZ79SQz~{gpKzw=3;p8`{k+1j+>8V zP;4W}U;b7Y-cuH;rvj?V<{aVmkDQejnD2|_z&k8sdO)f2qEgfnddkbzf8rURi*Upu zF^0SGRZl%R9vebxw4*|%{4S`!tUX=f*fC_R>v$hC2Wpp(4Pz&@;oLD|M0U8wtb)em z;bHcqE1WyVj6XU&Vs=0n`JpfvsSVeT31ef2Ps|DEP<}^MCtb-u=F*wy1?Ro+NOvQu z=&(D^6)!j`I$A$($3~$F!f>6Pq&ayz?%oeE@`(;3bmo!aROx7afKcLb_&%T2dK!i* zwv|RC(~}A;%mo=OM2As3&(8nOr5uqbM38|<vXpbK<8JyQ)~z5+%sEDp^9UB7v(b#9 z92#wdCoo5vY>s3h3C7==$BeV(5i z$)k?V9F=E7cswJmSTNU}bnKLd#;9_-b;_5mOHu2R{#r0kHhL1rs*O;p5&P{lsK%Mm zDbJ5ct~pGaU!D7E1c?iCa2|Zg*?8`Al!GK=CS6>ZOEb!ed+7EhQiK)4S4l-usi<+5 zSM>IomL^+5wU(Lp&K|jr6I(*9)~s_OthzlzodlR_U(()scGc71}M1R@KzYRO>RBi0Q)>SamA!VTh!60JnWMBub8wSOFwn1LoY%kmNjOSU z^RDdv=#gi{DI!JNJZ*j|{9OA5m^lGDlxz40yOU9S!C@51vU({3DCLwr0%2hxAv|qg z*m{F~h|Ti+Q85oVuFfq1(?~NwrQ-qgjp5sidl153|whNjuCtR_eHg73=|m# z3nzC629Q+Z9)!2=;k}Z1>ct z?qh!VeIQTQv^y|(7i7n9keGT>OcZ^0aDXru0UwA3Q%($(bQ?1mB0na`GZ?b2!XoTP z2i%4`bnzWjf#)ZU;PV;TmgI!w~h9d7(p z=@DyO)DiZD$?-uoK+$M_3(5a_^K9e-lcz?Ih>PJuUv-=dt*60voF zs0J3+18d1K0G=aOOJg_^N>RY`7NCY{P)69V^8)x2C_w;pO~}96Vxodz z)6Qd=uDG3Os3?eM?~rjt!Tx+Bhaol_)FoOw{iejJ3(0y|A6gCSL>@c>k7;!xi5`J5 z8%GAHQQBa~AXwb?E<08k$mS~OP!8k~n$!i29o5d|g;deb+YdUDj!#gJ`}E z3hBgD!zk&nHjf*0-bBKSx#9>-R@6KZP;5X^d;yNz8x>twbwic62=Qf)z1yL{6 z)a1gRa*RmsF_KzU6fC|`Zm+VNMplbvXdf(t`*LE{iY%{(m*O$-c<2}2D6`2=PXsci zne7_&qC$d+&8$gWMd50wY*;tf>DC7|ZhB%7C7raD?LLQT4Q~2rtq5|1XFw135vLCA z%$)poM&@ARR*B-0LSE8_N z7ffFPpkp&I)kCbpKjc7Cx>3ttcY0TV<+Q)@R{e{P3GY|6yW4oh;p8d_P# zW$Z$p4R1z}I!!0=(#zkkT5GtGe!u4hwua+>T3iV{uosiT_pvcC1`V zm-eNJU__vh^PN@YR+IGmgIR}> z1IhBv3DxQ0=90?lsMmXCN2tl&1nAC%fcvo^#u@gXvAqdB_VMG#ugXj$NFV4V2QTny z%)QA7(LvU@Ef3r*)+-Z?gaS$fK;Lxp^3eY>AC;hFnI>053eIm&j5}8vo$g8Di&)Qn ztkIGtr`HlPFkIR8$M1AKI4VldVs3?ikepJZ4G|YAKJ5#H|7id3GZ)R_254hd8hR}nv+Vs{M()$|)v_fkwebgY`@(^Bo2^t1DZY6BO3KR1Uzwqo8Vk5a># zYEw}4@JDBcQ7@8MQ1i5MN4s2ECe*|FV*+cZKK3`gdU;FqK3YyIsx~=!`lkj?FKSyV zUJJ8+$e=h(e&|PRS|z*+3{m1VPO;j!=Y1s@nJ@vsye*aW<;6LfpndY!a~-|@5aGD> zYWCrwmwLZ|Q=P`+jlT7hCT+EGw&EPehmPq zIaUNSwsU(?T!r5+T>?-m@SiYI6v`r zS5LY5cp@tz5OW1Goya*Wl=PmL5J`WVsFl_FfxgR;krSl>o(pGfIC$*c(9?jZ$xn@W ztRn83*aq+IeYwefYHL&XDfK-*RU|GI2e!x9%(7VoLCrrar81|S)1@6X^Y)x_yXLQ5oMZRU!`(rNaPG!O62G!vE(%bG-IKUJ%>1SqYAAP z16w<(QKq4&ZK1Ag{x7HrCE z;C&6`YIMSD;~G_1+JBD4?WhxZyIq$X%HjCn69k2tBwB_&Gi)SQz%nA))+*oi z2~6I~ES;X)5t?29N0$Qea3zcfPTRJ~%aAaEdaFF*GB*J=nfSDcMy6y*TMTw6H|(pE zuHMKB&q~$vxMXXOgiOoKca6t+6=i@b!^nHRI%s?t-BnUL5a+Ph?<@&S%3I@EUYA?< z(^yFD?DF-CXG79AYV3SX!OGrtQKl9(}XK9`y@fK;PJrCUNL;>Zbi_* z&l$Z4*|ECA#3?8XwoAea%xrAD?|nMz6gJY&;T_)2^(C_I%)!IuUl*&_fsCLO0tpL` zM_YlAax$I$pdYwjeWbfN!HP_NWc+Uluawnm-dE^o>(~7Vo)yT9map}OWHGH!m{?(C zv2nfNQ+EAt2fN)|O>`iTjD({k*K~x=riLEM<|cDDrGRY!Fe~a8W|lrEE`A`t)hUR= zSVcO#0$TaCDX#bKhddtMC%j3E zft>{Pe1vEAuoIfStuQCyExSA~qi#{`Nj&s!{$@G(+rbm*qp{+sRjA|VOJkzCODHD1 zM3h1Co7wNDZ>PE$w~~1yz^IkO8ds=<+u5B9(@o{oi-((x$R9HeBLBEqHi$7W+5;r0 zJK8WCA~zmzzGV_knL0B00wCzy8VP76!vW^m_~n!Dxk-t}2Dk>ryL%RgQ!WJdf~k{H zIIUNQElRSZ*iHw~$%o&g=&>CF`Hw(6t^CK)l2!2kWWUXF|s7y82*d z5-WImQ&UsXhf`pwyKDXzXUBExHR$l|g(;|nK$r|-rqWu&;xtz^sc6EeI)JZR(q)0C za4xR2oR_l1)m^{^&;a)&^T-=Q+0MTlnBM^7 z5f-7TPGp(jx=h*Z0~{P`M;~jO!)9%t5~D7WgyVtA{JT}OgSXM2!#`yIdS?OnMk}c)KeF;G+bC?Pi^A9;ul`$? z1)R2UByPgc#o0OBf{~ed-t_W>)OMu6OuMCX+;wTbOHwYlbN=dt20C5Jp9YYkO?WxWx_a$x5yL;LnJ+h+0k)b5DB zPpxlRx9Bk-Y1wYmw@eo!Iv=5=Eoypjj4tQgZTnBAje%Z?+%lZdfG*b+HmxsjI}Man zl}KtSzbRpLTU*u)pB-fZn)D7X;{@iR9`>Fd5|5vQKZ38N)#I!8^V%fTc%U2 zn=IyDsyTfnBY3memGE|^Q35#pXX9#<;E?+e=GTbAKq3-jPa5qRM*ZX$TL&MG-iQ8V z_#K0EX!?&QrdT9E6(g;_Pw&3w@$18kUv`@%1$mme%(W=H`Z^?@lrqGr_*7cfc8lKq zuT9k}9Xh9ofG-4tG)_k>5w%zPow;6*2pEtU$FyrTD}$ZKbVjf4SMg*|x7@c*edyKM zR$!uLPi2Qil>i4h;HyvBoL{06901*`_n5IeIriNITz)#qWoY`vU>SE4b16oPRdxM0 z;Zv#qrc^%^Q1~?B`a0=0G0$p;NJd#jE`pScF{@&~Rhkv-Pea>^voSA#>xn~|$LMZ8;=BG2eu}98=n(&#m z@`k5CgxbLE7X$l}H`R&U&3bvF%~zEPtF8V=HjO@_^X=*w_}HkNR+(kG8L^h|+N#cn zUhzLw?xI2oe1|}y(K(*47Ur;(g|r3O*(z3RS~^0XiP)Rxyzmh!9B9|`K8&4@PrUmA zx^hfGe$+EC@GLb#eG-Noe+8?acrjep2-vB#Bp^-LL`uv((W;vziBoG%dAT7!HW2`m zO=A)Cy!a0L+sPbha?q|E@Ow1=rCV2q^`Qd$=rJt|40^njciP1rTg>9!`M`{NIgBM3 zF5+ya_(VZbN{^%;q(*YckZ*o997PINg4*k{5s)5?1YwxQe!DxN`8gG zK2|DW=ex>chtWF4Pjn8}2E%Yfp;teo@X0}v5>;HW7Tg5naVDqxt6fge?{5jNPKSL8 z_BK}Hb>Pt9BIc19>wKnlw(i)zmM`yqzvbVFh=+^AMH()|mDUC8cK=pxiLfl6`;^g9 z>l-+!|3=AGTg)r8Bq~Z!+}|3FhGBHA;`KIzan6{N?@gJPfzMLAtK zu0+EsRlmYMGcl2m(iuYw`u8(HviM&*;HLT zdhuC5F3t})v`;!oF80>lQ1qWiBVjz5*|GO4t_~{u_m|$xi1!J1o%47MzKT0`G#+gi zqLUA}8q|rl()lY>5-2GldSl7pC+2Yl z8El+SVqlr(jFbzyOC(t}>|Azu)PpVrbhyi#r_O47Z}iXR4MXLo1Qv9W<+ER<{>f6L z5k+9Gh+^WiUWV$Gs>c&=h0TL<%;M&&XOW!Qj$0tXpl4u^N*PPwwRi`bGU|H-Id)bY z^edT;&1mV52KI;9r{U`w(HmC62dDCt^YPrK>?Ln{Pel3VPL@R8_o<>x&?{6oQo3>> z0mZZ;#-PYu9H%%hYyIpW(GWyJ{jTE0+nE0SFXn%~5OVVP8jA`^Y>BMyi*wqnG1))6 zN+t0rn+C`KFB}PjpYQi`O?2StK!UzK?9HzKLL#73Y&nwSmssrnb=eZiw6qQCp3lr- zF$qT5)`cWyYr(=^-fP(0f5Z>j%g*B6lfK*);UEUP2_(jt4h{~nTIDN`vu$|AOJ#=i zjQBYuLi_dtDz628M zTyu5Rk?z8ZwZowBGTL3_5$6$&;7a){;eVUFz0ho^QE8cwgBe3&+8IXTvxXzUv5>{1 z*e~qW3>bSsm#uhVrp-jQh+gqGZFix{N9py*M6--oOC2!IM`wO>8Py#^Sn+#o{ZYBn zV+&~H?`g*6kl(((ME`E^jjTdcd(_yzY~Am4r!r34G}r{a8Wr@ob*Uuu;2-##9ix_8 z&V8`}FE(vpFtq3L)<_ZBHhiyqX?y6-)@qi(^xqy6qT^0heCn$Sy_e=OTG<2~Kfhmm zk*%Jbn$iYYJC>xRq<!}Y=sNyFrxpvWblXN@9YPqoZlNT%*Hz#Y$0e}M zbJdl@SnL4ZvHUl)dV&&m-uPCRA?KGEt8T`E`r|#={Q%nqM8iU;$*NvfQsEAgwY>Q8 zgu|1d(;9lz3SR-pD}XH9){9)8IKNX!G?{=aA5bThak6s1jDp?! z(#+Qsfg7s7Ro(zEXAPS(CLbRB6Z2&E%4#sn4NsB_daPg9@2HIPPl=ut%Cy`WM8>Pk zs)8t2Qf8++Ue$b)0;Vn%&5|1D)>rinuQ{;|_v{^_z7<~DHJzFtzO06m3pr))rKfy1 zFZ>4`HAGibNpSC0D4x98#z(v~Q!+N2`!caWz93~l(b!_<24w=Xop4ijS>?#qRLxuK zMho*Q)@qHNCKhJexw>lE53>G6d|zM$1O!&0f+%f!vnQy>Iz5&wxrOTk8m>C?uQ<)j zQj$Yx>XovLfi!3j0Cru&E*?p9{|Uorv#!5Q5bwFL@X}gzcbS&MyG_R}&OsTc{j`}& zTZ>H%V3;q>Kdn5kH+W4_`}g}KjS+7Wf$q%VfNF~XXu=!FQS=Cucgo4Wig-5DRkKB)v>^u(e|1c zVxm7eq_=K@(&ZOI$-dCZlhM7ne_uYP5lh*4Y)4JI`7?_Gqvwf`0oi`4eABGUteJk7 zS5}=<_m!HUTi@ZOwkEWO$F;oHr{n@*R?GBn;E#cWrsGnu;FW0gI!hr9O-BXVcJ|va z*GbTuMXuq!1{+u^Mz2_mz<<_$rpmUqPdI&2m$ndpo6&gJsDH=spG17=qs`^sBM=As z88+{9F&ZC#%tUDPhkbgJ5*jlx4m~_xLG1~`3T)Vd;>-Ji_V`D&yHEf-!1^+}^Lau4aB+_LM<$eB!5;E4 zNY^L49M6BZ<1d4oiij&yh~ne{akxmlW>x+=BJQ`mIC@WUx`AFN!#JS&2fUxT;e3%) z&^^P`e}p;k;>}zRt#{kpTzB3sMMR@8hDPs))e~gzoEb_lZlb8&1bLJ$ImFL% z*43+#|DAJLS(%l;TE4+pxq^H_FwFr9cq+!F4MY(ongQ@4?@t~RTK}=QdOU%3d`a+i zLcswIK=*8#E_Rrbg^qI%7v=p$pw%2=7)7b%B~7Nj(p`(|pJntA#tm$MKyC`j^8j52 z`Uq1|Ue(otLIz!cCgLI9-oHL#joZFdtasUd@bIBY z10%lJpU6It&x8UwRR0-I?7e`9G-&`E!@0(|6t%Rr(9D6OrJy$})>mb9VPlY30V+=fjM&MimjK41IH$SNWBtwWD`>39I|rOdMU&@hpK>!*x0kX=v9~KV z5x`!;_WFKk%wg8kMa%O82s$)KwdUdt8Xc-(d=VY&sH1B~GW5Cpp>GpSNUn##({pT9JMnv&2!DhT~i}L7sy>AwDPyhE(Q68xj zNiw62f@cfJim90g&^XxAIZd;5h8oQO6BM%PQRwb7&~AExGQ9qjmPQMDdFwpYfWpt@rTNDq)$HIz%ql<- z)okV@siT|fK`T>g*}6Za-E+W`PM|=arCCgYMqyn;tY4VIn(^i3X3y>^_>ne{PDRDX zzx9%@DYaU*TW+0jf2XP86R zIRjx2)NJmwEY(Kn+s=S^bkQFdoLA05TI05&0IDH0caN zSb4vnot&&tqS$l%!nU+zcKWw+%O$*;Gh~`~_A63Zw7fZct?e%75;Bjuc!vR2*Bbl@ zup{7clu0KnOV2HakOW0@i%$D=M!`gmN zjl;6u8+~>4=zjOm<1DG`O{D$tX1bGJY>dTU<5eg#n*)e%d`nSvP$OUU$rBXhm+Wei z#@5p~!xdLf)!(2MPnE!dl!U~;Jpf;Kfz?eGP*8MRUBmkSa2k=fB72kk6)uTBrYyAj zAZ#i*n{3{j&6+Hqw~a<~aE85G+wTQfQSZ$hC>Ejji7DSwg2Jb{%&GYu)WG1MJ?i`d zQ&kc0x$>NKTTk)NBlyTry@n&WwjX}wg_0B9q+v4+y#Q$qqFRB*oYBkF^MkT(&Cox1 zog~($5yKe6f;=tli#Wr&u2wz!d#`<_E+@S|r;KrT1fAT>K-WBHxgC&3fcr8ZV|foj z;nQu+zXcvo^WWn^2}B0)3L3;I>f^6sVtRzhX%(}=)b+UIeBLOC*2XL}hB7hlVvqwc zz{%B>72zb&VrC9HZ|HniUUnsgT)w@(vy@%SVrgr-;=T|= zo3vean_RzejtS&?rxH%+#&%rqy!k23=W6;4;Xr4OSnnd;?<^eqYqXI#gHu9NYmsf?K^S-&KH%^66aXauByx8rRD{VXxD(^DG6?3EaM{-|FwZvG;j~RBK*U*cP@vI;4i09gJ}9 zCj0?|Iu$W#s22DB(Tsh4Pn~hQe=TqU7UIx@#=UAWdvuCej_%#=NMZrqmtYp=2$*j0 z#OlwK8T~e7v}c$e1vgFNjcPqMO`7!8~?7M$4q{0 zZ*1!O^3udc9Pf2nqsL9V@`0J|G;<6q=1E@{_zPovW#C#BZ|3-ltGsJC=1z9y1$L z^Jzal(d)dtCmFI@c-hHTLUB$U!Ld#uR63=J!7(2mL2lzd`VkzX$^L-g>GMUOOD74- z)STn77xaYnJ-=3A- zs%B)L+MuDM5+KKlh<^JssgMjopz_H2oi>v+;t3-oJ?Lsl*f{~?HWsHX(ll;~e(m-3 zxkMTEnZkb+uc!GKoK};Fw1|T~Pvml=$FZigfgK1x-l*9hKVD7uy}F2KRQo+q&9rJx zPoMFP&hC-Kf(I@(p#)@QYgrRyU{U)*v`>%p6?L76+lA?I-rUDS1tzv1qONIEeXMI8ANts|I8TN2uW~{lkek~V zFPUOjbw(_Iv-5p>IB}VMD!5$3?27Ns#=on1jhDm46`4ei@RJ3_1SLX*VyY-~EP{CI zaP?|;eE2*RUX*yW#_SJ+5cQBDq83gLN6kdfe?DA&Jn#0~CYfD?&6SRx9!D^D_zLF$ zK1*>kC9fmj`i0B0)5M75d>{O;u`B(9IR3D76(H1@@P&b43L}3^F}*nq&J)gRuitmy zRID!vF{UQKRj-SeHP+v@gD9cCx*%QG1VoK;=2KCg-lMt0$WTm17lj+v>G|yLtGm z9tPSv&~*bs1ZZQE0y{$m+wXQ175`1WO7>glCxv1?*MG~8!}D~-p*~mCP+GybK4_X% zfIwEXj%ZmreP6omx38>LloU+D<&vwU?GQ%Vq!fIhp<7Y=ct~UySly>weiBXP&px}E z)QK*J{~RkWs>gm?`1L0&cSUuj6|U^!FG)dxfp+<9T5M&-E&dh;`tbSp-VI}%t_*Q0 z3q;G!X%1;)op`?wTT3~gAwl!qm@f>F<>O$(wX)gg;Z*oE?k*3HW-Yk*dkm#>Tg0=73{`7v{NI=p2E(E<5<0fC`p@t0K&eaxJ zWTAD$O#Q>X`n{_&gsUe9AISR_G@7}0+uX9RP(OI!_rlyySL67M=Rla|yVP#gGNcyt zzjpuGcsew0cA9vUL-OxKm>$+|Lkqt-@SP|sW0G?wj~VT zdeL+>RNx=RZ5MmAE#`u`&9x?)9RD3ihL~l$R9IISKH~UO7{ydfn3?K`FIm;8OX;_ zV`|K-YxZ{~7h>w3DGPav{;;M$q82W;w14~G=4-0D zhr2sz)U4;BH%UDg9#%i@6qv_!l@gvUB=YVmLv2Uy@Y%*Tao<8VogGip*-_T)tPw8i zQ!^kSim;IoGcz;Gv+@_2XN@~F2{V%o>SKr>|Gmj~Ql@&+EaFUh7upL0wDA;7gsCZH>GjVzMs3qTWRYLz`^ZkTuDnn@{%h~gf|N45OXL3p@t%ip0(#AcQI66BQihJ|}1DSjD z>b;}&611&8lT690w4SsAW>k@5 zw#L?-*fX^^buh@Scpet~zn5`7qB^6&7Z-UYREDn%Wf34GP>FPN8j_Kt<~)66M^Bqn zZB_6c}@z#P09i|dq=(=DV5 zxY{py=4l8x<+%SvRH8rS{5z`lJUS*n@dya`hFqC^x;7Go-hZ2f9M(|tdKQ-lwRSFW z_Rr;Gda9p<`FuF>gYj5De zSS2J3!EZm*FcSMl6Gu{XsxY>r|35DrNr#x)OPXzr8V})tV}ef$}`E`^XK8AiemkLH$QA@ zfsRCc6~sxd%Y=4Bi<9v4kcs@BcGdFLHIjDlYu3B-jlhMdOGWK8cQb3J}?@(awMn_FKs!QeYQF^BVw69 z>vz#1evXgqqWKGJW;4*91WZ+wAsi1n1LG3;yrAs6!p?s@L?22(g*3wqOI5}=|Fe)U z(hAU`c zXH?1D{ZaHyXiz{|5sh#P-XgV0RD3LkZf%8mcYDH9ay_ptuf$Al zxffDhUVZ0b?H9>HN$}ruGo<=b|0PZEsC_t)Cc5}SR}3KKyLLCxo)HWwL3_q3 z`-S4oev=8!l3~4Es_LubQ*uFvef2Q@|DDYZhm5Tc#6r+bSsH=}GSkOx?an(%<3qir z{7*}r44Q%gZtcUq+Vja>esAeF>lc{krqAqeX33+F!jSGt-S6DTtr)S9?=nsiqy96J zB0FH`CLs^Lhr6Ir3USEY$zlKFo(~eC#GF@qp^i3Qg5t#XTvHjLr3}{^XJ0Y&0|qs& z2CukzFaV@yb*+8!_pGPNq`+CTva*f>`?M+qKw&YTbgsK3olqig1fc4_ZgyXH$Wa7d zn;=UYcUMh-fnK-%vk-UUjb4UTNoD{EpB0gDJUn*9W*r_k4oxMH60pZC_7s z_$2b+p^Ci2BN0xjx~G%e@IvffC<)QbC_&Mrzu!?rR#=2`_KwwNnAK9?Kt*71%~l3J(+4e=pkL| zY+PqSA$vVuer64?CUm@;9G%yJVCUUi%S+y+sgb$%lbm3Ti=elHCray$OhOGl>}S+8 zSNSW+lS6PLbbhAlqoi zeYzX1tB04%DrtDqlKfL<^>k|8Bf_|AUwI{fe5EsGyQTYN|3lOg8nJX1@i*PQ9xJeAztR`SMT+8)UT3kp zb1MDD=;G|IL`|Y|K906B9-2jA>QEM!T5Pj>rr#$0+M{*lskAJm9I>dKslON>v^tdW zlXB`yn->%ND92~c6FCeHw>Ym_JxTRg)?Z!tU3N9*@ViD-=KxGzA-#CQ|0NQ=v}NpC zt`JxSMSO#vP>$H;{;k#K|Lx(G{QWK5iI4icw_!9M&0;|kM@lM6``BO0fm_Xpb)dt? zHVJNS#VzyIzHdb?rWN|9`0S@oaS&eIMb;J)DI^_?eDOjIpZexl zZoKD*K1AW{RHj8IUEV^2M`ejibzqA>D=Z>_cY{@w)1Kd?K2uT&x9vUPe+sg^59ll} z$<-(>CLq)t2PrDP;HuC_;APe&3>;k^rl2wTs(}w@+4Jy~Em^M@`1&ZaH$7u-xK>)6 z)9@A@rr-YZ77-W+Ue8^RXu@fn-iA|{*){V954&0RzWsF5`fcsww8*5(JLt81`g98o zWYPY%iCxpnN@Je$(6f`eCkTzh8Lro{w>s7y4w8+#t?Zs?iuE@0*=GVEJANU`uyJSY z?I!^lNqSrpLL5{2axsxMVVfSRUsopWddyg!iU+ev&_GXjQ3D12)oO;)yenx%!@|^M zoMWn(q)Qz1vu$Up&@qEQNfCsg0{ccG5gDPbpeJ^A+dBxQ=saEZ~|>78^q@tN7|AvQ2bqb$r`@OE&Bw z!^TpSK3%nt@i0&8BmPC~F@_BN$8Cqj*9$)beTk2Ba=Q5kKbq$Lma4tpdLS2ed0z5Mwzzo1M^JP`-7N@dQJhKS!d~Zo$#ztr? z*Z17T4v(k1n=NyR0c-8sQH3ypiXupIn`714r&8pNP)sEEFXJ#!rtW7US85SQt7~{A}{_;MVfmUkJ6he3-O*X*Aa4Lu8 zviBoP!p!dtr?GL<+4yP76+5EGj9haCS0W|zRa$mOAj!K`4MgyMpo`3Ct_}v8%Ub>K zQ@><9OXjaBI3O9V9P}$oJ#1^ zZqqqlcLeQZ1AoYBekZEwb%a+{yF^bwJc(8VJqIDHoAqNvlDbEwcA&^6coUd!_ zgZ`B_KhOXAPA4{WS4!{J(k?JsC;Cx=+R2cLFo74OBp*-w_@jfkD8r|XIC`Y!8SlXZ zDEH}$<9d~SxmjuQ{qCRF{tQiOekB$j^pH||OI(}YHS-aV>#7B^+4WI4o`p7PO(p0P zS1d(Pp;M2)OQeUNZw|PLB7Eu`sgg^XmBk0XvzJ+WP*VT7EC>E^1TX`cEvl*a$1oP3 zhW3nYMQRH$_2KYFiPF<>r(_b0_1`{d5S`-cxwP8~o2DF3N=2h_u))te*$Vire#p>s zH`B!pfe@4KTJrK3!fG=wp@S4ws&uNhl*eyxv3YjQFQk*UE9M{Ip39uB-V|Xz&HRyk85CK5NAkDYwX` z2N|Vf2dQI~Nwg5MCiWc(gD$*ryACfC;mSbi9#qVBcg0Dnd|3$x)4EpxwAh`HBUYS$-y6l}9Xq-`vs z7rKN&lGXi^xn3tJ$zeE=H#}rtssK&jS-izQf=WkY!-BgD7Yu&=g2<2HRKOsZPD1OI93<6?## zC!ZkF5st<+Qco}y%t%}2WA`R};m6*n=wph`AeD$7gZv&Ly-T%lj0D+@Usl!@FO-S| zHenvd7g&A0S5e~mCug$xz+HXJ=n3s9t!r9zX%QBuSS&v38QPO2ql(z5ayPr3YH6!s zWkROHiDFBt#jsvFSs35 zBXo|@+1`tWU<_|b`a-;G%-757b1jM{5jPz`2z>nZ41?R9x(#ckg)XOmw=8|i>FHDg z?q>r4KdX?-Qf@R4afLT_LS(8Q?u!_c6X)C9Fy`EME^urOPyP;xkE@$3Q;XJ(oaLK^ zsqCJf<`CA;H1e3HPz(j0neGzlIT}ROtKNNJUEn^Cb=^C~E`UYl5Bq2cCIOG#wr$EI zX48CY5YqWY9uL(Kx0PzTl2K_m{?_{0q?k+_hP$t8|A!PwDuUAofB+DW>Fn7cC=Siz z4KJHDvK3(}Ki^E}jW@Ra)q6O5D*xVn{Ke{<1=y5c^4YXN`({wylNh?pBox^X)`$Lh zCX*9)AFCJXT2K>W>!aSk@hGv~WS5?2&Mcn~KZA*uSEqf^Y{fO6hdlvSJ z&J5mrA@0-)Jp$Rx1(+!m!}#{#CAH}L*9SW6v3ic$Odv^}FkRIOQ0f~DTVj9K{tdt6 z6qA-fg%J3cZ_9Z)67(4hgNRC}8qz@fq`UGM?ZS(I%)Rj1paL&91{)ioe3NlQ)lz2d zIRpKlokO#>`X>zCYe7dTJ>QO)GI3d3(&14>92pDY=g^0>ijI$nM~W$7UL^xbzV0xQvr9`z!e}(% zmBhk(QZ2TUUj4uxF2TjTcP;sM4)C-`2V@PSbSirxtOZ?tEVE;}3`S3V*(k?1Xagl* z$nmp3`5E$i$&b5Od@*p)YAY&hu|xeLf7cuCY56>T@az!#`>v3r5I*LNyC1+bnT!hY z->_#BRnc&v;ZBH#?gVj%h9GC&ue_;Mdr}J!VBeI1wcp+fWDjUgXSe{ltq~0({!4uLNKnL2A!O*v-wxp5z#* zWh4dFC+$)aDen$caoEwHa<;_{Otab(76%x1(ZH3{P5Ce)h@j3SSIbNN77tEv_U0d@ zDFHKv-FFk2s|kVj+sGL{j7nRL5wamRtuk15^?o~qZ|m|X3w6N@6}rAS-zIi+Y5}f< zs?z(?UGWzp8qBSUUgOh-|12mjRhqIYG7vTb^q8a5GL@2y0%aM22F4CYGJlpUp}d1H z17q0O+n_uOaJ@KV_#ad12@GDAqhRGu(LDl-VF#U)-6Na`uQnf{z???}r<4}8iqkc8 zhz**(oZIg*I&|Lojpo*tlO;6Lf3vprwbZ-AQ^8}jL$Yb$WYuEPgYEb+ErVFUTOAorZG z-ep#?Y+?5Ul?ZVGMQBL4?9p6r+FnQVSj_RO-K-}khbCT4sW_s*OmlM-5;CyoDb&z> zgQ!4=hSnTAoUnsiol3s*tVDdd^igdR0r#>!QHzifHEEIO9+}W1%FZxtiKM_!lxSxe z!24iKIsg=!O5e}bh(th**@~`q3uKIwNDF5pC&@I%WNTwDkzp=-fdz^m$@JGs`}pm0hJueQ3+-AeiE3!xKf{exj@iJJ!a)lTkV zhwmDRxnK)EzOM2CiXKoY2>N8zpdZOcmL9vM5$v@;j1qiA5mnT2HvzJef71Z=I@f6~ zi?S{u@+l_$48F#L7 zxbs9i!Z5w@3`X*po<{-Bpmj-I1q9NTjMuv(XPPmamk#oahV*Ho!vk1@N zBkJ~gN|z!sNDeCktC)lbQDhN6D3VPJdKI}j6K()h!O zJ~e!*!^7^`OQg_k;3r>;X%gZXI%~^imy_pNiPlRNjA=B%*Xr>L) zEG*LR{w~Ogf4eV+wco|`NT~Ykpje^OmN>|_GO-L6#+buA)O&@C6`t}XDG<56A0u}G zD94zCUQ>*m@Mp&({Q)mnY-=44bx>mgVr62Jz&O-j($}phGpa7YaD~7RR8fdbka)<% z_Lb}%{T#@u=UF8%x%;Z2p~ddU8`bSfM5N~Quy>(6o%++SY#WN!@`TD9ItYueiZY_~ z)Om~8W}b+oVpx3^90LyKW?#7p0cVc?_tE;?!0#dcmZ9W(cev-oZk4GO@wpf{?Yx313s{;x z-wJ$_H7w`nX7r5yk2~b(V0*_pE?MjMd=6I(%d^zshCEK}iZZJigIW=lM%qJ{{X z4L$;q=Doq5-RGbpeqseaJd*fm$2=xJ9<o0r@@9;I^MMaAK+Y_X^{za^^w5%NSVbQum~pO*X^&;7yyKK|Y$`C2Ox%L%j* zKf4u$4|&wUI#pPf17QeFEYoas;3}t%18>+wCG?bKQTN$E($++)UM*&CO6Q%2?qqi? z+IL_vDACCKPF$b&-CUHpgI+GZVC(ZF8!uujWg$J9rhJ1-bZc~Rf zlK5Ve&QsPR4*V^VLA0z)-cqwGk%?W962X+syRu5?xp4hHo2^6pKjOas?lf*#!sW+lEN?3v30 zlROIDXh;ghC#Fh=yfdh_P3F26YNykB2g95)ON&JDv6sB1w(!_Ex)<3i>75#|M{L^( z#58nvJ_mjR0EE5_PqX^n>KgbEBnoo+0ejk@UQ!s5_@G$e5x_{MVRSCB$ZPXh$EE9q zb&FrJe?4tM1U)aV$#URLA-;VvpGDEBWLee|Ei=rbM_MaVq-bD2Is>Xsw zcue_Y!$wKH%RTX0p)7!RhR|fauOkc;+=|!Mq3|cI51-d+ z8M)SwO*;_$s4QS3dRtQ-Z1@0F;vDyPqiP;l_|!gjrOQZSRtoVq$dwsrSkryiT)t1i z@8kX8vg=L3;wzwX+B*=U&G`T^0A*c>S4m^DTlFlJBd}@v#{E9FM5E#=bhNu*57Ah# zveI_F${++q?i@!28s3@X`Z`jJPBx5NCSOLQgxf0W8;4-{4?p`x+i1%RZN@N1qs@6; zo1nxO#+Os8iRn_Ox!8B6<^MQDc`^`PmU-{_OQf&2c^8#1_{Wx7*pGcBV~RlJY7-JhC?EOQIPmk|+hWn|Ftb#fQ`V^UCPL8LD(GeQsrpcTEt*n&>U z{gsaBDLjy%D*7ps%P#whvEAfWxkHv=VnmU4Uzbqz)1{0LBme-~uh-wIwR#32&V)ne zWWSEQrl%=x&e3}0{@TXWjkYX>44UoLag86(UTDm$u0?j1a=y0)vggEiO2ykV)z;qO zomR4^^l-w_d8Y_>?~UnKf+{+60s?Z=I)wC{XLSNpFV`UngP$61EpTp2LOz1Zd{l^+ zCT?4d@ka4iv!G1(?jA>x;Ko}*xg6Ac${mlyIq&%M7Zch9+y(;uYJu^g%T9Eml$rDf zLvAq$u^S{CN28vihfAUj&8PBu7u)5t3M*=$ny&h}&UOA;-44$Z-23_g^9sgq2kL;e z$dL${__42{%@jCtxFmRaq1(TjBkkDI)a|`IeUlXa)b&UGWQnycq)oM6+2ZU$ln`l>1@ZlguACkiK)&A0*jpN*rrrh&; zM^IYr74tO5I&W8tiAKMJQcNL`mvO(?a;E)wLOfWl$whDq#AlFsPNH_r$bg2n0{c47 zsYvdYU&2DjZ};wP3r+>yxbfk}D~P0eKzacAbUnO~0irZ2#TKM4goC|2P4o_i0w2t8dc0H0I9=PCHT~qqU?G;n5F*qtU~)f zhoL|0h0B!|(&7BTt9xZFhpqQxt!`GiK~*upW8JIYv>UhIweYmv@S3^3(u;97keL}& zB?`WRY=%C4Y}1%5GI#*)9Pd%1^vyQIn3Gw}J$f+Yqd5C5Y|POJ{!ho4AG9ey2YN2I zW%u`~w}a?9F&v-gXC1Oq4B?>P4UwW!(Z>e|+T0aRU5JfjR8EC&cAN0!cv2&YynR57}c84tki-`f244n6$z|ek3nZ+GtV|sf1?I7`*-ADA--KF7q zoH3g5v_B*#>87pa;24N}?!dRU5R*i5Zj+zz6MuPfe=Yw8zv)t;o9iEOJ19*f>ne=d z+lKtwF}rBln|=LS0kH4xi!<`8Qg5-CZA2KMt(Z zlzwbiK;9+fsMr^zj%#e+cdJy5r#heXru97=^cvgOGCube+X9(ni1lO%DCKh?3+6RLO%t`6AvfYG?A-s|CXy7TwX~DOJ9VSIRCF?J%zvPDB#_2*RjCXj>5pEnkWmsbz7$)T znfv2Vl{=8YYeV_hxe8vyOln@Y>30ChFC%QDsC~m__CnFhhzTJ;PhVuO9K8&&^t*T( zWhnG+i-^X{F40kR_u8DKSkvHZ{c8>~gr773?n?Jj=q3?Mi!ut`L2?B4(mhEBJ)a?% z-Z6FnasC{Av`5ee_&|hGa6nn5$AjksH4Vs06lC(^HU!yDFrrxkFQJ}h!*B`z&Va)T zv>(XKHoX29z`^F#Qr>}?Ag#;JbxXk)W7$eZidqfibxZEJ%p7|&2@v{ap=F#v>$f*x zEgwDHg{r7|E^%4{ zN#p7A#nIEJ+ajr5$Y_`kL>y;f>Oc4$^p)U)O@mV7Heltd#7F$jA9SL0N}9wp_LL?)yAfoF-vsRXau;a*0$IBX`Z4!beF3{!2^SzC)VRFlLQ;66hv(VdMJzBk~^*B_*}J_;8*X{+{IMUioIE8 zC9_Gb6dw6*Rz;e3u`4aJd~ISJ2(l1#>^tts<3@%DegYh2#vSI0>0i{{bE0`pZ7Mr; zMsM5bA1=LU=N-5L+Y@8y14&=`vB%T!^y)JRe`#k*ttWoEuN{%_SujlD!g)>0nKmlD z!O+xySfkC{D*pL>6i}8)?F?1OnL)J=^T#nMOO4u%2bbYz8jDvIrPLz1Ze0HEm7w|& zn$RdIgm85?Ch=~Z@(uBh!HCVCE`3EgJFWG&jTteBcTeU|p3Rj0wvw)}0!CuhA3TCn zCgASFR(qtDFkrV~CS{Y{Wlz5opk!;53;b)|ti&L;G!0FDj#p@?T?yY$_1oN;f6YGx8bWpzXUz4vZz}uaKf7@cNL}0G)gH{ zxVX-g4#)}@508+%azV$L7c}=ft@2BU+*VoZ@RACt4h$7_xda5}Fe!QNP<$gjCbBh+ zY{=hBnj%p71;FJFY=3&f93s2Qi+vpLDwE=#rd0@y&16gdw4(2AA?Y1T)h3?Se^@pYJ;@b>l$r<-mfLWVqVx zhYCTm`avDUMoeq*I9f&==B2LRhP}ImYL&JDltRggL?0g@27fwB6GoS6U#Zf6|GH3- zuFe52vQxQ)TKM(0Nq4)!R;K!3EN&*so59gYDJ=Uv5uS)+4&$REYz+FDmu*uFH#hgq zi6BI!K>f&N^(#g!suRl}xDWFA8B6T{o`lV_w2C6s3}y z6{`b8R|=MaXM;c#>kMJ_#7&bjm5-5BiM3OT4ZkIBzE zth>Gv55lIr_X4@4pVN}$Pvb@e-Xa8-Cug5MMZ;36Tm>tIo1A}7+s$CGW#<#Bd1mul zM8Dns5z>%`xfP?4k(CtV9|8GAqPC|S&;tY3e4K?L!yv8lrWx`2>JH>4ox@Lx!^Vqg zt%csf@w->9sio%zFH$4&5z)IgZl3S!Z;l3iTeq?hq!5ASi#yISv;4D``-_A5Wf>g4_i0CaOeTXV!SOg(@#eApfJj=m3U3({Sm# zjuIOy^>y=UFZD)lDluLeJH~yHX8oq%mC!-pje^hSi79hHlLjWx|37wR!XaBC+j3L3 zuaHByxf zWyz^;dU}PSeMHr0Mmh><+D9~mAsyZ?TVSo2Tix=(LqSgHu;|%in*n(eE8tRmKKuKm zd2I1y!qre#ShI^k6kw@ZnCI#4fK;28FoY4hN-~K*6Ip@K6wCV%c!ADbX&r6kp1;u+ zG|6$te--d>DgjFi-|#qlV&Z5gaT1y2WMyM@^0cMFGpU! zD2V`=BN?zE55Fb#DP3}eeo=#eu0e81GA)2Sns#>Im%hK<(CuWX5BCUO$}S6h!0T3S zQ20O!Ds1Enq)>!e+M*)6F4=<=4hgw(<6UZmsIM_OW*LHJz8gtlI7sOI&dFK-JTUp-w{Sd|8x4UXo zq6?7fftH408m*`%qkurNn$6qXfcf~qWK)e}GQQX;hc@V8>47%hfIh>lNSDh~y0NbK zaOOy$JiwthnPeHpY(?58e|b45zcrg!?#xCLuB@@(+O?ize71ip`tl-VHiem)UFY2I z%sZ|5%&9iPGtgN79%A;zA9n|CcSX@+Tf&&s2yHEo*=SW;T~pNdNX?q*DE2Kti8egYh2XA0qH*J|xmN7+ zUpDV>sI#tKzFle2Czf4ycKX zo22ICF9&<9bt9 z&Cn^`Fmym^_-fL4f9+C*cy7KO6fNL_z%VhSXK`Kt ztd4}}E+F(BdeP}G!i{4{{x&`{B4h8iH$^)(ep~a`)tSvXy$v9|1&$kDD1;TP_!6;* z7=^o5@zv5Vc9oZX=R-qCnR%QiSL7IHd&FekDGedsIz9M5^4j;WVQ7QInMtQINlaMy zF_FN`Xb{jiWX=8=X^RN9%5lR(v&bioH}>jz`!+=fc78hTPvF+GWH0uIY7g0t$f*+6${)zQjcpzLIPv`CE4$N*r%_*MR}24;y8NP zI}fhDh6h<*o-t#_Kl}E5gTt+f!hLbmKpZhLAiO=bT!e*4ArsRR!J|IFFAQ4rJ+xfF zQ;`iTpFcIW_2xVHtFLjhUwyH>9O)KRJ}=4oy}%oL=I~5l^w3pg-pvqGO@nf)jB2xS zZ0TH2E_dOePbfB8D)j)!r^;?wD_ak)eE~2b&Yv5V_D#p$zR1MvqI_PWEA6v_E}3Bw zxlD*kjrclab%xrvL8aimYglvo*3979yPeoyOkZEsH0n3 zDK?N)c<<4nbSwGf_+2mm_S72F;#c=Dt7&6>rqvdaaOlE;ltilRc1}{H0lQL{xLxn4 z)XMSe@vT?aG2keMn@bhHWdU;HXofI0DfZDm!e5o!6P@P*iw9m+B_%W$8ynjbh1>_u z=WQ%r{GsZ1N;FG;7&z54*sUeppo`p~1Mw0X=3PG;$zjDV8@u$0yN zGCizkyN$|GK9k~?tvTDmGk3Fj_u0u$s^LE~)GWg=J>}5)r=a$-Yz5?d;Uccum7&&h z(U1pw|Ly(r)@e>Gw}G*o>Mhqc80Fy%v*hvtwwSwafBDbD_bnoBjRH@ywuOc--kS)( zN1<%tLloU0q9_0OU2!-1V;>PhvDC zq6_r9)3NL@&(DN;r_JNN?CqtK;GAf%yYDLm*=|J3UaYy&T|Y6e=7fKcCJ??Rg~%=7YAM*3jTH|Nq< z3Irecm+3fE_q+CFoR0gOP+ezA(}=y?w0{kYfNbXwM>8t6g|Kak1I(=!tH2;&I0D!T3joUCVi~5%T_29{!ZC9=OC=!D{r)&uZB!%K1W% z%Bg~K#L|>vFT`V8DOyFrTLy(n3PJdYPBQ0@L2V1c1{3y`8PMuo_okB8na$S)f;21k z1i;%y6~AbzXIe^9W=^WT90xOi_;z$nJLgEy-PIhl#42OBJVGeN0&;{YL$PR4Ww^Uma1sEyZdA zdPP^WxQFVTQP=ra`sOqP;=LDS1sShX9Y~kZK6d<2=6}G<{jJR|p$-uID&ac1MruJ> zfb?|T9Q}hp2a~2-mF==i;I+d7Ac`{E^8Z??C@rBAW5}LA!xEV^Dqliqp8vO>+nKOM zk_c9Bi$y#xjn>;We<3lIx3PUL#pc!a9*vBm*%0j~wU>9a$7wJGBy`|q`>rMPbo?^9 z*F$hu^waYtA)z1F=1td2h~1mk7>}k0lQXUwu}fj!qp;=XnF6)$mXPM{**^GTzOc(H z0TWIT#2@`qy-MF*xK)${%%G*#@Zb<*yq*0H@np0tWQrH z7fRpDYLOse^z0UaDI9@Eaen=DTj1440wM!fb)@lK`u>HD+JcCA7 z?GAB!`hr)0@Rc!`b-78t?R{F}UHYQJ)Abfa;F*7JZvMTu@TEC{Fx;2ch)q4hK4h8A zP;z;OJ9#wf@9jUfYgY`;N}DT^gfoJ9>7@$WzCUxbD>2>zg=>_frQgd>6oPy?p2oWG zh6^~SbI1r-g`N)`R??2dP@7$t@kb4NXsW+`0z!IwsKeBmlMrMY{#>gvv+ zWeRUqJv*EscK_n2XzMfHZK~Oi%A_+ zl%U0V+Bo|{`^^pLEIY6!HfczIo4^$8j_LaK6*u134@D6Zl`7;~`n zYmFAx#|0F%`D2}#UZ6{bmI#Z&fWa{Ypr0i6sDF9%se3gGbv7 z9eIebg05!K7Wd-f0QiTxsO>U>WVY(}gPc9Ri0b!4B6kP6lYn5L{Mav8D}IrRBDZdS z@(dGk+q4di*|_}Y2e9aSr0`Z3X?b%f3&tMZD6jDdHp&9veWUI1nL7k6jyqi6gy$nV zu(JzqZ{8X_JbGqGjMk^7caQCFmQ0=N9FhnN{|4St@;vVbiLix2o@xOy>!3?|M?k6k zs96mLAV2jqqRx35Blu&xAT)%qS`0s^>m!xo4V#EO&)%WzQgIXgh52vGLi`iL> z!N3F*kVq*w#lF9)$-zs4OO|a!lvN)WrcR@71MWEYB*hPY!u|OmiRg166J_Nx>8zzD zzlO@BX`T?xzs5v>-!9_=TDz0q6_Lp<$>47R;bH(sKs`Zpc7eWuB>J}He)usSTbr8< zRWK+Mak%j}9Q-AisWwb)#Zh^tpr5~N=ofkOocqveoaK~w$)xBqPmr-bAYU}C^?97~(N@y(jvsKBZErwV z6!-=hdinI6AzOj;DiZMHgDa=Xnob4>Vv3Jy{#s{*!Id%fNv$>oK{=m5db4Kp+$C@c zgP)sB*g6jFt2_KVAM4sVn}DXqQ3&;3P(s}wNQz38069_ja_DbOHe9c^7NG2U(on}V z1LS;bZP>+UV`{-cnS zwa!OPzFNo{^?fdrB7ZEMg)LyyXAFN_OHy2cg!`*2;vq?~2fjMT=oQr<--~JYA*9Zn zu@6(-$7PQ`c%a_!)}4Wx;wVS>olA%$F!|0H6DU$N1<5a4G;uik(&K&em@`a`X3T(H zpT~thj_B>(HYiM?;bkJco0PA=d-ip6M6`7Q(p311*-kg^QEgd2Y^^nFL5h9}kQuLw zfY3UwxL^P9M10X~gF2v9b$Yp$!cVHCv(7r$6>gYOqu>uQXl8yK#1)4_>~(tP^+EsR zso0|I%nLhcw@gb&FeZN!Bt!R|o3gVGprP7HDLj%feOk3YY&a(@C`%o490YYW??pMoY&hyR7WMTltm-i-DBzpi7 zlt-mTO>tGX!Hq1?jo~T{j6LB}Nz!2%xwyv-E0Wn>=%Z=vPGg065+_$5yH=mMhKU@(3F1U;5bT!ko@_ zUD;h5g-}huEouhf5Cbek#Kp0WjW$!L#gwUzokj=F$y)t%!Wu+`p}Qrn)CdFdlAJ|t z)ag{q4v>s64gfb!0kZak)p=?1;ID?EVX9t0DGdI8fbm#gy>&~U)QPbF3it%3O($&* zD^oLlD<(qM0b(6{z$rHA^f^STChx$J_jln0zzv+cOi?}#&YlRSVf1$_2X%61+;7|I zy!J7LYu|@Yt9_y%i=GvwUp&7-G4?6E_IxhnAS5aIGis$Bd(*om^Sx(X>n@aY++tb18 zIHd(8<2+6AMooB?X|ov4_*t-PDDo$xPSuiV4q z_8Yv%$Mw$Z25I0nD{w!)g9wsnHgUqW!F!tVhUlf~LqEYRb+Y?txy+!8O8~5}=D2V^ zx>)pcoIiH9)pfh3rD!||iyLsRkmGboW*q$;+t}vmI=_zn^5?)_;*72G<3N5?sEe^Pb=M}p+j_&haFsm?dQu*Em7k1Fwbq)g|;KUXf1xTG@S z;}DZ1GMxG!aFmXI@iw)j(X~Hl?Rx$FXo&YTXCN}_7JBMh-REcfxN%ze?fd|=rW8ZV z1{YSFE2F%R;~tyt5a+T@UW!!{=cqglYEc2FHoU=>ZW4ahaTvj15!oM8cw_1=?(Quu z(Y7yir>>CN)&YYajBIc4NdNe%AQp^p!N2I2)j<3qleRr;JJ?dV@EZXT2;SFV$NeyJ zXORY43aR6p#mvtJOPL057sA-c^g2@8xj~8*UQv(d4jKvpVB<=Je+kQ0Tdhm;TPzjm z;~t1kxxX*5wxk2-1am;=XGl|YbLp@7XA&+Aka<&q7Zi6mWDoorR|>)pFlW71H~oVN ziBALa&M0o6Hk?6$w#G2WE?yqw6=P5^sp0@5vrBA?OG;+~ZcsQBwWnsC1ftjp9lQGx<)~X)tBt{^wE(>A?A}+J9TW^vWelhHFJ> z22t>ynkZI1t8?={`%MvA>$wrix^NyPa@zndo5pEN_xuQK#O~+C%C(+ zA$*egvn%2`s<2USO9|FY zxuRx&zH?8Y+$ZtE1S8_pl{!Kw4Yn9XeCLhXYwJOI0@0BZKpp(dM)u#O`fcIKH z*y=MHn(0Kmsj0#i#y@w~J1ouWa$rNU%^OvT8tc2egD;zKVT#USkovZEhRRm|ch?oh z*s}jVy!>}hev1s zTulV2Kc^T}e3=RS;~oRR9Jeysy`G;`?3{k!2ymuq+)}$+(NC+H*kJ4pTs}@P4{fFH zw{q*D-8aKY)7N1T6Sx2;)Q-K&&WgTHE%goYh)_aB-?&4^#^$@Lgxk<&qSxZMZBW)JHI6ZQWHuAU)nY~ zT@E*TwyJe|4(gM`CdF8{XBE6@;3jnJ#&OXZH`;5qvjcBb_`~W_(W=v^3qU+Xpoc(} z{sMUJ9K<`;&cRU7@(AB^aTfX?9yPL&FKSb!#t%PM*ilzusoOQTw|B25#+4B_D%Az5dj0I*~#BjA~jGG_tdyYnK*|+A;}R1)B{; z>hfo;j;4aRt5K*kr13-NZN4$UEw3Kb)q);HB!KJRq;D(p-^8w{cYBHl-MuNN5Qsm5 zu!fsAXC#@iO{okk`8S7dLT)1De!VuVKaylES)}&hH?IpqHwzq`*;+1lBD?{|?*6ja z1Ko6uh?(WbMJBg&Uo+Yqg(2x>zLY|>k{G#C_ffUx>B7^;^AI8jTyIMNhIn;LHCqN=nhU^OP8J&Q;^JqW9`Egm} z0W}3nYulGmyM8~lWPKyw5i9XsJg;pmdb0y3vPNbyC(8X*w>?K1+<{jotXldt~y zO^k=7vhnb^TQ$l3#T&ufJgts}LrIAe*=+$WzdO}5gEtWkmtF?T8t$z*b(hST+MCmW zN=inZF$7{_x1q$|G~ zp~pHr7jR1G>8&{B2K#ukNiKr|U!V|u*X5>n^}x#6auBsfJ+nt?{Spwi-bga5eVA5ZsiMZoHMeWv zS$OPavE<{^ewYRz)812)ycua4_$lsJf+Fm9)OreG=eOFASheS-q?8{3KtJVlV@ic5 z7#pJWh~LRgq0Q|s8U;@40dl=}KTekzhOSOJEf`k*V)GE_)BSf`(ST*wmY0f+ z#EXGd#i1$FrZ57C{?e=8c`N}v6QE=vVXo0nZGELu$Zssm^#Sl>_awW$&jM`Uza>`j zR)*C1)`%iUpS8{`In{L1lpD<$H_w%1g_ui(?&R_HbiJeO6Y4#0x1?pOFPMc)T8wfv z&!2}Y)%_BY8}2de1})UOWKafgR8z5MI?n8a7K!KZ$Z|a~Vnwn)yWx0!B5Mf?J*YVN z1+DIt5B`1P%|FWm?8B92zPhB-&Cj*JHt4C*0lXPLP$Kbai>X!#9@^zF#kwIx$42cV z`4;rhnF9B4{`-TZ255KZcDnak_H{Yi`p+pT>^1co=x!j^ju2o8B8y%ZTb6>DZuu4Y zW-#<-95meJ91EOHJqv885ig2mhCfnH`4>I`a;nN5lp$gA-TS`{{ zM->QAHB-Uz_vS1B35A3=T&`7nQ%LlfqHUi@O~+K_$fXBg>=z!5y{dT{5e1}g&PF8D-vrDxzM=ZNu5&X)P_rneo3$X@dHH+8DUgYrh#;cS# z%7V@RY~EopfpOStt!mA3HCqZ&4l=7l-@t#A)-=?HPG&Ui$uHvz-#WqwrkcV1M0x(y z_=@R_pmU%#*jmp&4(?oL17k5WvViPUM_$zub82=Gl%4JZ9CCsfqJ!)Cf?NJdJcR$C zF`xmc!T*AojzHglDiHxydj8aVy8&B3-}wcQE&9a(J&<@RTEqklZQmU~it())B&KkO z;)n@f>a#p6$Sple{*f0UY!%ojd&L673JaHt<>DCJw-l?Pg9o)j;ygZ zjo_7{HJc-zs^pe+bjan|QWGozVm353AVdD8>LX~*(y{@upg;{FSC0l?n_Mh6} z-NRlsmb&`J^@T;1o{f374iT$suj;ba@B2Z1%`lMHNuhs;jx;7l3^|XO8f}bXf}B|~ z(OfuPUP$4N%w`^=-{-%aaeZkNpQ-toslQO>F_xBsEzMxwZ8viO&zBSM6xr;o9o9n7 z?U&P*YvB-@F4WO{xJ3^M-xF>9in#pJI=8)dRpA3#tm(L8v!{-i*)R7>GNYwr7Q{53 z)R1B45^FAaj_H^5^zFyL40FZbW)7nRmuYfP$G*RuW?lZid^->InSAP0ciN&Gl)xnb zuF8Mj^7iKEFdMX0H};E3C!I>SmyX*PkhH z;CijFGBo@f8|H7OKYWv_JN4#axPF+kOg?`^JlSwHOXE4XpR~sg{2@z<`qIiP?IJh0 za5DUGC=cVoI?mJ-a-H&Iiq)iv{&khzLSZQ=%Y3lfc2!*i`b<5S=XykU2>CbV!yyNbs zg^BUrds&taxDivr*1>))?5|_5MVp(SN4p1P6yVD0*tAg*4{7=2{V~po`WTJ%m$pqK zFQ!V~;@aQvY~S9=C9;?L_V2a`C$vIIdUo;)eSrSpY9~?=t>PlloHMY|3UU$|4*);u(L(r-UBmmh#g{2g@Nh&n;I5w4@>&GZY% zW9Qy3Pfbz|S0{~RX;o3m*@!!1896*^OC=<#p62Meq-$}xWUJ;|q)yb`XyOq& z?@ul93&GcYnRmU5B}>6I7f(v!kJmvPuTw$eva%o<@R>*I=QQ{!JkUtEcUsR@bR`H% z24gC&nvA)VG*`Yno>}M}w$uC-ppT{6@72xCh|hy%5+&V2=*$4N;0kj4Z7U?88IY)8 z?@)&dGDmV%#jC8FE{01FAGTi8d|fq9-T8RXQkV1rcpoT{Lfx>%N$u8QH3=0KuTwRD zox2l~wuk%RQSh3n6@zwR(9A;Lxi-aL$fQQTh__Ujj4Bpm`eTrI5NA_KV3^C(+@db! zh45<{G}J%y_yL2PJbOBY@T-zx3L^792YkLp<@3_n%$Rk2Ygz|bVUM-R@G}7i%$#&g z_*1fklB>?TNShC|gFMdCU}^e9fmk${?D_bF-K{sfF5mT*?*3`7`o^?P!p%FbE78m8 zTz{O0igzr5kRpOe$#I+_n#95EY0Smi8Kwk0YmN^>{FsB9h`MRBVaX4MA3cN*Fdmfg zCqC*f|4yYejzjvAH>KI#awnqAJgFEdkH^<26J4T~|7P7P;@Z@2ijay0b2FU3|EE$I zBf_`Uqg#ZnW_nA~xeb_>!S#kTqippKcr(VsQO(umA8Y~#9KJ?vEr7aoHgv1Waw&Rk z=yOifRq}OB{}XbGZ)VtH;uh`QzuGutv_Emdm1j)&z;=DiC zzhL`Ta!^QH`nu%X>1^}iYvKEMq)%&VlHXhY_M&~eJQ^e@-uq(k-ptuMLo&NT;yFS_ zDY6QK&aW$e(9GF_x5{GX2eYc!pEcB39-=rwk*8(aprXEzBbyn|SVen{=^0at^5e7F zklV1JxR0>aQIUlcs&b^=_?)iM`1>4!_HBhd5qc#}FiS7r1hZmxJWM=9qwT+Kr81oYZ} zhA3Gco@;9ce02J-L8Hv@FB~XK1Sw`nGc=g*)}pwu;OdEBgp!tCA8=XSq6BeL(670f z{+f6~3(Ef7iT>g?k-3Le@yq9I?+7DcQS2kpU_4c0o;vrwSIa6Dy^2*6ZD4w<(G_km z^gRky;)Jcyn`dro;u9R_9SeE4Muc10X(#r`_uPJkb{%}*1;5KLfqzPGM8tliZ=Kh& z2X(lSb%GMqS_s+Ofg$dp8#cL#-zHrADSwPK2=r0{ek8YZNzbvvL2=otwzdqd-d-Cb zkSE$hz@PI02gkLog;h4znHUZaw__=AN>gV{`D8q_Z-m6Htvip#V5UqG8lynp*!vuj zp{X$px#juma)0MJ-q_kZ%&IB<^(Q$~m00mTZNb(q2lE*3FvN8Xq~PI=SKQX|>~M7U z(+tkg{@>By=mg7FCkMNq<&dzW!h8iT`t&{KMq2z7;Lc)-$TfQ$xKgnzxL9ht%a;$AQMWM@|qGg4+%1U2gKA=ebF*^;cYP42I&6aBYp3BE}TVJXWs+1Lq;#^aui(@;&Vx|A6xJ9$w z<2Vwpy*xIk+iW^lJdE6)9yoVer|eiP$0eM;sF~aBs(pL7rVMO^;V)n0;s(v!`8q*` z<&!uU-wR}ow7$)zUC&Dyx!-NFMrE`IK0G<Z$B4r=y^Xy^TpyA~6uhMdMdMH80)EfB zmOhnLtICwD3tA0nMtQSf;fYQB4F@?SckQ& z7o1)e{xfO~_17YU17=)v*$T(! zOaC#mJqX3l#yrhSl;<^$$7M)&hE)Jy_0Uxpvn=Fw zrD+_i$8Rr%tZ(>31KB>oi$%~XAM^?jGJy+k4-XLV?8_YRWG;oNL|L`1FDONhR9G>5 z!nEJC|K)1mt02&3jV4*rZy<_Cpuytxm;)iePJ!S3>1-h>QaTFQQxOU70s00-qf-f{ zo%Z~B0Rtjesb~(;Z_|TStcUj%7X-T<<MZmo#S40Z4BmWQZiMp>IrJ5XDF zeokeK>?UIQls6JP=^)@exSVBzv%~Y!s=F5=%ePphd^sQ1Q3P-pVL3Z6>f)kPIlHKV6m!B%5w))a+OFc(N9X@r6PVS)65i(J+1?Me zRrA(eMsR;gxzs_AfLh3z=4Pz9#me7WlEwDBRu3J;E>N+^!>xalV>@}S&$k7iAA>8z z%6>-L9U~+#->dW31W(=_viR*u$y}RnYy6Ts#uEHOX*2z}_5Y!({ys`Pr+dVh+jV|2rP0V=w8*cL% zCuMD8v{v!3mCwiboIr?{|0j~RwjQ#BwXpAe{5>+!rPEY}b6<*keH|<0G>mR0W&Ybw z=M>+)J z(TYZowmJ5H2vQ%>%LeaQ(jDpOcyKq)Xws$*guDb2h}^xD1`T|1p#}kW_6u5i^YDe| zgs<@ne~w(Nm3(o6er2j0Y5D#J1#7X1^@Znc`{Iu;Sqg`&fbVRHjTf=?n=^agJy!AY zru%0e4-RfnVACJ?hOyC8`anX&p2>?S3D(b4ORzU9+L;X$K13+)TA-;1y*|n*Zk*Q) zT93~;+PL_*Y-|Z(wl(>(gt-edBgX|k2FpuAsOocp1IK3ZcHS>#8tWo#?1LYMDpWP~ ziS*6M|9;hiI@o9FRya2+p25BWrxS!?j|%Bc}nWZ|~y%3~l`_c(* z*QZ*WN778cCKRv82o7kQbGwi%eq%8D!Wh<9xViRq*ehq*uvzyVOc)>84e`YfC;j$N z=aavO>uLWRME#a?J*t270vn&7?6o61W>(&}=mK2X)w2$6&#VD=4NppBE7^n{G ze=D`PeQ>lbK<+{iy%jTjo_IskFm~}idl-n;Z2y4Qy@PfUqinP(Pa30$rwvcd&t)!Valcv%Mt`kwa#G_ufnbeUD7GhT&S%8<5wjXPw0+Vvf6A)k zgl=j3s`$FN^=Yr2*3L6OwHCh#`h3FH#^Drs)aqu*A=d_A)fS@Kw6=jvtdwS2vT0Iz2Bm2ToD#1{(-ZPBJE z)O(!)p_YRFJlQn-+~6k3cp{kAh%{lSt~4RJoY)6;VzZ?#A6%_on%jDYE7O-68>Bb* zG;Z$~v_{D42$7LLu2!d_&#P(n?*!9>rJc(jx0jiF<4rdRdDn;RGe|T#Q#>z@=~aU9 zf=>K8_Qw?ZnX5ZI|bdS@F4%@JPHI*uv68%m(2o0(f z;}@Ua5O3aEcwDK6T%#g8P`hMMijxOZinY{@p8sdGPY8Tl_7KhY7f!l0qPCDKW1h<|oTmpHF%~4^;|h6f~x4 z+#+3<2c1`GwXXp=YD4+s_Q*cVmsfB3a!C17LO(v`?QCJ-w6C%&GPL0Re=aRJ8Eo3& zB@V0A_nh(^K%C<$l)H#fdz^Sp23NVVu%1hta*t`Z+2LqKV^3Z}EHAp>l~? zKao}Os_0dEL$^ni=OX9&9cvyU4*gkk?X{#%0TLb5-u>M*C((OBWGm!_wFNLH;&+}R zi4z#=CitUefRh8};U`#`xTftyH@8THx!!khtdw!&T}B`ZH;e0ddnY#XUqp__@noWxr+| zZKXFMbP@H$<2?hPbos{Hlg1Et4L2h)U2JwQ)E~3gj&EPMkI6&zY$svbMsT1PP6UeH!`KJQC!1b8)zNmlXox7M^E%JfqB5 zuo$wgmRd~M6%9;jDiaNcCC~M=u28Ti;j|3e*Z<7qEn-AtE(p?R3bgdJH=qqP@Fo}f zJJ4}JL}ZtoU_%J2<+&_633PfAt$!#=agCB0)nZ;e=yF{B}%2~ zw-;_@#8S$9mTYJH&#T?GQqx4?mBFq~E}81JJ-LSBAB&H=7ikJC>*c8KH2RpALm4RV zK0l>H7D}*q8OqnlY9tw9_u!@~yJ*Bnek>`IK#pI}Q~Ev*b0cyoZt(R{I?OLViuRxL zW(S-%ujq_>EPs(#?M6Yv7b8y)7rUdz^WPPI5dRoK9%22f5W5}wjbq4~)LYPL!n_jf z7ar!8O$PgVYz6&jQUJk0R?{ttqqc$fmH+mFTDF`Y6J0|!n9Ij;!CE>%>#c(ArUF~W zFfN&a^Ix3yb(zS&U@dr0-;caNFaW=>$!h@^-DxpT<3#Uu66|=iA5#yRM{xaZ;pRR7 zqCjBOU+`ldZ)*Q$r;>Q8jj&O6agmpJrr^|P9$WZrS9K#N9ZY8$^qXvj=82GtI_Wcu zi%8ohJ@@nQ-Kx)rzXgAJL?hEi9fj^4KPim_nGs-D{@>C0^xn7A#}I05Q|)=v77RJv z+?Sf2awYx1=Q*TVsqg)oa0J7!tahtwXHu)yq}Mnq7dl>im??@l(v-_H^x4zAOWcQ&50q*=SNdQ!q znA%C7n0a#d0+F^?($k_E_J#R)eS7pT=?QdJ-N|J^qa@7Q9O;ClQq^StsldB}&G46H z8D_K&W1V9!w|12wgQ&`kuktvT!0@UMyU!^G$jPFbQG&6bL??U7j1B~yHX6`c{7do7 zOJ|(vaYJv)){#2)4Z1*y(jDo6Wh*;>g)3eIR@lD|{#zpyGKxZ>?(_~DGvDwiN|?YU zS@Dl&#SOo*f;kj)CR<&_l9Qb$w%Vs)nYhMj|G{0joQ-nuIaGly%*)pOUS8?S(JCLA zvr?d40C`mS_qi`K>QK=;OLsFdGKzqJrM)Fv+;_#J0YC)fw-}W1aN64Dd52VM)9h(C zWdxhOKia02&UK%7>o{%&)`~{be~0YlXnIK!7!mn>%-r!*8#mh6cVqDlO_X5Ip>crkAX{^WDd*RQ?9{@c@!6FUvG@!L8nRF;mBpg^vTnnNc4 zcxAfke3RP-Cb5oX)3^JXF^Ky(S2UNGKE(p-o3_aOUYHrdvvAE^)BT?yWMu9HY7S`Q zV#15@DiI`et9Vnaah)fKH0%RqD$CE)K20t=+=95fdTJCvLW$c6vas{v-{k-^;Yq38g?R}cT9PawovKyOjQIe z;2|<-MT82y40++S{;AvB-tSb{yB`x&oJVK%XTF0 zFSa*JtNao3p#RN4!GG|Ve?I2FT#3^B_mmF+#~LC%4BJ-{->&yjdAN=0iAl|j&8a$ zlpBzPUGLDonYz1ywd&~8*faig6cypy)M`I%6=f!xe-b^SF=IR+5OF)~{s)Cc6`SAm7DL_g2cA|J=jBU7cvRBp=;MyXY1D@yV&PenQZ$NeNqb@qMx_| zDG1w9k8{l9FC z(){z-;`y7tuV66WPf`5bzygyut^~HpscS~@F3YaaHPHER=yBSGSm}NjsKL^T@1Wae zS$0gOeS=Y&q=U#x3sZlcD1{#~^0mv$(`_`r3^CkQHrIk7u93h);voRR$|P!KweOsb zsm2D_rB=XVA|;gM`|0RSnN&#Au+_AOR0CVA)Ycs2$l~L?1sM5&cJD!4gTef?&?1z4lnZwa`V0v zAySe*=$JRLFea-z3DW;t<1EnEksPWL(17Do3EJD{E83~1!s9cYKP!%934j~|8F%CV z(nALLYr%3{Im=(Y7|zwPebADY`SleBHj-HKSfPjrQr7 z8Y-gH?^@`yN}p)#%SEmQ%@xp+-K9HJU{`kpgnN^eK1tJ@%}!xTiejM=pv2hEz2eglBXbEKogy&4aq>OvrA-XALYD=R^-vlb$9oB_POph4#z-r zE0__q456PB5#dX$5cL^`-hl7euMzX@jn)#v^Lbg%&bQvN5j3$5`#%0}wc=}>3}><) z9t;N_+?BxW4ZSJU`W+HLB|1R>xv(f zEmOI5b!6+inpU1MR@nyZ>XT*{^}m#Ff8o|?CgQ*7kj7UQq^`r*1F1(Nml~X{Z>|J& z(mdm6Y7Bg!I7L(MHUi~Z3#sS(9hn10kB3AALWFg0Ldm%qL{r)7w1!-**Bm%MuQN3@ z6*qX9Ja>A%J6&;ms&~8SE{#`-AZoiXR_lW=H6eYodS(P$qfs-<)I55RF)~B9pm>FmV$B>)#0u0zh+={`lx4Yu}sL+T_+hG zyt(6;Nn;%<*hLoEjs8sg%=$zl1+_H_)=$tNY3r90i`lo>))%>`9JsD*$Y}P~*`DnT zqM1#KP*Kwkx=z_*Nz^GFd5$3JDXpxOu(DzTGzCrN<>;yGhAFq~O^IkQNK|0-Z-n} zK~>&M#iHq$(i(8$25B?X@%e?G|4n%fGnS8Hs&q5bH-YNObbrUIvH&S9GQ#>PYJH}% zaA1SEVa|;Z5qt8@Q=So1`QRs=n_zJc;m)?i*$_yG{B0=s&DSq~zG3 zw=wt!&K?IxH+4tlhs;5M?~Ic-%FgDRp?`95B-3-elP`@UFa>U(CwX_wE7bxabqH4N zJKnF_=_{BZdj2Mv_5%%CC5!Z`B~7IZYNUei?Xcs7v6UT7)L!9l0>5RlXum}dgKpC} zdZpOJ(A3tXg=nhxoiz& z(WWXGG7>Ya>hA60a!6*TOAQAwQvG5!36KLLnmXD{f=N6xo-qDEiqo@$=aYM$62CL~ z{Hr`p)D%l@Xg-DdW(25(VKq36Z85$TX1BKwdGoYYYHA9Nv66a_;!A&bUR|JP^jqed z5(?xSEGc!A;%*p)Y#2!C#RjT_$4B7F&|)c~l;=NNF>aPIL+2^?MXg2PHsJn(ot{5| z3VyGAFZQ&B?{sfPCgv2O)xMB|vjXC&szonl=fi1Dii#hfqXjU-Zym#Elh5~MN2>T{ zRKfkKmdohyV7@?GHA`Y>X6qmCy?K8*u8&;JbpNFe`K|B-cc&?ypa zv`en`k_idG{2X0h1s&QGtgHy-4g9Jo9IMSgO)z_^@SX1K)DZ7y1_qrca)(8-*R_n_ zj!G(HXaXS9%CVnR0v4NYiq=rsq~1`-S|CLz{sc`P2PyWmhw^%bLu1J0@5tWau9^3W z*L{2rjhb0lbI|kNrtK`u-I}!aR#2?d{}qd$Wz>JV9YfycJ(p3X*k66wXZ`vuUo}gU z9_Fw4Cy1;!ndigWqyZM%W)yrVH62)@Kc_5v>^L>&>$(1enm|f)ktpKhy?DaDLiwl) zq0c+vtO3?>NZ*!J#v1eIE9$A$Nv}w4b5%~A#*_iNCg{ym0nuwmhkQf` zG@vrO9IDUUyq9nC*dz&rtk@e30lv;90>=$v zeH+BLP|C(#;izAUcX)JqE^ zglVsW_y80o55dY!iEwiGI`;&$*(f%7G)E{xdAZL2Pc1y{KgFc2BC@Za=Id}^o{Di@ z-v~NE4Q_AbS^qz--ZHEWt%(|K(PE`QaVyY5aVI#%X|Yn=t+-2Ycc(bTY0(l~f;$9H z(cly>1b5GubKY~md!PG1$&Wpmy=T^}wWcuyc((f^iH;_*KBCwx>x;Hqe|eS`vLWb_ zr5}F|Qp}#sk5rN@nbE9W;C>pU{t0_)ej1wIE!=~SWcX*3Mi;>HM)QT=LQ9zRwXiG~?Aw4A+j|=Z{1(ienIk zK2AdQCqmn3er_b0YLcg$7>=$inC5=|^FgOHL3Vz@ml7I#6@HLpQq=m4M3!UK>`6d$ z_k`TV4X&Aid3o^+H(*g;!LAYY;ATkpJ4!$ymI72E+!n;yWobO0kRT0YV~4301|91V zPu06CJiUD;4ss65=(1Q5PO`mv`{A%4enz}iyC$Ldft!mig81uM=#ks*#K$LN;d*2O z=aW=F26si?EOlv?bsDT4)l6(LSXG={?i*y!Xk2B=E^+^1#Bdo$zD5K~HyYa9MfcD! zJe_>+*Ai*@8DoVEe$HT$+VdZ`Q0$TUx7Js>=>FeU7XKS`Fgf7U2)UNeWk#?l$Gg+a zeSenRC4}ekQZe+*v2vU$hp&R*5#zRTD@Bm4z_J{I-=iz2wk=zR9W)&%a$(A&2hqo7+}1 zEE#epF1!TsUOK#-6B6-gab88AgOxtK=OcLZ4ie;BZH_P@?rEKCod`+?wGLyEzqc9Y$xvr3!6>$psAxY*e%um&;T4XOLbndGKID1vRr55pT5yyl zPA{0+vh$2Bc8iy^{Jq@rdx59(ObhiB$)Io=WPkR{)xabq(Zqa!p!v}ON28|6?`XO8 zJk1v3z}NVF4n~Ap;%Z$Y&MdQ6NqlF^Fn>Jtsh-?#J=Q3*d7ycG{Zc$;J|ldC`cv*~ z(|YgiB1!Wf`=KzO*i(aebjB^H4E^{W-k=6g_AvC!CU~sbzk@nsVb@HNhw=a1#HzUCaiDQDxN(&0A0DCA2#X3|NraMt4qJ z%gT(Hmz8)^TA<q-8k_R)V#6Wfm!-e*`B>Sl-O7WQV@U71iX2{_w|&gkJoRgm7g`I0E=F4TW^1hmOY~+GNoFTSH2+Qd z+ZUrKO6m}-iTu56gd=f8-Q}!k-qvb^W|V%FD#=m2nh=_iA=)2nBP*!J_Eq_t_bJT*BJ)BrCIw)nvK(8MyvhDcfu4_v>*+%S z{~~=gGs|?D%?hKroSw_?CjS}y#S=fTJoUS^ZDzZ4_j7pjy0lofcM1`2R_0Z z?!F#*&+tCIZ4TZTmCZ{76=(EAwG`tl9o%{HAj&tJj9fn5!3q>{sKegO*ULxz*uG&d5 zKv~15-cNJhL(Q^ueu!j?M7V7($&^ut>j@!EJ)tvJ8gD%hWs`uK zxY&axI!@DTi6YmIPzGxiv@V)LFC&%s+=}h0(#y4kwxf;~yQWXC9Xu663pxi~4vR@r z-g&UBkF1RRRvLgscOiWD3g}k;M3^g_1-LCD$AxA5E zwZ*(j*Mw`kY4Z(03?x;W6(gzcl1Zk$Yg`~E;T-<6@y6PSq$wZ}MgCL8+xt~ToCVFP z1NszY#m9@-F#$)`e+dF!j3_RO%~0AB=-acZzW^2r3OLkl@JVm>ZFYda5s^QM>2v%< zAmq0$vX^clMYMzyA8jth@NhG^M{T=N-LvtgQZDJBaWMtFZKr`_x174gEh90LJ2^5K zCzz(I;`Tfj<|dihI4QsoXW{Mbl3&iqu_11CY2m-%v$5gkVoU^LXwg7}FD`6v4=sR6 zh0V+AKezYnhwC+18cLcX;nA~fguup(+TZ2?A=xhqOag&p{wh?{Nw>B0LV|ZY(#Vf_ z*E&yxD?=;0yC>4%R@SY?itJPwhLkqh3ngwmTJ>olU8|;(>(P0p%0*i!JH`EHqS)ax z*zcAu&IK{k+=>SKP4V;bOMw2%m~6um3gu^_y6aJ@2lAlP@OSO)>$hdJKdu(xlSaQJ zeHsXD;THxpgWe&kfV?W{__q|_)KRZZp{pKWBKM5Cg<04n83D(xN2{6-|I0XF>*=`z zF0Ss_nxfxbyvp)&xk>IYo2-DjDuE>wI(T2-bY5Q7hM${s0jCn+;O?KJ$?%)w%Bp0Y zs7oBPOQ4i6u4Q|7Oh*P_qH$5w_*_?j=a>z7Q!)1L=sZRs*}@qpn?E@jWkIf1n{vXY z|Fm2FLUAXVTS0~+qi@rRfq;)6j5Ve)UASDZs1 zHwP0TGEEbL*SZ4MG=Ti=?}P6p9sMi16eNYaPhkI-xWc&v!Qd(8Ucz{)BZ1 zuqvfI=AmMGW`ofvmtd|XZIqY07T{TZrtx-)%75;?YM&qmEH73Pqig);_7jH@De^)v zSGFsl?3%GcKcPu4gy>A)ZHM4jVTX`j3%M28RJt;N&dGk&q4?(jxykOpPh=%^kD^&U z-C006owQKC`ISk(=i=3BKVGj%;i32}-(b1?sC#w&3avY<M3xtm4eg1Cid zZ!6L6{Cvr+oBzDdgZXB_!FBy0w@z0~otu=1NRx}Ghf44Ka`vi1IQiW7DhWH@ct};6 z4b4GTz1=YMds|aUt+JbCAnFy^BvJn?r&b)pmm_l!nMarebHxX2T%oO;T}up(jvc>% z4_Q8W*hf2`*73Ru-WO5Cy#nc#y%?SIJ;zc0aF>KVlZvHjD%N)6;VhFY%kTSxYd$vn zn4$B%6j=NdokcpP$z1rI636VDZfT6fNs8xj zja&*vZ*1P;&!MF2^Y|b1wBm}pjkVqs4A^{H+6Z~M>y!Uqg9vL-)iCNVrfzfI)42%>k>_?AK!W? z(p-!4?aq}}^l?naoLwgS*euw7wtXbo01B2kL2TP<}A?Sgu$* zmK={x>CM5Xl{+l#>)rg3(%k9`cE+tbZdA^0_V3!I_D2+T=PmB7so9vGaUBw_u)9p>)#b)6zdr>v#`Vze_QP%w z636DtYw^AuHHW*3!ghjzyJw*oaDhW{+s@i2d(HIbmdjt$lEWs;4B})|WN|@~;wNA2 zv{?KI>ITV_A=qEh?oOVKHC+9$@o)AG-ACi6;U>vILd8LE;h(BO&jwAr>Mk!(Qf%T| zRsLa3xbE`xv|`F@^1~*N$I%}iWz1rXmhDM;S_QIX=PtL8)b8Xyuwppvi0h%%HcUU~ z{(ZWX6$C8dhlGanL->ipP=aVWd^yhXEw`mLrTX>NYpS@2+)5Jq>zBn{;q=xj z-NHaF)`T7h*4NbapRgZZ%;_RoEHg;%0{`(3DO8R@ra#N+mG6bVMeg6o&9K(V}(}b4h>~utqqREOUmPeBdP$T$L;B-mpiBDtwYqI zmlo#QfgMU@A}&}gFk6?i-= z&gXOJcWHU&fO8Tm&a?nU*`~`-G&oP7s3`_8pKXcG(J|%I#zVnh>bR|Gk{QkX{GdOb zgBP&Z(}1J+GNI&ztpS#@jTr@i>?-ivzMb7cXiuGn+t%72RS;{(90R8fM{*^skzvK{ zAA+q&Db}2rV3uegb)W?IPTyCTlz0Oyc!H)u_oQ1$qNZM*!aRk0$)O)5?6}mGt|I*Q z{dMN!#MqUH&ynacV?{?+BJ+hs6ZJVtSC^P#!Ym{0Ku)3kaBfnRTSL_)9kFr$1Qj|A zMW;0H4Tu5YZu_>Ep;&8>G8R=h1SqQ)XHITn@6e7!Y?{6@#NUHTayO4PzUKO{g#w?V z(q4Debhny*M1%Ju*-N%aQhd&Nw7M37iWcV?B;KajFF)m7?`Hk(*rO^H=SBdFk#DwPED0pv=8wa78=y#P%{OYd2U#p8|4sm;2JZusqKG!YZK|3vCXh=o8x&ov<4 z@QZEUbaYB7n}6lR>>`uWr15szj-B(5zo{*V=xM8W_a_`gQ)ai~OmR4gb)ADPS>Wh9 zy(K?;N45Z^rugwf0|l{d=)gokiAQImi-f>Y^t4pqbmJcfV7$G3YsoUdz<65M)nH50 zp^*6j{I8I7(`hIQTn8vXR2KVb>=i(y^bR{Uic>rE`7mVh*m-B2miY?q${S}#;;!wY%8N; zX!o{i!m+t_r^VXAUvaM6am)N~X9LbX{!wA{FCE+S9FyLzzkKrCVPAlpPRy{klQJ$w z6K?vI6`{}$d^L4#{teyQQ(HQf4tDNBG&0hji$jxcro(-x1dkSdPvWe#f(ltt(w8{7 zGKh}x@xRaBxhnUxQYT4K*vl{?eD#XTf(jW#f`FJUwF`^x&nxVqEhgUI)N3X*KDd}g zxGR}Dc8oco!P))`ERvAbb}tzOlpx9DU(;YEbs$6@3kIqNr;pS+WyFQ;=+50Z-N}wR z&FdE`wXxlw^XV>5<0ps!K+ss45%EcOx+Cr2Y%zUir72TN57YaF0NN?B43WOprg7Z_Yo5G?CF)!?CY+P4ZBD&=~D@8AH z{GMaO%jNr)SCy+;6A4x{R@0LYIUn;<0cYwJ(w5}HM(1kJe(bYKU)| zKd|Oj5G*WhUpq^6awi||TUkw4rkq?)pW+PLVNN20PD{x^lxZvMrFqryJCt_ftcV~O zEbBV^byGMZ*ZZ;Q=MDsSC>mm7)bO>sC2^kM*y?1`EjH!lo8zzOO##Mek4g19DOy9Q z{b`FRU-u8C8@28~i$>J(!Acn=*%Lmn&d^8sGcU5gh~5!k0Qu@@j1~T($||>~Za#XU zXBTEY$bZm}&Zx5%cd7T4PksLLGixmf?@>kkUubF1%X&<>Yvmw!Zy$|$W78&Su_+aD zRXoAYM$G>&L;;aN`<~s-;Mxb}%Nghwq&Dxf*x3&L4y>>q-6NjsE&2(U%4q}p5O0NA zVhyC_ieTTj>nIyo46C(G<%?Q8-l6-2luF8>y^&F;w|xsFX<-G4_?NuC3t>_EjEFIf zJ!%@N4sanQsG$7p^~1n*`Kn?4tB{$%YIoVq+B-Mf3G*(;evC)i*BLo!R50Q>=xOM( z51x`8qL|6(i|se$ET~%dShbJmlBej96uj+9`@#4FII?+D;%#JPDW>RFuh+^GH~Q$s z#*<330zNw+ow5G&;!Xskjwb?+)JWd?#xU2y2b4W#9cwtw$*yQw0Z7?WIM)3ulG<6^ zIi-7{5Fo8zGpb^zP*9@8xZD8}`-hug<$t+<0v+y%XV)ieKD%zE&z$h-Y&`_%t@d7Bx(G;Q6wTgNMFMkxiXp#4E9qcMw3|EqZktSW9useI4+eg9 zUP*Pks%uaq2M8|J%4c0jDZv?^HModQ3khQ#kfEA^SXycLwW1DV0(!U=mNT&qjdvnItg2|Y~#t^(CbFN}*M&62U#f8L+NSGaWme5cJ)3E zO|^G++%tu$XG{6H1%!jD36SRJE4O8>L2pNqtmt~A{=Z!J|IuKO&ryr{KYv72ZaDpt z-nB(y(Vtm^k%I9cVDRwOwCa+&ClbTdj=aDX`?MdoM8W#a7Id+HJ7Vxxc}Zy2ih2Df z8SbpjsKA%ql(yd1{Fo7Lhf7W}l55|JhecA)lhanpsvQ3-*PlTd0$(zvt z5_)!6b4SsuC6dG*V??jN&f`61R1jJe`isArQ+nPsx_Sc&HFGEjA$@&W`Q`+#a=J$4U{aF#M*NsBm6xr?5t29{=vP8$ zK3M$8#PFdmbiT0*jTUmy z4Coxvk3=)iGm8Tg3zI%C$t<~WKqK|`62)oKIYqZtp$rOX4$&TNXmB00)#TH^uyI=z zR7N_F$+vW7N4b28Ytj^GwU>uF67bh6|FZQO$k#TR9gjxO3GrF14=Y{uuC1z}^H zTa*QJEPB!SBQ@H}!c+WeWDkOx0myrt0VJYj5W(4GG;q=^LblV5%u~!B#bdq&tC@|p znlIY1yjDf#%~Mu_PD3qG-z>mX6Oj&q45u&UI6OqHn*1kPDG!r-?LvUTti=w+vNoA# z63d7HF!yh&dYDm^l<$%vbx*6o7;Ufr(8FkjLQRTUw!kIU5Y2wXH~yxeM9+@|*f@vw zRvs90)SEj#^F2?wV`%Ur<85jQE0sWtwC!AE_*$Wz^P{D0Ss$p+(+`OJ^3%IpPp+p3 zz+X8T+dC%P9Zu`~1!^2uciU>M_l(*JQt88iA2GSkf7;hujZX|F6CYy2l{mPz7#OTL z-7)0tHlyc2tekQa;#Gl#KcD2X@3u*nKJb*8^G><)>mhEpemy6?FQRXi%<>%esNy*)OC_Itu-e^yV|5c&%k04$Y zGmOr({^cG8|5PQ*EVkJ>Uc@m&x|6FIri`Q~LhRj!QZCGCdb|&&^oK;9jd&7RA0G=@9<<$vsyUJ;f^QGE zyG(EM)=v9|+vZ&^ICdN@|4cmP$OqiA67p32iHcSC$_@kO@FVsxzAxj~U+Xk&myF5% zS!*L_P~ZA{<^IO9bPM}X#A-9#k>=zkmfQb;b9vJ-ATw$BYS#QpVm{LNzNYFu?{i*y zt2cDhD6=sa6k|6qeWTQ*3|JaK{0MWOu$>xVF-in$n?^TtEkw5_joXGJC$%eC}B zSQ@D{M=In1I@NDz;E5mxoGsum*7)?vGhR^RN+dwkn{ryqa9|(lpSlGGzGriinHX++Vb~LtaTvfL zsH$*>E+1=v)1_o7OZQ{W2x1p&53!)hpNVRCSX29aMM+}cnea|zpIc;`qG=28=VW1x zAp40Dg{bHr-Fdg`C^A+MxCn&9`0?P_Nn9b7+ZTi+6zW-T5xFsX+sxcGfWpY z7G7Lj1|4wX4iOhNI8*Y)64jirdl(2kNRiT;)?zHhIdj;}8Q&g?A^2%+A_q33+a;a{ zi?zUdAjTht+R@n5Ir|$3R6jg@!!)|nz$YosxZ(%Q<$Mr5eFZ3`o38mrsh{Ey<}YH^ zcg(qbRT|!cbcIV~M%XDG<~Aw|8!;h;x%cYl+6NoQtWUQdqWgh13#37Z&*3`(SExCcjEy6XWaR_Z|+i#Yd6~Z zkbJhv|F2T!md1@JiMS1T@NryaAj-k?2vGZ-eJ}he`tZ#P z|A+0;Agi*MmRDL8^1W!r0aa43b5S~{-Ki-L6 zCwCjh1uFZ0~|yua%XIJjhM= zM-^^Qt%|lEBZgT6)5g4$?--k?1)Js;KA8^%Od6S260ol&t2!DcX&}@5hl4y|6yeRQ{>`+?zgoVR&&bNol1;fD0eTM zYY!Oaz*dlot`irE`8_M1=F;vzg7E$FYr=WW505b@b&yAH&w84@kERcL?sX7M>GH`w zli!j9EWIobg;lSQk=~z3-y0E+I^1*hYO|YOeM@|G{y%B+b}!;81}1v-Gn>w^L%Kjc zXCO*Jt;wjh00a@H>dN4c3pg3ICl+n-jOo2<*Ai9VRuCt}w@fuwaxlBm`J-$cV&AIb zb~OYM;?pjQ;L-ZJ*5Atx;}+<|$OlzOH?5OY0Um;<6g>-8e2G$$ZM{vvPu&jf;D{dK zy&S8mmWU2{gZhBne?a5gL~Vi_pMpPu9WfbCt3)&)GdnOTmv03@vqM%06OEagjqZ=l zEwgpR2pyaprIH{>C=A#hTVO0kOIQ6syb`xp$&<)*^6Lv~2Ua(+4OdAv?is@H{YPEm zH_OKCub|ICqmK{o#Id2Om%E5^8-^fSxAGBytQx!Dbf8k)7y?^0Qw%$k(u3cPe{?jpC8qV<4Mo=h zbkBV%PALIs(uF5Ke^ooOAZMtN32B>+&Bk1Qbg^ITx@(|;gQNLIgNo-IZ@7-=JxByT zl()oP^J|~nuOK4(iopaadXdw!p3Xnl@!K2wkww?nTxZ-`2wMv?GOl@-hSYMI3DtMu zn6aD#23x!B^!FGfjx7h5GWWSBeesR@iPwrvSq0VuW7fy zYi+9S=9Y*|a&cFlcG25URDVXc2W33*W2pZisu^d|)O_a5Gt_n|14Y=u9Rp31T!VEi z!yJ_Rgjq=~B`E=+#@Y!TbMBP2uY8(TUi|q=v+~yb@_>;PTdjyJas3&R8Q6J?;E_A^ zz6x85;?BG($I$hd8-*(&o0-7qN>#`a`@9b@@M)pd?&^L;;_bCjWh2sm-NCmR;f67y zwA7{3O1nNiul;r;FzQM%ulZ(O z7X5YgTj#`n!Wh9DRTcU03hXIi<^cBAapA4B=oCY{Z&X`Y;ZCp5guPVW!iEe@sAEB~ zA3H(_Z~_Nw&|#+|4~kyitKO?WH-9Ao8=m8UXH0uagi~Rwl8==V-&zrj0UhT|v=#uX z72>y!T@!t+$S)>&&5%kkaQ~F!anyfs@ZcW|)J$B@hi#^*a&B&C;_L|V>RjXPdY5aT z_MPfK_;u|XkUMdTm8=NsMc*`hh(q+Ha7Xbdd>@eE$g?>%8P1lzf?P7 z3sMARf_Y01MF-_axob$ov@tb9XlTbrH^zT#DJ6EzZPD}CVym>^uu#k${p` zWYU5$*N?FvT;C7PDF6;Imuzljl~w03)f8grKVjSDfJGyKRR35w>CVm}*u4K|esb&6 z$9}4qt-rSd1)Kn;{EZL|}zR=H>3z=G5*Hdem2gH+;W!alyaDV$=%P;5{rB{PwnO&H4>bG@z2_Kw6etZ&(C$b zjv23ePPF~fJ%|exIX9;9v|lxrketsM_sASw7cW(>%WON{SVF7G3R`V9lUx7b~=4TOI8!>7=M9MiFP6tb1mhPA-l<`1Q?ZoVbiw{8e4GJC13y{{1T~ln*mW!1g41o&lJaRx9UDZOBvxBd#mr{FInEa0JO#a z$AF5fm$D8LnzUR9pThd3Lxh{pfqm0XhO&LZg?8h8wr8Ce`lEn%yp$W?4fB0m_&Y&~ zjo6x0Ld8?86e-3A5Sar0Uaf4UL-s1#oCCBK6HI%EK>{Xg;)%m;Do)DX->B3Qn#v-Q+ zK8`m&bgsRCuhvBXea4<5b9@b{QRBxAaKbMyMNta5D-&VE|I{46Q|B)qI%J(^Y+ckV z+_!f)lkYiszT3m~yB-;zU@q^GR%(_5;#*&mkmKNk2@h>q&J{}xU~A~Wh9xZadE4jb zNM}OSf;e?)YSQp$#^_%Y@91oyVo_fzRON>@v2P;uHGv)aD6_H4Ij@mJLsQ-RpF0XH z0Apf}kL5!Zj7qylNJlz|-8wuBf{u<=;muJ)ft&5Rl$FwNdAAgS&egORf$ zIPieDt-#TqKK64(YTV{0tKGbTnQCZHV4i#D7!e`Ihsw5yN^d}Ic=k0Dyy`@jH-ht9 zNNbQR;M=zV0(q5Y0qh#&|K}3%@Xp;=A;J;yqQ|e1#HL*DtqkTyH4V?j19*@SJwq5> zOt*`Gx5mDaM0c?9_#)PL8$62G)l~YP@ob!ey@8d8OXLFmshI|m8SGF3Jm#_bgMQRp zm&a)`vP)6q@F~>t6t{ikR|}7cb%+Bbo$hyvWcPN76jQW z&2|Gxjr}WD{Mt#W;&ZzZ^QO9DEdbHJ(J1bqr#JV}s@q~9yub=P(P*{!R7>gea+0Cq zh}_`xSN+>r00|O;3-wUj9I1gpyAV?0`ASI+r(~C zKAgP$x1C_}e$D_>N6EN(u0_6_x+i$i&puC};K}arfyyXA_11ftnGHU3IOAPm=U@BP zyh<>DrQM&fk1ucOTCXYHQdfSQaizfUA;O$2!ezG%XdZ2&2yP>pvTLFxfFxRQD#$o{ zLJ)u98#uXLFFU6a%5(i*ky+UqnKIQbnJ{zpeOWw6w5HT8JUQHoJfYfkDpoY}rw&XH zDr?`Dh@~E^ef}Fy(dj8aUPCh8A~%(R3HuZ%Mc|`s&9+M**n;L?g7l(C#fo8vgv|^B zQoqHt#`{+NnMS|Ey;4T$U5~E|`vQ?m32YyHg76L(Y?NGUk?rkb-e%78gR4;{etmCQoVwYrsp4PLh3CB)Xp zWgByGoJR2x;9bSMuVpXxK7khMC>7R4vZ%ek46PI-GM#!{ZpG;P{h(a77~e4;)z3}$ zVxK7NkLjcWYnfY1Wkanj>EIh$*t2Ir&pygXYT)@{7WXtTzZR|}Xd9Q``XP}T@aIWh*@1=5LUxxDOPd=cFow3<@=LsdiQPDOoZ{I4snu|~|pX1wvI zEdLYwPX1-N%)bJ0QLhcx<4z1U6~4R?Maro#9J;>y8qg4DLAa&PP=m6J2?BdSVaJ zj_;;qp3syhiGhUl8lS|9GW~X!d_hN=y}C)2&KKjq0`tBb3QH?jNZ&m9;Nu+BXg40; z+RVjq-Dn%TRvc>hlV>&v_1h|55(s>KdG02DlzETG*Zsw_>)R9`nnXo-ARA}&C7&%j zyeJd;nx41x6;U$I>G(ta4Wr~;aVCU+DYEp6V4VT(4z+ zb47=H>N`KYjum#oM#g_Ju=h;E>JZ%T)P;DdsM})ZKghM3&Ls4+3S(5*hki<|z$=}) zkL!qJZ|z;<>Q9wcC#7+E;egBPjphaW@}A!wXRd^f2C zf2^V&OcJ(k`}=D0Yaz_XUf1*_VrRE^(b zmNXyM;^MUB7L|S!UzZWpf_^eF=2|d4CT@)U5;@aln|j153XCIXMiu@3Ljz zd&^9YX((&B9AmiAY%w9j@S!4Dwc2`X)_~L&(D!={=6$87ZG59}UE}ruhE}X|wSM9d zIs1X~=iZD9SC&7qk^270x+V2|?`LGQXE?vm3vmke5Oui0yzOXcXO~;4-Yv8+ZA1i8 zy%L)AUi`T?S~{>X=|~+ss1t&}qp=>ZQx2*a7pXs5hs<8rUJjuaZ7=ua#AWN$-V1E- zI?+wL)1Eg;bYr?5jwHsm#WLHaU00iDLc%R_@04_Nn5(&su%e~6E88}j$5&ddAhVPL zFocn)q1nJ5EAFOlQfF5&@7__v6oS!IS6+tNQMw819n1^Ne5PXON##NeRQtFza7u*S zZ7cQ6Z;PJwSx;yPLD_k*T!pkk^02otzy<;<`*7ni)$Qr*bH4^ZjC8HeY8 z)<^IgI7R_4v%Ts*8k{ zP$=o@z}=&Vy@(%XA4&T9iVkZDsG@(Q1AMX$`r=o{IS|4|86XCvC9pfZ6gL{_76R9r zWNUUp^KQJ!OKNLC>KVEB<5fU8%L!%|B^k#U3u*#jGb$6?4V<)o+c>&?cxQ#l0OxO1 zKd#He>jSRpgb&tTAJ969Ul?k$yA#=Zs8*WF>IKqTw?@3_FjQ5l=)lbNyD~=2sMaGy z*;e!pB|0-9xEDU7u;qY{Sxv0Zm(x?R3$B4ORq~wNLy@ouhsnc;Yde8kY3tXv(A8cL5Ks4=)3B0;o|pK$*3}5$Fr}uPt&f z4Dy*4Yt~_R*VQQ#O-niIA;We~CSx)BWF75$3XnL}dOB~b@`qgl1a6!aGR{8Bt>%!5 z{Jm}9V1K{EMrPD9*{Cr6zVnnW^7N%x4tA;**%P8gr>>T#t9~3s3T5}Zz-x=?nqx`m z@cgi+(Wvj1eEu@Dqc? z`H4!*nmkvfDlJwDiAZY%;S{~;nx;cP+QvsHFBz8w=>slJ)7d?3XUw1Q7m+kycx8FN0aI&pOSv+{yb2 zG|{_5&wt_`_ix;@>Jq}Ky<=A*aSYea87x7hkV-`kIN$Ghf(cN4_N&tvl0`6X&76Px zicXS{z%%h&zTcm&hgqH5Ta(?x_8TTppkJjdf6=T5jxlUh{|cmS(&7X>v}@ zyJCeUUm^)M&c5Vaf#nv2$V7&CHz(84pPrux>7(y$WE}?-JC60HrcKoTW{#{p&Ix!p zO@=`K&ir$Z_0a*%zts09(LBzpVr;`~ntl#s@?+>j5}An)=6GWouhW71HKrNEjdMfX zxug)8tsNcYwhH|+U8R{Y_e28>Sc)y~_Q#&>IY?&&ecSO(xJ9GjQX165&+Mg!1WaP6Zt zaS5m;A-ZCuhO2_mC3}S1(+(Y(0eIzIi#68`)Vxj0viX0rFVBvYD1XeQ_PS4bGcK

Pk(ZY+6&65&M>?a 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 AWdHyG literal 0 HcmV?d00001 From a385044dab7a7cc37bcf904143396d89d1adaa92 Mon Sep 17 00:00:00 2001 From: MobarakHsn Date: Thu, 18 Jul 2024 17:56:04 +0600 Subject: [PATCH 07/16] Add pgpool reconfigure-tls Signed-off-by: MobarakHsn --- .../pgpool/reconfigure-tls/issuer.yaml | 8 + .../pgpool/reconfigure-tls/pgpool.yaml | 12 + docs/examples/pgpool/restart/ops.yaml | 11 + docs/examples/pgpool/restart/pgpool.yaml | 12 + docs/guides/pgpool/reconfigure-tls/_index.md | 10 + .../guides/pgpool/reconfigure-tls/overview.md | 54 + .../pgpool/reconfigure-tls/reconfigure-tls.md | 1046 +++++++++++++++++ docs/guides/pgpool/restart/_index.md | 10 + docs/guides/pgpool/restart/restart.md | 178 +++ .../day-2-operation/pgpool/pg-updating.png | Bin 100124 -> 0 bytes .../pgpool/pp-horizontal-scaling.png | Bin 105966 -> 0 bytes .../pgpool/pp-reconfigure-tls.png | Bin 0 -> 106015 bytes .../day-2-operation/pgpool/pp-updating.png | Bin 0 -> 104899 bytes .../pgpool/pp-vertical-scaling.png | Bin 106139 -> 105314 bytes 14 files changed, 1341 insertions(+) create mode 100644 docs/examples/pgpool/reconfigure-tls/issuer.yaml create mode 100644 docs/examples/pgpool/reconfigure-tls/pgpool.yaml create mode 100644 docs/examples/pgpool/restart/ops.yaml create mode 100644 docs/examples/pgpool/restart/pgpool.yaml create mode 100644 docs/guides/pgpool/reconfigure-tls/_index.md create mode 100644 docs/guides/pgpool/reconfigure-tls/overview.md create mode 100644 docs/guides/pgpool/reconfigure-tls/reconfigure-tls.md create mode 100644 docs/guides/pgpool/restart/_index.md create mode 100644 docs/guides/pgpool/restart/restart.md delete mode 100644 docs/images/day-2-operation/pgpool/pg-updating.png delete mode 100644 docs/images/day-2-operation/pgpool/pp-horizontal-scaling.png create mode 100644 docs/images/day-2-operation/pgpool/pp-reconfigure-tls.png create mode 100644 docs/images/day-2-operation/pgpool/pp-updating.png diff --git a/docs/examples/pgpool/reconfigure-tls/issuer.yaml b/docs/examples/pgpool/reconfigure-tls/issuer.yaml new file mode 100644 index 0000000000..ea6a866c6e --- /dev/null +++ b/docs/examples/pgpool/reconfigure-tls/issuer.yaml @@ -0,0 +1,8 @@ +apiVersion: cert-manager.io/v1 +kind: Issuer +metadata: + name: pgpool-issuer + namespace: demo +spec: + ca: + secretName: pgpool-ca \ No newline at end of file diff --git a/docs/examples/pgpool/reconfigure-tls/pgpool.yaml b/docs/examples/pgpool/reconfigure-tls/pgpool.yaml new file mode 100644 index 0000000000..9a41347db9 --- /dev/null +++ b/docs/examples/pgpool/reconfigure-tls/pgpool.yaml @@ -0,0 +1,12 @@ +apiVersion: kubedb.com/v1alpha2 +kind: Pgpool +metadata: + name: pgpool + namespace: demo +spec: + version: "4.5.0" + replicas: 1 + postgresRef: + name: ha-postgres + namespace: demo + deletionPolicy: WipeOut \ No newline at end of file diff --git a/docs/examples/pgpool/restart/ops.yaml b/docs/examples/pgpool/restart/ops.yaml new file mode 100644 index 0000000000..e9dd958c29 --- /dev/null +++ b/docs/examples/pgpool/restart/ops.yaml @@ -0,0 +1,11 @@ +apiVersion: ops.kubedb.com/v1alpha1 +kind: PgpoolOpsRequest +metadata: + name: restart-pgpool + namespace: demo +spec: + type: Restart + databaseRef: + name: pgpool + timeout: 3m + apply: Always \ No newline at end of file diff --git a/docs/examples/pgpool/restart/pgpool.yaml b/docs/examples/pgpool/restart/pgpool.yaml new file mode 100644 index 0000000000..6d61d4163b --- /dev/null +++ b/docs/examples/pgpool/restart/pgpool.yaml @@ -0,0 +1,12 @@ +apiVersion: kubedb.com/v1alpha2 +kind: Pgpool +metadata: + name: pgpool + namespace: demo +spec: + version: "4.4.5" + replicas: 1 + postgresRef: + name: ha-postgres + namespace: demo + deletionPolicy: WipeOut \ No newline at end of file diff --git a/docs/guides/pgpool/reconfigure-tls/_index.md b/docs/guides/pgpool/reconfigure-tls/_index.md new file mode 100644 index 0000000000..75a665f6a6 --- /dev/null +++ b/docs/guides/pgpool/reconfigure-tls/_index.md @@ -0,0 +1,10 @@ +--- +title: Reconfigure Pgpool TLS/SSL +menu: + docs_{{ .version }}: + identifier: pp-reconfigure-tls + name: Reconfigure TLS/SSL + parent: pp-pgpool-guides + weight: 46 +menu_name: docs_{{ .version }} +--- diff --git a/docs/guides/pgpool/reconfigure-tls/overview.md b/docs/guides/pgpool/reconfigure-tls/overview.md new file mode 100644 index 0000000000..799f9eaad4 --- /dev/null +++ b/docs/guides/pgpool/reconfigure-tls/overview.md @@ -0,0 +1,54 @@ +--- +title: Reconfiguring TLS of Pgpool +menu: + docs_{{ .version }}: + identifier: pp-reconfigure-tls-overview + name: Overview + parent: pp-reconfigure-tls + weight: 10 +menu_name: docs_{{ .version }} +section_menu_id: guides +--- + +> New to KubeDB? Please start [here](/docs/README.md). + +# Reconfiguring TLS of Pgpool + +This guide will give an overview on how KubeDB Ops-manager operator reconfigures TLS configuration i.e. add TLS, remove TLS, update issuer/cluster issuer or Certificates and rotate the certificates of a `Pgpool`. + +## Before You Begin + +- You should be familiar with the following `KubeDB` concepts: + - [Pgpool](/docs/guides/pgpool/concepts/pgpool.md) + - [PgpoolOpsRequest](/docs/guides/pgpool/concepts/opsrequest.md) + +## How Reconfiguring Pgpool TLS Configuration Process Works + +The following diagram shows how KubeDB Ops-manager operator reconfigures TLS of a `Pgpool`. Open the image in a new tab to see the enlarged version. + +

+  Reconfiguring TLS process of Pgpool +
Fig: Reconfiguring TLS process of Pgpool
+
+ +The Reconfiguring Pgpool TLS process consists of the following steps: + +1. At first, a user creates a `Pgpool` Custom Resource Object (CRO). + +2. `KubeDB` Provisioner operator watches the `Pgpool` CRO. + +3. When the operator finds a `Pgpool` CR, it creates `PetSet` and related necessary stuff like secrets, services, etc. + +4. Then, in order to reconfigure the TLS configuration of the `Pgpool` the user creates a `PgpoolOpsRequest` CR with desired information. + +5. `KubeDB` Ops-manager operator watches the `PgpoolOpsRequest` CR. + +6. When it finds a `PgpoolOpsRequest` CR, it pauses the `Pgpool` object which is referred from the `PgpoolOpsRequest`. So, the `KubeDB` Provisioner operator doesn't perform any operations on the `Pgpool` object during the reconfiguring TLS process. + +7. Then the `KubeDB` Ops-manager operator will add, remove, update or rotate TLS configuration based on the Ops Request yaml. + +8. Then the `KubeDB` Ops-manager operator will restart all the Pods of the pgpool so that they restart with the new TLS configuration defined in the `PgpoolOpsRequest` CR. + +9. After the successful reconfiguring of the `Pgpool` TLS, the `KubeDB` Ops-manager operator resumes the `Pgpool` object so that the `KubeDB` Provisioner operator resumes its usual operations. + +In the next docs, we are going to show a step-by-step guide on reconfiguring TLS configuration of a Pgpool using `PgpoolOpsRequest` CRD. \ No newline at end of file diff --git a/docs/guides/pgpool/reconfigure-tls/reconfigure-tls.md b/docs/guides/pgpool/reconfigure-tls/reconfigure-tls.md new file mode 100644 index 0000000000..608ec62ebd --- /dev/null +++ b/docs/guides/pgpool/reconfigure-tls/reconfigure-tls.md @@ -0,0 +1,1046 @@ +--- +title: Reconfigure Pgpool TLS/SSL Encryption +menu: + docs_{{ .version }}: + identifier: pp-reconfigure-tls-rs + name: Reconfigure Pgpool TLS/SSL Encryption + parent: pp-reconfigure-tls + weight: 10 +menu_name: docs_{{ .version }} +section_menu_id: guides +--- + +> New to KubeDB? Please start [here](/docs/README.md). + +# Reconfigure Pgpool TLS/SSL (Transport Encryption) + +KubeDB supports reconfigure i.e. add, remove, update and rotation of TLS/SSL certificates for existing Pgpool database via a PgpoolOpsRequest. This tutorial will show you how to use KubeDB to reconfigure TLS/SSL encryption. + +## Before You Begin + +- At first, you need to have a Kubernetes cluster, and the kubectl command-line tool must be configured to communicate with your cluster. If you do not already have a cluster, you can create one by using [kind](https://kind.sigs.k8s.io/docs/user/quick-start/). + +- Install [`cert-manger`](https://cert-manager.io/docs/installation/) v1.0.0 or later to your cluster to manage your SSL/TLS certificates. + +- Now, install KubeDB cli on your workstation and KubeDB operator in your cluster following the steps [here](/docs/setup/README.md). + +- To keep things isolated, this tutorial uses a separate namespace called `demo` throughout this tutorial. + + ```bash + $ kubectl create ns demo + namespace/demo created + ``` + +> Note: YAML files used in this tutorial are stored in [docs/examples/pgpool](https://github.com/kubedb/docs/tree/{{< param "info.version" >}}/docs/examples/pgpool) folder in GitHub repository [kubedb/docs](https://github.com/kubedb/docs). + +## Add TLS to a Pgpool + +Here, We are going to create a Pgpool database without TLS and then reconfigure the pgpool to use TLS. + +### Prepare Postgres +Prepare a KubeDB Postgres cluster using this [tutorial](/docs/guides/postgres/clustering/streaming_replication.md), or you can use any externally managed postgres but in that case you need to create an [appbinding](/docs/guides/pgpool/concepts/appbinding.md) yourself. In this tutorial we will use 3 node Postgres cluster named `ha-postgres`. + +### Deploy Pgpool without TLS + +In this section, we are going to deploy a Pgpool without TLS. In the next few sections we will reconfigure TLS using `PgpoolOpsRequest` CRD. Below is the YAML of the `Pgpool` CR that we are going to create, + +```yaml +apiVersion: kubedb.com/v1alpha2 +kind: Pgpool +metadata: + name: pgpool + namespace: demo +spec: + version: "4.5.0" + replicas: 1 + postgresRef: + name: ha-postgres + namespace: demo + deletionPolicy: WipeOut +``` + +Let's create the `Pgpool` CR we have shown above, + +```bash +$ kubectl create -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/pgpool/reconfigure-tls/pgpool.yaml +pgpool.kubedb.com/pgpool created +``` + +Now, wait until `pgpool` has status `Ready`. i.e, + +```bash +$ kubectl get pp -n demo +NAME TYPE VERSION STATUS AGE +pgpool kubedb.com/v1alpha2 4.5.0 Ready 21s + +$ kubectl dba describe pgpool pgpool -n demo +Name: pgpool +Namespace: demo +Labels: +Annotations: +API Version: kubedb.com/v1alpha2 +Kind: Pgpool +Metadata: + Creation Timestamp: 2024-07-18T07:38:54Z + Finalizers: + kubedb.com + Generation: 2 + Managed Fields: + API Version: kubedb.com/v1alpha2 + Fields Type: FieldsV1 + fieldsV1: + f:metadata: + f:annotations: + .: + f:kubectl.kubernetes.io/last-applied-configuration: + f:spec: + .: + f:clientAuthMode: + f:deletionPolicy: + f:healthChecker: + .: + f:failureThreshold: + f:periodSeconds: + f:timeoutSeconds: + f:postgresRef: + .: + f:name: + f:namespace: + f:replicas: + f:version: + Manager: kubectl-client-side-apply + Operation: Update + Time: 2024-07-18T07:38:54Z + API Version: kubedb.com/v1alpha2 + Fields Type: FieldsV1 + fieldsV1: + f:metadata: + f:finalizers: + .: + v:"kubedb.com": + f:spec: + f:authSecret: + Manager: kubedb-provisioner + Operation: Update + Time: 2024-07-18T07:38:54Z + API Version: kubedb.com/v1alpha2 + Fields Type: FieldsV1 + fieldsV1: + f:status: + .: + f:conditions: + f:phase: + Manager: kubedb-provisioner + Operation: Update + Subresource: status + Time: 2024-07-18T07:39:07Z + Resource Version: 98658 + UID: 4c7a00d5-9c52-4e6b-aa74-98e82285d9e1 +Spec: + Auth Secret: + Name: pgpool-auth + Client Auth Mode: md5 + Deletion Policy: WipeOut + Health Checker: + Failure Threshold: 1 + Period Seconds: 10 + Timeout Seconds: 10 + Pod Template: + Controller: + Metadata: + Spec: + Containers: + Name: pgpool + Resources: + Limits: + Memory: 1Gi + Requests: + Cpu: 500m + Memory: 1Gi + Security Context: + Allow Privilege Escalation: false + Capabilities: + Drop: + ALL + Run As Group: 70 + Run As Non Root: true + Run As User: 70 + Seccomp Profile: + Type: RuntimeDefault + Pod Placement Policy: + Name: default + Security Context: + Fs Group: 70 + Postgres Ref: + Name: ha-postgres + Namespace: demo + Replicas: 1 + Ssl Mode: disable + Version: 4.5.0 +Status: + Conditions: + Last Transition Time: 2024-07-18T07:38:54Z + Message: The KubeDB operator has started the provisioning of Pgpool: demo/pgpool + Observed Generation: 1 + Reason: DatabaseProvisioningStartedSuccessfully + Status: True + Type: ProvisioningStarted + Last Transition Time: 2024-07-18T07:38:56Z + Message: All replicas are ready for Pgpool demo/pgpool + Observed Generation: 2 + Reason: AllReplicasReady + Status: True + Type: ReplicaReady + Last Transition Time: 2024-07-18T07:39:06Z + Message: pgpool demo/pgpool is accepting connection + Observed Generation: 2 + Reason: AcceptingConnection + Status: True + Type: AcceptingConnection + Last Transition Time: 2024-07-18T07:39:06Z + Message: pgpool demo/pgpool is ready + Observed Generation: 2 + Reason: AllReplicasReady + Status: True + Type: Ready + Last Transition Time: 2024-07-18T07:39:06Z + Message: The Pgpool: demo/pgpool is successfully provisioned. + Observed Generation: 2 + Reason: DatabaseSuccessfullyProvisioned + Status: True + Type: Provisioned + Phase: Ready +Events: +``` + +Now, we let exec into a pgpool pod and verify that the TLS is disabled. + + +```bash +$ kubectl exec -it -n demo pgpool-0 -- bash +pgpool-0:/$ cat opt/pgpool-II/etc/pgpool.conf +backend_hostname0 = 'ha-postgres.demo.svc' +backend_port0 = 5432 +backend_weight0 = 1 +backend_flag0 = 'ALWAYS_PRIMARY|DISALLOW_TO_FAILOVER' +backend_hostname1 = 'ha-postgres-standby.demo.svc' +backend_port1 = 5432 +backend_weight1 = 1 +backend_flag1 = 'DISALLOW_TO_FAILOVER' +enable_pool_hba = on +listen_addresses = * +port = 9999 +socket_dir = '/var/run/pgpool' +pcp_listen_addresses = * +pcp_port = 9595 +pcp_socket_dir = '/var/run/pgpool' +log_per_node_statement = on +sr_check_period = 0 +health_check_period = 0 +backend_clustering_mode = 'streaming_replication' +num_init_children = 5 +max_pool = 15 +child_life_time = 300 +child_max_connections = 0 +connection_life_time = 0 +client_idle_limit = 0 +connection_cache = on +load_balance_mode = on +ssl = 'off' +failover_on_backend_error = 'off' +log_min_messages = 'warning' +statement_level_load_balance = 'off' +memory_cache_enabled = 'off' +memqcache_oiddir = '/tmp/oiddir/' +allow_clear_text_frontend_auth = 'false' + + +failover_on_backend_error = 'off' +pgpool-0:/$ exit +exit +``` +We can see from the above output that `ssl='off'` so we can verify that TLS is disabled for this pgpool. + +### Create Issuer/ ClusterIssuer + +Now, We are going to create an example `Issuer` that will be used to enable SSL/TLS in Pgpool. Alternatively, you can follow this [cert-manager tutorial](https://cert-manager.io/docs/configuration/ca/) to create your own `Issuer`. + +- Start off by generating a ca certificates using openssl. + +```bash +$ openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout ./ca.key -out ./ca.crt -subj "/CN=ca/O=kubedb" +Generating a RSA private key +................+++++ +........................+++++ +writing new private key to './ca.key' +----- +``` + +- Now we are going to create a ca-secret using the certificate files that we have just generated. + +```bash +$ kubectl create secret tls pgpool-ca \ + --cert=ca.crt \ + --key=ca.key \ + --namespace=demo +secret/pgpool-ca created +``` + +Now, Let's create an `Issuer` using the `pgpool-ca` secret that we have just created. The `YAML` file looks like this: + +```yaml +apiVersion: cert-manager.io/v1 +kind: Issuer +metadata: + name: pgpool-issuer + namespace: demo +spec: + ca: + secretName: pgpool-ca +``` + +Let's apply the `YAML` file: + +```bash +$ kubectl create -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/pgpool/reconfigure-tls/issuer.yaml +issuer.cert-manager.io/pgpool-issuer created +``` + +### Create PgpoolOpsRequest + +In order to add TLS to the pgpool, we have to create a `PgpoolOpsRequest` CRO with our created issuer. Below is the YAML of the `PgpoolOpsRequest` CRO that we are going to create, + +```yaml +apiVersion: ops.kubedb.com/v1alpha1 +kind: PgpoolOpsRequest +metadata: + name: ppops-add-tls + namespace: demo +spec: + type: ReconfigureTLS + databaseRef: + name: pgpool + tls: + sslMode: require + clientAuthMode: cert + issuerRef: + name: pgpool-issuer + kind: Issuer + apiGroup: "cert-manager.io" + certificates: + - alias: client + subject: + organizations: + - pgpool + organizationalUnits: + - client + timeout: 5m + apply: IfReady +``` + +Here, + +- `spec.databaseRef.name` specifies that we are performing reconfigure TLS operation on `mg-rs` database. +- `spec.type` specifies that we are performing `ReconfigureTLS` on our database. +- `spec.tls.issuerRef` specifies the issuer name, kind and api group. +- `spec.tls.certificates` specifies the certificates. You can learn more about this field from [here](/docs/guides/pgpool/concepts/pgpool.md#spectls). +- `spec.tls.sslMode` is the ssl mode of the server. You can see the details [here](/docs/guides/pgpool/concepts/pgpool.md#specsslmode). +- `spec.tls.clientAuthMode` is the authentication mode of the server. You can see the details [here](/docs/guides/pgpool/concepts/pgpool.md#specclientauthmode). +- The meaning of `spec.timeout` & `spec.apply` fields will be found [here](/docs/guides/pgpool/concepts/opsrequest.md#spectimeout) + +Let's create the `PgpoolOpsRequest` CR we have shown above, + +```bash +$ kubectl apply -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/pgpool/reconfigure-tls/ppops-add-tls.yaml +pgpoolopsrequest.ops.kubedb.com/ppops-add-tls created +``` + +#### Verify TLS Enabled Successfully + +Let's wait for `PgpoolOpsRequest` to be `Successful`. Run the following command to watch `PgpoolOpsRequest` CRO, + +```bash +$ kubectl get pgpoolopsrequest -n demo +Every 2.0s: kubectl get pgpoolopsrequest -n demo +NAME TYPE STATUS AGE +mops-add-tls ReconfigureTLS Successful 91s +``` + +We can see from the above output that the `PgpoolOpsRequest` has succeeded. If we describe the `PgpoolOpsRequest` we will get an overview of the steps that were followed. + +```bash +$ kubectl describe pgpoolopsrequest -n demo mops-add-tls +Name: mops-add-tls +Namespace: demo +Labels: +Annotations: +API Version: ops.kubedb.com/v1alpha1 +Kind: PgpoolOpsRequest +Metadata: + Creation Timestamp: 2021-03-11T13:32:18Z + Generation: 1 + Managed Fields: + API Version: ops.kubedb.com/v1alpha1 + Fields Type: FieldsV1 + fieldsV1: + f:metadata: + f:annotations: + .: + f:kubectl.kubernetes.io/last-applied-configuration: + f:spec: + .: + f:databaseRef: + .: + f:name: + f:tls: + .: + f:certificates: + f:issuerRef: + .: + f:apiGroup: + f:kind: + f:name: + f:type: + Manager: kubectl-client-side-apply + Operation: Update + Time: 2021-03-11T13:32:18Z + API Version: ops.kubedb.com/v1alpha1 + Fields Type: FieldsV1 + fieldsV1: + f:status: + .: + f:conditions: + f:observedGeneration: + f:phase: + Manager: kubedb-enterprise + Operation: Update + Time: 2021-03-11T13:32:19Z + Resource Version: 488264 + Self Link: /apis/ops.kubedb.com/v1alpha1/namespaces/demo/pgpoolopsrequests/mops-add-tls + UID: 0024ec16-0d43-4686-a2d7-1cdeb96e41a5 +Spec: + Database Ref: + Name: mg-rs + Tls: + Certificates: + Alias: client + Subject: + Organizational Units: + client + Organizations: + mongo + Issuer Ref: + API Group: cert-manager.io + Kind: Issuer + Name: mg-issuer + Type: ReconfigureTLS +Status: + Conditions: + Last Transition Time: 2021-03-11T13:32:19Z + Message: Pgpool ops request is reconfiguring TLS + Observed Generation: 1 + Reason: ReconfigureTLS + Status: True + Type: ReconfigureTLS + Last Transition Time: 2021-03-11T13:32:25Z + Message: Successfully Updated StatefulSets + Observed Generation: 1 + Reason: TLSAdded + Status: True + Type: TLSAdded + Last Transition Time: 2021-03-11T13:34:25Z + Message: Successfully Restarted ReplicaSet nodes + Observed Generation: 1 + Reason: RestartReplicaSet + Status: True + Type: RestartReplicaSet + Last Transition Time: 2021-03-11T13:34:25Z + Message: Successfully Reconfigured TLS + Observed Generation: 1 + Reason: Successful + Status: True + Type: Successful + Observed Generation: 1 + Phase: Successful +Events: + Type Reason Age From Message + ---- ------ ---- ---- ------- + Normal PauseDatabase 2m10s KubeDB Ops-manager operator Pausing Pgpool demo/mg-rs + Normal PauseDatabase 2m10s KubeDB Ops-manager operator Successfully paused Pgpool demo/mg-rs + Normal TLSAdded 2m10s KubeDB Ops-manager operator Successfully Updated StatefulSets + Normal RestartReplicaSet 10s KubeDB Ops-manager operator Successfully Restarted ReplicaSet nodes + Normal ResumeDatabase 10s KubeDB Ops-manager operator Resuming Pgpool demo/mg-rs + Normal ResumeDatabase 10s KubeDB Ops-manager operator Successfully resumed Pgpool demo/mg-rs + Normal Successful 10s KubeDB Ops-manager operator Successfully Reconfigured TLS +``` + +Now, Let's exec into a database primary node and find out the username to connect in a mongo shell, + +```bash +$ kubectl exec -it mg-rs-2 -n demo bash +root@mgo-rs-tls-2:/$ ls /var/run/pgpool/tls +ca.crt client.pem mongo.pem +root@mgo-rs-tls-2:/$ openssl x509 -in /var/run/pgpool/tls/client.pem -inform PEM -subject -nameopt RFC2253 -noout +subject=CN=root,OU=client,O=mongo +``` + +Now, we can connect using `CN=root,OU=client,O=mongo` as root to connect to the mongo shell of the master pod, + +```bash +root@mgo-rs-tls-2:/$ mongo --tls --tlsCAFile /var/run/pgpool/tls/ca.crt --tlsCertificateKeyFile /var/run/pgpool/tls/client.pem admin --host localhost --authenticationMechanism MONGODB-X509 --authenticationDatabase='$external' -u "CN=root,OU=client,O=mongo" --quiet +rs0:PRIMARY> +``` + +We are connected to the mongo shell. Let's run some command to verify the sslMode and the user, + +```bash +rs0:PRIMARY> db.adminCommand({ getParameter:1, sslMode:1 }) +{ + "sslMode" : "requireSSL", + "ok" : 1, + "$clusterTime" : { + "clusterTime" : Timestamp(1615472249, 1), + "signature" : { + "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="), + "keyId" : NumberLong(0) + } + }, + "operationTime" : Timestamp(1615472249, 1) +} +``` + +We can see from the above output that, `sslMode` is set to `requireSSL`. So, database TLS is enabled successfully to this database. + +## Rotate Certificate + +Now we are going to rotate the certificate of this database. First let's check the current expiration date of the certificate. + +```bash +$ kubectl exec -it mg-rs-2 -n demo bash +root@mg-rs-2:/# openssl x509 -in /var/run/pgpool/tls/client.pem -inform PEM -enddate -nameopt RFC2253 -noout +notAfter=Jun 9 13:32:20 2021 GMT +``` + +So, the certificate will expire on this time `Jun 9 13:32:20 2021 GMT`. + +### Create PgpoolOpsRequest + +Now we are going to increase it using a PgpoolOpsRequest. Below is the yaml of the ops request that we are going to create, + +```yaml +apiVersion: ops.kubedb.com/v1alpha1 +kind: PgpoolOpsRequest +metadata: + name: mops-rotate + namespace: demo +spec: + type: ReconfigureTLS + databaseRef: + name: mg-rs + tls: + rotateCertificates: true +``` + +Here, + +- `spec.databaseRef.name` specifies that we are performing reconfigure TLS operation on `mg-rs` database. +- `spec.type` specifies that we are performing `ReconfigureTLS` on our database. +- `spec.tls.rotateCertificates` specifies that we want to rotate the certificate of this database. + +Let's create the `PgpoolOpsRequest` CR we have shown above, + +```bash +$ kubectl apply -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/pgpool/reconfigure-tls/mops-rotate.yaml +pgpoolopsrequest.ops.kubedb.com/mops-rotate created +``` + +#### Verify Certificate Rotated Successfully + +Let's wait for `PgpoolOpsRequest` to be `Successful`. Run the following command to watch `PgpoolOpsRequest` CRO, + +```bash +$ kubectl get pgpoolopsrequest -n demo +Every 2.0s: kubectl get pgpoolopsrequest -n demo +NAME TYPE STATUS AGE +mops-rotate ReconfigureTLS Successful 112s +``` + +We can see from the above output that the `PgpoolOpsRequest` has succeeded. If we describe the `PgpoolOpsRequest` we will get an overview of the steps that were followed. + +```bash +$ kubectl describe pgpoolopsrequest -n demo mops-rotate +Name: mops-rotate +Namespace: demo +Labels: +Annotations: +API Version: ops.kubedb.com/v1alpha1 +Kind: PgpoolOpsRequest +Metadata: + Creation Timestamp: 2021-03-11T16:17:55Z + Generation: 1 + Managed Fields: + API Version: ops.kubedb.com/v1alpha1 + Fields Type: FieldsV1 + fieldsV1: + f:metadata: + f:annotations: + .: + f:kubectl.kubernetes.io/last-applied-configuration: + f:spec: + .: + f:databaseRef: + .: + f:name: + f:tls: + .: + f:rotateCertificates: + f:type: + Manager: kubectl-client-side-apply + Operation: Update + Time: 2021-03-11T16:17:55Z + API Version: ops.kubedb.com/v1alpha1 + Fields Type: FieldsV1 + fieldsV1: + f:status: + .: + f:conditions: + f:observedGeneration: + f:phase: + Manager: kubedb-enterprise + Operation: Update + Time: 2021-03-11T16:17:55Z + Resource Version: 521643 + Self Link: /apis/ops.kubedb.com/v1alpha1/namespaces/demo/pgpoolopsrequests/mops-rotate + UID: 6d96ead2-a868-47d8-85fb-77eecc9a96b4 +Spec: + Database Ref: + Name: mg-rs + Tls: + Rotate Certificates: true + Type: ReconfigureTLS +Status: + Conditions: + Last Transition Time: 2021-03-11T16:17:55Z + Message: Pgpool ops request is reconfiguring TLS + Observed Generation: 1 + Reason: ReconfigureTLS + Status: True + Type: ReconfigureTLS + Last Transition Time: 2021-03-11T16:17:55Z + Message: Successfully Added Issuing Condition in Certificates + Observed Generation: 1 + Reason: IssuingConditionUpdated + Status: True + Type: IssuingConditionUpdated + Last Transition Time: 2021-03-11T16:18:00Z + Message: Successfully Issued New Certificates + Observed Generation: 1 + Reason: CertificateIssuingSuccessful + Status: True + Type: CertificateIssuingSuccessful + Last Transition Time: 2021-03-11T16:19:45Z + Message: Successfully Restarted ReplicaSet nodes + Observed Generation: 1 + Reason: RestartReplicaSet + Status: True + Type: RestartReplicaSet + Last Transition Time: 2021-03-11T16:19:45Z + Message: Successfully Reconfigured TLS + Observed Generation: 1 + Reason: Successful + Status: True + Type: Successful + Observed Generation: 1 + Phase: Successful +Events: + Type Reason Age From Message + ---- ------ ---- ---- ------- + Normal CertificateIssuingSuccessful 2m10s KubeDB Ops-manager operator Successfully Issued New Certificates + Normal RestartReplicaSet 25s KubeDB Ops-manager operator Successfully Restarted ReplicaSet nodes + Normal Successful 25s KubeDB Ops-manager operator Successfully Reconfigured TLS +``` + +Now, let's check the expiration date of the certificate. + +```bash +$ kubectl exec -it mg-rs-2 -n demo bash +root@mg-rs-2:/# openssl x509 -in /var/run/pgpool/tls/client.pem -inform PEM -enddate -nameopt RFC2253 -noout +notAfter=Jun 9 16:17:55 2021 GMT +``` + +As we can see from the above output, the certificate has been rotated successfully. + +## Change Issuer/ClusterIssuer + +Now, we are going to change the issuer of this database. + +- Let's create a new ca certificate and key using a different subject `CN=ca-update,O=kubedb-updated`. + +```bash +$ openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout ./ca.key -out ./ca.crt -subj "/CN=ca-updated/O=kubedb-updated" +Generating a RSA private key +..............................................................+++++ +......................................................................................+++++ +writing new private key to './ca.key' +----- +``` + +- Now we are going to create a new ca-secret using the certificate files that we have just generated. + +```bash +$ kubectl create secret tls mongo-new-ca \ + --cert=ca.crt \ + --key=ca.key \ + --namespace=demo +secret/mongo-new-ca created +``` + +Now, Let's create a new `Issuer` using the `mongo-new-ca` secret that we have just created. The `YAML` file looks like this: + +```yaml +apiVersion: cert-manager.io/v1 +kind: Issuer +metadata: + name: mg-new-issuer + namespace: demo +spec: + ca: + secretName: mongo-new-ca +``` + +Let's apply the `YAML` file: + +```bash +$ kubectl create -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/pgpool/reconfigure-tls/new-issuer.yaml +issuer.cert-manager.io/mg-new-issuer created +``` + +### Create PgpoolOpsRequest + +In order to use the new issuer to issue new certificates, we have to create a `PgpoolOpsRequest` CRO with the newly created issuer. Below is the YAML of the `PgpoolOpsRequest` CRO that we are going to create, + +```yaml +apiVersion: ops.kubedb.com/v1alpha1 +kind: PgpoolOpsRequest +metadata: + name: mops-change-issuer + namespace: demo +spec: + type: ReconfigureTLS + databaseRef: + name: mg-rs + tls: + issuerRef: + name: mg-new-issuer + kind: Issuer + apiGroup: "cert-manager.io" +``` + +Here, + +- `spec.databaseRef.name` specifies that we are performing reconfigure TLS operation on `mg-rs` database. +- `spec.type` specifies that we are performing `ReconfigureTLS` on our database. +- `spec.tls.issuerRef` specifies the issuer name, kind and api group. + +Let's create the `PgpoolOpsRequest` CR we have shown above, + +```bash +$ kubectl apply -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/pgpool/reconfigure-tls/mops-change-issuer.yaml +pgpoolopsrequest.ops.kubedb.com/mops-change-issuer created +``` + +#### Verify Issuer is changed successfully + +Let's wait for `PgpoolOpsRequest` to be `Successful`. Run the following command to watch `PgpoolOpsRequest` CRO, + +```bash +$ kubectl get pgpoolopsrequest -n demo +Every 2.0s: kubectl get pgpoolopsrequest -n demo +NAME TYPE STATUS AGE +mops-change-issuer ReconfigureTLS Successful 105s +``` + +We can see from the above output that the `PgpoolOpsRequest` has succeeded. If we describe the `PgpoolOpsRequest` we will get an overview of the steps that were followed. + +```bash +$ kubectl describe pgpoolopsrequest -n demo mops-change-issuer +Name: mops-change-issuer +Namespace: demo +Labels: +Annotations: +API Version: ops.kubedb.com/v1alpha1 +Kind: PgpoolOpsRequest +Metadata: + Creation Timestamp: 2021-03-11T16:27:47Z + Generation: 1 + Managed Fields: + API Version: ops.kubedb.com/v1alpha1 + Fields Type: FieldsV1 + fieldsV1: + f:metadata: + f:annotations: + .: + f:kubectl.kubernetes.io/last-applied-configuration: + f:spec: + .: + f:databaseRef: + .: + f:name: + f:tls: + .: + f:issuerRef: + .: + f:apiGroup: + f:kind: + f:name: + f:type: + Manager: kubectl-client-side-apply + Operation: Update + Time: 2021-03-11T16:27:47Z + API Version: ops.kubedb.com/v1alpha1 + Fields Type: FieldsV1 + fieldsV1: + f:status: + .: + f:conditions: + f:observedGeneration: + f:phase: + Manager: kubedb-enterprise + Operation: Update + Time: 2021-03-11T16:27:47Z + Resource Version: 523903 + Self Link: /apis/ops.kubedb.com/v1alpha1/namespaces/demo/pgpoolopsrequests/mops-change-issuer + UID: cdfe8a7d-52ef-466c-a5dd-97e74ad598ca +Spec: + Database Ref: + Name: mg-rs + Tls: + Issuer Ref: + API Group: cert-manager.io + Kind: Issuer + Name: mg-new-issuer + Type: ReconfigureTLS +Status: + Conditions: + Last Transition Time: 2021-03-11T16:27:47Z + Message: Pgpool ops request is reconfiguring TLS + Observed Generation: 1 + Reason: ReconfigureTLS + Status: True + Type: ReconfigureTLS + Last Transition Time: 2021-03-11T16:27:52Z + Message: Successfully Issued New Certificates + Observed Generation: 1 + Reason: CertificateIssuingSuccessful + Status: True + Type: CertificateIssuingSuccessful + Last Transition Time: 2021-03-11T16:29:37Z + Message: Successfully Restarted ReplicaSet nodes + Observed Generation: 1 + Reason: RestartReplicaSet + Status: True + Type: RestartReplicaSet + Last Transition Time: 2021-03-11T16:29:37Z + Message: Successfully Reconfigured TLS + Observed Generation: 1 + Reason: Successful + Status: True + Type: Successful + Observed Generation: 1 + Phase: Successful +Events: + Type Reason Age From Message + ---- ------ ---- ---- ------- + Normal CertificateIssuingSuccessful 2m27s KubeDB Ops-manager operator Successfully Issued New Certificates + Normal RestartReplicaSet 42s KubeDB Ops-manager operator Successfully Restarted ReplicaSet nodes + Normal Successful 42s KubeDB Ops-manager operator Successfully Reconfigured TLS +``` + +Now, Let's exec into a database node and find out the ca subject to see if it matches the one we have provided. + +```bash +$ kubectl exec -it mg-rs-2 -n demo bash +root@mgo-rs-tls-2:/$ openssl x509 -in /var/run/pgpool/tls/ca.crt -inform PEM -subject -nameopt RFC2253 -noout +subject=O=kubedb-updated,CN=ca-updated +``` + +We can see from the above output that, the subject name matches the subject name of the new ca certificate that we have created. So, the issuer is changed successfully. + +## Remove TLS from the Database + +Now, we are going to remove TLS from this database using a PgpoolOpsRequest. + +### Create PgpoolOpsRequest + +Below is the YAML of the `PgpoolOpsRequest` CRO that we are going to create, + +```yaml +apiVersion: ops.kubedb.com/v1alpha1 +kind: PgpoolOpsRequest +metadata: + name: mops-remove + namespace: demo +spec: + type: ReconfigureTLS + databaseRef: + name: mg-rs + tls: + remove: true +``` + +Here, + +- `spec.databaseRef.name` specifies that we are performing reconfigure TLS operation on `mg-rs` database. +- `spec.type` specifies that we are performing `ReconfigureTLS` on our database. +- `spec.tls.remove` specifies that we want to remove tls from this database. + +Let's create the `PgpoolOpsRequest` CR we have shown above, + +```bash +$ kubectl apply -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/pgpool/reconfigure-tls/mops-remove.yaml +pgpoolopsrequest.ops.kubedb.com/mops-remove created +``` + +#### Verify TLS Removed Successfully + +Let's wait for `PgpoolOpsRequest` to be `Successful`. Run the following command to watch `PgpoolOpsRequest` CRO, + +```bash +$ kubectl get pgpoolopsrequest -n demo +Every 2.0s: kubectl get pgpoolopsrequest -n demo +NAME TYPE STATUS AGE +mops-remove ReconfigureTLS Successful 105s +``` + +We can see from the above output that the `PgpoolOpsRequest` has succeeded. If we describe the `PgpoolOpsRequest` we will get an overview of the steps that were followed. + +```bash +$ kubectl describe pgpoolopsrequest -n demo mops-remove +Name: mops-remove +Namespace: demo +Labels: +Annotations: +API Version: ops.kubedb.com/v1alpha1 +Kind: PgpoolOpsRequest +Metadata: + Creation Timestamp: 2021-03-11T16:35:32Z + Generation: 1 + Managed Fields: + API Version: ops.kubedb.com/v1alpha1 + Fields Type: FieldsV1 + fieldsV1: + f:metadata: + f:annotations: + .: + f:kubectl.kubernetes.io/last-applied-configuration: + f:spec: + .: + f:databaseRef: + .: + f:name: + f:tls: + .: + f:remove: + f:type: + Manager: kubectl-client-side-apply + Operation: Update + Time: 2021-03-11T16:35:32Z + API Version: ops.kubedb.com/v1alpha1 + Fields Type: FieldsV1 + fieldsV1: + f:status: + .: + f:conditions: + f:observedGeneration: + f:phase: + Manager: kubedb-enterprise + Operation: Update + Time: 2021-03-11T16:35:32Z + Resource Version: 525550 + Self Link: /apis/ops.kubedb.com/v1alpha1/namespaces/demo/pgpoolopsrequests/mops-remove + UID: 99184cc4-1595-4f0f-b8eb-b65c5d0e86a6 +Spec: + Database Ref: + Name: mg-rs + Tls: + Remove: true + Type: ReconfigureTLS +Status: + Conditions: + Last Transition Time: 2021-03-11T16:35:32Z + Message: Pgpool ops request is reconfiguring TLS + Observed Generation: 1 + Reason: ReconfigureTLS + Status: True + Type: ReconfigureTLS + Last Transition Time: 2021-03-11T16:35:37Z + Message: Successfully Updated StatefulSets + Observed Generation: 1 + Reason: TLSRemoved + Status: True + Type: TLSRemoved + Last Transition Time: 2021-03-11T16:37:07Z + Message: Successfully Restarted ReplicaSet nodes + Observed Generation: 1 + Reason: RestartReplicaSet + Status: True + Type: RestartReplicaSet + Last Transition Time: 2021-03-11T16:37:07Z + Message: Successfully Reconfigured TLS + Observed Generation: 1 + Reason: Successful + Status: True + Type: Successful + Observed Generation: 1 + Phase: Successful +Events: + Type Reason Age From Message + ---- ------ ---- ---- ------- + Normal PauseDatabase 2m5s KubeDB Ops-manager operator Pausing Pgpool demo/mg-rs + Normal PauseDatabase 2m5s KubeDB Ops-manager operator Successfully paused Pgpool demo/mg-rs + Normal TLSRemoved 2m5s KubeDB Ops-manager operator Successfully Updated StatefulSets + Normal RestartReplicaSet 35s KubeDB Ops-manager operator Successfully Restarted ReplicaSet nodes + Normal ResumeDatabase 35s KubeDB Ops-manager operator Resuming Pgpool demo/mg-rs + Normal ResumeDatabase 35s KubeDB Ops-manager operator Successfully resumed Pgpool demo/mg-rs + Normal Successful 35s KubeDB Ops-manager operator Successfully Reconfigured TLS +``` + +Now, Let's exec into the database primary node and find out that TLS is disabled or not. + +```bash +$ kubectl exec -it -n demo mg-rs-1 -- mongo admin -u root -p 'U6(h_pYrekLZ2OOd' +rs0:PRIMARY> db.adminCommand({ getParameter:1, sslMode:1 }) +{ + "sslMode" : "disabled", + "ok" : 1, + "$clusterTime" : { + "clusterTime" : Timestamp(1615480817, 1), + "signature" : { + "hash" : BinData(0,"CWJngDTQqDhKXyx7WMFJqqUfvhY="), + "keyId" : NumberLong("6938294279689207810") + } + }, + "operationTime" : Timestamp(1615480817, 1) +} +``` + +So, we can see from the above that, output that tls is disabled successfully. + +## Cleaning up + +To cleanup the Kubernetes resources created by this tutorial, run: + +```bash +kubectl delete pgpool -n demo mg-rs +kubectl delete issuer -n demo mg-issuer mg-new-issuer +kubectl delete pgpoolopsrequest mops-add-tls mops-remove mops-rotate mops-change-issuer +kubectl delete ns demo +``` + +## Next Steps + +- Detail concepts of [Pgpool object](/docs/guides/pgpool/concepts/pgpool.md). +- Monitor your Pgpool database with KubeDB using [out-of-the-box Prometheus operator](/docs/guides/pgpool/monitoring/using-prometheus-operator.md). +- Monitor your Pgpool database with KubeDB using [out-of-the-box builtin-Prometheus](/docs/guides/pgpool/monitoring/using-builtin-prometheus.md). +- Detail concepts of [Pgpool object](/docs/guides/pgpool/concepts/pgpool.md). +- Want to hack on KubeDB? Check our [contribution guidelines](/docs/CONTRIBUTING.md). diff --git a/docs/guides/pgpool/restart/_index.md b/docs/guides/pgpool/restart/_index.md new file mode 100644 index 0000000000..40b3d040de --- /dev/null +++ b/docs/guides/pgpool/restart/_index.md @@ -0,0 +1,10 @@ +--- +title: Restart Pgpool +menu: + docs_{{ .version }}: + identifier: pp-restart + name: Restart + parent: pp-pgpool-guides + weight: 46 +menu_name: docs_{{ .version }} +--- diff --git a/docs/guides/pgpool/restart/restart.md b/docs/guides/pgpool/restart/restart.md new file mode 100644 index 0000000000..f68353c225 --- /dev/null +++ b/docs/guides/pgpool/restart/restart.md @@ -0,0 +1,178 @@ +--- +title: Restart Pgpool +menu: + docs_{{ .version }}: + identifier: pp-restart-details + name: Restart Pgpool + parent: pp-restart + weight: 10 +menu_name: docs_{{ .version }} +section_menu_id: guides +--- + +> New to KubeDB? Please start [here](/docs/README.md). + +# Restart Pgpool + +KubeDB supports restarting the Pgpool via a PgpoolOpsRequest. Restarting is useful if some pods are got stuck in some phase, or they are not working correctly. This tutorial will show you how to use that. + +## Before You Begin + +- At first, you need to have a Kubernetes cluster, and the kubectl command-line tool must be configured to communicate with your cluster. If you do not already have a cluster, you can create one by using [kind](https://kind.sigs.k8s.io/docs/user/quick-start/). + +- Now, install KubeDB cli on your workstation and KubeDB operator in your cluster following the steps [here](/docs/setup/README.md). + +- To keep things isolated, this tutorial uses a separate namespace called `demo` throughout this tutorial. + +```bash + $ kubectl create ns demo + namespace/demo created + ``` + +> Note: YAML files used in this tutorial are stored in [docs/examples/pgpool](https://github.com/kubedb/docs/tree/{{< param "info.version" >}}/docs/examples/pgpool) folder in GitHub repository [kubedb/docs](https://github.com/kubedb/docs). + +## Prepare Postgres +Prepare a KubeDB Postgres cluster using this [tutorial](/docs/guides/postgres/clustering/streaming_replication.md), or you can use any externally managed postgres but in that case you need to create an [appbinding](/docs/guides/pgpool/concepts/appbinding.md) yourself. In this tutorial we will use 3 node Postgres cluster named `ha-postgres`. + +## Deploy Pgpool + +In this section, we are going to deploy a Pgpool using KubeDB. + +```yaml +apiVersion: kubedb.com/v1alpha2 +kind: Pgpool +metadata: + name: pgpool + namespace: demo +spec: + version: "4.4.5" + replicas: 1 + postgresRef: + name: ha-postgres + namespace: demo + deletionPolicy: WipeOut +``` + +Let's create the `Pgpool` CR we have shown above, + +```bash +$ kubectl create -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/pgpool/restart/pgpool.yaml +pgpool.kubedb.com/pgpool created +``` + +## Apply Restart opsRequest + +```yaml +apiVersion: ops.kubedb.com/v1alpha1 +kind: PgpoolOpsRequest +metadata: + name: restart-pgpool + namespace: demo +spec: + type: Restart + databaseRef: + name: pgpool + timeout: 3m + apply: Always +``` + +- `spec.type` specifies the Type of the ops Request +- `spec.databaseRef` holds the name of the Pgpool. The pgpool should be available in the same namespace as the opsRequest +- The meaning of `spec.timeout` & `spec.apply` fields will be found [here](/docs/guides/pgpool/concepts/opsrequest.md#spectimeout) + +Let's create the `PgpoolOpsRequest` CR we have shown above, + +```bash +$ kubectl create -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/pgpool/restart/ops.yaml +pgpoolopsrequest.ops.kubedb.com/restart-pgpool created +``` + +Now the Ops-manager operator will restart the pods one by one. + +```shell +$ kubectl get ppops -n demo +NAME TYPE STATUS AGE +restart-pgpool Restart Successful 79s + +$ kubectl get ppops -n demo -oyaml restart-pgpool +apiVersion: ops.kubedb.com/v1alpha1 +kind: PgpoolOpsRequest +metadata: + annotations: + kubectl.kubernetes.io/last-applied-configuration: | + {"apiVersion":"ops.kubedb.com/v1alpha1","kind":"PgpoolOpsRequest","metadata":{"annotations":{},"name":"restart-pgpool","namespace":"demo"},"spec":{"apply":"Always","databaseRef":{"name":"pgpool"},"timeout":"3m","type":"Restart"}} + creationTimestamp: "2024-07-18T06:49:50Z" + generation: 1 + name: restart-pgpool + namespace: demo + resourceVersion: "94394" + uid: 8d3387fc-0c21-4e14-8bed-857a7cdf5423 +spec: + apply: Always + databaseRef: + name: pgpool + timeout: 3m + type: Restart +status: + conditions: + - lastTransitionTime: "2024-07-18T06:49:50Z" + message: Pgpool ops-request has started to restart pgpool nodes + observedGeneration: 1 + reason: Restart + status: "True" + type: Restart + - lastTransitionTime: "2024-07-18T06:49:53Z" + message: Successfully paused database + observedGeneration: 1 + reason: DatabasePauseSucceeded + status: "True" + type: DatabasePauseSucceeded + - lastTransitionTime: "2024-07-18T06:50:38Z" + message: Successfully Restarted Pgpool nodes + observedGeneration: 1 + reason: RestartNodes + status: "True" + type: RestartNodes + - lastTransitionTime: "2024-07-18T06:49:58Z" + message: get pod; ConditionStatus:True; PodName:pgpool-0 + observedGeneration: 1 + status: "True" + type: GetPod--pgpool-0 + - lastTransitionTime: "2024-07-18T06:49:58Z" + message: evict pod; ConditionStatus:True; PodName:pgpool-0 + observedGeneration: 1 + status: "True" + type: EvictPod--pgpool-0 + - lastTransitionTime: "2024-07-18T06:50:33Z" + message: check pod running; ConditionStatus:True; PodName:pgpool-0 + observedGeneration: 1 + status: "True" + type: CheckPodRunning--pgpool-0 + - lastTransitionTime: "2024-07-18T06:50:38Z" + message: Controller has successfully restart the Pgpool replicas + observedGeneration: 1 + reason: Successful + status: "True" + type: Successful + observedGeneration: 1 + phase: Successful +``` + + +## Cleaning up + +To clean up the Kubernetes resources created by this tutorial, run: + +```bash +kubectl delete pgpoolopsrequest -n demo restart-pgpool +kubectl delete pgpool -n demo pgpool +kubectl delete ns demo +``` + +## Next Steps + +- Detail concepts of [Pgpool object](/docs/guides/pgpool/concepts/pgpool.md). +- Monitor your Pgpool database with KubeDB using [out-of-the-box Prometheus operator](/docs/guides/pgpool/monitoring/using-prometheus-operator.md). +- Monitor your Pgpool database with KubeDB using [out-of-the-box builtin-Prometheus](/docs/guides/pgpool/monitoring/using-builtin-prometheus.md). +- Detail concepts of [Pgpool object](/docs/guides/pgpool/concepts/pgpool.md). +- Want to hack on KubeDB? Check our [contribution guidelines](/docs/CONTRIBUTING.md). diff --git a/docs/images/day-2-operation/pgpool/pg-updating.png b/docs/images/day-2-operation/pgpool/pg-updating.png deleted file mode 100644 index 65b46b2750614e4a32a4a7bf7137109f786a32d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 100124 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
QUS?-2b+hMmK39qaz z;kV?3{n|ohJ>#DZ!U}`JM;X!4(QjdDCcuOb17GC;^LsjM%B4k|V!#z`JD4V7BG!VY z2;+~sbzAd7y0SU}`&s@5?~9uJwqf)BWS(c{6_4y=X4n8ItdXxGPUQS1@No{{W+Omj z01=3R)@7>3E}^#ggt}fs22@XmgW{#dgilrfyfA9zV)}kL+7;lC+f&a-gmdM{-QPkX4 zBQ(}CH6>p#n00Gdp0nzxE7YQXlNMz(+>7#oL?f ztBy~yBL!gka^)m0^VocD#_fQMCDD3^(gOgHfPvlk_`-E<=tT}W+N=2|tE+OK_e)U% z9Dc7?-J_hMU_=l`{ORE!G8{Hkv%r<->qrv$78e|p%Dl|iSTd1%D_5{1yo*7n`g3b+F}R<;PdUqo!Ix3qFxLy zhiB*J;>avR)6>(R*26D)3Sc7~y$T~TNEu#xr}i&+&PN*>Ir?bdN2!l={>teRHsfqT zML$Eba7NCC2t}Hv7*(LcX!{SS0s^Rs+tm6a_%I^}BVPrJk}CS6hXI^#!pms$Ep@p` z3K>y-;qI(@diSIaNdu0Z1b>@h{NJmJ@OX;ct1y%ZZ=#9$>cmS%qc6DbJW#s8m*J@K z;ZB4hM@PXyDQ&0P?%RXww5{fDU&-PQQy@m&X35lBXLxm;_lgKYh6jImHdAdw?-&B0 z6DDTEiXd7oI6^8w7Mk?K=!sOk9%~HsP@z^C8^NQ~&9c@i{a`z6LbhzadAB!+<*OWG z_=Q-3*b%h+G_gp%;AJM#qCc57?HL*sZr4|6Jc$L3G$y)xUoTC9wj7z{PH^_5MCCmK zq1iaHVE!m4NpxblBzqeYMg~>&>@NROl%*iSDn=S=tYcI-t}0aML3?frq@esB%3%Hn z8RtYtO4D>>loNE+REsjW$)@n#i$pISkLbXnX9E2E(el)|`?k+s4Ug~(k;|k#C-3@E z)haE`&c*A3=iT5O;pdKlHgpdFE5*-lb9C1Y{@+Mjpqp`9Mi&~kidI_=f0%b)C67X- zQ##pm^6~NQ)rkjS5NMPch?L_lBwT#+?>NDHOeS-exMhQaf?h(1Pfma?Rgm}QcnS0I zuj4vpJ25pc7QKP1ciujISH3_!l?j{C`)1@{BM%q?RUlk@1jiLmb){Nc*M!&@Ch$%5 zx!l7-ql(x^!sdvm*-I1IDKFO8P+;ukR!@@b>VejYJyjr<6qZINfY3++e8HmvG#{Pwo+>=}vqbtJa=;T7z`I0z{T^_F8qo&NoPt;Yf3KtFC zn(LlgeDyi}>-w-gknuPMsJe7+^O4_Wgg(h#jWIMd)M?%J`4K(=fz*o^FRB1Cyxa~5 ztR~Yd!Oxj3fr9n6w~B>}OXzYIPpLc7;Ib*aURp9wia#U8z z-My59)P^7o6ij_1h{1(8;G6Tr!OiT>t3W4CzOVKBeOQVTEf+9!Zf-fQDQFhFeXCWFq_s|4y3n!Pm;_QsF5j4=$)bzWD-?SX> zc-Cn!=x@$&d=L@N;h^tz4A9%oBr^9(k4SMi=-~&EgiVh=MEe%sNdzglxa!XG7do@| z{gC4<7%AM7BAW7iwj1)EK~hQ*Z1(oaS&j3HH+Z+*PzvezB&bx-50eLq!|qJjZw+O9Bwr0xpOfAU1g)q>w0*Im=HxKVtFQ0Y`hB#?L`0+Jw5)3k!!O&v zX!R-`#dsK3c%$(v<&`&hz?6j1X-4mJ)OsF(g&54_0ZP#_P@A1M9-5T>s1soh^~l3ZRToUvNbQbh9P`nfHGU_OB*dGes+sxXiNmC@uk zL_t^vyx}udM^3u7yg-?w<|%lGy=^f< zE1ROqC0QNaYREJ!`M+#B^&^a_xwXP0DE338$+iG z6ss<96$4qRxb9BdP{6BIfxx$(6(O4GakQZdG;f_RMC{_2G~^P)Z>NM-FKJH-5z16n zY29P)*iweDt@p4N>=Hq$^9N+?v|m=+jQOScj=y>?Dpoi%Xz&2Za&rH!G`fvQ%$mg+ zHy5opqr`6n;yik27gjAfliJg3%U{4F%%gn;=As?W%3+1wU@k+?Egqo162(6cFvvm3 zxKVENc~Jd3wAya(?rSHTF-2a|1QzY+J+nK0Z!&V0ci^pU^4KPK(Dm4%ko7WXCx}kx z7w>>Va`TtM=Pns9T~<^a>g~2wt>;T|HHxl8H7?5t$F^!hJVIe_T#~~xSMFK4z*#dJ z6kF*cIP>ydCdAdV!VB!T`tp2^cXcI>#5mM)YUlIh?7j1S7A!ZuiVzH+Fj`N!KN&mU z=~Uk<(NssqSRvGo8D~B~<8A)C#J61I7dBuc!R0|6V1^v44h*7@Fjn4vx0LCjXgbn` z1Sz70RbHTRq6~#Xm)x{UbZEo1NbD*^tlGPM%r2T*ZF}RH0BBvJSFh&8`)9K|M>z)G zS|2D_>kV0y>+9A6%#9PFYBix^tCr0mC#m*9R)KN9W9~vA29xT#ccJF0HgN%#~LA|@i4fw+{z3%+96m~?Z#yL?wJ=|_Iomz(!; zu3gfvPY*<|(#{ixn#HcO8(VK=Taykqo7Eef5{@u)E{`$iu8&+B%t!i#PSz}XMC6p} z<@xLvat!USq$U&_-XCZ+#9uPg(k^^0;@cjIGgM=UauNB&X4t5hpwN)$9Kxp8EcsB& zLG5Q;inAzZ(m;~)@%|%0r=TP3E3ZAm;MRAkN-6jW@4|cp2jw!stI=zysUqi}*+_`O z`56{DXub1PB3L9b4oCApw`)Z?_KSD4Cr8R(tQEL&xVI|oKv zCz*+dWwVlP zxt~-^culzyAzWBtirmDXG$+F;(Z(iYA&zw|HM*nHIk-H_0TQstM(fkxFWC*n&>I1|nJ}KyBrv%b@M! z5o0vrYM>i%u2o<8oisd0pU2k3aYJ(9xW!NiEs9uo__?Nky0??2fYBsG0a^^>umU3( zr%&5tr@v1-efa5`o^jL|G1{Qt$;h&wsIoRdX|)wjY1JS8R;O7cUeiv9smgH^4~x^P zBfbs4X{vY`kF&}ajKezT{3YI2SR#av3||M|$B&>?>=pL-Rvwk+Tkd{7D}y!B#EQ7*_ zIls}6!-e#@f&q0v!DiPo!lm7DgUgH9+gNRNCtfYjAwjLvAwflYffn&ArNfMS{h*9c z^};wLf9~5S#CFlA!>OSMi1BRRHy`qkjK;lyK%Xv**`F65u%a5`f3P;nzKZ3|W%QV5 zM=Vfu`$mLk6QZ^-g)&wH?`R*YrfVM>r@uPSsFiKDPd%R!}+DBlWL*wjw0WxkI4rp;BOwdMAI> z^}*TwueCGE8Pi+vm?BvRZ{F~EYoYM#x%Vt%)}VOn8j3d#$%j(Rz8-C(>DF%HbP4fU z1s>R9h46D{e2ptJe2p_R8V!5VXeMvrXoDNK`_1#V_XRw0@`CBC!k*{vepv{3(<+t^ zV#Z2FEulS63CsITK6-e@P&oR{|I2;mC9~`maQ(J`^<}(2nSre&g+KAk+HCIQ=flJh zj6wu!KUGY!U>Fk#+1lCpi=S?wnx(74=uM7(X#avjsZwrBQ3RKCUjJiG>6T_5R#W`x z*Of_~QrcnuEBTc_&0vxgvWO(ze`zZqu*)kd(gJmJDyJEC_um{X>{_j{bQALI&Dj#+ z-7+A7Bei7X;#*ZEQ0lao0}X&!AjC6I$GZ2`u__@3YaOj~VOUIgPSz33LLOgj&6!pX z>7IKgX~fKXojkJ^UG(I1(`y9tEY77(`SHA7A#|RsJ zo*hKI>!C}udrU?i&AX@{b#$-H0e-KH=y2a}g66=_ReaiyuS&|9Ym-Vl!Y)jIjP56uj7FK#7@E|z3b?AB;K zauWkTa+?9Jci8u$EXgQSf@+WHh|B^HeCTb;jB)xpnnaD578V`Y~$fr*AEfFMC4`DSh9MTE&F~hdgiJ zeOE@`yo#i*g>qZA{S#K-lYLi?l!#03J_{OOu>)5gUkIN`QcLSp6Kcna7j!0+)~|To zvby8bg0WleSN4#FSMp5f2OXoKkf>~9_%6?|J zyi%8J2n-u1tG0|9;`eyM%Iv(tE==myNlyA-R(cVt(vP~79@K`chwQwSSD0v{MU1I; z+I*CyPEf0j>dn8%H%FKv97lPa>(_Ni6q*$_wgz>?z2U_i`c7~1*=_W`yv1J(FaWg+ zB&-x1S661geg?HTztU7bfB)RBZrp)MP+rTInxDuinElp=)&RTjt$cV3_b3uo$M@LoLbSG?7_r9 zlb^UT*MQUm$)LYwOMb-Z{s(x0ase)1Fsq9oI+vK#80H#Esg#_FJ^%lz)fem!x_*rvs9drRuM3d9>DIoSO$ffzyOwO3^==Y^Jm7tv7` zHQWPLVq`D!Ir1~5r!x{ToBFvPyA^c-7LkN=XIY9*(dWxo?(INU?y-}8w8dvaH^_4T z-uu~PE}R&%X{YC2nJn;Abr0po9`4^~M38=3IJa+vyuZ&NbRWAxuuZE3aDh*3qTRm> zCFnfn#&w%|yDVPDwMcFf&JWzYOda^w|G9){_q-6J$z-T8v?25@9gbmHRPU#UeI{=b zv%XGJSya|d5LH6^RKd1%C*-v{iM>~JiD4Gu6($GnRLoSd7>bXd!?{Tjwwk!+in_{% ziiXN^9slVoy(TKhcun28$8L+i@}eyzE53dHBOu>Z2{^ z4QDwQD_6u#)uI?Xzjee-*WZdEDBapkKnZU8X-7bu)QA5?<_)i8D*mt^OZa0HgLpUr zD*uO_72ZcO#V*xPWcppIpIO5BXPrbvJK6d@&Gy_mix< zOErva&h0c-U?eK<42q(b7I)-EagGmat(_(@J1_NVa4JS-(Q6BPM`kf8)9Vqc#*^7~ zFRjUk{}gr=(3UVyYc&ZULdhtGPdAx8m4+I$_~=SFJ37-#yVI3N`#v8fFI%`&ln8KC zx8!18PWwX8?6T^LC(@&u%@WSAyf(6+uw)4i7i>NW6!jZM;1bCyH@(ErN(~`ohi9DA zv3Ace#O6=a#xwywb+OZ$ZW$eKB`F3dEwIUw?v_4{Qoo`rRs!B}O6!_)Ej|yJr+@6m7kqDL7eHSt z;y|F^;iuST>*EK0WB|MYf_Jw2cV>)cEA;v2|Au9)JY2W_fcYxG+k_XFWdtY=nb7AS z0WPUbi~L*2{ClG|kYox;c7w$orh%LRd>{{e5F@&{T;R|HfIaK)jfRiilt%{wgco_b zgMsVDJoo)hDu`~cAi!+eOM2`U;g7iK3B2X4#{&9U42D6k2^}PXCMw^^g9|N6Y`6}i-la}LY8*cL+{NebIT64~>u7ut_rc2%^Xt{r9 zPpLoM5zzMwx#l1F$lgb`_ml3fH|kf?WrzH|8|3tp8!5vTK7dCzol!5?7TV$BMo9!A z9xElLKPi(dEd->8&rUW0A*R(ReU1kXx7x#SG8^;o$D6E_wVYy_C`kBA=3xdFJG>8B z>gi!sTvFC)FIuMs_TMo}KmLq?cxR$R`KgN^*>Nu$ub6iTwM0`qgWVzHHl&L7|?96?3div#WzN3v)N2dJul7qkV0Y)N|J$&hx7oC^t ziXOeI&&3;o$G6moA1qQAKD9Uc5cTYvltS&QhTxR?Vi#G7c5XcE7z3%06*QXvl75~2 zM09M6K&mA0vkEfzQ9D+$2ePlK#FDjenDe8~#a8CH2&QVsNUj~NST1h633_oB;*^!Q zrBJP!H$>qmv%qCRRlUEPYJ*1!)b_SH@c3&51}2kcGcFHBLr5rfTmByAY^{F}ucF~{ zpLvs^?pSkB!y9kB-_u{eLd_TOay3u zY_L4tal#5|SuEot)|NO`{XRhNv<4g|($wrhdAmXHZ3hC%F7quPC{cp1jFZ<> zDzgfpSs3a+seC<2^4m!b5R=N}V-}iPl;DNJHP8 z!O1M82V1oZOc(py%4t4~dDcA)e8j)tArH81#uXICVs|6@B|`|JLPA1J>bfr>UVRnh zTL(SC7>~*F58K|QF)0}h5Te+q;~@-pN|3I{H5>!cr3)F_FBka!;$@+i(9h1>Fu5CT*QG1a5u-H|JIY?BSN}3s zsz($tDsaZ>kdR9*ow&!8@>KLQAXa_YrZk>#hA=AyZ8`M>ONEma9KQI~zT0F%Wf0i58ofX>?qZ5oLV@F0XD|{j;7cnBqlChQX z!zYER1BWSlJY$*nl2{+3O{tIYS8^Y@o%~3TJ!$A$&$}Xf%lxOC{(FQUNpm&DGhjB) z!JEmSek)p=27DDC&@Ae)hFS-D1QHy${XRd4-) zT+-dtraB1V#G5lon^q?;Dy<@uJi-l1iExT)DAe{Ptf-xUX>nVSXfT;R0n;##on-1f z5~Ir-!HDYZ8^P$GyE5IQ|` z@2pcGQL=TGJ&-@n3%_3Kw5?(_XnHFVl9QV|;&%^Sg47y4WF}fFo_h&ZzFU(i8KO3t ztGEux6@V#63>q|h1byKyr9UXLN{@*Z#@vT>iMrnaLf9OAdD~#Yf=jg2CT=y|JGIiT z1O)^(*OL00^nHg~W7&t;1+pJ0$D11>vM~v^;A32@EAgoTJRw^_%gr`GB%uw+d7)KF zeS@`5zUK}Hi;9@eJDb0;{u6tjK6}=IFJ+}ykkyc82J5!uY$;LA!T{8}Ok4Aft`R0C zCK4z@b=ok-BVMJI!Q2$vEY&P2Ip@UbuIQtj0@{PDy_bKb`(6u>3p&e4 zl*sZAPLnz`y*N%d8>t$UW-WozZ8~w!EcYhFy$6|&)nxTNIKSZWtnRoo*@%v4sD;uo zWzvf&vCRWxY|Dus;D+-E@M5rxxv#;iSNieVj~R#{ks|VT0NOM?`blsvq@QjtrR0*e zrM8m#KW=Ag;C-agk*Fr^EW-9OgjSJV;AjuX65}QONwKjK0hqW1-d*{CPgX@)G^IKS z$g#e7A^y9UFv}OmzL6Z1PpbKASuxs@^io?HiB;uqLSL ziXULbGA^m~8}=e=h;Bzu1+Ic?cdZ1VMn;s+>{J`)_(?$QAC%G?i%EyXWDh2;Gpa!5 z>+kj5EdYy}szktvQ%rRNire_GJ3P}Is&}@2|NYNq@C*Q%Kl%rE^h*4=LIn-)*U74A z_)}>o9{bruUfaoxs+$Qz-(lczYWLKX_EcaVxB_)3N1(inx-^E(g#Pk&d!QsraJ088 zD(oFYOZ~%bY=9A*`=x~j4-fC~2PP%MsAT=4dLsX0_qR{Q=wEJKL1wrN&LKh zsrtvbjPOdJ1WuPY0O3QAoWQo48=!XH)NGJ73XA_N&D^S3)qRsr^UqFbKP9yy17f;& z_^Z))-G77MIDe6LrN!rh5H2ox8yYLxtlFxTr=(zj8GTy+9U(OiC@t69aK-RHC&927 z3F(Y(1*-4feN#)%({m(0QkRYA-f$DDJ-WWw8NHQ{1KMyCv4IFUd`{P)Ij4&K0!Zs- z9l}U &y&SD+!(vu7UnFr&^!&torVn5B_OxkwA_%C$t5amKUiNj(5u)cZ>mZ@SeOx@k^&2ly|0Q<4iMynd z@#Nid0zL_kE2udt-XTb1IYyP+tw&JMY5jA)DKnB~|GO++2i*IRoG_F5)@=Tao}lbC zvzVtmpTuTQ<;(w$9uO*W*{RtP6dVMbOV5ULf1CW`aj{j~JvgXLWC;u`_3c+RCA?(~ z_OY{m;D`oIO|J}pnof7EW6#R%*_&JW+|ZB;i4Z{D7J#L@`|0w0ts^=~3bNKuHKo2m z5A~GRPq&^zqgH$qo|P^9$%+|%2S=gr%!jT4KA4-@3>RoMNq-guK;ALAfFh4>1m2Z1 zWwoA`eF>l>IA*a41&t$eR)pKxSfxjUPO%&I>F*>klN60S1LwzE%%Lx=Ou8A$eoNWz zUE4Z$GqCc)`1izCMUgO5*v0Sa34>=>vZlc?+eLX!j^SMM%H9h5@wMeWv5eH2b z>19!ry6SdH#EZs3aZz8FL-O=2AlnrT=pCOT2QLskkd`_X&%;#3TAwR@-MjNd4-#V_ zF}K9I+G*M|;M4_-1j0!_Fybpp$?oIeeEq(>R9Hv{4>0oz!_*ebR49CD5W`n$+PC_Z z)-laL1!paM3Xs&reqrMcek%~hYg)cXlhuyc>fRbbn1Bm`h3(nvO9BPT#WBSh7v?vR zyGSHWFM=n!OO12m`=aOuG1IBTV=EuKi+TIcZ;?^?K&nVdXdDHtHqE4UBYxg06enVicBbeVuV>BAU1!RdD!Gh* z5$K;G|7}2%+#X(3k3N*ol4tjqJ0z4v zwbWUC2=A$%r!ja?7W<&jzI{2T_9uYs6E_K3AciYn=2_*e zP#5T6i#42drcYaIzifnSU!L`%0Hky3J?ywh)^IIfQL6O*x$j=hK(QZ{=TQ3*pUcif zvGwvwKo4Tw?jn4%2lQ{3%Lc}(QzetAH9}+3?FE^N4%qU0r!L=pv$92VcDXtq%Ke2J|KX?Ebz(A0EomBNqN}lQ= zaiiQ_{_*odla6*ut8i^iEXMh+4Pd(j-Bzn2NYHO02vCs#d-2!khRv@WF%?Yp zWrFAOB#tcebWR!2%p3FG_#jgO=d~yG4GqB!z<4PWxO>fJtlL6s3-YX14o}BcKU^5K zZMO&YIYpTzw2A3wZm?dqcX)ImT&7KKO=6O>#h(K=5}%ws%qT6Ox_sRh7&J&IpoJ!f$^n>d?PH%pQeHRYcH@E-<>B+MFZ(G1# z@r6Eu!9Jn#Lvcm_BshIi$ZbL$r5KCStT%^28@XJG#a1lYc>CN)DbdB^gU-%c^cWVc zf+G~k-8(xE&Ns_e3!(7hDZHXYNTudg1}h-(L;DV1@iO6hltOWh7-cjYllb7WWX8>|OA9V6HuhZW9w(~7UI4^M;!=tt(gaf~-QJw{h;er< zIh`C+3EXIm9cRO}N__6Ns*Rr$pg~e(y7wj-5t`1aOmzv zx;wr-KJUlh{Lb#q&Q4r&&D@`)+J3K%)_zZl8PfHT2b_<`PhlJ;7lm{iK{tu}760k> zI^5;MRV;q-oC12ItWs&GLl}Lm#4QJ(+K%}i{|3NaVWRIhEr2aT@B8Ob4 zlL`DfUtzIU46wBK5p3q4Hca9ONIq&BMhvo_$H{(hNc}M$n3Bvr3;MwF zz9h3zZHd!~gk6&IW&KklZ}fz6Go*8}Hh#63d#w*9Ju}}lNaB{B71fcCeiyqaY4=0g z4XavS*3%a16CN)lCpG*m3^5vDg3E_+sza`?OYD?WUQ7a-(EO>ud8wK&H@D! zxMN&>KH^)kx8I-T+BbLm0yEH`%Ps0i6d+rt2fRRIz3=+6q$16F+nsOjb|qF_XWa(g zTj4c{StKJeF8=uYguGwm2DGO-^vo2h6v1|(q$izyHLr5xj6f#jB0q!iUz7?S@vnz# zgL;<+7kPDew!c6AyH8@?na8_wv%)F*w`?iu?s7Fw<2^G2c$+=~78m{6jXpwgUgKrD zA}NqslR;u2($;a0xN9e8hBTLc?*ERcm+V7&JavyWZXz93Z{{^k8x^B`@TCa$*t`b< z6F^O=aIr&yEg4oWCvGzn&~A0q(pq4S?wM)ka*Nwyb@=PJ;7#7Idvb9B1}}h4-A30a z5Bil+l|sWCjFq94?S`bT|1DK%m7Ky0@dYJj$j75zjYo(%w`V*4 zf*yIl*AD3Wgz{?DS*Mhe8+oD3LDa7Wt>?*5VKTS#u>`a?wNh$KOw2-^7JiU_g-nov z%-tm^BzEaT3uvhM1m-0`P;=5y&-q4E+mb_c$6yVOV6Z?w$n2`!ukH5dUcm=XDd%TQ zaY9B8wwuKNOCE7+)!S=`#&sgjH+La>;vRTbdE>b+bO2Hie$dj;W=(x@U2Y6 z>1ug~U)M0Jm68H zml4S-sdLM}EgbwD=^l50%LWVLVPRzyq0W?H++9_j5NX%aOWtAu-xCE7h`?40jo%kN zZ>@|q(>Xt-x*hPjf(EH{I66YbOo=CMz!-XCC;z2uKe}|%d$WDomYLGb?)wN6x4G_%Ehj=V7>4OCdEuzQEkj^ ze{WTqy0^w>40%)J>r3xpIB*}020PUA@!kn!A#vBb~-nMQ|52?lNlJ4$b;Fy{8kvE?2u9Zbzhre9I zDKJT5Tjjd|RbLGioHx9Up7)JVPQzn3rP;=)`=Y6By<=dId8Kb*l=~>TN~2^zvkn2R zE&&M!tc2{;(OXute?1i2U$oWkOeN~NEnc)e-bY4|3FLYtZ9fke%tfPfW`(8wxVYrP zuGA;4wWOSp+z+-Ni{mwhm%rg9G*vh0mQO!hD_*9jr|$hTTUSv+jMsjswQ8 zv?)N06$1-{ek-~$P8XDyNwlOc)LGHfMkDg4ekXNTTpLqA@+?j)2Fv(tevWZvWo6aa z;Dj>HeU)Y#!Y^Jb`{x7p5|ijJtCMia)qX6=)Z4}GI3-Y)F73Emu|iQ&OFuVcatx|R zM@Kh;Q||&GCnp7I?fcS_fb1pM{CXH8ktt}47%$Zpa6N3f%m+kRQFLO?bl~umVMrl> zOg`0$A&T84o>=@TV{4nV6KF$%kq1C4(`c(4yD>DerN7&4qc-cG&;C`qJi&H(@0{A) zTbkKFC^cGp51D;~mvL@!vlq4CF| zwV^|{E%Hy}PUc?rn*yZE``qX^uiMeG&lPs7{Z<6!gTbcOVkwi~N!xf?k$cI6@#W#t zRI42MpY@#R5SJchO_;59^E-_l)WLiGEb%1qHD&G;Uh22MT22Q_RjpOsrw?a;8qRhX z#?dxl5`y)B011JyGcXB#AU2gvqIkDjHScuyWg-u@ehpY3{uln$;9Mq}sAKnC@jt1b z_+N##DJnchp_$AGkkO2W!Nu=ALgsJRSWZYe6$BqKZxKdW>O99(eITk&zDGr+gEek1 z_Qxgy_H@6j?VSbeuFqT6U&*p8+A5yQ02S0jXNCS!-YELJ+uhyNPfPW8_&4f5nJyP} zPEnc1*AVhXa_{jey^6gT!SHO|4`RaJT5ho(+diq8n|%WZ6XzB*WekWD^qT$?XAPu> zG4h*I>ymuRhkiw{#48KXWU7$jxuzBxda0Ebo)v2fc?t@aQJ1!#&W<_Ms*_OBwF6mj zrc6?ET`xw_tt#Ncs(kZ6uDC7BF$rP`2M3DVpOd_Xt;yA@?yW9(dO*~ZfFr(+tS!Yz zKww)3jqUD-b(_Amw%Z&!JZU_Ct# zRGC)obH|3KNu*K&gfhS<{aM`&8Wr#aySuypf(=JgNqvQF`1M-YjK@{jiBLV>k{=K> z9xL>1DrD>6p-)J3?gzS~s7(+AUrr|DYm5mJ@H>%)be;x36m#+Ex>ygD_Oi9@o74 z{nWo@l6f=0GO)g8nDT%CGv3jhLl_VW3z)#3qmW_8>6H2QIHw;||LyWfE90MnR>}?( zgr2!pVU1gTV%-n9){vb-AX*`n8s(g8KBToeHUx@!)b%W3lGCsvBew+DC4j?2T6@8( z4HQM+@-$+vXRD}9EjbnQYV!#ghVtZy*LvZ%dm`3}iHZELQR!|@7!jrR zD)<*KgYznVg63FQw=!=Hko^?EJ86vmU~RZ9UkwE~ap?n_|ArOnz3}T=B{>Nl2xRFO z`adlXNS2Bu9|1Jpg8Oob)uA742O`6&Pa`R8H!%D4_>6Y3tRO$UVLJ|eVkXCd&qACI z+j6BrGMjL0XO~kuE&QfgDA<}A==t75A%F4v<+&k&aQ6)!n_zJ?4TrvT%LD-ZL9OM|oGT!K;zQvqL??zVS{Rsb(rLyOF)V^l6E?v%%A zU)ZWb1tu7NFvbAreF~qw%=hd#h(xhMp z1Hjkqt>;@qKN~mvn!JbfpWB}`GtI7A!owWkn>X))1B97cm;!dW7? z>*WF`4Fi_RF%kd<{gIErLH*Oc6C%u)LYbiYrd+4g4%6gMfI9l|v9YY=S>^9kD$}^# zTo6xNK_Xy!arU^Ef^Mrk(fGh&m{PUXhqbz_XF?dHQ*WC|P-Ng2pMyYmoFbA zF>pksn*w`?f{{&xnzXh1nlL>`-GrHbcKW{%HFy%OO_SLA&DD5g^ z?(k*)ueK#&wR^HszOdqj(%>!aNUw83HOf>Pp%1GoPp1kDk%ciNr|*U z&ndFC#n!^Q&?Y1@-6CDF(>$+BNNN0EV0Q~vn|)xaV*H)#*ZfmsPb7vHQ*Bj5Qn=vZ zR$jYa215#g*z`EBZqb!tfD^~AX+htxU|Y>TtZL~ozoR7fM}d7`@|Ny*u-j4V42Yxw zN=1nj zCwHeg9?TP&BqEc6(L9!nc=ul-AT+k_Cn`tJdM~t#S!AD6z!95L=e}@&9JqcBZ;THW zFzA)%JY4q%zrU+^yg=`+y7>b$_W6;@2J+o~s_A&maav?aY$sL#z!PCZD=;|*{XM~; zrSghTXGIM?33@X(+B@!cohhix4=Z6n5K)du;T+iZcV~ZW>et%wc6>c=;r}!Y2E7o? z^k!*$c()M2cgtseXfD@!|9}=l%cL^Zf5xZ9I)FDHmt0hcxP2ydv!KBzte(er!Ue4SQ*bAv~}wr6ok|JkN8|MbsklH(tJ z(dXuB!@N{%q0@yJ_Ax+_>~>vWi!ez3qISOYK>(tDHsW zgi6cWr|$`zHQ2W{rY}8?GyJ<^)M3*&uSGoU&B2I;wBKUVs3%erd|Y#ycej}JPV{dg z-PS3Xo`qLkje(L)M_AR_*;zT{lOMEX|nVb@y#3ef|+fBO2KlSp+3 zQi60>z=_;%%zlE8mcc3L-_bL!0L$7mb*z91PAj_Y9b z9ZjdT_yAt#?DKFC+#Tns>A1We;7#Ip`0`H{=4-M??WTC`r+Z8}Y5hRt!ERuy_4>D^ z@a+;FBcVAkIcSm|vLT^3H4dM=p4AFGC175zxx`q3CKOFHe7)fa0J@ z>P1s)bY}@1Oei3;BsEDEI{F2#zm`9(_<_(APO05 zcWT+ac?px1cWC>NHY~pme;kRQ{@QyQlMRuJH3xV^b48_;owh|hYY7P}%O3Q7o z7D49j`piw-A`K? zZkx??z-~~Nf_I%sJjAAu#ld5#b%DTgqw{8wHVB!5n$j5qm&z#+InV;vj1vX>HYvJh zG{UYxzR5HaFPFTP4H>0+$}Ho#eM!|*A_*%~&rekRdcw^{46ci8EW9=kmkWH(CMjeG zFQI*%G9+xb4QhT~X`>#xeJiT}E;c>=6}Z@e0W{dfYL4>WUbrcg^T{6cIKc$a#RRnR zY?(gD-t?(m6^Fh&mnaLfB+gf9opsADP-`5xKKQf|rJkpIKHl3k(ZOi!$v1sWz^PbHf zA0v=&_6V=Zc81KbXjJ}`!GdZD#jDsPtl=q@~yq-6&d7z zN+z5S*UFZKM=A+4v(43~TJb*j)=J8}vxX@&Xsin)GQ||RvxO=2_$aV}7xn_i^|MiJMLPHyqzL1X%IGE_d&bmwOLM5sAkX$+Ol^cYTtQcScKMK5I# z-Nj>LXAb_Y*H#ugpKNBlDbF5Cq6x{;G)vGN8f=$|86a;`YHLeDN%-;v_HLW;W5s;vEoGYNl^!V0_{HGhvttkhgx-1%yYfT zf%yARhsBSXJQVw4Yvn;LqYEKa8naf}TFa=QXgXu#45}+9 zt)?}2zWH33IV=JA(*UpAUPW(5k5Wa(Bs)}C@XWzBb@pzv_us2TAvVnpe;#l8o^oJf zQv)^LWJ1={z^}19G;>PV^S%XUdUEY+3C*X>(y29;V?d=NkK-7M>@WZRwDzba(!*K~>D*Jv`dIkKT07&7w%md+fEX3_7N z0VBgZ|F$3 z45jiHM=2AjVtf}_Ec8)2{>uWVB3goNatWE;U|HUS2F}c_hQzQf)_e9XJz!>z)`p@v zHl_cZoRHl5d9@jnIR0MA_l9kxI|L7G1VobmZG;nwa0z8l+$yfnu-JG36ba@iNY;Ej z0!NloN)hEa+F2Ht*nq=vfV5fdoc?n{AiPQJX=U8T;gnAPg1HN~r(^0X-xa8?_<1vF zrP-SIghOw8U4XmwAQw(9qi}~5?NQxZi9R{vCz$RU(1g73(SVOK3s2g z0{-9L-oGbU6JBLV>-lMloXv@e-dPKy4x^WpuJ5;aPZyfe25!f11Pf7Ve_+*Se=J|f zqH`h#vzDQjVd2Vn@_OLIJV&=S?w^NFrwp0r6mPyeu0vU=_+&6!D2O)s0&IUXtGCqa zHE8&35_6#B46sK>Zw_#Xl{undNRPDh)}&(%>H5X@?yQX`q-}^%KXV?0(3vG_sJ74q zWdVIThD~+{Z0ss^#(&1%g2dF9?9d%Qxl^-^=qJI2`OUA{!nZO<_jML1b}4e|dcX>h z!wd*jb?!`inxBGBRu)#`^O}4sV=u=Vk?0uwB{1}HG zdA1sdJ`OED4=+`*yGG@qe@m*X30x#<#C~gobrV^sVYom>o9&A4ES@s%)uHeiWY3X2 zIw*>8V;{2(O~*Dwes}}}=AOW;cM_B2!88#OOHw?NFQ{v>tWGW!{E@E}K8GxMVp_aj zs7!Wf*U>CBad%?~iJs6!mH4bYUPTI?p&?Ah7-gsp1vgRq2|CW2^ffojSWc`Zcddv? zz%ElmkI9)O4>Cpb`ASvf)njn!?wRr%-tGGsDpMqfv(-n;=d?JOJ93dne2GqWI*r*V13Yy8y}4#k*O?KIs*EB z|Mr>qqGI^r2V*-Zj~oq)VFnPHu19{%Hg-xUYtPNzq)0I?G!m71i z2-%;j3u$@(&)D#==V$?GorbDW&6nOoueo`Z+5iUD$ zk4G^jz&c<%IV42@p4;OGPgvd(oFhy%YN{$;bQ7~j-Wzz1Yf1pP2xm0z@ zOS8iD4>|sAB+kXlhi6lf<@sK7w`r~t7*fE;8AyQve`p+CluY`Czso+!gN9&rv?u^9d4ndfUS zI4UO_h}~EB9q?b(^&u*OIyO2BJ3YQrphERba; zk|{nKa;t>3I|QEPV~Z`GhTcKi^AbuFYldOsk5LJSmbP+~?L|$P&sY>ob~Ec@i72`v z8G4^v`NG{F$xdI4pIVijq~DdJZqSOF;3!ZGq)6myuovTT1*yCV(NBo?U8jZ*yN}f; zP6`Y=5r3fq<&Q({*KlTl6?(jikqj(y$qs z9v*GjY3!!SOx39vLwarw;e&Z6$0#zz`bUt2R7jPRM>|v)D~w zeD>vwQ$-4xnh)A`YdnLjPH?6J<>&iD;?Px>lW^>);Wy1Fr#g8n%#Ujul9$9 z1nIN;;xy$cD>KZ`x1Vd+Ra@NH^^a2WX<011GnSroIsRF7!ZcVHt6g@dYBY|y+VbCG z3^WqVdl(Fo(+UO&t{gcw4shg50I^3QA_BEqHG3|X6C($P{5#iAa}2~`96oexFFtQw zNa>{%*|qb(-PL-m5+%OAI&xiRwr_9fecDS-`x&n!jY9r;uotkx)0u^&wJV-uvLdbN zsm1KkDlyOH>d>Z1YPUF~K~(A+dbe38`~#eiyBF21@$j~UFzSclyV)01quhw{F$~4h z2d|t)PCD4cFke$(5xrj2YuA&Dlr{G}iX5Zf)|0Kv)N4VXBzhR&+JAyd`lUy63=8r8 zRA;dS|Eet2&_8!zsc%1i-#g9S%S-=9a9acGkbf|K5jdd`lWwcvz}1)1F8ls6F^Qne zZeAS0iW4q}#oM&%?yHTdr48FP`acryO%Vf$BA)$l0I6r+TYv`OZv2VKm@tdtEfgLb zh;%bX!5x_?Mdqnb)jTyh%Dmv}r2s*NxtJgliar_Mbnb#oWZYL&6wIq|jzb!pI0T`} z3l&Vq3| z9c-AYiVvsrDl9vhLBh+3`5Mx9=#|_lLJn1Xy!egtb9L^}P=Lg@M`Q2zimgA9?%)I% zJ=v)f6oMfU3!(X!p5O5-Xwn5Gio3KT^GigArBn$0#1=I`1!I2BDG(71RsdK>^1uH%t5#Tcuzt9F1F04 z-s&I3#k^~GSP5WgKyI#F626HimkKP7b@P1Vifh#~YQ3U;@YKpNJm5aE9{E##x#O%pu?3HJHh(WCr2m6@)f>Ug1n1 z-oQYkM88XH+7ca}y=#1tnX3ff^w5~9Uwch_e4fZX*V*$;FO?*mW)#NDHWBcLLm45^5J=v>~9|A?ty+|qiVP-(w z{Mpx5)QzwdySF{4Q~iwVlFQZ~Z(>O%0(8DU!zMcdHn1D@vQ<<)FHvtV_uQ#z(1#LWA-Tl;%Xa!ZkA5A`gcCh|tbs`%{ov zTJC^)6&lB{#KOwT%JQweOsNsGWMuZuwqj`TV|;@q1{ZSV7=|eoJG6f)VPf-brgcHv z7&piwNn!exU*3^VC#^B_?P64ir=MZNFMKU6^15#3Zpgp;YIE8gyqE^UOz3o_Y&;t5 zD-AqU17nQk%$2VU6*FBKAqJ4XA2N|%MGk5>mc~z&|7b<{vIP%+gL@Px3TMVd>3wd` zMASgB1i7TCnw8*yI5Q_tD1f42fHL~9BWs6ix{0MdIHj7+j9*fY!K0gqz#Gih`%y$7 zuTKjiFR(v;$Q%6a5g`oJu+#*aOl0EArK(!QwdYc>{jr+ZG!J^`o75v*0uAS5X{HZK z3d6kX$$)G2y*e(j1L9OX{F&2PV* zdr27G@Lqd6$Y@>rs{lSlHuqu*(GHnTP90IhYi4Iriy)QnR8CR&iNliQrl|S{**=~T z97gGfbGk84TRys>*49y@^E=!+=CiH%c*s|NNj1l1!gkxuz^Q@qlSC_xyTh*)_2W2y zo#DQ7P1K`erd5C*lXm~bu}1!bW%K>YPdnaC;GCOWkGlyv!^(U5t?Pn> zSn#w%Q~_Aia~tG$YWTO6W!)C%DATsM@4bTfrZwMYuiGmE`l)Y?`82qn`jh|;LL(fdF6x!G5I&RTs34R58|^!A&5irAwXY=qgYC({(3Ka_ zPyy!Nc_y40g$imeIUQo z0}KP*+c%+t;=NCH;JM|)ueaV#{_G^?{RZ=MQwrA>p8t!FnBe4lkO7Q8bS;|m$|bSu zvCQ=74YzO~Oolm?(_h8}h6U3QcBSOXKQr1dFdVUbrTbE##Ci%hv}HR+5(uu;5}p&8 zKidlP@uA^VJo-`GDDD}CGs@kdP$P|K9zvr*L|wXGT@zHa70S2Tu-i69YQA^d`U{x( zUJ|#@yh8`^)c$$8&KzcmR&KY-e55?UlUWH}OdIM4s*AlQM(Z1rl1R&3;KhlD6W}B7 zbCJN1h^WFaIwyEdhSo=iTr&a3rIweVw^w*oN>DBR+rm?lpMts-rnvYvIXDp?1xSO0 zxCqAIjme^RhDC|4;vx1C+E_WV4R>zzP8^sSR4AmiDFI8mlQ|G#B=Khbu+we&nLQ7B zT=sBSg`GMQT_KT)rjb;`S<3ldEk#|Q%4v#-Wk7}B#pr?~Nqa@C$ZAVuTMQ=7N0vX6 zhXBT4X{*r1=*0sOyB27mw2P;hRP+GjUiD$eFaSZ7c3{!gfJ52A_s+q*LQ-ys&@1Tc z$!j?_g#@zNJx=P~d-RYvDF36}mBmNBB4&bj&neDfJ{t2p!31kFOH3DOmqe&KUmEPV z!?yEB;oGrxCp*o*5-tVk8iwK0xJ1Ut{PCe*ytEc}Wm{u45Cb(LW;IMq$@)0yhQnDf z_znVY)wLVU!o|M!&R;+1&vR@^P%m;L@kD5R6Pc!n<@Cl&S}JOIGCu-G;H?DE+UXyE zHc&Xah%+1Pw*rL-@KQn$*JR5ld2~Zus-!^rub3>qJN_hu`x=Yh-jeRc>zCFS zKiyww?DbS6^f6U-aw~<6P#Kzj&}IV=CNi*{!u8qan@#FVf1A`5cse=f!>TnJ%GEgU z4Q^BJjoVRkdec}y^z;IG$hFGVRP8Tytpvi(_rdpm6;*AvUM4cq0a%bcUX^+J3y-v3 zBMK*vjKeM-)ZE3{Zv>ZkGsZ*3RcmdBP-M?Mw?#J0sx&ve)HKiUK{y{nYvx3rds?gF z@vqx{7F}b!;Idh4W;NXVI16U{PoFA|6sUuG%%#YA2)|c^yV-ZrFO)jG_A&PfMk!y1 zLrA`cU<9rZm6tjpR89X;%YC~g&?~Kh-(cw=D(wy{sURMl(>OdW9^(|)6+a+sam|zY zTO0&YWJg;N&rpO^kaIV-$2B|AIk)5fuATModTkmSJ*kr1N7Gr^l&h0)>5XopRIi4m z#UU1Qo9d9Er-_0sfcS;T5xWLjT&|{yX(kM?mFJ#80XGpI#D93&{un%Fzq53|&ssL! znn7<`x1EO_Nd-&`HVM;y4<^bx{C6aFC^Y#VuLm-ef4c2^#{;v29c;Z%Bt{AyBABi( z$~WIGE@-fRRZLG)C-oeB`#)_%Cg*jU98v1s^>O{u6$FjYj1wo{cXaO$7o5fZOKj{O~*Zy6Iz?ywt zOSJK)WFHBn7Rxh>PTtRFo5E1nJ0jyC;PUvB`|4{EG|}o16ilSKZY$FjhTrnARZD6- zDMRJfH@R&s>#;1T)j(Cc7{vV2i786lX+bg5qcE%UvlD^|aFAi}?Z8g7%9}GV@itH> zHAJU75klkqCA^IRvQ(j(3@{izQle&g^&5+fv*&C*g@U%$m6TRdypJ!44q(u@{=!07 z(~f^sy+6qPbPGxQ_A-3zst`-xuzYrT*iQz)zEkcYW$SfM!YiAxgXMtn+!T2rUnNMp zYt=N3wr*}7(n0^G*UKU-?Iv<}SB}lHh^`AvQEz~kBW&HwxRmv;I6j5#6L60@&?+0_ z5)z0m)ZaAXg#x5^JZxfT-gU`W&W;YwS&=dE=~woS${|#n9C*YT6GDl<_(~X=Rpj)_ zC3M1yTfdS2#c+^;8Mt_Uv-C6-D>70Yh{x?3~yfwh= zUh=!1nZ?Vfg0BJn%_;BwI8vg{1r;vijqqw36zP?8MGCS=IK0#SI+JYtZj#XN@DYB- z7=BbwW6N8>?s5+xohYEF)0R(U8dA+vJS%w065nHK`f4*EZvatE;`D%XP)i59S$*jo zgbDF4>@uI2-^=yQe`1zO4A}O*p8s>WoZFO!;feI;@OFOtpHN{g8HBu5$ z!(4Bs44MO`d{qhrPXlzZ4xkCTyjSVpCJ|Wh4pB>2(!P7p1||9DapDAGWH#ll+Tc2d zKg~67pc9^Nw)Yg3zV!tcZIPVWqw$KV>DgoL;QBFQJLNjmGOIB@Gln1G9Pb>~QuW7F`!i@(W)hyZ*d6b&I|U<}8xBY(eMfbZ zAcF@P201Xptp#@N+;6bn(<(Ln@}2+QZ96fMGNcvJ@g0$lncmyD-o_mXp8Z3Tb*eF= zGhe-g?6?M{e>G#IP#ru6zKwo`7q*f(d~njExysh*zZ%ipYnY&{>jVZEQB`DQWTp-C zx7CVCOesG!Kl*p?G+Suk1wUiV6u5jnP~NFZeJL$&V5$@}@vS&TuIuGgz+jEaIho`m0{w;_KSk?zct#`X44l|E3_CYSU=JV-aW=j2wapDWXx~ zH+alce4intcuU7k;+jD=5otY-i%sGwy}g2!&s0>l)+zR}0qmLsCTj;0nTUb{Z4dbD zMMsbFNSQhh6roA@hCN>5p|SIIP*P+)x4MnQBq^%p>(ay+=2gi?GfLZVWW?q}x#!3} zJw)bdaR84j^r3m@b3x1$hd>r%irY!X+CL7r`5u5wHRKa?o{wvv%f*HtbGBBy{#Kp5 z5bb-->+~S#xc9)QzUOsezh4zgVXp0YG&uEW({I0HYJGL~o%fbucU=WwX04wzHHkqH z9G1+3A~;D1(weNE_LfcKcOz&!vI4?TM$zX!JoFCnV0?+M6Q81Zd!DJ)xH-ZK40Nne zo2Q)-FR-gX^0og01_9yAg1i{p%T(mjnn6~mdN`8lZ9^~epC?S5DT8!q)R`_t1YH zkPLi>y1=Dr#;HlTbt_=)`hGN>KugexfQsWc!ERL8d`MKUwy#awB|_cpd`gWfh>t{h z|6UU%gob=cFwX25kMXU8+^s8|*osp2+jxBf1=$DL6)jq(PA8G%=%8v)$n8!8AJMqh z%$)%|=#C!6iY#Y#sCde6uQrcVe%iU(z35K4j@UG~*Pv|TL4kz1MY%ytCVP#6E6*XC zl>W*^!>Gv%N7R4>l!LTCGS?c=P57TxJxq8RgqfeJ0BC`T7Tx~q2qs3)wVn*LtGwW=w3z(P^FpYJ2{ z$-Z4Vgr^ECJ465uR@N?08g^#(4MUX}HHH}t23 zo_9|Ut~B_RB$3x&)Wc07=*0cxa-Ra#+g2EQO`AEFyPcYl?gz2NFaA^9NBSwqoQ7Bb z(ljx+ySfOuwsKgn6GC443H@oskwP6lD1A$NgSOkN2i&SZ(!1NtxD&PaS{>swWfb)GO0?NqXbRT1u2bN!|pd za`@Tk(r88r=IQ%Zk_WAtYENGfnRc%gIi*~c;*6p$hv=ojiAwK*NWI#vIfqDE_J{zn z#Q0l4qRGS@M~iiRQiI!8xKOEH|F!R3id}qEeRkut7eM^|(jNZ~v7W|M3r!@TWkx`6 zk>0GcM#BV%J@~{QVp2EPY4FLCo*Yz@o1j$fr$`X^(raf$UheWaBLlL)_&U-6j+l%O zMSy%;`c)I=jw?1KW6{}sNxln(P=2C9j6t_A{qr5E<+yPsCmuYpKNS_=hzq<&b7 zmFds458XNB(z4PXsf^Jw>2b`sEi-xN>TA&-W|&`#0c!_ zX|hC8`&Sc~C1X*pIds_B3*~BjCy8)JW$#JUBaRImkmz1<$|vp%EjvKfDKCjo%zGu8 ziL5l;cEiC;-DtRJv*4HJbuUN$Ub-l@<)miWRM`kFHV})UCxMkK1{Ngj-ox#Je?(%q{d_yUDANhaUw=} z^99|C6@=g<&9-w_H&Wm><2Nrw3Xfh=rFF$iO)d{!Vy?k88OG32Yz6T6*&hP#(%C#A zEcbgBXlbkXQ?+L_vLiw%JeJjBW602gVKKbw#71GY%!ly;Bww+eaq)0M0Vkh3qzc#S}(hjkf;UEOgU+hRc|EpA`!LT z39uaf#f1pwm?1j@LnjoXvvE1QOBm3GBuD-Y)&_(T>ty6LQEm>pLax`9!?SiIrp-V^ zYVP(<=Yp+E=i#K**avsGOV@3glL8Dsg{t20B){fXud341`1HgrLD2gJ_91XE;<^2Z zbNS+C=o+^9y9RugV%1;z9Z%B5=|Eo2SWxkM-sQJq9Kc+`aKPXwCb0{^=+GCfpmw-5hzZRB71;;IWWpXtWwM37QLzSSF8fW@Sor2*!$}mE>ILB_osTG^(Wh zQ9k$+D<+reo^a?c-2No=t4Mdt7+maP+gjI>_89GJtXx3?vox%K)i~)CXAjz!K953{ z0ZJopMFyYRsPLim>{=w4mXc;I@d~J(Zs)#2$q&WxhGAt-1)8EkFWH!BMfS4Q9iXGU zgBP_-n7*6rJy8_R3?ZoXdT}=}8$xOq&lzRL1+5o~4dD)MG(Fj><{H-l6u2U&{_?u< zPBJqw23HbJci%9Bv}_#`8XL=J203Y5$r&z5qxBgj<{e_Ug>q9`u{>(ZEdN2c=jJRx zi0dEs2E3Wy1y#rV8tM=v+2t8xKe5+8$OTCOUNjw((0PH}4)QOrMZTB+0!?JV<-Kmk zUNb2}CB_u>YTF_zp1BYP`Bc7X=k7~Hk-7$wrRdIVEb$@;4NCQ&9z=UMy?iIgUsS~HwuraV30Oi_yy)l30KxC_*7Pl7Jp+e%{az-m-G>3@^qwBpS-d)Ydj z$cCA4BFg2Hbm|$*^02UNVDgE%vPh;6l${pajW3wvj-}FBOW&Dy3G?LD6+$LFD>H@M zeYy{rLN=G%WM=8vl4|>jiGy7e*X+h>mN;0~LJ=f`^G$NC_zY)~J1bL}66fQCmB*A4 z;E+C%5r6loxwd*1c&2>lHv*nCDltAgBsx$-o%D$Cn)H$NV-bEe#lwD9kBa#BnHj8V zH+d~BDjg=e78Vt#sPV0Ou@$jWi=Dl)q>ssN^6RAKQ%}KNiJkjD6S3X`l3v=5P3Hj_1kdaOK7w4&=~&qp z?Wo~{`1>A~jzUT#4pJG}(~*oaNXlR2bB=pGs0p8Jq6{aosU_MAxx%hKh_W7G?X$HG z1G(WhNY5~jg_aPcoEas>*NV^M&-WZ14j$X+8+e!YNT4uyCgX!*`WT7+FiDguwT1y+ zcOP-KpJbNL#ilGSdFdYmD*rBcVAX@|gs)e%&d9H`A1RN_br51U4H@hZ2H7*b1d}7l znnYrOIPAY!cLk21jt`x;rOwj@$shnP%$FdA*`?CxQ@`>1XnI^FXM65c^RvTRM<1bL zNiJ3W`7^{sW@T2p@1z#Ks#d=oyhdKN*V72%Q)NOXU6Vz;o<9CeEh>GgF=YJ{#Evb! z&;ESk7%&`*s%hoF9YCGBK_e8fNC(WWDLEu7Br>$lDn)gr+hhNzEAJj63btRVVAhaL z-E|#VaFe+|XV4TG^I5YYIS9c+U|duT9PHR{Lv|pDm~gSXTVv_h$EGk#mXOb~IfNfH z_88_701f#n$Y|P}(%TPo19pss5^J*f;Z>8yho(|~JkPo>2EVOAI=CmFlt{u$*!Vg) zy+SP+jVOMqNhdU_IB;X)-$e!!9oFLAvh9)hvdr8raCNNmDc2gpxa;GQZGAz{gEd4^+j?(4EU5MIsFsvQoav&?W9lhdQZ2U3CMoy# zSCFC0JWmwsK{n&kj-j>(W=sk!{~nF?ao)AP=aLaAt4-=G?f$ep=}W(`wmm!Fer?-O zLQ8d{zB^{PpmI3FJ!^!#YFvm5Y`y$pFgm{>P0Ws2F!?JU(PG%?2p27NpG4rz;HA6R z$Ypf@@>)=2QpB$HiO`}`^OWAw8a{$ShURBqt)Te(!dS{3(70-O{-Kb{qHo6+CvU%X{#rl>q5LgLw7*)C{kbo z#pcW#B1{;3oA_b30~Wd(4Ke^kCa z4Bh?u{Rc+%7WA)v!U?6!qXC~bz4W1|>Y@HHlp0h@NySiM@?py#8D1s!y^|aAXi*wV z9fHilcmD7y|1NsM*80twL8_Q2TMdP?1fm$M+FzIaA2~|}Xx?lnZ^Mq)p#B5X15+}xCZQ>=Uo8>EG0e~##Jxt$X^(wc5fEFgFuHkD zNBM0N%Rs9m>7{#w{g%d3aF>W-)nsAXJ;*IH?&f0c;;Uc$@0g8$^=mpMFk=o(BC9UmQqkHMJ_b&g9 zXRAIkO+W-{5yTO}FP2|)Y$R+PuVyLoruBOUA>*RyB<|9%3LD)Oj7mxJ@pJO1T$-Y01-nFP%Bm>E$+v=hV z;!ZQ|&J|fHFLRI#DuA`^LgFAlgk9*cnRk7K6ILNl{ff2(+uHFmZ^Eh$E+>_!h_R2PMg^7v39ztjV6N4UyDe;urGEZ_SI{khD*XPq%-2G^;12k zI7Wb7L^81Hm!_oX9?cSC!!mOewdo$V>7v52(oNKc?SFQXr%cCVuhv6tHdxK|VMZC9 z1G=dV*e*5**qmgLh3a2xUt4>%+lJc^*~QVhp_K%gT2kl_*(BeDJMmX1-F_M#wM1sR zZM|5tY!}>SR!b*YiCS#3OvYZ$QN@kWXVFnz~jL zrIXIgd%`9;oMb__M8>2KTjWrxEwvS*oo84rSo*F<oYW*0g9OLjn_;&(#f^3u}8N(jDl3h?`ahdPmq z0IrG|jKAUl*hypHe9E~mDW!i@C@i?-1$0H!`rQ$(9b^#08QZ2U2P+q|Szk1!v%UIy zDpI1ZvYxIlIV*Ik8i&wEAh0CD7$n00o=FVZp}Wi0yBXWPvNOAN}X_~KA9-jVH z^@eogu_pC52u07#r(L@mzue8j2Uc0Sj_tjVVa+z=rA@V2nxTWm5k*~n6c1Aq=<46b z6J8SvyO6tT?|Omni=h*QSKYw+W9E5XGa7$OUffwaoK4E)$2v)*8#Zt}A_=QW44XWoS%_&Q7%a z$qmgdwbeUf^0<>sy74TPsGIxwN~ZZCP3qO_czxC2ku}MDnlyg-c&na(ZH7j(Kw?wj z92RwWu|tdFyq&GH@Rpq(spv20E(PM!5HN`pf*GS={b%S(Fd%26@}-LBFT~eg;sHP^>@5=GuYU^+k{#kJ~+|7 z(CnFEUJH5^gBS;q0aOfwQ4~HJ>Iq&g2*MivUa$YKRgC_LkSWwNOlxlmqriHlxmo09 zqi=0TY4P1T*N&$Mg{A}WNp8POsAw3b9+L??mUiNA9>@$7IH8%54S()62H+30Q4Vdq zK=S?^888+pAbn~}sos!e6(M@*q}v!$8mlhPDV{GtkVRv z003tT^4*}vX8TsxkF4hfYU`}#618!jAsNbPn2Ap^#b_w9Jtr;QM6Nt4tY)Z!k`%t9 z*0Ry}O|So;TE_+gVc_cEb+bcmbW)8P1_uA~gIJnYps3ULX_FbGKv{Dwnu*m+2!0Ac z0F7-^X0C2LLG_BF1{P6}p0@j-oJptrA6IV~73Z>bjgp|joirNU-Q6v?hX4Trq4D4n zEJ$#N;O=gXySux)1Shz2ANJYjyx+Kt!4Lj4)m5u%tvT16RmEx80#%mDgj9_Eg(O}o zb%{^MWl1LqFYJb_n%@_?zP|YB`dyWKynh@8997o5gc!?rRHj(fGHItjrBS1Sja*Xd z08`i{l`*%z<6RaPuWU`LDy1Y^P5_@}ahloMHzIxzqpBrWq#?1z0BARPr)zfCzNZI} zGyE1sXh3+)kM^&K@r$1jAmQVc{|q&elX<_UYdTDBaYn`e2GdR!@i-l(jXUIvWf0>C zF;5&|Dv?4vMkh%4KI>wdqN2V9d~oAk{5SD4-7p}iUYG9p=kY0_=|+eO8T(VBm_VcD zD;G!#%(-It;cnL%NOf-kH&xx5eKsEH$PU2q!0+Y%)62)`(Tjd34v)g2 zr%*w3J!ok6?!V)^cLjv;^>D}c1@Zu4j{s!WMXan=&8wh}kn$=yJ+*=&zI@z=wkN=f z*R~Z?I|ndDky2+TebSLGON3Vsm;IBacJ-17N#GUJG)`Q6F!l@&5Kkx!#b4CsNL3=P z_w>C03uUAe>gy+i{t;+^C9eT9P+`Eq*B1co`M!9H0WB?Y;*SVsA4rHF@$Wa33f6Mr z(^nZ@gNoofg(GL#@+T=RXjhwy2f8WWER7QdAFNIhE9CYL**Bm3o2U!JDlpSd@3}_2 z)Ets(lmQv@BJi>wf>{7V{~CzHb9H_zx{JbZi`uJ`V-41$KzsK4BiXjKJG^j;5Iq{T zA4ep#zGnczbEU|WVyN8>V~#4*LKXjhu`c34b#1`0jNJQO?bM)gh z9^;3#`!bD!8674Lhl?2a3eviQIS4VG#CRMBr>Rc8iTte!rxzWWjO?2b^M;Ke>!9*)sPu{T>sMI6Zbls%fqeWlz^-n-{Q zGD-BpOg|*IN_GHd;m(-BMO!cXBn6QD0n11Gx_o=DHl81LA3ocLFhpMa(_FV*S$S2y zbm8;?v<8JwVCmRD_Cm14F5Tm%RpHxV;(1jZnx|44JmFcxB-fj5GJC~LVMTo8Fi7pV zWGH)PqFMbW8?4^xqQ1Rlk7rJJn$H(*REfIe$?=<2Rr#bQLRs-$(wPGicEd%1_trY$ z6LNB_E}!s!tgMqPowhdCc`6Qm@%8i_`Ex=rx56Vyqy>&!`nq-zCUeo|6bVsYw8Uclwm@vrnthllH_v5daXHRJ?p6Z=3k6T-O)1!VgB`{*itC zFfM}><|S$la?tA=`(=&!Wf$$fZ{T>H@pzU|;zS>MX0;3gB9>82UK_bnrg2kj-35;i zKPXYUXS5uYlWHk44YTU{P|xC`rt6gN6_;{-uZJmq+QIu4)J9j7EFHLU8r}H zULPFdyp1Un{&B^g{h(hi>2u0ieozO8CDxlemKtD9#5w+$OWg<>sXytZ&?O~~=Yj2t zpAF6aC(v*~POV-%E}o`q55E96Ry8|NP>4;JpiN!=J{ah*QcJ(lTbEk*;rfW7{S9ar zo}Jc>A*G?~33vLq(tlhGGn0|A*m^of3r#XqYy0l|e8mu+8aVtbHNQVpLIrZPEB`4U zlzAK*x?CkvF$p)t*^1;6CN;tVfp0V`Qg1LI$`IkMMSq;-2F$-!nIRysG>f}|(hSrg zJ498G%dk`AQTDxAUHo){egmb<0h2uI0MC?z#GD~1mG)J=Fj{x1_i%L~FVe*E82;n_ zy(8~`nA~qMKmV6EX93-^JEOld$o$s4asz^lXSA0*xpY(jUE#qkGcLY5t* zeVA(F)_fMbU`Ui3Fi8uVg|6|BffLy(VZ>$`eO@N=n;qSy2vLV zK5M-7RrK|18wEn&ad!zJ;PRP1>g&mk_r2qbT6sUIm<&H4 z#2}^USGl2`k;kM)xEXd;LG2R|emasIa^VC58JpK2x z?u-+_F!My||3k*L_%&qSOopgbh&DmmQ2*Y$9teazF6p1J%u5VID~>=eVY zKP+?A^6X~|{bVvP@0!BQRok}aK6L&f|IZ1nNe#S`@%oX1JBp4un?H20-230yMS<1K+Ryu zq}~-S0_obFo?!v^)5WpPfbFCKaC-b=s?|_ab;O;&Lb8}4#xk$4t#t`9PtoJdfhppR zQ#T49D332nGAEC$+JvE6)>tA$n#pd*qcOm-^I9fE zvH-G{A`_D!EWbp#+Ww7#ZQv3B7o!LypphZIX=Q(=@y%3}TujD-edTk(C~1rTHzRe%j^E}CdL|VT%2;TGFeqO78uFq}U z)$X@gIoDdVa7^@xDt^=vkQ{-0*?<0Qk%{l2qjXhsFSP%X_@C$)`cP{g%&B0x0<+bI+|b8u7X8Mwo&td#WvSSo;4tU(rjKI#E1tWtVQyXBtZKpC|O2-N)|f4pPN zV;(M4?j8`=Ip4@EpZWZ4=2YoVTy>8*pJ2!n)}#|ccFR5g-7b8sYL{6a|6%Ryk|-PuT*D*GMn0?Om8oq5N}=hl1INEV1Sm!eX}z zx6GF#TvjiSWu0Q?zU4qZe%gu|nx^9ut0Hc@vyr-EdwnFAV#!T`LrIt5X^iApiVuGlNTDs#EI zm2D)Q*`x2T3XO_QNOYZ(L5<;@M&-?(e5!bIV~Kn1rO@|VA9EWA{NKm>>p*s_5~W$r z%P{KsZr$-83lBvoR_fN$e``KH|0gHcFaW8zu*{Y_%mY8)>rwJ`sa}bUNVzJLrH77? zjT(L-<%pn{m%gsM$^O}`y0zlS-%Zfct%msTNFBF+75Bfr_yBzgN3PndqwJEg!^Obl zS;)bogkZ#fUT;W{B?9{LGXq8QRY4`r*&ho78{}JM0AAUBy&r+05HrT^+GzP}Tf|(_KBSJpx@;KfM6}Y8)@&+*c9v4PGdl9E%6m7_g@WN zO=MqA<&3j6$IxIYNd`9%Hn>MQR^>H7y`2b9Z(UrM^t=n9t~n3qFI44p15O;Yqhi-vE6pi?sR%`F~7V7-IPH zjz4}Bu;JkhbS3qWXzVGQzQBm*3z4{o2{M|FVqnG-)^^T|hHOi6QUPjPoPkt#ywSM? zW%Q1clE+d`P+@W1NmSQJFTv)y>qoW>v<1329vUoI_#!JdG(;)dSF4@IjDWvHoGHgB zAUZ%~r(di|)Acz?#i4LG@;!N)9N&w}9M{Vgx!4n8F`k_U0ksETv~W2iBR;s)w_aAg z<(i1*LGg9XU-50^k3xYHl`vM)N))+2;qY41Y@=i|6ze&A;H$eAz(v`y_qo1}+9oVv2{v=}Pz(k3a{@cY8!H!Bi~eR2$9xs>sq(cVgPMa9eh z&<53`=-e+u0=PmcX#v@HxQi4~At`WHvsdB-e@orSX3TA3`<^8DEri-2a`bcxM>4 z2?&tQ1=m&}U)ljl|0`;MrX6Dy+cyyNKI=bV8wp=9Of~Ut0a3m!CU8Iq;?1Hwi#6#e zFd3NP8Y}v%8P`Q#H8k32Ku{jA`9M@^=`fomk!?#=+d1G5D=FzK!IksqYGnq{vw{GZ z=lp80IpFJ`B=hU$2Fi3&l+CYjpY0)|!AI%q|N7=zkum`48-4QANA}2sjCP)UsM%>g zwvlUN(X|c)3+<82-m`;~F`u;;*gO6m8;Qa(feXG;nN}(2TnOrCm9|m{hBkjL0|%z< zYoGRODmxwi%;MFEAFzv=nuO?($^yz;oL>d_o4}om^s=twD-vqbeCRiqQAoVdo#}X%2aA)Gq1FSvqOG_7WYP92Fjy^prLL#lkBR zK?PU~1T)Mk@9T(wiycxrK<+plS~dL;zvXqRM+R)okxpoE8VJsi?p+LnDE!5}$gD;p zN}lzzVp1M(K?w0hr(5T*%_D3II=+N+W-F&5zybb>3=f>2fooZ|ZG8V8)wXkR;W3%r zf8tEh?>-Ey+>d(a8 zyD6fpS4#I@vWHts5eO?+O6i<%$~q@e-0W5YZ`|!@(V;r@=IeVt5bZJRMhfp*y<&A4 zNCDS)x6{aY2?Q$*V%YQiE8M-S8eNR+mxT&jbuj9{z9x3bnB;7V&u5d^x)Lam?4k(X z;Lliz1YBMMJrOV9s+xm1^S^>=CXBINVeLqLgyhw&H(7EhoMQroiK?ClP1_%i^eNFdQdeL5DVY!@F+N z_|)ei%wM-;FjCuIRRVP#+)JPc7*rXbFMxK}jqBiJ{0<<`Zx`xP&UZCQcVxX74)Ia( zW-Jh7Ge8T8iKAK!V<)Y&is2k9n4LWeqh87Z{bT?@MPKjS4g8pg@awG?(u9U|ghdVk zAXID|B|f`H_{aMPlJmZ{89+aT|4RlouOP(ilKk%Aoj7oQZmk}@ZEm<>@q8e6C!A@O zBx@f<{)7E$=Oj66PfYjTwtizIn=K;Tiax>^|8h5R`ghG)xYVBG992 z{F1l&(o7gk(>L~rZNj3gE+A*QV<`uCYky$i)d5v`5vF4K<3?^l+QQYB@QBn7`j~X~JXr2O)^~(VIeHyF=SKOSH5;cnyP@j%+MGN{Y>kpcDLH)~& z!WA2Yj_I8*@}Ek+z$AcM#*dP)RmHbSaIokyYjJ@?%Hjcf?`9X`Q1N~NCxs@l~ zzxDtsh-)CxScTl&2>)Z1Ua>5M;}d?AnF=*ezu%whJxvP42K0!jfk@hSz8_VvXH+q% zl34Z!dTdE-ei=u?4(GynIcaZZAkT|6ff0=qCOUPet7Afe>nOT2yabEW9wXfQ{q?;p zek3(Fb-#s(!c#`R%Rjaf(^PRa2-&9`X8-%(I8IubjQi0CcYrsnd`yZA=>G)=TLY({ z+v>xujLpz)F(6y$8rdwlsjILrs2vaZrf<|&CZ51~>R9sm<;}I{7Yr`{EHcJQ&O4yk zKA+3d0L}?>(yHMEJt-A+ouFOqCzl)Jj&V_Mp_c1wxzixK*tx+?)rd~sHH2KqyILdF zf;X>z2IQ8PyLP9TowLX3=}VV?G)?l#83d93C6bz-@)9#nw;u$1aWe$!E$W0WhHq}k zkcP!WSy0)?Em}hIv?$xql+h1|A69mu%m8T3uk0ZupsX zIWzZIv3}zny`xsTt5gFtET9uH z%)_$)nHD;iNbZ(=wRFGQs@TgYkSS!W8U=#(1KE`Lv$86-WX-PxS5365B(ODh=p<~? z+uLbbH2W`GbsTBJUZSPns1z?Ht=LtzO7>k;1SW3M8o#x#u5*iBFf0PQQ)L3E6eh%b zoT)QOp8Xp0nART42(3BR($4)-nQL-Zoiz-)!XsE+58^(XELas4DZ7 zJOElci)iBda24)Y(;Jq4i#Utp=_eR4*p-%?m6Tmu5Fx)6T2Q@1gdChjqn))2YWgnL zf`FI}tkRaxWCyrL0`xZiL3cy*bnUS-o-1l9Dpd6`Z zsTi_lJ`Cv&>WTMcFw=NtaUDW>wH^KrCXX7lKq7SYhc=}C{(5kkzf+ZynPzsQIweAG zY3YTzATVJznErzzlisMuIeaiV@Al=dptV(LUl2oe5B;h}`b|vm*&Luf`pAK2VFjQu z9P5c38oI^l)jG=`AK484Sc>#sS12T2C4)x{1|P!?f}T*Enc4w2H6WMFAe?)Go+h*^FMP+kz9eViXV=zC z0iUV9jYcjB>?Jwl)EaPefE9})77^tk`U* zAXBu_WpBK?qdsZrR#Z17Y)9IlqoG-V`cbJ9A0Uwm&H{9KZhNY`iTuo<;4G1S1HT?x zX#%OM)HC3&t98A-S71A67qu)3Et&4W8FH7gDwg1}b!ne;D;KE=v=ja_V(L?`&&11B z4adjOcDK>hezvtgx>_q5jq6rgHIE}{*?Nt!|4*d|ZcKfWie zY_Y%8dr5Dxe`9_y_~K%6AkVgh8W-+l+^zk$^0(&Utq?D<`ufK=uiS&<~)imV{{#0U!)Is!OsN5-V+Uaqg zZDTMao;5L_vqQQ~gCP!UDX%+C2 zf?wGmTKVlKaG#ZZ&5>-R1VmdwBuXozQh~J3PtcFxldl%P6Z1b~#`ISz3GYnugW+-v z%%)f1&flv7gAGOD$+-` z(fk!#$Q0=iLqlAH)K%KzG5MGWP!>wF4{3z zcp0%s(mEDfF*U)l?ErB>04I8?X52E&d((rOD~X9BS(V)l{eN?>qg8yG_0mmw^l-X( z9B|ilRm9l=DirOFpdv4ff2DVMG3*N$TW-8V;7^P&b{lWIsj_JHJQj+Mc1YkI zV#^B6aU66Fdy9~9aj|Cj)(+|S1ML4T3k^?pUS6$68~XZ@3y&@(ld|!&clP2FVm)Sm zw=dY`6Y2;brC6&n*+xahuC`HixT`X^7^D;g`?#U0q2Yx5=+84FIm_zgaN$cAA;#{8 z@xOuV7cS&0oOa!T3Fad6IXf0EwP`IS=Be!`=kHBmk`l$s(5S6N|9G)SrhEO?3s7;l zF_}JXdwFA}3Bpc4?SOG5awm@rg{lVmUtn1&3N1&lXL7QJw02cG=oL@%P^^im+ZHpolm? zFC@e27rq}sPkOuyvv6+QU7^QLv>~MQpsU9ocJJw&wr}VmzNqqSlU!IU7O;GzyPZ~U zrP)oW@et(0Zf?HB1q;5;w9(*u_#*Hl9I@@`3w-v0n$Ay1;|~)z`HI6KX5eAN4XlK} zY%vGWV5ulh{jvhiksV>9_>9#=jFcy5QGWvu6kg7HVTsf)eVyNH4LT-s6Ns?=7J^0k z1@6TdFgrSoNT;pdjUi%goU&q9{Snys1UnHq3SoDjD6K>-I8zD%UG&fQz!qNDD+e+y2fyB#TIG^rX z@GgXN|IyHU5jQ0_*)L>2}_dvppjCu(i8-|5W~Pdh+EeRgEX zTHVJxpA+(0oMQIC6-e<}Q9XQI|8oQ*ttCu>RX>Y-{J0=f-rPn+IbT>)cM zvcSGx()4Db_h^zLAF?JdG7yvD#-hF`AC-ih@l`Pscf5&7JXUqNhaq$E;0jOJ9*S>}6i96H?$#)VRfz1)D^QPI)B2jkU_Q5gIeR}kEJ%r9xO8662}(&P zMtS+E+)Z4a(zL;efk&zW>d(tH!O0tzl*Kd-vsA+Y&Uc$u>b5b6>zMWeVf?GTzx^vi>XE3-qg2hstflukZ zH67b{DT(R5dxX$NR5LEju~hSJ(d|#keuw))@6+SPUbJ;30fk-;!WfsXbPX=+>h>aq zO^E52t+#Ybxc}Y7M{SsIEmlr%*PT- zfWN9Ugm>*Qp*q+4q_-pps)YrORYGvJr#&ro!M?xu<3xEe0-3G;ZL)Z|y_qty;V7dg z5p-WaDTy%lioVIN7k{9y=UBaTt?B=Jjvs?k5;GF(5PRHx)RU3hn8;+Bu?`Sl#3N!0 z!_iv~;C^K`ne-!22R7c3=Jp=VQ<=U@Tu_-_@7yClpIz*mF^TC?+MtY-E@^h?;z1PH zXkd~K8b{QLq+ip-QY|eHM0g~4xwBPCNhhJ3gsm{!7XnH@!YnB#<%SupnjO?em}Z`b zszg?nd35@)IkKS@j!BHFD_E_rCRoi@(1mbzfE-~ezODHK{f8swTnp7GVvk7Wdtbcw zlcIO)p%OruIxIK~bs8vFg&`n;JYiwijsNpER0^k)f|Si{A-q8LNY;E+y`w{7wCTL2 zzl5ZIV9(P=TW){#Gx^fni4g6V_Hj#V9gmxSDTNM@MpNMH`DU(D)8YeZlwqeI4-NdK zNG7vAV6q-MaR+mINl}>MUly|>!=ZIy?oY(0ZSG?dR+v6%EI8ACs_||)E4X1!Gedjk zFLus$jf4&~ozDMq!jaP4_m!^ph^+aW!+I!!NWV6re_Ba6A7{OX#;x+hbgy27!q$7uU)Pj;dE>kl zldr3BXe%euAzI`d5q_k4H$$mhQicQ)SgonS=s?i9!97THLT;RZ6SZvlM`ottHFwuq zso9vc1%JAMepo%elO;@hyie{)DE-N90;;#)!^2H-jZoq^=KdCpp9rF?cUBrJnF&!BIk`()%{O{1Y^P^?^lTxrC(kl@bi_nP5)NN2nsu%N1C6#dx>nHoD zcA>4Z{7vUN_m_ZA6h8B2G>=#ZszR{qB@-6r6g*3K!JaTFEtJ3ZJ~3x{{8m=8nWX_T zq~t$&cw{lH1B5{W_)!-kZA_Eny%#b@wU*mIwCx=EI=9CUJZ|h3N`*v<`d?0H>1N7s zhD5u4M*ba-HHU1Vh&UKFVTuOS#a%ej)@(P5BV) zk495(i*Wx}oFC~J3G4K=28`+dHmO{}ZC{w7zhQ|7#e3B+aE#srVAUB+WHBrkc(xN8 zHLVXTU+P=NS)17rcgirb8FAn?g+Xhel4nQN8_;y;C~9XeuwMOSx8DQz7)>t0gu0Rr zqGR+a%~(Dr;lCS2%-ZNEDRvV{G7!Wq+aq2m`UiQuRtE~e^@z?kQpP@DkL8Wo5vY;R zr1(Xf_g2lqMz9aL*WF-2}&xMHTpgqG3D|LI6y0j$IxBKu;*c`(ugl1;~qtgWq*XWN=#`9znnyPe-E1Ipkbk@0)A4F)QmKZWm8ZEG7ynzDEg+es z;&;69R<>k2L>5=D%059@5A8=7lfdNmBiV}(YAZ57F)}tFe8@N^NP>Eb(Z6fr(C_Qo zkmB>`rM8Iz&#r@He=isLb!x%w(|{g#3o}Y9W^poie)EsPMvHz-z!bBnR<4)*%vf|P ziTA&ht$*meQ*pZY^j!IVXU-b3w1||F=(c<-;pbKKaX#^IlEjA~q8Bop+uU&zFGz%`u<9(49H`L+i;+57o7!jt_)49jRl1 zIz1=rhz$O3S}r^qvC-YRxDPM>Td?O;?bdcKy$|Q?UfdgS=-4-My8~qhuZ8guT?#4Z z2(!Rt@bPH`S$Fs;vI_9m-pdns=d}2-gy+`n(trRaVV9TUYhQ=e}>jGpieg|f5L=L5;K@5-!&c~%eeT3pQr-pkMvsoM0)maLHYM98Do zUX636OwIM~x3S100tMl9>OS4IPoAZZ4ej7>w4|w5$iLf%;d#Hu~Fi!i}GVe0n98nc3bMeYvf7 z1LBxE!9j-A22r}7k}r^|r*v&*H<@UCb`6NDh7aRvVv&^acda+q*h?$&9(@E%?G!fy zfA2zH8~if@d|hIT}``fORwYPM@@rrxHw@8B80%c2mu4l8^K{Kalk!L#9r6+4b$@ zP^u~jt}nRl>6u>$b*W!S9WA*AQLE_m+}SMcvPUN2U~qyc@aKPljdowuu1r+n>cU1$ zt`9h8&ry6m)aANul4U_@B+oQSyrOW*Nu=hQhDpn2jOgZ6xVJ17{MS{v@tq&&xJ!UK z>aJ9j-QMQ9vJIbla1kR#W$E|7r~7QhAv_SZJ>t6`d|WJ3w7vV;a>~$pa{j8ighm;u zeiBfP$RlN7K{w<_Iomf7!1m4z9N`P<{_~-~&+cJ1`CdCRs9@YIGR*LrfIo48dE(xa zk{Y9pBapWaPe5vr6fIavpp8BRDrJW>!NJTn33-N>-X522?iSxZtSejLjLu?8?3R8r zW0v(0(PWl0T6^x+4B<<W}+5x)B(dfvUw9Vx6Jj< z3nr}r)kVmL%V+}k+VH-maH8I2hsvuyu}ExC9Z#lF79%<&PA5Ah zKb22GGJhu|IT$^e$>SFsYx)B#+9o7pxrn_~+KY$qq@3;0Wd_Gng?9Y6W@Zrw-aGr{ zbsAeq8K;X@MRl?NBJvWW{h=$+k=xVRPmTVzPoyr2KZu2qQa}o-+`?&%L|EH#D;#~U z)MR9v)bf`KwaY?67_Bk2Wb67(u=angV8Agi4Jfd=z`4Oa`oF^i#Rq~3t&WcchNAf< zgY1ciO7RP_r|c5`S`hKEr{5TmH_Atu`3sz%c>G{7I<0zeZNB15zF+tz&%t4`*FVSL zC#@A-HIGLu6hlgK!PFS}HsU)x*=jTYM?-uQv;*X*TgOZC@nPv;&m&uLMl~WJld_4h~7XgI9?0}JGdr`P|(8h1!=$M;9-DRr?H89%b6%Z z_sQ?hb}utW$ML%5+bW>=vO5hErliXGenoIjh3;dS<4r4mvwr4;j;U}KddEkDtRKLg z6M3h&YhLH*ks5}6`N`ZeG!iI@habQH5*sN-TVIRu{YAwRm+J>cGdb3Kfat?7oV6b5 zw&YRF9$%Ckjs*F>yg#vE#B`J@Cmn7fXd18LdQ@+xMq=i z8j-vN+3Wq%?{xF2GUjbaEFy~6x!WttJmGEexM`fmKSAPR8GRs4&ZnEeQ;XBnP8QEM zmlp{>kZ@|%w%F#qG2Ld#vy@8#YX%;yC7>y73nF^rI{1}?N)=26E$03HmfRr4T7L~acNvP55Us)s#aH5c(d=UGP z0J7lqcs0LMB-!Nqom%!tt3m-6Z*9862~!s*&Ip5Ik`$taPF?DT zbfb~>oGj+0-UTl?y#tyCl9ukT$jF@4)?C$=Ca2|Qqh!1D&qs5a`|AwJOXc~5m3at4 z(M1nT$#(nS{eFfuen~1?z+R%@DOMJxixR2r_!*g|DN3*d?+jMG8Nw*bHX)^I8a#h5 zrLpi%IX7My&yqZepe4lPr_*n*Uq1F)w_RhJhR8X36gJ7(Z@hl**s98W`70W17zJpi zWSV$IYXv~8tN#5E*UufcrR8)KF1%u!c_QboCbl(v6vH+~Q?jX2v{4p0u1Xe}a^RDT z^Y;Z@rWwVR34TSe#`Nn)v!yx(B_-X!l}^g4s$vROH%!dTeZcz`X#_bcHnV@RubzZ1 ziC!qb)_r@I7L(RD@&?=;>~-36#A_C*w0)3(VIcK$F+ZJ~H~|FUbw_*o|A2Ogzm+BG zdZsd&yqV2E@ELohhb-_x-oNPQk`|Vf$VY$k1f&VE1`5pWhXKS z^;KS^f19oQK2o#iOCT96`52{L)OYej0Pt&1sFq13R$8%rkYcul ztTUW&B8~PR`o=x%lv96D0XT{-M^Kr)LBiegxBkf-QdYq+sFl!>H}{?P2ORQW704Rz zAyJN-+*ETNMVOpafJ6Njlp40~+>MT=-7j^RTcsb+dZtvPoBr363zPynjp9WopJml& zHVJFN_IFz-ILrk|&std<%~YsFiMRWRm;>ra$9rXw4t74tbtEQtA2-BQ;V7BT7L;|J zht*I_9LX`1AsLlN>#Gza`l-EQkS|7fqTtf%+A=5pJ92ez*>9`NfPpjD8I+B_5pK2{&q{!~m#`ts`I*N! zck#Bkr32)R2t4tKD*|tR5N-@ymB02724G|&IlS^^v2xpx`J3l&vJWt0vSV8>O#Lk0 z<+5tEq#w=}3V-hceG+Onfj6d)mHvN7$PJW&ss;{Axs zmEOcaVAv)5IqUrjysM#V1!iR-wJU8VoDG#HQOl|;9<=t&H}dmtU$IQCay^qz{K=mC z|F8tn9D`}zmW$*Mjvthx^lwTM*F&vvMw|#ag{h6AsXnf!v5wTJ%*g>%gJsP6kr`{O zHKvSIfpVEzXP86$vY~%EoodGWZG0I@H2*L_wD!5+Wdexg1 zp`{5j_+RtjwdVfI3R8{eOIMY{gpVrPP=ui%=vqK)>{pK;0orN}5GD+U@vw*99yDGM zLbQ;l%!dh6_0pni7%=zuRS7e*LMS$6HD`$!gz8<1bYSyUZogLa9xqb`$FEgX&2B&M z@H5Bn;{-F9PeNERtoBak*^`XPZ%46Tp1s3VlP@b5tGuBu8eWEpl&ywwN+OaPh5n^! zOANVViw5cj>)4SjLu=aQfn&KT1*K;R=Dlr{ns$_lO{jAjxg|v+X=B(geTvC}kIrKZ zOjecp6{Lv4XrnT*1hN(!QVs8P{pbH~Hv$>)XTgsS5If!*aLe1NgWBIXqAgCOj~@P6 zB!#|G2lXxNC@Sy-MYfv8fdy`O!5$_T1W=h>Iyqbk@#C!@aer3o!>h)G>GQuX32Xux z>kpJlJH_5A76{ebvF0y`qe)+rVZfn-bFv#UjS4>+L^t#N!bv1GGkuOUFjDgJ1f0#O zFl47##Mmdl6-%m<2pDO=&d|Ig9GO!h8&4tHsLRH^uPrd^En)t~6(2q@!(i{{;95EJ zpq&PsKJ>#vqnm{Kv(RZ(A)9kD?2GG94r3I*0917Jb&Bl{y`*qGl;hnxH}3nPVWmm-8{>4Gl7OUp z?f*eYYeXJ3dSu!#ldJwu+_)*fDZ~^H48yinF=P+2#q&oaOF2))%v_mZWz#v@%TK0e ze4fthAw|ya1mNcuISv8w??Gbu0_%S~sX?Rd~EBDIKQfA^OP3=G&IzB83Ilu9< z4oZ9>ADvQtWfu<;>KiZBwjALSym{$&RpkQ6Lf2HPzu4eTf8b&FAeu#LLq%Cyyi&E9 z#a^Q0=~5$#J&mcB#GoMm`XQ9OSh7mDQ_}KpKvKc{$Y(4LxtTPeiJ_!a97#apqrGZv zSwt?|R_zD=kt6Tu_eX=926=^3T#83@dIXKur=WaR<*%Ky425FkXo$DDB!aPE;=@YN zw9Zh?;(W$+1tuxIU8xUeQJk9FPxiN{ra7Ri5cBAy;g>|ye(V%Sc_7&(} zkADN!L4}kaMLy7`w(oe){_dE^W4I~FbV|q6kt$b8Lv;f-0N>gq9lfE6^VVbqyoDh zp@2SChqr!H2?gLA|I_yFcAL~C@O>6>OePuUnEV4idEEix15!K4NMTzU7g^h(+gK0I z@jdr0NN>*J=V8$Rys++u=cLt?7j+$@PzEz0z)MUjLyy+y^+y?(dc!GeqVbTUpuMfX zqq1UuOJ5cTa!YM?n13vh&%rMf6!w1LOE{^sCF#26voZN3r)45!Z)#e9nuiaDndkj< z$Hy|815P?9Eg%C42_~j@X)U8yrRy`bAr@g^$~0r96-PcV9xr<( z2i1K`TYp`-5CGG9Z{uj)GAN3CG-r$5<|Ii=RWc}x@bxWelEp}~LeZ}ANjpFnYR8!5 zVW-f}mb`t)v7jmy(5A!sP7z0fLJA^pF5$0)l_24-r=gA^%5`caYd zD|x=*y2Un{k`RwkE$?N3Zen1!N1{w9l1~5@q_h|>OMd;=&thk7o0;#ym_?VC1%n@NDB9=ix*>~xuzK8rwGF?u|kl)IT(L)j>+#ab#(bEvC*7OKfqwp<|l8! zm{@ln+nxgWq+D!J*M4O#({|1x)WB#Igx=>KVN4$4wK7e$#KB{f!>lg4JIo0k$*AZZ zp7So+v}}is$I-5%+z z$J9EdnS9;2NhmJ9uZa_>+u?DEjXIjY4K{PpPA)F(&{j|ggCYZB!<31h9_!KaH8zg) zd(V-(z@?pA)Vhp;wJ_jas>0Zuhdfto{2(&&RGz0iYq0*yRu`kCk#`V@Rn5!zhSy770LNdNiF2s|I>^TRY8 zQdZS)Pyd(5iiZ}`o}(*AJ^ZlIMNC8`$X&PIgE($cEe!i?JIGcR0OJf}YGnA`szY=53j^}NtisG!a?IC!!z4a6XQ9>RY?Rmwlo(=GDN@zZhDE2l|!|p`5 zpH@k1Bb-^y3ctm!LdxS)*s+31{XI%JSu?m6W;;N|!Ps136Y3!$?#!H#s`Kxyo;T{> zC3!SmAb8z2}UXsJR z|1llS0#NpNN@flDk9_WFeTgYxx3A&mVdty+gUOYj)*iah1XCd|WXnElJ>26Ra~uQFSrvM-b>|C2eA_jOPEeY}{Ji_*4FU+6`(a4DSPNPu5 zXT!fToG$^l9WFF)-(vhugV&hnaAC8jb;3`3k~>Flo3>$q=;2nN(?LwW9^iPNp`D2d zV}j+QZg3J(wqn+a%V6P{<7c3&LugRMRzyogX@q5&kC$Y=?xjPgk@@xN_W zNZh4t0k(G_2ihIukofkeFR7LHNzn5_hgPTtht^O4372;apHdV0+7irIm?QAoM5_zD z3=m&ml!b{eq}A;BbRvMq!^ht-;fSlcSR(!nheLnZ=iEl`_LG$p&vFwBT8Q3q>2xId zr1lC7^UXr68hK2D<$(t>6Ja&99@YJVJD%r z7l5o;hy(pI-|v=s2XhlG0q?)U?`{#;Nt`F=FJ%4~F!?YINL0Xk8~f|~Oi_1jF{<*H zu)_r;lQjKr7$o;<6gI=Rqy9O5ArDk^I{~{N3(NH2Jc4 zO~K}1zRlzw*|Ngh{YJZKA&#Zh#Uh!XCCPz@n~CPLOKSOS90oQ$B@~9IsztS0Kt}+e zX%N@n0DJvFE}rR~r&LKI(6z$e2W)0=ABZ^bsyJ;-NSMTrTvXi}y{l+)-n=hV63`fF z;rhw0qQv`k1S-Y^mbQsp>;}qc#k7nz>C-aFv(CYD8h=&TG(Q)#?JE@HNB?Uw&d3=% zt$1Pq+=Uj+n9n}1jJI&fojs#I!q%-seO2}#mS%9xtsp9}o#VPp;4Q;p+-&1m*kc*S z;ki%b256Z6X>lLi>}(<(_0bRag=m#+Aa4!L7294PIHrJwzR#zt_N<7?JysMM}afeS2+(t)aQ`$Z1k0r%UuxE_a89 zc|$CvT$iEem&NiO6FUh~;zhh}OK(|UeQVYE(DGh<`6eN|*54XB-G*T+dZXPE9{tXd z9(RVq=Fw5xyB|3Gd$1-i^#1l5vAPo4+PrnAxkJMOGe_?6iBAKylflJ#4^a?1s%8(L z48DoLhmK*{-e9@`PTf9`$x;vfu+znZZK8#=M`B{%{Zsus+l|r7+!@Is3hV{kT=Y%0 z>>7#Y3H*Yh)e18r55Gg!^kq9?D^;rSvVca8K^(!pm|027EV zsW`X>$TuRbx)Y&p{+Rg6F(|q#(q|TW0D5haNraKA=-PG9YR%@dgu{YSTZ5J@jJg-F zyDVZL4ZTJlZ=+;(=~RrOu}Dm9A7I%Zf&v(}lX5{mlmc0<9hj7oJe|yQVh5E`_(S3c z_@&yg;5|%I@|p!HDe|Gs<=_3maaA>$JIVD8$6WIppntP?q9Y!WaL{3pY<;2|_FQ(B zjl~7-^5DQXA^l(-c+_>xk8}^bpz`n#@f!0|!?kbqHT)=b)t|duh^;BDq;S~#Mw$iG z8Nbz9$#*lF@bk|p32)4%Idru))K^*)6={`rqHMW3A9t4e2Gn~*Y_HGGme#lW4Lf3M zO#FXry=7QcUDPftND9*3jdXWOBi$X6TbfNbqQs^}xuJhyY zmus&z*O+6Dyzen5>Z5Ve)fWt~rrkCcT5wtd7Tu=}ljKkz}O}o%g=z?F$v1AD+xR6OP_H z^@pmz9e#EA9W+F$QelKBB~e*bWU=Ok9}gHju$)w|YDST<%5?fNOl*|;hcuG)Gu8dv zs=#Gqc0^P$Qb}A|`4bdRKGF~>JLQ96)J!YuxBC1FU}1{44uC?!5y$s6+>|?U8o=xj zC6K!^;sV#!8CA!zZ4M(09>9X)AQ`fip#W|t$ih0uIAvJc&VmK`NR(n0`FlwgNv@dTTBmRg3~APf->pDO0OOVQ4^%QiSP_IzS&)ZRAFKFbR96uwOF)m_=kcX{JSx%*b8b8;Ii`VIaksbq6CDkbwOwx3k#3A`LvLM&D-MEz&qUBeYv@;8cwB#M*%yfwLvaymsD!KP)D)SP5Z`32YMQsO^5fs@H!Qu zc&F0Jf* z#amYzlc)T!<=e&e%Y{0Nb4xmPBF(sOj94h>GT5o%GM%Y6cY5WM)@ggvCH2u0un3-G zU!sa;(w&GFQoR{hZxM`zN0n8`qe{h$gUC(JmNP6aSenUM8XlC#tZwrC6ywJKzRFzS zu4^R5aBPO{kV0H6@cuKCGg!Y*7U-#s>tf0)025CD3W?wgcelNzeTbTa2y66LUg zvgr;0oWO4y9Y>JvM3{mGhhUjYnH{ba^TX!Zzn~ff2vDUFk%!s$ z^;aI4-8o}+fRzzAXD7w3dt}aB`~z}+D}MRRHZoR?zreuT)Xw{QMQuh}_F3~~2b6py zeM8%KzGr0{@eNnL}>8Z>OADN}SFo4-)f*nO5 zOSxT>_vXHZXMCa`s`fb!`g6p++3-5hJ_iP@d6INkLnZYKhg)JJsB|R}^x(Y}3Eja5 z(dr>ZcV3|~Y-A_QO9ZXC5Jpw(MJYR?yk5}WT>EwUn)#N2%`J30rDq2>#y|VK)gQv9 zdmlQI$d4~;29(jsEFkKXTw`}mx&VZP;pbo;hlIfngzMD7Qg+50j+Z0dt1*i?CF!!x z!9XISAPWnixdXtZ{{d`Ttf+M8+}A9fCAR+X(N1q9ixyetjsEdqFs#a=GehB4ffbo1 zf%Xx>e^wV}LHwfyA4gw=s?KrY0{5hNU1XSVO#K7-Ml&|MW(sl=dBpUN6H|$;1!bj{ zL+#->*QZuLNR*~XZ@0$SjdaoV(F!DwGHnSQAO40> zQ){zBzKtCxj_-pOBA`UE?U!`tsKd=|!|>VjhOZ-aFO?UTZ$Us{Sv^s*&uN%0!M} zLQ3_?mg%|ro_3Z}OI-C*gS2#WP=46Q@%OyEpLAi%bdH$acB%4_$}8PI=Ay#H07b0r z4*f7`Y%kE_>-EEOJS-?Y$|gC;FvnG!lVgm0ap`lz$MTU z*#R{HQ5p;K)Z?W2cra{p=>KJxn6nO;?*IP+?GQBD>jGX&8U8l7UJZ10X#ml-5UP;- zxqcs%Sj6+_`bkycksul4>P+nHFK0fgV>I|4=o&^juM=TF`fazD|EmIx&5XI*Ig$YW zO8!58^#&rVI{CJKbkib@_qf1+W9-qnd|m%~=CPHZ3^hg%1XqCz!g^DGRrG5D=^#lw zNWN;=$|w1U$vP>-C~g))*;*@^GF-E)MS&Kz3{<7${kEWbX>&TS_n^M9SmT#nUGKAN zOn0g0MKiy%Ytvz+#-Y)!jHX`rUwVo%{07NkX9kfGck;);#!nZzx=!Axj z{WCEiVHp3GhR6`3%cGNE8)4UKo^PmS<7w}fl}CZsLg_6wka26Boc`kFc7y*?u2BQW zOSzvUXMzG`dQY&A^NXgJyQj9Cyjx3NVierRjI1pvM$M@AxXh;4ZhX)Vwfw@U3~d9V z^V!eZkIyPNndrY}C)dO8`W2~ZJg&YcN^DnsjPCv?{EfZS^`gn3*9jfe^`6bkY_0Lx z=n!>b(gyPvJHNHsC&9IU`g3LjS@43;TUl&UoNhQXo}i3$`G zGPuf<-`m|IYhrZHq;C#$^Q{qn)%08}ZzuHMjw6g)E39Et`(guunhi=oHWmB(B9XIM&p0_SZidLKwYz&?C!a z*4epwC=}Go)H;H5ta^j>$Tq{agjC!P+?LPGd>s!%+j~ct6GcD{Wd6%lUU~pJO zzDug;N=TVkS*C#3c4~mk{9YfO6aMm-#y6nL!c*3(+0%^$VdY|SsfmZmk5jbE;@Z;bBm!R28eU&RyobIQ* z`i?K1`r=A-SYKRJEY)i%y`VraM7E1=#4%bT-Tj}S{~R#tmG*^SN1?aevQ>tWY;9f} zfiodq3bird7dA5zc2a-vlao+cSW->tm$Kfw#0=OyV#1O>TEr;ygnK;cQ4uNd4yIYE zC-TloUt;44TXQQ;smmxcp-!2R$v;E3f{f=s*$*Qd zbQPx%GRQ}^594#N74uwr?JL=va9-XIOIo>}bk0wpg>~Z*Tf;`?j`Xo=S-eW>Rvib9 z+kM@Abl?n%z>5fhLYJ8)h#dLS{q#L4kvBH%t5ZsQDlHitK8d-lzo=a@ ziZ9mJ1hyS--4v#!@(drGyT{?UyPb1@0q!{i9LGe|QSQ8hc^?9#(cTE9ZvPnE1@PK{ zUJCMPWP*NgHnnao`MVJAur+TY!n%xa1`aojb4x_u7vul8qyHZa-$fb<#6iJbg*qty zWUB00^Wu7WUGT>I@G*l-a0UE!KO2VWBam6LdA~F2`k})gXi7P*q}E9tv{~1!!JJJ6pq{=JH(?O^-4L9EZfby%0@K! zIenK|#Z&WmZ_dPNiv^^59T-rA0)thae?kWsND~0&h^>%ScpTgiV1l5oVPEneN1{|Ly z$;Cfce^~rP%5AGQ*+6kyWAtp>}-@9M1_@;@09=jZwa|qhE3ky>^Ft+M`XEXbhSTx+>9Q;OWVUdoEZ>zted} zs6#iHrLf~=N@T0*PVY?L`6HX9o5SsdJ#ZPUh(qfI;t!tX&U$JMh-^Wi)f#4zb;Kh0 zJ?#g*%vBxn^t~ zx@20?McRTxI@n}}t5>}<*Ox*ZXrj$Tn+|8=x{7C#zSmLz)%~Wa#-+se$jAQ3HrEX; zu-S<`{F<_%n~r$AxcXKd2T=ZmQp1KL!l<9x9-~E`HdBYIUw0MYsiRpdcnP+^mta`gaXE@ zs}s02=e8tyXys`jjxOj++q57qR0g|P8|a5^pwArX-e&j)jI}lSM`@{VtS@9V)ZlQC zhWYl^cA?H6tI)Y+Edl^YMH7!?kHwmb#ph5LxZPI`=K z{>0tTmg^cB1bN{kU}NkrLQU=Y${F&5u%-fs!N z28m36dhSSk4W9<4)#5MQOjTgOz*@_n9X*!xv4Jt*J8AByl7#nua+s(t4ZBtD-0eC-++CQO(To z<=E-n&cLbmWtYM37U|vn`DtQqA-jK-iW~`o{I0>!@R$h5={fEJuGhzBt$daM*+|<` zmjMbSy0+2|I_Eiqztp-M@luL*UMC@WeSnuON?(t0fk|EISoHDi;13be)j_Jc30+TB zsI4g4l{107b}w{vKp8Y$2Q5KD5{uZ2kZS#em%Ax=pUm-^Y28yiIG0nC_+A93V(E26 zc#E7mRwWn_lOeY+j22MIm-Tqx23~rshRL}m8(V=X(8FU}5fkql#i)ESoo*eSv|&M1 z?1~$3@V{{uABEh<62qw1PNWoL2#Bgn03Mssv5@m@Y_^U=>HVt&Lt!(syP{PgA}`Xe zKgZ_j@2He^9c2hyg*DS*>;Ua7_AAd1j#ED>V+zz{I@9X$IHMlu9pSKJDfrh@cvnH+ zA+UGFHxa^Pi<9wk(uGevFO3BSBL==zOkvlKK++ug+!gyeBBKB#21vD9lEsf%rI7>Y ze`nY{;tAf5UEx=)Q-MYMjb9L=NjwjOYamy9Tr!Xk(lQdr7&i$#+Usrf1|9lglxBzD zvj4X9le90KPvs)4=|@b2*_+&T7U8w7R}K)?)bulZ2i*C%p%=6UswG@$x7>0o#=ZXN zx2-!{d1>NxxB*cS`-ZE?o#@S5@B1*$I|9TTU1kjqC9NR7wbjmkmZFdC#dan8eWa|` z9x!pcDA}$v>vugy^Vh`8o-jL+dNTaVNVXd++HvP$UrS6AR=Pr`=~MZa1`CqCPt(G9 z5P6-bue+s?o{eE#d7x5fO32}@g%3VX$Qf*u(0?_gHKBn5udH^nzVK;}NrcA>%<}Vc zgxf}SEEoJaUp1=##|^H#WxZS?>hP`o3N(Y&>a0mOR-)Q0GT=9BNw!gWz9iU9Bc#V9 zZ#6sZ^fS@-Ra|2KwS}>Wwv~#}1vUB6n_0&k13-@8q%|)Q;->awA|+vqorH4Om#J#d z!t)J@VBe_tE@c|`R8`pgu~eRUnt2B?zK8}G+rwgyqcJmHj|4hy8od`(@Gthz5 zK5zT)ATBML^CTNetl?BsZAfEs4)yc(k=mhiA&g!1K=3yZLiCoT!EvHCs zis{UT8{^4t_u;=fT_DK9fAlxzzd+aV5pb4W5Ndb<+lPOyBrSK&qQRGgG{`2{JgTOp zS((Xrugs+Rcda)zvFJ?G&_blt#E_P>IhYIomd$6yCtP(lS-uAd zEx|*q9v*yBi6t@ayUEttZKo(rvt?>_8-L2mOgeuLCE~k%q#v=h5q3ZwnmXxXQLNX5 zMsZTCMq9W3z&oV#!`K8p6_g)nicqRTbad&Dwr_<*? z@9#hlFq|NaS$~=>!dA}@cw~rl$jB4rLnAS~VO(DRxRPf6X0Ith@gNq2(J zN_tq8mUAk77La%;HDA?3>4sQz+COcg1EQs=gfd70tR*?HzmkQGJNhu6hcqm@Mo56mIe zi}N#+*>wyjsp^H6!p(1< zxTa=XMVfMagmZWtm1nMAt|NQjbUSCu@q-*mGszRx0{u_EGQxMg}R zK;$@58o-A=y8Ir-2u+<}e-WHgOsnLF`JZgR3H!B-SVd?9#8!GuPJe?6jp zAPzt>j{7j5HbAmQg*&Q5ZORnnO@$p;(toU~y2y{ED4Gr!_vwDJHywjxnL9sX%%N=) zwAm;PMGN-8{mig_;CYn_Ne7vzHF@Cf4G^U{ww#|JreHu&Mten zA(j502~!Fdl`u^s|K}&a%V^_wj)C;{yvq>{ zUsxc05}?TjC(hkcO;a}uIHx21aGIKF&#{0-IO{YO2MZ(mHdjKwq%-PA`Et5vJb;YY z=$fZ_)-0j$OwrIn5De7v%rTBjzW~Oa!7d8zXm7%;pn>Mw>=nG3P-v0}rva74yW$wi z<+gEdW`ZIBAajQoApHqFCP&hP&}C>_j$;Y&H#yrU3nPFb*}ycFg{KQa7j}jxpD_JI$>?~P;{f|t-u5}$8&}7hXZb@%cGWJI3v53$SHt0=Y)xC zR1Zn4CJ2wX$4-~?v#u7=zs5V{C}jGYT3QYhT9bRG|J6LAd&B&fl)m|_=g@(!Py8Gi za|uS^UU6B?f*l1f<>qIk=d+m3^ID6L9_JtnEvb zL<%sdf<8vZ8D3!_=kH%T`z1ZwsvOb_pxgaiO7wEZk-Jv*y{H>;l7*A;YBIqJO?VJ7 zTe0*S>(*XcsN@GT7Ze+Vy3A-TFJy8$%7O|UOSdIl_ZBA`?d`X z)Nt`idU~m#J)ZZQgc$)GDS+)0(~vofpPqTgQOFNfsYUHzWGt{ka~+6yMo7jchZNV| zBLLSRg{GNhGRyd*djT;rEp;8!zSUL8QQUwWZ2K4ltIovW1q13%;-f}*Y=xOJkvkjv zwi$M2Q`X_-+;~IhTPkMV5K1stBqOe?j)KA#> z>;6fUSh8;hh<|(WW(m{=i?8XcG&g`aQAaN@|2U4Ab zVab$H`co*>>Nr-qW@^Qcg-B(i$w3Nmf7SB7l=uP*~xnX|q3K5^@^r z5S!{czfcf44<^jZ;}1YZ6WvU)(V03bzzI#qkfBul^*c5^_PHm&=AEMFzwG6W=_zHoOk!~F1fq7C9<%UyKJ4~=3J7#-$Tp>(;`f`+}^@6q^%&|*N#h0^D#26d<0Gbg(6h3^o0^Sul1* zr46Qc=*T6#tLZt=!>fA&g@-@%bdr|LQf{=D$*{PG?^xdc0$+fN=e)r;D8w?$6-&H5rVkx!`lARZGs!9b;-WZ$2`l8ukUtvtmpTN zI*aBU;@R$H6l{4~#aivl{^T6Mm9DmiElP`Aw#_VQycOhCYVuuA=CUr}m`o&Qz%FOq zl9-%&nTtcDc8#M&WRz)aMqq#ELB`<=*Po`eZ;U0fx*+^HEpoR&)Fr|834tuz4Yd*+ z@}E?{>PN*wu|I3oD1Hc$_<(I6K5eNMIQk>14q2E(EOXIb2Q^~Q_d5G0$7IO`p#rwB z{`ot~geRNIz2DN>>7~*WakO_7_uPWG23_0pR!`2mpgV7az>2{`?bb);$OIwLZN-+J zif&)t=Hmj4V=i($+1;FWW>}zoxf93**)og{hz4?(c~RiF0+f1ly2z^gnYYH zN}nsfd+%o@jT9Gzp<>AHk3EJ_c)@}|qj6$xwZ$sJ8tS3hm$QG`fPL=ZoDmAwzvzG0 zLL%CDM-n8x+DUE<`a?$0mHhk5h2^b*qCG+Cgep z#oG;DWLHBw^;E(be-^ad{xovSYCrW1dJy??i&l4w6Pb~9J<1QTL#hmfo{!z!eKF>s zRsN}~tJl&4VPt;3t~w0kFL?M5WBL5a&U*|Kew!FKkB^scO>rhFq2E5#4yjoisCd~; zix{bFlem-}bAcu1yPUE*a|qv6Y~l9dtZcA8PqMF&rDcC-XU5kx;Jd0u{2UxB^rLFJ zEAGy_>%F|*EyvT`^JM0LaMheh=Nw%f_%6VF!go_r&)!6ST0C68Q~UlMWovVUF;bcF z{Ewn}pCc$S?$z$tdHQ9aJHijLexgU|0-uWA!;$9F+wINcpi+f)Blqrq=Axq2?KSS} z=Y`3h@7xIB5h^q~2-{Zoc|S8CjXQ&Ei@Ip8F9AT+5_X6%?HF9;*z9>Q@X7p;w|;B3 zl?uAH1+oV1S@?HOdU`Ld^IWT^wLYV&wYdz&)j?p47RM zSKD<)2OQuihKE*CTj?2nuO+{y8{>=ls+|=K znl4kgng7=ZS=6DdCuQ0+VOTn9hb7!K-3`B&8Agv>_zCEMf@LIDQo7gWnBgv}nu>}G z+FQ3&aweM{9wg;n>nO+V$3suwG?6<h66Wx3{Jo0|>nlj56Y)>Y$ufIO|a4tsyd6~wxe_26AAK>fs zAw1l4zkBY%ANAvQv%exaBa!ms#AUOD?KDmAT2$tN^w^u67;YpA0rRMqrqUioOngr6)lxCS{;e)F##}-UE8O0WDQM4m#-)Y-kde?HX0U8>B zT;+6~!9v%j29kvqwT$aek$cHl5dMa*nx0-|!G%I*EbB*4fnnP9*C@S=Ug6OyvqH=d zh=2X$)?*xo|M?Y?7<<(MM`vXL!~11~S_U`P)V)6UwV@J&uP4f(`3fYjr-8WN>FAB) zM+`e`JrWXp=WhN{%2y*yWsu(wO(U$VRwJt%^4|F|N@Kk$KsVe_mfzt6apD<_C2jhq z#J$>+`!3HXZejEzalueN-`>W@@oht#3ry^`^N-yjLPFPOz>G$W~nit}RR|qjR#-MiH-_T^a*jLwzfYjJ8 zy*~p=R{^x?0ojFxy@PWCAkBdw^_!gJMWA?zanbS^<#BkvuCgTMHG^aIizwrJz%&5B zIW8bn*C>RxqoTgl;0ef?G8@KKxB=$W1k89UVD~b=>b#3V2*1!NkRC==a;P}q(QmrM zf)C3uv70pQk9R5$@f+S-o2z6UdLk0pHS7+Lo87=aFRquh;d93oh@9She0E!JYy2?T zpCb0HcAHs@d%3;ihul#!?FYFEvIaQQ_?OPq$Jd1>+|0kD0ru-j1srBKPToU24-vza zRh5m8%qKT1BdtpYa&^`{RtzP!qPEs*OY}AIswJ`pMW0sNt)~msnN+bjSD_@|hxQ5> zGH9wdXRc!diZktQ`S|LnD1$JDh%iXacmHbfQuTXp8~XRjmdKu)`RQw4&Z z?Xz?VH`+svcfCrP^v7Y$(5f1Nv8*}yeT)$=cj{7#SrNaRXCX$`wZ6?`H?+D3e&IAX zSS0S1PFkn3^`+tznFU|enAz1nFQ?QKT-rD#H#XM=jib?;I6c)IM>|Vbs7{*n-l2)o zDa&cgX0|MZ4z|4s4{y50ZbL1qr=_C)c@-*=bZ7j3Jl3*jwW5oRnT~xU>xgx%rq9HT zD=Lv=yGEjGKzGZ&OCgon144Dlbd~0#(`vgvx};q$*q!*5HVWC}{-%}q{2Fu(7I2Xs>*u9vqCdVEmLZuyU1@Tb=;OJ<6BHsI3U2%~ zdSM$icgb}KPHW5tt!>Ek52^{L69)7oJ@V>#6Z?64H4941=vGM+(NJKUfTbj^73up@ z!>aslQ|QWkXjVptxCd5*ysu)s7Xq)EmI_`OuTN3*3?ZrE>Udhozx31}KMeoIjVkBX z{g!-BZf3tngy^QX&ZQ<;el`U6P)eh*5W0s_!i}oST z=(8s!d`~aoJiD)J(OwEn#LcZ5f7)2<^z>rztA4(9Fl$^?UT5pk`K#_MG==l5slH5; zwsCWdGk#Ys=2gJyRYbX{m!Y?{1ocykH_qTb33Bho@QqXW?A1%l*>A*C{}AWfjBI0> z8aUowNSRAO6EI~84}MK3Om zLFrSrMb1VXl+(5d%i#PWo|X@~D9Q2G1l`4{&A9Xw_`$n?x0t>sX`&Xm?`T$ait|$P ztNr_7>dokxPqLERm;C>t^m)(%WN0d2*0+adA z7!UOYN}|B!>E>PF<9wnuL&g){(Vm)#nKWQ1;X7rD9LbWRbRZW!UD;XZ0;F-eNJaKPSj8R0!sa|<~QS<;!KDc zZ>0IuOp;(=%HO`1q&ZGY*Jm@({nhfhN<@OpfVq!8v$c+Q240Sv zn6dan)=tZa+GFrP-CP9cjB;Kl)U}dT>M`_}We${t(p9YB5SiTnc4o<`UO8P|=C!FZ zTOvjlfx?aFYbX2t?X`Ui?bbibxCGI@j|je+VePButUJ4uZei#_FQV82prH2hws_cE z%5ykX4mXz3pgjFJxoj;HdrJ3ZmuA5S3_}tZlr*V~u3qsSyhI0l6{NEDybS*zoABDz zJ2ZA{kNCl1Cx2e+ZZ?O1FoWx`_t~ClH0_IYQ@;!dcw!*p)1F=5(y}skB*Vhqd2YaZ zxAZ5Qk5T^vNw51ww76O zLYf=$t8BetKeT>D#DBCi)%B#qu}{Q|X?XYU`@1g^qUtSlxFCZ~JGzU3<-`8rf<{F> zTN4s;Y|zU;kb2~TN$*+Pb@DQA|7H4U}t*%+nJcrPcbyuu4O(iB~RD4`%P() z6pk!6D-|!(lsNF0V_{u|rX+apY@1{f1FaduIR2nr6~iURi$Yd5vIQB~DSZpk8}x5R z7#h65wYIPLS1-H#Kl%(yRRvuLd~i}w*ZlW`m+tJgJ~H;V`e!qs{%U;0iA<{lKt6}8 zb}ZsI0I$pESxEAHdM0__vZr6@0_HGahJ1)8&42Z)&&Y(N20O(LyDzT~D#xs0mmYZU ztoP1oT&eB*3FhcV4H$&pbU`0!z53Ay4BzOHA|Mn<_c)x`UK*%4&nZ^M8O?XGK6yO6<0)lflYMY z)%NA5c**o16EVd)ETjwN*!ZpZoQXHAQ!#Y>fx}BXm8*qB1<6KBU0w+@7$URtKcWof z*k@O0QooG4kl4!b`O8Nvxh?#{!C~-1Y&++}==!St38hFGAEU`S%V*%-j+?cAL0Q@H zq{1sJ6^;fmm-L-ZpLdqgfW}C3bQ3N}HQt7?JEcM+jF!%bDVBMnInaH|1zC|%Dr#VF z!gP|)n{^Aim$B)`HWN>DeFKrt-fE$$U<-j8rV*`C?@eeL3n9Dor4og3$vgWVdbfik z5-*%BE&Yzo5}vb_-b1{qEB0NGLDwX)dE#%^_r_DDbgswV)(0Qu^?U{%>NUpfifk`7 zoBjm$!W-m~D2ERWC zBddjYD(qgF!gXA+Psf@==Qi!s>C$tM6aBCcU2!(L5qF%pBzy%uKbWfK%=z^`B*%G- zJP2JSc_fJkP3A-2f_Il zGolN)S63~#M`vom#MOOLr8ExyU_;D zl+`3_x7Dq)B@~xEHeT0gjue6CCj3sYZB|~ZK?B6!H$GbK4cz<#VU6;~xaJ<25I@GD zbX6VI@hF37uuWd8g-iXEsQOc2=bhd;t^PI?hwo0bt;6BsQ2_65L~4rkscs^sb~jJqg8F+{8GMAc8fmtobJCi|%UiFr<7} z7iLV^aQw^afLbUA9Ur_>R#euzv}~la3mJ2M$&7fOkM8En*v?4~3ek0W@tY}ENW9L~ z#&cXn%+_^joxzib35G?Nk!csDX@TzMHX$Z;ie9TJVCkzo?FZjXF4(^w1=q(qo0Wc%(qBWlSg<%2 z(J{QoyGdj7Tf+XCM{DXK3%w~E9XX{=H+m8NJU-j^;Lak|PA0V4=u8!UVCfY}f>=6M zZrxeVYfZrBG&gh!W7%Rzabd_f3dx@+UIR;{d;eQa3wT6zPs8O(;~T2wldakzL=EjS z%ykcg+F-d8Whk-yJJETXD}#qbKg&{;nCYh(mRWGGaVlXr6a$E7p-Cxw=v$WaZ?*61 ziI@M_UkbCGe_vSH&`Ghh20V*!D_B~L-5x4tOY6_fkq9;-81x#bG+TJBraNLgal|(H z32W5Sn!2MB>)y+}rj_UR*b96XnP}jQnRMt$iZ%H1bK)A6iKwh2Ps7WZG&$U$(}|cB zMS8CGX3Km0;MB7l`Cn$e`jnsuG;tb<($>_6MiMreGDpo6uYew%t)XR?VK%M#7%eIk z%xGL7gOZ4#x5>AarYNWTE} z62oW?qrM*osk}f)Ij`4;ai>9#X4Cp`w>*YF86Nn5RGBHf#-tRK6?Yj<=tx2IDB+U(3$TVsI)$gMa%t;)ORkn@`=_Cx*U#V#uly z?LZ8M_y;*;EA5-1pSj)4^JFNPD#Ycyrip*wL^EN3gyGSOCOrBH1w9(q6nLwG$UJ?a1o$f>_Tmow)$M%zvxlW(JKJ!_4j(>AC^Zp zMnZp0UcN6N=J3~JA)S{N0#@S!VChO(6~G=dq9MTqo%iaudh49OIAG&|TzG_f7{~DW zy}z|H*@cQrFuxf>nz+j?e2>aW8Z%DWQgEfT(%#j*DvS@O!Ash2SsjW(qX>i4xcGSb z55Ti(v9Pc{trE@z_UNq04DrviOf3J3VL`z}A9#ylVyaHRa=tXlgCY5|If32+*BR8W z%q={Eh^VB`R3u^&N(I2G==Mg_)UXhdw-g$j_kVBts2FIc&WseHpI%$9t9+RYY z*41B&b{~K%sj3!Z2H7oF$GIp-+MXyPG0-*Mw9js13Q>+h_*{<#1%2k<4KdOx$wk`J z;}nx4v+U3bJP!JxN#vf?G+T@H&Y_m7B#H z>(JYdt)d)cNM)oS^A6i6xKDxm#PUG5E$^{A0nza@L+!$fokO>jsu zZhX2YNl2^AFm4ETUzNMU`754MxO31#PZ(~-KSqwda^9i^K%M*aFJ(k4c#o2)aVuEv z#STfs&(7iSOeoMX{xRTw^A~q)zZ`>1M*&BtA2d9Mi|2_LpSc zy9*5LNRC1KnYQ>px_{6IV?@gW2Z5sQx7)$*t(bPTz0%Mw2|R8}gO}&K=M>Y5JyzT+ zYAg8@?NqkwjOAth9@}sbV3n?g@j04W)bWl2pWuVk^k-j8Wlg21~!+FLi#!~TaMobKFrC8%kIiE9w^bkr}^Dp}~%LRDA>Vk5mK zbWDr9(~WRxT^z zEuHAAJjji+y5E-eqX&ILA?gwTc~3bD-lt?8TH==uNV2t9>r+QM>@MWpp#&A)xnx}5 z%U%lCg&Al(RwIt*x7NMgHM6v3e5G#&U}_`6dy*Qfd>&nauml4ipYHVG6G>OSn|7+k zVv5#wqPW=!KMe|lcBnk$#N_oW55mMFaZS=Q0+s~<+NuHoTdz5@C5EiOz$JQw&_o}+ z*>*VdfiP+9JekB?SdAUR3u7V-7?BcEv0eTWH4Ut&bwF4W>gg`74`KzTotIk!VR3!G zwX|a^=FV^1$VzUOdNEbH0M$70z8v9+1S}dbkr2C&^@JD)6lWOrq?s-rp5A0gRHzA- z#d}JA?9^h21No1S_4^-hDo|WlylKgX;GpEurS7-I0P>1{k4)rUfB#N=3!Fn+sM#;F ztjMr&(vhh#ZcDlv~P&?EvRpJvM{kYy)6W=!Gs0sd3oF8#eT+sZt zj_n??yz4;U+_13&$3I!teCo${^I zu*e=8bXOpQP@o2!8~^q+cz2^`;~hhvWF*dJ7!6IF}K5whn|} zqr%n&;_j- ztyqyjBl6xPAw)cfeUgCcX24E=6Atk9$#`KL*A_?f6`_;zvYMLlo7%lTTgN>*_bZR? z=Ue+1f+o6-#3J4dbuY*UsoI*gOYfeYbiZ*De9NeLvF8x^r{%asPhsErmeWS|1UUFH zId26j?T}zouuYHgpCd?2qu_F2bp#HXN3xr*MOSUI7Ieoy(-QlQvAJkR1waT;!#G@a z&o;V3JBQQh)c$^o1TFKd8m3B)$i(cS8;j#Y#Ag_|D7iV&S|@ikbVXpUl_W~tDYh><pT;9^-DGb(C%uHgEriIK1N;G66$@qoU!mlAo(3C zmToAuef<{D{P{G>)sYyBU}}L9I@B|<7-CQ^nvQlIp~Hw09nA09i09{JU-@+VfInAG z>F5P0e!}rm9YZKP+g4wc)^gN;@4eX%$i2|t+~OZWANqRR~jZ2RoC?s8``)qV8UHq{ z4ja@L#w-wjp`CpFllMtGkmJY3ttz7<)2zrCO3+Qiw{3n`AQSbbW%|*V@=L9KY6Q}Z z{}v&027d8`X~7Cn&!ZT|9y*u!_uh8NCs=-@pwhqnI>qhmk*99}Gp7VzkuTy`UcKiZ zqW=nyZg||BP;MtHxTxe5JUyH82LGLVvLa?m=}7hE3~-yf9{6VUjLJip?b{$`Y4k%r za!+opNb=*O=n{3S zVQ2>F6m)0->8`uSbI)_n{mXcs`M$l^T6@L2-o3t!DT_;dls&4!7okc+`^Gu}|6oGAX}U-{Jg9-Z(<&7Ew~-Qw3QI%rHU-Qgq9UjZ!R) zSi9PAFTv)mC#?y*nKZdDi6mD4D|!YzsZD72NeFuy4}3`pLY}$Om!RDhXM6fa`^%-* zaaFAC$6d4_@Q306g*svp5i!t+lHdXCqyK%mqHTq;Tg3XQ2l{25YaygR16x|EGZ=9t z!Z#ERjdM?y86aetUCWN`kIS(ShLzlJiZw6{hPPm2EX6RzpYj4rx@?5$qn^0y0P=2m zSkfwUk7&4}ar)-8dClcQz-5zsxw!poqgZ?Y-g4l1Y=bk&&B;meqxLw629r9l6A7xP zR`5K^GF8u=g$i%(?f~>d5r2XjQ5WVUvRU# z@e@2|!YD+wSOB})7GqIT$Hk@h= zl${-o4&jC`eVCiFcv-8GZnCpCslsH~9AKi1L`_dXa?=auK9hy$J41r5{gF%je@W^n zY%@=?-x%jLE&Z~GHTpgd#~C@7&e7c?a!RL)e`g3Taq2o@y$l^+XxokC6Z;ts@BIe^ z+*f`_^m|xQ%=Vn=bLN6>LY*5=-zDLxCeGniCz0k5erC!A!CtBtYkwl!7|O8H@nSJ(13d`G2+eD*n#buh$DrC|JFI ziq}*8eJ+q4lnuRitA!6P5n^6y8le+{M)gh_;yg?A8g4KlCmUZRg7*b&Y08Q;3>j8Q zp2mFV;|P|t6d&I0(RtUxvF|tJki0u(ru~XgD-2?sp}_B2;}#dxp+je*lZ`9$Ov)}} zlQ3QPDns(tAHoc*`*T{%_}6ob^lxu3;rrcv7WjoMdeP4>9XSLfH!0=5{@P**wcz zc<+5+$gWa_Hglf8o_ru|MV_HmrdF$FIn)alC8CjFE~uGw2$%O@`~u37{Cd0sksHU5erZ-vXFB+xivTX$k6Px z4)^V1&7_o6nT+=8(i#G~oCUNI@7MH7xgk zx6RI4Ubd3GeO!?K)H(vamtGV*8&M-m<+tL4+*zazgHTk3cTTX&I50@f`B$gokMKys zA2XHWVq6$Gcheq@V}3}LTI}@99y|s|=HmJct3Q2+9#4?>s z?;g0s96lQ>EDFKCS;ZZ$>YP^+D#iTdh_(k^lMd+>N87>@e3At<|N(ceG zQ_xQvM@t3gPHp`FUnhxc+18*MRGR{m+ioON=DL_@#OZ9+miP$WYJTktRaJrhiSbXG zKzDu*aRi-#vPz;oVE!Mi!BsD%n$v&jwI&hRbmqS-qpDcd*S8t%lU5WB8nGwx+(~QX zW-5jp_&Uw6LK&IbtHj*G}Yi+)m5V&@a&P{b;0>4`~1^wn~Ts}P^bq6XPJM_ zNbI*kIL}2p0*T_=<_(surkCBmEZf2JNvQMhd;x<~zdhj58`ByDegVTO8IGRL0;5OUx^t#Z$?4nMhWI3Z0+X=)t&)(@Bqgh3Alp4=rGHH!Vr^KSQu;Dtr} zn~$}QtKS}-Dlwqy@#VBLJhC}xrJ>p+7S2ixpL>2@j{iXdU2?+3A>!L#gV#zuK~gbht;rWc($9PS_L0-`+cII`nrw#TY78 z6{1UVKXJ^!id^|9Ss!L2AYE|ent3MutlTw`gDI~EQ;TN*j`w)avRyx;a@Sc*B1(z@sy2#-1~KDnNKAXI;{~2{Q=Zw1`%hAX zV5$wuO%>(-&-oAd=$1U!yKLj1_7YESBH}+-iAh-(W z^d;bsa2M*+GBK43Vx;ZaKU$y|gEcGk0%wy1%f#`?r8J3#T@LMbY^WN|+ukP=IWdc8 zV>A0*Ts}V~Vestt?q|?f>;IkEih0jEU{(WQgC32bXrGE7DO1N~p;(iU#Q>f`% zu!hH&w8DMDi~NaUfwyUqJ-P%r(+c9-P9S7Oq`RP?rz+DBL3+m-lvSyc*D7DW&vg87 z_+ZXXEDwh}gkeA`IyWe?7_OFsN6r@ftt#uN{)r7xf=s5_Zy#68 z0Bz7^iF%RIol`F7*e>!%0%P1K=0=J0_QW!zQtV3k9*-y8S zy4<~sPb>Vku~Ar-QOIGO-D$CnZm!AQ8yoZUOksK6@A?ZbR_~#`yr2U!q zNWTk6KG?f()_Sb0SZ(3B2a@J~lInXUBHwW)x|25>_8gGueiC`)zfi5%m`qw0WYW(d zwkT~9on8oFYyZD#8s-G3Vkf}9N8T5cMm5jM(%UFM<5u~#wS2tbZ6~+@csM@ zzjKS=ye_(LTF&tOaw`|4DCIaQ3o{DO3(L75cq?gyeD^XjlO zn{)EH;6sCkqpDo)tjC zqWpTsB5L4`EBoS0AJ(m4pN@euJA4qVo53q|Ap1+%{Kv@%^RkbWU4HLS!d-<4MO@_Rc+~TI$e(09lgXDocr0c5x?pM7esRP|@(y&j|DcG?;9H&qA zhqse&*Jv2~YKenfm=I*v-LLq7(l*A5|3_)sh{EzYwqeMuCqv}eT2(}+ht-R{6e#rM zerRPD!{z1OkDJ6X)3twie*dpz+LVSAexfZJ3ceUq%7-%U8W@?c&S~OqD`ROl^sF{- z%P)t|EG}e5VG{%qhxLU>j`ZyhZxyydUb=5&V9sF#5C?OX2`jnnsDT|CBMq&Hn)e5K zBgfJF`^J`g=K&ye#2fu{xcTA?B}+#?>T1bs0(nC^<4oXR=JnSzumQf}9j4?$pcuzy zyEm}e78u%aW`!7m0YYgWhR^834>HoBBn~Z7WP0u2bZ-DE?IoeNKEy{ZH+8R(=)q;w zxY_4jLOH~+Lv&L9JYsS%#+V~BsjVDiW1Vv=WO3~XKJ-TNXhF1E)YN#X4a877L>`0N!A{VFZAK?kHIpE`h17h=1=#y3Q!$OQR_@6Zlbu7`ShS8}rjmW; zlyM~yk;Hw>IlJBeDgx*2j&gNxkTxu_kgzEH_y~m<6~!5u;SnPJwEGtn;@^b=stsuO z4VT&m+>>l({9+E5iUc13bjw&kG z&`u`$I~f*IVXH{?IfaCD_Cbj5rsI_x3$a@k??SD95LQcCBK!{n(8N9-IWG6{Xt_9c zb=Ku_-r&wX2@9>kUS3W)^X&VfrnmQtlfo%V=jS>=tQWVxSejeX0KHY=EsrAZLC++c z(ZBgns35>n7gW;tUI4LViRt|l%M==n(b9@J>jtdStK( zk>GzA(=g!aV%Fcp4G0x}nTrW%)Tc*PXJb7C@{b1+h3#7(y41YcrkA%r4mf`ea*R)) zV=})h?*#8pBRxIg0r=*-^JQdr#yzI$7&TYlsxpX79(I=A1gU4 z8UUG^m>Al{KO_2KcbBM6CQUkd{-ZgaSe@!Z18iE7 zX&1dMP+!6wFvxLuc(?|sEiO6tOH9a_FA@FG-rn6lM?rQU%q#P7*vD1C!W{f6|CRbMy0S{4=y-G`H*M10U4hH9Q3UgM>4* zTAlFy1(Zo#8(XS^yqR&;Ar(w2D&@uax&!fkd5fIqc7oJ)8TLfNT}WTsl@LDF2^qHS zZ&ng0y<&MM!@%UFV_F_}QboY8bf?x}7>mh|*_oi>Rezj!-htV7OpGq6t)il0#1iF6 z%vVy|(esi~#FAH4Y)6TkUe|9nt%QhAsdqj)+hk4E;Yy!6QDj1ac5h+!pUcg@U=H99 zeaZv`t6GY5nr$$1ubCs)AV4=;1sZ0RxmqIYX3S`G*NCPFM2+V;U8%NFnrqQxb zkJ&%We|pG`66({*cI1#y7RHjB)p znHAr!phYWn7ts0p7PX-Bu0S5^fOn$ha($3<1C9u2)BZb{ss;!;QCJ6mj?&_OKG^ee zHRf2za}B^{m+=w@z7O(X0R16%IEqZ3bH*!>nt$$q*H+x;_`&szZN}x*Ax#bF1~d6u z{1a8%xe^eS!51h-RQCPot?iD*KDXE#|3n_ZMDP&+8z``_?lq$h|CmB;H!J(ym?uV0 z)PFy3Noy3O07&y#SpBK!HJzl^wd5f)#cz;T5doO?f1dv76T2*|-hD$8bGD01K<0^C zv(nU~d}V{KTzQ9C`v_+34-DdRh;XkC$WmeTxH6a5)M|=lyDQ^5^jC@-D~=7A4E>tk z*T3#9i5|G}fLV5~Oc-!g)&nUVm^@Zh1K}*C|Lb&jq-7@<^VB`eQzP_WrrAF~RSx{& zAn>CW|9zmtP%2DR4A3_C_rx^Z4QM?bts8c7FH#Ryrmnj``ZU5eE4@LG)xy{+9=*6e zkc(NH@jtn2p|^hL=Mc^ZrHJ3aP2vEPgQ(;Vup`YdO-P>Dz3B%vDWdB=#Z2v?%8)Y1 zcpRttbzV_%xXkO#g{!djGo8H4=CA%j*pCaN#q3#`b}%RLY=3~43^@b%2xK7j$m-@n z<*ixu9>fBIBWR|>wLgH`r35O8_tPDR#vb}w@T=`)H%OIYYEUs*9OPj?QM~P!?*Vni zwVX@SeWMwyT%#2e$?&KJ6f_VOhILB+Rz8S!`WeFBi^W3RF`oWpt^-5Owe&t6f^kFne909rruCO(63ox(}d>}<83NR#!OC6^@tyYuP75BJq`ubvfZ`vz3Ri02|=@r8d=NIzmbkWJpb4SU})NSB5S#rt2!q0 zc!){p4`yt0I3j8U9Vgi_M)S}F0Zv`0REwZmb{MzuSIj*Q&Bwspp%aux+oC=erv~5* ze(H30I`Fb6yw6by}b<MT3UdS^uOPhn%_85nB=Iy*Z4Kfo-UQ zldn(*Oqgim)u8wsmFZQ_vu(CANU9So$p#d9fSnDezK7`n0&WawLH2_`$a0B71Oy9y;g!k7cd+#jVCIX zf%)S0mv7u7gvTEhcnofl=-3AUBl7x&d4T`f7w~|DtgH&*6xhzVE$nzqU1|wbR4Yxr zr#nwEN1&<$815%>zzX_ka#Fp&47(t>hknzV;5k^EYBQ>q0fqhr#j>cDre+@46)4{o zF`_9MMmvo+Y%Vt`0HhM5=PHc-e@ZFhuC3V1WoS~MEqyj>O?W)&wB?@&oX~gyrcIg3 zW1^X4qbcOFQ2uW{dN7+=pK*SM8Lt8bAeMbjjC>tRwvHt(Pv(|Z6bpQA6k(?&+r1Lo z`pV8-TXi5i(?|p!31tkv{h*PdIP=9i67-u}wHS~yfbO;jj&1)zyi1fZ&wDr=BOf{y zb^Za8zLQY4a2a*$n~|DROIeO*z$F3GYq|$aZ!iRxg0wI_slup%6Qiyp4Mc#5N3uAB z&xzC`puj;*!~Z>JzRizeyVGLjzV&hT`Hab*-M+}v0Wp%5o=b4bF~Qmy1SeZmj#L#! zN^|w97%BP8qMc>{TOieLl_CWW4CMcPSb*g`r#d^PPQss<3C|li?ZF;f?!jgFiU~!o zT)?NN*VqnoDnU5JJhxub4m5gY7YU0Q`Tv9+U!44pshLLpTh`AS@ozVWU$Pie>NeAa zjU8=yO?uidhLRZ8K&`ktz}pU}UPMiR3-?DwLn9tzOm1sx7-L$qkEm(0Bp+}~xL%3^ zgvWS241MtMKMc01&Lb1X3YV$V)bzzQk<45YcH0Jy8vqp0*I^h_(AWP2Hn}xhr~Ge| zqiAkMk5qBCGq+fM;}%U;AX*;`>;_f;)zK;cqxG3VwpHa^Ae6Q;zSd}h=EG{=$+o0j zTZ<7JQ9K*)XDEbZfFV$3Utgcbzr7X+i)p^;tFD|WRc*rL<5T~Z7Q9+9-%@zS+T zSi9nD3ikTm#GSK16RFG(15UfD3 z#-}W_`u+1M&E&SBNkjWBEbGj7UoTc;REkOUq3XysR)t;)HzZ?7pk-=r&vnhP07BeP z7Nbr~qdc92O^qF>^Wu103$w*PnuwK4?{3hG?EZNMwn(Id2}FlUqKE0M>Y`d0uSN^L zJ(C)Hw)r(N4p6=@ahzyASNN;vHZ^F7u&>QGxv5AjFZU((qEOx4(KPYN$svP-DrqXL z0CO{eaUUFVaB##2#UdBC&lQ{_A@*!87p$_DYnff(%)4R^>pDk3yG?`mp8wH-H%vju zYSzK$5;Rt;Z`KVk_G~F&4G8JhqfEz|eVu#`@WTu4E7QpKP4&cCa$7*3o)Y$AWXe;* zi1SZJB!hY?+ea=T`f}F`P(JrJV7JhJ0KTd$3S>Exap_yJE#Sa+tqQPzPQGS z@QloZdrm+=Ot(SM%kzyxRO@BGZF~BveyN`SKqV%8W3`nH5d*w}3SeZKG`Y%ZJmrfr z)M8kfS&FF1TsfgtRvFZHA_wlj7aU|L^r!%o%|1-c0-Lv31KLM4GAb5f+Tuw76%n+7 zb&p2vbt^c24BrW9UWOrOenqS>19C4Z$Spom|Jy?!@mQeG)ALj>R!|6L2;n_q+82m6 zK!gK!q_=XxsJ_3{xR4;3?Wim9@mb%<81kRiKw1)?n&7Er@kfgHDC^x~tE60Z5;cT? zy*s^_fJiW_8^oZR*IiHFnYTP1&9FuL<<*x|f_cAZShHcOacgYh_9B?)OuWTBr_p2h zJ?_-&UtNU*r+ZuXirzgPYP_F*5zFLho?;PI(vE1cxgyZ-%*PY7CKq?+xPQQ@Wx)?0KYkoR z4A%5S-FGs*46P#Cslqu_00CMW2J(0ff^CVu;>;7-zHfXELn}{Lq{!i)0tMxOJz!ac zgBMb6Y$@+u?KQ#yI+csn?4dqz~|xo-~;T%KIw=a;iD3n=d*wl7g3W zfgv^$03(*w20TOHc!UDYBNqAq0E_7>X|Il`OEK@v%gSOHu?fs;yuXWcg2)%Cq1pu0 z&B9CFxA3&m*=8PnGevBR7_T=%AzW)|yK1aVdClO!6+AVbiZbWv-MPzD8szWiF~CDr%{Sa(~&7(;;J|8BJeSejJBT^R|Q{^S=)29Cx^JS?($$B0+O48r)Lz( zq>q7>7!{n{CYq3{Be$LL8@33p#$)JOl-UtU=~)Gz58)SEdf*yM%1$3?{)bE55D}f_ zlAv6}lQYx-GFPUy=y3R_7>wL|ufk$U?}4W|auYB_xDYY!yDCO;#sC_5)M4PGyz|0tG@!iFN}g5HX0b^?*TUc>q7jaoQ0;f)Z8xvg3lvIH4)D+wbtu6Bo zm<@2xKK%%;(2jXd&fKSn9Ri;U1I`vS_*hfHKy-4riwP5x?*oj=3l2S-^29$?4Jt20 zpBxVC`kq+H8?auTZPQ1Vk=mKJro37{eK?(H_Q@MB)P7K52isK_e){A2f3>)ugx;Cp z#XfQ8?$ILpDTZ@<*a5Kc0KxX{$AuAvC!gVAzLdCwo$m>!#fXrjsj(_>f7IC;3C>U4 zjvoX9j|8h!THGqq&o89M#PLe#&zCf{V64d|nj1%bEpzMQ8l0#kALsqMEzj0&o2D1g zChqrlVN+VS#N?k9lg18@GoA6gwxlglhNZN4rY;c=f&NZc0}p@^G0uxqa}hanEK|(y zI*-*d=4YSmy0!foxjrRDmO}t0++tPryd9oGUrBP2_V|l9(M_hsa?+=oQv(Vv)Vf!Z z{~Oaz7>ux{elhIu@rXeB^wgWBh?2;q)#YEm*rS(KRHp84g!GMF)2MJN?TOSjfzP8{%h_j zUiWAO4QB+znb&gSeYrS8ci%(=kmwWV~Eq3VN&S{)SUc z&AQkLxoJ8(nQgMq*sG4IfxpZn{tWgPe=UX;aZ|RN!_w1F_p-}XABIJh zM>=n)9$wyn`5*B_WE~LuXEDE&HG$-51h2AWUF7{KKInD-s=$lR0DwB1hc1q@h4@Yh0KV=9< z#fV1~Mc6CZd%4BRPZ)?p2ulVXD`nD-hBe&WN|TI7tqYGY!j59)&@q1;TBWVV(Yn* zRPD*gN2DVbE#Z!y*5pGuzfH?Oa>7!pJY639?}}vQyV66J8hUc`tFR<_yT5Tu>PGi< zBA%7U&Xlqdx6}$pn%Sf%*GRQV(95flVi0bJTmL*`C2}VB`@wYW4okP{Ow_Z5a^tVy z0>$JsHbVt;IkjI?MYLwCGq7w$Q&luy<>t4NzpiTa@y43tNd6Qta@KB%)#d%!Hx8s@ zDaS?qV@taoioLJ8lJx^(*E>6Vv8MS%?VGjeX)N_wzRSWPm)%XzT*|LK$VTR`{OF0r zr77p~Di8gXNLW!WxYyvx4K9yO4-$Z`a*l*GxD_2Ogj3yvB%)E)z#lYneW|}^IUGIm z!ZKj~EtvTLsK7gJzAXK=rO6%QP`1=Jw|PStTU?MUv7?3AP07xh=9-juGVFg{7-MK% zxjV!-74A80CHn@>*6AZSxDTrr^q9>=sm3Mn%=uY+3X4LxI*F#|eQ&|J-BrfX;m-4nNKTisA-85ultas6zCVl7J? zQ9RS<0b$JiRcI9GNo}(vrv&0Wm|$-4;=5DO<10xm@^F{@r3}pTGPpKz)xe)J2)C;1 zrw5C-v>j-*4HUJ)2UCwVgZgA0%4`7Dio>(u+(xPNt;s**Ys zr(n}0Ueo2^)@grb8ig}5>43__$H0xR#l_2gdz{E*G5k4VB+w?E$_?vCroF-4?kEbY z;(CVUN|Gu{WR%MBYy*D!;ppl-45xrgsq${xL7-o4fSRzIlZz;x%+dM+@?6|yo!{HH zIse-Lr2C`UV&MApjw&gGd|F#-K<;$N|JRDYlOMNKO6U6d z+qAOb92Z`9#)Tkulkk`w(Xk3Q^2kn>HNkomx44Mb1NK1kX_tYTe;U09~wf z&*L;}zN3a@FRY#!-3jATg9P~J6zWrtSoyXqMZm&t`+DT(Tp?e&E3q7d7ku2bUP{9( zUL?$wO@jy66;Kzr>%aMQWZ{_x=Bm6h_y}$2|~dBdT}gp-de5{SwAz{@R<8MR}+a} z;V-aj?|3D7-0aQsELtC-sx(->?-853*jH!(-O}uF2IlcU{YbKsSakUbHW%Spq4P+P zABf9+kynw0dLHp8=q7Vkg;3+4CA?Gr=u2Vro)LlM>R`>7!TJr`2FcE=sA=Q6M{^A$ zx}VN2ohe7D5B7&5(1U9?`fOXDlB(Ka@4Krqz67x?+CWg5ZB#?qHy!3ey!f z;;g$v)cSQ_DEzTZ^ZYo$?{qZ+Cw}HHS>&SCR=z4QUDj6eXx>Ar`YOi@gau4@?xG1) zGE;wD0-|%}%(cS&DNVgER~po%0i_o8!FKn$Jk!-2WUkc>Blb=lqA_jof}v+C=<=yr z<=$ztnC+gwOgrWGG6P#aq*FcH9pMHYx9Hr+LI}#~q@j4A%k^wfVDD^R68NYY{&n^W z#bXORPerqx2pK)IhlU;zFKkSa{AV^@?hfWxH|u}XET!@Xz>I-OD}xPrK@w1y5#15kReLh&ZB6EYMTC)g-L6S9Op}tSwzRTy{_c|@53*Bk@ zbGJ&bnNh%%I)Q+Fr`^T!PG}%;1d11X$;>4%xYyqC^NcmoDruAO1@Gowhuz554WoN} zBxGTqm~d3-LrPT`+DwusqUNq6A8cJ7$7kZar79Ht)4ZlyeE5t%hDpTpmL%<0+RTcc z7`j7x(RSh}l=)pgiSOkeKuRn1!K#)-q7F0AMCeGRdz7vkiaUSKz9VBJ4!U3hwS?mqg&tj!i`;?{R zX(JrqsZ!<5pgkIED`=->blK?}UH-u8z;=0*A)n>8N7B4^a2D`cePCjYis(Rji&C>b zR5;9Pm+fb+qxDz3QB&=7d5^frGB}wI1G7t@SFLvunJ>>L z_R>;tvwX`iChbIQT8RFKLhMc~zCxQ!RatZ?8DIjtNuP-euzjD5_fGO^eSkQP1OyGNG-iefobLh?{@K zbt1W~X86$z1=ae2#snRI7W0!sDO=QQ+Tr#;-fh=8MSYetGxb4KHx^fV-Qgs9L=5fN z66H73qzp0&6~m)Jb{JbZl~Tk&EU_r^LP`zEYiKPWKQrHx(6 zH1dWj*y>{G$r;X*3aPOa=W;1X&P~D;%1U@Sd`f z&q>X4lgUPJq6eecOMdK487#V(<7lxw=w{mZ_B4&DK$-B0aGZ@gv?-jgh%#Q7uUA)h z0x*wg$P`kOu^zE&`}=d;w70t5t~?vOxk)#G^tp>|6v-49sc>AmSk7(pZr9IQP`psW z$^2-S!lW%&;bHG^KbIw!Si9?q^yA=07EMIs;}@@a;vX?VnO-M9g8R)k@7$c6Wh5NG|qa5Cz_A(Z%FD13qCD`C? z588?#9CKhBvkL1cGkJ*JwPCu6OfO2Ouu12hugcnftX@TWN0|-o%2(J*sAb0VecF>h zFRZG zybXV{muF0Vv((K92`qYNf!JK_jyF`AVAz+q+veSVm0z|HCb&(;X7NgSqeg2=_Jcmj7i0>wTHTK1jB3kNuxaC+mu;1^9<&Szn}+afr-^TwZDv^7GQAB zx~#o-^a8O$f%w+HZTpLeiE}7eK+JhCuR|5SwDX-$Wp0C>F1?t zO~N6GR#gmP>Rpu?JJHe!hoY8-Vg`u1)309$OvJAqX5P|fMnUme8C~~r4*&j&V6~7K zmlDpE9e(cgSy*sf(vlN}M`j~a+|}FeNqG+8F>A{E{~3=t7wmYbx0EAwZ!?ztE5Bx< zFv)x)Y-$?ytz(mPvq&errox~{+pY z5nFhk>vQ*jBUw6OMa@Gnlir@x_TdmR9Sqb~C`wn7(2JPA(s521eEqP8b+onrg!z*i zLV|rlr&I7vXwOq*k~-J9b_B$6r-mJM=$LMwp}3Pfzx)}xQf*ACfA!l?J%G@bDP2VN zbQnFhPWa}*w(9;BuXV4uCrvI*|A=F^!6BaHhrrxsv-XT2df3KPHTc9~3$yLoN5}3) zY_rbt(}U8$>`475s0T#P8t)6>ZxbSNC2h%-0ZofA`^G7Zktjt7tGBa-XEeu)w~3ki zE1?gO#h+plab}ewLqnB^=s|&dRB)Odo}I&){$akMv1?00TZ;h52VscS$}0C+<22v% z@&KD@;kW20LTM)gBo*Tk{G0<7!C#hHiFVS>-A71^ajyt;uB&(6y~buhU$qM)7bmu@6qDLA>!6+Vl^Id*qtJsH$Hzl|Ia^cp zevuUtIw`@57^=o{e*XHsZJki*-CoiM`2qY<4F@Xw*#nyhj#wVbGX1y(g(h-Kv4+r- zK^2I-c5^@W5OVyRdH_+q(7kkfjvw9sb@b@;KGOToO2@<`OSrR1-v?V&mE>8JNy_{A z7Go>c;0`?p8F<4T#&3rSYGZ?UZx7TeC`QOm<2(~c@%rQutS+r1<%&!>H1#j6f9j^} zu@vy~ExZ!7PpYs}Qa!qNXSt}G=~FB&EsgIZC2gccuWVcyvvFzJ?L6}_XCZ1 zBAm=W*e-jfG{T)8wUhq7#exCSPf+Ep>Xkf+-AnT#w`RvxNY`Zzke*VFy*c3mr~+fs zWgF?Q-v}zqypoE4mzJ(%$DK2w9>kDYASapJud4sszB@Sf?2uc?+N|gAW#*~Ph|l5m z2HyKAldekUXZ*HW_k6G2?`3`9931tV)LCB6dU5 z$Ref7K<;zP$Xl(<=LPJK^Njw_Q`DSv`LT`Qkmp6IcwQyVof|O= zoL>kx`3`xzn6mgrmI^His9(gsK!hI+C7}li`2*bKZL;^opfEWc#`-XHRGcsLiqv+E zP(pi4<&3d=OEV`i|ENbSFQNaXfli`uqF0l<47@Mz?BXff9d{?_Pzcc_$`#}kQGX3< zb|{yAvoO%1utYeqI9gQrS9JXq zpOXc9(ICEjZ&IME?DP^G;y9~JK;~H48rsG+loPIma8ArFCbSKL$@IK7nb;r+7LKS{ zOU>libu4;kxd#8^Wy~G%b}mQ2Zr-fPi1}p(>3=R$-ERbXm$72(7CI=13|94Yxlk;e zk!b#UM>pXCCY9RXcobES>>eg4RSH#J{RZYP`}WM~2j?MrkbS5ykj~8Og(I(2urqHp zcLDtb8#f%nwL`L5T^QvVQX@`2wo!UMyezR+T76w2B7V7~VF8O%mkS`WW!jiw;}iNq zNk@tvjAIDo=!}OXPrF@`*RL&n`{h&kCe!tPR&lyAIid+$*(sStl}~U-gj_$s9;}AOTiB{#*RG4;A51zuA3eAGkH962RdcbGLZ?EH zRj=bJ_nvQ3(tQRoCHGYwy|Q@PlRbBz;$b;s~yI z!T*noTGK(;k3G<~gha<_?i-qnJ=tR6kQFP8<_?Y$GXjb^9FsKL4uk(G3Rr#JLAukh zB8WP#EH}^f3jrqb?9a3N@Wf~LylL)|98Pf}(_y97ac5ZnQ8ja9frjB^eeq(J_T%Ox zw2E0rae16p2)aB_%fQ|Mf1`w(_l2UyeWjdbe!V2gyl5qDM8Y{onLP_J0q3$OC%1{N z!8^?n`KFCNrGhBC*FtsUMfzJ~56T;>zNm;36r#o%bHsEa9?-bpyi#)Rni(OnU1pD+ zN-E|+#W3(f4^x=jb9{-n?{dp)7X*A=f98&GfACt1=i^vy**dLN_O)9->~!7D(3w?} z2FB|8=I;CUHx;vFT1#)`c6=-lf#yLbUx*|c$q-#W)pM&)JNLv{hUjh&-#FgEu4a5^ zdMqk%_FpSoce-}M#w>^l;kwbZDwS>_!vY_S!53}#W(7w~mUd5I3h}YFk9?!fTB+A` z-!PC=tarA7prK@5RQ?q55Cn+eY5E9=^dF+(Dq*ow>P&+e5SSqwV9qNY|B99TcV)!I z!5b(|kt=mqx@&ah)*E-y_n#62o%yQmg7WotQExhJZl9OaR2sFHQ){rvbD#>kqW$$2 zw)ZP+@ZX%iA|}Ses6;@LfM0S)p(gO8;&OkF6IJfatLJ-T@n^tR$1%T;=)J0np5SZz zk46J3b;p@@5FcD(ya``Y+hviWFD;~nDOV&V?`Gi;qRw+=izlp(EVE;zm^jS#tGxhc z`))+pa984+OydZ(u`W_oj}#Y)NXwoH=c$WjYi3Ko2TzZ6+wl!da@Rq`|@pVYcuQkbWPU@2p&XJ@b{aaTdBj z={e!FOD#!H9nl+I0ymc{Iy4Mbu&(bOh0T1aVHrQlsY9|N_BbhUWkb3g&F!v4&Qs= z5j6)2$LIH_3SknW{lP+EL7X2tu6 z+Pku{sVfIqKxTj^s2x3|IXZPO*JZBg4PSX=0qh$M!%^p{#{-z*$xm|F(Pi_cZa7K!9P`}4VA9m)c1g9116WdC6dHCMTkTXrQ{t}vj8K?{I z`lfCMc`g3yN9{wbP_r)Q0v;g8i5Z)5{~m)A}J=;jBfO=}H)>K#%FTyQX_d*7;u0H7MHt z@cHw&QJqV#Q2C{Zu9H}Feoyw2Js2J+4~OtSsVOQ+@Bcq$qmhc<`uh`my0z@TR=*zV z;qZ&=mDca4hFvwbc%DVsNmUJX!jM%v$=a`9;t+a6)K(FKsNUH%Iw{hF%Yv)R90^UU$?YGx@E5%c(@1l97CW_G%vC?JwmhAs1GO?4^S3;u=I( z6(cRCW4ZXOT=CivjkGt}pYfcrhcx>jh0p;p)4T+154!3}0~Jli^I-PE84mYsUya9u zcxS^2npR4~S~CkB%(ByMCjvsY2xO7G)n+zi+UvBy_^ik&%sg1Qrl>y(6JY+3|8s60 zj40jiWhOgA&KAE40TL^%qJm%FLoyrP)+9Z*xnJ;-0i&6jw|Lx7&X3G!9w9G zYO}J8Sd(V81}_!!th0=SAM{ED;?GDEuTZgQ5NV!JScJtv(?t~zH!HK_aBZ7%43i!!BkWStCc4$3ERBOc*Xq*)M?OrCo`GQAdjZFBr=^cM zmI>;X!Wx#_Ea6=y6r&n zf4s*ZX+(O_@LCxmLr$!6>T8a#DaCf=w5{;BZ=Jh25Je@52-%8-V(K{(5XCc=nO#9S z&Ei*9L2-_MPE5bOm}2VqW4Godi?}VBb!`6u6N+B^lFn;KM=`H#$|b)A&B|jush9_` z*3;NGN@nTjarwRfr@60=in4p#6%|2Bx&=vPXoiv$7`mhz1cV`^8wL=h zh7Rcg6v+WW96CiB=?2N61?kT7=fosxChO(@--06J{DOGFzE+9%&7a)|vnrH4~@j&-Y?|0B| zy3)D&M~}n%b($zvGoV#j$huo+UUD05i?M^PGuB^gOowfe_WD^DGzYPU@z8TkKP=n| zA-!HH-cS_wC4oVN`_;E45@BS#wZ*$T4ii+cx;;S=wLlw>i@wk8+&`6{uO?}P{!z~D zdw-R)niv{zs}Y4FS^xrKwp-O7jL7`3v&BF4@6hw}HygT;*SVJ4y-|OUhD7h51nb3{ zdnpxwI)=&!I=*0-+Wc(BpYhxZH~$D%D1(luyw-q;q~I!6N-5;xaTsTY`ILAqK^fo{ z?upM{ZwjhJjVb4zXYxo~>0Lcx9_GkmzVPfcjK+>l$`9UspG?Wm_TZL4KlbMKb0S1s zo--vMqStcneCta$+l(VGN}_m_FsK51qMS?E_>)~B<+0Q0nMMk|68u}5ytd)PbXHI~ zFk{L3xs1x%)^Hq7jbav1HDooVXz}6=B*b`_1=IiuO)WYiCNulWoIx4W8pOU5$-{6B z2~8^^B_XrSbyd-hf2ha|>J2bPFzcnkmB1PsENhij z^o1nZQ^;{4IUiZ{jU?H7Fr&+4Sp}PKbWm42)xZ!{EQl^$oO;NyU>Z5t#;(JMEI8w8 z4t4NT|Dna7>>!~?utvea|B*JUU?KIw=aq+u;<-e@U8?7$B9?tJe>}qzj6V?vY$G^0 zp;d-tar`ID*IK=tEKPv@@%cH$Ud!$EVCk+sS@KllIVH@0xqoMKhbpG|TCZdVD6-JW zquHF3^nsZ71Yu1VWV7@fGjQje$+JkC{C=cq)=v&=$MAMCv4*MKSP*j3X>q4bsgOz z9L&SEw9ka2WV!~IBH|$|I*A+Zn`DTFmq8;3TVI*$U4N68&6OrXPU*$kcUv-}Y^1l7 zXClF?+I{jJhAymnnGWosr`t-&AzxV~4jmO2mbCx-6%f4B|?j+S0w%%n^ke(W1pd?PrlhAu4{XYvXqMi^MhK<1r>Utln zLd7fV*8S!F_;qg@a8A~tS4n3lk9x+sRSZ}<`>7rKfE|r}M>?U(%`lljB+?Ox)g`av ztwSAZBbYF&i}#3$2mB@;7tb{y-5)hYwMOljuN7RLfqv2Xh7^|*Z4!B6@%{|-L+U`O zc!Tyfhj3yLv>%3T7LN+p#je*FHa}b#mY}RjjThbovliG6-~D_uLC_SA#l+S2T|6!` zSmDTX;@ih{vEw>l!oQo|qh|xy#qwkM!eB^gpkTL95!4WF~XQCL@kA+-MpeiJjM5Scqw% zd-Da^`wyn0m5wgzh)K{pjH}(^h(>4n>5fyP$|bssum#yvsm^@3hTcNuyaqNQ@uochDD>rPpvzQ?$HmtrOw?`Quht@KA zH-ui&Jtc)A|7Gd!*P>MvzO**4MV(55q(2-VMJDXhf0*Ju)F2A}tlpv{=OW0-FDoDz z<}>o&oy%WGv`?+->5TOF`?54z>sj<(_;rgO-huw0f2G&zA8o>htaD#aK2K6D=ETEpV>M10f%Os%wU27DGD9MvTlwhH?D1TKy1NQjcn#p_9h0X$mA7w=; z@tn2p+^2?JLERm193AM-d;35Sgs&amE5+ycjXkU)msyT4Y#hw!M)zUlsHkXU{fMOs z)+NwvG5H?2RT0sm3dK$F2W^vZ{Jl6=Uw5%Mq`pUx@s( zfGQ0Ci!x~;^}|h|3d9<+^W-Qou6Af?<4j6RSTQhtlHd77TZ?DMw;@giJ(C||>VU4d zpNQGJuucd@sY-;Gfk|`iIv<~Lm9DLhOESH?Zt7)`%1B->^6sUGlqzP zDRkzn=jE(-mi4m8Xt~>K(|&A_!hWX3YBtB#$9%@xwb-w=-w;6I`Ah%!@_UH$tdC75 zwRoMVaR=uFQ5*HPRte=N+Z>ZP@R&pQ*y_g{%K5t)l9k`$1$>Zhp`mQpZz8^4RSWhJ03+%4>NvD_U!*U7GKQYflOd4W+uM_G6lPty;CMddTDG>{LAG>Ad^= z{xV}CM`YFZu{q^_o#>3>wI2Ziq>`Tt2zRSH4wCEu0dLPae;yDs0oC9VwIkp?5?as$ zD?&5wk2l&Q;X;l3>Gah`gtzxbp;=^c<~0n>^9GWu6fmxffL9H-kExZLu8F$imA$BZM z{kS>2JY`k`j(j`i>Z7M(Wj68pXSUYHn;Fv~&RW%`uzhxR9xpe{M(g($VLCfBZ68+lcY&)^srex89ar1EloX+chj0~ahCuP*>@A>A*2m)<_ z87eL;f52AQ5Ha&_?qXp*<@Z5h!WaRs)QagWM{{AIiKuv2)T-cVMg*vmJm(uq&#Cs- zZ`n> zPRoUVZ8Ysbbaj;Z&0w3CWk5$uqldH#q|`*v{p^8{U4drgIP*aBjVIFsJVR)6`rCC^ zyd#sSI^~fBzk^cbZDH2RUYX6*Hw-8INGCY z$)sX8HC5SRmQPLrbrNKCwj1f%HwPoT&DM&vwdY=*ycTk~9*}t>>P>Q3Nwy)b6@g;+ zbTu*=xM3<OfN^Obd6c?;^05<% zT3Jov8RDjOsWT$vTT}LSca`}`XJ*ld*51~d53Hx0NtU9VDrBGW{Do7#Bo)#3Oz?S5 z+{T9`N?{4=hcq(0eMa?;FN7;E4mW2MqN#p`#$HH-g|adlaCe`4PMUcvLhE3pbQ^KD z+_3TNI^fmI+#brj=2Yd$qtnF86Uvpi_!u0FT6W@q5q}066d~`8a&b=Co)J`}d0mne zI-!wH6IJ1F_~|@{|Den_7T;u1@Co*Q7brP(2Jbfy)W-Bg?ux`i15SE7;k-#7s=3d{ zdFQiH{kNxb0r`wpmADxVXN=9#KAp{M>C@D)v1Qo3TG>8=VgMh&zm~F%9Bv10dNrbq z@=Q{yc=bcT0P&DP!0V8VnZ7wDGr47X(qD*2R%8b(AA#DUhrP~UR=CvO&&w<#U1<{o0+p##2Wj64lQ61#wb)AF z)&=>8|FWqs(5EO(I9mTH`HoX9{5>j92*FQaLy`E|k24CKG$|n4^85u*6^c;!`B0jM zjQA4hxWuQJENr9Dhc$*M*@1IRS~=n?x%5uVs1E!yRWP~cZP^VDRiWWB$GxCH3UsLu z<7tL*YF0??lrVETogcx!?4dsfxC{YlmXr!iu+djf6-Bz0bbQIEHXk~wjesL7>260H z$X`)2ES`{M>sDR&B~ir229AB}5giFWBJPpzhK`suXEpMay!7I5Txl5Mw~4IDXbKJs z^pNSIbM$Vha94e&x3_=B$@&}cz&9G4?H1n(NdOB+!o*{;Y36}t<%8$R@AiQ}W`VcN z)vg~?@!UyL{7V?Y%ut#4ry%}n$%fWXfs)>pWaCbnM*fUe@YH4)vq%8zMam5ZdWdw_ z3#h5b^yyf~E!S|zWbQb3_r~vu_}K3q+Nrr_K!<4R?3 zEL*sFj1{^2Mv~N zDpDDH0fxy$p1jnZ-f(su_^sDu()o7j)_HyYb}#wJ?P59OhkorR&1SRokGSPy4jt25 ztU6{X#7k^Z;M4R1GAO$07_G9rcqcp+f>>Nx36XQE{{B>4{t3tMkR09Gv3u|u%PF#I zEIMJpqda3IU1;<%u!Y>uv5MT%Mwb#!N5O{BESqU=xRqN1_m{2ZB)z`({o4ecGDJ`@ z-k<5rI;T9pmIDW|dM=Z;2xZ2ytsZjgnonn3cMH2}j;GAM&XkR>MlAUtEX7VG=k2r7-SyQKr5Xl$z;KHH97jWLD4I=JfGkS&V zqFdibGl1VjWKU>L3RMq%thS7Bpk^$}Gg)4s-3P zNox=8>B_!w-Ts}!Dm}ugWl$xSBak=uKt-JBj%@mJzc?6i9h(-x9!@A)1BtFaqRx@ zPKchFIkfO!`!&P_4jz5eFA_#2xeIy3efW!yVOZ|^%R~Fh@OUkloJY=_)v`k4_&1E* z%S>%^He&HBhpf_(AFKw5^d5GT6V8bqWc5c2k=GK^^-Z}Xh8Ic#mVPps(uZAT*gYiW z$LP{kXGrE}4c%yepK}Gh*#;+1J)i!nX7-XYttb?&$|iHHk9msgh3!|#`P7^Jy_6hN z(q42Qk99}YF*7MNZc&Qs?tIdX)Vb-~(5g-lq2zZmF8UbR$ey}hH?|0zqtLiiEU}AA z##aWcO3A0XDNk7V?lfQL+lw_Vfkp6U7~N!avxG~;$m6~YOYEH-y*>SM2a<1)^6JGy zMiJ56{a2jPs$-gnWY$pg?GXKylyyc=Bt1;5!|y;wUs_5hQx2pNPk3K)Kf4jOCS9CgMd8WATE$o`G5=4>CkkXNU zJlI?PXD=~xzN?|QKICJFDWW2%0M05RMysg&AZ_8Ab|KSq6l+J$O}=zpqGPNv>ELD~ zQ|Kki#E$4VP0s!GpfbG>*iJ|)eypD=4}SE2%OCqzs}okWD5goUAl)~BbA&4zexn&S zaEX6!{VHr{bl{aP+R6uKy}cH|8@cy$1SF)!CmYF+@*l(Lh9DP*rDSprnmHu6XWo!}g0kri6iYzdN@Pn_4hRog?9OvQhocCk)rq9L3` zg>uZpQgl!sgR;W@ZEnaQsJ^!B@iV4aTNuAeY!qEfiMB-AZ;Q+%)JLLt$Mq0Bxj#PQ zcc$qg3<#m&e8GDa@0xu-3lp`q&sfIH%XZP3?(LN+bpZsnxm&KQYWO7{`c0lR0#3@r zV3+9VU#TwHen}6D@XCO1rj)mqu)65dh6kzU2fnDp*W7&o%GzQd@Fy=TfsFnK3}R{w zBK+A!MJ-Qp#v*Q5uN@)K4k0s4n%JY;#?2Yva!zTM>2Jz?X%P=4W5YgEP^eh5nd_nm zc-ORaQD0=|CZq4DV+5cedJN5K8%u*wQ8cgzm*3i|DvrPlwDUhW#u^{vO51m>?I{b` zen>%c2o32tF68HfsRLIqc5mox<{D1f8=3W6W=leX8^* zl%Y5~%^^p}vmBZ{ru7@ge;-5b9;Jo9b!!OOm+dC+%`U(ry; zu&Th)46iRH*12ghhUNY$d+ZmvC{YKYme&zcmk5<|%a@ebEVr=V!M}nkvPopRDpCJ1 zc#~j?+p}J?f>S?8Xj#P5Y3YjzB&ZG{%M~E_ry->aw-Sx@S9#BnOedLEz!i!LYNa_oBqJ1T9ooP_4AM8 zL&9_ZVG6s7N287z0jQvLK;!>$;=D7^+jZ)m&t{YY*_@`H)@KL|grotVQNd=5>-7{pZf{aM#LCZ`>Wlc*->6Sd~&b(R3Z8yj%@d~vkKMGN5|Ab zz(i|~0Tzrqj?OkQXn@7y6_})0&PDD%fW?@DF#TYhl&~a9h>y}#j{7ae+SyzfwCoq4 zz^mp_3Q^1xqEco;%q88BZ-p0|CF@6Bv7sNUK0O%7YD0F0Y1+su zSPm6+q<<!;EdT zpCCKJ%&vDwpR^v5>PEn0MEHk^$$j3@BjLO?Grd?50?eiSpE_HH(<;~8ArSU}D zFvZqc%#vH(o;?0neCs7*oUx;L?=tE^hIJcJaT+;W;Y+iR$D7Q{YN_Lq;I_&^xWR~h z@m!0@x21c5%+G%ED+{1ivNbn9AVYpqlw~3fJ_(PWem;+CY3zAx5ZKvIc$6EDj;4I} z1JVw_xdIJpN(zdiU1>_wl+r}V`#BYhvC^@(mN6DEG3zIj(e#dyYyb-GW9(z(gfeiT zWTLZ>0T4Q$6b5w>L1RA?>Ansyu?mixjqT#g z3QC-$w10y9*;g(zp$xi<>5W#Yp;f-R9^X*p(A-~d)|*Mr zSkZY(+I8yWWG3r8;2UDk$918{>60JColQ(HOBc3XqjEt!)p+u8#h1kn)ljllw+zZ8 z5$Q$z3_tQ#d+x=O^YtO|Gcgg>CXQq7POW4*NfW7~(IP=G>mwR#0;z`E^}NfSC}Do- z62OW0j1Vz^0u@?XnePYgKg?*%qX$ADsxxO#ypvoFt#Q`yon@IStkY`;iZN%qqGg;a zE(7HLuV&h*t z=;_b!cog+0gzZ&42SNxT&6<9W5yDntd2MoNyh6rB)~3M87jt4tzrS>*2$2D}VxKPk zXXn0SU=4UB=smhra1hDmJppKF_pmg?kwZF_%}$YJ1boIXC!5vPcNPUam7O-|G{e-i z%8MY$dK*@6{Jz@(Ue-DVmJa`@w4mskeBy;*UE*Tkv#l+ z`C#}#Y!bd`XvX#%+bJEbd*Lajlqg{$ml;SO^#Ylbu+8F_V7Gp{r;U1T&InVnho*r(m<05yBYN+2m;YLgkoTeS|ylY?$KYueck#&>#lZ z^45t(hfVrGmxzhAjg=ht7CrFXb-*FXYBN*t#nR)aw$VA%7ZUO=a&~zZft0iDzSi`Z zQez&;Tthm~V|28i7k5X!?b@>V&H3m|HRgr33WtSd@Zwx4U`rII8uky*{Ggflf4?vF zB2h|ibHd8)Bsy5>(XaM5qReo0aezNX5?g-wk-sSA1^HI~@k8m##>_$qQYf>~T?rF$9>LZ` z8zclqFK8PN1GuIDc9 z7k2I$*h>*uVRkbr3xsOPNs=8{(Oc$>N20FlJq-sZVu0EqtY%)lSA1LT=~aVy_swtP zJJ+d0?sjnH_eO$Ca&#V>bE8#CJ*v+pN%jzSQZIYhQc4T-U9BcnN_1y&)mQQShJo5@CmV(SV0?kr*<}~z`lxm_axI)AFjgC zt5T4!%W6Pp)B&0^v;qEVD+jJNRHwAeo1B!aaIO~d735<58---wmPNp~XZ0cya7lxe z=xgAGLz`W=AVroa0 zS6^58OZq8wfZP~EyTpe-R2dDR?#|pszk-rzm9?u4w4n&z9bvYR#1i*X-dWamMiwE8 zIz^(r%Q32qFuI5lJ%?2_vPl5^?M#VIs*H%kdwc2^Ti+`Wa8iOa5f3#ehQ|%EgEzzl z$kXdEyH#UkU((ys=K5E(t-dq9Unlb2s?rfBp9SYT{;vEsA*d;*lGG+u(bAb{-1;+7 zybepgdxM?b;s*NNmk^beHEYIz0-=l_qBa?&0<6rrMGyR@F(tsu35-=#^gH1b__DI= zpV|Ru71Ay4#4u{;%cKA!FE)gnH}n9HeBkWFeiTw>TM+@Dw z`gwLy=Kp(s$Z4x_mGyLVa$-)@6FX9?fE*w=hkLR+*(z*{LJmsRG5x`O>kGpLouJ6dW)glVDld8PN-l1b3!<6h?(9k(T1W9W3l$vPqj^f2|1?Itznl=%tE3lkL@Z zs_p)+@HB?{wvB@5Qnd`p@nV}tFKe4G{E=U8LP)9HDK&tVENdpdU?Kg(R*qBr` z6x!S}(T8jbJ&P}ti;U!$%eWqY(v)LmxwM3S1LLM<7!gre?$gBP^g$M|!=9ey9&h<3 z-Z5O|?{+hc{>>rIl(Y`^432Xw9Cr3k))N4bgiyvJ1>AQvF5Bqy3kHke%xP`a zbb0X-k@jpLV$&HU-51T?{-rLIl3%%Zn}m|@6c5Iv#OvNHBCXA-D&lZx2OeEnBeSrV zV+fe@poKT&nR!uITFxj&DfSA({js7}=A@H<^WgnWHvY#90J7F8Wdnjr;Dl9s57Fm_ z>;o4kW-K{Iy(E)mbM^4AS*3tf9 zXtJf#q&s&Wv?xNPv`bTFIb{DJpL^{LyHwCpm`du3lgX3LS*0QfO_8@EZ=$P!RuzaeUfl0&*&<oV>@N0ImsP%j|OF>j z?6zV=Oqm{hR|L0?0`wx^49zDzeNmLW9tP*v-r9e){^U=Zc2L;$q*3X~vrnW@^wcla z@D&rmjtXAMH&SPbc%Qb3H|LoQSq6Oln~CSdJi721Ie$CzvSK<2HB1s}z^lvm_^tb< zV`^i<32UaAHE(l&sXW&W^Fh!`9A+MrNMToCsLLQsfTJi`2r1WOe=L_evHs0){D*wf zS@%OvhggcL!foxODb&?9a*#5vknR~D-9oxn$TaTgN+e3BW$g*?Ikp9fTl^Ps^)hOb z7K%}>Nhfg*GZN|w8d0~XXon7F+W0scKB$Js2}O3w;Nxc^mfKzY0BCJhpK8s;wcsl9 zA4%ZO^{j`v^4PCePrqmUwe0?KII~^W=lzo*uhJ+uYj)?f0tB!b1Q%`LU;wa^>!aY`=j*;4Q!!i@R>qLvDXW)kG?Z&TafH^= z1nhxp^g@4wIex%|`(V`G?lJU&%9hX0aY0Mpcn0lbuXS0=p`N>~_g3S?81iDhbpe_X z!%)a;!l**rr4R23@ho?VBx@cR=<4bgTu=r6fqMLh__~6*ytLc0JkaDkoLi8~^sM@By{#lEE+6YTN z0QJHz3I0K8{AsfwBZcDqSAP4?i2iAlE)7OUn{SK$)4e}!5jrmsywU!DZ}68m2ee^V z;6#GMDt7-7{ZAW%t`q=O`>*)MAISUvD%Pib=UVGr=aujm8cHO0XzpCQc8x?u8LWNn8XoT2 zwHpcqw}GET8F~D^cJ0kI74S3N*QTp*694GEi;IJke4};t4poG9#-=kmBH(DRF4whp zE!R$$n6=38USw{3W&>mRdprLvI9NU{LJ@`f$)c{{A*kK}VVxPhXp&v>FNZevQ#US{ z?EA_v@Yybz)Ge*{iRUcso%_qkJPIL`BVhXX<@GHY4F3N-T>jYLc8|pW`>$kjO?dx5 zd_>A2?1$M(jcV=?J>dSfI$p)^y>8-vezas*=RzNNapsL%x!Rp}qVDPJsPnXoN(TPEbXeha`H~LVqztjS^XK>^YiJt& zIJGh~JuJk2D=a7eP2S!zO2QRdgom0lY2G@RjbC-LvbF9dVG4;WA?QKg_-fg8S3O&b zny-2HUWSl;@W+pjM#`bI!j2g5)2G)~&?O%}Fa|!Pm+<_y`R7Na=dw1A_v+xnsNzM0 z2xMerHaF6pfLV@>k51Sw|!swEtq7st4e6mVL&rG+UwgxqyNf9!I+$Ziq`hWG_ zFeQHYn8 zPZU5lDq9oYaw24O?NFV$p!1Fm@{rkF!C`*j5TA*BI2d`(YQc9 zpQjKdz#!R^U{rtl(gj~{G#_jZ1f5e*a_P5UoNrukY8e!1vzmBgVJj_1D>E0T0~a6F z(*;(x+!uO^_N)TPy~~Vh+9qlo%Rc-wd4o7E9$ZsQF9)u_fLTJhMd^guDZ)>5eszs7 zEIlFk-rAq^8IL{f$2bC}`IQg^FX{RDiL2E4;avUlm&_#p#y_F7FFwiLVqFIJbbrW| z;!XD4PMgngEay*I4y#T~;xT>z!(lpXa{@vy&JS8KKgcf~DUR!@mKAh=nx);7P~ioM zEV`;q_6gpfv)OoucoTb_HuNS(^8>5v_=)7h;`iUajaTmLhddDB6dpxpQv?@Ui?0-a z>oQA-UcIRjw#KkH(Mfv!IWu`Hwq~Gakbv;cEB)$ZH|~-RF`HLnv$c(0o-#y59+qU| z0(jTa0r0L;o-XyLEB14*j;LPxHVa%2_Xxcx;B!R{vC zBpcy>z=7F1LJY@?3Eg0Nd%kjb{w!urQ%ynNOCXn4d>_rvKsDSt?neRNpd8&8t*D*z z_w8gp`pEtBssGX=JpI&zFQon@_+m4l=0xI#^ngdyZfDG7Ml+0o3ky+hYN?mfI)f1JF}&(=%;wM z@V}dJ4$TLy5wN5oT_n0>cNG5q76XrX^-$()ldEDNU5dSi_oGq$_;%;PyFjqtHX1yg3Ko!Xq zrDj}s=5Wwpi65REbfBw3g;={LzgzxIgPY7Pt+)Lio30O{^RW7p)~vKepXK07OLIvE zOy7AM9xwgk#=!1UhdC~u!oxiy{!aI9WrQ-lXf|yjSV_zRt!|4M;5ItO3S0?%N$z@| z%W$56KBnaOJ|98G9Kn{7F z+|aC4S-A;GQ(SgDf$P2B{%4t;%+PuBffslUra?1C&j_4X4g*L$;qobSKHVEefw4c^ z$d|=zta=}fZirkXk5q3f|G4BUL%&52UDD>dPu~2Q3@u3aOqK3ge}E5@ z$)T*ly%IAtyyJhE-ZD$~A$Yk6<7-T23v4Yk6bx+cSeOj`sIbq{3eW3^b+wi~6pfTS z&B#jEz~;v#bF=K-4RNKG4I%b|5%SD$1@s&;e{|;7HqqvEe188%aucCkl$Nx2yvtYo z1Ts+&>j8IJfesn{YLXDS2Q-3>^!g$pbyYvdOx8eGYv5z%=A{8wx~EeVR|n zB@7L=twAumFr6{<%6qF(@q%b~X?Yvw8tCMem4Kq~K zTytctB1@13EQts$hu~~nwWv4TxO4T@60YnP&z-<>drLU(L^!e=s+FD|_1K3miSX(C zy%iv`bKFUSv3YGwM^l-;eg^ZQto*{7^}yq}CB;=Dn;~(J6`8BSK%r&O;_p+_dc21N ziHmP=)n9>m-uxh9Zm2sRW|Vh$TWLu*(H<}r6VCb`JZ6XH9VU5d%e29?a& zB*=Ao3gRREvAGjG1*VRs76!rcC`RVg%sZ(5U$RJ6r$BiLUn@2x*mcv{#8)==~y>0i5em|AYPEY4ZaLUn4JgiRl}!ioS&QgAOKS<2qvHGuUD*X_u}@x0A71-$-=#sm-0)laLbru~UEe zT+J=K56p!rtD{upL?$=5V?AI&Ki$D*?YUWd_X{Y`q25>ftyoSL06%(v4J3)R=u{Zz7B zY)}zXH|^W&%Xwu-^8#9F{I~?97*|tpsINB9xU$_wf;9yk*BF^Yw{21@%3wZpR;wsB z`+RPIu*2Iw@eMMswD(oh-RlmmZ+SkG)jcBY?!6cPg!Oj(^9U78dbg^Ay5Q2zuJgS} zPw5tD`n6pnOX#?qzCiAZWOl0SH95a7W^{mO&s$p&gMLI_D#X`?C8aoqpC|_#i&+-PkZ`P|@ zCF<%Wlgf?Ic)!#3?>cz&aXSHKG=$gj&=PLHdvsqBlV7kX?N_*dXGO=X)1X%_xcF6{ zn)YIx@Q()QQ`g}T(tcJ&w0U?Bawldc2j@*@pV2&O7y!vznebPE*s`hF)S)Si=fi{t z5WKW1Q1Hi$PV$i~?WqJEws#E&eA zu&cULAKWRm6{0)b{TimNRiFSjWea{a_SGDt!+f>2)VFOY3A!kyG=gk_^M>Lq@L!fa zVj;Xl2F8BCH-6Wu+e|p&D)#9`cx?B_P3})_NfSJl$Gm@JQy175KVpX${y5<*!y4+v zX^|np^*d_x7uiduFzJ^@qY+ZE#VrJO58l@&+oyzcX_KFXc(evOQ;a-xgQzh>5uEq= zJHZ6yu*uLzrD{U=YHdN55gu8>7wakw*4XLSA&qQAgx-m;h5_`M@Xn@@eJP^G zbDuye`x6gCIDHl+Os#|PZohw&r$u(dq$=(>$y+LQ@3_Hg0i|pf6jB`xwn}{!GU6WK zT|xgR>A3)|1XU$)onVdPLr4Q*7%kn~xRpQx;-vB>fkbAMfz^yn+h664f#G5Ji2Ea{%Y0nGOXKhKiMvOdt_fe&Eo>`N=*S^Bw1=F1zxoxVJwUn|9O_a0`N-TPzlq~r+CFnxX6#+%ZKWNvrGD}O`%xrGQrF? z8FS4~Kuf2m8TFcZz|Q8qO!9>s00m60ah*#8vaDx7p{RT~Q3d4;mw^2$*5i`eMuAib zA_@}&dfmW(yVu~})8RnnVW=5>6#|l;yibP79U~rs@lGVI!}FpTZ)EJr`8%vTuz7DK zjtXF(51*an3yLQy5-7;F*j`VT0o{1ZoMV;Ka!#-^n-wnN=Y7LhxLZ6MNIFCI)W8|K zFN^qR<;ZZwoobm6Vy-pEZeI^GN%+t#4iC-a7!0#}KoHd2GSTTam7*0kW3_fW>wOYO zJOMhm9~Q#|w{+L@$mfgST6V{5mC#3+3TnqEuh8_Cc_nEv{arS}nh6e6B)27&QV8gf zjY_wV)w!0Dfn%O4c4qiTLA=K*on6!Ie(XvqplYI@B{Vqja8VDI^WWUtiPFjyA?p6| zgS;@mKpD#x9|p~QyKCQ19eRdjSy(Lqk~|4Y!hkmSeZI-U1Nj?6>WQC#-Ql3iH^r=t zSK*tRn-}*y_kM?N(~$ApjVeEuSJu359?(ZO9;>^At}tU1wCQ`%b@b;0xeKixq1urp%c9{{1{;d4$#QkOq-B7N*xL?qh-(gxXlA zGsJ3Ol5-qK3O^O^rEqr#j63(H@YrFIu<|>S4U}(3TZ1l4Z~(MkCbp|8oj|sSqgyhy zwu#zePtNecprQJ!p5*{`7(L!YxXg7%*U!aB5_8x-a9!+vwA)VM&UH}pjiQo0x58;0 zQ3$DG%Mf-9-J0u~185D5JcrfdD0}wn8w)+jf+1%4s>z!xB^5>ntXKOQG8V&~M|{^! zKM#FJ0o?kq{du_j>Mv6QBF~sTwmD?J;ldc@ca0@g0;c>A+I%=|ZS7aMvN}#ecJi$+ zB`dpQ?neD8qx#YuAp|1ip6Ft|AF>xmnoV1sw94x0x@eE3ez@R%Yv7r$|K@jmAR@fm zN+W1fVhqq-(~M#2@;_Qgjb8XS4>HNb=;{Wo&`p6(SP6N^=G$qJ@=SPtGMStzeiDp> zqj<7d7q#qCvHizt{SKGhbGCPJl?&?)OAJz*-){aLs|4L9e)tAmVqiI0>ns*{S`Qn2 zDCxz0$)QZTG?G9Yy*gs(C8Ml?tilD0ToGI7P38 z$X~r*ha2w6q0s6@sW9y$Hi0tLWKM@wq=@sxM_?qonHFiJ_eMFgKv7A_a=OW9tihuo zE=4+}YQ zroPLp!=_iKe)UD!K5wK~qNtPtGTP+hf!5pGT^<(mSd5B@l4OS(RaI5Fou76Th~85< zSj=?I)%vXHkYa#!)(2D}WVu=@Z_4NY9$FFDDtmkT;tA)D2+B^&^z`)N#+6vv^Dt?@ z{g;4Y{GDl)mGEAV>SFLCCY3pS#Hn9eSiAt>fj}*MDk5$;QTufSw=24s@-CxHX$&i+ z|Jm{0k5Wig)Evb>zqnd}3hRg^* zQcWRb?&Q2C_1~Tl>-;5?3xji@5gMJ@KzyK=Ios6{?k!Q|#DSYs@-j5$v&u_{nfnvt zhP4NV5lvR`sJC^m{>ZVgvKCR>T-B%qn*bM9R2e`WYJP`8T2YKCWGr5r3pel3JKGUS zPD2ynx6w=mm`SHVQR%Rr`?3B7H{vJf+^%JI3Is&yGa$7?9K#@89K*`UaxfFrN`tQ% zqh@|JM>$B>6ZJtkV8WGx`TCgd)pG4WY>D7Y`pL2@MmQy!MwoMSo?M^5fNRy06|NCz z1uvyyU~tjJz@>cd)nUCdX)ZMKun6nksGTcbjHB!YhM!m`=>>*dZdJV~88&oFA6cu~ zVFKXA6Pvz=mg66vy>pM2zT{IhpL|-#Dz6`INGcpYaTrJB^V621kVZ8QMFDDT>S-^t z@Go&p*&fJ)&C_y2fNa>pR<)*dcw61ZPuKuM!YDIUmRl~iGoqtOjeV(^CH6Mc1=%f@ z4WYR*s3iTzxQC$}s+Sa;*O!qVr0m71PP73#8g_nuo+jmksB{8sv{<{Jb36jXjQ`UT zqhbwRo2WsrR(VhR6woNeULJN{wfyBCY5ku)!lUq5?0fd=)mIw9{;4w|Ha5j*h%Kda z2l?^}XEJP&ALr6~<~0>?fc-mJ$2T-Q9R2^XGr^wkpKEAz0w@;pGgFi{mXuyXS4FtQ zjw?pldlZ0(hX{>+b0Bm92-yDiCVrI1zYYHRzcx4p=EGF=J!L)(22iD<$nXDL$@{-n z9*XF{2~v#uSb7xz8-oAqdEc?TXLu52iI4^U_#ZD99G+~nmi@mW_cu5%o zcD3YdyR9g+$uEfkz|us_pjH))>k_(!FRr(=w5Se+|4s}*7wO>Bin>%Y03{GGm9&qg zmJh!?{sb&yjJgLY6&4+>7p#Go83sg)d-1T;;?hKvudgDcxp^vRG2J#UJKIH??$UY) z_@DjP@d51bC%3sy)v@Is336|3R(3rPeR10uANq0qVjOr34N&9&Ak{F0UcJ=tf4?;H ziN~Tk-tF6*M{LlS3mDEtDTP=ab`FDbI+yxCw{^>mD4YEbZ1m`_j8^9V`s}OqDe z{5JsX(@l1_A@nZ#3(H5814W(PXgNI)OB|%}uI9US&6@tl69qzRdZzaN7Z_-8BDkPST2?F#^^O;7-^*YOz{4p`x-=oozeGNI`)Qr|;Pxv`e{!5Rj`;eCl+E{$s;LuHQ6 z4rVI-4qS+7ga`o2Gj(NxGgku-juH>xvK-MX(I@%y=TGsZqoQIc%;4V$_x|??*Twzz zxq*lox;$Jkw>N5LpuOJBo&zq?FC(L-E<*OLPt*_^XR2n`mM3r&GRzuP}dj{1~k-kRNQY}HgV zz52H@30+UTDLR4;K?fX5eG2o>vkqgiKN%VsOpMJ^T(OXCZ2}BAHXK z?YSs6gx0l*9N0|-;Q7_r-e?K6<)uT66zlaOiLRnn0_o}_TqjR{p=Fcg%o;~?Tg(+2 zKE~boCb`k{4shV&bTb7^cw8d2x%C6XhUWbVM?I?s?nH>?RRmG~zU2iGT`Hk)u?R75 z;u+i#hw#IMpp74|x#k?t}Asc-_xqOXbL=KnK*4dmdgCDBD2 z7(kfNEa#OUX=>;d%oAHfuLG%)m}$@%Ot;*G8fYIWQo_T;<2{Wgy3gX`$npvbjJ==z zJK(pXy~tSos^XYRgS)A1D-!=XuSNoaD%@0qN2Twc!(1g`^SQu&DApN}docg)lN|*d zb0+Abx$@_qA0M{1x)_1rMBiz7WpOO7O%Tjp<{Yp5!_Led^!|{j7yW;n$LA3*?_Hn- zllu`$;&y=bp8NEHp=~KA$c6g?NLOCX1RQYi8`L^M^q}kr4P?i(|IW{=-15(>*>*xO z82lS!?AmdYRO$_ol+TsbP0QKXe5sTL@;Q0Tx)qD-K&_0)V?-@GQ=k)ZF1`}T#zHEg z))ry_WJo0sT$5pbfi_fzoq-(DP;-u}7^DjvClzlYUoi8?10JIgueFIH6()d=E&yjK zi%CPkhK3IT+z)BJI5&2d^xJou@|tvZkcRMLU!I+w>WYqolwt~D{n^ryO!A=*cuo56JFPok`M%CY%52hox7kX*2kbr;yy;S{hDc*Rul}kDvs2jS* zM#IQKNuCr(`apxtb9Ico(R)KArS)XJv3?=Nc;uW@x9|c|`{6GS z#ohB(WEx#(WauQl)VslQVWNrANuNFuJl;rhxL$J>`3z(I=u>m6WzabReOj0hR6R90 zv|Wa2(}RxvtLB~Z5I(i_Wih^)7wz=byufkHb{Sh^>l!(54^OPO-GQ|bR8r*2VZuLB z5Z2oKq-i>s_OlyDumZ_ol2l^lQr^UKwy0l&f=w%K%ivCx8Ytl9{6MaoCGMfPb}%4& z(GIY?S~U)Om;JorZ4HpDT5`4%AG78@tA)ls4?m+ObFaehOLzpRt?yhFO~LtUsTM%J zrOJCxt|{J$WsgXH{?}`kjh~A9J*Jy{IzkZk6N1Nc@7`pqyu$7J%8*n>`~T4qC*Jx{ zMg+H#Y{~My=d-e{z`z z7i@87Mr3%nmcVm7xNd#;{o#ali+C7#sC$5U0^9^-9^;oK~Z59!w(uLmYrFvvo&#R+joC8{Agzh#LB9mH$^Vjl$5NH3>#NoVb+5^ z3mbQVF0wc~Jw7eD{c%)v>1;PV<^(NICd~8T&)dMwtu2Li=FuLYBlwGt_-!(j>NY3- zqiW3?L);>KettJ{jc$LR8Lcrrx)$OYt5mFpwC*GDrW+pE3QF^6xNNxGQe+xu*%QFD zGv~(ZKIoBX*(8m5x|$J{MG53)Z-8Ka^PPui_t6polI6o<^2DKYQAi9v$(6pCkhq|#~Z3eWn{*co9$IljVxDVghnaR<7 zG=xPj^j^DZDzlngYrEYExD)g2@q3AqeF^rqUv~JjhUyyN3<6oQTZN4c&vhtki+V`HQ)p=Wq$ifRlZ_<(byj734&PnXE8% z$kYHAkf7+F#K9KMfr60VVdOFJ7yIa#r%m3rb6*<2Vg0L5E1jH^J;#Wg!otUvX4$!; z)K6Z%i8$q65_`S*Quxz*?o^j1pgP0+0POf}vO*FJ5Gm+Q;>+xPjyHM)SpulChOWxq zH2S-(0)YgXHZrLIgGtz@*8sHXZ#;Wu9tLqWBB2g*<-j_F;_Oz2Rw`*r=dwQIdc~EP zI;PI{UP`rbo_wqLtaC^%r~K?wsb$(M5rE|(W0565aY9@n(7OWU5oqobcQg0xc@+@m z1fxu4u;UeUy7gfqM=G%L;&h=mKbua@)iq{MY;lL5Z}h;rPkPylt1B7h11M19k`0tG z$%IcwjCMXl!d!7gImHdunHJ9XZ_Lvbn3P63)GF~WE%TSg%6+s9V){`=MJ_;g5i&>T zu-AizrU3Z~Fr6Rw%`P*9c2kp@OM;$Pk_&*NTgTtnpWNX%x^Kc@jXlz}t;wulJaxo> z^exLM5a{Xsda=xfW8o6MK1eT5Zuq0JG|GNE(;tOgZTQpgQjg~8a%(rU>E>a43*HZ5 z4Y_{}VQK$Z(mlbLf02Lb8#7H=BI&mq>O@3Ms1JM2E+e)Ab9{w=n<l7*YnBi)!T+-3KYKu#98dyntj(}{#ul=9Kb=6% z#kx~3z)X|P9RBTDib_XVw$Gl$U=^ZAX3wb%Q6|NksPK0#^Pp@rb#GT@w*loG7*kS* z7DTP=q~F?$t?w2q~q0 zpClOSsfnQ3;Yb)bVF_CwH*Raq9QLH0vA>z6p{_A)hXoh4BvrdPkWMBiby-(*0Np+y zmQb1U;jFar$@PpZeAK|f_6=Va($66-HDig!ILlN?=Do`d9H*v6z~Q3*0E#j9=9cR{ z`BtYwJjJH{QymQE>6(G9J11!86Fu zW|kzW)c%v2S}Ga0^H77G2@yKyUq+!WhSGR0xBYf17Vw(D|MD85ic}cDiatHsUTD_9 zsLW^Oai&#q<6PS$}$5I$Mhd?fU&UpKembS94SPMnnKS z@Xns=5RqGCLOeo*n(#9-neI3~(4iHhk0VA4!EaGvO_b(dmm zfJG1_k_;zkYaYV7|TOz$h@F6eofohuk_|IOUP7 z-E+PFc1*az*6pVbhVVlo`6NF?h~<`n0A>@o1?g-E%_HqhAhOMtD{|{ z19F|yP5tb&5PZ6&M$wxLR1|W`*MW*tl^1`|vQ1_;%_87* zh2#o3FKr<50Z-dn-AteY%V>uMeM!HRTS$4~FxGOf!K}y)2d0rZnDW4+0`LZ)n&YR^ zo#6JeXT4MfxjyB6V8a}Rzhr*D0sq+g+_* z+!<=qm``IU(C~hX7HnKmZS18MUytN#u?w)jDk7RvdYN!uXNOgjmZ_>m39xs^xjn+` zGdz0bMIoG|q|X|~NGE;#9^+IMu1c^@oHbNi`yN1n%)t=-oXbF_`~hI3bDzDt{dzuL z=|zR9w4R>gu1IwN^wz_@N_{{<#F;;M{^0xSyIgZxXJAo`4_+~ z$vnpT-8>Cw+_Gh_FHph-Ks04d0gA;FhaqV_-Hw#lDAFk?4*1Kz2ENgA4x6vnjxIQ; z==iut7YSm%#jcs{pz$Fs>HhRyy)zr^7fjv zmBI)+Tw5>I>OPXzMfOaOQkf4ZeYAMrNWN>+ALv^Af&`Wg|IkS)`n16jJ_G61bq>DG z_ocqOK6_&T{OYT{bXSXma83jPDFxUwnkHDndlXDbr((FE|P=Xk6{;N#^ zY^`;k47K^0k*q9g7;nWqSp9;+oQ={2p>EI!;hMDy2;gP@KCho*0OZ>M+CAw%0px^2 z#f#O2RT_%sWu;t2TdS8v20$W@?G|4WWO+g$=P{y~AYPM0K0uatqhE4+^r&@f$t+># zaBg4+bw0YnMJZ7-@43tSiv^=I3AxPpz-@# z1$*2%&Ml8oB4)#z@##wWnKHJ4(b#MKhqvUud6m_Psnc;FpGe>Zs0GV5{*J`>;AOxH zLtftbnQWipGkq^VC3 z!}^9;8=03+xMUA9OKRp5Vb7ti9NZv_(n(sO?MR{}NZ&sAHht%3pE`1ayDhY%kyedg zXlTF5#=y9`WeRc^ zN_4hRmi@f-3oEft+jp~emX96qio-&P!k+$c5gbGm%pD$t*O%a3h&Z~lJhFxs5nPq% zubWFJoBc#5s_iY6t7l_UY>e8LSHz{6Le>|HxmI@Fp*-xekzqu{#O;?=dzLp2Q-(gz zM`{%R-96t6p*S`?K18Zku($(h@9eOqtZ;KNK(T;kq!)fQM$8QVm?YFhC$f$>Lns_%K?f2Dpj?{3k3`FZ?nGZ56)%+2WB*d*b z{@!{<4B^6_KzHQ7c9;9i7e7V0Wg=#vWh$n_EHGAc)IV0Cdou1Zq?z&pQbS2(kZ{d^s@ot z?S!?H-9Owdr}VpFca~LDIy`D@yoCRF4*gKrF}Vko&c$!hsoEqvM?`$_mxwsh?9)BL z0P*R}S~_`IlTfCZCP}@75N{dfw%;5%mT@3gP1A_FxfEsz7sA^bM#0x9WPcb_$jDz1 zMh*s@S~Q8D>+I4Va7;gJB+yFWkNhPnLLNZp6R;b!Iq|q#u1Uh3$v4*UjRD;%4jtNnhY7vz2cHEnoSuSt?P zAFIpbMrC#F_cC;DSHIr7DK&m_Go)ESVIkZ!ajPPgeQqmt?pKp7T}HEz%0eX-`|KbC z1^I;KjSMgEyvf(6vPul$bRRBo5_g}oKs$4{h%C1Ts5&3bAMxAmnsC#oO2l^lfGf^@ z()dh9$A5=ZMpAp>Z4BsD&{W%4sPu(#u%VP=;{;rdV z1*7ybBfF7Wf?A_9ThJ;wA}I+ChRF|$2L{0dH6&zGsHrnuWG`m-F|Ox*UmtW!#FOAO zAmGJfHdDFV<~|d5UWP}`;9>v+_(MT(a!6yT18A()f5%px0*ya4qo!Q^>G}DY<*yRw{;G-=DJQO%Vbaa^e2u2Nw=a8oMMXs` zS(p3;TSpx1XPYLndF2eZwY7U5p`&Q(5#VFM`I~0uPJImq`%uO?+~MP*5Ta^|W*q;{ zFO&vXrQ*I!o#MX1dl##XCOeR^a5WzWWg0(>!jL$lQRh=5DAU<#R7|SkKC=$!MD~l~ z{tcbW--;}WZ*Ch$d4Xxh<)wrW_&yF+C84!7@oNrt#x&y&v(>CC^h z>JwJn8)Ph6&G=Vr2#sR+L^FQiV`nw$A%xfv7DY@-(2m3M;;|DWD6jT$R3QF!O+@_9 zCw*v&qYL$Ov&4%T@Z+8f@9m3eXj#?;Y0t$6m=USoJ%O)f^U`}ki_I~pi%)wK9fcP< zwAGBEL1O1Y$rrX8el}vkbQc@bGtUI%R0i;K=-8>9JCcTcd`6|{=!ytm76;H zL^6VyJ_cD1=u;N5N|zjBvU%bea{DXjhmKM;8;Ui7iCmTi3% z+0n56K~Sq87*f43e`K5aF)Fik=lz8aM~db8kIx53ZC!P@G9q7P&Q2^fgMOiXUEFls z3c{Ly7is)Cuwmhp=->My;y9J9G$2F%cuCAO+7`NGbjKQ-)}cf3D$tN9S(= zB``6)M0IyVt;h9RPbp?2g>n1>AM()zV;0XpK%ns1zUd z=Xv`%Udv>4$|6qkZcc<=aVEG$wI&fY)@AD111So<2jLph=gb4oM)UtMu0h7FXlw15fKtEPRL3PAIa zC|LX|^P~bY(w~ZuPrx*<3FQ;N%ZyW)h-{(?=Myl?Ye5CXpK9x|51Gxkn&8DnUjH!% zr^26Serv)V7kS%#>t*%)9C{@;*u*3*lGy$GGiEBrdFBw4sJO^`?rw6t+UnVWvu%A3 zh7}vV;I%<1kTldYQHjr6d@wmYwA=E9k%M_dQ3~;~tZJggk*w~6VBYM%L>wNel6>VT zg$E5|h?n^+deD%gft9kA+$fW*BhTo0KiJ@6RYh${q?r3N+vN%RmDw1R`FJ9kURI9A zuNDCr$cHRc@AU&3X-itqom8qQVEgDW&!NuCA_?4&taxc2}GJ43C{hITC^?R zrdbp9^4p0>J65WSdFB+8K27Gql2!hKFoa9eH>3coWt%yiJ7? zBW>NupYwiMJ3C54*0WKK&s$`gcqT@=%AWbkL8B5Q-QC?Zc!#=gHOec&DG}7^{So7! zt{@$~>U%|n$vs9zU!~nvqKfO2dyI>|C96)&XxNtUe%1cOm5j9Q7w7UGu$JWVsk-pg z-&cKKp?i{@dKz#&$gKV&=UbwQS1oivJNm!?_ZpU}YQK8h_>05Mk@|x0c%uX9_ejl{ zr(-X4ywPLig-ka}D;ux%wwCsS8`&M&mL^^bF)Y^0I$b-ZKPf#NW3Jot)iitenD|<7ybj{@Q*a(+A22AR%&&;n$b?nxApHuI{^&0 z2trSOQvMSDd4T7?jjur`js_sVvf}%@BdC-fIeR+*%8Nh2Z9#q><%;|M9w0wG4bbHH zFE3$4tEUJe-$I*aLJ@f5=Xkiq)w_TwGB|?LCvgUbQPa2_xo*u{7%|K@0gR^wEQnKG zS{RYfjJ|x<1LjiXSp$s2EK(33&|_z%CaMSg4zkJ@Sn+`Y@U3vQ9_XaPB-#o6t5yhc zl$=WDF5WW;DJJAGzrE~UllO%gp8R1 zZEN;e$OT(@%D;M_#|jHbsQxT1E%D}WlVdyd4BD5smUjc<9TG0@p54U1+YYoFqvvdF zY?wJY?*Ov%l8MxYlalh?#IxqjHlj`uKrEmD+zWHp``K*>ySyLWF#0ACRT+-Be=W3}5O$d|q}Sy1+vT>^R$)U6T(K3?$|^lbd1@toA5#R)!1^$H zrl_AxntAIw3w?tVe(Acd-xR97OT6uRoaw@!w3POGVF!*@dd`^ij&I#mgCl^KO6 z#rE7ypX6W2bM6;QhyHen{Ke}_o*|3Ap$GKcCGkK0_#oc3F;RA_r<=R#pe0J_gj>E* z)E20OMPF!F^jJo^7w@PRl_nlkH1yVq8(1d)YbKA$VSZ*y(+WF`yh?m=6t2v>!*X{q z-7w$L5g^yTI-oh{3<3WAJ8;WoE9l}N$N?Iz+o@vZ7Z3Aw5(fmT*youdKgUctx4?ZW zo(fq6($WA;crf+u@bI-TTlV?2_{uG-EXg9&FxD0}YIr8qCrc$nFX<)JuNmit+{Leo z`lNWZRnGTQ0eL~-4Ua^Tk9&@c^9d9J@~dI7DIhnr4J!vP=9WI*hiOJ@Y{!oOfbyZi zpyl(E+$lJ@-I&nWILZF=QD0t&x6a&kyH}dRNrN-STtZLbOQZAUwH|q0AGZqq>g<~x zOTM>mkyU5Dls>ya?vJ=qj)Y?F?VFF+9x+z7PS zDg#cuYMP^5+0n0!YSZ6mGQ88MP2~IzXf=Lky0-Ag1gwtnN70Jj1-Lm~cTG&Y#g^c!VtFX*E|Dnp9!VE+4tWz8toR3!SThe-T zXaS_-`=7h-{vHS3$&Q8f_f33ye)G`8Lo^t_A;q|}6esRN#2o7Uj8rE%tDtaix^>r= zdCfP4%PuK7+IV4sE} zxCBvnkzNrufIE~KR^9*={%);%3D>R_?O9cpX0z|!6Z1B_E6G6Y=_!z0a6k$g z*Nk!uo(Wi?$Sh~{ZFr6_hj9!C-849hOI1u9m)tXJEMF^wo1c1u+k9HYo|}hAKr0o= z1gXxSQwO{|wNKMF(6Q<0@Y7{1iol$&GyN$Mf?))<|f|?*D#A$}A~qyrvW~3yPJ>#SC^O z2mE#JJNeZW2b+H=(EZ*sNSK0_wq!ncRet_Ye)eZ}2>U_4(F>xE$V=8K^sAa-?Km>+ z(%I(`?);EC%K=S?tg=R9QvR0K)14#3x;@@x>`CCWVV61d{wHkL+=ny#XlrI6t5sf{ zND?fH-ZBN|J0%fd=6#f+4!_8s^qVgKp9M*L0&ea#bOsHhU5=7r+U9JN!0myOJM}ZyrUtqLkJBy!3u-{GnnRP{Cx zq~bOC2FPX5^}a~X7nqv$E}E)5!QQ9KDVb)|@C+;e7eUBHzyFwWZzwzD0Nn}wEAd(c z;B9DUAON96&d6Hc5&t>e1!u;++-mjPj8D@&qJ^sS<;nWZhLp%(n?fiVYkJEr;H26) zbCrG?x|}`_XmpO9JeiL9x28!H5=cqL|MokS>sG09IeONluLpC+b_eEZYudO<2OL+s zMFBVNPH|=za)3fNDng7pv)|uj`~v~MkAG(rwL|01(tstv&pJptT4zox0)ofb-T|QS z=CiP{h_bu@6n$d8yN^RjXuq&E{F-#IFI+G-9R&Kv6&t-}sP5oju2Th__=N4RsPV0tx*2ARvnB0B=)b^`iXKy$POklfT= z6G#|WXDnj{vLnJI5oT=+h+e0IF3viSjcc8>4i>UJMRfy+c?cFv77T~r1~zrl-s@Qt z`kX6^139t4NiAlu>N6^V%>p~}N?lDg*Lztg-~W04-D3nF*6j7;tMdTUf0kvjv^y^Q z)vMQZuSyR?X&^z8Rn#&!VlR!?P3wi^Y1IXky^?IQ2n_*Sl?bh7q#fGZrFZTAKdg){ z#R1xrVu@j9HJ5y@Vm(6$s7=+NW7&>_&9bZej8m`pBM=4w^(mkGa~UQIK_N$sdKvq@ zzNzSapq0muIRW6~>i+D>Xxno}wSK`TPsrp$iN9Y8q1UWtiPLZC+q_GL?Xf&G+FTBp zH&8dSh6CzWXQCfDL2#v$z^#>c$A18pW^O|(8yEYLq+O*`$8P|;nL+w;Ch$FCi|W(Rdi{Z}(MTVVkV zD6xX4=mT9vBA$}^AwXnuLw)~K9eS?2yR?W@dY6n%Bg-zzl3mXg$eVSlntDWhS0#!z z6UWVNLA(z)|0v$dnl300O&kGgW}q|zB0=buKXBs*h!4e$WeBFZq%ksGNv(826{@y8++ z#z&gzNN2gV(q=%c1$dGAGb`*C1^cF5Ea8f4{z;rTa8Unb!j;jb6yvOvuK-Bosr3}j z)H7WWHHr!6rm*)~f_q#1`uNO2U;odqPx7z#$8FK>JcBesb}w~*16(a*&{Ui?BE}Og zY_JR5mmvjeA>r)a;9EqO|F4Elv=V#Qh{aD|ms{b}rfSmSX5zKFw;#NJr-ay4o`1b( zj-5r5zFMiSIsxQ)fX3fE?)EO#|HIT(v@} z?`8UErLgqR0;_HWT_61JY?VomO=ee;b9>(GU#N1vLL) zO9{kECixrey1RQYlI-x;DIYIvl)1iX>Ge9W?V=xb^ zq;dGQU*;au#Y0}d>jbID*on*QCg^sn1++G!lwI{vZ_%deU>zue5>(6QFMf~8-c*y=H29^sq@uxT0*^Rf|WxB@PAoX>7d#K<&|rKlU7Op@7%;JT6wevY>}%u zcT$wKh&bWcvR!Aj>i1PZe-?1ZHd4zgDll^fJo34Pza6uoryh_ysXE2SHiEgn;^~D6 zki7~?$)vBDwQ7m*p_A5W_x78A9n#}3#;8pNWk>()ymIS_$`_07QZo%kHOu}3-)YpX zsR1upFx`qd6(%)(ULlWlew5W=-Pg$XH!mksukkpwM-*xDB+kT4XDDT^e|?#ppzVgT zFRYL2EhFQ$3_3V)gvgo>rv3no-+9`_%G%g2$Qay^a)oORivrD%P3s$Uu7M0 z0|OPM4KZSdVjq)tJ8G`|I*=WItg$2YWQ&=0=vqSt|2c{Xld!@+HZg?2IGj;r=er+k zmc<5si*?N!-EVVoXhJ!UY)A6#w$OMipZ!o_Uu-|2zHP9Ifh6p;JwnNU}`D!wSyQ`NO<3m)GggDLCsUT zQAXYmnh>Ia{D5Ii)YkI$F{wM^$JRWdns}f4s^ZUMOEN6hSElcttzDC%9=(V>`Wh5Z z=A@}QzyqdHWARnUR)2e4ysla9h#umB+QvSAuvqjYLGAbM2F%p~=CIjyF3=F!cn`Pk z)p6(ld?P6Hl$BEw%rrikv8zmc-Zd?@9o>^*9Ib?n9@jf9kfYG7l>5%$ETMvK}f+^!HtefGekLm#Q$Br!sKJfdXmzBvXP3bGWpL8nLgHFNB8jX@D8vf2+Uy`-RG-# z!IZyWr`A6rKlo0ECaGUUDDPuPKF;_P-JoStjJe0Lh!1LIH{C;6pR#0hvb07DQ&kiz ze8y%(o4mT}Jkfcr*Gdhf2z_Xl`q_8)s$ZIAMh%j-x7?}SiJEBl8v{!Ef5jt{`gn#I z&KQw0Bcd{k@q>Eqv4v28WGSeE)d%pIR;g#TAgZd-5V8CSrjPwyMCx=U@?av)ZUe!9 z?o)$FDnqY^6U+tvoQV>bvZpmqz0h`Z$qb!At@v1-hjm?Z@mvx$;cwk1#mJ;MNs+KS zC#|k?uw8--OIaj5h^a~$ok?(4{L8&j0RUSl0lP_>Qbv|BG)+xp8zgl6`B|}=b*!zj z&Q|g11FKGaG+pB*Uy6_FFOR0jNM>V9)+(1f1DzH&ivHR|8G~uXb$jX%=+1MYG)dxl zL0TQEV#VDQ*znpTZF(<8wzoKzly_V^j;%kwzoDu_Ro-*}=Zi^xa}B6k95h#C{x3D} zfp>RHa*3xxU^Ou@5d2q5m2snE4l4x$uXbLjmV-elu}E#Yky4#Tw-Zo(6tNlxKjUcI zVC{Wv_=keC+2^Ahxd?p}W4oiszEN=r`Zu;$J2=R(k8u~>@T`*Rrzm0gqol>^3;X5I zCd9-=!ahIt`64JBmiMOmrKL4p$)`iu_AR{1O|Re093R*oI`imx^f>deTK*@jZP3|N zjHL~V8`0JuSb)`LMt=8CCH6aGf7N9q_-ehMKvHXPZTwv*f1MQ~FFLvG$o?nrYl}Gh za061cWK7sdjBIArYT2`K`UQH^;X@7|x@t@e266ld=Aj^4rvN-L~GNtWBF zzGjH#_QU@P6qst^2LiArB|9ZS@#V{|1NMHAPtMLopT7IbFPrLgF>kY&9-zO`wMLx- z@Tw73F1vO%NVoC6-ulEH!-n|llU<%`dh-U&2gw7AL`{fp3fZ>9H;fkzfcEqjtQMTP zuMD`PzELla7nSZY25kU9R}IvR0F$mdesL^ zbc?+iI4UFR2n<*S(gkExF$oGQ*z%wz+}C6z}#V2X76kCIgok z$n?m_&$YUr8v^2LCA=4oze}h2!y5N~+@q=uhLh-e{InA66rfQqhCg+l*^IaDD>3>{ z&oEQln2E7u9-HEV&KG<8nUO*T)>0OjN$ug`Pm5fx7rR}`LZ?dv7oavnChnI1Mwcnx z-xB(9YJ3*Yun_{tHIGG#A9Ts4b=Jxu^M;mixXoHLjJ2ocbbnvN!xd4lD7V;exQ{fJ zOj9WS20P>?WsrxPlcV57?i}p;RnIq@W@`JuTVenAR#?EXw}QF~GZI2{>I&wjH>x=$ zbZ%WHZ%&lGpA`nx$Ki54?BZmf{mo2|>tQ`$SzPRnyQ2TBaAA1I?U5dl)^=3{uifZ8 zC;*jWq3cT%^_uHd-CdWV4;vR`&1`q4y?N)6Y^Iw@A7W|idf>p$>x#NuoZ(FznwOs3 z-ewuoD-S4)=Ez_=?S0<3_1ClCUi!n9e>Ihm!*uY{XHtr10kAZl`VOjxbK_Mc zcoZf~-*|<_H6|Bh8vp$i(-@zP@U#xM?`%q9)Avn*p=axBrrpAvO;JAYJJn)rB4ivj zyVX~U)h8(U6)g0@ibQ^7H3@&A`^uttQCB~8U(RIxkb2S+?`gLUb+jE|r z{MDb|F4-`NUeUY32>~$01c`-|G#({`e>h$h*0p?ng-SX*Y)2Zu$=1Ukzab>c>>}>7nO3D)n>$+uPP+llD z4jT6*C^P6bHB4J1p}LJIk*M^Di?p5QYp;W?X%Z|fEM$!z857SYw@|}*_&MS)veF^y zIHT}#v$J3JC`4TwC$t+LbYt+z%8nTap+(c|I+E0MlPc-$AR`(W^kOxoVPu1#S=m`i z(KyT9`lG8&;6?uy=^-!BM$(la$Udj1zdx?)-IyG#Wb*lNcejTFsV==wHdzuelQ=17 z?0x2C7U?y+Y$~W&e4!OLK66&jA+e)tl2!y@(&Q@iQcotq`)S+-8wU{1in(OlM^h&dA%0=Kpybd@e`^c!Stiv~U8VPuqF-o*-cU42PHjuk%*=veh& z{aSBXk*wD`bz)N71ZX4(8KjtmM12t`V*sf3jJMUb>^Y;;_y7MXphBKcp#sh-1UQl; zYWXnCvPS!0vOxe67b@kuWrcts~~q0APVZ^g{rKTR?{jFXAdx4Jq(9fy!=f~ zO^sQ!a!Bd`S)DXZS8ldQx^V<%dpRj>Msvao8nns`{11y9K%J!a*zed**+uY{5=3#>1vp z(voV&(U$)`%Q+yecdP%@m%wvY=A?EV;hnkD=>o?0Q|_ZBy>4SWe|%QS__nJmcYj;lw6`;6e*a zd2Jk$L&a2!?rTKlrynP&YjSQC$v;2`(SK!!W&Ufoz3}qQ;R62hi#g8;a`HmnSI*C= zsj>O#WYfPGJ6S{jl~o$4Ge1klI@|xzh&!ou{hnsZ4+bV_?dokwh0& zE?cG>t5=I#FO!|TN!s|Su}vPJ>Azh#ZZK1NJ2lzkUpKSkd?E^qU15VDb1M6(^qv&yFVT3h*Oy#s4g7zy7i>6hHOD2P>C|F@ zJeAk=@dOW9R_zdhvDa#x4nOeK#(rqxs zJ91#?FYBqKCh+iT_EC++)TQ$O1YVVy_2BrxQ;{!PI1&EQnwFXx{+&fPzY~5_AnoGV z;IMOl(I9Xpd?uusp~G8voi8_(VxH`azP1YjOgZFXp#e!fd%X+0D7nEU*8WZHPX31p zH2qlRc_t|mPoB+CP2$D?eE*xo^7zAY-V&Z(QNAC|0zq2oo28b4X52N zle(m!puB+>%~egZZ;u0SD6+e*6O$Ldp>cj$V-u;e5c$QF(OdOaSM#m$<<64#eLy%H zV4`>253;{9FbagDekw1*vf}skoSeUVBmTxL;PlyoIB2pCkjYHC;dl|FP$?OaETc~`^Eu%CVqo94@E z%)44lo(+vzTwG){CLbjb{`aPzjjZWarh}p6O`XtMzhMWy4f5) z*dmuZ)T3P-ijlg*kYFwrnwVMb8<6_!$K>jdd@7Dq++;+;P(&q9&3{sVXFS(CglJ(w zw^7)0;Ni(vTy8X#of~!CFeceMO!s=lqe!F7H_`_(05 zi#q~*V#!A<{}TxPrKykUz%%(2Aru`(BHD>x2hSEX(Yq))S%o2nV<9fAgvq+z&ie>X z)q)a(VJ7unROb5n`h@dI?M(Iu%>O7WE1UW9%l9Qz4Q_vfwG<<=U3+&I)0%7yhOTIm zk8=KJP@iAsuIBNm`q$(341nSHhrMT?1Kn`(4!fI2$~a9026b$EwDY3_nwmsT>p45+ zeyE}-V^dPX^tIQhQ^^|t+19tCO~N7HN&}_# zK~Gd4<_`|}z4lBUxA*S`H10O-`9HGR&@e&7#rK|`G^e@Tnr;?iH|LYfDI{7VD|xbAwCFPQI!hyb=Y;7R3R8!vJlyz?sPdyy zf`jP8pl=*>yd)vO33~-4|ME{lBk)3y(0j`(CWdMxXON2%JMi1)VAoJ`6YO_BY=#wK z*qbx7nS9jwKf$bNJ8Fwx@D4?t3JY`KWOvE+XahePR?DLM&gn|^WcuraH_5yb*0jP; zg-yS>DMF7syz1)2FtU$NOtb*9r}Fsi1Kzk{!~aQP{Nl&{VaGVt)Zt2=oc|Q``Ma>x zH7@@5eEG*7+g7Q(p0e8_qN2~YKf4ksyypIO<)_5;79X;9zOp0v@!|gLCc`*f)!Ldp z0PKBycLeK+%o5fA^-iCLVGeKCpVXg4q~?`E-Lzc ztA8@IR~&DSjK7SzHK5hTHv6n#CjMfn=vYYkx+&4S^1byD8Rjma`#J{hf-Kf91a}!q zPD?5wx5!waH5lg!OqvZa&wTP*AM?zhM~`{tqIayOZcSkybYN!nD(oO zEQNFHA<=)n%*cvmDtAsP=uQ_8KW!!fxsvWx-rtcnfYWGE-|X3`@cg@B}X3T(H)uXcrXKhApZ}(fJbiQ zITq!bZhc`Psq*f-IhH!6DxWb;i=ph;MC<4j&4(Bhx;#I|C?eRXgE%lQiy1{Sc6}GV zBHnaSlYW&06%FhF)$xf*M9sOZhXT5hmook zafXOkR_2jP*UVCQ2LAj8DN%&$>7H!~EBFN79r|M?;~yI5=x#QWUQ=jBr5F(dYRC5~fTF3$)|GV3FS@H^K?zitN~9C)|; zHuS=^ZQ|ae(m#nCp9VO7(HRh#BRO9#CVYl_ZHv$Tel*^@Fjq&*w_-K>c=jR2o(gMg z)iBRoZIuEJsI1$_X#usLIYW8(xBoQkLRbE0Q@%ksL@&9QjIwEr9d8=Q$OnZDyIL#M z=e8i*TLvNP*k_sv40I=f*YOcF%gP{q%|Jq$2$9(gY|fFsbDqqj3|*Xp20476Y?KtN zB+M%*;qLw2Z|1jt`B^!UKiEzW--P+fln%^}Q>?*;tY0}LN|4*e#wc>Fn z>^Y)^o@1?~(TY|b-*zzI{D7dbV~gaZSz#Fpw?fQY#&H`~59X({&R@q6)6<=Fi4RB^ z6FEP7kx{)M>g4gl5pUa2?GcAUIgGw4mqxtgOOvxnBN|bM9iwM^9N8D63GF7MSoSKW zf3Y%7wqI2j8A?&R24@zQzOk~Dw13jfp0+=)E79NaNEjMjKf{JG2T^)DkT;12(H$F? zJ!M2kTyD^BhbgNZ+WqIf-`W%9wjhd45L$Eu2KQ*68#~eNg^=exKK{;f@AWFRtsqpzMu~VoQ*4W+-)70)8#M}?@eA=U8%9&>4;Ily6jsw@hvLFn7)sB7)vBfMldwML z7!PQs9aOdnsa-L(g?nT_m219;*t0nq{`O?TS(LKKb&(y0bBRy(q5B<_zHHZTCb0vq z^YDXuG5KhkiOVi)l6}{ybE>77$d|ul7Dd^%b1tJIyB8c=zHCCBQEeymDA*vR z`RC0PkFe?Zn}&Y40nx69VQEZaZjU@Kg~vti^?E5dK@KTt#2{qcWa?B~Ev$*f-Lnk$ zU3k>-(b(Hg!XwZ$V5 zH+pyS^MaSaID*wR-%X2f%yg65l5vX8IrG_T`@N6LsB(vN9=&OIC2L$#jAmhDV`H++ z*?MOS;Aq41m0bl8`#_ohW`8%+c}fXVq$&+Qt;RQl0P^B`>LPLphy%Gw@s8((1VIBI zPK+L5%BQa}QCqWkNHd8Qy&)2^1QEV@i=-!M_wfV&Obaof?PasTmu0qdFm$eQ`fiX&wHiOz+UpI0z3%+p{2bGT_R-;y$xlRy*E|Q{MZYZKWg-HODdHaGf#JCfdsRnhe)F zJu8^r2w)5?DyHFZ$E-&jA}Ar;Bx8GtYj>N)#0{B&)JNDDUAh~;qVbpp33br@h8ByW zy{b_ZiH*?i9W2>4)ZJ`7Be`;ppN^Kq5tAX+QB4Z2J>p-Z`Vi=(JCVR}-4mRj zq`5mkIyz=JbHYcqWKBq&!#taDB~UU4*R;k}dw}+>0nnR2Slg!uaQNdd`@3ycP@TLJYOkytA;Mxq)Kk8~iv~3ZwudrN-scXkjp9{If-HAH zwX_wJ5=`H(43qKAZ^RAIPovPVS_~gvUyM>`IJRV@v%f1LLZUAkLWL`6pxQ9hbcWkD z=c23rWzbymtFy zs8E~3UlrU5;Fk;2enDk0rBg-p0cu`C5)@SIuTLRQ(@@8&+c=4pu>M{Y!E3;8HaKEA zk<7OCkVRl*QHHIPj`|mi;Dg!NsHUG4I;ox+Sn&I|@QJ77pEp_ZS_T$9d*n)1R7&x= zH?&rlRv0U1?RFM1_txqL$FHsM4Lj+$2{wb(rq^|3{!y+>!iv|8U+f%t+u-v>0EjjB ztwQFNm%sjdMEzO0+`)zK?>OQX=P_VUoAfk(eYNxOJ7KmI5FE7u!iCKeKgot7z*<~; zGk_cX(BXRq8v#Qm!Q*McyJemOrTs%+78_=ErgYLO-Zic>fNUJt?K35KhDqjKPr{hJ z6#I2djBy*%aE#1q-9FD;-dSV8iVZN87|^9-eNu)s~=)URE**cxhPYJf>;o z+u^gg>b0_W_@t*sGIKa0#cI~d<&6Z;K37SP!D+&MwBLZ(`PkyG&Y|NE63N88J8zFR zm9kj-MI%l`26aNPO>d3k7b_TrR@Kao-(WZ6Sz!D($oC=UGTSNhei3e@3l(HFyoI9? z2R;k!Y84h4KW{50(y!6X@Jwj;cQc#K`%V3uwQdnd;HfktYI%K@2QZo+S-qZb@KClA zntDafy#+YgWTVl9RA?dVua61R{lYS)Xd)f5pG0pPhT1g@teTpqvie&Ya+j+b(d4$= zJ@-+FOHhlZwE5&zRb9D|#+92&vJ|M4JERjwmGSsRPQ9CrbO+~zUPmcQEgEcr8@+9L z1q0+LGo9Fuy;nABbkYS$FKLkGMR{kFtCFK0L>2>VqTRZ^b%oFy@(b|qrsVi{Q}l_) z@tj?o+BpuSOV005;mO|uK+|u#x~Dvj4R0QOptUnV&=lA(+T$Xw;woMc1Z&S&LHoP& zk7*nAhon7p`6h*jg^6^jm=l4Gs1d3^Ci*$dGb1}e+xcu{mU2w+MsOSc<5BsNuojMz zBCO59)#qiIU?w8&raR5}nB#KDzjBd&RpI<0T*>!;0pLcYe^{NA%Q$;RTHk04Icxrj zjyvH#Kudk=+dCiIx2%+Wl$Av`P=>xt1lJ4V(-w^ML}cBPcur?D_>R+5Td6Oc=X_ z`Ia4pW6)CzE3FgN#l84KQr;_yWuxostE7OP2xwIOV|h0Ep|>!d!0sP>wjt|#^_%pE zln+7_^$=)0jsYEakG%f(8S?jLwXwQYM7&5~hM92>pD~Ng$#M+}M8ziD?o$}zcMAE) zq~InBXWeKNM%f!U*OQnOE4Dq6Z{Fc~LZY1rvgy0+$pv%AKfGUa_YAxX)Ytw!?uSLd z`7TBH4@5Fdt1FTl~Am(6wbwf9{5Tt@FsHWqYt~ty*5cR)0%y5wRV!b zc+qS}LGMN62r}BIT%0?ov%k%iJbJn{vTP1Jb%`vmfZ9lodrnv~>s;SSUG<9g_G^86 zb!0Pk+$vSU(>?Gm7<0)2<-$LgL^XLP|KBA+vX(>1)I8-aZEa1g`u&c$r_n6yNl=hR zkUoV!x#_?eUVzWI=J?>c`m-iOe3;Awv>yO-cgOJ@;$uCjj%7G(qJn)Tt8OK|mu6cN zME8jvNxzGjCEKcx;+XKXtY!M?Y5ACD+dfK&AGZ_NV5?7()Sd3RAW8s&^g&3>cnW-t zrt#*OucUFer^a{dqPEtfX5M$0k2>f4veW%<9vv;C;y#WuMZs~7U+b5#%bguhxiDy% ziZw1k+gS!o{Y?g0(#)@Wm$*NCU^JNF**I%T8pk?(>a=!F5X7C!KzGsH ze1Ti6q#F;k@~!O;^<_V)hbz$19QCLs>ME1iU?oIYyrN4^%~L&2aYi!4+D@?8!jh$0 zUnR+}Y#hT`Pinlxu^E~Vqrv$nqjRTfrz8Kirfi`z*Jf59F25l(M-#n<;e@+^tsa~{ zno{NfmQEhm1BFn4Z!P1h>*3j~jnv)RP06j|z&RtI0cRyI!=Pn%_?kYcN2AYOQ9@bZ zKtAVJ|FDld?}Q&8-r_a=ekbQhUb5e2a-jI~E#J1Bq_XS@CPo6Uud?vQ@(aWecMp3r z@AF#g#PZuC7k0+M3Y?VUFL+p^Frlt{B(O|D^kDX8!6iGpi0bA+L8Ppx_`7^g=-i#I zPRk{VJlD$C1Xx?Mp6*89nu-{c+aRadf0`R#^CCcU?vU=CLl5?sG&YG?K@plC~j??c56Lo>lt^3d26G8U&KM00Yijjdyd`H zS9oIp@A#fQ6+xJJp5v^^^otL({8;4tBfjJJygl}uzj?MZKF z=HmX5jZ?!Z{&dEvnn+zyasz%u`<2e<83)s?gf#gyu2tG8^GLi7V&mC5{*-~#8tQdQ zXt`mf2}e-dlOU^|`cN1S((Hqzy1vcsZr0`rgS19!r0|2U1>|x7QB0_R%y2|e{IA*Y zgJsXX1AsoSNPG{_*Zz$7{yq@AorA@%R{!Kx)3T=p7XA>Cjq+E$?3JPCshU@cQbY5U z287;=W1F;0#ZoaPRfF7k{xkroG|=iMTW{jq`7AD*Iqvy5)5w1Q^JgPj8c(gwPtD)m zjkf~1usFuNix?;JKW9_WE|9wstuUzNBY@92FS988aY&9x=-#n6b~(zO#CbE z@uev8oq6yv`#ptBvH8THH|dLSJ3bDbC7!XEWEEGoTGu>hWx8VrJ=pGIE5@Yj-D-$$TA$_Go8%zbNCl6L2#UdL2PhGSXdxPWIWHgO4{<_PKH@Zhw0 zm^(IXc}lLpFu8VqjK;}pOH>K{`IaLEesr#r^Y;v1vi#izP0M3bFUKv@CdX>i**d@Y zro=H8-g10>d@?B)iQi(N4ghW_T4I`O6riQQZDrOLiU5AH(9FO`Xz!KxCezyb!21J^ z?VdDFvl+G?P}^K?>zO>Pxnzx!hP{v#S9O?$vSBOSGcdAn6%{s?-ZwCyn6|F|sK(t5 zdT8qz&vH294SZgpw!8X!QA|`&6!W>mzVN~|5ethZHj0z?uKZT}{iGL5`8RZ|KIJ-~ zvdG+%qj{g-swSTEYi@Q;bQ_V=-OUF%%)qa5>ik%zgOq|7M6@6Q{)tS!XYS-kR9~4e zCJo)fU!Oc3BMoggn=CyI@QP0gBIpV_L)JSgx9EHgY`95A9)H!CL3vSN$~o(KNxQgQ zN40=~iAku(f=5?>*RVh7bk_7ZMt;sj=}VhRGVfZ^&|6k&ga zCH_)PPVIZ+8HDJ?b4C#ujp{i?wN=9!t9V;op*EpGVAivWVfP17e9?l#9D>}Jr87vk zkR$R=0kRM~ZqZ!!nClCVx$H1F;cEQX?-jO7fo|KsMIHccEvT&Il=){o4&MURGt`5* z8yOPo!{|7D*Ld1cWB5j4bMJuHVtJ?xy*aY|)xKGt{WBYV?EcxzZ>o3kPn;JSsj-DX z;_~41HbfggdXa;x+R+M|nd#C&BlWUL`Qaw$ax?G{$SaP8rNv4#*Y(;*8I8PmR=rv7 zDKu0pf;T@V&Hi)AU3N)ETJ)p!)~a@r`7{f5umzVPI$1_qJ~id?2`F(BQ-c14?~BW2 z=eYfz_g_r)uJNuLC2l>z+~AdF_2-+lok&2?p3Xtt&I6&&XBO4!qGOp5FdFz*Db>+c&P3Yo~)9sji_M6?gz=I7VkC`m_DL4 zsS2@lpvTc}3n+tg6%g%c^SVRcXMKG-BD<4BJ;HEzWtaE`X@{fpt%aP)jm?IYsrZc~ z>yg2r+Mf)P=}_#xC{oe`H_?X&JKGi@Kiu8!WQ}LwoEvJ$lOR~t1NpJNbB6d6b_PvX zs@c(F8Q{*-qftM6L7QX@Q}(=@Ib>vDzyck}F&@7xf=?d_+V+X;8XKw!usLRmx9s+mJgXH---V61Nl~D`GfZAX7Nv|Y4@Za z?F1wK&2xVc1j9PofHC}hU}##bY%>$ODFM(Pb7oWA{*NcbxBA2-tk_h644un-{3tv1 zCv8u(mf;`E_17(wgoe@>Xze65KEL;;`T~dCaawMjVd?lPqhEtA`urQB?-~!iV7%|`60LJGPxkLiZaPmlcI_r#CZPP0C4U|BlBKVV@h3i?JbUJ@_{l5;|1Km6@$HT zrRI<-xFZ6XdQ5a)Wf5b40PM#<50$2)&G7}YJDw|23g+7CE)h>_G|Xj{fC^0MX53N@ zvQI|Ti_7&xliQctvqeFB2Q_^)l4NBir7W!Frv(@gWvD_eyePpB(%L+VWawI$h~AIW zuDg_zj^uh*!b8n~TECLJx3@y~yf{=1*;c_E$uQ^pplnmZqTvnR9Zq1!M~n%b@2K?s zvTIj-KBl*9zhx+2d^lWXK~MM@9#W8wCt#jtzqbRee4OjuL=QxZrk4rz(aDwAyg+K& zHp9;txjma6-Rd$e`1Jt*ns$3(RElq@sQ?t7(KJ3cU8!h|D*$47jgHH&J2HUihzWLH z2_5E^Rh%#Z_aFYC!!5-}8=1a%tvxGMfgg9{Mp@6gB*oV3tj=oFy+3LEL@(cZJbfwv z4@+0IqQCh;AUSo&+fHz&=-xBcPNPEI@gUxdwhwOr-C=o2cs{#d<*Yh_-Y?#iy7&r?%~EHv>*rwc0%3cQt!zo4jx^*jBBO7Wo}YS8Pfg;5 z_1QGK$|vdeG4 zZ&!RY_t|$ z*KHbFV{A;MxPO)xoXP!rS1{=d^fqoCLEZZlUN zL;7`f%f0q`>rb*_iA5G9{@E?5O~Zpfh`wzRTK9#_lIX-P-!b zy^(tKcL$Ve`va+W8@D+O_}Bi)R51JJpMU@PAo@-Tk0?D@Vdp_w>kHAk>DUWf)H_k1 zNC4-)FR&_|$^23*6*3g3MrS!{p#RxML?QW3nZXq7BtYs(fT~Y}|72c7+S|Jt7o97Bi3Yc>JX?n(;xJK`r5 zUm2SeZB>uDZ74v4AJE?V%qfy98!?kui-2qe(Q|?xGdv(99&4K*^G^)| zXJINb(h1j3Dd|p!vMxpIFVvK?{#&b^C$`e3zv{d<&}T9fnmUznU*DM77-z_Dpb_Q@XihPgA*Lw5>R-z zZeUv+2SF&h{pw;(Z#8sp6EDTPo~=CKXytu9bh%nd8lai)|uhz}$Lijoyt3EE^l8TLNWGcz9->?v?lw zeT7Sb!8bql{91JRy}sVN>jB7UwF;if+aiYm52viMp5^C)fz=<#$_llCBIE<~?Op$G zyv4#>LdEC)qXCGtyURM%CbswrF$8+%J5O#u7I zN3@gZb4)wJP>D}Z`?Gi)DVOuWH(6=VSBD-rNC7O@cnF+pGSmz`)?z)qy|ZMJQR;a5 zkqha4#+Bw_7rZy=V#ZCfmfLbTTSm~!X}PNtE~isq=^_%|h9N@E|M>Fp({V3T$>%9G zSb~y8AVk6|ueDK5Mj>Ly=G4l8myW!SxIHLJHuuX_8gCZy$G#0E)fRp}TzR*j5->B< zLhaRvAd$Om{2Ai*L>hYLHg82#X4i`#U*I_<^3H-ZbR|kGH@DF|Pjt700R_fC9AJj* zG==|Qh^+4|<=apvZ?``ZK8{dMRdIg44Z^DpL|$0rv|p{H7+Q{nWkE=poOLfu8P};^Xw~VySClOnOyw@TTq;@w&Jb_4veg{-Ac><-0 zt>58`#Z-v8d6=UvTcsWzmfiPX6eic81KnFGoMBsjEqNy`>BI~A@AjixIR*=@1N5N3 zu`NsZ*oz;6+bC{IzcW4|zaLkcluWDE1}|SUjneec$Y*9MWRHjI-6FQ+{pOlFR?9f! z{`9ELlyj%Uwxk*~K6V|r>ATLXhx$9~a9-7}sq*P-CqJyO`~fu-!#TM7%N!X& zWsc>N>C(xQCf^%({3A02tLlq81e+fh)@=XC?z_NFx|z5?!|Jk!3XMPBOixehfDolH zd~M~&8x9^evQ!}|d~$e^vBMczmaJ1!B9tBHBHX+4(-u~Zjn+ym`37KtUiNF08G3mo zLBK|$^D)iALRy9)vjR7_H-P{(HYM;y$vsuCe|U}{XlMuIYkt{stPm zEb{tm&(GmkkD2wMq+>4vX_=AX%y<*Q(a=42u9d+jFf zw#~GlsK3nMPj3l&^5(?`IAM7Fq+J>oBoK&3bk=PM{~CY$^TkrR>vHLK$Z#9)kL`WE zQS!?&Yz%P*$H&jE?{_FVWX7MKo@g>s??>{`a$vA;NG4$^#rh(LtzMj+0SQXOT9CrY9@#ijt#z ztflzo6T#WY!~Wqk%M?A-uf>z}W_RKVs)Z(o7uYIeW2*7m+SjaRK6_pfZU)q{X}^Nx zv2`#3erNgGYfonLBw#d7gK@ZxzfAlqc|@t2kIJt%t;I!c{O`0XFwIaY%pJkPzE0REkP(NtCphQXNP2dV^IWX zH+;+3fXzVZ>0ij`W;P`XpKl1%B_%%xXXGQ)FS}XRz6Q6Q^;i)1gBW+o{U8+<<0FwC zVvNG%kyg|Oi;DV%bv}9BGJf)`CcEv=82YvybbtAAP2ToApMY1m2hr1maI=?aUPu>4 z7IO=-Ps>#*^{;Wz`O*`-V88fR;TvyY0*~@}0v1h{y9Y#XtR_mSM#Yq29UrE^nw&cV z7($VrJ{+d3y|cl-0latJQKOnxBm6lCOCNHi9S4>Qn{useU?ZMBv~)YRWXz$JPM0z+ zMYA*MmV*R^BNRW%^;;U$RLnil4T+%5_|^teTpRP8I-!^l{@kv;HxLSeFQl#8T{6r( zUOE{%4;q^EVrQfYKY2lPIYXiB9ggFsv`vrD#qW7GMUuO9byBXQ-N>)jD)8%)G@eDZ z@#A@Q``iyD%IhdC-fH9@a z(igBtPFdU|0zC@Q*I1Gm3=a+p2@>7pL_J^sbW@h4K}4by7iswpf! zC8db-)!j2EtZwW1v`)o}k*SY&$lK zQhs(o@@cy7CO7Hl-N68Z!vMQ0P+NdFpVxH8Bs8VsD`ZIWee=YuE{Q%Xh*hGYYnCX* zxp!dcp3hSx(e^T-n#ylwUTaP}8lcgZoJ)do4fVTHb#>}mWCZ%dWcmyR!nTFoA8k=z zvRYTHii`h+*pp|pKXu*;ll*FBu{$*>ir@z4sqzhJeV}%?i<*}IZozKT=(0(Mio?~yOJ?xe9CJYPh3WFj0If)v?pl1+&(PX z`F18Ta?~l)ya#XD`Dr68t@;^j*<{-WRORYJj6UCrUcHoZ+LrW5l*IQxhLB3cZj6SAzg6`=&hRyXds3YL*gGGSV z`r{HSf8%@*ENlStH2;Rg3ir(hi?n7`>E`Vm*Qk24@WfKF!z|j8RfC#_Sj160k)NkU zvsY;bXDNlNw5E|WZl2`ZwI2dehZSbi)}J0y5QYb(Y>SU4R$2Yfd4RSiFOx0dHEpM3 zjZaBleM{Say!L%mqIJ0EU&+`z)%#5pTDCAr-~2DQ{7{h7CD|g(009Y9boA{(;j|4r zF@L%GryZI*o&`-qqJpOj_^|6Gi#jrS$(}RYz_YZ!u(nrcY4JlQ<1qZx*F{{_>0Nfl7QR8=Xf4YyqP z6{9$r@jei|)+>a$&Y1lPQv4K-6d8IO`2O8apgAf7q9xSyS;jwrm_&a&Txv+(h90yI z0jWg8(#nSd*nb#^&-2rnb4;Qc!||AsM+=&~o}2Ot4kkCO)P4{nvj^UGr9f&AceSiE zaY8_YM;X-pfXm&u!Dm!B@SNvdOiZ5tS4prp4vtFBlX}UzOVXQOFO2 zikvV5aD2119$y^C+AQ>W8UtMqg*FazquKFiKl7z~70nsRXw|A)=cu#-$rN_zLrpL1 z(8Y(eNIy+Aj`$;f{n@n#=}q=ruVDm3c8#bHuF#ih*FzZ5M78oie`%O$PZ`Xe`yEjI zL0sHWSdw{6Hsi`2%{DY{P5q0p@)@H@3G8M%(xN+T@+v*mWN7HH-JmuX!DN-Zr z({8RK0SglRf7!oHs3y;0ab8SFd1LW;_URba?A@d){n_%%Aga#+zhv3@yGM@`B0L{M z8=7+jsdD~5vfeT*s;=!H7Nk3+K^j52q@_Vg>1IeJB?gcbkZzEY2Bo_hI;2xz$N}jX zx|?@%-S=@l_y2gm@Nu*EnzhdO#krz^QTWSKwaa@BkNX+he6{&TQ&JS3=WdTG?Z*!) z?s?`Fzqw|RoR`QQzF=p-#(teO?YJ!-kG~O}2h1-lTG>J1c8FgVP)w+eG6SODq_ngm zqEsJS;ENgQCYL%$iWrNycEEt7AkiR{mKFhBr^8^`5P-yrIpD3d{?T4_- zh?LzKz^OLDi4fI*xOBr!FFFyf#5+iIg?z`rRqD!nZPd5(8xi4kIju=SaURNjj%J`CQHGcu* z;Y#4ixRrZYlknL@{g3iq`LO99dO-}fSm zd%k7NRxb~(H#}8)N0-x#Z=^jC6N zu#N+D(#*r*^ywhLi2!DgBHgra-_|L=3&c+5{0aX~9S1~Z)6vAfMSS&aAh{E*s$>eq zv`1ZdN6Y{vC7itRO!e)XFF!={}jQyjP7`BxZ zawz+N>{+YPakD&0NzRWC6`sBg%jc)pF!B@>5pNlqOBaZVZQ-G9qWRkjubk#0Tjjs* zNUhWm7~!+F9g&d>v{eXfq>|$sD_*xS2*3=^J#7zjXf~|ci~Ch2ORto6=|J!5ZSwmF z)c-zx9SQ(wMLBd^v5_F($0z^212p^`MEUjm4=SyuMCX8Hp=uKVGX--i>Ey)k+LkRg zc#nsBE;p=f=>PdDGN`O;YJ~cS<(%igHUEe>`Bh&X(tDIfpdH@Oj|xr^f;0HxQ^lMq zC5PO{`nXLd@P_jiXo>mf1!YfH%4!<(KqJ$_E4V;1VIi8k^gB&ebM`0+1bTLEH^3`lBk_EkP#IOg+H+e4HyWURW3A)Vqx zeDEgv;cCqjLLb&OD!6=KSbF*@Ix*11DEf)QGAfMX0^AvW#lfJ?{sFcPD-2LUc@=zir-o!BB(&=f0DApZee`}WBo}@z&iR?>1RE%8 zuuI}VMtuM%uU^sl`f~Cc_;v!W$`2no&-8!uUL2)WFH|zgiL1YJv93$F3I~?3hF4ZJ zb5v;AP7Z}>kEvAu^M*pDgaQt1>ed45K2;`9!WAbBrTxXM=RQQMOq)5m`UjFS06#;e zo`RoO&_aU3*#?+h^6@?x`4FdtUx5BzxqmikA29Tb-X`yHM)*g9Ezk?JQw6>bZ~o@j zcLHx|yUU>Z@?yJqK8n`c=4!kTKW8%UG?YHGuN)ux1zJcrY5Lpq^R3vVsiR|r&KrF zRG|di1?7-fFv?1C6goC&p0~+1nXuh!t~(Q4_nL+&kTelW)4JJjFW`FHIvZCfLalr% zu3gh9Gi3`dXn@>`FY3*k=2~GlkB%KwoVH|+y!7r82D_U0X87hAbFnoyK~wAJJ2bUx zPV^h{CXXO#dXYx;sK*0A{40yTqWN}QD-WkimpchyBp;d$6v7*_-c^Umt7m|s~ zAlbpKUkki7>VSEm2^01bIF0qeF$Wdj%J5099o<5A4lA~#?85d-=!%=W{Q$r%EQXVtz|+ExUk6zBBM`Xre{EE@VMgUmPB;JG7r4JZxV$!{U6T zvuFaN-M4LT8y{cCoO`8Dno1W2?2vy{9CbSr8eox{9tss7!4AP<*iG|Z1oX3>4OV|YM=XZv?#HYM?|0Ku=jlDQvwlQtsd1Px!MO2u`>|Sh5?8hZozI!XQ z8Aesz{u&TFym|&;p??9*pLPey(*p!j@F=}KdchfivRG%TdxQcQB)Ro`e*=qD73S{(brrKNPv5gHYhSOS?gaN3ZJ(Tq0E7J2G zwhkv7MTFEzfmk8~j?CO8b2>5cSyFQ&`Bl%H4`GTl&<2Q~Nr~kT0tiB1f~CQsKj3xO zG<5@^$Xnq^03Kj!JYfFuJy)rD)twHYv>QrzG%igq>50ddA<6{$skq+p866f9G_#3w zN1S^WK@B!S4dYh-uD?3T=0g{bPQZAJ4F_OF968D}cH5t@-rK$}B7bgw;7y8Q+)(eB zYR>Rr!F69h5(Cob>KUK=eKBixLjwljn2-WBv7k-?;vqPVj<6QXu6!}a=Kilx7sDO<)Yw;+MNs*y`C;R}D!!DsD<126*D0Obd z{N&!d1?(0PTrUMiaFQ2Qq5u=f?-RhKh^ex)@##T;>3Mr_M^;EEIlwdE^KXX?@?H%c z2@T3hE&Fly&SAFf+l2vL8(W%mN@iyHU55Df!}4xP`qH~8{U`5qAmkr8QCWz8h6%9H zb;gP2Q!VtQb!xt%u0ZAcx!Bpb52OU&K4oW~Ltt0?RWH z@;xxC-`nI0p}4X4R&qRJ&BOD_GKw??+X$`3yKu9#8ZJoa+AJBmLi9omsEvNvV@?2j zx21lba`)Qq$=#3|D)r>thLppiX-p%tat#?i>lF8j0A#2ug+Q~4!c&o*xKmL+q_ch? zv(5|%`#(syJP9BjE@B2L8OYDaVZ_f}oH1T^o8kZZ<|fDB>F#f7IzxvAN6a>+2@!Gl z^9s&ovzx!*)R)BsdMhU;L9z{O?bocDK>q`t)80tG0POyWshl!IH^5$0&m-CwDqXs3 z<8sMZR61`2{6@HEs=vj2mU{ql8q~0svKSP4r&Nl%Bc`ovSgQxPa1ES^&Zr1ujf`(o zcxNID(WuVyiDp{{(j83&)BKGzfLQRg7#;2aufpiw+S9S!UN;nlmWVij8(=3LSXhaE z9OJ+bq^rpSi2d#we+@S6r-mH@lsQqrKd)my_fY0Zc(?oH%PH>LYQ|kVn~ON83fqVk!mx9T4e0Z|lWpfv4{KF#elp)-zRF#AbOjfaHlK-_{3$$J;O6 z5aa9l`cnGsg?*K62M9?%QBxU49&fbi6v6)5ITQdT20!-H&j0Yu+vtOrFv^qrssw{U z>Nzi<`yz%pnQKeNb;>}t4}1$BAa`L7q~1Vf0onoKG`!bm*s=B}?c2ny;5 zU<$}0IE8)rB+L4og10(#RIiNALMhYN$X;z>?<$E)!u;)Yd-J>9mbSJE0k|Idtr2f& zNmn7h58i*uqh0fE_KF;rz6INYLGd>@PSPWd`wf>}XU_Yl4+jnIt8IRzQVkN|-(`Yc z`A|96?dbBcc|OqM_RbJK)&Atzy{T^XX^rhj=u{tVP4NY{4S6saL2U*d9*naajRxCqJp3|-RzE@aZ4#c{{QtCOi*!=; zX$LYo??=Y+Bacgi+)wu#={+f_sj5h0u*n0Xsm>03-Pa!0=Z_ri<_%rjx?z`Y$LSG3 z8T8xZ%xR2h(V%(w>leNKL*6@N-UB>Z!|!CcF}l%hd9aGdY_tQ1kQ@_`JsQydy=DcD z;mS3cZQ?0xZLBQ{KT#*l=&3~ljB#N&un{Bt zd&uFL2Dj10foC_wz&vS&>R8|l0oK8oR?i{xbZMYFk`uSPXD09OOQ9j|LcdyqE--b~ z^66~6cS_Hpi#6TNje}>E9WM3$>O<=pY{K4i#2gFWl`F+x>XO+UD*upJo_=YZ(P#N7 zRO-o)Zc~2-Sc#k&$!MS z6f3?U#fTNU`z_sMC!;OCfQoKC=jAedfbqP@t3kWSCGkRRPbPFqyLG=eYL^ilz<$)V_3-e1&OnT#&OjGj(20L6vsTL9hJxf$)#oCF*)7jc%J$2%YL zd@G0FG0f>t`r)cTONo`o)XDGWs(wQ}hIbp)i@!DiJ;B7xvkc=yGSCd~G%us}#V1vBe0UNd`gyj24HtHm?OS%&DVYqscX}k`#S@&fhS=O-xe_7h z3fez|UR9Q3JojA2hK)>Y3rycHYnTLf-lsQ+WtQv+y6Ms8ia;bB)hk|UfaJ0L4D}=q z+a}KKSmQRYVN+YcKX^er2+H81FL^73O1@T*4M?wn{1QO<^lMfnZ}}FYxY3Y^tZ!zo zK)jJje47{~O5eD5{!$8J%%xCW{0>Y(F%a4m<#tnt?>8F8`!{YQS$zLqOutv_pK&|u z^b(hhFy55fPHy$eb$ym>^7?r<4Ug~>U_+`4>)$MeW~8tc`zAHl#?Qa1I!AU}_j}q+ zfUc8WPm9+QTy8aJvj*@u2N@|Sw;ua^v&)THr=3mUnR-IT{LY*DSCgi&F(EbIQP#+M z2G&W_X+Ze}QeVM?3cX`Xv~_e+0d%E6Qz0V>OeDg;j?!H;GJGxiAJb69r1nDs@89~A zM_?LE3NSq+8iR;f!l7s}DipCNwT5H@u%vF(u*yN}25YlUfAt%r1pEYrDf~!5H^_h) z!ZG()O@|s>25s2@iu>90cVKM<|0$7$Le-tbWBM)&{Q}Xs*|lIfTADyaBS2Vet)oyn z3x6?27UhrtZ_7k`=Gdedqatl1kfPg&aS3?XW}L84UZ3qZ)3iRU&;48l9l8KXHv%K1 zQpLmXl;d1jV785mIXC#9CB|RqdwkN!Mj%%uO#zrfp*>w`&G6{?j*ofhjx$+_gpT{f z2~>lVLoyo7$zighsgwKG6_AYRrKxxu=fV1tpIb@{80nY4Mh!DM8@zFWpj8zCgMMr` zl<91qH!El$609kQPNl^Tp0_^DzIdjY&;?+Cci-HfmzfRTra9E#w4yZN9VKa_Ay<>Ad+I57{1VV+U&Rqh)(Kq8o_aP#% zS`ZWIjDIR`zuK7TGTUr#%a9%vqPGGUNzBhhhIq+%<#)CjPF66L-WoN`jGte+(@E{X z%a`4L`$%KLqw8H}3TL)fAG~~SVBXAFFeXrk==J#!$kz=^cxlJS#~pUyJL+4)<(;Z3 z@z2gBf`-*4HjAz44QUxJ5U3wL73aRph{E_&VVEfRi($`HmHdex+1<2S<3>$dewMn_ z{WG8E?>@i!2e+$pfnCFs@bblRO9~c<&vfOfmR2&wZvy+*jhk6djfGJ1MORCU|WLa{P#Qg60&80iwjSC-dW}{ zS+2@*y^F!kem^$U!?7Rw7lp7C3gG=KD`kN9bu{^DWD+3hsM%)y?|a!i8Fp*XohHUP zzl3>q!}KYX_ZBb3;`1vcx7r+6I|~Z(ZgwjGyMT=VN$G&x_Ci{0?H`1Kp`h?pB?d8q zA|)_yRKtx}rPne07`bRJAmENoyC2m0D5?1k$J3m0IM7^7!|*U%^3Ml~cQ8Sp=+`yP zMlmUTA$NIG?-2P*YiPvt(4}-U$sbzC8epZ}W$HfT=L0iGM}%S97UOL2ahRZ)s=Wz- z!5hO_?IH4f?T3sGZS3-`W5;g18l4ojGb=?zZ4gkDca^ zT@H+}Z#}?xgBj^+dPM4`(GBzwBi&``PBKXul=_2Vmob`&VQ*TgxoZrzhEV=sOjVZe z0ajhx>B1QjddR{Wmum|}1MCYY7B1uJM6#`$-8pn!aeGmS{1W>T{YbY=f7OSrJz2W7 zi@)^tU>5x!()>;c0P=wJ{j&4vV+NbyC61r9P3l}-VPjiI1m-| zezoV#!HuR_l+S&dNq;sRJd-%VF9c;2&QYj->cV@$7W>{8H$*zf7EsnKo+Nrw!|I#Q zlVV@yLZ7+={om(OA`?)8ONydNp19n+jyq>PU~!%pyik2D>6{D+fgc|3 zYsrIr26Q%<#Ql*m-^w%axnrh~z_M+pG8z5Ur070lO73Husems-Os=ISN7uoD_#D;k zSN|RxbhTtoH#ZPHOb-VIZ2uZy*SUWkoljF5^1j0^Aizzu8~tj zKQ4f@9^>;<{j5AiGCy*it#+W@=iaBnI=KQMaRnDv@uKuqd>Tas1Tnh%yvGLUG=?ew##*ql z#4WdWHoQejgmrXgU)7!-csun);v{0ML<7pqJYZqG0OPIERO=RW@2+BfQ@~|oS1YMG z6sWkV@ataT&wp_*Dt2_unC%2>Oo%^ONDx<716cMNDf=l&ky}aCU(f~!i75@#iL`3l zDFrAZx!thz;JlZ->B9QS+}Ak^)cD>^?@HjJ3&8EUcG^+tUz;o26aZeu8uLqOFmNcx4>HpKR*-*MF0cJ2eg=#+`vbr4E=af$rSbwv8WGHN&Tz_D|m z@+iXT{Z8?FozD-uV8iJiQN`7gHA&PK$pX^2b;LYZ@K8mRp`nCzQWP>^_+1XsGas|CNKJgPAYVy!u zysgX0zRmK6i&k-H66E*HC~jafv@iM-bd_ud0_h>&v1Y-TO^BuRRvpnzA~%xJg}kYq z!Vyc+57EA3@ig7dACw#Xe(yvie{QLdP6e1F`!#;P$EB({5Ehi1n;YiB4qewpfJi!W zNDU9dT*+S(5^9hXbCdbUumE|LMOG#dfoy1t-g(rUfu=UQd9&B%d!kNWQHEiJg(rXO z;lOuy>!Q|JMLVIU7IG1QhFxa*($86VOXaH`)^cmlyDVUY0b8s z5q+lT8t;wI`}k^b(5Oi(69Vb*Fz%0vyTyk(P0~_x=kSBY)(BfcM{eGRAt(6NUJU2h z9Y)C?+}wjfup*U}l~>!`UD_3WSW&Am56zMo(UE~QlHthoI6KBq4a1Rv7evNrbFb3P z=Ee6#)yz=9G=8nphKry&s@Z9Ja4z%W^AGBN8j;5-2SJAD&{U;tDsH{8Xp6rVRtI(o zXu@VF+dr);NA(RZDEa*kcVjd|BQo+Onod>nk-~G3c~1j(BW4^!mzi+FI)(GyN^*9r zFC>Teh#oz15np+QGc2U0Qi11!P;S1+h$p8AXXj%fiH%xIU}NF*9JOI!Y~6_~2Ib_C zDa#Z5?Mr04OBk`8t&{h{7#tDAa#?K%i&!XR(mWh`d&0^e->|FBM5+t#7$xl9Vvu%M z3t9h6(|GwAC)C0@+7KVg&CBaf!>h|YEpOsbu-s|^+s<+XkK$_Z>y*DMpG--maW%QV zCOJ0vrNyn=H)R#aB8;+=lA79Fg5F4snTtbg$GN|tt@NPdhPc&IVnhbIuLTS$B##sY}%tpm4Cuu)4 zI^wEc^=>rWHm0O=qQHTFBVvXE|9P`NYIGIstK1$aVVK0haZt(eco(q_*)tZpR6rJg z+?D?pZ2ecvl1bY;Ev6;Gn(;g(wRy1Na1p=VQlBUgtYlA+>dfRj0emU1yC9)yU+$j1 z&ZIG8%R($dBH%3P_C4yokM*NrIa7LVzN_=!ST(wy1LUGQytkfo6-36Ef zx1Ju1TEXY)%6GrN^q70@CWx(Iobq+bj_Si&!1g>ilQ3Z+@%(&tM_5$M3B6Sa?Z!gv z;jV^WP<>i01{`8%ipN9VV_9!WGRqA%0DimS;YEC2U278)$D24`n#(OiH)tp4A8nZz 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 literal 0 HcmV?d00001 diff --git a/docs/images/day-2-operation/pgpool/pp-updating.png b/docs/images/day-2-operation/pgpool/pp-updating.png new file mode 100644 index 0000000000000000000000000000000000000000..4cf48faef78217deaa4e6066daedfad2a844cdf4 GIT binary patch literal 104899 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 z d(j4SZZn5qNiiR{mW5Os~NZ~+dwRe;C3os#}`PgJK#mVf`HRerN8wu*KhhSCm| zH`R-8PM^uvWaADw|8vlwxzF3O0(X|aa{Gim)OCl1ahJZTxqvTe<%!eElh_q|9nU*U zCT)QLR>h29`w^|YL=anC`0^@hM5^Ze0zK)OhcI5Gz6gOE4iq9s4Q8ge-kzT4qKk@y zJ5Tr9(Zn?gkob7Xowx*`edE-krmes!z`<^kIz$tvc=2_g3|T&KQqZY7S!g>FlMB0v ztQQrotspkCNTS?nLgH>~bES>3l_;`oh7=#%(C@q%Q@Ak|p+I%?MPAp8lzKi(;eUS1 zUI_&}meGU7bAlX13+XO>0*5ph_0guAGf|VHa)`ozQM$fTNflX7%y-*Y*|;ZXP_ItT zv<3GbB(I9!+ji=N;<#6_M*Jq(NE`2vesLX#(C6xlR$$Ni-%O2!$M71>FRMQ2abM{n zPnmx-QY`xgsrYJ+tWtk%MKvx+B=J-`ij0#;1gBR0_XAOyg})_eur4B#TflGJ*epfo z3s$rK^=3#|<3YdA=*|T-xvjr33IWkDxs7tgn{;JFxZ5u?+!w+5-{Q*aR=T2tsUVo^ zeen@nHuSy4p|2zpqIU)YK}^}N-P+mS_b4CE`>YM~-0A1be0D%9cw4j}@p1h6gq3;1 z#a zvV`#Qk<<+#4on?}Gf+ijB!tst#ytNTQ-2s2mmrjby3b57D@H7hk4C61%B`e^6-Q@e zGQMh9(kiecRqk8)e}T7t@xg6OTJcp>T4-KpeVrq)3D$%17ezb06P zKRTt3>MgrT@l)tRgd2JgeB@3d613$%!poPyW7eWFOR=L%qm3)Zgdv5y@W0%j_G5v( zn_j>$GzszsH7BIgE=QywE(COV3Q@(*tVL2{Q)6rN*~M!t8R{JzM75c)jMor-Pn zVt$rgW&XKfC>4YQGVl&^Ro7RJbA!F>09$2!UX4R<$5D|6R4b<={smZ?b^<~4w;W1- z+Wy~V>5hFxYDUtvl(EF)zA*dz8O3Y6H&g3cq>;bC+fjV7k(uSoIk~A4RaE*kta=!P=o1+hCeh_Y;+R*2LL*ExG?y>Ga{^5R5e}o z@HMUJB5!|o{>}(NC7ONzVdsWYTHoi#KMFck9;s=0S>+Q0H6HYgg zV0Z!To7O?_G2T3+71LNMb8pH+B2A`_@c@uWUL4Ob?z=YQSpu<^>#!3`0A{I{)5N)V zwE=)kga7xK9ynpB@_O|-SpH(l)}S;n$@1jtD)uV!d=N^u?zrPBjqz*WC9zSvaA7eJ z{5${T2eLpJ>!->&u{orjJ!P$0T-F3?ZS(fsR<+PfCf_*FtFXTNkc=1i3#!nqlpdZG zb2^*Dhxj!&KJn}!V4AOgv;^dBpbZq<9Piq?Tw(4|DA_N)sixzG z)1X@`Ea=c03vOkdMjJYGMoXOdgr9E~LrF=6%1rXvw2oEky8;}_Xu?dZ06qFS34t1% zN2C&$#Ad4?T&PbM3!0MX;Fu51EBL5>NfV)1+Uw}t&izGO67`~6G3voh{dQYc?`G#S zV!UW5&vGko35Vr|vB!Db#zd17+n))mxVf)R3ZM|rF9V07WNIlTx#K&tb*vP$C?8sQ zWF+lY8j=Ce^T`OPRk)brC8njx)zqL9+c?F0{Z@RYtW?8}MXQ|^z+`jte1AwMO6e(?|6?L77^ z#Mb27D{ubtgn3InUkd{rF4%`yXd-;#@{`)uWA7o+LKeSJrhBLU7P9s4B+}j6ZKXQG zu-?B*2G!T{&0}4g`07%PkQBnAbL@f?--ua{2gKza{jic-HFu@7L4k69 zPR${X&V5mkydSYI)m;b?tf36q5s}xXR(~L4bGQ+qHO;M^(ikeVKe+Zyy*-v=x6ZE$ z*tz*C6CI_2^c(kw%i;J0Y!b(vX)+*yd1HGm5qrK0&g*9+@oQCbJGq-I=Zf@Jxr4q&Gj;> zT^dC{J$zw&6So7%2mh-c-Ci|SXw&s)fhoi$xFAVr1sk4PJT@Qj8x1B!#eT6uJ~$#2 zvJLA(Pl-Oo5 zs>7eLfnT{txDkpvY=An831gD1VOW)20xIC&mZYd4?=!3krAk!vzx3JuD=8cgCG(0_ zo_E27qY5E_)8B}PaO{~($W4%OdgB)?y)eJiKHJ*xE$RHRcE&5u8FZNfymjKg`C9sPF z2YiX~?vbVw_3+2|HuaR|2t8Qb$@2(h=XL)ETDc`XO96* z6JP3rAUTEHee1u}VvCkFCQF$SzWWf)p-6okqQp7uAsw+SL2kSCSS9CHLQs(N4o@bW1T6S#M>VlV8XiL>oc=rx3W{v=Ioj$T;|k#;<^#J<1e!RvG4x7*9SMV zqCfK_aGjP%Dn#xUXP{tI*!0S+9hHeY@OZbk|DBo@B_@fbfzrwF8U`z7v|u zOajuMMqd`SuRzNfs#7BEp52i`vPtD8o5H*HSn!L1?&?s!o;kf|EIza@!2*LrRf&%$e4Y(J-Z(Iv!)xBjB3-!%$NGZuKdo__h1?tgico7xDJt)7I99Uks_136!^f3$L@j`e45x$(CvS!$ABs%(Gjjr`!FKX!p zykhLDVPE~22b*mr>T2+V8F`W7+QzG&+yG!+NcwkrA@Fzh=S$16yY;vap41*m&xRAZ z#Rm39uCWISuC3&Bio~Xy2e7^u%TmhgT6(h@5ltg>P>>Tw2AQYHWm87y-WPhO>G?mQKu?fV59%44nxphknmR)nB&}97!j_s6vm64}y|*@XWNGc!dcUy_lr#OD zW+(`8ed7$%O$rylgOI2u$QJ6TCg^!}Do}lq`)2;oEst1tvAch@?8~iLNWEt+dC6cy zlmfZWZg0+T$)TR&2<2fJQa9d1HOrkrsf;MKH%9tY=;7Ik06kFXnNsa;%@pK~T>KPl z*|L@eihf*qGZ1PTcjBIsyZK-d;oP#r7OjW#k=&OocmK#j+W)>pvNjs<0V6n}6`_r?j2)`7d|Vw7#hu{Xy#5yJa1)n7*wUd6o);CB7Ys-{hI3KybCm?y3|2VY`J zZBT3`EUQLWp!yBcv2L*AEwX4PoR575Ero4g?1&{SmL4L)iT?0=U9ehPTLTT}p7Znb zW{;D+-G)E!fvzP*FmW}th_=a2dOLn2G8nT6?O6u5g^K(B3F`-kn^Dk&hhB15TVVAs z04Z{t!KGky2}?j-`l&XTonVi}npA>2Ow&g}5&5YTO^QI((Bh{ZM_!{|u?~qz40+rR zeo<}oDpvyx7ua5zLX7UL`#+we1)jPX?#CEDp_oH?)e+sHOlRvz=o*if^_!XmX zAs^ZB0?yS_5HhVOq~cq2Ul3*H91u4uyF@IWeWo+$t^?VeH4!n|6y%j9MbHW0q2jL4 zy7@lCNiMvWBrQj=mJ?beITly(dYEbXT7;3`_kdzBC!S=njQfv=ezdZPIsf9MMOKa$ z;S@r3aDc_j3GwvobGzx!Pp)a=al$Xrq6v1V>OOb+K10PsmC7Vlv(3QS5l_qe>RtcV zyBI^9B7vgSy!-f|+c3jKd9ROK&Y-vr3$Fbt8`nB+=rUg^OYm25B8Cy|3ed)F)fAo1 zac+>yd6G^U89?k_Yz3N&7#HaKx-D3H+UvI(xnldY>ux-91$T= zvcnc;vc@bx`}_$wZK`LHpz7c_Tw$Gsu+m}BfZU5oB22jCko&}!!mH|MBQ$OQ05{do z_VbxRrDHQba8sC*GS?DZ9N2~1rzMiJ+719=C=AjzQXqRiY<$HjX8FOymk|}c?Ym-Z z>%QYvov!bTt>3B&pr*g}0ia}6#vo$Al5CMrwS&rz8zzAQWVMYs^9bi@KH09r+G_)^ zmPyR-W7%!^_zXL#>m)F-TbVw3sjiM_2RG^k3ConMne3V(n6 z>N!(l$q-vLGL45JK)1$;M_-gEs|i;8wx#r2znJh#ufdb_63g!1dV?gFMj81#B}dvw zB(DZ1q@PgxdveE4n;XtH=6cMjBks3K>J+>xurN2VN==PhW>8ee>p06Yv(H}`0B=3O zEBfF;tZwx_mE?7hc&94G-Z^D4!*lSGJ6YWpg9kExF9)5D3A=Cp% zR7||Cb=P`l8_ z?NZe#hd|fIpm>^R?RXB??>h837GXvk88prNN?lmwwziLcCFwp#`Y$IDLy(J|e|y@5 z-u0Od_0QX##B*&eN5r+6Z2Zb@a*_YX)mKJE8FuZ`(jn3*2#AzOw=@zW-5?Cz4MR$I zcT1>rN)JPKNjC@#-9z_zeBbXo>#Xx@{>+*+&vW0qu6^xmS1ZK8ZqFXt0)+(#OWQON zUz^4ORI&e7PfN%OvHFF)KN}*a*m7Qg8Jk|2ey&jZT2kMpgu_^F5Q=iJO~_h5`&oo{ z75MNP!5z5w3wn*3B7K2T*y~9lo{Ay~GP=r)1l z6JEiDkdSr!c?u`7;+S|q$m2L0{cHT7X%GcDxl~ogu{H4W>4|$CT4LvaFMWY`8_-ezVk;P8FPEUhBGrX`%Tc1;70$%?|nM zj#9r-=H^C*RV9o(Uv*76lzb;xm35P(`BR)wQ;I-7@%T0aNICyopizBexUZD>VB>!F z*AXlIgT0pYJYZmf<_uP(od^jU7Mf5l_Jd$+RNwSl+-6p!Kg;h6F_|~#&+>XHv$hG* z;&*2xBMC73N7-)%_-2a(ydidV*u0v3IeIkE!s8;GpPXtUVy}HlL#($qLwBJ(q0Rf2 zS9MMF_M&USgXsqt=a3D>5|ec_70Knw_Ol z*Z~?vFRSk5-Q_{S+-DE&0O7fV>$T^OfnCKXL6gs3x!~4T09unB=l!~r3%XG*=wm$M zh1J_a1njtg3cxnl$67INs2^C|wJ3Ft>hkOlvSv?A^9kC3lTSRY9MBJ-gRTSG-oK^8 z*$)c!E=2ZrNx;A2f9`!MTz>po7J#_Y@yhW}%m2+IUTfE$z(*&9(Gzhgv2H)`sM~zt zWa|2|IZ8bMS_&Og403isR4+@!e@HVFX2lw<#jF=K{Pq^wy1$A3`HOgp5rUa6tIP#o zQ5K`NWVgX5(xC#R7bvf-b=aqGo8=;CqGWXnqbxSqXorE{J6QYCfv!0|df;@7Y!Hx4 z^sb0CLUuP^)CU+d%9y3$mWl6Q8ButC87aWhv}w03%DvUSKGlstKkD|VxZ;_I9wMBS z)tHkb$sKwpk4zsL>~k%Qs|Q@!{q1wD6$cja73LgITeWii{E?GZ17 z&s16WD@wkB(rnK6Sq?WVC3UaTFQQ9YYqlP+ztoY04rzR;WPT~_me_j*@NvsNVM)JL z;N$Vb8XoDGteyNk6R+lT3-skHI7;zxJyhM~EJ`|+7o$jBQO=h++Q!iLo9b`I8(c^0 ziSg7Pbxe!+0*Nh!F0+#af3+gQ$MVEDkVpWydp0H}=6~;q%~K@RgIiB^$==Ov=$6`r zeSolyR(7du-_WCvY0i6%*<2>YvChmW| z?>oF`QZ)GgO1+`X(mL*eoWw2VX;r%TPy)!cQ-2&urcqhWQ7+(D{-<0(WfiD3@8uRA zof8M~rK;WtbCJQ((X3c;@D*tt{`7b%lF#-dB&X9*NB?Dz-r(akVBe0WvE5y@UUpa` zn2IkanDw>k2spA5_T)NITYRCctQff1qF0U_->(nV3Mo#bX$T*U4-(Uf2B9-Vep?{$J1rOq$$LjIu!4A#fD zzn@l|#_ti11@sugCxwcEcI&3o(GQj+>8rQ#7V76#Z1CE;_>_u(%1&x$XT!aH6Rw_n z>m~8^YOLw#a(uEkqQ(O?3Q+O{lJ)-Q(N(u}3p6(37;!d2{*2h3M zAND1?R02p zj^beplI+^}U2_U#XjX>B0x^}hZH!p`I6POSDKB$*yysd_8v=cKc=W6nSynWp~7vU@T!JpL~Hx|lCFg;LK@gdtq`oM-|uEu3+drvoS&XD42IG5rqec`9e z2lo}CnE|e))BE8ymSc9C@gu>jPEE`u_;|icyHTx0ps<$JZD`vz*2y>@4L)wGVod2* z&pJlp^F!H|GbMH(pY_Kt2pd=PSrZ!8Qic#p`GaI5>S=J0vT^PY@xr%}@oHEe^p*}n zgLW+xv~ijG@q>1)sjcorQ1_NXpf~t=&L0|)zh3fC-xHQ+6WqOm2^`a;{keyh$#EbZ zgv){=Pqg*m@23gKu`y_YPV+$DwaS>g3^Z1oI>Iv+bFIbNI_SaA$WZj!ECb1z_)n+Z zIk|btSmT2VdXP2g9hf}VoFODPyunnM3|X#7l^OE%fjFP5@U;aZYQ1zk z-d?YT3F`Q#AmLd50zA;OvgH`gka ztf)`e5Rs%{AHS@#C;4~f-3B4i5kE5z`ZykRxS%f>c7-O?IadB6mr1O5uUO#n%*gNs z3Re+evY-#>Bn1=rlSLj@6e#^*>4p!g1&F&wl57S9sw0 z^T}@LOg9PP28b?udEe1Hw`l+y&Uk9+9&Yb^p@l?m-MBz+>e)SlAiz@Xh;OJFio`(W z@%RJB$ln5*`}V%mPs;-doWmXDif#GG0CkJ+A59P?a=?Ngt{9O8EEhUUlC$IWmuI16 z>i>gHPz*OU&@5-i?#JLGHNvhyKYtLv_5~b%8_jhf6HdG{WJf_IsDB`0@;|mcciVBL zD5ZqmHKlwZyM`FIxtI3qwfGmNZ#@2_w0Iv7g?_;^)Oed7CteF$6!GcWB6*+*+20OMw0$<1NQ&buM zIl#I-hyYk)j`Kj9D~CI3fMUR)5IZ__aiUG8f;^u!#ZB%d_d^3v0hIKC)ARe9tt0cv z^0oZk$E}V;eaI_agS+sV=g0@j-hS*FsqxJ8j-GCLokd8iOx8#4=D73@<-VMx`y&$g zA8Fu!NK(1S_ZToDpZg%PjZrK%<`}dx~t`)?VmFDe@6U&u2e&@cwg%)g7W;&xnQ|^AzS=R4-tvFnqj69??O*~&>X$zmq1hRtOYc6f&)4mUxG1a5b}2AE;nCbD#Kc0Gti ze6_TGOYX*z?_^Xu<$)J%N%YAz4=i;4s|@$=Xd`bX4at4p(Zl#iRur^fkBjfzFx!}^ zCHlN`Ul5X~9=@j%3T7OSTncpBe7(UvF~%>J%M-L4@|Wl; zYlY|+YNvvU#&{)9e51&0ye@@7$8$CXi{;PV0o;$Ph{yBg#D=HumR#742=-qMaPhcg zXL5-CG`4#j1p!TDfG?(+^`B;r$jUYHz}ZyV>uSdkBYgzUpyFI7?+#pN+GrXVZC>e^DxN8 zhL{s<=$+>@SLmB{OnF@ zdyM7vFS4ww-2Q8gU()w3DJ)Uba^rH1mlnhML#vo}A)e4O{gTmMINr{N2pD@c$|!nE zKv#V+!$S->gtjVxMm{q4%4oasvH4g&{(5kS!E>iA2Qp_TGUTwNe}im3%4-XHE}c!; zj0x9AX>aL!XtGMky3NY~zG3nt7Ub3ide5QL&@U{zyXyhJEpDA2d3-CP8OCO$CEER{Q6e2i{Cp^1qogPtkE2vUuBSHnNMzU8&cI$M;Y>q+ z)kyCfcSGcY(HLqBm;e(nUdH<$t`xw>2b^W3G9LD)ZH^`jzhrt!`>;%v7TWkKZwsvR zi$7*)=ifhH6|up%6sn|Q^vgGvTPsyu7Apzv1utjV0?&kggj4KBeVgb+*V4d3`?MmR ziwXanT^`T?p;k+7H-RMz9l_Ioc;G*pVZHM!COT?lsSwhPD#DrLWIt-KRI&qaSa_As z<;rSYGEev!7~4r86wUJRRXqOk^AxX?_*8%6WankXp30I&?~&(N9^5M6i`z!?_v-oE zE5lX8(?s&vxqAn$YJHaMlVFzmFE0J6MC#%F!T@#g*!PkCSm7ztLvvO27d)%=3Gu@|3T|81H$uQpg%e z>>5fTXiW8dUc@(BxS=lcL6fp0@|jv{c^Q!JoS;1pqVr?RFiLHvhB?i$Vo4im*4cl= z2NE8q{&6YiE^h3j@s_D8*;C8|-F=|4YvcR$pUTcTe>FSG^w#mF+86s%?Y^*g&-`Em z30erl>wlaO3U#3CmzuSNML${IIvWX)6`g{LYz;sJ^->|xil_yBc-sdDobh~gqi}s# zKNtQSmSpp_`Bo+!C~fiGTYBo9Mllg-V}3tPaz>mzkmW_Xl>o>8=e@mweK!JU^k~nL zokotbZ%P4}?8^(|Ttg57__fZJnr^GAN2W@fY!JkUt+a}?aql1=bSQW5s7m+y=TUYh z*4Akfs)SQlZOrr|tc3QYbx60z=N3!m=kjs9k)anBO?eypqJx%~PNx|pH=m@USEs$c z7FF8pvf#0$3oU*pgtLUpe%1frzoH+0v5U{__;i zAlOA|E~MKXm{o~GtTQlU0y|m+dY+80h171kp@Wr>`M_-o){Zk4x_; z1;NCGj9cL!4Hx0a^UYP{G;fajcr=tFn-BN9lFLVodOtTfG}}$qwNQ@ z%Ld)4cq=)>52N^2*P4}P$Kpg1IwB&x9**`V6pe z?fx@?08q-yXisi37=?wlKu>|*CJ+Ak?OUak6IWfr_TKXNd}}1@S<6vp7lI63I>=a? z()qUGNP_26f6$d6XToS`^iFQnaCIkipJ2ghFF*qmMpYpg^Fxmvq&~zJ?fREf!Qu5` z5}=$zmUc%0{lmQu`*g;szn7FfN0KLd1E;{9>uzXIb;1IvQB`HwDQkPTDNF_`(Q?4B z&a{=x*v%g}t`|>45K9ZM`dGdgJ9x(c;WQAnyP4vTSd4f}&hM4wj5u-lM~C35h7f;9 z8HR>a|ft;0!hPt}RBG>nS{_2ylhewZ1{(QjgcwER_JGb(z3> z$iDgpDQ-NEueHVd32E+xu({nDQpEH5Pq4Gzn&KH^jRM=SMjq22{Sp>jwuy}whANT4 zjA;i$@kWpr+-sIoki>Ts-?o#L;zV{wIETLITLG)-at!Vt z+_e6`35$9hEqs2qp!Rv{=VOwak}a+E3r|e6Y5~-G)FHoM({dIejLa231x*; z`@QtUi;%iw#DS~J!*txHdBQ9Bu%ATO))2h$B7(M8?~|H#U{dsZ42_g5+i#3cw?U0?H3CG|a0!LaP3hr@OBrPZf6*rNO&#G@Cno-UEAilmUaYHk4 z!PO{VyggLnznUc)>up+3wx8QmuCO|S@fr&PW3;&b3>>WuljhKwm9(^-b?E1d?&e6GmX zVL3PQ{1+z&Mv#GU#uGp1SVAVQl6OY3#L@rOX>XCEi`lMB2TL0AQqcI3pQ0Y;{0%Tu z4559oSSRsqc4ktNV)Mm9hnywKMRl`kP_`mNZG%=;X8|xyhj&-Yn^G{bqQKxL2aI!T z8$dSTf{;uv!a`Njfx4TmAMG1CRTuo8cf3#$cS6oG_RV1jKbb@Ss_zAwaT_2H{F=nh z_e=dT+rkXzB$OqtY@}QnJjLO9E;t+*vU&a4 zK*?YB^a3Y*!9`ItBqKS`iw!!}ef4O(CBGO9}?Vv4D+EKuxzkSYe`Nf6OR zEe!|%hlet#)1{^E$1m5 zaQ%b6h~`@KX21nKFE4g$s5hMKk+cZUb3FvF{wslBbDmSbJbEVx&(VgQI;eNKMnhT# zzX`;S^weYLKUu9gV}bR4^Q6ypT|lq5|A3J(-owGVb13HlkdJ7~2;DYXyx#f>*l;N^Qg2x!pt#V|zT*D|W`sc%0eBgf5^WgN^JSV&l5*Z|WZ9bk(D8z($}g ztuTO!D`fiL8tlI#H43yR@-A3?Lt3Z6;Y#`KyFQZVyJ8{T+&Mu(Q#oN^M5jNQJA(3c zZb`?x-_hecg(Q%<(rhN_d?Ur$H6<@{u%9@|uVpY2^%<2B!K{y$9SK}FbEW3dx;|5f z36T_@JeMTJ*N>4$VGe(dSU8O3We8JY2L0>0A}?nRd&QA$*rvpRu>`i2Qm3)4mk+0qqVbp0EZO>izR_49; zy_J@F$3b_$l$W4)NAc7DtjuzBDp}0<;K{{j$8goP2(X}jdd(X>sv}Qx1@wx zendm}(6*~$@A3BEvaft*qTH9?`>K$1mkpg{E0bSH#8#F-)HrG!M|$@U~3Nu>8r(gm^*Zjqzm^vSqMRe zd}CjLM}BBn+&F3G#myYM$XeSiRR+Q$NH%tq__5>Z}N_H zfbgm<8zegY0&@|NxT-%it>qF4Kpbt2|Kr1Vzos>4 z9ad%w`F%>MF|gdT8f)a*P$O4JNld;u3SCq6^M!rhpn2wY%_a(j6!o^M_%xwCC+=i5 zvW@*&bgg)_2BG4eOFY-4K7*Za&|IvKCY7(xsBA`Kr(CV-u;6WW|4g*xYQt=ThBgCm z!iguS@g4_PC+Wf-JpTDq@2xOmbD*@@lYaFtw(BkN7nG3}EPs6e6wEV{)LMTN$>ua9l+Wcky!{Ut9D17;A2 zLzoOtNRMyloBDY!AF*kb16QB#DRb||3d6+0NDMQ+k)7?$Tc$=Y1{N{#@gB zB36UmiqFay*fcAio5F&b{}~)t1?pe5@rpCVW?Qlkc6nK~S^&B{VB_KL9pF9gMjQZ5 z_+uGz$~=RwB|CO8!f(HXNC;itw)_j7dM1~r^Yy4@ao7DcRNiCuYqtijM>8q_nPaIT z%R7fF+rl|BJn*dV@ zns7)_wgPF}jYYJ+Ck_W&(>IcxyiF0&ABZ8cy49ZNM6Ao6sP#&Xe|$DQV2Ae@?W=b| zabpVF-WX&{m1ndL7aK-W)QuMwfPqE=2l?DsjF=>5*Hbch)<;l4xd!9))aG!nt zkUe~}eNXY=)xNz-I=@I!x!gC@b@0$^E8s~8pW%}_Fw1Sbi;SX&AO4!fG)MrB%-@d( zjni2uR!KHrjR5SfZxDE)n9pz>_@;blWlckQQ?l! zx9$DdDxs^0>1SpkIn68GfCHtf8TojBDni#5^rZLs@lZpv>(0r}ueYEc!wj%c34!vZ zdqR(?8y3-_w&-x>vCZzwH2lUEjPp5zF7@LbMS_nMtjRN z0}nja-u7d7L4cl1+i2#3pu*?np8XATsVc~~XCF6$ld9%{Dn5BIB8{n0@KqSayk>rX z^teAk1$Yr&Hs4aU%EkkiGNg)K#gjYJN3!8Iwpbo=7hg@iK3xXItqZ(}VN{F*A9uf; zrc~-D<-jN^oEmkzrd&iEC==El)Nzb1=q2qQLJ{UgZeHPDNd>^3e44Dv&2i(Xn}aBB zw;IQ$6~Ps$P8w5ZJ$u`yPdAf$@jybds2=si_rLGgVdZQ&zFddKf!ANJlC6pWxAk+y zKVg z<|XXkH!hS!_m4)EInF1X3Wni;vtKZ-}&Roj^ z>Uq9?v9mm@*a=r4gs)sYm)PZ*acfnJ>7!ZQET*K0SQUP;;^j?C2H@H#G7})N?G5Nr z|517|xZ5L{xFpF?Y`BbB^CN`13cmS=RrT6`D_I9n|0`4P(hac%>rl^3WDP(NBB~RD zjy#fd`$96eAov3VZs*enIcm(0%g3$wE3^OPkxWnHYWGFG0b15hGtb}yLGy~LP0^Vn zZlfXUs|8diwJo0de9k?AeH!RHXDEpR2tLDcAlkN7bh{F*BG@!pY z#3Y;q0u!7(AKN^|tBj$xB^dynleB#UZtS0Xhjs1m>hyfFF&8)Z4+{!`e$QWY3U-{$ zztd##-HEV1tHwxxDn#t|N&Q+c{QJN5J-8NYmgPUuQMu6PZeAZ;HeOfHs9RM16%p<~ z(waOG7||}0IPTLgR$c2Ropnp?lp+ilYN33+ij5!owUcByGZOpsOBNiMUyCnTTLV?! z4C~vj3{>!>3W)~!RTV{LTDp=D4xIb=W*AvRp~b>mftjt@#}CIXf?!j4+wPQ7S};cz zE&$LEGOMWnOUKpgt~r#aABcoTNEU7vPeQuw%1T}hEf}Md6MyTdN%#Vr6ClZP|CP`R zY;Sp%>>J>X!1m)9O!(olKT$bnFW_T_C^wzKyPL0o5$J(ugi=;6w3~R$1128;iFzHr zBHqdFi;Aen1#UmKp|U{KcT_PGSl2LV#n&$*vsLVEksR*4r&g^1x=JJFgxQKa1F~Ax z7%{jfT=nQ0Y@SOfZ2LB}N&Lq>@w}x<83ga&aLas{e9#SME$tp2yd=$74pxb(jGP_L zj$aA(C8{r|cb`2%1+zL=zUQGFzf97lbA6u18&^`6&3A+8)e}d_UUPA0dVZ%dhiUi8 z*OJgaoWykwPuHX_L@o7GV8ye9PnXTtA`m{!E>+X`85w#W{va(bFL<8MZ0Mu-_+83m zMWYc(k3^~3pzJr_(?jMB{|bBlTKrqP z#&ey99!RM?EWE9gqNI(8GdODbUikugRBCtf3|(lBe8D2V>okAyjAj?=!}tPK-NrhF z8GX6--<7G%!7k`qWI_^7kJiJQfYCpl%nA+<_5dt}n4N+!UQzrf74TRd#UTAZy|3F= z8f*LISM9UNG>-?F6ffU{B^Ynr^jCf3%WBT5{ujCL}TK#C?aq-zKoCzK+n<7^&!s zkL)NF->f=$?H@~CdI}woL@PG0yjH$D)G{Sn2<)Oy;gQq##jFApNl&aqogKOH&U%0x zB-sgrB67T-w8h5yHlZ~S0|u^4t(bw&ktjo;_?IM=7-0reGK_0g$B`XK zfFpE|=oH4x_@`R7VsI9)hig{3W)tdZWGg^R>He9Os6LE?4$E$H>VmaaX*;gzL)IwL zUcQ5qgTCITy8u$O6{MEBZ~DV*v59YvlMENPieKo_a?@H5>$J`_yVa0*dK@+)bF#U2 z)gbWHE|(GHmRECMSNF*uyl+1}2qiswlRNl7(ZkBv=iSQpkyLq~=B>S~Gmf!=s1M** zjqfJ|WI38c($XRu^@QN(#D}Z`7Ii0+C)THX+vGidh9LbD=AQE6u!pGgg8C12UjFCP zJ2h6yRM0BAa1SwH;MSt_Fs$XX^nIi3KcTdJb^`)~yoAB)ECZ?t3qYhpHLS<_vx@6K zEf#z86NOw|!nm0dPJ^%h4NrRO)l=4ExIyJ%9I#f@kCm*rPvrtV9~dUprV>)BBny?e zj6?tlnAZn;aXp&Gc?Z+_Z)Fjp8oZeaz)af0In*;*8~D5Q0XgPY~u07(xdeOmir%X@# zcGRwX!Q({)g#)PT*9Lf`iggAwmU+PM2#en32T}>3PoCi=ATwwL>hXi<@K2ky+$mtK za3!87)b$ZpmPatX`uC*01?TfP=k=)+J{MSJVI8Z*fVSE~j`@igtLnTOB6X72{cEls z1%vY#$0lFF{Ey!ikxtTHz2(`;+%HQY+P4Y!^4@)}^WgZXk^^4sXtge{wHcCM(D;!eikar*Dj`*4o~OQA-56%BqZbHo|vz9I%!TI?sff@98fzhJ*RUMA^3 zIvzu2saz{{eR%G5=_Sr??R$Srw0Ey3h99;43+g%9R9PvNhI{ z9zB(7syzxfJR|m&IGnKZdA~zysE&H%bs<}N3lymgce%5_PT{ns5(SIvUCqg%WN<|t zuO~EF+~ve%-8~9Ym3QMr_OqmVz=f?9FN5+R`l7sUBRyOnKT4Qx-!)7*>uj!Sd!YR# zIFZd;S%`Sf_{?hKhD_U7moW4%g4oUFbx=bq`C>%92e`sadp=O(3>=ypFqlq%Tmpx86l!XNR^8t$=+C_(dh};OnYyvLADy% zqNUccBDuEbF=1hi>L>SBb`mOd^X?c88qU^P`sm?Uf5>USc8}AZ+Y*+ix!lu1ie+wJ z+0!*58%d|^Rl%{zQsZRQ{Rl6ryJ#>a0u8n3k=DU+WvVPiCpigK-z7A)N zb@cj{ZIMtN%RpGmnXlPvwEGD zN)*Mv^6>Vl2DD5Vt-u^qhPvM*YMwyL=%5?F=C| z6!k-=q((Dv7L1m*y%G*7BL>SV8+9c{Q=sb@hU7<`G`?M9E9)AWc0L?tQ-!Pwc56U{ z4%k;COB1I&?(84}TWG84>d`c*s~;z!OE>N+80L1BA62lp5!?|Fz9D>)5?9{?9e&U> zzI+mTPbAh=nRI)dvef_HfRZpF$|ONnDyOnx0F)t{YjRS9)PMaDoyC}10x~8rQoq$2Dz5=)JBu^auPJZ2W%Vm%9@0{-Z(?{_}xx283(FjO8aoTb1IidrhY4!AG}?U(eUWOpn!_s<3{Z4CL@RF}OmlOkDmlZ2&Mdv* zG`Yh{dURNMF1;Bh$_#MY0 zGxSahjbKM;V1G>py4lnY&pto2l>mJ%#!6^NV*$;AXkOp>Sh?(J-ed6sD3q!X>xmKm3!n1J!V{*pKi&i$xkhMPv-h21N^9Ne} zWTKkLZ!adz49~E?QqZs&v-O_9GtL-u%qS(=hS6HiOz!*$HH!Wu{7pESg$S%_Tz~$@ zEO^&p?v*|s5qLQD+AZ$A;}boEM^d1X<{Vud>-aVEd5cd{)Z!f9w!z2c?I=%{*gs`*r@BZPZ@$|cEkI44=8+wO z-_YKZ85$7~gQ>`s+2PRKRJtl2wCGRxvQjWKZD9MDnq~PvqdSHjN@G2pPi4TbFZ;zf z`n&sQHeMf<4Fz9F8>3T^MOHVdlTtJfN?FvJ26r{K4*6|=4gA!^`2tL*^$w1k`<~v% zPGB`RpS8XSJNp^``~x-p^`ry8+bv%+_PzC|O$KeTB^#eKM?Gjy{Zs#ds2^gIreW|} zQK*@rooF)~hWM#Y{RYHo6)-L2PzlI?Kq$skh>Vw3YV z52UKq;-0by2*8LfFVbuGUSnHO8(#*zld^||ga|o+J}=rG3SHwX_@xYe+H-NZ5q{RW zCV>7_gf448c-0FpXrGGXHUIX$tb1E76wf4ek`V7DB7rayN0K}!;4y{*yUI{ zg}6@m-qx;WTp}2;)|&YBNt)(13~kNbXl$jo)xTV~VX3~KMt)-<(&OR9vYNG0jpFUy z=lhVX9zg$#T|hL}b#|>X8|%ieQyN0%UNUi!;fir0lfG34f9Q&u@K{v3h)TYivq@Lp zNihcZY222#`{?n~GzC@>ui87xEXd?9k9UgHWNrMR<+f1ZK_G`Y%Q&smv%+ zztW6Uc16eVkuM|8CL4XjX*cX(;=-D+Fd@WfMQLZA`@>Oy?V!w|1?x`#FtX^W^tAkA zj+>GPbQtNp)DPK_`)`6lCbK_W)8+WWsCT8K8kMj5u7m2;icfT8YrFAIg!hdV(2f&c z3QVtPBxpPUG)#*}NwDmPJywa@-Pt}(S^#MRhw%;LmZH3&3BH$Hul7J{X1{a3_X(=- z_2kE3Wtwm;o_ED9(12pwEtenMda#AW(=)7wo%^po<}09uh)sgiH0oVlmxvP=|NWTn zdwR(hsN}?7=hwWa^?_++ZM6FvFc|das(VjwkB3YYmrb78^NzBE-*b`4zNb z0vvnM{#I>gy)aWJDJlEle-}Qa``2jfOAbfdzz3V2No+9V%8WbcrwVQYOM<*m2_y-c zxAx!#)!zpP4oRM&dnqBijT)+D8a|;baW_0*ws=-)~&_hqTcbIKcqN_A6V8+-{oAzte!eQY#-=Z7*}VQnkmOhTxcVth)8W$w@x zGj9-+_LXM5H7NMP21j&zuMSmCuJxP8PyLU15jdNCdoS-kHyf&LFmKXmgr2cf(qFq8 z2sC+(Ye2Xp-_e!9fbrFytaS!Y(4_dKj}_f8-0;)xc$8;aZC!Z_w^105I+sWh5Hlm2>@7~ok_hB!xb$W1QIHvr@Sc%uKdDV8=G^MByY_M%@RA zSdk{S@yCw4FGhEwo@1X8Q?PWdOR2BgL(289PM->WAkm^Q1`@5$`3(a}W00i`mob(7 zPaZ3D&eD@xb(3blC$DQ#&fsCth8f%_m33sT&uzW5O@_XT2$lC~Y(i0R*V-6+TuX53 zG7MZPF7FecLdG_r1!64*qd{sZYv&W^CVQ7!GQ)gL5~}v^9|&uG#9s#vk$mij;|0=A zw;oJG9yTPu<6qGL(kHQT<4EC%vL!dio&Gx~5Zp!zIl5 z(~b0siAcQ)yFc}3q_En{K*KNj2YLPUl78h41Kt?o!?`|MOWTo<iI^hONzb^a5Tof2B`^P@oV)BKXtcCN96L-VpXNWQyn|L}*wBOM2YihmU|%lUrW z_SnSfEl3M;s*|{J?i>n~LZY(pNJ^WXvXbB&D9>ggcP_E!)msEG#`^eDwn)Ja!J^+L}NWAMn=j&`xX99rD*W_ zg@`_jf3#BA@mF(eGR>oQpn`fVI7V-d%Ew}V~?6WYR;vI7%SiP&iA|=sr4P3 znoTj;UsQc4=IAW-O&Jih=)IV}-z8yQA!}r(8LR9mk0H*k^Z+|X(Wkgh=4LETjFNyG zKrL6~E7b$u>yO4zb!e{nSQvoCbN)&SFd3 zq8r)4!)O~JVy@CBpH!XFY&dp`#>IsRztqSYQWN`pUEATXjL1K-FP#`OPT29e3!5K* zqTzH2;-{nI>!FJa&kp^KP?7@XUppJyAX1QSD-6$GBS}hxovdgf(>pD@YEZUv*t`pD zDf=tJD4YH9-R;KxCyVWp?|XzLO{TM%M3@zeSIY@#t2L>nfP4GI7dcNAx=LNMH{3lJ)*UQc>SqStZa{_?np5 zp&e~XZS`#dkAT}1(nh1cRQqYDN7s>1GkTD@f%wRF*1QKmi}=6-qp(7eGVJ^9#s}+9 zyk6=2bAx#iXYXmT>|xvf4Bm=COFL_LH%SJbBy;4z>2CQcFQA5mW_@TeN(SrC{W+kv z9-`${c>O#Lt7<#z6GG;+&BoP>ou*R zZ*o+$nF^`M8w3C`7H22Po5JlulBA~@#sI2B@U;J?_k92t02(a+0}Y(XC%5V^k3=;8 zYG>0y34EIBlc6jE6aH3M)sBQbnSt5x=QGe)*()-OB|HGWS|fRyyU8N{L@6^ z=~U!PQ>ymj8~&q=^M=E*=5GX1?2Dp1eN+9ZPg5f|@9#c5{CqX%^F$Ph9nl&w<6Zgp z0ld|3rSzc>`tF2>1b^wq&jSvGqRL$nhSu$xD;D@++N^uXIDdXHOZA$FR?F{MQ5%yr zA?BD@U@+5p{M_FrVN#PLk4E41LX=;SjIMM@B0wyerp-JF*ut%tpAv$yNGv< zrhZzPK8@jx7-w{L{6VKIuX&8BsK~0GY;-y00cU`S)T8^Uv3lBgH5VWx!ACb#4+q#) zA%3z_?^b!q*#A!HgzR$FLC=$?4l_Hod8t8y!V3R@4;f0+Qm8#koD5lf@=q<8Co5 zhpnUbHK;< zotz{DwMI}X220|E+8}>_5gD=Oa=6x=6^?l*y^J-P;p|TpT5NVu%??KF^S^kPdoTH~ zCM&6Q9j;&|%kw5eX4;L9Pe)jpM}XXA%RhP497jX+S#OG8sQY^&wuQ;Oe*I&cN31$8 z!m=G43P0aH1Zp*(lJ;EJa-l04j#q%c+5V5exp#K1g?u67bBN*xkVgUxA*!f7x7OGw z(6|{-cRYS*d}jbU7EACN zY}nIg5l8w~BP-6t-em0OhRg};(!`*M#<#5{toP0;h@qo(O#D|bp%EN?jZv&IGK7`R1T5v&~_xp}OP&NiSOgty8D?$Jfj@(#*IsN1zKL_~ry0l2> z8S3Pq-sLx5IYfJt+9l~DLRx8DJM7$4Q>f|il&Y!JK_QcmePh_9vE0tUVtFNMXPk!d z-uM^@)2q;{P3JtwTn;nILI&BufDhcp-CY~zR_X9-$)WVJbN9zac(^dizdw!9{j)Na zgbn0cvJqaa)>FB#^Y$#&eu%h#I+?Bw5|+#O5pOjwHFL96n!3Bm8~BY}q9t6RS?azA z6Ck&u4g_+m=3siTbZp3Q#{c2!EBvDRwzsc=pn!mM%h26|q|%bo4bsvr45{SM4&6wD zlt{w>(nBMubPO#uC>`%P-rxP+`+5I>IeYK5*M8Po&wBQrsMQ6Y2$AV{6-?@-I9L0V zC<{B)v^#KVsgDDiuSsP4ohO$6;P!brU6{$v z%ifE|%MVZ0v|f{nP@U2o-p4aS4p1~z??mHL?iHol9FSNinJZ{4$nbiBTA?}JmAc-Y%Ja5L1w98O&;6vt2TY)Yh1F6E%YS) zyK%Hj2XalgE+>DC^iMxXvnNk{;VQ!~PX9vB=XF2v~K@nq%T(7Kuzwl``*wmAET zwBu&6SG^2~SYQI!hOTOWZAkIh*N9j%9*`~`UQOLf%Vb47&QY^LE|~(HVt0ODdqg2fhA2TKWyi6ZzZT~|-y{~XsX-vgDcTgN z2*m5Kb)E7~Nkz_mce{9%Tu-yL#X?{rFKmdR;|uoOCWsOi9SR?7CVy7c4V6ibeew~UFo}SG@8S8H3Beik6ddJk0VUl45rxbif{Jl~$!6Hm0EEL(YD&Fh{6sBR3vF^^|_A2(olyQ=6qiNn8o zS(+Olj?+8K>0jm;_eUMz?#W6Kjqj0;;8+bj(3Qu~JHPu!2YU$A6F}-Va0x-hLmaM} z0XVoP#D)`17UmiQWONO0_5z@sXte{?j!<@?9@mM_8u&j{aBoAJ`45I%1I9{P2{O%= zHfQXVUv80!D^JBr!;rWj$=2}NZ!LMP9I+6tyqcA zWdtF~v!k<#Ujt4b0;sGCa59@#bM=mHa3S+F%^BL~Gw8s$DpzZ_Z(n zIh^JONI}yx?nU{f7&wPmPLsUTA=|v@D%()4yRle>r<=XF2=flP8pi$%G`R$(*-v3e zPH;w>y77^3Dtb*8J&(hdKJsjxrkfd{@Ki`~?F< zwRV@3KkP2a->vR7aiqbq%8l7)+I}u{0o@fb(l{hF=)cUCp{&FIa^FjPH}xEA*UIpl z$C2Dvm=E?7`^Qps^*xGJuThh}HLh~2PEc1O9y`~CVAS`G;$QBG-VaNE0?{@T=nIc3 znwVtgcPBg{B`p>X13JNg&-eB@CC$(W(mun(E061OUHj}{zcTa7DtiZN8p4o4l`=D3 z-I2@L(uskfCytGGdgQHC0?D-;n|YeILZdCauE1RqV9~ zPs9O3^47|dF-BGHw&#Hqkb!Sl7>>QA%uXV$af?GJ?9hJwvi}k-%wA9Zjw98E`I-&z z;fQMFad|X3znnU1Z?;a!m8z>&U_=M?YOejvk5AepL56FNF*d`BQ(4y1qxrgs*y{Nh z?zj}EvBVr8;UxETw$7+=+o^m@2WbF9ai)?9gWn{@eMb^Qv4~e~m&uBhVVOQri37C? zA&eW}G!ClgwDAtP??F&KWidY;bf`voI3xIpq5Yz5)EC46bMy)>D>WfpO^^S8yqh_he-TIM;&N88+abHc8 z=d1a2onKRinUQa{t({{MThmfQy1HZ`D2@jwfvkT4QJTA(lpD zQsEab=N8)DAJLRMPc70`+yC-n-@A0o6ov@>-u-?I7-6zJ1~?i-BLt$G5KZ9#gdra&|rO;l)Xq2C_Ry4nPc>+ue5Gt|D*sQ6~Ro_@7ae}l}lqy>|% z_1!~<=n!WwPANWiGfqX>t)+rJYpvISP{Ad-BS6UT|AyX66$<(0tPp9Te%yE=bhWvh zhL&Qpz5M>5FMfBh#f3WX#xm^c^m3a!0=*6vudda!`8NFu#p1`=(gVrFp z#t#?$;}%EW)1{m~WYp*Gig3yyq@Z!N)^f};6une>3zKE3LNEiVAr}CDzRc|GO6t>s zq}#v5j|9nznmlyi4Yy|)eT;R$xm|5sw@dk|VavRi!km+3Lrd2CHg})ku5{Gm78Aq^ zEO0UnlkVh7PDrJ)tJaY7%Ugt^`yOaWuMX!&RGuy9utx^{_Q- zJ+qNXX;SKk3wcCjJMDDF$wA*XwO_aYiW?K2GZKkS*=C?_wUpFZEh~6sEpXS2=VA3Lf;^x{_cNv zv}M(2;;AJ3^o|U0CbUHIks0_6!_`THt(bA$K(JC7!#fExD2!i9Or~E*I?3=xO>(#n z^}if@SC&<_BF;j?RPQZA69wkC9J|%t_fNE>3s2`6im-F;u00%6n zNSEg~bULhX;a`$(eM@$^R6gdN$XW(0uroMIvT@gfvIg(pXARAFp4TmxvZ9yffEbS( zt|ruE0U>C52uvysfe@2@Ig|ctsonG_9cMyM-6SpY>z9i2iIw8Ty2sQ{osGtfR2fS?^fJPXzPDA7xr&IR;hfuzKgWp9$gyL}`4 zTW&5a8tcRD;J8(T!F@({rJUIq*xC#=zC0>KDsKisgQ_8~M{X5(R!-M$Q+Bb6+0kF+b zEE%m}(0lN)H6FYYs{a@%=6v@1q0Cq+&(;%7GoEyHec${jp!2FI^lfWDcuZj3sv#ag zduYcW0QuKCy82dAGm(Hk%i;rK_v0&oXU#B&Z)TJ8TSw<*+B&waTj1n zcQ8wx(J&9H{*vY|6{&$guY@}l6#yIheClLPe-S{*%#AQNtU1hktnGU$#QN`&-^~I5 zKW=?}{YZ^{+pqRBTs`*u(W$X4=(f~EhAMRl@*I}fbR9>TANCY)!zX{O7}>sn)xJww zED2boy~t~p9?p0MEdfNtnCF2Rk{<$w3+XQD{DR#0yz((!A?zrnUT!tXdE@t8& z>Ylf`!bPgj9AAaych7x~|AY%o;)rxB*F+Bsb-PY{ zm0DSl#cfaZSvPtGWE|c<2N6ytV{QA`rnKB8j_s!upTZ+-)(F(aK~Le-q8abFl_j18 z0hdAbj(s&jm?d>5Q;~okPOG?>iOKt6eXA1Rk0J|0-O7Ed!q7f-kkfe&0PgzER9U3d zzP|ah3}V_~vz=n`C`7_$6!mT*0M$V8r--AFMTz4m6u33mZN?bgZ-%wAdCyVJ`K>9Q zj6&uel4NfghQF*%m76n}Uykm}V;`1rrC)LSgUUP(F!>*cFV1WQ(W2?-mP}&=er?l! z{G5uf>Oj<&z;m9vNnW(VG{qzQ&VNk$R=t02P=T`w0%pa?$*H2=E3Q=UwD9?i3`bLP zPag$TK&1%Pb0+f`VLLfS4a}KL&*GDp3|=^NdBtFN%_zOl`T+kRAa{&;m*6=QR={{6 z)_9iVI$9MsW}5WFl7di=g1l<3+mhHVK@_S-Z)iY#6(*v0J*ed^Zw49dg^afHInD~m zlAm&_e|Ve*l0d)V{Ex$F-(Bv=pnNDMV+19qTAOaaRM9$NZO* zE90ZTZ&24-uIW`KzNU)nOe=XmCR*m|!98V0wMBMkfHOx2{aSxt%F^zyMx}`f=Ta%< zJo4yAOr{|xfTNm&T3=_4Y^;a%TWa`mgq5oJ5<&HuA5q&AZ-0(u(x!k@5JrBwb8|>b z6g}4Hk!mN}Vuy|M{lj7Mbfum1S$Od=S|4IZ3?fB^ zT7N5HMCUp5q8ETQzfhE`v@oM8Tw(;0&wJqDAWkSY)+2#ON{MNs%nW34UlcV^>g6%!z2XDHdelb;b(%xi^iM$bX5G3!pbR_QBFX=Ui>@ z6Tm@1M^im>Td=LHRW*4s+tE?j_~T4CsrBMPSbptlrEt-^+HKuSiBOGB(mi}2C(8wL zGPT}l@_d$+S%{gLS!7%fPo3>9@W8u-ib>fSK=^naND}qEOL`FUcItIIRmhoz-~pG? zVa4+KNouD5hpV`* z!Yn2ffk=jB|0T3=%hWM%Y3jVn>ehi;)_R(=kR#&5p@u!dyYj_^`}YFJXE-LudkE@s zIo4#oFT)2-cMs@iA}t^g5~$P1GTkb+$cB2=w{J^U*Z86n>)Ft9BePGdbQjOfa)s?m zX5W9zW_ueZ0mZc)eiW=GL_8^B#`Da*4vRqD0<=O#Nr=P?Kr=pT+WoKm@9)p(3`$IY zhqsk%;Fmdmn3Bfbld-sFe)iOuOWim5$5g!GYU=E_>Y9`zZdy5{>00he8NgD)fqZb6 z83Y1Eo%~~3iSn}_I1?nYi|JXOLTe(Kx(u-x)>|gJ(uKIPs@Mb1^F7F&QZ|;}FhT5a zz-kb0N-pG&#>)kH%)WP>Q%qYIZgH_nYZ*{Zw9y z2YLDV1mxrq+Y`lWDW(DHiS8P`F_hsC37OtpogJN>Z{`46Gn?fYYEhlG54~}cH!$^l zIkWBY!pOK`o>2o7u`zew?d6+vgmqerU6rs?B5N<{4p89AQ66lCC*^54FY%24N zfKhY+5H~NwsPW+KC!gm;VHfPh7UPB35?Cs#FW*XXmo$6Ry;V6DO(Bb&-dkYeTrF|T zY&VL$z45ER^2DWT!8xT7aP1R3O5tkv`;i=g%s%jf(2jpIzhy#Rb z9-tY8s`Byk69Z-cT3_7XvVQ|8dl@qxi!4rxdzH#i2~`0yJcByNz0xqRTZIDB2+SW^ zKUC$?h$#L5ywAtln|>-=76bEJz;5GZ znhP}im{20EXws!S8+a9DaYxttk98Mao#LyX)W0tSK3vuP0@ULNSjsY-K%dHBc!eEOeBf;G-LM&0YLL^e&|Kd(*l;*3Vx3PHt0)Ipw%IqXMJ^Z zc}oYd+voN(_OFRlv$;ut%E*ocq-=bAn)A97;!{$Jg_F$;(x*wFm}=9lA6n=p0LdpT z^8p9|?!YA!53GQN!8WxBpxT_Im!EBDWTWmdaK7*Cbm90NlpD$}G$|qO=M{#j7;^>= zo1DL)h(!?toN^vBkf%QX+2-E@4CA&jMBY=4GcjIU1c+HrmyV{rT+y>u(OlY8GZvw& z(s9TLGg!1zXm!$Q$5V(MHn_|f{f`$a!*X3fY{rcX&(&-Ep#$Bk=$x6*K!q;E@n&=r z2(E^2dB&oTza2>dS^-#Y-vFn#A{ zlIC|~VIqI~IHvl!hx>U!y6rp#q;;RF?K=S+rS6&B#-8cnouY4zGQO;v^=B~!dNg%F zgd6P#`6b3|qJ;i}zottjfr5R!X|5JG<<-V8@Y>I({UTYHJc49Cez$n(mD9XOpR?(B z1Zsu^dd@q_TJSm_3%cVIsI&i#ubu!Iz-4#FD1cVAO?$ZAe*}w$$)NJIP%xXFhhQ^@ z`%rG^$J5x7UO-eqg}qXH4FzIti8grh>m7dPu^bhkHaGvC{31r##fp~GBakStPhpLk z=yA<@B7Oyse3TPkw#t;T!y0BW&Bl{`v`O>^5_kJET}uB|OYN?liBBL-4JJOlLt~iU z(xL*yv20c2Sl0@Y-d<&1`XPYOhU8^L5mQyII6QDlU4#4>y7u6^*4%2t$!-mtQU>Um z0!8lgp9p9TxY;*X(0^}s0rHa9Iv?>4>U$Qn5jTnzmNJV8Uwu-{LKConSe_WgOy?R; z*TAi64}Fm{<05P8X!qfj%x|K!2d_)6Vma`C{`W!f!S1KyniQXEI9zFVd#wHwiZEBom zT>CBg~ zH8`Dc9{RSN2W)jDFQcMg&llIv!jLnQV>qw0N9;1W8aMO~*Rxw8vEt+N+P>7LgxAT^ zz!q(l0{n2M!))ykBZX=VUSVWR8A|L-Oju_$3z1`$Ph`Ar|x2N8O5S8^g1Thio^e zhq64U*t##a%So^o}#VWAPFST=I_YT20Q|F83aN_&DP)l z2vHBMmS@+Ha>k-}Tuk7?CuD;SRBnFM8|8K#qCaJ1D!Rc45OD1SM1b}2LZwIx@}ff9 z&qyVO;dkX`BSa>oeWR5kn7P~l$pR?#@CoXG!e0hOj;3G9pMLsQdX031BHurEKktKS z=GWdbvE-mHheYxnLOLmI+&5t=`U}g#YSkjwsTOyrTKyV;c7Porc>H&#D>Q*!kBp4` z_pSqCE@H1b`_z!h6P8(kpE&!uB(_oCAv3A^cUQk0z>D{ZgMQ07iP$ethJ9Np<(X+I zuOCkh`ts7?(iqwNmKyu(6(BhP6v6$>4za(ipY1>2KC4mF&*TEEI}4;qqy6cE_MmkK zQ@H;;vwy4Phw%`eTo-)^ZJ^8hsdO9o2BkC z6(HAfVm@|hTN@SiIbi~a-T;TzsWPbm5QvDB^xumQfTy_c#9L4UXYI)6cDxqO$FB^v z*7K&IA@KYcxWh-lU8$|MqtKLDljYJv)11?nuRTPDhB=S{5pzu3Siww{MDkASfM)7< zx&GDTI0I(T&KO|C0z^U}y6nvg{zaEbK>AbV9N7NCr082 zMc6+QJCLA*E!lsVI*}YSp}uRX)5ZQ`>CF=2VrXW7`e2_TmKbKy;PQLO>Z%2Hp_5)W7(W{3OM-i*Y^(?l=us~WO&f9Z|j4yZFuWwqs zfmFW*P`N(WZ*nUHRtD^19ylIFDH4=|9~Ig6cGRp&^2^9@MF7PhltHtW8)1Sig|be_ z`{vFv(Pdf@G~*I1?AoZ|Hdy^4@dWNpI-Ui+6=jjTarY-`#yPEs0~-9WSz^$7=H_{z z_11cELF=u~x5h0>d!P-h!8VR0FE9p3D?*EyxKb)KBQjk~0Yp5LA?q=_r%6&g7}X6( zpI4ELV6wdwHj;F!d;t8nVx%Yn2M~$SfQJCRJ_zQZ{h3t~!grHOti>g?a<~NbJSg(5m0Qkh~Fq zzje=>*#*D)^(!Cv)%f!H^gX={YB8w#)n+K5YXJ8CT)@UYBVB2PtfcOgvh} zId0|~P@tmCUBCUf?~39p;6GTTZqmDPSFk|=dSC(qPZBT}3<!-ANJ<}gN;5seXT3vyAJ>z5+i{--5aLOzCx~te?#P`R|Nf1a zLK-uNmr2m4sy2I1Z5CVY;;OLqs6ZSIgNYD=mI1&ITtj5!BVY~31%AA?g^28j9xFn+ z5wP^XD3CGrek=t*fuo><*VNNhP7*~;{uP%EPyb6;fytcXO#uw}& zU?P;@hvONQz%=AYI1H*mQqC*PRl4pI2Ac*%4ZOHprK7(t4yY8gO~jlQ zybP#BD{?h;26K*YFM00Dj~bEm$;e~@bkU~e_dMCiCkHJDZJJblJj3hA(!25zLV;5> zS4+3oIcKAf2;hcbDn1!zUGamS`{@#OwF1@i!WH#h)M!KTt)*oa3!vwd$pRWuo0cn` zp^=b-%Y$}Z@LN{jQVY@POmC&~u6#iRs05%FD4GXa@KF471)-KZRm?rrn&jfX32Rxq zLtW=!cB2V~&hEZGcA$e9aP|^ttqLSxSQd2dnO^432Y zh?Q<4V61fC7*Z#K=F7+F0G6p^Z40>98a|XfBe=HVpfOYk=B8d?U%Dhq%*O~9R9{66 zX^X~2u076Q%3NbP+Nhibu1Lc&p8!UVP%YLZf?D*&YJ;C5e{PX=Jv_b)Wnr&+{l8zL z=3M;9$SrXD%pqHN2fyqc6(BC)f8rGdE(_@9yFVc$%x6JMNlO#=@kS>WIR1>SQ<0ly z?Lj;P3xdCjA3J#fIz?}Q_6oGR$$ZYtb-og~eou|PP^vTzsBqw#05SYLP0&6$4|%y= zoCBx=qDv1S{k@**$nSXct_KkSM*bGC3ZEQ#qOo^Cbs6wno~kYb$g6>?-YJcafd3)4 zLH`@de6FdEy1qIdja(z!DC>WPp517LM-lP!{xhAOf7Ma)?TRitRfAXP85hZn0bL&; zjRfuc{rmSwh%-Q90KXm`>8yLucd@a2qU{0XocpY}^fJlwf03$Voo}O5Cu{(kgFm856oD?DI&+xKoGP|`( zC`dH|%^(>WY6jLl7y|3Ms-x!h_1wYgSz4x;X|zdj9%=?Jz41x=?MM$hLDMtvJiuUB zvT#xok|N>QqoECT*U(689oTsuxWf&k$K1j8p1dW zF?KWT`T=_?;500+uJ1;kCv^UE-X7P#n{kDjT{z#%cRA<)E~7x!0oHK=Aj)UXFTX$= z9ZKrWR&lae-chk#b?vQy2Hd}UJH=?PvR zK&61rs{_s{;C!7Fa5rM&Lg84~gUohs;?@Up{q|X-s27H~kasD{%gaC`n}Nv(hBZYAq*jB?FfsXqsI-?#@6wka^UwF zZCKEi#w}q$8vg0ir}t*_e5BkaiS2z#ii)T_gDdi_5)Olgnd<51E<**WlK=DBehIQx zEt5vMZLbLW5boI(y&pw4J{sUBD@K5=tw|~flI9R6>&>F~A5~hfJ3Ag*>>p;AQM+}4 zR^%Ht8S)0s{?~013Tef5S#}i%_JwIuB3ozsH2K_i#e)Ib$WsU2$A3tsrlzj09-f^g zv{if`T5-HR>eKT}|DWxEFdwRK@j(eh9c{y|e2u?$sIM|QiE~h?$e?b3=6S*+oa)Ip zWNOg>K_>qzUx?kc7%>g6C*#d-0oDXuOZ~sIg}VQ4J(a4*_?rKS#2NVnj}d~#qBcfV zcUz=}!3V^SHVZgwP8Al2A1Vp$>kj1z{^M3|PiSuu^VOe{_<)WUz;Ht1zQX}c*Y|ck za~>Scu}a^K)?;Y|V)5K(hpnd^;2Hlf+}TYB%g4E1-rUpDTCkXXZg`T@Y1*D192gKt zQN*R9JCs&G;y(|4(*s_lZxAPV{sHK5ds|?K*^2FXM(m-^D%>JYH{7va z3LO_`ypilqE5D|8g*}^6x0lNWsdUA9Yn_#66yKC0V*1*znQnyf)tR?TAaOQpyvoOL zE>Y4zr))-BUp3)M3B7~>JznRse|CrB;{Z-I3b3Ezc2>)390q}BP%Im|Q3zZIe74mVT%4MTfZjKv$w-Ip28OSWxmyBJMCvj#JAyzc%n>#Q_6_D<#>+#^^M|(VMK0BV6 zE%+sj0?y^7M85grG?=OXO+;2MDimcS01-K_(|jBKO(QVgHVmRBGN`}-%G)>e4@?Z- zaP_w1MaC;34nyaNj!*u|@xizzHh&!+M+B;}Jy(n!BShqZ_B7%}tcrXQ~#O`liuvV~E zxEWE^!?TxV!-`IJ_^}Dh{Pw$hB-HnxC`R+kYwoT*Xc*g6e%-1lNf8;~KapCIN`q~Y zyzB?d3Bv3TdL;aSkIBu&rerg>k#yC1W!ED`T~8o4+Y2sD-5IUsDdvmW|FH!ev*q&J zXBN=X8;f1?t8sV)b^KmjXw@uEneMPh2+>R4i;)s1*Mha;imGp~=8k)2EK^U00A`ss z&X6g^d%SA3ycNv!|0ZU5?~X@|WzD{u@R~G7ipyi;m-4^yJ5zP|nGkM)kpgBu{6%>? z*=K9gGJ8W=QHaTVJ!j@C{=c)1$o%sS3FeNZNfxDd06o-eFl;P<#oSX0q? zi8#;?mZ@7uoMcshOK(q%S=nP8g;;}<@;Vwnzp|jobN-#LBkz;_+i%;md&WBTL=m_y zXUmP4^*BJ|=4GxfgJjCgf z7xg9G?2ErRj;vt&u#mu&h@*n6Px8ZLn`{1JjFs<&X3oFFo3L%nqKbU#bHCn(NVEICDrlEH+%tUUkNk#kKYKGY9pR?c>qyOke;55 zBI(g*>pYsoAZBgF z)2&B)?Lwn}LYv`LDW6+NJ`im4=nDA-M2RcGbu)vt=5n4F>rr`#d2yiK)aFKecO?fS zfwy1SAPbWahii*+vDYyX^`?bOQGE*VY)Mb!v@4(0K9|zeCp?FtasdzQ&{9<&V6*AP zev1k5HZL@;?lL$GYY*X6zx39&2)wQwZGFF)y=!-SK-0=Aq7S`FNQjE=#?bqi`aPg0 zpRhns*5s_y5kONw0QdS0m(GwV+ke0v{l-xnMcvQc*-XuRrN8So%lfJUA4acKOX z*JOUprJweRL(VvqhJX6%=$-7~|Cl%lY|J?YI;AV_A~Nb?SCeesF#@oJ;x`|FeyV3+ z>t6e>U$WT`KJ=65DLSw|>#7yPfJ^&*+Rh6)eR@5S1RZ^i(x16ME5Tg1ckoMJ4cqVC zz7A?Vhx^+_YtI?v26&tad|d3TPw!~>Yj|qS8XcdSK0I)bfKSa3=v2ljxgR|@ssBgwtI%`ZM6h6z5yeFS+bFBb=431?^DMFa|+C zzumWp3;FFejF%0q^|gc2?-Yga-b@m+4O3zX37~z3dulPdOsoB~XTSe2x3k=5vbBXb z_~(2FRAf7Q;Y7!={}dKtKY)g06DgNPK<7&Yw-FmVv3Ib9$(rzGWg$7Ahehz9OQAwl zE5kWYtnqRTZ|Vqk6r$MdLtA_ANuZN7e8PeJ&+VKj;U|{Lt2j;KvM@ys99EUkN7Fu5 zg!5ENUpEet1Xqb8-oA*zJc120bHGbN$bz2kyvHmd7~4{SJ$*_;W&Qxd*M09b!zWcD z3<77d7wYOShxbpHfTv*eGL|*(iYicE*^2Ed;<0Kw|-lIEZaQaD5!`K%cVGYAji=Xm-`a$ z_qoH=JwHOt7!-nnVN=J<;D@J!xL)Y?eATaA6usc#>VD0;u+i#(yY=G3w6Fa$%~;ur5+>|V!s-E&)^Xz3JEjg6j^j6x7`(qY$?f&cUo}#Byn5(N_lZ$&@8RgM3%_yU=FuOgq4cbf(OxIs9p7J@ z)mOF+n6ctNC44YXW$51I3eAg&uMprrnrb8b`iwKhPo@G}_BBg}{JjHBjk#w#A0sXk zNghTZn3rMPzeMyp>1wrn`cnDnww!J6?7n(fl(M8###@si=pYvse6U^pfTp#viaGSD zxoY4Kmr;Wg^}N?JSD6$8M<-wEiIPY3-|fbw?P5n?1{ggU9!T3-QqpU)H#2*<>t(c@ z!KPT#_w&%F_#Lz=l+mlbCZ<}ej7_Gzf&Q1tG-vqU<8Wv-OL7w7Madkp~61AG+-4MZJhp1iVlIw+4YM z*c9hi{GT`@#B>BnbD$4RLx79+-!3n3)EB$rLoksN#=-9$g;t34!fbPATpG{r-0rgM z@Al09$;_kRP$}p2NnVc{oBQ#(>4#4lngSmxyN&&(>dX5nJ?*`^{8FqmK`e3oI-1Lx zw^mVYreRN$_FQ$z;>ZK*#<^4KUbDQhTEGZSwmur|9o^}V5}Q$ILb4A;$uD0urBXUQ z#oeVWQ^213!DV!-^BVDO!S_RqRVbH5r(MbqJ1rO5X-b_(N9UwXo06yU8rhb=bUp%Z za^5iqjSzZcfHhFL@NvO;`y-MbE3ZNd68ChLR}F%0GfrhIOSdq0x+uS&KXXV1 z$+O6nV4VHh7m7vO-5DOgzKj5+!19`z8scO@VNUVugR;vfn>4ieTKHxoymDoxyG93 z`gymRSlx1ExpOpMIyQ6eIKBe@?n)=oYA!mH>&OYiIF1gZU(hn&JTJSmk7Y!DS3CXbe(iVuv-(FZt`C&#cNKyy zh+lU3(}vt1?r||ZxfSi=6@p!g7|@GVS!t->iQ@8KY5tfY?TtmET)$a%Q~m%`ik^CO zh@Kd#-mfob+Ef_{3~aOGC;}ECIo~_>&DSrCrHse>NCgMo z5`>HvMSP*8^~12&aFWUj#EZMVqSXkjT5W3!b!AUOmc5v~3BTCH?Yda#{liUNqg@~Y zFIEY?{le9$@dGyqHfZpiN{3s|Y)nHv`RF_3MoGtZhSJ?DYGy~zU~rb{94Cmg?Bm+S z_VYJX^Q2*Pw(SV1s_zz4b+yluUrE<<`~cpw2#MLg+Y{xV(MG!D9;=0l`J=HN7`QQS zb>%OG&wWG^#yHqEnyssVBDnuuhYl`}zn8j!4{cVyfY99Duwgjes&?AMGd6In_4aiR zDpg2Mu5Kcij)sLwuWakX_A+~Aj+9)|s4}065?Cl}p{pCOnbn^O*}8cR$>Hr|9*^Wp z!|7Ubg5T$6y~*{ar132{#km;E{?-9G_sl0sT7J{<5cRCSS&ax9S!w*eDfsTex#hsz z7ph0S-%=XSy>=g!J@$+e3y5V_SxQ)Eu(w}rW@y5Q@jiI6-&z+#b&B8_eIS|7bn;UJ zfD|IV9z!oZ504jT&$q>&Td}F5dIZ0IRw9D_8pEQ8b|){lF&U-kbQ3?QzTQ9u4P$AJ zk4y?WO=8(7>3O`94f4ooyl1jCl1x}7l=)I{(scIQ*Br|T4hj+|#u7GUls(*kDgtZGUHo2u<&v$JUl%AQfR_6>U4;nKH(7taaEf*p(3mQAy}hB=TB!I?(|EdYbG>;M_(oe> zT*mLp_2;l}>8 zjqUtA`;y@lm!;~xtLa?wh{4}dw!^V|uFiJ}F-c6TssS-!ryXPwfeUpKIvu!KAhsjC z34_?bU*2PBJXibUu@RaBN3!>a57%uaF@AE=dtiJiNK5)ZQcMEzf*0N zGpn9Qh{d=Tri%NMOkFku|N8AM>jykZHfHhkRA1rrNHi_%{VUo}$4XM7p~ILiI-i$$ z54AmLC>%Ic)T|+I>+kt&oszCffo6WMoVN(C{)MO#%IGyoy^XCJaH1oL~jkh|!->TKT z^t^~}9U^UCqmBkGo9dINzrbTBhSQfMM@l|dW%|=7f9+3sEX05oaBrT`nH97$ia-*g zs7}*bnV_*zxW2csl?wQ+S*-Ax#LbL^dIt2WAnDP0x?*eh<&WD(5+>ds)GXx~ugrme zliICXJ-NPJU0J&|^WWjTnGv0zaoQbNrqvyZLYRHW?n4sE^!|$xh<@bz8-K zv4b96aY_Fb`%OV*FTh>ItmunWO8bw_X`XtWt0m`F@t$BdAfu^U+obc>rCp{_5>jIYLLe$uq?SY14BeY3_$MH+b9D(q8> zBPdvBMWL+?=)*sLZoz{mxZhdgQdr9&wWKj@ro?LqWbRtCH!F2qlQm)5XdgW(N`tu& z#z)6JBa${*y;+eE&@(dey?aNR_)5a(QO2FrWy0uBQ;OcvBqu*=b~eLhj7??xQ!kiy zbL>g+BM)P8Qzh5$d06i?-b{{H$_OOo#gHo2e}_t|&6MR!&KVw$eifW)CB(5` zDpCpA6zuXxMdn&3B11dST=Rl+{j9hsk~s5P z*QD$Vne14}+bixOW#V2kQ3;)Tn`~9!&+6xxGBVUtv39N1ZR#?{m}m%p;Nc%!(!tw{ z2u;KIlpEXZ#LD)4>vS6TQe$S$t*W2*?irbct`^=o?C0an4lq(j`BOzl2ffCD$_8wO zx*$XE-b-1h_sZgL&&e@C5%+XejLv!6$6NM)X-qt;IIklP3u5pM&S+R+Z9P9EM;bS{ z^|EF0XkMBvFD>@s7as8~$BV-p(hat*{$1rO$m$AoIBjyUD!dsh2t9dt!Gta0xx!b`pNOjqY5HATK#GLEWIk^1RDnL zcKO_3)x$N#lxg(WT35`-Q~)%gZO?6$AP1;YbD3)&nw%;G1D4p5`^EkJ#t%zMG|S-& z#HqDA!0lN-TvKPZwZJSQw}xxpb6j( z$rYwcpef?nW44>gA3o-aC}KIYuq;lW$7O4u9v+eRu)N!GAng6DgtDz0qe;?QT4yxd z{}=oI68VYVN9#Op{@7gPg!VFSDoy9D$bQD`HCitz`}fo6P2wle`!8#?f$%6Jx}hI| z7$46V&-JF@L>B?Q2Bv1Gq~T!}<#EsT8?$SngA1T+kUOeus76`@DP1V%J?;1LhQ&L? z2`#SPbSyzjXjcoBoO)3EQSxIuuYIyneoZal(DOg& z8>>xuKZZ8Lp8S?(G<;xmN;S+1oPYUkA56V>Uq0C9u{!?0_TDnAt*+}DZ7J^V1Zk1t zPJsZ$Tco&Kfl`XQ1T9XWxECv4+-YzKS}aI$cPN^mMNfJ^-+SKsIls@pbGZ0Jt`(BK z_Fij_ImVcC=};WTV>g91h#UV<_WDt-V6Gmx{>vc6yP7*;;L^^GSWP44I7}}G@8T&O z6woPxGw1K*N2q8ur1EgCN8|O(rX~EjBt8)R38IC_7Qdu*74CtQ}hU;{_2Kq7R?0v1cR~wSF;+J69y8q z1JPIIbHaL{ntq2ynJygM7C)N~<~&b@nFJiyqo>o>AX~skj$5C_ZgKTvNDLBXck@~m zNj^v6Sa02Ccf~f`2RCx65`*O5Tr@=l)4eA8;Qbl(Kr!UI>f6C7|8_G{P!b*oqK@!d zjYGffQ(Uw7_OQ{J@Rv=s!Xr_R4jW6p1nU90oYsWF=-fX1zCEm~?EcNdG3)yU3xx`} zhg;mcExxxUBuGqrwKzf_&>a9PySV&lXSHevdyXVpf9 z`N%S5LcYBI)YwZnNg8zKc?xzgU;J%e*ATN(n%j%|C}1P zWkyI1Yc{w2i3rQRJCm9SHxCw>H_WIaoP?m++usN1+FVV5ULWv+shSO=ENqJRbh)aA z_^NEGNQ22KiVcB#^>bJ`99EIwUAk`PHpqGgLLnI6qPB#N@ zF>mqQkfO+QtvMF`s)alhJ@~i1H=H%|CjVQNRcZ>g_r(Fe?+?_?XD^4QPrW0+9O5p` z<>+6N^+O@zr^Akw5n;c$mn*ck_(}^ydxn>2TSU8*ixfQH3ICcd{K(RF>S3~s=nkI|pIw;2TSk0bQm}(OYx5;cj=6vUH&O8i=aYlpe z9Xp6lspsiZ>29CPk%A8e4V1+lm&7Cqq_+(6JB=`*vOPp~npiv{j@?z%_PT z5dMS#jWX9QDdo&KAYsm6`|wjd3%wR-&TU(Z+ewAfPx`FxMmJq1Mx78Sf<HetWexWYXJ8iwXwabWZRR$qBOfocmZT4H;oV@m4-->Z z4>b9Nxh#?5N5^P;9Du6zEuzR8RgK6fT-midmm2G%R$Q6)J|qJhXpDBVG*uir>JB7V z7n}WcfeF4pI>pS7*&Xr4H}kN+26a@sY~J;eX-vurjsV3HN*3v1+PG?ULJ|MY#w!iB zYJ2z!-2`GGe&U)6H1h`L_k;t#ywkW-Jk&@C7!`5+f>QUutpa}hzH%M|-YUv9b)wR%3;oq3HiHw8y z`o>faCPe`qNLkJ|7V6rcK9k8?Na(+!+O`BX*|uC~x$irhFvVT$?qi7hCmxm?2yRDMyidIWh4(w>S~3doNtA#b1p@%jcPs=}R!hX@FkP3P{zh z6Ic`CJJg0}C-MB+wO!P9b1+`5or$yj*=uGDVK};>%;7eQ2~G)CX?PDEJ^eLPP93UJ z7a=76KICM8SopFE^Cu~pRUxPmV)yNtoiQ z9luTja-BP%3AUOWnEJ8FTYKE$4Rfe zv?;_{IU~uhDmDw`6TQsbLDCQ>DJh*mwQ>#f7f>)f*Fl1g;3AA4sD%3m+j0~;mO)@E0WG}+>?YT(L=JYes4qi%1 z+%8%W^u|4Wp=z7ZzNeQosv{R&s!G@PF2&}W37Fq|_#-H#Xv z0Pj7#$zo|@R^PTr<ed^mpJujGF>bt^jb|@%yWq4waG`S^jyM3s1_TiTTvT zQ^vceG_cQN{SK6uD@Av{dNXHixArPm%aGm75M*!PrmeW2s7;D#=cXn|HN)%1ov7)~ z2c1MWdGJLJH-3OMpT{T~E?kNr;&Kx>|-$w@6OMmK+d^xn|9BX--e68*}7shZeX8yir z-JHT$$@SYp)<-|h8t^}xKapxtOC4@e8aqvLsNAxk&Q|SS>OEicIA!VVBvah>>4b$J zJqW!A`N#`ocjGAYy;x%p&xrSq9cHiLEyisgFa!w!igd!j!2JjBVJ1zhRjnP;f59bW z6$#*WK>JUO?_Hw)%+79ZpyI_d5J*`|Ze?OJy6(^00@I_BVJ>+Q43$%?{xXj|%+ri; zf>!qHqSDv{_i1m=d~FM5%ZHsWe-1W?8lMB60+508Vq$;*EH+;#UUZ>q?H%fRq?t$r z0MgJe=y&BW3Vtud08;iR4_eka`{KE^nw67T&`KwaCRn2EvaMdK4tp%9qXlyEIXgx{mpE- zU`dfc@_m5m;XzB`${8Vuv(`6?&!vwF_hCiO4`wl#&q3MLfYPJ76-{4dY1a=j$R!=B z$3-HJ6D~IsB@VoQi8@o7Ox2L@v^eC2=7$hUf0|U6+yRR`C$XWS|@2UiV*Aff3i@(_sw7k>4FMQfG7auNyaxg{8CO2=Ef3qH3T?9-K z)+p9(=~5>##YHcWIMph(8uX`lB10>)h&`ZN)sv4hgX*XiH*$ zRfpY2l-IB9=pmXxAawhM`kHf82#F2d!tMv+z9QX3oi~ifE9DB?%NXCkw?){AoNNrm zEJD05$j3}dyE39hoNtzdvVgv13mY74uRO3otUPNqm$Y?p*?kXp0)s%!(Dn$m&Dlel z?*v(0RsM!AY-7y_R#18$Z^SKrDH1l`@-ih6m}|)h2Q0Y|uETF@g^xulR`R=tMty5J z`RRsKJ1yYh+Sk>OXsZ!L@4FX1_|=OMxrKOHj71$?tBnhfn6{ABlMh(5Jd&%xW1t^$ zbNSX6b9pZ_Rj=(=6kdTGyD+bKaqnjhadR5cAMad+&{c4xS6^~WSR=68q+F<0Xy`+K z46vK;wxK$GG5wNLK%SQ=w=zwZ{fpzeK%a%vkbO}giuWMG;uRNnf5}rB1uls=zTxWi zdNPp@E~YMY^|NMuVL9do828&QhWscOAiz6-;UKOi-#%blh(iAy%ssLS3`U5zkn z%75)If77w;;Y;(o-P)UK#W-*{?8>+1vXpQnb*O6A)shJBl6%A33b3<^AzEdEyllGc+$%JI4dz`))&aTk=wfLO*y?7nXq zQt#K&$|sy`F(utiz*nqX1HQQ!>qjm@HEyO+ow25000rbfw@8cN<~s8Boz<+RgTu3_ z4Car_awlA}+CKN@4xV&vktAWR=7TQ`C!I=&XalK-(x>#PwZ442#=%_hocN%7)b@Gn z-r8j-)Ne7{pU70hYmNHhNfNY-W`yDZuy#AAbSNsP?EW$a2ic%9irMqzD;H)@4~Mk0rb##l>tq%CYr0j@J+uO6?8o9nQ~6 z+$YQS_z`L*y$K|{E_>cDc`7gO1JJ3n8-|Drbr4Pi3Gpu4@wzshmeDtu!U8raFW!`2 zED|u-A4s-07{bp?QIX{olW)tHPqCK6oC4nv7fuglU)%oigkba|Zw9K3&?pbJ*|j5i zVak=7GkhVG&&^}fmM;8W92fu5Fj`t*_Wj!V^q#m7s(*UJS2m^cTBWu=Jwvo_10^pi za|A1tkclhHlMGD1lQXO9_mi%E*L_N+r2OXB@DY0Npg}n%lBjn}j|wWh{1bzr&&yLS zQ4+y}8Bc55(mwJFeZ{xmG2L(Yp6W>URLA`+dojgU(xqfW5iiHjnNMR{ZKFv*a<0t)Df}d zjB38D!tDJIm9 z;XnEkDM-MYbx1C!^U+jW%KHV~%nN&}s-$jW<5U-t4MXFtFtx`gP8aadC^^&RmqXIt zUG}*9SHeE-2T_0%{Lcl}Y{ZM-doAIsr#KxZNuhtriBB(v=&o%u7%G=id(HcqGz|Sa zsYp7bd%aIEAtMxp(Jy{wN!MJbsKmFOyFVI5k*AR8+w7ts|u`p`~fUv%VKTLORc zkPs$^PmO9M>sq4PT#P|p-}$2?>2jQ|Q*`f1aiP-l*$5qA;AU{W;TWh+Z&>&Y+bQKe z&cqC`DamWFP?nk}R&OFr=EBORXiG9<8cK~qOxoV_+!1RwCA%AJ0Z^S*hI#m`lvP1C zjhhUes3~0XR?3%68#&daCDVxqu&IV7VT^H5Z zzvV3F|1ceHU&?93KU_vQPi)wfoXS;dr4vV_e5~NiBOzRY1MCbm11e_r;#{& znfBJqKIB&KB^M`xjdaSO?WGP&Y>st{=uJV1){_<5ddhYa+oEYHmg=rY_@phF1Z?=MnSObsg+o9JoM83b8u1$wHO(IEExO?m#=tcGi?alG!VW8PuEgR%AG?5Jz;zjM}yJEwy*-OwynB9Iuk#7K;zokvv*X(H)2N>Go@Q%TSG?p)4um=W2)Z;-1- z7h`1q}?tpt4O3_u_n>JA)`q}+eauys0>Blxb) zP*!w6YBT4HNh`L?T9+uNL4G&ePt65BZllw_hNEj3ZF83ZGlJhW`omd)dXBs&9WYji zF9S1XF~VaJ|9#I`NaUN5epo9$;|+zhp~GTQT()l<)6270nwL0}wggGK&G`-NY|>-3 znp+PpfKCe2t)gjq>#A=x+R3_ULoN?Ps>Ut4;5vkOTSE)z7T~A{o-ErT0!Th+b;4dq zH+XzyN2Eh6QDDyd_Odp}!^Nh(e;?wcLoS0WGWh#B&>*u|A(K2T zUWc*YfCgR1omdcrxKzuQA?vTzTEw`1uIy8d_g5n#4E^)^AL|NCX=@*GQmuLVr}x$K zKP-6SwU_m^eAkm)(wA+el$U*}`EPd>^MKI}=Kv&yi%gXy-coZQupeH9d^_51yG|V9 z%_h7Ryk=CWieDA5KilNd%T!Ijui^>{G)5EoC^YL8!^v%D%j+~OTcH++3i}>$ZQt02 zH(bI|Zq&i9mKoJm+irdljK;|c*$Zq8zE9@;gslpk8vNvUnD^d4V<@_baw|_}M(dmh z2MnzLH;O;2kk2tMR#|0C^4^q;+fLh3TAZOE1|{zj{atd1^yop$2<^h{tcc;?82niM z{I2qNED=(@P=~lRvNOWX*_rpft|0MLEW4A$8o!DUl*Rz=XJi2kW7yDF%Z>WvaIJm`fOoi2Frf7HPYUc~&IR z@ZT3E$m9eqth|o1o_axBK0cMLBJR-tZvH+TnqyAphvcm!_1QA%!w{T*y+?)sHzJVY zd}$55f*PhDfM=wOR}ydQeP43<&KglgMiOp7LQiX)u9mPY|whJpoLSv z+Gvf`Fk^{^(~T=ezpr7W*Edt!3;--(6SwJgm(=-zt-~fkt+t}-veTBSSGe1!*IPDc5J}aT>7lYAr6gcTE*`L;5#P{$*8ydFlTnz`T_MC>tw11@5p|CU^7e?bh<$F;ZOU>~nnR>%JsQKiva&c+B{$65xmuni|&R(m1M-(27 z^2&>R1~Ir`O&^A6KVahI55s>ZA|;6uOx-Z$CJ0I#>q9WE0ZJ z1Tl4&{CorWDT3D7L%BQ#PIK&+a?**GBcr4QaQ^~&%(I~Xi1XT8`>xmLqTaW~8}+qD zU&_vl1DdA_$L-#1)!rl0yJ*e~90EBjsGU-MQGQ{(8`?Q-%QxNmJVwVk-n?p$T6z}7 z-WIG9>KoU4utb0wb=6K}_9AesBC)79V#!!sEiP@ffHF+Z^dRr+{S!S?u67l{*B+v` z-Lq|yKX$ng`c{U9m!e;cJz;OWMLFAXu2fU54csuy!c8{iSE`oSm&$HPX4&a2wQd|b zP#njKY2FN0cFzeBe3-O{eieUpeVe4S?J#ZJTiE!cIbg2s*gUchJA`7jm!Xp*az2n^ z)!}8ta1_V2`IYLSgeL(3{Ud?RA07P+Z<5Vs5Z8()vMv>R7M?+@3*LIRYh@{HguThP z$wOXqT`r!8wAqAdI9n;}Ja#-Oy%WkFJiwYoc1g4~${iez&I(#lA%2iO%;ai3`Z>DG zQ>9Lo^U3IY(4$o4d$`5w!ccqmF*I?F&%8gyr*#*ab5TkGGQhkmVdH2-Kbq7RM{7}u zO&l#33jKHRQ{zCmi)!mf4LT^UeW0`ZUCG^v>p#w89BQ!^vTq&d=y_cV?}Bc3`ap26&zTZ0Lx83T2-DcC6{ z912LSsX3FswA^oJ(KNwUHRcrD4dqc5uq2{Mi_uKF*Dc^pY3-Dtv6@77&mFKG@f$@+ z?SYQkKERB&$a2{GMKXtDS)sxa7}(a)@7VlVhL}0&2v$p7-o7b?s#}rK%7H~bt;_cw zc7~iZEqy-t&2QX!&x(!A&wzO-3vNPe+`gEzLShMe&w)HhkFoNN{CxT-Im^C%bEnkN z&I}I%A{^zlLmds|U=5wV_#%y(Q1bamD!j)gIVoN(+;V)?Axz7)^}H`Q+d{{<0rF*5 z>&KTL!V9XK);Rq3 zLGHS6P~MNeXK009dK{MJ28#+cuJ+TjTcr*e;U52)CC zgX?nX?mfhRDJA#dp#FD4aOJBPh_4Eb!YEZI`q+UTVun4%^~YD9&ITr*t@W;^{g|p< zTRH5-E)@r<9ysJ)x!ilYOWUV3Fw4?jHD;(wZ9`ya#2^+ogf?G)#fRH*tVFv=HaI$0 zTj-;GTX-%%JD=UMj@-wk{{3NsT8RUEvp>2%M?`l&QhWTLk$|Qte}w-Ow=@^#{El5O zvXmS%pDuUQ99moMX!#w%O`E#ZJMf@)3Wr7;b2EH=bhx%}?uM1`Ogx^htp~y_7r3;g z?&!_9_L^eBZP@mczuxPwnHWf#X@RplP2!Qg%FW3@6)07^xV^K?+v${+zGL^6PX+H9 zk&u9V4>8-ZcN=Jde%|*@t=~M{3o{XawrLcHx>s4Mq>&}H)%I>8?Y4E=GfG{WLMY>? za+c!Zmig!dQ=9}%u#2ZIG|^~rg;MY%I(dbvjPCOtr>g&cVxoaPg#gablSv6@DtgNX zIo+#UzOnvc>w#B_mMdPJr?)3`TtWrE#Yw!amwsP~5~o*>&98bA3p-=sUj22sFz-qM*9d+6>}4IhH2 zk(=}>PWD8>Gm){^YN!?X^4{U&UJAW(=67DK&=49azieVh*^FPCH(9y5zUhh^_75O5 z5@fqitX+fp_1aqe=J_F6q}5W}X3c8ge*WCv&yo`|mppFErm z_8pWmiWvxeAYl9{0#8vQ1Z~c0{|u!n_d8qhlNJ7GS;uq2*~aAbelRhUazwce$9U|_ zoXP1RNL)Wjvpc%44CAp6_EkxH$$!M8Gp4a~X{#JV#HOqnw8S^$%pFiWn_zPKK{S{?PrPKNOcg)s26J<^D;!c&=|KnOBkbp9ieJvhY`HVp>OGtv~x z0RklmN;6UTyrM{M9vX2Tot|*Cx?oPFQEu3!T=`mgjGCCOY&fA;gl zoII-hv+;_vICX}c+0vG$YSnRy&=Fz}d4VBGFOc!-$=MZnRxZI>NFCfu9Ma^#i`)=i zw_w;qq$oUBDc+ns(R;o&H-VBG(xbuNj^Ps6s&F{ff3o|r&H!2Q7^7h_AR(~}T_2yI z=5`TVpTlLUj>@e6X^mH^Uxa?lom+V!DY*X-e9343$2bH{|Fz?|> z<5L0A;6D{Pt)(ybAqmYG=r4aW)*k)WbM{et<5v;&p|}e{U{-a1!UhJWT01zVb46yM zmimiX&sKJ=APtEh4Ln1wDKv$ytJdWT4Z_*UIWlmSCCT`cY>)@^S*Ml#wD0S%e#;Sh z2e>Ut-enfPy)di~8;z!e5+%Fm2J-Z%+^n-$T$*m76}yk@sQkWLxsxV-XQz7NH9${l zp7(lH-e9BAniUaR)QCOjTQYQ9JLNV%X}Bz5ZsVXfGRLyt6FN8rn3l1FNSP*(e{I|h zmALFLGu(DHLSj~F!kuUTQGAhum>&=2A8MlBYK10!GALS6gDZ}#ozE8+qn0ZmeK+dg zGVC`$KY^bcnr?aQMU{%baEQ)d8wq%_w~4|3D=_296RMAI<)pQRZoj5kVz=#PzuXs~ ze@gG>@0pEGmh>@yP|J_jzHOq<-ffaGdr%2bUq=-jFk~rUVKPzmPD<}R*h_932+=8 zMLtNJ^JvU>=HzX?0)!t0pjEH$Z%qz|tWrE?*J#|b(>@M+rCOSXGK^g!{nXhJz;0$SkOB|XRDuIO$esZewCmm;|fDyAM-<%z>YUTeb8fYPqewPAq6OcID=b{YMSv&K4*4YRfill^p-YO1(`e8J=)Ui`UX$z(zB5fDU+VJh(hcJ6L_? zWF-_#2Dc?(5|=L^?OwYAe2@NB4nO82*_%U`#uK2#OWY=KACXP>kHgMpNN-}3@ej!a zz2s-pP#el?M?L*oYwsY2LdFCy-npPvo35vy=ik!CbT8$; z-l{x=4T}%QE)dfiM96}m~zh(W`DtssNUlS|l~?o4Il`X=ViQbACu zV9{2|2;iMXH6#Bfi%5i#eu8tzqX*Je>-S@uMWGsEBS=p^+ej9PEFKF)l0Yz~uPN{D z7)hc!af8df7@#xZ4C9Mr{tol2*-g%d<>mdBpm3%*<(Z-NJt+G&`pE0GV((tX2=nf_ zl^P%Epd2mSA`^0y2#=sX9HhTCN(#zUKuEq7yDmWnHTAxUYD3nbG?Fd&Q(@{<%sPE7&19v47>25rfDVavy~`#oDlUDM{+0i(cS42G)PC%n@JpPVjOTA^~By2`!K~ z=CJTfY3uhJmJALnj_>I;(}%WLtl2Z`_Puy+njL;ksn*6?*-?%>r6qV%VIPRMpoWA? zztpUXd1%u|HUl7yOF|pgef_R@D{1ey|ZCilVPCq=HBA z6Dlcx?Q}QNw|~Qd^v{tWp&a1PIBQesUh6#f&7r&Uwta_+7CKT^*oiZ@V-4*LZOXUfz}ZbG^=C=HxS}~Src;+8 zJX39sXFI*E7*`f~+!cvK{^?t_^>d?{u`*Vq>>6=k#*EBuw1^Pf z4Cf8}*Ksy86%NU8NuNr#e{U*`30I->Vwq+EL+n%M7*dohJ#lFtZ|)DrW}hPpmF+Bx zv4-_1gq=UhnJ}r*whmN$*leatR2J7_Qqwmq@A8#&6;0z9Qw@xh18C51qeWhL$v>KI zxN0<2oEKzZ!uZtRWY|kdD4&~gt@2g#@`aiOb98Dcdt~A8Ah)1{hE(k>9VTeTZA*R7 z$fQdb&T?}t-3-l4s*db^5gzC5OY;icTy|Km5&CCdAy^I=``L50h6msdSEctpfotBsY8I z;ZWqCc?kQab}!LE4=VHro+U@>xbyfw`62gK$Mh{eib5N9G`XC3vP)%LR6`K55J%uG^K`^08v@eA zSmD6K6A(MSh(@(f%vGsx|8=mOGcxSt1;*UGAx)qpI+Ggv<@pccxchK)h@4%CMYST8Z zJS>KnE5CmV7a6;XzO*=5XEF$ci8cEsQ_h8Pm4lwie&ir(co+7~YQ_2ZjJ*@MS7`uO z2v&X7m}>Vpgpp48Ets8;YJIqPUBVM_$bpZ^`|6c!`$$llZ}zQ92&~^*?kG|*K2Bhz zuCD7~v*63S$`o*059HYzdx$&Tvq{MhBV*%eFBb$zV0UT~LlW9i)8_G$i+wGB}HP zIH<|3gP(}Ly{UG4mpascs&zcEDiSsIvG4x?=r==P2E;g3NX4 zIEkuPp*%<9%Z@C>g=imfSt1XcrPP*z-^`&LCi;eU zwizEiKvYBAItbrxc#1Eb{o2=0oUQJ}74H%v_(KUSQJh(RX{xal{4D_)x{BK@4fnwo z|6Cv?Gxp}h1vnP2$AeSQ{^xh1V{zJyAyjhEo6l)e9$0IMO`Z}%^vl?|*nnv}ve!{Z^^{XNXMiQ%@_;6)+*?2pF)c(uBNXfWPH^L78Op5NJW zwLa?SN6W^^Wnp`a)%W#DN(&Pp`eA+F*lucVy+WEKjVql$@ zS?rZ61rMA zGQ}OG{9vx6?71(5R#4(2ZK8r}Wh$xr8x0k-8O_#K{=$0sQ&GGiD?Uj$Pd_GKE~jLi zT1b`UuR5B3td{Q4UG$|HlfJRlubndSlfwUH6+tp+EQnhVVO+lGRqir`|`_%xp`2w2;KBj#eKfp z3d<-p6HiqMwN1g*()}=w5Pq)XNnKu)U9&X(Vj4|7;6+E8FQ$bSUb3bDW~7*@{?)oMw#iga#TU+p%3_lkH@=uPC-gO~Ym zD%TfzQ%hvH12=<#sTHfyyiT%2;n(Cn(j)O<)_k06*b1EOK}18Y29oP_?gz}IIf+-Z z#-e=}be&g%sg9y}NHNWxyFWiY8Z%NTdwY?G0rWV(>)C}?bn#!Zyeg6nrFPUhBx>)q zoH$ZL)&md7WwTUM4hLSV1_r{TaPRNcvV|>!4|M$`OPio-tcV$T05mvkUtxaGgf&4C zG=roN?bfzJ0qTj*-TNHP>C0 zRamn3PsZHRj=3Bi_==!Qb!sNVbJUhfjvF(e0l_iSR{@%8pMrn8t_P;I>^RBMAp>$h ztvmoH>HWY1n@or9o1iAh3ayle%H)^H-~YAn>xLHj&CS`vmF<3%$Mtx@P48#zOF6{5 zo0{bSi_g{kYY0mX!jN5RII(N0%o1 zKL{qmzgKa}mU`DHxM^5lWMQ#SrJTkHRB2amtLICJgFXH1qYo9WV;e#T%fEk*$HKu5 zV}flDr&+B^?EwDrYyVUI*PqRvQNv5NU)t#F`p$9;*!Ww)z#=`*_KzgLbUAx2-z^P8FZQzIx1Ii&`KHu7 zh_XC*(=I`3jT_?g2{E(ZE~G1GRT=hlovVf-yBUc*WcYGx?q3xBKfX|LS&IS-r;0o~ zVy-d05aqtHy8YK2X=XWvQH^ugcL>fY#`pKM0Pqc<&+d{;2fCkBk&o3ECOw{%X? z$2ux~hY4E8ygw*lmIL4{_L{MCv5`i(6t0R?GXBl<{!cX=?k&a`94F0cQifWKiKlZ5 z#gDw`pqj@xF{pX6sssMZGs*|j z#olwNYpce?UgMr?uF}>fGH2VZaIfv*=ERzNue$!u)b**67rp!)k0MAkEmdcb^){}4oc85L zVBo1Y7BZ0ZMT^gH-+n0V=)|qUYpud*4OHi#E$(*xewsDm&3X9My@OQAZD(@yvPG6k z8fa#yv{kFF0|?XfN7B0^_dgROYV zupF-czbzL~t8`Zqej>-ZV$JS17zTSgHWUt8nwPjLF{6h~=Jc@Z6s@vW{$m^aXNEC@ zckg1bGkU+NFSyOsxdk)i&~qUL@;5sgY%)qpN*`9~E4lvf+kq(q3qxe`XGrHY3>Y(k z6$xS4yNv$~Uhp;aWzOOL-;vNr8n5FG2v#j}Y{Z=l9Gm@kB`Ls&5EV}AZORmfJls7v z6i~Drrn7E>JRa*W|5jiWTIgXXkB-s7(|M_ZSxns z|DUh<|GD9iz(>jBNq2V(3?SWIXMuaa z`@i4c`F6gZFY{xDnYGq)KX+XBbze`Af}A)88X+1I5)y`_1XKwL>B%7y(jzfc6yTF# z$9xMUq%TO4P$3l;z3o&CkABCyyR)mTnN=^P0xE{A=j!>d>dsH9(zV`%q-TA4!-OmS zN%5T>dsSGQaK7zQ5>zB1SS$vXESV6zW}HA6-gR=BcD9}}=)CATIBnr%u)clb0nr;6 zxLAOfv#)!=7thv@4v;B)v4m0oy=2a<7r2}<8YQid2^g)G*RzLZs5kN;32tTiSANH1|c>)C`EzD8*p}(Hr}fADO`nW zFiiaVmkSlMl+X;tR(JeMtHFv;y_~4uanWJhDP^vOz2Dg@L9?a zPy3{c=((kWRvf5r_3{wqA_9KDRFshEJsW2L&B4tH8sys7Jg{5%mmtr9=X~+X)$hX~ zoF5c7Y>DR5Ix|izuo*YH>hdmxETU#OKMKvf~^A0$*4jbutrw`67!DFEP!pFn& zk23pSe_^_{GLhJx2g_#6oM5=V8uaMYYTn;Tg=`zp$ z1RYHT5vb7?9wwx+_x8!8J%n_KkAOOdTi4dT$mp0CmnawlY!vkiQ9a}oUPrXO#w+IA zlVa~5ZYP`Pi+4Br)CXo`KfmS|)k@8C>BnBD-CdBWt#vdR=^8bl!^^H!!_!h z3Qw>e+zC+z`&wNI&hP;7QjXRR$#G)WUF5C`WuPrSt$2%IIP5{Kvg^Z`MsHc7U37e$ zp;K1^AB6V!;!}~7K=fK(o$B;bzj6hxB!wSb?{R*$*K{x>g1IzfUab0Qm+bERS)OWs z_7gZN-^DU@g!EH5gr;UWm?6}N7ko?=%b+f{(h+uWv7WZlbazvHV)O5b*dkN0vZ1lo z$r^?lc%;GNrm|PgwRseQvuRg0Yf0QtCsg70mip(Hm(5L|QNbNFl&v~(#?oRcz2r~$ zu|s|xO-m%>`VFmpMJ2exSgw0UQBstV)L&)wg|LYFXIgolto0-WTXKywf1Mr1ONsW8 z>G2=+aj&_&TT~02@V`$tT=SMJu9UI3-V#&D-jHmKAB!u@qP7+FG0>wkbRN4kMzpo2 zZaPR;s`UC%au4aBs2miMeEGwy7`PZyg>JPr;{tWY6jFFBSOM49z1kY(N0D?toH(oD zS9dNRy~OvO((jG@nEPIiH%e?u|Jgdv`BQ&#v#%#y79wuKyXKpdy{JCkV`=fNM(VdZ`qu4}@Uv8JS^bm7=ew`JA#OMg`%tTz0(?LfY}{TPyVoj@nUk=En8CUDp;R>eXxzH~czn%+qMZU`EvS&Y?y>MuAer}`l<~7BuSE1kE3$71n024VaQ0TPHLjivhqi1882snL@4NlRu^@MVA4#vg_G@g2L z4>niQU?XojzIbnwg9<$jQxKLV$uGL8+3TLqnzeU4<1GwT85}PTxj7pdQIy=6BuBa} zgY%|gwGmuZP&i7IWXvddIb(c#v9UJEiw(2%Ah{Y)cbi^BZ}lPGi^%=~7<~dZF9M<( z9KY2PXDp{H#h;-Wy11P6rY+oQTCZFRTwI;{reZ`dIYW;BV}7StXwSx%dlAp8&>+&- zt&lw)O0H1*wfEBTF=&jf>!5zq4_p?Y;(R&d-Bhz>QXC{^W7%o@jTcI8_Td$H289=H z{q5}v@%>hkzH)u-b+L*Exj;lq%>{Lhrpt*J8E?=-KpwS^Zj3mFh`LQn>~1A|q558|YynQQcRb?#3|lvdupZr? zL;EcviE2&0z84btSq@gsiS|{?W}vIk?3ZPTxXbs~5l;i_k8%T}Jk=^368mi-EE%W8 z--{})qCs2?xYKJ}S3J3aR?MAeBIi2m7bdin>F|~7$L_SNYF@@!;L2#_{UlK!v#!%D zJAADPAMrmX2tV_&-qOe{F9HA!1UndlQ|GkP0#w=J+Tmb_Q6D*JKF`H-@JeW1r=e$1 zQCoB;bXm1fOLeFC^Jun&WK9n^KK8$$|&c+|bwYt8Z;lnZndL@Jr)@%VQdEH&Y%51Qt|K z)KslBdSgx!gjgo0lMH6Ohs7^rxyC*M!6V`79f@=jh}Cai)`72HXI@od*RU-GkEgCt zQI`F<7O)f5TYDjno28GZD``ga*jC9>gAPg2yrB2qB_F+Vl?x~4@u3j$|8u!j%=IKi zbpV&ztscVksA4EOn7=00pbOuF&uO~^j`jc$>69H#bdkX7yfTtASmH(rBG>QxqX_56 zC}bY-iGr1CmDVJy%NY#F)47@(OxYAoVO4@JDZsIL{uIOg)t}WYJ_ni2@fhg5BluP< z`}R>x0-8{YatUx3ymtS-U$3ab!-QSTO}I4NJswkzL-8wXUM?YKX^OB`Hl`y>-=KgZ z{+6O-5m}J?Xg}kvrFhoqb zn-3J8dQ3N9HF21-^_1e5^^4_6L;P{iVBqs4#x~XtcoX5-5a#XIX4L0)QXO95>&Y{V zijM1tdWwdWx1dg6CN0G0&l{6$bNyHEus`Otu#r*7qEckeiNMyWcz6h!o160p<*Aa3 zy6R#Ae@3%Vx*2QFKUJ4c`jLONIZ+tGwdgVGM*onJGed_}Wp3xABQ2$cVpMo8lIZI) z8H~QK)WKz}esomW#{=0X+Hx+42FLHUtNSNV0aTAWYL1(hy;7DH^)<387d|Ls8TN~j zpc{P|#7EUPOkF(%W?>nrP}3yvlt|a_*^{oqcj%7j@nsIiopu_ zYb6wJJ13=yXqPw}m%0tqFxFIjli7t+HX4OB%JoX<#4aEAMq8Xh(>lJms~4)|4032h z-Ny2(e%dXe8Ry&fnKjUKM-M@u#DiG`W~m9ta4%=Q{Ui|NpiCzPSmPS7hT--3!B5Td z>?q4!<1{8IL+#x9@?G&=^BUT-)zjU&y^d^IyXm+G@TkLSn2tKm!TI9gIp`(DaiFGz z5oMzYh(7VZ7GG%y{rQ~n5mrq$d9;a$9VX~~cIo)L^_{E8btgJ73j@jL3&&{OnvLxV zg18TYYuTm&Q_;KaMV`F&!%AZg0w`Ol29vRQU8D1vqTw~UcD-_a^Jk(^J!VeBB6+Ba z`MTGMOUOkKgvnHPP&t});=rS#Ycy(lZk`*@gd+~WYqnPGNWPJSuZpWbfi4IcBfs}p;xrgToUaWpPjT|S#&of z>@~H?36z61we@mue7ef58{00DR4~NG2uHV!df(D8(mT9U z%kLq=MmKpvfm-H@u64^Gis;zB{?tF;u!I9mgkUBnOD%rYYf0vz2V0ri1*(0x)ZkqJ zu&y0eO9=Bn_m_ac+z&MZUXm2#K!K!%CEP=(i$SwEzbQ&SZ6s4G!;znt7jA|h{Im2x zLMBjLW)Z6s-@#D?RNNlJH*6@Zu9^FsQVWH$L{H(?V5?gun~B7(Gsg-`xK5lrT^jXK z)>Y08>)p!(sif}hUuGUPGtGgK_Q_k2s-&-|4r&8Wc^KM5S7zh=98g6i^qt4G2_&|6 zW3)DPNLHqvR=gBb_}+Bj^1ce1VK-dK^qN9R$kcm|punhZ z8sd3T5?yl~7&pUfMUqG3x8p~L{UpUhJ2kcLslnujDw7kW1Gcva=ONA)ApRE6$PlI% zlL#~Kv|n6poyG zxkUNhGWK?HbBw9)({66puP;C9un-3gteEr-tsGpmG`YTMafgx@WZhhEp-@ioIAu^A z8s0p~`BUCx{PFS1_MRWK4FladCGDmHV~{PdP_+CqW2w1gWE~ZD6X0pvz#g% zJ|%2L#9`(ePQteg1c-W>0u_8)JDjpi-paaW^>u+pX^WfLzpN)?8=kthf+eua5O)uv z!Fw-?8gEfI?@@3z6Ar9%%BJ57CMUSfxpWDhKUO=9In3z}uq>F63Y zEQ&emoo_nu(hvy}N2P$v_~E(MIq!*?n*PiSAJsLl=!?dL@E;Z2+Dt^NX^^ptpHixN z$|iHR7igA`*?L`W&_a&-*njFZ)GESqIuS=_XPw6zqf91Z|00Bi(~zv|{bkV$!#XZ6 zKk$_T3R`(_$+x5FuDR&&)>$&i6*K!5x z7A?1Y-M{Vz<{H#3PS4(7l5Xvd-g?XzGA4LOtcwbSWJa^TIw~;w&}&yO&weyZ2Dnzl zy=yUPSCYSZBjFf;i=5*Jk8`Z$D|qdESY41&x75SNf16ssAUK(?F0XpQq*+EaSjuU= z5ZX!V&M0pLp9`KNdS|KtcLYd+`?`|#%~BoGLKXx~uL)Ly@yVs>2b_ltG-}fzGASyh z-=xRYz{6N?f6NyB0lr=jLt{DQw3-V{wr-rpax$hffhP#d`%qNb>G$%(yuio|>P4ZK zCtDeovy}<&K4Z(J30U&S2pj+OM8L!qfJR;fW#XseZ0vKRlhX#ybANk1uHl7@ znzluMagWMqarF>c+1bnfL{8a8*(9HJ)>HaM2BV1TndNPwF~mC7G8B5eO{$v= zwula*Gi0orwQeE-C`GPX$1VTnZ_f-)Hpi!G9T|XBU_8%3Ba`rDqELIKgUA{RP&TEW zS55|r4jYzp)up_0<9VtF*GGfN04MZ-17e;JuM&!6UR z+_uZUj?PjO?VX(rth5G8l26lAc6FWS9rHG=_7)mCYL&BPgg$)up4a6L&~CEs|Gehm zQK(n|t4oT)1M8i3W^#9nd3boZ9XDfwL+xqj4J|o|2GUs04^vR5oZlCPT;x*lzCeN%DH{G^GQizPXxIRXCQL+ttSmMJ=q|Tc|C1q9T>0IR;Ej)tj zv!=WD8vFGa7e4pX0&I8ig>hfPR{_tW}?*zlweZdn}4D}Gvk!b z(8MG^ub!0OO(PsYT>tEcB`m>w?=3kw`Sdlo3~KlhMn*=t%q4<%*X&Mv3t{(EjyjpF44;0tfRvjNk+so^?>DwBB zsf{W9Kfjh}R6x{x>`P!Zo8v9_7>$yn--m8)6qOl&R@Z=?O<eB0%>6^y;@CIv&3N zM`j)XdKIde!e|ZV3$?3Wrg@$wCWWa{;<|!Ysg(R^m*vzEpC#AjCO$8%TWNZM!-#RY5)r6*~j%{?#F_nwaU%=fq>4XNE48R^6xW5<59C^=r=gLc2y6?{P*fJC91=AsA=)1mh}+H9_ehAWT020Lm|0c=2Imm*~wNdmR0lq$d6ITDJfgIG4K5$G8j#iwDoQKb5T-?HtpOJuzcih1sxsT`QMC) z{hPBzqKF85R^jJd`MwN65_mJ6WZrXFu68d+bL7R9l(0|t7Ohhr|67;;f3C|E7Ei`z zZuvPJHkl=jmtlU7afDHA|8wp4{(Ag(_<>VJrHBUwL;ODm;{c>@V3jaz-T!RSn`}H^ z-5F#<4NBC>5RV`QIJz>@f4vR&k1hlJY~YpB*M$L~@3_6Lxvi>~P;^{ZW5tZ%eVh!i zG#1W`!kQ#`Ys!f3+w1G={b`f5rM;%R%K!IETrM zxT^XOtqQaKlM~fP@`$wUe1M^!sc-OvaK2qsz|b`T5aKOD#pT#N+VCCdRX8%BdtB`jMX#Fo=bo1~ zn=A_Ry16VRe2A?~ECmGX3*{6AARW}>2G>90wqJW87C{;YRN;IyzVh#N8ppLtF!gd{ zS%=*@0_{qRQc|CXpsfD-9~-QI(DlWkmHPlBoILFU2N>=T=hALw=yJE)2#LCJuIFJl zEi5h$C{+*p-u>)KgG6?E!P z4AVo*#`AK!7%Mo;#(q~!>OD+-D$FOv3biV1PR7;q6D^BtH|gJ*4*mYm>&og#1$D;k zU6<4?_x#V*7QC)3Rf_d=`xO|#@`kB>It=CGJv*`Ldb!|Uqr^U|f8{G!&K1u!&BJp} zH0iC3tMqX_qamrI=bf7Gf4eAnzneDg&swrI=M(sxSrBa%_>2mCl*uMACHeOjlPNxi9j{3P^v9U(mK*{7c+>;XO;Y>bRk_NkLvn|uM zk-KTU`;^^Ac|YC66-GVK>dEh#yq1xe>W^L)HQl;ZGy%U{0&-};OwK|R zoLt2BLo%o3TjM_bacXA(>jK&1Cw7=`AS;nm9y?s@P(m1c*k%N`{;nGOb4Nt%Ii1;5N`F? zhrJrL4s<||_Op$WA`|jSIfpSSd*99zp3R38PhU^)=Gy*&I;Qge1 z*^*=YW*JixkGEvHsk%1WWAh+H^)R)Hf{)?u1daO8;*@2OXX4p&ip;-2+Lr0QhjPO8 z&x&zfN1i$Xu*}S&E+GM*dIq{6X_SJ>&a{sfTtN9q-s|;qS|z!TzUUwZ!xV^+aak(2 zEm%oODbygO&3(W583s>I-KZ2b`~-jEZ{B-YDBA)&ba1lDTE8z%kSsShH%}=7OG!>s zQwMg>XXbXG3-@tuu|38@N78g{p_Qao?IWe2OEnh5^8NAONByMBQg>Ul&Y0hC`@_r1}(%Y|>A9 zE`l66=j8Eu9npbqOD_?xAk(vjX~F9HK7c1TFekmtb9r# zs2!1Euse`HsICMwYjYk){ZcO*frL>oM44G%R#pvWAz|(JTvFzG)P14SuGx)GRDeh< zE+%_K7W97Xw<%S&km_DLKN!~m8I=S(AX8K_kO+VI=jj&wiAd>Agt)2h)hUJuh@bL# zH$ybmqF~!C#N&^(zI@&z%Q~gV1gwakm0tU~uL1*~A4up#nr&0MYf?S(^!zi)_Ner^ zq=ZzUs7s{hd|q>)q`f+s1S$ny0Du*wnD0~FGQUev`Wea)i$VRhRX{Z=_hE zZz#FDC6AxIRKZd1y15=H))%b6)KuRcOyR)+IwjG&+nb|MKNB(fwT=j~2%u@nD=IB3 zEMU0`3JzvFU1fGl1=`~Lu0gwSAT26Kn|Il55T?N4R{V^B7nhVJ0MY~cbi&KuIiKH+ z1XCS)fZj3gRl6oW|G1xz2pA$*voEEn@csY~ZVDw>LPbLp?Qw!ywz_kv5W_dT=D^ES&cHznMEBY-g5O3M`tsCeS?e*e&kHo5nGr*3> zePcw_^k`t}_hX~}2xH2|XciB%bzIxv3PsdN`xG^WD)nUT&+EIa1rfsEJ-wSV3h?mR zKzD&R#Dvhb4IiM8`rSk8|FAf~F0h#xJrAsZPj>!9jG`j)u(z;_FKz8-)X~W|?^dKI z38TN|9osPoDQ>Ju40EW#wc4nUwx;7%*<{<4QDG*@L~DO%v?uL|-LH)}7xR`RKJ94< zcTv9w`Y39=du7G}X-`8}v?N30?WOs+DrZxdAr6491%MKfU0V@O$bkk39+Z1C844W4 zN!X1;Ysv8Na*W~Qu${wR-{&}o7VJhnuVmm50(RrRx8Z<#rtzef%|ErEc=85dS5y!t zJY1TcZp0*8HQfTA3=CN95E2|810eF#0S(pDl_Hmts#X&q}EQufEv6OlW7_+-X zP?l$^oj&)s{&2`Fk{5N0Te12IF4jW@2Z&P6P_qVVZ~W{kFN_dVP~~sbWmDqHqF`de zIGESTO67yar;>vQ@r33JI&F-h;1P5>>gN<~F92}=-`o7=4CsLqA3CvPA(|W;yu=t` zD(8;Mg~=9YH(aT?BO;WgNazeb3*^u9zCale)`<3 zst5Lw3E^UzI3Bdi&q|xqB4gMJ+^++2Na26o*#j1!TZ)>y`FL@H)h2PDgW>rS#eO&YB(qd1KR7(08CLrT5}RCZn{y+9m}C{f07^2XvOitXkqqIQV?BMlOohHTn{__ ziQ#dV3C|c&L_N?G8F_wwPC?z@^9Z_-jqm#e1#FSzsD#SEnJNFgVvn|}&b%kdkg7jW zOhZ}l{2UNHNbW*PfU%Qd4mrI9Rq9OwB{r;#6PHeU8FV6nux zv$c=j?hF!wN_%(Sku{#4$ly5SMA&sTM^Z>i=*6M%>xy-}=)AbB3Wv_6zsf9<6y$z%{`1gd=6j+Rc29mQRS$vM#az3SU2NDT2P`h z4?N(3_tMnY5|)rGXY+=cXutkp9D+d{Wu}WjAsPYHW$%Vq&a9^!3%z@7+KRgQW-S`Q z^4u{#Q&vLzN8@*7Q)eK<>CTH6R415Un*f~|nNMve*f!9!Nx%zL{{uZbB+@tVy?&<~ zTX-7lY3hv!4j44@yGBNd1Bv1W5ZWwic>7}6f&Q;YK3X3X2apd-2oi(TuM(WkH0ybt z+3XSBIdxN7RZKe)q8|We{}qOlCG)9KCQjXJi-MBQUc3_CVhDFX>X0NPZ5 z-ukCi`}J~I4QF4BY(9MCn0aw8md4$o#5W+SMu{t-SAY`JjOL{r&?mzlZ6S>ngde`OuQzhG{%) zIcUZkRNFynqr0fg=88?Iv+*r|FKxZHPx>AX{@V?=iJ3#1!(+zUwWAR>`L;w-JbCB* zarU82w1%=!;xj)yy^_XX4;{p6Tp5-tpZD$fYH3K8a8Uh^#|m3$lY4RW>SON3aE0X!|8q@DfGF254I6%d27epW!N<=0CkLB2oF|twY=qdvU zAOnD+-mEw2OZeze5xeqNlC=-#gG5%!LYiw?XjC{P;yDhDhMwkqe-e2ptr-Xj3apPC z3~$9zWFH&E!*Rn^LR4t4)mlvGIhd+G6HuS?|8BZf#&{ey8zMkfE3nJSj`>|)hoW|q zcXG?zb52)aF8NM??mtZffMnsVi9%^nyC6gMh>x_NiU2Z2%A>nbPo7MBVia3`x7Y3R z;GSerFV;KXsahO!l}{7U-4TiSLF=P%T1?p)OE1vi&4f|7u7M5u2ynzIy$lb{qLLRK z1B`Z1Ej_{~j;05Ym4 zGx2!-y#IGDyEAvo3SQIWW5}=CVuC!Kjq?GmTqpB)?iAyqV<(>0oJm|;~)S(K%F$wnvt)cMNbxmCU)7pKK^*vaQQSkftu64#xtHP>ECEt%8DowFzhk8(N^ zee0Q^V$PYP`IiNyv_`Ej3-p>u@~LuX_Yd8VY}BiU{rh_5Hx&`9Yc)lMirqOVgbmw2 zJ+>Hp1}1NB%GJ!@ZSg+eaSIbWTB}+z1KFsL36;NDuN-FK=~$>MLowqZ`*P(j+xb{m zU$|lBbZ54T3_a4qoP zM=itYlNJtt%>{2$!6#d?LZc!vC1r7tkL;(ZMYW^R z%72T>Yq8~7CRLpd%Oz@m|9R(f`~!JFiYy0}S2o zsmDY;RpCHd%0=nb-p@aX{%|Tko+Hgbh8viDxl=5|*!O%^Rx%0aZz5?QY?2E9aK<9O zKYH6bWhC#`L9snY+uau4kT}&yi!*zA9Zu$5X>ulHQDM?6|17d{3yE{@5+ixkyA_kq zyZ!9cV&(vy)9UW&qUB=5Ugb`wKN)+;0(`9SYJcao_(axD`%J(4LH`>6`DFnA`Q}xc z>V(BiSWH-5soRRY#z`tak<-U4e*Gf(&fqZzM)~<5qs5tWt7lO=7oT>V7;lXE;v^au z{0Ez6{M+?!0tY9q14ZeyVN{w8PwzAe%3xFL_8`}XiDiuQzvU-^RVHicDt$6i?V*|02TR_K z?ZMi6E?nehBZ@Qa?oe@n3pZXy6ALP@V*VE5X zCBbeO^3XQEwDcT){)I}DDO#5W__{yMpXn;>p_{^p1DRj^B5UMx@SJCZVpUuw8C%Ka zLykj?kdqE^mk~Jgv;)(E4jbg+~V{huh$M@IaxJx7~H9+sDjS-X2c~r|oAAT5YvEm#QmP_)Mpk zNajXvE$0|r9q=Cs2mJWTucp}kN?=Dn(f{M9vJO?yWHvdB%ZZclYPQK-%{<~6O^<>5 z@NN;|eoYxc5+;Z9=UC?IllkC!`sVT@wVp8im)`nhDz%=~_Hzvls2D{nQzpM$)1D2T z1g%L8&5xJ|tgv3)X$#p2ID&_oA;_J5{nbsmH}xLc8RPB)o&PJ1)5^o!@{1d_%+jUN zd2|VAJBM-Yl)7njjSJbwHcx&{MXzECoRg1?jEwPEPnU_x4pD3+8GU!i8o!!cIoP;~ z&HP!vyqPzk(u&(SZX@z-_N`e5_P9&GcfZf@ejvm3%rN#Fm@)Q?S!$3QGk&8~ zoB866A?d?rktV}z#*yw?fH%uCND=WU=V0Z>*Miw7=Z};h>u|J4=OH(?3?o&E6aHzP zfA>3}*8EGpSak*Ru7$5Q;h*BwQKX2z9OMOB`Nt4Nj^FNUqey$Z*~klps2Ka5N1wk4 znpu4j=Oz4uIZgCurw?NvFB91+!t9H@6X$Q*r8@`8xfvvH=80j{J$Myz5z&&fGtr90 zmk2eCeLmo3$x}psoD+!tq!MH7i;W<8_l+S{bq*tW6Cp>GArHI_J%io~M&C^$?zmuK zhj*#hP0r@xop;|3?>=U9ioFpcn36m!x)eNm>5jM?qDeIvyUPWfrA=_>uBqp)+*yDF zP3ZK_d2f@RpwRa(;9p|)S9ksWt(|}LuI@(9rtb!=hIQFqIy>Sh@}h;MUd65S@MsQ> z6Z6CmKi|4{mkt1STvT;1o$-Gaqu;UZCFxfXrQa(mh|qSkaw@o5vUrzg9A{JGy1Oy) z69GQ-Sh|DettPl1{7!A$Kd_8&0Q+dNxHaB*ET|x@ho#}G77pGQ3Xj|XPNUknp*od#p4kI~pHfAjq5-w5> z{|b56=-4`|XiK%MT>C2s6_+A!^>4#qXshRZ=QPp$%ddpjDTejf`GsyW3hAo8`Oqf? zff~8N*sKhyN?+&z zABkUcC_gu3imrR%fV!50!sA;WXaX7nr;ADm;_!<<-!xf_qIzS?^r)_LHto$1rcc^W zssgQYd2tSITIybcn1yxPs!{DgtKdG-l#us$FlJ%hwpvst&<=P`v_9ku9*9L)udN={ z4RiwD7M%^#a|1uSKtWpCaXUM58~l`}m$2tIN+v@gN-inH{naGga5q zr!^&SVYw#&x=s0#?g_%{lo}$;-P~g4I9&pwfI{(njt7`NHj~C$+ zpmQFHPHsm5We)cE<GMTBeEM^Ls8M~im7kfu;E8@W?vU!-H-J-cF-D;hFc^HDc%sQ5H%on1% zLs973c3-8L9kO_BJ0S>b!|YH&$w(#~X4o;%5HY?Z;8`n+9*@ z^x92D*CiU=#*RXcxvSf+M&C=Yh=Tm95q8>0Bc#evZBj~TWW5ZHPf%KcRC?PICt@cP>`4K2c?Ye2Vg`3 z?QG)XY@#j zLr*`W(Tb)Te~X*TKoD2qUNGW-6Mt4)zh3B#zL1c9nj4hg08$$j8ps3t zd}%_GsAB+#VYuxOsDM7;t4W&Y1pc6$yv#>Z{bFGLnZRS8ZQBTlMij1aVL5g4J@}6I zbD^(~pA9v6dsCx3a_RCk>P@sSqRlqqGq{i{wpvhF1OV_mR%cKo0V4 zW-fA3k%ur2U{EG+SpVMl~FPOIPerG8$%HQYqLX3UrIPima=8tu1gKNycNKclHn0}F_hF2gL z5iVH~{>cMbeFoltXvWyLPQlo($ZHwW1#XF*1+uaN>VQil#{S;XyWi`{M1S(_i2j6& zRhJ{*#%3Th$HtAIashY5$JkeSs3WNu`(fGlWrvUGPqIA`aOFnFv~py);s@Y*a)lT+ zxiXHENbyo?z_ZZn&2#+D5}ud=-p|aToJ#^1)YS*RvjN^J0{%1u{v1bD$Jn=b{jWzn z+ImZo$w-F|%c1lU@s^J&>Ymt>;|0H`Pw%pyt(YLp>B_fj%6DLh>M~!)a%GC?BHG1r z-3>1m)w@CdYZeG0C>|_>x6vKu{mPvJ%P%yoot2&J{hs}&*nkKl!pHYz+~_BApaThOHzm_v38sG+3tL-%c#Np26Jf{%k;YE*?a(S%!60)@=Jec;*+MbJ-I%v4m#CMZk3>Reg zY91-HE^hwAW~Ov$!lQp|L2MbeDY z?ojCYw#wYn=t^KOCB~VNKggkwgGCu&m9Mrx&6~Ww6chbfRMAm}Mt_+3X#CnMZWH3# zcgeNH^iR}4N^zJillVwbP*DA&YT#e1^4ci5h=82E5S!>Zhf!I4HbYckC}c>?#lV2B zsHj-I)JWRjCP#bqL>?M&``Ob#!b^l~OidZZcd0^h8H(P*9NR zLVe9l0NkdPk)(o~aTnhW81O1}MhBDg6D6yBmyE@@=UgOQGvA3WH1|;^@Un=8rJYT0 zl8qUFH=t{ptEu6P(Lg7B*sBL2kJjzV#8#3uajRD*I*ZnoP**pg(d?d*G$ps&t(@y- zp5ci1oZv=aQ3Oid0Aj`8|E%3=JVeN&~uqes2B?hw9SWcHw$1!QgttT{HAEMt2 zqX5b<_r%dLrKoIl+{4WS(mz#d5bH3uW&ZJv!D^6#w3Jj!BD+cGiIGmj{=Ur$x7#O- zqZ%!S=OIY}WL{I;a0m1l+kAwGcCA15Jw*~DE+vAnoT+^FxP$3kBf6x&>`ndquQ?eE z@xbEc7rFFXD%5)r_&Y!|331pIBq^ME*ExRbS&id*sL|jQJ+#zs^!NDC=3SnC>#c_8 zJFoV4rwf5gKWSsV97&-^dLctRZlD?dVbTg<^sbGPu@z9$xi_89pVwtk?OgBs?2<)f zoy&N($(u{LrFi07h+Y0A{m-uGv*H?}8lDA>RPhH<0T3V5R8-&f8r+zD^4@}wjo}I{ z5Q74Tc+15`ezig^BjT<7rB;n5FaF!TyIc7}23Rm}kOd1^KEjCh3TD;-kns4k(ofSQ z_=1Wuai()jsv2%iXF+6S#T|b}$(Y$*r-kOz#(LCB7wuZ*rv+TBr)LAaN5{o;Hs*xe zp*YsrhxvIA5jFK;SvX1O90J2-dmQsH5IwQm=~%oM_G{Cf`Yqa~8pEN;UIe)K4`h<- z(QU=?)I{S?J85pMU!QmXYF+u;^XGKcRgQmnSJ&{8eq*n2Jn6@;^flI zn!~dFQi|Ypz!}&Q%URBfhR_^ZRS&JUM57eaBe}}x%@$xzybMS*Il?`U|0>D=iVG&K zUkc0e6VWTZuCL7NA?}x_JLbgVlsJ$7Vp=9je7%<`WI_~`z{TZRk0dkaT3EPh3Uca5 zdMxJbW|v|=cW|yrWdV~@W)6T|TX)ZOVV+?9W--~B+`JwGlTs)|8Rcqk)>K{{>$*vwl^kVnU?}IxXtr#r=`eVEzHXAc1CW0X*Ew5{6>6)iE`A2( znEV_ccP$fim6?ED$qQU$mSRrlpbGQ17RGr2Cz$4C)oPD}3vfPH8A=vGqcts+m6T!- z(M6SRF9gda>SO9J){;9|`?~tRUw+du=K05gvc$x6C7}F0F z34ZO0J>PIzQ?-U~`E_v8!s#M;|M;J3Bm&EoL9O6DFoV*4qWTdmEGx}(ak1dO*FPG2 zis+6uo2vzunxAOvNDU`_EHC{o$dyLxLi6+j@Ct&f;E<43j!7K@3BiWKxy>GdX|X%T z_0dd8ocnpzgKU6OQ1EKITne#K^m}4mHRc7Gz}!?-EWl~73;d?_s_m#vxZiL@nSu)J zY<4d|mo(atR3Pt@=Uj@c;I2?PGv)Z%k52vMqKQd%52@HFSKZ+H>(QfC8PyV5}fY1oa-Cz9P1nz|5i5Nm&ks!J=-&OVUCf=MM+mx$8ujox>nQQg7<#!1%UY0 zrRU}?-z_9owi&s8JX|Sy@k9_WzwsIWp%U@wU0g2dBzUk^Kvb`JgWZ8QsmcxO_GB}| zEp_&fxB8P^?^d4jf`P!L>eaY4)3H&ivjn9uO~l4or9&FO-7)^HesR#|ZO9%?ZT%uY z&x6FKof4|2r9~(#EPSX^`&rV76_z8KKuRWGTX+l9$BsttyBp{FgAO9I5j3W@U#O!k zLt5iGWOeIs_YdXMV_s0s1>hTIB%V6c0Sg`Vn4T{*#ltCZtR&*K*h@=Gr64^5P)5CN zo?0ANJN>*D6&8$vwq(VehI-3odxatYMiwzX(1p|ark}PAR_+$n2REzwgYC5i&ZXNk zS41<%Ntuucp8W5uNU#sc+4Lzk2lPS1$AZLY-ybtglYas6#e0F!o;{I zBhM+&Ca8Us;mG;`1rnF!5S|UTv~Dk@-@pI+c7;!R7BA;dMrH-K2UV}pjZf5pHVvuQ zhG)PN4=+gN&P=Sd--*vjH$+K0pHX}uR?gRD}5sy`W-HG-GY-i*H=!7`j2_fRvT6QxZ_?Da-R`bu{6yX6Ii(emM zg=ndx->=b~U(#RYs={I#`(7%Z_XuciLRNd@GXS#S{s`c(tXgHPRmJ6nR$4TNmd55) zS(wW6*RkMP0%jzy4B#&f(RQ z#Lc>J8JmNhHC^VdSFeI09XJNKuDf8}2_t`#i&=cm6Z`m8`0M|(s*_25bzQ~&s2<%j z_51BA@@Hqksi84g!2one016ASEda#(A4W1I^YRM=xir-)0rBe&a6-VSpvm>f*inB# z(%EvnbLdcEKsB6N*VpLv0=vn;Ps=Q9>)Y!KV8$g1pSC!$g+6+%rqy$~c7kY>NwB4Z z2yWw?P%LB~Nm$H#4*koonQh%Xp0CZh_7nxRMfD_C6Di8aom0djFvNTONtk1cqFwNQ|IdOD$f_%B% z$vjo`2KTd$czv%#6Yz^fs&wFpiWxu1aIL83exz5r0315~wpHA;Fx3=id#Pau|N8YS zzJLe!y(HR#Hrl1jqJqu5upplnF?1-umr*h@LVt)b*=TX6yLQ}#)V>G>cIk|t{iWbt zl6D0knE^&WQHI7hUzf<3MOI4i=WfqYQ+V8qRG@lov(Go{WWNo4)TngI?>%e*1{4Qv zuhbBd>7VfOnxfa148}B~CRXA94^v;^5M|fAZGj>p(v5_4H%JLCArjKv-O>%Bpo?@j zC@Ia-z0xHh4N?M2$CA?Uo%MO1_xJq+=bkg?oQZ3$nH#iU1L_#+;-!1cE7K@pvgu#t znJ22-Y$PSx3ejKuoY~ypGIO5<0#TKOjC^lXXqYZ49`whWtlDT7vnzq@%> zBw#0SZIL&qyIe7g_rI+ufEWS=^Whrm7$lo#sM`_H>3rYV-*IT#mqww5CWk*y`J6;y5(-T;jhE% zH{Upz!<`2KzptVxMrtkJFyf2Xsn)T?_1G6}!GL+LSNH##b7k0-+hYacNVNr)6gQIK zq-2)8t*>|!<8tx{tduyj2O&Xp1?>Hyq<^1~S~NpQ`eE*VZEV9CL*mMc=>MJ&XqAgI z8lBUvt{RDds{vC_>T&m$)@EA*jTK)Tru+N~ZpCRE=C%#`J}Q`sO|}RI#Nu4MiVP?xduVT>cjDW!KLRm0&oB&s_^Wo_aJ!;O# z6x78a=gFO4w7+W)6)_I0d#)ZPGQ)?nWpoXCmtZt}bEhgIRtF|qfQ~^Oq-GRx<3tMT zY1#C}QOJib3BH#4xj*q`5Xp`A6i+>K`wx~Z#NK!+E)DZrhX{Q8(oUB zT{_419~^*N@vo%;H4~Lsd8=1+2Xgn4b~C&ShL;px3$o3)R;Q6Gg^ENwD~TS*aa|Pu z&|;Z0uZHkwE^Qq0C=Gr+DX^>@?;e}Mmsz!5{3ex=BNxvM4Gpbqis@uvGB4UU7BlJM z{#RU1f7u&?vha(@{i_!TFEW|5>WvfK#wA?}XpmPO<6S~cMDQQxUat_L3f=k;py0_c zdFJy|&xt0kR;~$zzWzdc#?^iOgv9QDQv)0?KnzwLe+%+XuiV_}T3E-J%$ zQW-4^0JTT;C8fu@p2T;XJ>~WaE@rs+ITtXHr5wu7wuj(i`*XB^yqt(z`Dkp7ibm<4 zm37o!r}Xmc15kndSL9nc7u&Sas)rAn_NZOT`R&Wx#%WxbXprr}hGc8|gH?3w{jZrB z6wOSh;M(!sp3*JT?i=Htt5rVxe#f=orr%36U*Y=ik!Ad>vDc;haTHdzy2(>C#T;UV zk>8mFX&CA1>N5GWJq_54+-B+8U*adu@bN37;#{I8W$7oPuwf%6=WT9XiRNd3750Fd zAe5_8vjBM;OStL7H;mA|!!ntYB0X*?0xuWB09#)U5)rTH{)3pokFJW|t#LO$6zi*C z`?D)W;lkl?7*j|Q&|vMq8pQS5nW@#B)6K0=z$_lY_wt6XnnI}>K^xbYU5zvQh?|B- zCPB1jT4BRdhp!%v*8%BxsXiH~u~oH%(S251-oSP(7(tCZlkHsmzGxSgUinZ)386(q zkeUT;^6Fh6S&%{RV0YCv(9urrVy}@u8>m|8M5@>hbSRM@7*zbZa0N!_Uq7A=$p}+o z82KU6DrFriBH9}~o2ZN9r4q;hdQ8nScG+3PQ-?}eX}c%OK9u4%0kY9p;_nfQjI$y2H}ezlxpN?IFtnVafUYDdoYzH!pBl!Ue)gMm>6(A#I$A zJcknrdUP3lL)hur*YlKKOoQgyUZ9H#^iS*eN7Xi+Tkv7|HU zYYpdgGxFB1uXEgaBbi9SQ6tRI=AUp|CZq`r^-@>(P1PpnQO5VWIwnHwV}hFwQHAa0{-Xw5Vnhn+BAItDfV|873N^t9mNTnqAEMCMyR@dS-kj-m9^-GzR*i?#vfzaCQ#fknzI3j|)0V@6cf zF|#@4MH(jrH(=UV+l+^8zBqhtQJ{&EI3w=mZY>xqBQKTl6Znep``*jt9x$&-$A6BP z>66{r#w}3D9-!Sr@1QrHyl$UR?+*hLO2P)lJG9wO$H?{tow8h6qLN1XK`J|(uk*rl>& zHb_zxuyXhKtA9YpGrnvJRAA62VCZ+lqnLiyf4*nlp58N)k`V~lVX6yUlC;Zv{edr0 zACCv{!FQ>p=Djvd_ARaz9uQAT9+ zw00;>ej7qyQjXMBe{MPwg)iP5r+jPC75Qn&?QR(dFZGol<^drSQ8cO2?t$YK9UYBQk+A53;+ufX9fP!`if!kA(YUl8+KkSLx%dc~+CFtBoGyS!v^L+q>I$ zqmq)W{9f0UJGZkhfA9lLoZ`P2i;5(qn@yeD(N|KgKFRNo3QjbUm}kQI?%RuH+Va&# z3U(~Fu0z_`X>BP3&`_X1VJbrF*bLXY8sOg`|B&wE@1|{#@K3>|6W5CyeI`xFdwzO~AltGl3J%}al-ccPEvXRqgJ;RWcMmEvhBf`!2W=g$=905dICv1C zAzyQV-5qowZ|Oe6&MY|_j`9L1N)0qsTvkdcU z@yMtBmL8;D(4xAgelCp)2P^9%_|0|WaY@Xl4)X;vZpYa)^?%LZtz=o7y|^KqsSSNp zDSOMLY;hch8IHsZRpoEw{YirC1@W#vWd3{LU6h&_3arIR0^l&07T|_8{!vllvx6L5 zN6-jYcQ`1F6+-JQ<1i5K66PUu)8dAf=~^GprQmPDj)@eNR@u07^9@+%DLh6gVJvBhqWO_+a zW&oc9_v;@-ryg1NA@X4GnW7y4bgwonu2H2=o`yg3T9pJI>%7S_1o?9~Cd!JTo%c z^^qf-mQ5VogEi_1EJ~3nbJ4ED5ueliO~Vn0+;idnP=z?Ocb@by0t zpm9NHFjrRfm@-QrAq_%Ba2lQAz^0w9BpMbwQV^L~lybHdbLhoe{MCh;Ro4##b6-XN z$Dyr13k;1G0$I0g4BC56XOU$XEYD6iCini`BaNLFzBajFgH4{uy#4k4 z$Q_m>bDYnNYI?6B(WQF*B?&(DlUY{vwR*Z=Mn22FctUdr{fSkl91A{l_R*V5_>EVK zb&Eo#W1zuEjPIfUfUm`*h*IpG-jjntmjah4kFx{wqpeA$X~YZpA_Cfj>!F)7@o`BC zp*`b`GRRvN>E)0BADpF-lR(D(7AsJLs&SZOhP&DD+6)fgz=@kz{sVVh+e-46$K8tpUBr?1UE zD2&c0by7t_j|vAR=0R2u91#a2b%aL=FV1?%Et$&z97L~e0qjV7UV)>DEFFqVZ3x^B z%wg{NS&7T*7EB$-1rI$3dK#LMl95Wd(a=}nNR!D*q5j&U$=ipT0R>`%R2;lEpgTQ< z$`Q0Ur}!8DF5z;S^pPg)R`~ukyEEla7c;sSBuCTj@j(Z)siOnZ(b>tQ%4q1lLDzJ; z6e?F|3DepG6Dah(!g7(`XDf;E0k$yJ9n@qzvH5HnZ1av)P_{(W4%%apCg!I7zL_!= zX}R8wo0W$^a>$le4?_LAqdEVmLd3*Lho1e2Y77eNoaX22NKIDPDhWqv27Z0ap%5kD zFe|7auJLv<^d_y$ckm+O^3CXk)_Kkkhcr8SzReajxA-R;fGZ76<)))8v z&zPYucI%u*4WtGkn+NCQX)XrQja&00;XY&V4@|EQRxHrHs8v9t@yId2<1xJPmS$M=Gf!+*ZvvU*9UmA|Hj ziGX1}q|I~DtE4vmA(@kO!U?D~XONWySso)_L(gc-9BMC06jmFnD*Zj8zKcu(^ z5PcA#8DT;9!hhp0=7BTR%&#lddV~B~&xqZM^AISBgNWTgYRkbi&SggRMpktq2(uH% z(_l;NMx!~IDAi!@;fJQ5-#q5MWWf3vBHE*oxsl#}?=6MW;m>}2Pp(|!-MMD{dxVb; z7=Nd+GIfvcl2JItAg%So49n)C8lT|cpv8N!co-cHA`zcn4icum#M=L;)Sr-AWE@3A zdi-a`(e`~4Xu7mHhaD;B`!lzzUWvVlxb2u*I#zX2NsPdWHsI>Xe&@P(F>1Bo6XP6% zJSmG@u>i_{=lt6WqwB{|{8Rd;nF0FM(i%&Mc;`xVl*EhepTM#pzIp*9&eSo~;;X*S zb`$2?x&G(E0cnkP#I(Zr=en60&L&k8`UgOz#$)`Lj6f^hu^aP7@5_9g!`w<#WAsd^ zW9S}|!*g)MB>()E5lU!K-m-q*1cGF1Ahh~2k)2w^eS1UlPj@3|6dJ|~S+}OVh>i zD@@g#2vLgoGuO*~skuMDvKuan zoPJ<6vLvG5^D^|m`}nZGc3agkC6Bc?@$W|<&JC8&rw-d!O;;wa>fD=##tQHk%9pq`gn+ebYV?! zqziIsReC}iuH>8)x#F4QRg<;<-IOofw$p1iNs09iwJ0l~<_NEMJQthsgG{se4b(Uy zEDCd-*UViN(u&fGGG8TWBdxn19Y|&)o+yo7o*nW5jg(}{4gH22zEX`KX{Rsy`TwuY zbJkvBlf;n6hXVxeI1AO}a$I@rM*8g=<*QJHgBm7y!K&B09Se)#5`RC*AMDY$375#Y z-U2J9fDeEfseFFg=cNiWaOFt&Qwt80rVn_?-fXLNE`sJVdqt1!Xjid5!m^nBmgFLecIULgT z<+TI#nL?f8mt|6SO<^~C7z#f6|2tZpSJu;;;hKx{rl^}a%w}G?P?GTyB6=0c%i1>| z5~``^tXY_QjpR_jW>;{++dKBiN31?K1)q5CvKmI;fft{gT(HsqFnsf>#uDPlu|=bx z`+uw3lqu}7MzBb$ZVMfK_PbO@<}PK4?JG{wn2kBR`HzYYfUubkmJ48vGL8GuJ@ucE34jr1@}9z0)khA`5y{~ z8tZBngNd75=F4mD3O@G#(~CE7pEv@uJdbYRfK8n>x`to}D@*E4I#RJ9Z7QjlG$LTL99 ztLT3>0A@U)Heff+4K`qJMSNVAH7lkMw2KRh&M2Hu9nEfr+ZVO%W<*SzxVqQ!0L}AdsvpLZp!WtIpdv8 zZ?DXZKXGi`KP575cO8WTMFsx?HvYJ(ZSCr=Rv?Wmx0iq zuvED6sDIJ_WV9WPc)5x7N$WBV3Vq*SHtFztIoxnD0DbUH#L8J?WRL#05NN=Cq>y^C z=oCINVgpY8_!CM-5JjQRak6`>s6|#wv)pjhK$WY9mZll3+)(4Z<$s(bzR_NSdZ1`j zFg&kKnastI4E4sL&%?x-tGn@yDtKD3+)cgb{=*ja^~0PfnZ$7pj(AzB>HBT%Q(E)|#RZsqm}S z9c=N{3-blK1uqod5cY16Ay%b3Q3nUgL#TrTY?qW4)`{r@mvvsNJZBMad&z`6efIxM z`?H*~Q^{tW-X2&lO2fD2la@&A_Z^2KTWy*8VTY-)&O|nnsUH6M8Nwx_E@16$)Y`wl z-v(;~8>Tdx*ohnODEy5wakcDHZ**7p(E(Jpj2NNZ^ThVtQ|Ypw9~lc=(mK0K8f$x1 zE*hh-hq6N!y+++hlJ_9~?X9`*U_JBN89wTaZ=i^3bzY%0FQ;E2B`UUay_%Fa_rLXI zNkkoEy_XE(S6@(eD%@_POY}4>RpTD-OdyS$_hHd;C1RBxb!Dp^7sOD~iHjQo=?+Q~ zWh|JxzY)!+m02GW{ug68&u3(0fApGZdCm-68rmbxWQyt6m~WT`?j;|>^;(aV9vb;u zS2%C)L|4h~O5QesFUz>aMuTY+S`H2>C@bP~vO5k8c#Zu`-bTO4*~Fr$`0tQYj6Rsn z(d==GyYhc}kR|1I3U*#{oU?!A9-#XSd~8mXKyk`t#3-DHw$19@SM5h55wHF9q!@eT z1CP})S??ChYTLZD4jyB;g$mLdc_s@CGoa^XEvj6xWY}mq?F@4JW(!Px@X>|&vnP|K z3v&V>B)yshC}%FlK7@df&;}^c*{{JV(c7W-Y}-~r_`glhvM08|+R;C$I@DDLT-p`@ zu@-!ATduAd>XV`0UI}5Z()d9{ez1je5qqQYx?LD6Eo>5 z|6<0ql5VuFM)TI3^Y$m6J}dTxTV+E%@(6z~tzEg>OQ(^RICJ6(XSLq@CBb!`+TIIu zXef;VSZoBPF~@~cps{f^M+COZ3iZwdl(79p?dXM>^Nob=fxTeHlxo=dl_izSf6nWo?j z$C7{Jk}fExrR#g}k_?kO!qZ34IF&N=!O74^4+R;jFfR7Iap0=?3Y!m#J64dkm(*pLx`Sn0*5dCgBtS&F)OWUV;l%STL9gf463ENDfC2zsk`e z`%k;&dghO(oVla;nQ;;ZEg<|SLGC8_a)?n_d6SLA5p725d{2uuV`2BBFD~GQ-OvxJ zD_##h&Iqq?-i?!mD0GGt*S#ffo9!-FBz$H`_@yV~qgD3pu2K@d($KX&B}hDvQF<$@s&7-uhX_tnlYj^YjGA_^x$q6X^fW|1eB%D@B5piao02nV?y6KbS4^~?%pG0qW+DRgtxY#`A+$GI8DigYs!z;nWPTE5Wl%MoKw#?_~yX9sV+ zY&4s?daGC5yHYe66>ZvXh-*TQP)B{+v4Upy}eTXnBOr zPzE`>_tYomuwAvQm_)|zs@Ub4ZO~l@Am&s*#PVr>2qneP}P*>R3@P z%UW+x>b(~Kce7vxv92A3k4!(_K{Z`$iQP1Vsua6Y0!jlT@NbH@#kNGHKW}mxJ?EZ8 zb^-6yGspD6Q@|H@i+I;1EhhEu9n>=i28S2eO2E`WJ#!D{?)|63rIV1AsRR)pHk34M zAcLIpZEyOamm{D8T|4f)UfxvLOjXrHDuG9?%#^r}|@Ze?sM;!qjJK&MZ@-{BY;(8J`JB#Nw~k=!&caAtg2D4 zR@c_tjaYrxhBETz{e-~C_c_$s0yR{ZcvzaTbPK}l2IuC2XM#tX(Rv10-Zf9b*DPor z0?Wd=et+d=-@qM~CZWFn) zA+%Yq;A>5=j=D1k2M4Hg0vtq?Pjf4PKTggj-!e!o*AuJa4S#rlxHVhP zF&|E2hIcc=+@jdcZvIK<1jb=uFp&DBPR_0;CH*}D2aH&c!)&DAYvh3~wx$fVD7$aZ zyR6@@Pj-DK@{s>uHUf+mCDf zN=`;Yk)K<-nV$u8!*RZlVpHmS8=uD- z%{%D(ca;yM=BWlU-mhEiE^8oNr{p>`ktX-_@0dJipz@QU__z{pPE}KXyDNY6%N)GM zSkB+w#H5SxawE5QlgptatlC*%Bm^UrzvyO=rDi)e^)BIurr#xi6K1;77Z0YB@l{k- z!rXUsiVfkEWC9Kl2M2c4BwsM!(*&TlAk2?@aN6;a$fQJsYd|CHC*I;bfEyOy3cdv- zW?wL?3pLwywOX6ikxlC=*L%D2>6x-v2XB2=?mloUS70JigK?BhU|AD>Zg?I2e7f)6 zKL0Vz@6p+25bFikji`rk3J6e{yt8D`o_T=xs7uQ%u2*!cFJ!xAkuxYcYWvg6$f;)J zVHv#p9ako!?Yvi{?c9RiI{*nRtvbSc#U-Cdoex`X!jEOhTEGJ*MQsj@XHyWIB#w`b z&Gxbz)0>ZAJn^2zhOLLT2bJ7Fsz) zL4RnSAw37q>Nn3E{E3}48*UV8DM&A8X8>D!1Dg$ZHJhjy8V^7kk*fok(9;(1@=|`5 za23|oX&wGzO{j%LogCJOdIF=lA}DC#U+SA=tz+VGMu<-AV+rEqEOem6)?8N11pY-% ztlsf$gr_Zg9H9l3m#m1%b7|VVMzo3P`nP%s7jyH%JQIZi5L7Te0KpIXoS@-AY8(bJ zG0vklGUY*T?-QnZr+H~~ZN*}Q z1ZUQ3NV_u8J~8#f9iZ4!Fe^|Ouj#B3j6W>!QXuRHVl&wNa?%o|bU0m#a?P=R*ZMuNL zT1X-*vc7a#m$T#B%f2+x3%jT@mUh*n8Szk~@Jj1vecdpY3`>G;l3YR zIdlsuBVxEG<*Hb8z48=CSroPBW#@4RLGM@WxC2W$))2E3e6yzo=S*v@kDgVz)K*te zHFlAm>iU=;G4ut0#}ifE8yLn#ZMX9=3r)Mj@jxA3&G7I8k6Ib`FqyV@o{(BzX4(_h zBIfp{{(4!fjTR#ThIWH~HxYdynoAxUfAx|GlWO`q4FHg&0mL2?zP`t9ri3 zc^2^356rtXp9sd-iHlvYx)hEm_rE$*@7-Kyd`2pzM>jrE=45;&6E^&AuVwn}XQor1 z9mWI7NA7g(X1p}sG0mH&ZxTZ9#oqoXvlN}{d;7O!Yq_jB&%>?9j`?zl6g`RxL2l8O zb0SjOw_}8Z8#zv!#TVY15VZ*8muh?QY6+R-+Hz4sz!eDO_ z%-rRrP7}8Qe@;u8G=U*vK8Wn2HJuO(1&k+-|Joez8;btf1>GCmc*~hXn?>J76?v4O z^)5Nwism~!}adOe~ z(|(Vv2r*QJVZwIzaG582E5o5dU%f;sd?!a-38+1iw6zzyMCKR0>>Rn}jnN@Z%sVeU zrqPQ|xv5#n^AurFq@8q*Rwy!>_}SXz>9}NxexpHPyzU8$@ZK4^C&hjF?)Q9#ZC)Fi zXEKcU5IdKOejH7rekHTyap3+2uo<@K;kBJ*gSM|6FE+y0>_Ro#(SwKf5Qi#}(21&j|AfO-csdCN&QDh>iY>tQcNMLz@13Q_E~*-jJH?fii%}P2ACS=ZJ!>*7qgR+Gltud= zgC$=EUMwtJWDxV4$Ip^ip*Hk4>2Kq!0@KXDcu^1*|m+z#F|_@T*fllMIwh-ARqLnzIjcrW~0$ zhk{r^*|aNcILHaB0Q@(=+Ta67ha3n-;)OYiCXxQSAHSQ+$jQ)#S+Ll(WS`l-WW^X8 zghE?9NP}KL5Ut=6=C+~RlAS1cObUN;8I)xCF+dv~HCaw(d=ZT+LYbMR_vjJvVF<|Y z!#liYKfcGB?ir}fKGGl>V834>4IOsPm|J?pCJ)V2`|aZU_Nx)pGQAPetS(M3{pT}< zb+|Hy><~vx-g@Kjsi@#t+W5!>bE=m5M#p^Du_}9Mzq-$L941b{$Cd6xeWHF6?(-V6!nS!Zh*&=s ztGh({Xl!Ic|M78ZGl2R4&hzbdS|hhnc#+1@+Pzx8!pHn zI9uk@Z86I()~x*PI19dH+0o8FFOu#uDbqZXe^EN*^u;yVvRT1Y7*i#I;JZUDwEzzZ ztR!r=yO?ornV@#++wYZ=gm2wXlmoo2D=Pj_L~jE~Z2w4nB<|!@WKM9MYc9W`KH5{T z)dDcJ)<&}ad<-LRP~i4T-lC9gF?n+1SP&qB+~+z zQpZ|lsZdD(zl~(lZa}S#UqIII@lR*R8Y5(^$BVBPQNc<8W5Vz9{`Q7d)b`EgOQj;NK{I z__9#!P-;|kYqpc)uo>ar8l8NrathHVe89mD8Y&`JmSMrM5RuP(m&CF8bVBk* z;gEXn47UBgVR!_92c6THSeJy%?*IU*WIt6df!8-)J@0p-KX6!~Ra^Ayp4X>{OpPJ< z21`p+>Q?@<_R4FA?kbxt0nRF7}A=;8jOT{2HqOH5qp-1dp@WJgN;JL(({MiLxQ=Pjm(CTo{V!I%F$ z=}zVFJ18|;Jhs}d2#b3xTWMOv4Et>5%MvDZjMxgJL#%uK+)r2{aQI5fHkgB(If?4e z_yzkeeX8d?axC!;W+<2U2Yx;CXnVi$nX8-hg z6eScrKEt!Zzf(6m;px6D9)Uf%+a{H+82;?$Y^CBgNeR;+%kWkHVn-z3?A6Aj4<=8R|#cN70j>_~>=F zEOER9`t=+n6nYdaK^aVy`J_z$PK96I3}K1fN4Mkv#pF?OrZ??Pxnw6GrdHF8&)!8S zyOb{3JxdAa6v2&T%^a#MdK2UmKdQkyorzbUjTe=sdhDf{hvW~1v@s7PHF@KWQd(O0 zMSx_tUjb6>zT=H{{b%q~-x;E}MfL4z(9L{yV3 z^8!Wd&cAiy%D?IVh0H5LRukG1LM~anLu>uqa<y4 zt%PAAouj+g16k2c+1@dl4b->kv#aP0g6sCm&WAouxqKrIiPgw*JAw7B-Rx}GuCPO@ zCqQ|3#qS6*gum@^$tbV|5MsY^CGo2q4Dc_@v$M05HB$ijxM3UwUCzmjZT;c9ZgKD+ zq!N;2J;MnPdSxw3ILR>}N{fu66PLE6Ix)g|D4k@CPv*vk8O~t`{pJs#@COA7&^1YA ze{>b;XEaVp1Wch1->8jx>$!0{Pk0|^8CC8GgFt!n3oj4hqDjLmo@~osuZpa+q_uDy zaaGr8p9uGA*nbk7oW~!+Pq3ixc>GHG*Ac$fg%p5~A!d#@ySN_XZWK@LPvw#mmal$< zdea-DCpb%pTBs8bhO6{8ftEgqMVn7UQ)fMkwVq~DL&ugq{Hy17>E3b(>FSxTF}L!{3=)cge$ zDgt)5&ZsCOe>fB5NmpO)evn~C`(&E_&SLym!)iX(P2;IC^-YDV#}^o2hc^AmSfRK- zq}m%=l?i^u6HwJ>PyJ|nF#3*F(6{uR{{2d$9S0S$p$uylm~5Km%Yvsbo5s)FSF#oa zzLPz-Mr%Q=rIY>+?^R!mXe)y!rn&*AeO>tF%L}}*xdLu(Zr-7GlkvPwJOqYlNof4C z13bWwRbV{!qB#@M^4Qv1`m&tYZ0Bd`Buk5DnEOILq{DpdlFl^v^&t-gzX5DSmWl0$ zw1fh+0Zgk>()XnX$sM(bHWvyfaR=_UDJHCl6vaX}&bQn7eNur;4wAA8;WP&vM9zlc zZ=@IK5U&!e*za?nrx@Xnsy(O6elZ`YqjyhWM7?~fO47IGrUe^dk;U}=SpQEP(QA2nbZ%gEy5p_SG1di^Jw zAe(T4Q@g|B6Hed8PepP4dcU5q2+erLMlA`U2BpzxEsr9XI^0K)8s|*Nj8@c2rERWD zJldi(Ud)MxsK!&1`^BhYG!fd($x4Bs4$9O*ZA?EA(8EHc7Pf6htwiONIhlX)q||)G zT757Jb){^@PDJ8Zy18dr@ll7&tqb?-i6P2u4EGsJ|{0lLe*!0v<%Sj&8F_f z^o6vz)T{iq#d>V7XM`IvP1xQE=deG29NtssEp<^Dt4LH2v_KhMK}7Lu1p`gK{o!xc zUUhf)5!Rue7Y6h}=nE77=SXWm5E2$!$BP)`4{5As-{Dy+)WCe45^5(3bKrJs?db* zA3*Ry1h3q~qK}XH7u}A>jyntTlKC7(Ky>?Mr7jw}o2Je+rU@v?u|H~{A8bD}ECo^c z`s2?k*~YxYI6RH}gg0e?3lMHdE{Vh;u_?zryR=Gc{@ooE)zdvjmsxmn=TQY1J2r(&OC|$DD0uTDx))Jd-QGf(ylO-*t;K1;$ywG9PxJB@@+zb%A3LZj zv{%*}`MG3?GtqQ07)EfF2T;S zrR~e)3`zJA+tcWXcr&URse4&6_+y;SHO3w1?xP8WjH_&=bE@9feXS6V@(QoQCf zGwi`0_X{&B6}hk?31vJ5x6|20K2oBNyK2slhRt1L$4-0oMYNLET17tf^#*ZAcjx!9 zHopV=#CO|Eg?}1;xqW$X^XHOyWyxqghX7!Mb7<*?nIF~+Qo|#`uhLlH1|V3vwCO#c zvw@y~5<6lws*6f#!Ms|BZ!x_#CMJgWO1ror0sdY@BCL<7dn0i{mj;+FyolzAnIYyn zyARdr!<7aGEH2?3Tv?HHGQ!l8Aczp znOBgM^WJr3S;RL1r*POcI*xVv(J4jAty}MIy@E)n0rJ~Zm2{ziSN_m%%B(X@N}|{K ztn)MipF}|PTpB5ME{pfu%N7MNT(fHE_h(AX!=4U)aT6FyM1p`KD)p*w<$6v({)DiU z7OiJKD*T9gxbMq{)7UAcyS0)J_pxoxE4AF%0?@rAHRdNboi0MJx>r^|vJ8H#cFCy_tNjW>G8yx1 z+2)Kdt^|yp`1?dplzTwN=K7i)(L##xq4k040=}79UhA)MKWBR!EL;DAk!)A@ zM`6Y|vOS6ZRg}IQk2`e8A&94mWd^Ew9AdGYFR#KvQfh5J&BlLw1?rwjv@qL1;Eik% zJ<%yo907Ga#h+EfuWvyjgHwb}SI9lo_H$9`mb1%U!6-0!?!!e3jrR*~6>04!b8XO` zI`AiY%WHgknvuDT^-mX%X&yR&TByU{T>0*!ofyBo>F36&_#dFF7SHl@aA@&Z|$1y zcg3ks`JCRb7gmm)s#*JX?(gfeX;YuqY$~CKrZX^ z>%oWKhq~1wgJ`-jy_E?DJUqo-@%b|`tXeuGIKxboTx^~E2lUU155i`PLX)+FHx=e( zw%~vy_buT(?1!58Yo+6hTa}59@E!2m^>F(&0fup`2vq&VfgS_c$iyT`mit~{IKae_ zDQr_U90!46xGh|2V8}XiSv{*KKFHbup!ucoSsOAP!9zS_8w*KaI57mO?=a9Ce?rIZ zMj=Y`P!y%-Y*+23iyZ49>lcLN@mtDu?zx`QOME=EPA`wY3?`c@D^{3j`MxB~PEUeK zHNVh`cLW@}Z-o52f;rplwO(r;b!Rh<&OFMo=jV;8oSh19BDSs;44DN~vHtQsDMfX# z_E!hfi>xhSo4Vly2n=9YztLWGN)uzP9kFiEqGRA|?3iyokGcJtWyr#Jk)osr^xF+k z8ol2b*E`7^jR?Cv45c()j;Mi92T4#4+Y1?IQevy}z;=9|{ZOWdKyM6RLi6SG2^e%t z@6k|l(PY_@ZewYMxsRn`0Rr5FDh*8uQZZrC>{b0Gr}7IS&r9CxqY<+e&-t}Ec|cEN z^7u;13Alzj;9oDKh@D^6uSW+>#%oD=0G65Y2D}0`llYf=L=LSXFaq0TIXosv&{OlbEvZauX zDya;|Apob<7VFeL_hE4hCtbB)IBA}h$B!vp`1U=;e&Kg;Eg^Gecx}E*<*kQ$3z^Te z<#z~?<8?VweXA^L!YKA%1f^(UkSDU`qBJkO(?*uhJ<4OL+Zjcps)Z8-1`ClPs#kyYUEp09^R%;JMFg7M;5z!W{S1hYPww=Oz(Oph9E%#^SA0yl|LB8MeA?#wJr2Oj271T?rH zSgW?prH!wXj*dEU@Tk!jyQZXx@t zmI48yzI5S5zNRHp_azADqEpFsD=0RuD0a?NqekTfDQ@k{G{JIe6z8Gj+!8kAyH; z@!e6l;9VG77-x9Jg@~2_LjbdkE8y(XQ2U>nTy8c{dr&`=6W(Uv1P1<~9U>t$%X=+) zX6klcdnGIS$vBpV_1sSpbL9nWaN`%A69xHmf6|*XfgzKdt670CNNZu%QeMTy zHj3slKNLL_*)@$xZY|ep`?HR9rTG%c5!SiuD0E!#^^Rx{o^4ETD@G`R6+s{EVaju0 zcdF|Jv5&lkUpf?K9@uG7a#1z;p!*In=X&)*tv5(Sp3Kve!kU+HOe5ZLv8q&ZJ;m9; z{veX|@qm3?9e}XYw>}7wxbJIeI~;Q&D=y%=Bt~KVHhYBoh7_#QAQz6u4E~2kep`X{ zo+zLNL$p=Ktr@fCGg=69SBSt{lAv}vkUMU^JeyqTA5g;%q(t-v0s*0P(ksE6(!?IL zsCV@^uMVTH-pJXaWmbXR9NUwZGL z$BYVO*+=eg`e@qCa|awJ*1g>?oK0u6f|{0}h&Ff9m!!%a6ZS|@3e*^(sRnQ2&oly0 zSR{TSEz02gXI#0y-Z*W#yo&exPi9II8Jj6;&8pgO##o@(MF1i+e^nv3KO6XJ!fpwO z!mU*)sPVr4tes0c(fx7E;FC3nxYUq4eU7`BHn0!*Ns<@9?7S&InbL3Up+87Gu_)7w zY~K!)`i% z9-_EE`our0i^e_U3SgkXlfA)hWb%oGvmBoE4~)GCBuDg0fFoKb_&jQhw21P^UZT(N zv5#=}_cZNeuCJd*C1Q4jk;S^Rs`zZ5rGk=f$7wfzaFHQhQjjKYlP}*jiIc(K2G-&% z9oq3{5 zp&W`$-E+CAe|iQG_X9~01eCw4bTszV86CWx07*!~&Kn`BCVf_8BzT3ijBN6ssvRF?WoH==fXO*q zj-aTm$w4TlSNqz5-i8+hrR{Be!tool^C!Qj(CVE9Xy%gkt-qcd7^bPVAJH9PqI*3r z>!c$V*}8{5RP=SnVZ05m56Nrhgk>*bV4^Q`)?9qjFattWORw?cv#-m!&MtHH9jo5b z!~-EcVg_E3%J$QgM0)YqjS-gZznI!8EA53bxwpgiphxe)eU5<6!J3FLS!&*<5b?3Y z+P6=oQujT5KcBboznDX7_r$`0Ova$OL&jh5Yx+_0p3T^U1gx0NG1HtCbLu zt0>X$gH?A^Pj0V!_cOp^nco06WWRX(n7pEM6(nm}Rh(%1COH`wm88?6XlU_?mM8?6 zdDN+d@pq31jlNNoOpa<~fhHi!s2?;?&VCYmpRHR!{kj^2c zL0Y6^DCv-HkRCcDq#LB00fzV;p7(v;@8|mc%XM+)?7i1saj*MchvM!wsN!-5;C(1h z7*Uo#AG(f~b<@451qf3=$4+1L4NU-aJwao^m+;dPH@DuJjV>DJQ_lRYMJ71yw}aoB zWjdJ9RpEm(QI7Je(bIeC_3dI*4mc^`$Jn=G*_Al^(>2#OuZ!8G57;YaGAv~920rfx zQ%MO;d-4>U&-&OBbq9pYH9M(lEJHhdRHKte+@=%OqdfpSU>Lnj82 zibP!Pjyi96@tdyVHZ)`aoxT=F89XOc{=K@(Z|6q1gYpmb0ysCobpc$@_8)-D*+pcS ztH&pcfCXp6hWqqGKdjy|=MlL=y`yOKl90-=O`xENkyeo+ABwx=MjhKc`5tgNPBEYg zbcFD9GEI2>ccwG z0cJXk5PeOoweD*ofT_u?f&V za!@u=N{yKOJn4z0X-s}9ZZ%l-p%6W9J^?)IKS<1LS+DmmzS_pFWR;-wrFR%(hktpj zz)-9p+a3xync?&ndum_$)vJqgAVaeU+CvR^LG=KN)9>8=#6x3W9BJsC|MB8v|MEfF zsKT=?AMSkcR?p)ozmT+++7w1#I2CjdMszKH^fD zro;FR=csbSzXdF#PIkEyK5L*>EB-L+v@-lxwl`%oNtJmc8m4KV)*=(rq( zvSXO#m2WC~-8TdtN`Q59D`xzYl%G4)>p?ZCVeRji?pnIfCPI$gzg-@Zy4R*-UwAN2 z2_2ETgb1EY6me7+Z$CTMQ3cKmA=o?x&vIX8V9~h{jWEVb%qhKGfF->b;~QM3fqE26 z06-;x1TP-AC~OpPT<95L(}EDpTBY#GlCxG zd}*!E%5%Dv58@{o;oo8Lx;sYzbus+v0tx%>BG+9}c?f@8P=5t*bW^Ya@BdT+6S~-1 zikV@L;F6ul!K7lKj}kv=gbHFn@enL!s;D}0;$M-R`HLRAQBoQ1r3oJwnz0=2JEK=0 zEm<9dJHCHvK9Dff*%)yhxBcD@Ry8DtPdDa|+^vdFE59EWT%*|R8zNY(v;eo$m3i4R zi|E99r-2w^7lEn;m+9m8J`>(3H6EG=Vyi71y{KF2!q~83GpB?s*|(@$draRuBv${k z_a(d@K{<(sfR08*s|No>XG#bj?nOk=0AquTM)3HS=`EG*l6C2vj#_+Xy4DI|ktW;+ zTIyjghXzzp>?$oG79}B*;6pze*JiVr{BqoN!0dnCW{R*dBLGRTQ%gO-6`CKs73Py? zc6H`?&9%-Tn~McRD(MI+myH%n_uT+NM}cicxo(xu^A6Z83SOZ=W$M%-nmtFXL=0$( zfO6#7MI`hkVxY9s&Wh&28rY&v1I{p4DiS zNVxqGsJW2BYgB6L0rZRgODkDC;mDto6C*6`3L@%q98>w!zZuWElq(OVke$oZ+hqtEKYNun8uR51aq;^at zpub~xjoJ^jc;6DOZtDuVGC1d`I%rj`NqEszpeIm%ZXHrAR&HT}3j?dtlP77GE-edj z_m@>o=5;K7^eB;omST-r8J$N826Hb)*XMThFCXw_sK02kzlX9R&-x&K2P5`Xcw*{& z=+KT+yFs;KiGU~ewfLY(0DR9TuHjrN3x<#i)B-CAboJKF-7A}EoTEBls{LJD6$3=y zN(u(hCt+TFIfT#_7c7ymTv=gE70{nKC-T9qXK7yM=944^)$9cq+$oLTrqen5+R)8P z92by8$(Ezn4@x2(2&mvCvRYC$_=;d0$KuG7K@{ zn$F?X!L$e4Ya9w7T<7~ghR+>dzH717tvAmHIsskExJCu8gEJlutdvIy)Kdkf;NLDKLa}pb{O^Xl>=FPpZ;H-k1^9{f_&Rz)lptr zGgKW-eO=x}ZnDU`#j(%v8|gYoE!2#iQ3k}4?#%sS2x#onqiZEvU3_W@(r5+o0&xqi z@F+e6ZCOOo>B8PeI8tr2_Q%9w4M)ak*{q1?_7O1f^s>*n|No6KXTvhG{YU)GN(w*U`Z)=3K~kf>GY za#8|*;uY{02Eb)=Y!%$!%&{J1zmXLLvOw8M{N%sXg(r3kJ?u@H?|+m2wpa_{Eu&Zj zv~rB>wBOQNeldy5o}Vx7ovZMVw>Laz==rIrm2gZoON@V__4J+`ApV|oNKmqGaaQ1? zgJL59#q_5$U*AH+`-?xSjsk-G&myO2U!2i5paVj;kkqzYHaC`R5vrz4tE(?S z{@pMm0dy~>79##e#qznnMl)#+Hje52cm=53FcQ%YcI^&@tpV2i10($9!)~uM8vJtw zD2Y_hl{&*1NBZ>(K>CfV9c`PoU47pi8^S_&i~-cZL*}e6uf?(I{`&^=*yq4@qc0U| zA_2{qAOC$gjA&ZJyP^qkMD*}%KH%9OasY9f)O1%ve|Kk9fJILAP4;{cjnRI^KgP9tMVk$jZT<4(52{h$d|$_VyKa>?$&am`o@yMt zm1#aBH-ryGh8SlU^1)364dRWCN=T_7sy=#cfDyio7cF1D*M1*=s^xf%3AF8`$$)-U zBX@<Q(HD$e)poPk+wSn?UFyV?4cfj6l;yrrY9aqeip*uL|*xoUhPZ_K_(e^3n6bZ@>Lv9QJ?dSI3NKdhL3-{}ThZ619C)xXJNa`BjPB)jv= z_9SXEPx;8ZyotuLrI;qtSeREzljiN9%C&v*{2rs(j3OVku{$eGLawP6Ru}j^&Y7~} z(SgPQU%3=u3z97obVLg#Z>PK`Cd7zVvm~Nr%Fk$gct*pe3>3c`_(Pb?jwv?ME*M+b zI0ei@*{gvrW3~=(sp~yVZU7Cmqrl|ybtEoiOaQ~CF}hnqP16Ln_8sWZ-zb+zY>R0` zX0*Msy`a^7&lNhsaeKp%kezZBu0F#N5iL$jdM zD89d>gUtP4IdH36Ky;CvCHnsNeKLUevAty8n7??)B-xm8p8;t{!PJYxn>Q^|48ooO zEH8KoXtvVY+|_-OLTTE2cnJ%83*0P9;~x6^eq>c3kc?N}9>a+Lk4R9DYZ&|-2SLU> z=qW-o)%?ED&lcb*qkI>F?|#d-82}u zlcjq?vOdjuI_|4eBYj|A*4K7YivSL>BWyc-vj1TG#1F>*#JW~J(lz;~dlk^yPfPUa zzL_*!ZJ0J+o3>8lRB{&DI26xjNL{=(ik#mwBzI-41F&_wT8qGRp)LVrpu0k)5q$#Y zoEZ$314!^GQC#N0<#Yj9E;32&p;G~G3Zet6IhRd_6@5(`8P7fC4xDDpUd^ae1k#$szB4$dnj{ElMkx?Qhu$KcWs_Ea$^w)7SCw~gwi#Yd z(^8H*q>z(}Eg?Q&7RWs7oJ4fPs{q_%$m8AUCt`?Ax zi6lns-oFa;AY#r|Fjkj@KWqg+-Z=ugk^NT(4bz*;^4%&AUIGR15=Dtu#jXWRQvjs3 zVZPAd+Jahqvfob-h#291{n?yJej{uQDm!s@L3jP=LGB?Qjn;GNv;e034Dk7B@I(K8 z5A7NT@zuVTv^C?~nvKVg!+whYQKfl@iD6mRRl@DwweP3qrT80{b}%o>j;oZx4!}HK zxx>F{rOilZVi5J?Q5DDTY}p5$w;q1ic!q%(15`Q4oWu`|96~;H%=56~pAu2UdTxj4 zA9ENlAQqK}P6?T+BkYeet;PQS+^PtI@`W#Lt)M$27QUDq`#^pV-+EGuW_Pal13Jba z*=<3%lR@Lx{QKCvG=%){>U$yCETFyxP3q19%6mzrJ(5BTfI6VY{R`RKmhf>dBL{%< ztfaA`ZUZlTQ**u841MfyY!`1-4#p*az*SBHp_n<;eNA3ic9Zy zs7tpv<=QW)WCP{EKGf4)*4UWPM{nb$476kws_&dstJRBWbtJ|Z5aD3tqQaQRvXAOg zkkaS{qLoQc{oJ>KrQ^9&1_&f(Gj5&ntIC(Z5ttq~Di`Q*$_YCSVG_zV!Y-E1wf89!*hoO?KgNZ*l)>f8w2!5*s%Uz}C*^h_F-59rf8 zba)n6jQD88SWZRq-ScLO(tiHvVICLdFNdOcq*8yUw=z+)S&q#%e(=Z8fM$yQv6E=} zNvrex4EGxVrJz3)z<6PUtMk>qB;W;Iv3HDSlz~2D(8?mabJE|t!>~i9j@vXMNMg>m z&}RpxY#m_Lv49{vE4ZZ{A}2`Q_K_PzCq1lKcE!=40Ct` zBuDfnK-NNV0Z>`3lImO%Wo!v)%65h9H>RymI=?Du>h+)LFgGH*2$Xss{f;*o24=Jf zEe?-j{RYvJN1p}A?Z6>6Nn7HsbbWHy1+rS#Ix&3A1T(Jk?svcbu~#+g4Zyn}_{!5Z zPIAC^S8+}<-upK@WPr=_rV*IXXhH=>fXTOe{_0j%9TSRh14g{O{(%6i{yldMcI3J7 zJn3~L1#MFS_v|EGh^_ns535dhRL`*8gQim@5cQ*}agzaQ#Y0jk0K$kFKMC(gU0QW# zagE^NzLz@~S1ih#nIhYay$8~@FGWf*b@tGW=YNt@KK-mAI_VPe{AjiBq^@S|yX7-1 zF;vo;kiq_}W~xplS!dU0c=5z3!6Z~rDp{wv7Wnrt+#vACyAOGKp5acbg8;?NoO%3V z_Qtx<$1JD=(=ouv^m3}s)zR%6d9!y{TQFJbKMv zZ96x)VCv79%YhClpanl@Hf1GLlwAFb|EFkQL{}|I6IVAQ{kJ9UqX$0-a8f^di&o48 z{rMmrk#`D(l&KA+>W3DV?YybXes7T-kG;iEJiC{z^xb`!-I>bp_FVR*`;wS^^^Ru4 zOn38!dvnmE-~^d5>kPZ4&c7!XK-HlNg#`eX{(&8+C!eHV6irvOUzmx2CV{3D^GPZ# zxzKT)n>eu5U9;-FJ}+}>!@wgVV!inYz^yO;0Ol_&><{Sjw$>2OU|`wbV&;#KU}OVq zk$xZ?p3-cHx6*OkX&;Q+ch4wVT6~yl5(o?<;9)k_er%`pj(jsHbuE_ILcV@1f~-vN z!0jO?+96wyH-W>mE<0O3Iz`yJTa7w)J?54SdGoG*oIqo+quo^^9w2acT@xzrZVnKGSmTyj@KP-eGtS=fZZyBzimU!Iy1vIYsRL~xf z${c@w&*0Hgg-$P0t%=$ek}*(7Gx-qXI6wG9R$ztJ-%m{*db3L1#IdbFqQl(gXmG8r zUG-W|`9X~1VuB4?zeRBU&IRU`IW6!AHe1h`K;#Djt`g4BgrYw0ZxOxx0s=N3lz_&eOHzF)&<&5=9-D zQt{!Q2`ALOfS*{1%E8wfFJp&n13)s~n6>qT4~gg(Wsnl$5qv+&n|ziSY><>1j6b%@ z+7Cy%)}pV@nh?ga&Qu`=RqNBdej7DemRCO!=L_eVNMX;Xy}!D}Zy!8)(EFGtQ;r8m zUoG~v9BhtScbesvPw;eT1k3jOIB~3;5&@?QkSn);N z-2&%z3MJpEfrC`JviNCBz{5EJ`O~ky7iX%cd*Hcz1y8C2DE_-c%~~bvb%Nvy#)L5B zvp*Kj`YJ!pQoXi(m`7>Tb`DZKsARm*nu&o4AlI6}6pm}NbAYGtaQQ&M<(puSN(V?6 z<>Zv49~<`*FG&0E?Y_Q)Zl!6~%VWPYu@{aR6MdhoQ55C+i6ZRsgKkbKNC<$o&wJJ% zcvt3a9Dw>i=NZkX#YA=vNgWA+j&3sDLs*R&r1Gn`?^hbqfM#&X#N*H%jz}M+5kKuc zo;l`64vQ!U390%&X^Meu4JH!5Ru(oC2lyOmmld*pdv z-?+dfUPrRN4S*nz@ls*}Hwyjiw2pqYV9qnn5bPVe6RC>9zG#5t%@&$!11>br&0?n4 zAER16G}Lf`AuR6O3(6bKGj8i7K+We2^vZzdBKCIkY4fLLGNG0WGaIksx55Vi$y zNx!Ai4&OHA6DdmeNF6$BKlxmE%qK5#Dyf>t5VlASL!ObN;*FOV`g z{)7pwD{epJmHZI0MLc%$4svv466((XXrx)Kp{k?~@Bq70?<_?}pUj>7@A>Zw#h9 zgREi@w}k?hzr9Nw@6u|kB_9GE&@z(s*;q)Q68cbFNF%~|m^jeJEbPs~5Dj~~4<+sK z`AUC53iSP~3f4Y_zMwJIR;TuY$~04mGi3~fjaLSjCkp{u;p=3BTkW;aSi6I&fqlR@ z6m`h>B;TQi-p}ah;0o>M<1}tY;4AD2uZ#qHUL^ z-3Q(ik1YT&RVYn&I;z;%6!Em(hl1a(usucqRWN3R2vCYzw?>Dx@1zG z#7t6XEZ*4xM<+{>Fui1oYx=6qt+2ARcWa6Y#Z1m#VD$7BFS6pr2@%z=^J$7Kx(Q*u5EX6oW(fSqKEw6^*+{Y3hcC@2*+Q~!3^Rn=fR3q?b8W_#w(!_ zpu`y&B*r}X0x|c8u9y8q3X_ZgE1_tKKN7qb9%yBE%crrs{TfHfvl=oh!hhB3xF2tA zdDn7U*^m9tiQuz3mOhSEw4ERq>}VVyuKzGvmMs;XW)>Ejnv8w! zgEwW}`aYnaRM7JClhcp%pH#{{6XXv$YbZAbw}Lz8dWl-2(Iqo@yAoO52Gk@O1d5Xt z(m(g>naN>>Q~DjFoZVZC6)aVjKO8icJKJ)nQpqJD1fRo(jNnEZD<9vDNloT|- zM7tP$$-*w}mqt28c^$7v%N+3ZdGP|+ZV8b<2y{JXI#ym3Udd9d%QSP3`419Zv3UJh zr2Di*wfPBTar?)%75g=ZEdm;=$BPOzMLJ!+b0Bc;| zdYL)qDZ5Cyi{L>*XB$Df4#8;)C}F1c+99NWWYsrP&?AqnoRqLmC4Ulom&LEdkdI_~ zH&Y@jM1wpeGanUHH%HMc90+yW$y&;loqhk<@htGDF$MUEzV)ai$qerbHpe{P34XWl zxFK_;5_dPG8(YKSWqtG8hpMp7sFvR2l^ay_wpRJ|(Td%e+K-GxS7(9}VGOElZh6|( zMa8n<==EwXdd?L_mSkl%H#4={<|*|!YC;JGzVcT@=grSeH>_jhNrtEUPwDe*HQi=& zp6nh?)XUvO%3P)iUY?Fb%^OWh3is1~yIX;OB959#lu1(9sbqdQV$qMN(5Um7>%+^D zHJ>!Dk(XCevtPB|`L4JmiQb;~bW#a1;gv^^{rS}-)G@`p9;uvaV~=o zjpUo1? z_Qx04TdI+xuK+%I=uzLyi_EC@W}KCoqzhPSOj}#rDWUSM8_%7faln4F&~wPBnjQN_ z&Q&1tNu2(^l8~MnSF|KUAICzZkU4*{vTKlUqlf-wg6n-zA<3-Q?we8yVSi}kM)&AG zkGxqxi$YCV%BkkF&;9&&<}2raMjURpbUQd~rY{tM7%gYoYX2*0$1$dM_RUbUPwXhk z!0!0}_L94}_Kqe4Ul;Bx&U-+w3 zU;^LfJ0t7D4RM|o?Vxozk6x?a${6*HN(cP@sX`|?2oBk>}%IMOlWEUu~!& zjO`n!yQb#AZfh16x!busl)3a8)h&bV-;2JLM#5iv44WKL$gLH%%9y+*G4O2Y$B>Ip zf>qLzF4d}pn=uF(i!t91jazi1s18F=M<9BZEg0Lk@3H}%){7@njoBVVl4jR>O_#3#{fIF9}<;}6e2nM`@ z=Qr*25v2N%MR?Z0w3MCx+Az~#vBK0#L-!E#tkzedmuaL;Oi7n3(>Da|0{5@mqw|OH z^6TYQx)td<(gV6^{hXW$jSWukUS7JK%3tPPq!Vo)gh?_aD<6d7tP7XRY*-9&)Ee4} zveVhBr$0JzHdA+JnV{%t5&V>c-I`1%;4MnD5_mM6p>4$zK1F)aX-e@!$hP?<>QVS$ zK(@=bKAUGi)SZ)Eug5md)%!Twst(!dvR)eD*xX3Dp-o+9txdJX=4AD;A@+kgy{jjDo8qwbv)= zYyZmqNcL$0&q7Fr|CzQ1QS^^3`EIIg4*?pVbzNJ>j2lgW_=vtxkWJ)2hUkg`P?Rse@%bdHMupy(`l1) zxsa$In{#&k!~c~dY0+e~HxCJ^=pb{?piJpSrbm1&S3 zlqME$`8-{skLCZZE5Fp!=echlB^e_n;aq%^Bm?Y@rU~s(Ss-_i-JmXj*l~6|a+eZ4ZHavg2!O8d>5#gVXw~O%xa#?Y`!6*_bT=W-O)f zUe=K@kQ2JS9V+1E4YrMD5G>1%VvPp<>$R-gHaXpnV7mbwiL0+ocIC_$a88o6Ep$lr zka?M}>*=a=(4cJIC$D0mzGH{BRl*5^aOB@L=`j)AYS22t?I8tSNr|-a3}|sye?~Fm z1)2DK(lj4Nbw{sDZTLw{D<@IVq-&4P$+6g5Gs~EL*Gu=qBp^WB{1ZpT77!G0>p)ur zVlNeyr^=slRppqsN{r>5!brk)tuOC2^U$TIBuI3)h&AXA?QUNDp_QVJPw;zT6?;u9 z&^6G{OG@abY~e(VsN^-xbJ{xy$xIe5*aN$>LZkl8$qbO)8I9A6`t820_ZIJJ?X_4@ zp@g4Np-!%0y;fYAbkpHY6rOZ(jzK1vi3ysS6T=sbQJTw=y1zfByQm8i{%u&RB|kZi z-k4H9FzvUmIeyu(FI@#4-upcRb({IWKEe&~5!KHg#Z*lE*|s8sZP;q;oWWBV;BNWx zEiu8bQ=P|Ovj@YMX>+P(HHgmH?Jk|7M`p_G+&pYN@`mw`HMZ!GdEb}tX{kXPYxe9gW@iuD!C>Ume>qwH)Z_7b(}-hCWFBUM>RH7lV| z-i8nQO9y1= zpq;N}D!(V}YSm|hEfuX%_Podl-iXDtUp?9L`!zc9CtOCj8qrZ6H&OIIBk4WA+C?jDr+y!1(V|wo_8g^virsqPUD0>2W9ao+lQP4V-9I%ozf?cTtKpxpze}D`prB$#|2bM+M(g z5ohS|#KKIyEXfIM%yWcn!Pi5Q{i|B|hrAm(BsnEHBt+)m z`f_v?7R_CbVA zvW@Jv=>cR3e>;9_V;_!u$)(fjMSyZWmH)Nd5y6y;cNF)@j3me)dw2;FW8FLEJFkvK zxGl~)c_HyEOfEN)Um=!SGJ_25Oyq!9D%o%EiKAsCBZb2Q=_GQt&<2rVg7)+;1s^wLE(nm1dt6xPv|CweX`DII2y~A9um*mny zTQrk~4SsErhJ(HrPkdu}={DtnOCAY6?29G+seCKw-y7)25VX>X*|8;+fICassm6U2 zfd$owbz<8Zrm@`P=PG-Y$n85%JXX6lrE}az`^w`R_n0T$0v%Cxa<8Zc>6;LuGr_Rp=h*uk zerG>E=vwv(3uVYXP8lA;K53SYUCi+CaqIg({_w&%rdOywl!#AuN*j$kCq;=2+e;C( zjbqkzy4hMK)pd7>cw{W7`IJBJ@`5PfT2_E)cXhQ2U*BcMk_Ro3A6>SaNg4Y%=}kV< z+s#OL6i*I85pSQLhc?al2VwTIDoWBG~w=`mN5SFkhcg z*y%MDfjF{+s<)pPH~-j?V!iwE9$9IXT&m<^c)7`|V3L3k{0*_svh30uxVeXwk*rSW zC*O_5z_EmK{^{3tKd6I6JlnY9~EC`rV ztPb%*2;SSi@QMLG&bcYbr~&>9!f7^C+^c3Ip1Vj$Z_yjt_;4$zyXQ~Ar#K2z#JR0wCU6K?qZ3#2p94g1dx@jj{jgY_0ssvKq;~*p?lm(bYAbW z>vp=9h5;22|HJffM>%SyqUeF9H2yjU)6ARdG@NyU5x(|n7Rd6qlkJ+Gd!pBs6Ai^R zSSJxk&VHHxd9A?KYdVipP(Tac%SFziX&!)3cGtDbkJcFa!oRuYl^0FLbQLKvIjwc? zE5)s86#(S6diUQvXAuReT+7GHHI027%ql(o>aDfrs~^;>L$3z_I9pM0!2dGEn?xIh zga|KtewgOH)#DNwyAL#u7rXBYr=`RMh+F4tm*eAWPeotFbNI!$AQaq#2?Ytx3uelL zZ!ioMS@|!!oej`g|5N!S;jA|p+4K4wzm1T;2-TA zdJksIDXp!zS50Zg;nJjA_cPGMg3fqZ?XM-7E)aJ-r?6IRs$no$uy4^KTWtJ*?>WlZ zGHD5d7Z=HIJ4k)dhdx^Gq>^0UB&VsHQ7JX6IY+mTa@ua}^Rg<14r<4^LC`u|SYujK zjOWfZ0LYc~efYmQ5+U5A@)v}Hekz&R?huhbNPM{PJ+fmZs!t0!j4VXCtbjNB^gP$K zp8OR1a(n~@IXGsIUo>NPx#GAm##9EwzY_@O?zNs`vB~9SjYgNzK1fiXulpa6QI>eu zrMkK6ude%baPE)|o+|1_$(+9d06`pTbw)!eESKA9E4wc)>g-p$%u4j2*raT>Ka-K> ze|4J4Gxo{go)UKlUm(AIJfeU9=_oz<9C6rNmX#ez09Kw;$M(_sx~K}VwbXDJb@i2w z$q%b7t+H^mZ8j2H|Biq+`OWyjy}cu5x=-RF~1%H{I&<|zZ?Daf~iAvx_a-9dfX-^`@s z;8nKb=enMJL_-A_cr+eEeIU# zv{L!*Xk~cJLhJdrY5U#T%#IQVw3SJfuL?_jwOxT!F=fBuV z(^}Q8kNQ~$!HuBwktf#`Y=PipF>-+k)!t6wbJvOt=Fh(ouC@~Gof0cPfxSC4z($;d z*i95x-eJ~9XyY2Fq8pFnA`u2pYiiu;7+#DHnS$VJdi8!tZ}A1Z_f8anWGx}e@+UmS zNG(xtv{dJOgeCsLlNwXiGrG`aZ5lEiwAvS6Ae(4&=deyr!D(ev%eq-wX+}aH|PX84{4^YgI&M!BJMUrmL2?# z4mQJ$;%#hNSCj8zu6nZo5PIN$1+0i_V%e?#78^|&`8SONXHmFG2E+wVy0?tful^6h z4g6$_il+RYQ}4y_^zC5&{F@C1E-yU*JyVYCC#TPs0hbHt>HBrGcxG~wqKRnMe=zi) zm$tpXuEos$uqFvY{K;lvcVW^JD9J|;%5Z12>HTl`e_~UlPn;zM)Pz+vO_i|_8+Jy= zJwavT-vC`?4`uxmB^Gr@L5M7ioM+dON{kQD_v4(=)Kp&Y7YsA$I4OH#OIS)VE%JV& z`JP9meci^Jh+uV4$!1{vBF0QblL)-nkiJLA9$QCaCTiABgU>D$^_mdnhk%PF-&wlz zT?b_SmUr|r{F1qTK_oRm(U+Qa!F%QYJ7Y6-=ph3Nv~?dNl6uqO^yb?Blo8keByi~a zu)0&#{^4>7jd3(pE9+5ul3ASeT#2eoOf>$Z(=!d-R}am_|KO;*dK-)deEENDIVQr( zT10lHBr~Y1Z$&AMO{!!+RWjLGW@;p^++4vNHU|Zt>NgUVhx{2fj>Z81sdvwG<&Z#V z1lknjrE$u(;s32~-pryWEDT?$qXSB}y z^mfCTHj*kj%JMtrv~iz>LfP4Y#TYU2u(YaRl}Jw#(7FlZ=H%fknahDkN4`vSpL%qh z)62NJ6=}EZP$Ib<5R``x*GPmJ*Nlxm;8Vrek= zw;m`zt&vp!Whev@MXMa$M49|_>-v92ZI`${QDT)$orbEo&{U^zsb3f=&PU$X=mR_S~P{Ei6 zay?4)vksEIC0$giW2QYjsbr3U!!wq@?qs-i6LetRi5182+f zu^f$TiwLnnkIO5Dz3_HYa(HcUFt^y!Bs6IP=GS9sSt6;&QD=B%IpFid8zxgAo#e0k zNJW|*^Xz$9EWIc*ISwegbHEMtd)}>0)Mmz-0aYF`1WOJVf446^ao$z`4SkbU^opBB zk$3wYo55;El{DHVmohyDEW}gNYBofZ$lYP9z)|pXGuFZnsm1?-ydGRelX^tnJ`|Pw zPMM-(SKwW%HI>$3f+i~8XD6f+Q--8(KIsEJE&aS&qMFzBPT#MX_?Jj_HDHV(UqVb{ zToV5TL2cEm7`{?AH@I9f*?-_eMfP1zCmDv4c>KPa*v<^a{=yqhVOp+gYx_20mj8`o zLnAZrDTrGU9{t9^;9$&&>FKyW#P^w{b6~>%Rh!ewQtOix$qdi4ohGi!-H`21sj}0C z^bWd`88y_S;YrQZc7dhj?M9`ElC$8d;f|Ey_{b% z`90=eEpK7qL?wjCIR?l=X>RKuojLCY9q&d&Z{P*cWKKU6=RcpK^*QA{t1th4_@1n> zr$}5{{gFArcKgtNxbYZnZn3)JtE4X$R1>?jU&(f{%d$Vfg6&K|2;q&f%9m^CempNye=Y`j^m?~UdcO6?o);ETBDIy1{9QRsql9*6 zz1{(0y?Y@SiJuaoU84Oe7&R`K8n0B`QeD{vjSI}xE#QO!wzDJ2h{c`Sn5fX6VB>-e z+#akK-W>7>i<6;6v^6=4A%xVDhQ#a&=RLG`j@Gcve1*79_7v#9+06ftGO&GV3bd8# zmX1uE8faFYV#MDL9VfK=W|MTIW@t8u(E0JoGVhk`U(^ig*#^ZUd7*@)Jyvt*tK<}NYvUsPiF2}Y+Syo!w z-5pLTSB{~|?*~D!54sZ^ui%PKuhah&gq!fGVE;*b7T#zQZSl@SEpH>VM;CAy^j_TJ zr0`UVI2N5J$@3KdE!NYVm5d4%gWggwT^zBqo~nR3V@^2HY|%h93nD|~*iL(2ATYjo zo3n&Ml}lp05>7oj^m1DR_>m9~O?iBQ@f!kGWkh`Au|6 z=wlKY*aUN3XTwee_MezNPbCdB6`vi(KFJ-CY8~)ks3SbRqM5D`o<)I^lsrl{ZW+fa zjoSWu#ltIklGF-$PX9UBbn@++^h#V zp_X)A7`n$v?%#sXy;|x!lDD*dggR9 z_7ZgG?Vn{z@U-43VvkqmSK3D>?#7-;}y zcRQg72C+z?`%j@oCg3QkmReM?sb+uQ8!CeAjXBvhZs==M!llV65p|&*eN^arRPuk2 zsjb{dqgS)O?7`7Ea(svHsKh^my|mWTt9gU-X|jj{UOfFch})4|qQZb%h`m1ZY0}2u zgeXcH7v|`J-q#tyU0=#XW@i$pH-aN?WCm$%p>ceg68WfOj2bf&fP^O%8BNfkgi_x= zy@{dL6ZuSJiyj}{kB2XD__Y@R@WffZ#c(S()YNWY`PB0=c&|DHAQ6HJ&&35)OoZz= z(K6#&zjKN#&0qS>pNfs5%(#cLw|~)I-4fZDboGZ=L=TPoAsws_DXr!<7XYe7&4ND7 zdIb%1{?OpX`>>Dde5T^P0YEoF}(nBS>xDy@n}^`iTK(Pbno_Qcf{KO;+Ug;j>**AJo5v1j+{Rnt0D!Lv z{M$;SOIMTfAwKr=RqEW~-wT+~r?{%vg79_ZSpJ*zRki-0^4Kz4RA_oJWASh*(;}rV zVdz74lVjoA5xnowb?4T^E_SisH#}Kq%>_64)LmL?=6$VdjNNBgPuW=@{r@^meb* zYAOkCI3k38<+)YLoobzFPmpRLL4M65?7bD1(g*dP-M!E1Q8~QOGjRB8QBIVRL<0M5 zs416O!HwQe)7|0h5wLjNNrOl8{NhUnz8gI(Y_yO~VR7|3MD^#nS-+Aij5(Ml@7clh z^i&B2gJ-MIM3!?`2QZ5 zLy;a0wziPnGzmiFrD!E?bJM>D<~s!V|&d=g~nLHci}BOZ8yRXRSm8>8=3 zAa&ce{*Z+C?19t(`{py|sa9aoQO$U~3b@?KjC0`Ge$Lb9z_-!=&JM(zqu6Zjr32iJ z0sLt#tl2u|7fja+HeOYDOy8X-)+^3t3X&iZzFc#di_hA~Vjl2B%a0r;^V7EO1^FlWNzr`I9eWO=?iK*QsXCj2uN znAdYkl0h;kW!yN(9C^uA7u^~c8A&yZdVF$tRLP}Ut8fm0!0cq*31tb@#m2MDNy1U`Myq|cVeI)4%jWxpGWrQUPeU5G_1cVIBNJRrb#IiCHm|%ORVwc1g4bx;bV6} zH4WBr@~K+Y)wUMGz@wTWe&&m(N4$+~qghE5jP7jTua_8hCo?XNrO)x~eT|Y}W~Usd zn7fA1qQ5b7n5#Dza?UA#!Qgx#*jE-J8}>DV4}q|j<{r(d!Xs%}@*{~WyhR)MbWB|= zrP4vPE8KN#`H{^xh|S{^<>yK^T46A^#@05_Lr#$&$PLB)6#x6G4W1=T@7?YW)PeWJ z*p1KF1F%nK0$9{MYicH>A-}^_r`GB?qa4PK=brSFsDfSIDbA1q{-`}!HHQ!x8t~C5 z&I7D)>~|qNMz*;6yp2y0LJnVH9Z2NOod*%(zPq&jAD2}xUX2*gCbP6J6IvPv$J+!c zNpDU9X@bGR#H3mGJcDAjlSG#W=wQ-veMAFP0o(ryr4}I3P}7&q;WCJB!XxmG;hwqx zAt6X}niTRsmX=Jt73X+nw}Bd8hlW$MEmH=2nR7JmfmKbqiWQb8M>+kKaS%s}SakQyaEf>EXp&lPaodu87Oc!jZltTr z21(>j(fDao z)&ICt=i&Vi$3O#rFZxXB(m3$b^!{2`9ub$-Vr69Y%Kkf)kw^{hXe7F_(Q;oKqv@AZ z7`I$!l&<}Ms2cKh>yqL60wYXVG-G9%1U&??na0Nn&gJUQue=tlNgc{VM4L=} z6_!rOl`V_B{oh?{VNcb=u*dvBSZ@4d`!+5Li$)zU6-<@q9Tqo_ZzO^csaP?x2!k?5 zdaNzbfr5lUPg2l8T>@g3h%R>>6WA7PC=3tY1aKTk%$n$LO3s;RYc?@t_72 z#xr`~!~RMvqSg&lDKoSfdOk-Ox46ooZ~(pQJ~o4k+l##)Gb*}#fnqazagvX{$J~>J1OJ7Kn$7wOeg{glfQY0ZmmY)YXkjtL!`O{S1{D8>Y5l zr~x%xhG50`!Uct?BzJHmn1`RJ=ay{zAM zbtgpeRyc^7iz5v)lCrJM3!$sPN~u8%LJcAqy}KHx1f}~gzC9c=`hj()&B6fezH-9F z69G5sjMKd19qX?No2~vuPEgg5caW};h0#%3vS2@kuvb+@@>J|%D~z9a_`C5>^nS*` z%s5jHMF|p#K+R_xmu+lRJ$FhimU1$dVx}D+P9+;kyr?7(@SpObufBYD$4Rq6&|NVZ zjML!fcp1auGkbjhNqVRReBG?uIf`RP9u67ByM7S0JdE()AM)9w_Dh0xog9QEpHJ=w zcDWKJfiPs%vp>~{qasf1|48Evj(?0<>E_|Bt}kzv;YSdd`dfy1?O_gv^iXPHkL%eV zYhKc!QFe)4mFYX9cq|&++ZeQN8bpPcKCxNq&w{0 z-g=LLidljDaF5@!?-lTU3>5I)`%auPdp7|I;*iP|o!^GPM6F613kYt>^vN7xrM5x- z_y>DVX-nj_KIA#vq+cozl&}Jk*wmy+NX**f{?%0I@MA|w6{j)wI;K{CU20K5)32BhLT&mPq%D`&r;!FM zIhM-aO_s$Oc6XAN?1>WOMT&Jb$rVLFX_PIh|Dd;Ffuce+j^$08XsPt@_AX!XE;Mah2^%EqmQiWgLrU6d<~wFl@)r$G4QTO^!s*|KGVo1i=N)f_+U ziud8M+3o0t;@#^XH@D&49>N~`bl6wE22Y30TkX_WSrz!QJCs_q^_?fpm*dI5>3j$V zcz>SMzYDiQPz)|wqaiX0l~fmlI6WhkY0No#@2=?qY}pRzhBum4hLJS zZAIl0y!c!%9o0S<4OL`!uTYF?*-ccEeW z*b&N)hky;9#p7~Mx>Caqt-@Sj0s?Q?{-R7vT`Fv9;r|6 z!24V8OB#-+D!(1KXU_>!0J3JzGqF2D8}uyG{NY_}MN-k8o-Ov{6G`RM!d8u>p2$ zFz?)N!HY|G6k)QQF;Tx?%Eti4<;vZQv%t7d`G;ZW!@04l0dPTsvuYp*Ny;D6d}SWf76M{oI}q^n z6t;%5{_?47JlUyhdj%mF*&`E3VYg@)mAfL7uM^p11N}ByU-Sy-tIhNcxA1+(qLIQ( zV}nGwC{RVKL#n#?5XqQg<$v)j-*PQsn5XnR(>ke+#`ZT`rT#?jud*!3-FsE}xFYOi zu0(2T#?NkYseBoAj?1;)&e+9690p{+^XS3EJL2?krjc4drGglm_>+~H(lRDoc}BC zHDPK|3@!1(#;8~+AFAX2RtTzfs$wkJtey*HY6-O_rdmyrqMCc{3+!&!R;eLf^UJu% z{@iS75kExcUNhPzqdX$Q(l;XV4!R1<)el}GX&#+0M@4RRJ1Ub1R9tlQ*zdRK*a?%R z3to}sXIc79^j_un5=|Vyv?2pmj!oeCa`%kte;ncO$%DsalETjsy1FP}s*PPSF7>Ba7I>C9rQJ;;XTRaOdv^RbvyNl)t?cO#PVrr`-4ia4$@q>t@Qlobc`-P zNBF|C(*hFQ%q^|>kmCQ&v}c4ljQEk-=g8+L^0_1gs9bM8VOj2cU%I99O4nv#2!wK& zA%h`@cX$Y^!?*l0(74WJb_%D?-FjbaNoP{eRfaP;DO-x#b9pHpn{A_^-62%j0@|(5 z*t@Fatux-9XP$0vAaWON>$uxJ6-{lDbTft?1&);=BHcMvD_f!(ffj~f&;*1 z=?rwe_}`yuULuxE=Z{COHut`Lr#|rXV2YoS=2e7!oi<%JL<28U>`a_A(!iG=lJN$_ zSp*AKPd^X0+U5S%WZ`RQ^oVVQq)(>lFJTH6tq%=nDqN_}Da6*Laj|hM zucu)dm^1)5TXcj61jhj`HQ7ufb|!0jet0DW0ekS^qj(_eorSN$CBpw|NoVuLxuPZ= ziG?EtTU6}6@%mntm$mtOj|reFo!2YrH=_>YbT%-<7phnd1^`=s82&4s3kBySSgx|g>*3a{P|y@_Z3_lS8wm#o_puS2F4AdAJAK|*DX+R)KU({r-)2Jp z_3jTd7~?&kN&w~@4chXx6QT&8d>KAM2RuVv1oUx{|HG55EyWT@3xqqUq5pzGddL|_ z0MhNV!b$D3${5Kq@VqaquCk^N`-)dTgfn9$xUvUAYsKCulZVj@}XS) zMN@@xHQaz3>rMPt764cn5dIgX(2*l$vg|3DLA#u_u>g!Q@%j_~we?ljZ~BpK@+?rDF+HAKvd!y;`vN$S-X;8PfzZ!bMDDnwK{Y$w;d~2w%18j@39S3Y}iv4C97@G_P{HtWu(K|aw3ysmIXHs zW4v7;NZ@zNN@A5LGI#VFu|zq|0{H0v|6QIB+*R%;-2@qSc;$bd73SZ`^Xek!c~V47 z>I(=uVT5z$$kWQ`6&Z_#^&9n2JY8F?#`{ZGw6(%!%8kgu2YY({L8esbuHP6zpKPP3Wh z3@m~fKJi;jET3KHt<~EGRJwu#(d>5Y8Xp~mwbBjqSYN|ElZQO!^dtfVtbsx@y+2-x z&5oLr&GG{Af7GsE z?K8xiL-+TKxp7IP7d(^X1%Adov|BM}NoT_^&@m}U%>tQ$gYQ9=p z)zr&2?(ga2!EY z&|7LTK{vKUap=zgcUu!XI30>$yBgZn+I|J;-0@22ycUmFt)O(mK@jRw!qAC)00x7q zQ;d9l4txJ_F+(%1bx~IkJ@4f z+8q565m|}um^iKF2N5^G9>JK^=iZQXYDPCdcA%4xMt{~WG>f0qMwHSV_5Nnr{s7`u zzhMpI?3iHetVO)~(dqDRE^g|_!&Tz7j(|bmI&#wG zH>Kre?zqHCE#EyY#aiVY!NSilbq)A;MGzCo{_-mfZ#^&$M3V6oA8tGw+I`{@hJ?&}b(!)sDSm9*$C zKYh>n4s;W9W2GhZ)8;G29a9-@kemQtW?cdsH3oHKob-F0Y@0X|(YecCU#s5~I1dC{ z2V=a%gS)u-nCbll01fT|OB$!INfjW1A4FyG5CHc~3-t99M>`EGG=M}cdZDd(n{iz& zmm6uC?Q0k!S@o{pU)nITV8L|%gO-HJ$C0L-(fvQhJ5_o);kBgsUrEAyR8QF-@G0J*CDeoIqWI+K<#yMbgMT4-?H9Y%1E#_i7$5(uU>p5h-wGTB4Bu+W{0qS&J4t(yA+_9I!S|6i;NvQFEAAFqC1&`+ zPhKgi=hkf>R8IenqMS&iwP7;AK)9!2{dVz8=V^bGeKmcNPf3a5n;zOQC`7N9fbCz*(6&!;_2u?kM!Xh^RrD~DX zp$gQE!$;z5L?1HWijPh)s0{`mm!xhC;g6TZ_I7Z-qw95mgcC)MOT#2#IsG+h!h^k)R1y&iB=0a~0Dk^iP~fKiPy znxpG*w%f}!eqkCQ3j)R{RV~yQnPCg%S1y_hyGZ&*yGA=%Z)S(geN4=Y)K|S9r z&ZC<5S_hxw$gk~EAWGJ7uhBh9E>OU91EK~lWJ--j{SiqEB!|DM*ji$$Rh^oIY|h75 zjzb%fm{cRfdA_QWZnRuss|iaS5w~c3f|P}H8xxx?i2&oN{{yae z5KEhQED@rpsBCdI!k|y6PJ9n6S>w{eNN2Y%XkA+=R_PxAl!?~MuEr<-Wb`NAv;y*x zbb{hSfn4l|Zxm&*t!OnDVO^bV8{}q3(k_3NeFE^Wvc#|vlx1R}Ri4JbwhKEgWIxmm zRI%I1mv0KVemF97-k|(M)f}ui<@^IYOfMXFhhRLt%y~@-OMcumV}HzV4b&xyn)!8q z8M#tzadmWkIZNpv>H6YZCdp)7=cYRKQ)K<3lFaNs z;{x71qdg%bcp1BttW0yXJejk2#(yd~bh8&p`fnVW{hx*^nLg0Cq+$=SvPky8?Jx)K z5N8kfUW?(PBMU@q?Da_CcZR`Y)3*7!+bBG4=d(#q^dD5G*UB!evR|DVcw&xl3>Z)U zUs=sanJg8`qsaO7n>uuo<@XkXI?;>kE9EH(PCjghUaUJziVP>Z1Cs+#w(U_2Bm)VO+J8l-!$V?y*PM{WWPKk* zzfp;5$ykR*=mM%-o$70ZSwZ5*qW8bAsC(ZEvdy|<4>bx}eA(1?;IQk?)9j=d-VzKc z_(n}Uoc%QK3}3%~IWsi`B1I(AI=(5Ryr3f@oiH2fz=Bz7yo5dq5Y?q}z)lP6@Yaq{ zf18q&vnpuM>6D}tnU5JdbZVf;vb~$vAZ#S-GJY&)x;gMO$qe6@>0W;c<;14-Yrg7I zfGAuq@&PO1-whAIX#9R*a*oaf%3WIp^i#6ZqQr^+s<5-gB65N05Ryp$jh#ck#%y|E z?lI8L8R?k}AejiYaU`U!ib?~la49fhbUH)$boGUWEWmCdH5ix}#FxA!GQ^Bq6)(H> zDxX8iT(^&JLew4Q4vKuboXH%zwkF0x__d$-NMIbT!!POW%xTxQe1nrsseu67DfR!3 zeQ*XsSz|tuFqn1$(j~bmowxvnjKeYi?!j(iKe$nCqV`JLK=$5_On+?652uqtJ3?n4 zHmZ~kumARVZ-71K$#V^}T_R^tbWImS1$tpK&lN`hu9T5+Ta2;Sg|j-XT@-do)g9?N zNcz5hG6BDQJwaYAv?cONSCHQPK>MDx0jW;Mw5yWZ$$aB*K_Je?-|^&QFQ~E=%Ia`) zqIvB#BnM5O{^SPD4gIKBy+QOPX{lR*ylS;Vm5j^n!ph&zbiXx_d5Duv1B{ox@({hh zw!*a$Whw`PltTk6?%*fcKA|wjI74KxRar5RoILmmoX#~4I`md+Ej(pMI_xFQ`$Zl9 zNJTNJ;uMq})E53wv0(&>ldF=nj)=cgqDFyA5Y|o9<-IQ4P9gt+L`t)0-q6lN&HLED zWb~ve#JAD!_(}r=w!QvknbtaXdp(zSn?|7Vl-4-2=9UOpUmupYB2Fr$BU_IvIv!{P zmdm$}s3~Pi!;-LmyS$}B>WQGw=Cb0hv~JCwB&vXO<1J`j<{g zq#$0N62yC+&)N+SwMOGbIc10&jfJEpR?)pFL=qizqT7s8LceRKVm+-|xBbZLfA^qD zA>@x4Arvb$K)u;Pj_h=^~k5KLTC z`xlMKu_Mf-^dhb95(DF0(4}GrN6WYwdjvwBmNoXP2kLR>yt*`nh4?lj=60dIFT9`O z4MvM+lFRAr42qwT!SX*KgkA$ni7WtWRw8cBFq+G0T}$lpS(Nn<@qRIS)FW+Z0U#xL zp-o)G2}k(h5Ewn+=KVQe(eMW-RS&Bxp*y3HZe{l@1Yhx~MllHu^vqq=;91V|c-{JA zISFr0sY*N3t)(`A6u(N*vx|L-QrxIw2QW{9SE7ZZ$l$$3s=igt2F0|d1!#=i?uh1o z|2FRPkcE~bp$>6({HOcWy!CQi1OxkgOm~m=b(7c()KR^4v`kF-v_ zKD&bnOwsEanwcaLCHTFGkI}-&kk#uEYcT}DYYyv>isn6+pmk)d%0yC2 zcH&wP_5VaS!p@8 zS?0x*kF=sIn14C$=-awZR=)_o_uW%1*f5qk-(rl1{W$L3^9%Kn5IA)C=qLGnATf9A zNg{6R3BH{NU+S6%G7j> z?6E)V^AVm9m20^W^I2tWO4GeuLcB1nh$Ow=Pv{w#?bdl2)W0oxB!NyMOvHVrJ|PJIX;DA zdf6QcFI#Ht#s?IT(QN-RCr(XZf67kn|252nk@{sK_DaT&(cM zP4-^?e(s0$)#=Isg#>i+Ew;x;ASILRvk)>EI;382CA|5&=Vb6n+&Y5i{MD~X&Y}I` z12Ui*cNF1K#9uf`L@7>B;gskv=4s;oFh%8jQuWACrBa;>0S@=YZEfDY;v-JErDn_;E7m=aIyJFax` ze)q-wY{^-QiBA`|J-)jYpASB{f+XBdB999vIR34T`5D%qBNy=X6EI2izGK>5^Llzy z{r0N+;$H4DzY2Z?g!ab5&(C%z(ft*X|J7U~$S0#S4!)t2BVHUG@?1+0h71&nOrmG% zOzz~dRw-B-b5E)x`7$jH9K8Fba7qBi7+41Z8DGp>t9GO?1_-~;dAFNh(-oTM#5JqL zU`KR>>Zs-8tx|;H($|(f4s-mgGp2>gHCSEe>e*7KMZsEFj6&g})cs7VNTK}l_ZSa! z^+_NiYS8C3v>E$msAoJIv7Jl|+`r{q3+5-jxsYe({M$1e_2R< zXK6ev^H7QrOVAC^-+Hbgmh+43<1A@Yt#N#l6&fU9ADDK^9ShmvhQm4EO^xwE*BAob zKV`HWLS#grfj1O}gfU~)tI?~fd642h%6%dJ*u)U;>AYPWw&%s;KpWtf@ROO~Rg-=( z`P=JYWv7vg7{L(E>@UDSBw7(ExDeqw)eUE;kg0BTHG zLuXolw#)qm-nHnCS4f%6xrUs7!eyr*Q}+f5*A|QS7Z1li1c?`+N0|tG>1lBK(&hV> z{AW4c5d1Eh=7=2>U);0bsnl{cRiidn-Y~2NhqI!vXo`1m0QTl84A`%;Ud7(M)ZP4EMf)v-6tUn({9}R44finu3)pbKWOJnT?gY7sFjgvttqrLt}bGYpq;>9aP5(GB=3}WH>C1X4ob?hw_De)B1^@Fpn#)H0T zTJP{0>$W|G(f-GnwlWR;?83^a=H~XteG;bqp=;||_}(tCMB(a(s-O{mhr>KO&?+mI zRR{Jk&1sG-cZ#XI>F#rxe%jjg$9>gQ8D{a;CXCir@fos$+`9zBbtCurZ12NO9;`%WDsFm0D*Ib~JG}+clbcNgiaJ z3_7Cc#|6Azyc=vmn-75V=ddgYlIAw->_D(|%<9964>01oeD8ai_eHd#7=(4XeGagF z|Ar*iRnaSXB5lCfa}VBZd8}mhhs5>m@!f2+Orh)R1p{iuE!KiWPh>(^kt$4Ehjcgi zQx0@cvVd`_hcJ2^|17qmVE^sUgA%ovBm?%%bb@oT2picP?2qkQphQ}R6)EdrR`_v% z7#gQ0%)pw{iQ0KYrjbUY%3(+>`oTxF$N$<7yjqiLnOhtAXbD^iaefwv|II^piO0cM zX!=XVIK=A|`^2U7`%474k>%&!$P95=BLT2O>7isTQsB`t`rpnRci2j9RkOdu zHtS=GxvT>}XA`|(n6l_qNRjc{9FXpb z%D4J+Fsjf|iM~-$fSF3Y7OR~rqmKD3HpkM_bkX37l$ulV}q>N~c8|gA-IcW{kY@P5;l9e77lMa6mLs zO31wYr%=}|@(io@?F>t=PqpGpK?T))tJK99_~G9}I3*d)lWpsBOh?`SJ?I z2-sm>GnkqMeQik&7%eiZ ze-s77(};2WqN%oR6XBC2{d#hOlfzhw&)PRV#F%E{=xE|2j+@n#_{~1Cog~T* zwSAa*T5RjUC_bn46qU=O2&xE5iT3eMzKqjBLy^F1{1>+(quzUm znACP~vAcjfDAB9nx@UE?f;`VUIA74$lw8(aT8b7VVv6SYdq-T2Rlh;)QYe)F{GmO{ zs-oo&j{Bmz?xR~tp#}UA1UKuA;*_Ealru3d@H?3%{cyYrWr32i6M{X!o}n~{= zsRKeL_kGe*{mIKNm*pJ#DL;`=TXc;oTz~HPcmqwlOKUV~F{SDeV`e*Dgx436o|3Ik z#gk|)w{XTTEM>nCFzU4Oczo(}V<5_E>*s!}c5+sXqrS|*onw0GBFRcELJ8<0dJ;l7)=!Xy|hqv!KUj++rJTGEd#XTiqJEcfC zG`dq7weoGBj17V2+e})c_hTlq zGN?J)m$98$AQLkk{0sK1u??47o>9GT#+uLqJX(8-N3Mrb-8M|WL4QxT7iUL-fZSKeA59=_+8$4Y1~>5GdEQQCn6<`% zu?a{&UgXbkIz;*@$D0$XuvC!zNDVdb6_bJ7muRN z29G37M-O49s!Kg_tj-o{(WrHedNptN5`GLMn(Re+u?if3noS|@Da+IQ_{zosn3lRr zU1`Z93L@4PKMCKrDQ!r`UE7$6u>vB8W%~#~FI!AZY?NbHXk)((e5?U(u&6L)$1t&T z74SGeX0)%R4bUG93vaQV_-8fAQ8ZD4Sc2M0@x}+jxm3obrr1gBDE)LYN1`Y5$ZmM_ z8v;ni?XS8Mvr6y8dkgJ@P+dpQnqnq5?;?!!WW} z&gg9%31E&&9H&};q6tR_>PYkaw6Q&&Wc79>m(AG*NT{FXaIlmV`rVu!TNS>KwL-J#-Vg&dT-b*IUolAHMsbnzC2CTiJ%GCU;>{nd!@y zu7P@HEe92r6T}eN4xcvV%@ek$1P-`GX2|CHqt?57VnA`wT{> zqA4eK!aHM)SYsCgQNKMe5I?=g6@x#E!mcJHrx1*d|4^gSt{y_zpGE_&l9)PsMBgq9 z`)Px&5!JU|0M}=^TuVrs5^kXP5c6a`Ro>z>>*)ZI;Cq^?J2mhf!5gGI8A z+{V9l%ZEt#iV2*RTOtJ+iA7(N1yFV(mik6tYo|3HGBQ>%_pA+n=yd?DoF5QgyKG<= z?ANXR5+=8HY>V@6T>u8)9a!mRlDob7UC@>S#dsMjT0#Z$splkf`p+)+70@%zO6DxX zI7_=5_sfJ<24;5b5}W9e)L+BQWM|Q%)5{fHbs%eL(~JQ&Jm+o~*st4gUosn-4`@<7 z4bO=ob3RCi>dM=&*fjqaE$Iesx?Xp6MHw%?V~u_%CUm@ad{DQLyX(B zLAM;uwT|s*eEX5T|IZCWT2nhkI_!u}A|E-}+O*53bto-OBa#yAiSRpqNh2>&bf^%lj-Yy950pg$HFM<nvcfN9GRwYzvO@m65q2%4 za+{S5d-O}ew$wGK;e?l88#IXAq(|Hy6N+7hX9TombxOQ=%EL70;y=wI>gO7xHU_~j z3D0oEkG=JfT_LL%gysn|c_*86M`b&urv{dPXHi^aWvRXbI@c1?A1RgsM!X+2ssAe} zna&Vk8gM>=A?9nuPBq@~Q+YtIT<*H$v+er0nFE6Hb@uP?q_JNQSzzhGFBw<+DG)J> zr30c~-O&*qgkGSc+R5)cwp}vAaNlUCQs?UA#tMRGf2c4f)$C!v>cp|z@dkh9mYRO+ z8dcfE11~U zl;e)}_vg~gG2{{Q;1(YVZN>T{`D=0n$6V+P9rQ{|x@m`q=l~kiveQ&^v?#;&pv}Tm z2yb6K3$k8O=$&`HakV_zn>t09t=@?v#t)NK^Q#}FI_|wpba?2N16~?y8=s8-`GjDG z%+v}+Lbr}}lwY~J?tV}I35$>rN6cJNw-esPh+UO-(^bi=SI8|#R)lBmZEJ?k^m5~Y zp8;+efnU(A!gd0DfyHlIy(hpk%~vqC#3MR|57U<3C>QagWan~bpE!(GeWiEB4mA+( zJ&TRgOd^|XmYmf-wTs^&NtinH1PzA|h&Uz=0k?Enxok2C@%C71?k1lXe3I;K`X&Gs zEjE97IX!%L&E0~ppknOmPq9`c9h$iW|N%>Pn4r5^TJ33Z$T=Vl*+{l=f__?S*+aXc?P! zrBSYxGmb;t!Lg@RHIqc(=P4{Up*MTn_i>j2aV8`oA^n&2LvYY#1386f?PfC*0r&=d zSQ9`MB{pNllPWR;R}!EkfXO0g^$>UoO1M!_h%}z!Vn)<4*buRz)QR7cUnc032iL_! z9IZEXnucUHiQE#^WW#iv0t=xYg@qMw329HQen}itC!;C7$Z1xr?4gVlvwLbyDhFNL zcDU=#c{9vLv-oCyCI;awhx;$E`%?KlUr!vWp+BN>g-d>Q(q!nUmK1RLh&sKo2#aPP zr?etZF*|~nb`O6PBwIw9)>4az=`{HTtBd?&qw#vocKN5BU_lxL!QfoonP4BpB9hLd2yQeT5l+S@Yg{1R_xQ8oz8%r z<_27$id~J<$PSZ)==y4@dH7MP3lDC6uxlKsV_MB8-iKeoLdsiVuHPBWe&zV&f<_oR z;18D0A;Ysj#aRDT33D!<%Mt~tadQbX}ROq8UtnqY;aC2;D_xd#Y4QVgeNy%8LYl^n46 z7NX&~FXT0CWSm_R838X|lFpF%4o}!%CdB(AIjgpRl}IFG{CvuAp6%UU)T_z(_9w+_ z9TSD+omSV+BakvLpCT<;o!>j;c75b{g$F zmy7*{<1oPa`}yKA5rTDk555m7!hoR1a7_D8C9|gQ0VGRV`C3yKM(XnMKr^)%X84r* zZbm|#U(SH)$L(y+S$O64tr5<-za&aeXXLM2#!**L$G}i)fyZ=*RGBEm1$@5G)ax7=`sPmwpOaik zU8V{yxkh2j;zo9U4?noY4=b+!8{Mgb4ycyaUC}l5O6IGx1`Ht3q6+zs(VwSN6*+UV zITW@jWm@ux8lZfi3jdHg_F)A!Zq+cp(Xjl>dh)l=(hZa>=-5`gK0gTWkETeE3U+7L z30LEJNG}T}+x^Lv{h=D7V%d#Qy3YOs*OD=cN>wj8-pmHRgS!RkcPt&>wgLhrPeYfj z$D;wU)wf+vdSxzu&Y$%VeUO7_1-(x#WKpW_ghQhuw5(o!+5bdK19S)LLK z=clgxn%@^qtKVeAztRJ)Q)5(#cQ4=jl+-@N{tMhg5Ii@vtD%>YGMy!Dky!d>eUaG= zk&->HEe+yUpGtyu4E*iTK~4V*HqOf|O9adO%TnIwGZ zmYjh$x|bd(UBb7hW#ZMIVjCHs(>-2NXg&Q|0B=IfEu32xef;cu>UJp#jUVVZU#JI^ zF|(fSwQr7cA3udxdaX`;>f74D0AfJzSOl@?%xGyk7>EJIu>KPRj_Z2@byt@2H^DHb z!Oomk1o5gO-3-v>SX<8+GAtlBQWR`Gens@=Qdee*m7?VWvyFuwKm4XgK}7V3pB?Mt zqHT|kePB%LxCS<$Q(~-vr~oY;&A1u*An($#pe^ z3wd79Vig~)8uVE@NVvbK8y~FkeliA@h7fxw3>ae>YJD5IBVRuMA+V(!D&*gatDrKy zi5v@I>mJjL>3zKBzN;#RGhh7_1+{*iEFZe|itSVXYZsM$!}2Kd<-Y^T`c|yYEc^C95@l6-fF<)K*$}%B2 z>~i@upikb1hXt>JMTpP-&P{>T3uf@WMJ9o1>8-_{KW~TLXF_LN zPQkZb9no!J2MR}Yds>9@40>EbMJOw5t+CDrHxA4EcW#xx8T3YP!qe&xAwN*=Y?s;D z=3KCgilOSVAlKb})L!TI2!A~6qmTv958P<*j-WJl!I~pw!W0|rLBVm7+_vbQJ?DYA z!u_^j^ONLl>ZRk+X6J=~r-`5B*c|JQ+6BC)1-ySv$YL)(Cc74)V4b>T@!P~x`()6m zh7v!{lD9tivT?Cc0p1AR(Wiy0mbPa-`@3b(|%!f?cHis1M+?%J61BgkrUILQTfmdh!7(k zPVc|SJ*@e~GLt0JZ_L+@_pxYkuUl%X=w}93nmF4<30sOezFER`vIGARYaf%Q&2Ia9 zh2i-h9~1^U6Z7*~hIUudP)U?8mz9^DOrTQR<+;OMhkZlBJkEw_fUw_8>y!I6mQ52?)bD&Flx| z&a;2qyD5StcX_OxI1(j~vY8Ie`XC>C1y<-*NOkY;pQt=AS2$UFMvdy$*6YQDBd(+B z;fscUW;&A^{9g%S)Nd^t>$wRmOb~!$ObuB3)e&=XF}kDnQDQe5v-5OtaEe(wpAO=|#|4hM=){JUd72rj@;D zR!U%EIGRM=7BuNyDK_aQH?Rt#i{kda@n9QdgVh=nra?E+f-FCb3D#0PxHpj%1e~+q zH`fx(!8lnYRD3p};%#o6W{9<@OL)u4c}?+?JFi4UNA#~!2L7CYLOPjsCyNmXt5AT+ zjf+9zuuIi|&j@yeqi?4u7%r@>dk)FaJkz@)1jj0Y+PVXvYTbk)hY(g{gS|BVnxpI_ z`AFz};?02bXCn!$n%K65j$`v6B@?G1Iyk@9Qb0tfuduF(o3cR~2T(N$2C61>sh4vF z+Na1HTeAmi5d($yLe5cjy+gyoOtI|>?^%Kh{VH1Ra49Um>d&)Q%||Y#(Om!JN0)p< znHZ7lWRD`7*=zG!xJ46q644`MMg~IW!K&LG(GC3N3?1NKB7zF%zf=GE{>J+~ssC?g z9jL#8EX%S0Imh3`Ik|1#(r>n)!)Vr(mrd^yaJG^xyQcAPYAsJL46~oBdl|R7U&hfY zmUyO@Wo4mYeRm2w>3+uMK004BAZqvIHQwnMK*6zyD){2o(=`67g}g3*(*w3(dWFOJ zx1yy1HJ@IX+nFCa*N1nPb40D>RhiSVS=q+_+cW}cJm=22!E@cC0;r^5H|)hqm;$@H z*H`}KAzc4V*7&Qex2`Gl#Fbt!W69qSw(AqwE5(La5F(ffEF~u*-X!+nSj(Q@xApzg z!SkmRG#EqEl)UYM+e#I0Z!x}biy`nD>wi&w8*&p)%NPR_qsBZ9m~Z(tfOl|z{P^a; z;eL~dGWotPR1e~hbfnU0_LQ}!aC<-E<(7f^Kv#&bn(k?{EZds_5=wYVx?AJNml=L` z!}!|x>BJ)>I2j6C-xP2K=sP0xS6nybDf0&pIW|D%ozP*0_M z{Y8X$V$YM37`8lQ9Y!l1RZZK4PDO_HK%}_@@e;7(6zAtlBx_?vO9%!EN#p+D(l*SK z6Sh2*2_o9hgH}-Chp->_KS#p31-U)l-sgL!9Bd=9S$ZQWLrEH%aeKBz@yUE%n!-~5 zX7;7X(;qwuavs>X8R2Io@}WKV7QT#4T%l3(=)-JBGgH>+;a#3@8%X5v8Oai*Xn(2! zjcn0o<6UE*MXRVSX3+&G5TISSF7|f2&_^wkNO*)mQ%!;aXU3aHeJNt{llca54GsDK z*!t?YD8J_IuObKn(kvZ|bc=K;AyOjUi-3T%G)pSoozh6BbS>Sjq;z-h()r%&^Lyft z_g_BjiJ3Xq%v>|)+;u(lbTTI=`gCk?q3N@fy5E*x;$VkK@p1Hk1TcRh&rPBOJf@0? znQIBRS1OGGpv|`~Ozp4n>=YD#<~-@F3#IP3fZtb7ymDcK=cI~i22nnJhSzW{(!(wq zSs{x?hh@nyyveDEVQa-I6%@H0S(tqpVB_}~Mfb&vQDCWo#ra0LrZjSW9dTZ*)^ zya+Y6c;E1-G0X7X+QUO8WJ@N;v;@S> zZz%9;irE8HfnCG1DFJ^lt0e=1*4Zqm5E5f`G6C}%QwqD!G~8?54RRw_i)7Oqh}N#~ zw~RLZc8UZTEI`RmM}=CCdPbL6B7zGj9UY??rCFG|#(WHu0va55Vph$1iPo5<7lr9S zgL{!jR}6f3lOK_bFk3GPhx=^mE(if9W)n*WGmU<+V1~S#8?PpIgb6-mT9sY>ktENs zOs^sPa>lOPRU(?vdW{zNt`H(tyB=CBhun@4awNuw4kxn;`_my4JB0~T`}dFz@n&K5 zdq}KJt%MY1K2HeDa=MIJ4l}@zEU&s+?WAfg#O?xoH2q^MZExY=1_4Y7dyv_jHzspxLey2hC%-W2~#2{ZM9Rq;Ry&2%$toL?Ot{H4+jLF?-qQ@gC}}FVu;4 z7z7T-PSc3@+JFGYVFRfjT_Kmki7SqctZ`F2g;RwQLjAx8MxKqM@<_%PD@c5m3@S)- zdJ6;?z*A8na34bwnKFacvdd(<$$E$Ai}Bl1INAEyFVvr+Ma2IebM9G2lQd)PTCd(2QJID>#qgwN?1KA}6`4bp+U!|$9%Qip} z3`ZXaxz51)Dy;f$9QP&l_VX2etflq750^|jkU**OKkN~~L7&**L4Bon)gMz}e@KM{ zwE^>z)85d(^^}6$-c4-nX~oU|3<<LOptgTw8+M}vxc zDMMjLj(h7)eP4ge17UMC0Ww6f1eGTs;3#gUb;VT6&D044OEQlPhPu0B>`!pPyC2i^ z*JTS!O1gjt_K3QH0p)W<>2e2$yECv|f|`h+{W~(Lma}Vl#jEwQQ<5j>2WwA}Tz|$i z&6lL-q|)=metoe>7_Z|uH*AD$UpcPI*-4#BjWLW-ha1p(+_2&|P!U5HllS+nx{a|A zuj~TBN0$w(BQ@{f5kFSzp&ByLAY9d|L-t>EKby$DE2B*;mJKFQJ*IZT#g|VT1%q+g zkQ?Z!&P|3(YO`QknhzionuXnh zVZ@|(H4uuLucX(lMOkiwgrxLuxAz}P4~d>j9+=cRPsM#KXhNl{shyz%MHFQ{jYApbeDdnjSaT$y?9GBxz!vfrin>|0}scy-|JLg|#L z-ytur$2Fr*T{8`w4JkjxKOYxU&<~>ixpY>2lWQ+^Q0`x`*h1a7A-o~|`>Ao_r06>} zI{W0c5=CZm=M2Evu1jdGLk((empDLBI+=*BQr$X2hX8X$y@tLy_mW=?R5Ohi7`80L zjNpQNG+KncVf2y8Uf|D?*^UvkH5kq1)O;b|XDgAhm)L!ONFsl>UQ0}h{v%}EY!Ar$ zG4kwr=9;5VUJ48}*?6H-6iKf_coaf?m&d!Gwlg~&@g%4(#`9w)5Wn5I0SF0nXwwX9 zRch#_#*w6?6lH{T`i05$>5hFgqshblU5H?3HA9)s`V5s=&t4W{iRy1FUCkP;&ZA#-^E{+>GHM0VIR+mb1`33O4IA0XTI|T6P)0Utk(VZ|V1s zj=Chcs;sWA683T_SgsaHFZ%tlhP$oXc5bbGJE#z_(Tn$Fzb*PPq$*1N^(SF00zNCm zmsG_Q^*t`6T7iyj041nT@^8#Tmu9{-*A2?rIlH*xqP5F(41P^>it2=;8{-2o<~}jI z&sqlNE{;c!6pI`5R@4^S*W(kcgtpmEh|A_Ufyha^q7PB_f{~G*37(_HM%--d&Ej)F7hRp6NK6py5mGno>ZItN%BVn_ zK~k3szB~cmgg)w$A*s`mga&!mSsmx+SJp`Rm`d59CM=3ZFG<2iS{%;f`-=!BU0%hmY^Z2i7Q|!N|jYrMD*!#f)1NZ5hh6q zJ(D4@qaV|QmN71GYr3a6`I2HJRvuu_ia5m3FLfd({J5StYSMj7ulJ?GgOVXlL?@@} zaKhpVy>>UohxCw-H$KvLMb8=Rrh=fw*l?enQasFVJZSx^PG+-Uev{wNfuP3bD`2EA z`1mxGS0{U{_*f&%k`lV&Ltt?R5kk}SP_y!&wLJA?!*^qnph6joTImYT^ilzoSuZd6 z3>2t~yZO`lCeGnQMUb-_u>~EK2VC>AhpC@Y)ox0Nw`ndCyr9XW=S}xKaCo4-Kafm= zeFmB=`~(|t=CXRZeXNac1ORWL z4oU1PweE&A1FsFl+njI02&`3aR%ZaL2f9ne}g8qHc@YtKsR*vcSn82dG2J=n$a_SaAj^ zk111nCl`BgF(EX=T(f^KhE}|sP-d8mt|bFU4Nm3yHtBip8~&d*1|rtYo+m+lz(-|( z1mIKu82Fv)1xJojIgKA9>F++&y5UMukFdWH!s}eq&0u3V%~K_a-;yvMeCe!?XDZkj zY|q06htZAaD{02L7(ILTjBwOAiLo1SvC`zv`}Sghij9DGg8~J=wJpi*gctf?QFGE1 znz7?Q9*~JPB{v7%S&*$7i^5qsgce-hj--B)u&0c8hUix#Xi5oM7b}9?L><2gfN^LK z_$bbCt{Lun0`e0>;Mry!utK8ghLFOUe*Iy*QYc{n~>%7Q#ub0~vOLF;_ z+E(_a-I?v>C~eiczZ&4(up{U%61`W1kRIXc=pr^FcD>aWZ12qm7ZLC8?++O(tN2`_ z)9paIDZ8@|J_3Rpu`~6@3H7fFnm*&UXj;J8-t8ZuEM=KHY36+j>{L2H$v6~44_ni> z2!>(*#pg-BKRVT%=|m0OZ;lVLeTrnz$9DAtn;ggAK)KIa4MvLHqvjzi8!vB1e+j~u z4%+N6;Mnhj`gnf!A#TGcg*B9CdE;Xll~~e8xrTFjLSf0WO&c}+tvC?@xwjDlUX`m- zPi_KfYNW1@T%R}tkKQf1A%OlbN6fbtg^G5Jx?s4+-@_lDPn#3?Oze)}_x?@zq-jn# zJTTHR`AzwU9AaL*saqR^p}Pw+Zg@6}`P>Q`kG+y6TfD2NW6P}z*(-Z)mXZq~AnpqX z5OM#LnHlRq<0d$*nXv_}^Ht&q3;dkAbs3h!H~dA8qE7EXMT6xa=MKJJg`hy`)WV(+ z?fCflH~E6px;au2mc=h==9iwfprkOvOWtljz3g}QzdWC&s|yx3Vq1z~Ou&e)lxHhi~ZVu`q*hXpte$ zsDs1VuDZ1HbPR=(CsAjqc4S|ZlNK5u=#0Zm)%;C;ya4fr!{i)t<3B)jjRXL zCw-;bt4XR7nL8T7nw_>^L=>z}f?z;*AF#Jt;}i75!T`C0z-0mB(8YL#SuZWf$7V8o z-zD#(OH?XR^104l5)m=wd*NF|ewAUP8VeBfQu#=yZ!w69>MM`cyuiS~2$?oY${YJF z4Y|Je*rKm-k4OdeD!zPsEx7w1A=qegu&PJ)d9a%CX1B9<9uRg#L*3D3;= zK2SF6cj+be!LlPt84=}V&E?S;NK;yLXfCzBfHY?E3L0ape>@rsGIz_~eDuz$R=sIE zntc5P_`EvDORP7X@`(!;xG~vmo)-Mz2m|le6w#Q^LY>*7a^Jc5(t$^N!J|B}F)`Up zTRO4z^#a|NFBOb;3c$9CJ=|Ml8{5f)Kp9+{iAuDhXXg~HN zZ^VnfK=KKPxf4%}m3eOb2=l?!iDX3}l&rzB3ma3qYcB#uPMDEy)p7Q7b@vN?=DCZl zP-8IsBVan5Gcz+GDu?EkmeU;FmOOtKfvm=qD~qK^y@>d(VeNOWPW?GxYJbIwmqtOS zNzPVHoZ7EzwNY|dw_|xpG5qW2mS|Zir@#3BbAu6lX~H`p>Wi1L^l5Ud+Uo)XdU94y zz5BuGAxj|dJ)fs}URBpzl9L4BaRZH`x1hn{;p%brO0h{vB!A~W=YSL24mp>pJ{#ii zvKz1LT$z>*Z%cC9&@)G?_Vl1Mf$$rAhG4$_+R8a`zI5|k!7tcs4NqAVsUA8loE^N= z>}R`>tat3h`Cm)B&?Q5tW@QVpi6w2rgAzd>9W=>zsdC=)voa4h2mnu`6#%;61VEiJ32kG07UVAYt7lvvd&!zLTvA{w{vn?m62W6y-}{$aMq>ZAJm8oIQ}mGd9qmo*ZW-q2R+yg*+{!yTas+} ztANrZtx@-Y6qxerDfm;|^AmDxu6QwMIjq!OX%MqA@u`Aj_ksIrl2DMNxtw)yzS2tW zh}0sGDs8PehVob1px^(G}_N!m^#*8 zek?lJFJkACdfKU^(^PbaOBmfgXck@pz{lIqtqA<7wuyICaX66w5GWJTtPPFb`qomntr|66NYyKx* z1gz!i9a}bdz3*#pU7uXU9ZD1jM0%#N7|@RmQ_mV>FX`2i5#a3}(Y4|oAaqDnFw<{0 zdGMnDQk!**ExzWyHCOs5c&<^;|&f z@BbzvE3;soQjL=ek~}_Z{dM!T@r@d}Hjsne#l586{zu>_{s_3jdZK zkLz{#c*c63c4%_kyh0Bi>{e}IRQwma3awpreIl300X)~ceEBLVh525LB!!0am+6ar zLYay8Uj5F51u6_|e*hM>FBAwr!jR#|v-;Yh{#ZsL>R7{^YLjS9@8-&z58niwUrGaB zj{To&;`zP~4Rsf^bd&Pu?VQC~heQ$cjIb*ODP;XoBy`d*EY7uyF}GcdL-eCBxAfD4 z0-8%FRY@N3kA4>+9)}S@komN2tqsD+qFGdCM7VWPyvyqUSU%`mBV%Kt4P9LZK|$>k zZqm1MxkTo}jU(I;|ZXYdTEfw=))cjx+|5!UW51JoXY8m5k zmeXf58UvU})oD6GS0Hn+U~vEy`)5VlNuF6=h09}->~rL#d(6jQk-@x}HCT31)=YD* zcwTSt;M3Q_03D0m#3;&NOgNdE!ob1N^w0~49@CIU^0OOf19MB9_yDs+jyt7_nqjB} zk({lpIX=qsnKi&P=Ftqr#p4YCoGBEY760kw>)eEM5O>?>S2SJ)XuBZaC@npQpy8Ib z-K+r9n2LJ>@+gkP0#W&Wiyd}51?%NMGlQ3jIN*))lb=D8Kvwjw2RwQgo1R|Av^Yx_ zh(oR6VHIE=3bs8MX-u)B9N{GHeav%OUYIrJM^}fsk*eH?RVRPBRy?ws7~mJdq@f}gqqkQGZreqX?K8KbWS*zo+}uf`?tG>rslnUZpSK-_hLX5Z z#2;>}vQuMUdfmDzqzd2>FetPsiQm0=fC!=3&ez+)v0r&zt~?E+5+xf=NqT_F660BoJ&Yjp@-`Mj`bJqC`L?YSB>xjY)(>@%2Nwi~oN zdPCsiK?ep%9ovC)QFlTh(T2f9x+?(ILBulpVgo2)4Zn1~eP%aNU8LuCQ@n9z`oR(5 zl3A1Yq*I3SAN}!*5gM=svSbV=scl~QRWJ#(#yyfBrpK5Fsjf*~)X%=@yq~)3iUdMB2&*Xh2@rWiNo=(;{*A zjTKipwq#qV#U+d)DD(dQ_y8R5D)tNO7kE+&(ek+luW{M~57)Tzp$@e{)-7j~-y`>~ zms0@rMOxFAk3yw5E@A0S>k;vQ!C=c$&q+j^)C3qvOBtJ7jx^$2Rl?r>_}8*(`(kS! z73!lf*oeM}(9QclE`&d($r4wD84vA;_C0JUPz7(XclzG-AIIMBP|f6^0t}?mI{!qG zlm0{9(5Bj1ZXke<)4#RM`!R-(#0%p4Pk5w9ZMp+>vl}w<;9T|6`Kg}tL4Kjpf%+%{ z0`{gvM!`wtCn_dj3!r?o7@H>S!XhWa%&3&EMls06K0HngZC}G*cajGpQM(B_;7UUP z-OqeSXUOm*Z4L6=Cl8!4<0=0wc;OgJ9=c+CylVetrcE~U`OmZQx0DjMl&I;q9OhCi z7D`jaN0}$t2+A2mH-8tmXgkWBG1fJ=^8Gb3MR?598Xz@ckCaSua&id1(mEp!I@VjsI*j!E5P(jI03{0_NT=R?mQ`^K_PDQCjWS9-5Dkjad zKY2s0up{IL(@|Y^LP&n3#-88|pi#H8N;6c|9K>t{xZN&1-nEOR2ONOg?l)+H`2P3; z_Xu`H$5XCCGDR<6zC;@E?XAaO1Fo(G`i3hHvFF3J-vS7>{u1d11FPCo3uU$~TOvH= zavs~Nf$eiWLyKSH7M)0LC*&;=ivs)pNZ;w|5MNK@Eke(;)`6_*Kv1ivh%z8+avDGUb< zPgxfkkx~u$RF_-wk!jq}evuNvqVMRg9k8?|LRObJ_q~E<*dhw>mSoCZ5;C4ffB+|) zO$=}_qOwW=6#~qcE?WHW`BaGyqNdrK19$D3b^#Yuz(;Erlwqvj-+UNUK!7Y;jK)(w zZ{=XQJRb-Ds7DRgCx}RE-e=2uZ&1$>QAo9;zdu_(c_@hr;AufOQgi@UT*h>glcd1# zFVR)^4T`uo#j7y15!H;MIsed@b^36&%$z$fgZCSX> z5}g=&BPCV(my@5)`trH4059oRpK$I5!>61sfG6{{u_LqZ<~e(^v@_L@35(|851}hM zaoBg>k`VCpZUN#>3nHW~16(!ImQhhrLySrDa?NF>?tjTT+mYrVyE4()g zljuR_z$Y=rC0Fv#12tw<$_F0HH`t3NlhYD?JvWXBCIDyWBU|=Gl1PJ5ZZk;}(9Gh^ zc)@mRG`EeDO>7d2!b-kTFH~bSXVaPLci9TVP+@kypTB#a=-!;obYW))7hnTiNV?Tb zr8E+UyzgOu54?`b`WYh;M%H4Es_Jitk-?_!RS`N(f@d4UL20+}lo1{@i5 zMkOtMkv6xq_$DiLN{BQ)v*NOgC4j3t$Su?UB$OOlb zhrchh8BckyJ6bcP!KkjPOE;~(E+x3Y8o8L9++1crH2(hn{}N4YQk5=nIm-dK3$hy{ zVDlLu#2PPY1aeo@sS^??jBtD9)Y1H!*$x6hAz?+|d*#M)$5c_5?oYTT z-Kqb?P(4!w5xt7-8ovk%nngo;j^}SFZ<`A6aA!`l2e<}6yAU0cy^L)#{k0O5$2;1w<4JqvUdab_`h7&@=GKWZzjvW)Gto zD`c(>8{3d8NF5-9YbZu96?7M3*!Ououd23L=Sk!{--bn#8VzHXYG2-nrYNW10-#T* z-TbMcZK<(Je<)@;t!5p@uFNtTUr16A;MM%~CpDJS$TOJ8X`q4hCyK_>i<#7kgO*8# z)>oz_lm8qCMMK? zO>Yduv;H-8yik#yJmN93w>(@bEi=-(6)#XbH6c8+-Tg`I{PW)af#=S4!5TnAT zBS1kO=s7@Yc&bGE2cY4&xVXRdhCHw6MBsQiP*!)Kn zIJ4?T+irdSwR~22xiHrt<3i@0Bihg~Tc20N90w=5Btt2_4An+kF!;1Y`!*s-2PpFd z&7uNEEGs7$lHC<+e=y7Y7j=OP4P)iDo^>A}y|=iX{B*&6cStNRH(}+b@sgsswRk4d zDrOk8Wch9QUVIQD>SLhM>GImh*AubJV^I91rO8r2gDFC^<2O&@$-`o#)y>_fprG`> z;S`WJ05I0zb=UY8#wW+iI&IF9|Z~qI-f)6>eM`% zAA3{sDc$ol3tM2Y938(T1n;^c-8`#C3DV6E3=I4YXy_JF<#h&OR|gUh_198V{=i{V zM&U~uKSPI3f>`38Sv+ukiVN+1<#@Mgy`>Emb{GjZt}|k8rQ>w91htGE1qTVCAa!nJ zlnv-y1p+BUI`bIyIr~)0DqlvyGp$zAJTU7yPpJE#6K%SR#;QejmPKK zc)92d^I=*P0vvBB8nAbUnq1zpM?X-EkwV9kfnTNhBa2qFv~K`K7ZwzJ08Xybzzk+$ z7Et7Xj1B<>zuSEOpuPj7NpUhRWbsiM-rZ85rq6;N8T593m|q`(hBqqPfkb`5>(Xlx zC}v$1gR$prvF9DJV&3MqBIc1I;Or3~4|K1znt6%TZe^tkpj{E>3?&GCxtY(x<*+(9 zdlOmtIWpy;xiukD)AzvRQiu%8o+5HRlLi_>I4PEH3=0M9&Bt1}$Mnr}NA(-!OC9TU zfPw!y7RMbGU|?yH2*dO^e@pBUd5ea0TCftbQvsH4V$1UKS$a!bvARujAV8VKf+FY6 z(};UHEdNaK!nbZ8#Dcm2(+BGC%K0CGxJeu4T9Ms#b3SKF)XS~lAZTCoOM8`FtNH1} zh4%yFeU*gNIv#*ocr{rwtQUQleJ*b~h-HAFcf#!oaX|VCb%rqn=ps# zE`PGOj=B-Bz}RJ%pVIiEvtfAw)>|`5_5yqa(5>$Hza6vERu6_EL~cB6WIL{%17~q z!x?1T2e2ek9D#uKe>$9R2m#vyd3VSfz!T9=+h$$>^{qzJ+xg*;2H;|+)Oz7xjmOGF z7OyRt;N z;7Knva-hQPXZL47-MBWn<`FItC@o2>5wnUwF~%(T!U4#&0V%_g zQZ^m_o(o9%dWR8^GGZg{6Vw`USkN7kO!6P$IDMVPP9_juwy9{s0X`qTsO9+`sc^u( z!We)5{td{t!w&9nu<@LK;#3*u*;osw+)V&lavvvs7*nISi7*E;kudd%9%U;k& zjaCj30u}@^@X(Xqi~K=qV<0C3vX(xeGZ~Q%a4gc%{N`gXy6wU)Ham}>Ks|ZZw}?Wt zRgq1N>Bt-3%1>qAi-S2O9xVH;)E>^81iTm+M-wxrmzl240MFcU)aq~|Cv_N(T-eK( zD$48TK;hLc%*AvnL;>oFfPXa?FnP(ksffh;e;sqm?XzE3a3e=#x8~`D!lnw044v9+hxVr{=By^aM=P`%Cf`ZVIo82e{xCzTtTktfK zsnWCm3SVn^x&og4%I3h!Zh~dncJb|!?dtmUu9?Ahg2p@^z^)*RnJ`Ax{P*g>JqqJh zV5ibeUs7N_Cl8+(I3O)$N#ekZ5&w5^cR%hqQznA)kkz#dDiQo%b`{_|u8X7%T3%_b z*cp+7335m(tPTm?FHHsrrK1_sav7<5U6pD{DJ^g6Mb@hOlp-64jLv|{zpCgSl=kB-*tkn1@z?EW+vH_wKFfEorSMJbp zmO_X~_)8@I#oM%xstL-FObfJ;wltO$0h<`dx;daNAui*Fnp%48)ZcQI7Px}^4T%e5 zIkJG=_JollO|EZSd(W~=AStjig(w6n|2Iqgi@NXO&VRtrEFs1#O}mL4PCAXj(JO#@ zwA{3PnIAQx1$>yy-pfgZv-A=ExuehKfN>xLnr`nE~P3tRAH5y76 zCFe04k#cmb)>{wm<+dh2afem$h=8>rTQDB`XruF2|206y*%omFNOjBUq1rr5oj$@u zoc)i6OS0@aDRTU1y)5J>N63JNTc3^&iGY(nJ(#QVJryTAdwi(HiCN~4O4mEcmd;ii zcdXI<{|@W!J@gW~LKa^yPeE&R!a3q^JzLI*+w9J_$2K|;lG z4$@$^;8U!SsA-{V^(G=jKC+MD{}4sHr@d;VvaI?x0%2G9r`S`3m#2J@Cn!k7z>Ekg zf)aUhP6z_IY|lV_y%m7pXWYgWB#FxZ2cy>?i(wgXa2n-v4#s(xD{%|R!*Z+x{eJ`_ z2Oxy1e4|Yu!&(cE9vRsS@;o(VJcyeX8Y8CbaY!UYnEh9)dTnKTu~qfO-VDIAeKV_B zQc{qtAE6=%u2|z-D#?uZsnsUuRE14o!d~P_@ct`3x)4$a#e- z`(pX7LGoAuhR^1lMqzcWk%`m728z0+Nj1{{S@*Ep@iw>3lK0nvB6kI0v%Py&t(&pZ7m}h^ebAL%GRo#D?GoMqaqEzRgvT5{#5x@NXT41 z+oylyA@d(9@wc)Y?5WLel=&QqT$HI!0c#<>N$24^I?QZSbFQ~@wyTjScup}9EO1vo zs?Jx`JCzP6TbtT3Ef;=>UEdngKq5r#e;}veQQ;7-{PTd5ytsu1)_W~nWyb9SaHRVh zw*ta^uo=$AZ?np2u)Be8yPp~!0@eMGSYE^u3vX81OBc3tEhY_a#IHu8<2n5VCPg-i zlbFoz!e_a;$=C6ZyaR{3v2PkxQ|nCrBbrKiwiA-PH(Hx`PGvxqn1zLf&>yvvYv5gC zW~jJ$sp2kYU~1yT;U6=#p*f-d;2H4djd~mjR%hID&w=o2Bqp9y6tcuz71q^(oHG6F zu*QEA|Mq5?si7-Wt6HDiHWC@kBE!$V!3FQjcghehELG6rWI}<1qf~S+xjvV|AiRVh zhMx8voalPjxk?1Qjr(uAg{3-PWoqdGzetRcE50-adLP@yLt%(5%xLKLvjo${*LrR< z1ay>)l$@eU9_#_;Mx%|WV-6m9Pp6KzmOPi)H(+eFfwoFQs_)=aMQp2 zO`H9Ec}E)JHliM;@AQM!N}h(rcR-Bl;WO}^zUag zI9nJxtIg7D`))qp+BbB?dJ&l&Q2raEpcN@Dhb+%R&qGeefQNr|(9;&bV&Dl^I4Oxm z5J8Z!VObJj!>f@vcr`pq9PqK{amxtli{CDr#;4&n()+zQ`i?l}H&6|#@d_w#HBbme ziRI*WF}Ur72SkK82X0ON3khIJ8&lTOhQFz1Yy^C>I{B8<9`&QUxx}Zspp{4*FY~_B zb0=gBjUNTxs*;;IXaeSo-YcqY*RgpJujI2^hKSVk38#DGjZbURFm2LazZJJ|%Gr_~ zO@zpJSO=Jw1AH-%>=ZA6Z2JQ|L!dH$`4pt5f$U$i7ia(cTudQo5SHYBb25`?^er*$ z;%T0MH|NHh(zKz4BXOmYfg0?2XT5~Yd<)(E<%iNSy_`}-X$yxL%eSFIxhy>P{5_J? zh5mdhkzL^pTy@*QHXWt`?e}L~gwwaRZNHB9s=2XAXBf27&qh;$F6Vf%cIHFRAH+&* z@R7MHa|4VPEj53Ba^{_!)08W8$yLhMkg8b^8}F7=p|QPS>dxjE-?Iw0?Jd5cj>{({ zOVPd_-6z&@FohSrQXhx5@kqFB9%m=mNWb@@>*XE+whHuwB+85I*wn0+{OI_1-oQCU zC7tegz7SWyc4gIcZL-jYGrf#3OgXvRrX&&E1o?SYp;CKRmbG&qJyIgv{)khvc6lgvyaPcjiTY&D-Q<|n5fr-4 z#ROm(&v|(4_26DQV}5PvJ8?(A{wW~8aw}}K#HC1nPF? z24yu`XX^|&(IwoZtIzQ&4EE@VUqt>WC0h5VO`tOHYB~UpGQeY11Zs01tC)=yar_NH z1^_|W@}ZJ)tfMsr=+~eP8m*m3Z8q~YDW_@|J$MMbxuSVN%#H??ATy?>a7yGnz}aM#|zO!N~zt4UzJ!F6gwnLz*S z_(BR77w0)Q3Lfd|BPRS0j3GWj{8X6*1(~K7H%HS8JVTB+iQwnQH)@{pJ6?B-d%-2} znI-p8)7rOgTNq4|ezCl4GE!e!32>#-dG)dfKRCw^=Bf~y_DBf!Q%zB_{qnTxitUHx z<3cCxIObE?8XioQbcrudt9b!zam1@Nfpn}NH<93XNkObBG&MRsRk1bhRD4g3Ck33Y zXvZQo5e8Lz`z@!*{dj+!QMvMN_-dhgzvn`3?!AXG47C~3 zOF7BBPt~wYH7&)^M$6zz>H14iy{R@%*I3^m%IL)@@+G0yW*L04 z_=j`#bkZe!ILBN#EMcYcXA8d+bw{+35Q#7RRswt^%Ou%_Zh07}%lT=V^@kjuSRXzy zr!dWW+$ohS>F4qG$Igp0W4ezg=W(pm$3k(>gDtxl>?Zf0wiF4?@~W&?h!yR5%Ak8X zRR_rHmFkTLi_{VNI*Y{j-7iulP?oF|jG2oIIz`My^%d{&NYY6|L`V4z=80lo{`}vnXtMnHVrq7k&e|WYq9@M4S=)tclm$ z*pXUX+5)S)MapaZdab3+^zkT-rKvZ2c+ht$PNZ0JogR7~(2c3T+$am#$X{3v;o#KD ztTT(*hcp}Wz6Ek5;2r#4MCprgJm_>;;@X;dv1>5DOE=%lUBdHV5g(damKSjJY)V89 zaHlF&_0nRILjZU^Bg5peExelYI4KPr>&Q0#5dS2RoBP&bd_hrj2kO-fM6L8I2yWf5 zYbt~^oA>O&H)EyR$i;S1Wpu4=>xhp=J}$A z^rJCy7XR~QROehd`@{5YD%n8A`OjLygb{7$y+G1E%&;3TJ+$Eg((P$^trkl|LySEa zz2y`ZxvJioW4C-~Xt_VVOKVklg<3I-R7oA(K4gkL@ZfnMw1TOm)0+tG%s2M{s{s3n z)&e;4M~J(v?wSih8NboIkQ7z%7ss2vw|XO%7%5^l=>3FCvgD5gr|Vq~nK;Z3`|j>* zygm@Wf?t`v*2RaGSa66T@LRB&d}+U3oROBm0_ibuqC6YX9?jWwF#p6-l_+2Na)NR{ z9X&rC+OQ`m&8ziY%lMRSFfpsHLfxU_Ok;zW1|Bj7YJ(U)D&{VlwUklCd+9*qR%s!6 zZuWbC*fZasCjP)qlO%G-yJn0tvE~EQN0S9qltj~$(Vo%${!o#+cMW~41EDg@w+%_; zHZ<6KkT5%yKJ%;Vt?}EXCiAjcj&@p2QNl?$0Kw z)~-2#jJbPX&O$L6-Y;t8Um8n9vN!P-{kjn$LlEz8UaZEB41WrFiN|$rt>uLKfLHoZ zL$H`qh|Ug6Bhw5>X9R6(BZ+?Lo31koF{i<+Mt?_vluD2RXm7PbB4g_OgQl`T8W;SqoFz~h1jm$2iH z4wX`^Gk8Ja8j^KDo6)E^%4|%ZuzkssM|S+5@NGY|DN0!!8W~!l0^cTk-1^5}uZ1~I z8&c>xq|XT|>s^qVxR-eu&HpM&ePdzyCNW}$Wh|<1Zs%J%r&gQucP(wrq-PJ_&foky zh*8Y0=-5QC?s;xH5^6{(1K3WE!(LM}-U}ArQ=#jTK34xub6EX*{Hpeuu%>TrjZ;p0 zMM&mK3yy@(rco06%~G0S5_y*=Whq|z^vlA6uhNMvUv&G1X+@r3GRz{>y)}FvXGKSt zZAOQ{3f9?vl&?($p2}Oem~0NVOsC7dTgQ9yTLX#L2T6>0(Aa!ietb)X>STPoL#qBH zf#5VPOSYrkfy>~Nq^qMB+TsSDcbJ?QG7&Em0uil%hv0|8D+Y2|IS&@U6NVK?`k)Kf zb5e3(m+ArH$qxM=T zEOeAmyBDQY#RO@6RZee8et*N7{LnN<(kBqz>;J*)6GkW`{TJ7gTIsi=-t(U>k-Wq< zPhqa+X02VBPf8tCF!JfSe)D+_qlP+g0GbOy5P)}yeX6Y=?;s5W;G zG}dCS&nJplr%gV6VZyMVzQ9ztr1F?s;re2 zLopm=S+DnUJ9qK#?cjQGkf^!M>sHd3FxB(Yye|QjTr4B-=WqQ?*9zP5i&gg#K%v|a zmb;_T)TXf3NX%8>&AOkTW-ewB&;G}6j8lM>5-|*V)|L!%+wPWRFZC+d6S|$O*kG`U zYe{ymh+E1fkJy0>Q_DXi=8lA|PZImvNvrU=XQk+=LvOtCO&nqwTzc6~m%X@-L|6z( zD{lnRNyadUL+Vxp}u5WG2b?j7B`+a3CLz#Sx?ysN=j+I5-xjws5OoY`jkA+bNI}tuq z@tZo#DNtJGsb5CyVytQ&zBELSuDB7%6rYE4#mHD;99nibnM>;#;?CK==lB!GMSq~6 zzxFo#ORb-@8UKrS7s0~I{s0!7xOI}MNs11mB~Z&I^ko}HYaRnv0b%xkG!;oSS>X0b zIn`3FG&@*-!~*m(7DTe}E@pX{;opxv9L5r)AX2*~SU8QLwBOW8vSFA{l~=L#T=Akw z>nga;(OPb^u%=la{LVdiJ&bLZBN4pyUN=hhrN4tkYO8DIh^LMi%Di`yO2Lh)mZk2- z%lYrWkTHMyli9L8Kl*B?P!U>aQzzF2 zrVZA~sSX3CdnDv5(_I#sB1thvbe%hgTa_S|&exnyxL|cHNr;F>_{Hz_k9X6Dp>@aj zN2-xrGZ%jlSpQ=Jh*#i9_0e!jklBlA1@)zH=ZLpO*RKwjy#0!rcmZT@0Y0!o@qklO zR1_E#DbAtm#;V^kn6NT(sfo{dO~wjWi`C*?B>$omy=2@Uj+ao{!po=#>tR`j_)j)f z;a0m5i|yyl8Rru$UJsEMJ(i``R{lbL?|iVx&*{`1NDvn^J<$6y+c&Brur+T^tB;Oak^;D7@YV~S6F@u-9=}_WD4DKi{Mfw&WYzeA7-)9?egVe z@rUEV5F*z*y2J0)_#aZRGGy<5uMwSi3OPzdKAJb9UFbdfME01$GX-_UnID_)5v2WM(O-_BYx2)YR~4FD^1Vss0hli_5Ttep^(>#ltLD$+ln?f@Xt zx8jN~J64ZUWW$Tc#?;pZ-}2@0?h-?@9jjbt&=%aC_(v=g<}=L5T}?x*i{-Pl4={Sg z77Q1ZZ>yN|-bD9u#%|2&=ybjnde3j^^&s%0sKx#q%GJ+cAT%G|g>*c2vRIzB%_~X## zZ{DS?A#)cGp@ESPfoFwvmj*{)44TSWeZBPrIpG0li}C(vgXjIR0PbWHKs9QAKD4%M z7Y~XDwwq@^eN4w&b2Gf-m)!A8|K12wxATwAiFfN+IvthT@2`Eul;SvrDUZ4D#?yZq z$=f`vvZO}M#Z~O$L#3fX8A~AjKdpEGF5NG2)emDxsWrl`%Xzy#tPew|MnjuoyFr<= z6-uo+e28O=|Bvk*Eg2lFCbo>g=lx|>UA9rlIalg0Z;rZu|1c>iEMy-qD0)c@4NzO~ z3`$MKymWp;_5hbU#FH@X{t}L0zjpM3Uk{e0{!WWN< zz+e5*+Q}m8JcZk^kDNhw;%F#8X6XCvlNpN3lIPN2M+rSX(|OsT#G!ebc5D%pm1eV| zeK9VdE$|sFxrd2(E=beYj(cuCV@g_gNcQQkiVL!kn*1mqAO%@t*6Ju)+Fu^jjOO)m zRJvEwxuGAk;G~>n5{(Jp_jzgP-OwnNe)uaa(zI=QXPrAGo8`8USXf*0Ag4c2&!kU=r6qnd9k$Z34BlSk3^^$;Q023Gs_<6|`J=yVmodQ)NlZvUOYGAPN0C*P+`7`cx;m`k?~|IR zKsM=A$5AF6w{+y1(TtJAg<_r!t(MYnrU7##gi2I@clEn;ZF4FRwKDjmQjU2&5?M|Z zSNb9VfVeeoJ5X9ocsd>Eq}2c~nc?Q%ZSj8-(eIM$J00g0gDxwL~9lPzu={eY_-%r?J>1pHFp^ z|Bk&`e+5l{q2~=i8vcT8v1B)aDLG29mV2_h>4%^lvjMv0KfgcrTj_(#<@S38YwzXS zRDF)CQWC8lkDqWPM*(P*{{CkL!DsRk30CR8-UKHN#wk{KwcHy8p}ljsWk>y3ZVimh zdj1>uzqlm~Eh15FP45M$sXH7|9V9?G=-H*6XsjMj`peYl@r0+lyNbZ3z1Dk%iRI+zsd zs-#D=oGAWZdv6(5br9`stAM0*cXy|>G?IdJY^0?-Hk(kok#0~zy1P3B1Oe&p?%2R4 zp1+=R-s3r+-*3;u#TQ^ME|^&}v*x$%wH7axST5lYl}x*C9k(!%GW_}6xc!z^+L0rN zz6aqRa?}Z>OY?p%TyQf=>*IT=8zaMxq9u+P&Aqo6-JYO-Eg~y%kcF*{i7dQeoZ3O5 zhuWcaL2GU?vYXaW`$F=7M+cCv`X2=Z{ zsCiRM>A2k!z6_mDUgWp!+ai@spS-|3Z{%(U*F;h;Dst!Xp!ASyZ1i$+W7hM1g(Pf> zYC+|w8R+{NSRs9-Let}^)dyr7`@*x?Zs!&4wN_m{i9w$ve!!qfAg=|kSzcDZBT)1A zEi@bcbdZ%R7zFHpM#Gb5!|42uioE${`~GC=T}fZuLl)fkj@_pi(e@cKgi5ears&RR zeeG1%nTjXcPKRo~iBXD;oj@&~x12;_tQRV!c4a?WZx~Y^xjK)X63eYAIH|;9S6wyY zrv3Jx2jejsJIs+~?S22LpGkdEObqgwWoo`Y{aNHwKfVFfgH)+hz$jTQWPc~+GP-J` zwn=oPI~%x@9$!y;u2X$6w%RgSG(Y#KbWZM#Lhv-1Vy@B6u;Da2kIC{}h zUC}_+3bz%#K={-{hNh{t&m&Ta-L79wUGOzAOJ{h3HdZ@O!vVrL`y5vy7*W2`mp61i zAy8y#1_nf_$1ABhP(MG_`u9a#r?k9pZ{>3cVDY228%sS?CW#0W5vD&EiIfK2E4eeu zs(K#sk~6r89n9cQnnqQmLtLq2-U?+7PMR05SUjGhUPH9X8U*xNU?2$jzos!?Kd9Kh z30f2{h5VG%F!T>a=BszDjmd7rttT(iz>Ivph=HKRuC`u>6MB9eGkU))kojvP7mH9p zoRB%-VUs&a5D78?95=qE6RHg7t{dlZ?><9Y`>bD|eTkSU=%-1B-F@IZkfS~icmAsP z8Ub$k2!+L|LdcMq?wmf1ddxAqwbkrqg!D7CxeY}Iu}92i06z=%>;g&zWxxT`SvmT> zzpw`C?OcQa|38#}e z1G~r6n|SO9ObkTdxw5NYU*_}E-NHra6B8UgQ`4mc5Iu{2503r_7Scl|5LT3sb*O6(_bw*`=vDpbe#eG$+8s;3)7ShIPluTFk zi*#^%o8)-~){^mD6@{d9?4U|~UF}AH*~SH+chcQ8g;0v{l2WlGo;vSrclU4Jxkn@+ zwa7-Z;DAZZjg<&PNAHsEyNC>gE$Oh;`50Lp)-Qg_ z>*Iif3c@iH-Cr7&zP14jFr_ga`ku&FsjTz5bU~*j{Xs8`V$$B^aSYE<&v#OOy{hry z-DkEvf}6jJD6iTk-d0ty(D6wm0mNiB15>)MpT=5>^83>yemKEV)fNVu4YkMNB$T>7J2X9B}i)nNr^=t-cG=KW_VE znhd!xsg#hwM(D7d5%K4*&FI;$X*DXV%*&KgrdSfqs8!|dwYdH9M?YVjVw?)$Schw$ zeem2L`U)+7rRFlhOyA&ko^*GloJgpBj zUrEx>_N0+jc0o;%Ngx7&X5r!0dauUplll>jlAC%LAK#v-=UZ-BBXLZA5p@h53ks_2b-C!r zaF}p$L?#ZtbOdDjY@GT>3rBM+jAR9P(!g;6+aT)CC_Y7#0z|#g z`akdaj{~(9u>;hZ>AYdf4i|`$ugiJbpn9^EaDJhImA&zXC34L9NRXbZltflxG9vXGraX01p)A+_2^WU5ePAj(BnL^_xJrhPw6Rg*|T6))$q*oh-? zVd=x<_;afJ=OkmFg!=6Wub1=hA==Xyj4)dz=u+cOdcgN^k^0S;AMo{Z$(JBQE2~(K zJ0Rk5@AYy+D`Ai}iyht9k_-G30qt5GBjl3}VReG$2GM|>ouJ8e)($K_dfeWb7d5R` z<74%HlF57zah`ScS3V~s8MSZtx@j7D->tq(y>m05>0e*Sv-x6aqAKc3et6q+CE~CR zyxxm?O*K80Z?kNE{41;iiIQiE8gmnK0tJ)?%`t``+>91oB-pRLlQ8u#GA-lAO$`yc zBr^AJ3nc8;_^`WIjRk~I7L7@_zD=^YGc;4lO|r@2)j`9W{Xf!(Yxn9@-MJe5`6cWs zOkHiHEA;F>tTK~<&v3J-Pl_!P+Rn1Jd|}t_|Dn>?R^ns37}e0OW3(wO;pUz5Y!Kyx zknx+!HDdw;1?R8x85Z8^m0^Nu?*S=KIls9YEkBu=Bq30GiC1&8YB%YDtLYbE(aZ#O z%+~3+i8lrKWzT);2v4R2sv_6xRp#KdFP_oE%$1zq(V7PIzC9QcEzCm{A?!~WG_7{D);8XIRbs;938Ft&2}cC$ zw7rsZSj*fVbA5y1R3TDQRR_D7qWh5tyaY(AdxUY9WIKIQQA#8e9VxE(OK<3cP|%R3 z!}`48(fksV(@vDlhrKqMpjiQ3wz}-FMKtMUE;|wWr>L-T0Zvab{ql4)O=(VgzX`nX zWU)@~p7%D&BjXu=M0UL_KqqCL5N(~EaeLdgLv^lW0>w4G59cAgYzw=|>RXl3=5)0} z2u>YL7B?7}j=ZQAV@j|jqCavomI2re~xKzo3yS08i*|9x2x|AQPw@VU9g=S9vD64Q1pc;sL1Z=?vo&r zK=H)J-O@h80rV>7JLQKMvma%=^fKfGSEQ|d%tsc)+Vel8$&(jx=}1=&X`_d)rs~A$ zL!4)3Gf13JDwH-eIV9Hi&padSUX;Tk?;KC6ZNuMvE-)$|mPwDi&2FPo5JQ#t{WCS7 z>o5~dhFlROvdu&Fv9jZxCH>n5eiOkOqQB8T5mn}MX8UD-%U@dYiqCWrV!wUz1W|K5 zd186{GWT>jKuqn zr2-o9e~Z(WOy_?jtKLAIo4bQ0LcwCKcIDJ&xD}t|;IRzr3ZLy-qUDwE)O>YFG2{<( zhk)w2=ub*(VJ2z#F8O1;e106x;4DDwmX!FI!hE!ty1Gi0Xpe^lmRU}$av(cWuR0=5 zmjz!BUUv!?`O}oVBPF+P-PB5szkOFTR`_{r!T>mmIkjh>Zq+V!xsJ8PdzT zc!^NQqisWjCMObtiskMm7QELkXD?N)Dj7}}$D?Z)- z5Im*NtJ4JLNRs(3)wHJ#r179UU3IL&DsfqL(jy(T7)RYpKnWKYQR!MchKCfn;e zN>?lXZ`;*Ub}xAPePB5K-ZjYCV+%+Hf+U=aG-y(fb@%}m2N%OM$cl&xU>nKaP>GWO6Y${k~nqYy2gKg)9@7)zM|96lLr}zm|&+?*s`v7_V z+wrW|Q_TPCiW6apZSbBGi+rHgdb%ncA3weI#khXZ3V(XkzLA@ns}ZQOP{!|%ikWOM zy)`i)l@&%Eb|Aq9hp6%?Z}MeKtC3xMzxOW$_QE?7RKdE5=UQaAH=J*(DL^DZJaY#F zW)wZ3q$gUMsMT=1CO%mr?}4<{l@xcYR@j8KV7%7Z&CJB>5v0&@#S&zoUpq%i?KyVd)S#faN#Kqb+6B_U zs$Y=FY9s~chk0vnUO{+@=CWQGPSQpjhyQ844JEJ=>lL~9xdVeT+=4Pz-a49C3nvF} zna|Jb=;UYpkjEjzn28`iopeJ)j&F zg*hm}Pr4c0R4eY5MuFPD$r^*iI|D2CUtVlABi@MBV?)r#u?-bAx|z@Oaz+;a^+15- zDHxu0aza8H?7XtkocMNC>1W#4N7l2+v=CK%NlbH&PHJXdNDt4b z@$-8jD@|9T+XD9W!LWskI8g zeBK=)V%EE5gY?R7z#RT5wd#9$Q}#E3$K4I$w7}ABsd(3U3yZwiIIE!ZuT5Jgh~n@O zK%E$ZF*JJGb?-I_S=FISJ(0Z(@hj`=B(mZBuy1{tN$M}Aq!&eyKSfBlyv|bg;@1XG zoR%uFR(^jk1PJ;pxC`L9S2G(=e=1!M(Z0h>R4nMhT{$_oJb{J?zO?< zt&~q@)XuVRSUKoZznbO5AuCo)g|&8?QO6@IUt3ByF+~w%DtVUA=d3-ka$yYx7BW+% z6XYo+a2pTxGQnyFrI~SxJ4j!5p-vm7BFNvCJ==efJ3Hvwm`%Sxtmd_EF)l;+=*I8V2uAj{KwU)>vup%?{K3u4H4s=C4~*cKaEfPF!@tzC zd4<6VHiTQ7zuzff?zJjU!FBu@YsxT6`C&o%^-J;YRr44UvI0#EtPGv#4F;=J_WZR! zo{>K%#eaAOf-=jIx?$Y0J0~3kQyAoLL->&OgAdFq;gkE^3=AS7T2G58R?Ea(zEa0( zdxSehMkwVp{=B6 z*ST|{;rKxBZ!~YkST;MMS`VMVhG4EJxr1=BnH*Z3pVL~a_k`LJn7~G7h~I?Rl@2{u zRGL$N57Ik&J;)(puBbK_r$Jvfi>+C&kqB68?K=vQE)H{ZMLpd_$`X7tMZ>u`?fT2Q z)k`{GCRTmy;bJu1Ix2nU;iQpjX6gFCB({8WMQhze>JlyQn_aGs&HB2FJjmu-)#=}4 z?o@UIfGh@pKU}^)+C$$SP<%M87Ej0Z(8P--_2VxXsowA8=s9uO5b0k1IuM01`i~G0hM}{p!!F66xaeUmPdx{pKG)WYU6u)x}A-l-)M<(Ent@@#Yu8-YH{?GXabC z@ql!LXRf8#2KU;q-RTW;J^<_onFvJ)2h zr#baNEK=wj7!vc?oBd?>FcJRcf|gp9;mlRhG9Q|66+UP><;j9Q#1)9lgM(*(6(oui zt3`isVbz1)rc--GPpUor!4VS&tUNrpN_?DYzq(7IkqG4-Cm)ppWofy$vHkIVFavMj z{ADnHGM%IGEQ!V%Y1uID+*pdlRoQ4$p_9H2p;P1~WYSd-o;OEr&!{GQN@XMP1oTr` z`&e6F+@YGm@_>OVdU~91POwV*h3B@jU`(vAxf`IYlk^j{e2E?8yvpT7jnI6HcHm$L%qk~p~7uQ*7e1m?_o9w33)634q zAgWM>vG_VG>sl){Bwaj{j5_0YG7J*&3=U7fnKZf*Gv}9AD0C+vc8mbqAdt4E@KraK7In3< zVN{7dU~Nl__U@Ey+3ASs>n@#Zg6B2hqk;DY0qY0jE}5qiyhDZ{iT5AZQ)Oj0Ofe7+ zhBZL7eQ#9psv$_A{s)joP^uge2qw`+tSyFSARClYh2yZnqszB! zSZ+jrZr#(nym`f^Q*}U9tt#G|S`u@*@FV0M{Zyx&;VZGNzHBE8+s1%RxW9T9pIx((XyaoDd8`wqBYLn5uN0vzyuKv4Cq8sixC zA4YA9iy+n`ArpmUtoST)Yvz~vlp{(}@Xi?DY$^=NvRtgcXgCHd_7?NK!0%2cx*6F! zwB)*$a?v_Ym?7llqtg~)d*qM4`A9V1Pjl%dvF?Xd*Q9MRZ*3~5?iyNdW@2VyeGkRr zqD2Db%=pAm`F-tg&S5%L7hVw>TUMq8xjU%%yWHHpfj1MBj$iOtaoe~&8ZNU^B<;zXsoETvl^&HdYG37w#qbwzr*m4dRI4ToZO=^n z_^Bv$!!7PPnhK{%L8o;zC{Z5fo-j@J$H3210tQXH?M~KQ91WaSX z;u{n*447g{L{ex($WB4&C2t(o?!L9J`20S!iqn*+<~xd9bY^1I)NG|-pA~x-+a-E1 z{PK*Yqmp*&4|>ET?xNelKFn~ zg8cl`A#^ArZLs*vtJ}2To;-qo;#K{B@Q9vl7*sSZoy7$#_sPvU4Rr{txNul0bbd+s zpx6PKD;a`gFoadUqAdxp>6yw?Wss!7y3N%e)F_R%0!1V(yff^2_dMs9%2}GI0fEz) zo}vthJg%|nx=u56*b8shL;#JPgtz*(HtApAVf(E#xuSu>bCDf-)4VQj?HvGOq$0S| z+~bqkY=Y35E=q4q+R8OJqbYwSCrfUyx!{^{fzllli_3;qeyycBLlI)_s$7i(!N4q_}n%oLWA@+(&wkT1z z?-DL1m3qN$s?z&v6JL9yV1zglh2Qsj(i~c8vcos06Q#U-hJDkw%$ejl1R=zA#NmRK zoGvAypn+V8BI>nPf%xVJ_6>D_;0k3QC{Qf_a8|GX&We0!+3F)@$xuuG2_hp|&23yb zf}b`Lo|7BUYmC6(m_zRk7vnozD=-piujqyU3ltXpOR}TjJ)Q?FBe_I#`2OsXCgmtc4dqHKu8C^c&Ov29?LSsX&wX+CXyGPCqCl z6`PF5i>bBf4e=Es_`Jp($ad9PnPt0}l|sH08ZOTB7Yz9?Um#0kbIEm(D8Tg$64WvE`pd_ z{gnbCF`WmC81UiHHY_7rztPgT{N9j717X#uJIe*2$fr1uX$iqGq<*-g6V7YxL0K~PQ|-5`kw2a~TWc)f=m5hwKt zJ?4FQ_mwdEYx0(mKh#9+J#(p2YgpA{E51VuQ@F?)xJL=4MEd;mMKxDCThLj`BLS+; z{S@3=w?E;=#;W{cKci0?k7+8KSAh%PgH`LwR5!O|ROB4!k)NopeYewCnV|xxLcKGzA&Vh{joho z{6|be>h`Am%ia~>ftyL0S!FisX&kwA9*2r|3_3ys1`ZQs|AwU3c;`KDS%qg!<}f}$Z8~ySWPm(E@0jx&IwfmF#?YX6!AovBMYFZ<^^7v%k z@Kp5yUG;%C@JQ3?m>0@Q4u%vMxFjd55@Lf@J2wpiDz|j>s3p|>ZG|xlW#Gnv@XJbLReg|lhqbB zfz|qEv>At|F#ic_R@K5!*9Nb`hsnF`qEt4gkj50d@0Q|x)%Y!Hg5C=0AD^hUG+jlA zlt-;+HUVjtL&(N%qNbPd$gOA#)LN>`fCY`>^@Z=3Uu%Y*w{BRbM^c6 zNsj2XUBMEc+fjqIDvK_fe2prD^lQzO=E%W%fl>I^w=N4`t=gsd{xC#X@DeE)f06A; z1HhkIQDmolOwPTT7w#*RbQqb{0WH3jS?+kOLEWIY=MxG8&gBuZ(9mI-r0Y^!G?&4y zca}O%;5=o6A!$PCd%1950qoM+_0G;*fgE!Bs8#NCnNXDe5-)P5Wk%-Lt275YcZB3cg7 zpI{bew{d1lzBM>NYX=z0@gqwGao9j4q5Zv>;Wx}=G<~;&7^mS0$6tHVpD8?RQDuurI+SS8>TInz?mQ z9ND&dyVtt#Zu>w{JD!%u)p?5Bd14Dw4UNawfGES@3G$Dw`;d-+i4f~-@kTI;SLK7(GDXa7iKb57JVvzN0enQV*rx)$ z1Ydyj_LceKh?0)M={dow1R{)yyr6sc(>tI7$=ku7!k>SDMkE39s2p^9PtGqZmNOkh z{oxyrm+NXj5hvpF5-F@Ks>@6)E)e0<(%I=|KZa33APkfKs!?pGV2XS@_H~3Gs7rcv zMYa>X&FX1iDrH}P{$!wOL6E6gyxv zCbj?l%}C~EV7uQ@_Y+Cy&?ufUF^*}S|Nrogbi+jqQ4~0+&6a$XZk$<+GA$WTbPNXi zx;=hW+@I_2)oiC}vfK9TKc4=GTftHH|2n2af(Va`Gy@+ykhDM?!R}TGS1P3QHN-N_ zv5c1J*g>yz{ikjyw*fPRkr1x5k>Z7HQDE_FfVt*M`ZN%}zP7w$*UCqwVf1RyGK6wz zIgKN_$HdyoPK}!$x_)=WkFXXz9IWWPdVw4t_JA{q4tn;C1mUf;ga(&iwx=>KSPL#e zo|Wt4!b>UY3gkRUcQDMw80z!+65WySMKl@P2SG;C{0Rsqw85rV%fJ6$|zBPPvu?0zcMcPc3PQ|des~rb=I&f=E%H;d$ z^mqE~%>i2;SxMI{pVBgsV$FD016KB}nWE0zb5aryqff)ei zQP0M!L-_G45-P$S`w(`8sBkO;Ynf)}vaqImOlH<_()9i@vZ4*d1-*3Ebs@f9 z&%;@G?XOZdyz5z#T{4R7 za1p7`7S&O3FM20!z(D(O7W$JfwQS-3Jh10qV<>(f+JK^&PP06|=Z$&8dv{;WxuIw% zrG)|6U~enWoM)O%6y{T#>)lX5$tdDnP3Z%?Fm341ATd~%BHjyv$BXJf{T#;%JrYz7 z2FR>V_{rea_?YMmgo#_{Y?(kg@mW{gdENQzp2#aI#{*l*O};Z18~dz=LDL`XjB6M* zt8`hPIn&AA5%yP3OtjfcN?Ts8q#U&J>bKXBUQok3)j#!$9*P*eO4js<44gatx{v~$ zj4BW!b6<(&NolFVMMqU^y8UgjUaY8-Xb{~9*MN1ch|rH<6gW9?0d%&-o-WX$bYHP6 zRceQ8c*kF$;1i6f)y=WZ?A!=VjGj82qX_+MyLV``^p#s@dx$|1LED{BmVhB}??hAz zcuSMS9L+&z_Tt_<)?jw46lz}n%@(km1Y=nWa}C{8MqDE7+IY_P86Q71R+I$?6E;i+ zcZIb<#oY?d>dXHCtHlN~o z^Gmg1k|%!(+{GN(HGPFTe4G-?tko;Z{^{KGcz)R3Q6KxcTQf28H=bWHKNy5LK3-N2 z1r9EibywxODWrx(3T#nYbWGvik=(?N-5JL8Vjenb@!fSbkG z%8Ug}UbeRSU=4fkH6gvO4sQlUpK8)MW~;uS-WEj4W`Rc6p{5Rh;rt9^Wi2%p?;=LlCL<)O(o1fEWIFsp~pM>brY$%EeZI zP~wOGyllT~GyHg58#JkB$VWcRg9|pO))#%KkA+VZR7r_}c2IPM=j|-K%r_33qN`vf4alDOBKXdB6j=eWzmb<2uHknSR3k4msO{p)Wg3L?Z z!dt!Jqr4Jf5``=;N7PL;mAKcZtU_Z_1E6_R9>7mk92Xfg3nXA~Y0pFNibgJj;NroH z7!A|c(J5V<`k%vm&WeAh7~4D_7HenZKlyaK&cbVQY0{pf&^d=>OE>XRgWz0hnY z&wD=^`tzY2!w*Yc#L>(>C>?(jhT3C}zWpXPu<+m(9bcM2Z5CfWjMGyDp({LPJ zD#rAUb><{9@CH+;Y4W!&bJ3l%8lPm_(aI}o+E?y~S(-<8$@pfA+pBQ2P)P{v(6m>^ z{}4ql!+w~JvxJMC`8{@|`vDzbhlD!_C;eWt;8^s)jjokMX@8yXNt#*iuFe#wWY+y+ zaiH#CY<;7QhS5qFZ*f6WAq6?#ORgXvWa)2>q9Z(H$R-)i<0Gg#n?dPyyg-KKlj6)I z7@w|_5H=_LEaIo}x9<|KFEuYdLyN-`Bv3g)f(#%(S;oIGTz2YSl$Qz{IJcD{*S}6{ zwidd3l)-fNZoUkjBu%_`3~%*hy{Rp5ykoPmoWkkZhV>j(#EG8Q79pkbV~UocJ&y6( zO!E(UQnYFP9)=6;}ADbw7LtRK#N}+P~>^=b>BI_0t19F*ZaV&5>%4c zygBT#4AD!b7S(5q=s)r^nf_jetD+Q58N+xx-#g@}V+v!=U-aI!d^6&3YGTyax;sM) z+#zJlQ>xDfSi!QSlN9X~!fuYP#Fe6aq0t}$eftGBJw*UDz*-yeS(LG|0&X}afm173mGNB2HDu=bMp7X@G#B<-+Ec)n{QEU-sqCSSu@X(JWwC0! zhSWwE^FApiyVld0VsO)rO!DYPwj2K#Td=mB^TS_@`IHuGyHp};T+EYR zJtd^{62O)O77Lm}{*5#!V}TE8b;Wk}o7ppXhtV5;Etz&$8jn@Nn(HUpfw1DQf=BX| z7?BCFEU-c^b2H%PLvr$%D`*j)_ZS7qgp?CD)Lmy$o(pwxT?VSb0!T8)n*zFw2^ex$ zZB3sCT~?y9H|;YPx+2>CraSM2WAyT*CyBw~%1Vy8vlhb7T;yr(??17o61SBy+Jn}6 zo|oCPVuPinG;$B+Uvygv=LqX-&5x6VQvFklBV9L3rd?sJQ^QlXfnzQb9ia8N_da;4 zqSP@)^uu*kwZY02$Gi3^_S5&=nlQSTFUmyl*)vn~;`VzifWvA5bGkm6Kzv~T$Uo9G zEJ=%%UwKm#zqi}NAMVh$EJ~aLE|vig;+02TQIx&F(`^8#iYgLZi!;+~BQM!RBF?&Y z&cMIGuUVTTsT7&bx+D8o&Y4lt)l#agyTBx4A3`b8)A!KybWlP*aibXy_2xK{CTo6B zvn6tlsj~%;sH^`G-vL4;X*7K|(;gVvQR7YbeDu5iT1S&cM%5xXj}j2BWjhu>Kj>rp z{fREWy&&32P?2Lg_Snw5HNiQ;IR=HZse8jaepVxurI*>CctN}Q=9$4`Ij%Q1Bs(w} zNEOsEwzR`Cb5T?QZMQpVs`YbMO#+f$f#ff4hu2VWq7nJ!^oS=-7k!4_aGl>4TqNo{ ziNuu1Q}g$yL(nurKqN_?Iiz*6HBjh+RynU`@EN8-zX!fW#b75GGsSdEPjo{jy|`G}7D z705K1W0|{%!UP`*`Wf8}XYT+S9Xgq0Mm_LRSb zUA6wkqZmb#$thPTXOA7&PRt41NY9Mi<`vXnl5g>7i~Y!{(yHnQn&-OJVcBdvld@cs z3IOZ5f=Qw;a=%a=-wpsr1ywFK^5o&KCHt4yc?cG0^r44M;;KNJqj5Kjp^l!7b*hCM zm}rPy^BmH3mIxuUT}}GP+Tw~`suCOWC;jJzHH9MD~|6v^mGCz1*^q6thGoF4xq zgJ!5c8pRP~`c4qP&p@{Q`iJURer@)@zU_9H^zwJoLzdUM$)2nv4Vxy5y^XRFt)I3a zXH%_)DHqBpzL7%`k8`MZu=O0YYtzo} zkWkzTM!3ldBol}yBcKu{f=guC;|CNXT zTcPCz-62~`56@C<6SHZEMr8nf67HbNdYMuxRmS$d8f2o3)6%A~kI1HLNLt{LS9i{s z;CeA53Z$Bl^(tH>z`DyhV0bDBiO9^VHGzL1Lj2JG=j2B%OUYGA!NZ(!;Oy*OlqO$b zaZuFb3ch_Cq{~H$pJXE6shP?;*=MCI$n7#VbZ1*GU4Uo2K4jv(Zxp#^B4+4Ko{eBQ zFla6iiQ^iOKK81yq9r`DgU>IBGT$!v-}?%vPOu&qW3o52a%qGJZ*`Mj5v=KYn0hCj z#Vb4!y>}uUGuN$s_>ktJKz}}6>|Dux`Ao7K!{q%4R;iu`=7FEs{k;r`Mt#SaAVCWY z&>z1tleAOl_T&V-x@%&=iY@$1|2_&nk;7owc&4St4q}G@GA@KG71rst_s2#~of}k% z`c(1W1GL!G8+H^Os^|=9>eNpB6xir^qf)t}>SsHH%lH5359J&y-d8e>1CI9*mR=Qg?r~TT?jZS)F&MSPMcbH*zz1-5NZPG*t;K z&#@4csJhBF*o#Ue8s@E`FmfaBou!GDHBrYZ6MV5B1RyxdI5X`hI<4A#A^V8O$Nkr+JI_-gmpYi7>*1otkpmHOZml)8>O^_QG?5glU3*BcXpVV(UibD!EJS7?}of zLsNhna7$}7VSQQ?czEbz;l6~5yUa&A+3TP61lvwc2m|vf!o`>q3P@50QcztZbk^N7Vk2=jd;;f}W>lUvf);GPjh_06FDo{`o ze`WU9z`G2m_nEFP7to;G$4$`j(xJgu5y~=4mVkaE5wyU%gAcD@ZxuYNw#tB8sZ@d8 zI1A3!^<+StqWeMM1NZp+hdnMibAHMG`7rE+Vc;!_j1mHLgpVEgxa$JxuMHe*0V+Q$ z>HJQ9Ul38r(SXEKpVi-h#VT{deopG0!=5?3T19XawanHF%E0oXp2eD>t&txrTcPD}+a+62#%&59kfXrIT#=M>s==f%oR6xW z4|rlqR0?Cru=UhUr~F^r>X~f&1;uFj1&uou3L5L~0<*5JoNZ5;OysC8<|mrE0~(R} zBv8SOjrkdklI>dZpX(c!NyXKaCL$;H|A2%4Uv#T_Xo1_yNMY=)vRt>Dkkmw5_#O~SEzntYode#!tCGdfR-(k!Fk2+?e+2!ckaIXPl zJh-r&RjSCdQr1Py@+t$Fc{1@dilJ=}g>aa=t!>1ioMkkyR(~owBBP=NQI7$= ztIb!$x5@ul_J88++x?l$sg;~~dqs5+XBE?Hk-A4cC6nhItF9);yG@Gn^Cf&t=lv~q zTd;d4mm{VIASI8jP1JRt)b}TUn;iK91;DE$8T_LN9e>;$Cyvl+Bv#Mjr+A(KlpkdWtv>J9yHGH%=vmX zi=MY%s0t|9%+dUrs*3NjcSll~SL*nC!M;AESQDM~kQY;oN*djhO%#U^H#w-sUDvoF z@>S|~DVD7dFj=O?={Jh`2tkru(U-9Ae1U&XZabhB1AyijKXnTFu2n1P$(t%{ZY3Lh z0zB4-s~|;gPUymt*X{Ntxb|(Vz{LtOp&)Z{{n9SueUedRW5SEauc%9IhW*}HJ=rGd zDUXO9rAe77HiRAdM6>BEq>U2aL?S*monZL`P<;|$zSXMaK@(XM#LxlLf3}GWyVhb{ z7^>AQxu@=YjdwI|=8VzP!wABITM`gm`*3ia8~U`x$gwj~jdE-DY(Fg@es!Z8ODz$OInQ@G|z!N7->Rx6cxin z@Qa6X-|eHvFHM}JPGkOKE<0U4a@2uYy;Uh== zgW3Hp*W}+hH6+Xp2F9|l31w<2Vva>6;euHYHB^dvzrLGy(aA5qgyr%5eO3IOVTsd> z4mGNHLRd}|C@(HPgVxn zAW%kJl&vsH%>S(3^LN(%OcC%|_U!Nd{omgjNBIL8{P)-YZ^++yg8%<(UT*yQ;mN#) TggZ;00UvK=RHVx#KluM2B(zT> literal 106139 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
+  Reconfiguring process of Pgpool +
Fig: Reconfiguring process of Pgpool
+
+ +The Reconfiguring Pgpool process consists of the following steps: + +1. At first, a user creates a `Pgpool` Custom Resource (CR). + +2. `KubeDB` Provisioner operator watches the `Pgpool` CR. + +3. When the operator finds a `Pgpool` CR, it creates `PetSet` and related necessary stuff like secrets, services, etc. + +4. Then, in order to reconfigure of the `Pgpool`, the user creates a `PgpoolOpsRequest` CR with desired information. + +5. `KubeDB` Ops-manager operator watches the `PgpoolOpsRequest` CR. + +6. When it finds a `PgpoolOpsRequest` CR, it pauses the `Pgpool` object which is referred from the `PgpoolOpsRequest`. So, the `KubeDB` Provisioner operator doesn't perform any operations on the `Pgpool` object during the reconfiguring process. + +7. Then the `KubeDB` Ops-manager operator will replace the existing configuration with the new configuration provided or merge the new configuration with the existing configuration according to the `PgpoolOpsRequest` CR. + +8. Then the `KubeDB` Ops-manager operator will restart the related PetSet Pods so that they restart with the new configuration defined in the `PgpoolOpsRequest` CR. + +9. After the successful reconfiguring of the `Pgpool`, the `KubeDB` Ops-manager operator resumes the `Pgpool` object so that the `KubeDB` Provisioner operator resumes its usual operations. + +In the next docs, we are going to show a step-by-step guide on reconfiguring Pgpool database components using `PgpoolOpsRequest` CRD. \ No newline at end of file diff --git a/docs/guides/pgpool/reconfigure/reconfigure-pgpool.md b/docs/guides/pgpool/reconfigure/reconfigure-pgpool.md new file mode 100644 index 0000000000..e6936a191c --- /dev/null +++ b/docs/guides/pgpool/reconfigure/reconfigure-pgpool.md @@ -0,0 +1,759 @@ +--- +title: Reconfigure Standalone Pgpool Database +menu: + docs_{{ .version }}: + identifier: pp-reconfigure-pgpool + name: Pgpool Reconfigure + parent: pp-reconfigure + weight: 20 +menu_name: docs_{{ .version }} +section_menu_id: guides +--- + +> New to KubeDB? Please start [here](/docs/README.md). + +# Reconfigure Pgpool + +This guide will show you how to use `KubeDB` Ops-manager operator to reconfigure a Pgpool. + +## Before You Begin + +- At first, you need to have a Kubernetes cluster, and the `kubectl` command-line tool must be configured to communicate with your cluster. + +- Install `KubeDB` Provisioner and Ops-manager operator in your cluster following the steps [here](/docs/setup/README.md). + +- You should be familiar with the following `KubeDB` concepts: + - [Pgpool](/docs/guides/pgpool/concepts/pgpool.md) + - [PgpoolOpsRequest](/docs/guides/pgpool/concepts/opsrequest.md) + - [Reconfigure Overview](/docs/guides/pgpool/reconfigure/overview.md) + +To keep everything isolated, we are going to use a separate namespace called `demo` throughout this tutorial. + +```bash +$ kubectl create ns demo +namespace/demo created +``` + +> **Note:** YAML files used in this tutorial are stored in [docs/examples/pgpool](/docs/examples/pgpool) directory of [kubedb/docs](https://github.com/kubedb/docs) repository. + +### Prepare Postgres +For a Pgpool surely we will need a Postgres server so, prepare a KubeDB Postgres cluster using this [tutorial](/docs/guides/postgres/clustering/streaming_replication.md), or you can use any externally managed postgres but in that case you need to create an [appbinding](/docs/guides/pgpool/concepts/appbinding.md) yourself. In this tutorial we will use 3 node Postgres cluster named `ha-postgres`. + + +Now, we are going to deploy a `Pgpool` using a supported version by `KubeDB` operator. Then we are going to apply `PgpoolOpsRequest` to reconfigure its configuration. + +### Prepare Pgpool + +Now, we are going to deploy a `Pgpool` with version `4.5.0`. + +### Deploy Pgpool + +At first, we will create `pgpool.conf` file containing required configuration settings. + +```ini +$ cat pgpool.conf +max_pool = 60 +``` +Here, `max_pool` is set to `60`, whereas the default value is `numberof replicas * 15`. + +Now, we will create a secret with this configuration file. + +```bash +$ kubectl create secret generic -n demo pp-custom-config --from-file=./pgpool.conf +secret/pp-custom-config created +``` + +In this section, we are going to create a Pgpool object specifying `spec.configSecret` field to apply this custom configuration. Below is the YAML of the `Pgpool` CR that we are going to create, + +```yaml +apiVersion: kubedb.com/v1alpha2 +kind: Pgpool +metadata: + name: pp-custom + namespace: demo +spec: + version: "4.5.0" + replicas: 1 + configSecret: + name: pp-custom-config + postgresRef: + name: ha-postgres + namespace: demo + deletionPolicy: WipeOut +``` + +Let's create the `Pgpool` CR we have shown above, + +```bash +$ kubectl create -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/pgpool/reconfigure/pp-custom-config.yaml +pgpool.kubedb.com/pp-custom created +``` + +Now, wait until `pp-custom` has status `Ready`. i.e, + +```bash +$ kubectl get pp -n demo +NAME TYPE VERSION STATUS AGE +pp-custom kubedb.com/v1alpha2 4.5.0 Ready 112s +``` + +Now, we will check if the pgpool has started with the custom configuration we have provided. + +Now, you can exec into the pgpool pod and find if the custom configuration is there, + +```bash +$ kubectl exec -it -n demo pp-custom-0 -- bash +pp-custom-0:/$ cat opt/pgpool-II/etc/pgpool.conf +backend_hostname0 = 'ha-postgres.demo.svc' +backend_port0 = 5432 +backend_weight0 = 1 +backend_flag0 = 'ALWAYS_PRIMARY|DISALLOW_TO_FAILOVER' +backend_hostname1 = 'ha-postgres-standby.demo.svc' +backend_port1 = 5432 +backend_weight1 = 1 +backend_flag1 = 'DISALLOW_TO_FAILOVER' +max_pool = 60 +enable_pool_hba = on +listen_addresses = * +port = 9999 +socket_dir = '/var/run/pgpool' +pcp_listen_addresses = * +pcp_port = 9595 +pcp_socket_dir = '/var/run/pgpool' +log_per_node_statement = on +sr_check_period = 0 +health_check_period = 0 +backend_clustering_mode = 'streaming_replication' +num_init_children = 5 +child_life_time = 300 +child_max_connections = 0 +connection_life_time = 0 +client_idle_limit = 0 +connection_cache = on +load_balance_mode = on +ssl = 'off' +failover_on_backend_error = 'off' +log_min_messages = 'warning' +statement_level_load_balance = 'off' +memory_cache_enabled = 'off' +memqcache_oiddir = '/tmp/oiddir/' +allow_clear_text_frontend_auth = 'false' +failover_on_backend_error = 'off' +pp-custom-0:/$ exit +exit +``` + +As we can see from the configuration of running pgpool, the value of `max_pool` has been set to `60`. + +### Reconfigure using new secret + +Now we will reconfigure this pgpool to set `max_pool` to `50`. + +Now, we will edit the `pgpool.conf` file containing required configuration settings. + +```ini +$ cat pgpool.conf +max_pool=50 +``` + +Then, we will create a new secret with this configuration file. + +```bash +$ kubectl create secret generic -n demo new-custom-config --from-file=./pgpool.conf +secret/new-custom-config created +``` + +#### Create PgpoolOpsRequest + +Now, we will use this secret to replace the previous secret using a `PgpoolOpsRequest` CR. The `PgpoolOpsRequest` yaml is given below, + +```yaml +apiVersion: ops.kubedb.com/v1alpha1 +kind: PgpoolOpsRequest +metadata: + name: ppops-reconfigure + namespace: demo +spec: + type: Reconfigure + databaseRef: + name: pp-custom + configuration: + configSecret: + name: new-custom-config + timeout: 5m + apply: IfReady +``` + +Here, + +- `spec.databaseRef.name` specifies that we are reconfiguring `pp-csutom` pgpool. +- `spec.type` specifies that we are performing `Reconfigure` on our pgpool. +- `spec.configuration.configSecret.name` specifies the name of the new secret. +- Have a look [here](/docs/guides/pgpool/concepts/opsrequest.md#spectimeout) on the respective sections to understand the `timeout` & `apply` fields. + +Let's create the `PgpoolOpsRequest` CR we have shown above, + +```bash +$ kubectl apply -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/pgpool/reconfigure/ppops-reconfigure.yaml +pgpoolopsrequest.ops.kubedb.com/ppops-reconfigure created +``` + +#### Verify the new configuration is working + +If everything goes well, `KubeDB` Ops-manager operator will update the `configSecret` of `Pgpool` object. + +Let's wait for `PgpoolOpsRequest` to be `Successful`. Run the following command to watch `PgpoolOpsRequest` CR, + +```bash +$ watch kubectl get pgpoolopsrequest -n demo +Every 2.0s: kubectl get pgpoolopsrequest -n demo +NAME TYPE STATUS AGE +ppops-reconfigure Reconfigure Successful 63s +``` + +We can see from the above output that the `PgpoolOpsRequest` has succeeded. If we describe the `PgpoolOpsRequest` we will get an overview of the steps that were followed to reconfigure the pgpool. + +```bash +$ kubectl describe pgpoolopsrequest -n demo ppops-reconfigure +Name: ppops-reconfigure +Namespace: demo +Labels: +Annotations: +API Version: ops.kubedb.com/v1alpha1 +Kind: PgpoolOpsRequest +Metadata: + Creation Timestamp: 2024-07-30T05:42:56Z + Generation: 1 + Resource Version: 95239 + UID: 54a12624-048c-49a6-b852-6286da587535 +Spec: + Apply: IfReady + Configuration: + Config Secret: + Name: new-custom-config + Database Ref: + Name: pp-custom + Timeout: 5m + Type: Reconfigure +Status: + Conditions: + Last Transition Time: 2024-07-30T05:42:56Z + Message: Pgpool ops-request has started to `Reconfigure` the Pgpool nodes + Observed Generation: 1 + Reason: Reconfigure + Status: True + Type: Reconfigure + Last Transition Time: 2024-07-30T05:42:59Z + Message: Successfully paused database + Observed Generation: 1 + Reason: DatabasePauseSucceeded + Status: True + Type: DatabasePauseSucceeded + Last Transition Time: 2024-07-30T05:43:00Z + Message: Successfully updated PetSet + Observed Generation: 1 + Reason: UpdatePetSets + Status: True + Type: UpdatePetSets + Last Transition Time: 2024-07-30T05:43:00Z + Message: Successfully updated Pgpool + Observed Generation: 1 + Reason: UpdateDatabase + Status: True + Type: UpdateDatabase + Last Transition Time: 2024-07-30T05:43:45Z + Message: Successfully Restarted Pods With Resources + Observed Generation: 1 + Reason: RestartPods + Status: True + Type: RestartPods + Last Transition Time: 2024-07-30T05:43:05Z + Message: get pod; ConditionStatus:True; PodName:pp-custom-0 + Observed Generation: 1 + Status: True + Type: GetPod--pp-custom-0 + Last Transition Time: 2024-07-30T05:43:05Z + Message: evict pod; ConditionStatus:True; PodName:pp-custom-0 + Observed Generation: 1 + Status: True + Type: EvictPod--pp-custom-0 + Last Transition Time: 2024-07-30T05:43:40Z + Message: check pod running; ConditionStatus:True; PodName:pp-custom-0 + Observed Generation: 1 + Status: True + Type: CheckPodRunning--pp-custom-0 + Last Transition Time: 2024-07-30T05:43:45Z + Message: Successfully completed the reconfigure for Pgpool + Observed Generation: 1 + Reason: Successful + Status: True + Type: Successful + Observed Generation: 1 + Phase: Successful +Events: + Type Reason Age From Message + ---- ------ ---- ---- ------- + Normal Starting 100s KubeDB Ops-manager Operator Start processing for PgpoolOpsRequest: demo/ppops-reconfigure + Normal Starting 100s KubeDB Ops-manager Operator Pausing Pgpool databse: demo/pp-custom + Normal Successful 100s KubeDB Ops-manager Operator Successfully paused Pgpool database: demo/pp-custom for PgpoolOpsRequest: ppops-reconfigure + Normal UpdatePetSets 96s KubeDB Ops-manager Operator Successfully updated PetSet + Normal UpdatePetSets 96s KubeDB Ops-manager Operator Successfully updated PetSet + Normal UpdateDatabase 96s KubeDB Ops-manager Operator Successfully updated Pgpool + Warning get pod; ConditionStatus:True; PodName:pp-custom-0 91s KubeDB Ops-manager Operator get pod; ConditionStatus:True; PodName:pp-custom-0 + Warning evict pod; ConditionStatus:True; PodName:pp-custom-0 91s KubeDB Ops-manager Operator evict pod; ConditionStatus:True; PodName:pp-custom-0 + Warning check pod running; ConditionStatus:False; PodName:pp-custom-0 86s KubeDB Ops-manager Operator check pod running; ConditionStatus:False; PodName:pp-custom-0 + Warning check pod running; ConditionStatus:True; PodName:pp-custom-0 56s KubeDB Ops-manager Operator check pod running; ConditionStatus:True; PodName:pp-custom-0 + Normal RestartPods 51s KubeDB Ops-manager Operator Successfully Restarted Pods With Resources + Normal Starting 51s KubeDB Ops-manager Operator Resuming Pgpool database: demo/pp-custom + Normal Successful 51s KubeDB Ops-manager Operator Successfully resumed Pgpool database: demo/pp-custom for PgpoolOpsRequest: ppops-reconfigure +``` + +Now let's exec into the pgpool pod and check the new configuration we have provided. + +```bash +$ kubectl exec -it -n demo pp-custom-0 -- bash +pp-custom-0:/$ cat opt/pgpool-II/etc/pgpool.conf +backend_hostname0 = 'ha-postgres.demo.svc' +backend_port0 = 5432 +backend_weight0 = 1 +backend_flag0 = 'ALWAYS_PRIMARY|DISALLOW_TO_FAILOVER' +backend_hostname1 = 'ha-postgres-standby.demo.svc' +backend_port1 = 5432 +backend_weight1 = 1 +backend_flag1 = 'DISALLOW_TO_FAILOVER' +listen_addresses = * +log_per_node_statement = on +num_init_children = 5 +max_pool = 50 +child_life_time = '300' +child_max_connections = 0 +connection_life_time = 0 +client_idle_limit = 0 +connection_cache = on +load_balance_mode = on +log_min_messages = 'warning' +statement_level_load_balance = 'off' +memory_cache_enabled = 'off' +enable_pool_hba = on +port = 9999 +socket_dir = '/var/run/pgpool' +pcp_listen_addresses = * +pcp_port = 9595 +pcp_socket_dir = '/var/run/pgpool' +sr_check_period = 0 +health_check_period = 0 +backend_clustering_mode = 'streaming_replication' +ssl = 'off' +failover_on_backend_error = 'off' +memqcache_oiddir = '/tmp/oiddir/' +allow_clear_text_frontend_auth = 'false' +failover_on_backend_error = 'off' +pp-custom-0:/$ exit +exit +``` + +As we can see from the configuration of running pgpool, the value of `max_pool` has been changed from `60` to `50`. So the reconfiguration of the pgpool is successful. + + +### Reconfigure using apply config + +Now we will reconfigure this pgpool again to set `max_pool` to `75`. This time we won't use a new secret. We will use the `applyConfig` field of the `PgpoolOpsRequest`. This will merge the new config in the existing secret. + +#### Create PgpoolOpsRequest + +Now, we will use the new configuration in the `data` field in the `PgpoolOpsRequest` CR. The `PgpoolOpsRequest` yaml is given below, + +```yaml +apiVersion: ops.kubedb.com/v1alpha1 +kind: PgpoolOpsRequest +metadata: + name: ppops-reconfigure-apply + namespace: demo +spec: + type: Reconfigure + databaseRef: + name: pp-custom + configuration: + applyConfig: + pgpool.conf: |- + max_pool = 75 + timeout: 5m + apply: IfReady +``` + +Here, + +- `spec.databaseRef.name` specifies that we are reconfiguring `pp-custom` pgpool. +- `spec.type` specifies that we are performing `Reconfigure` on our pgpool. +- `spec.configuration.applyConfig` specifies the new configuration that will be merged in the existing secret. + +Let's create the `PgpoolOpsRequest` CR we have shown above, + +```bash +$ kubectl apply -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/pgpool/reconfigure/ppops-reconfigure-apply.yaml +pgpoolopsrequest.ops.kubedb.com/ppops-reconfigure-apply created +``` + +#### Verify the new configuration is working + +If everything goes well, `KubeDB` Ops-manager operator will merge this new config with the existing configuration. + +Let's wait for `PgpoolOpsRequest` to be `Successful`. Run the following command to watch `PgpoolOpsRequest` CR, + +```bash +$ watch kubectl get pgpoolopsrequest -n demo +Every 2.0s: kubectl get pgpoolopsrequest -n demo +NAME TYPE STATUS AGE +ppops-reconfigure Reconfigure Successful 9m15s +ppops-reconfigure-apply Reconfigure Successful 53s +``` + +We can see from the above output that the `PgpoolOpsRequest` has succeeded. If we describe the `PgpoolOpsRequest` we will get an overview of the steps that were followed to reconfigure the pgpool. + +```bash +$ kubectl describe pgpoolopsrequest -n demo ppops-reconfigure-apply +Name: ppops-reconfigure-apply +Namespace: demo +Labels: +Annotations: +API Version: ops.kubedb.com/v1alpha1 +Kind: PgpoolOpsRequest +Metadata: + Creation Timestamp: 2024-07-30T05:51:18Z + Generation: 1 + Resource Version: 95874 + UID: 92b0f18c-a329-4bb7-85d0-ef66f32bf57a +Spec: + Apply: IfReady + Configuration: + Apply Config: + pgpool.conf: max_pool = 75 + Database Ref: + Name: pp-custom + Timeout: 5m + Type: Reconfigure +Status: + Conditions: + Last Transition Time: 2024-07-30T05:51:18Z + Message: Pgpool ops-request has started to `Reconfigure` the Pgpool nodes + Observed Generation: 1 + Reason: Reconfigure + Status: True + Type: Reconfigure + Last Transition Time: 2024-07-30T05:51:21Z + Message: Successfully paused database + Observed Generation: 1 + Reason: DatabasePauseSucceeded + Status: True + Type: DatabasePauseSucceeded + Last Transition Time: 2024-07-30T05:51:21Z + Message: Successfully updated PetSet + Observed Generation: 1 + Reason: UpdatePetSets + Status: True + Type: UpdatePetSets + Last Transition Time: 2024-07-30T05:51:22Z + Message: Successfully updated Pgpool + Observed Generation: 1 + Reason: UpdateDatabase + Status: True + Type: UpdateDatabase + Last Transition Time: 2024-07-30T05:52:07Z + Message: Successfully Restarted Pods With Resources + Observed Generation: 1 + Reason: RestartPods + Status: True + Type: RestartPods + Last Transition Time: 2024-07-30T05:51:27Z + Message: get pod; ConditionStatus:True; PodName:pp-custom-0 + Observed Generation: 1 + Status: True + Type: GetPod--pp-custom-0 + Last Transition Time: 2024-07-30T05:51:27Z + Message: evict pod; ConditionStatus:True; PodName:pp-custom-0 + Observed Generation: 1 + Status: True + Type: EvictPod--pp-custom-0 + Last Transition Time: 2024-07-30T05:52:02Z + Message: check pod running; ConditionStatus:True; PodName:pp-custom-0 + Observed Generation: 1 + Status: True + Type: CheckPodRunning--pp-custom-0 + Last Transition Time: 2024-07-30T05:52:07Z + Message: Successfully completed the reconfigure for Pgpool + Observed Generation: 1 + Reason: Successful + Status: True + Type: Successful + Observed Generation: 1 + Phase: Successful +Events: + Type Reason Age From Message + ---- ------ ---- ---- ------- + Normal Starting 77s KubeDB Ops-manager Operator Start processing for PgpoolOpsRequest: demo/ppops-reconfigure-apply + Normal Starting 77s KubeDB Ops-manager Operator Pausing Pgpool databse: demo/pp-custom + Normal Successful 77s KubeDB Ops-manager Operator Successfully paused Pgpool database: demo/pp-custom for PgpoolOpsRequest: ppops-reconfigure-apply + Normal UpdatePetSets 74s KubeDB Ops-manager Operator Successfully updated PetSet + Normal UpdatePetSets 73s KubeDB Ops-manager Operator Successfully updated PetSet + Normal UpdateDatabase 73s KubeDB Ops-manager Operator Successfully updated Pgpool + Warning get pod; ConditionStatus:True; PodName:pp-custom-0 68s KubeDB Ops-manager Operator get pod; ConditionStatus:True; PodName:pp-custom-0 + Warning evict pod; ConditionStatus:True; PodName:pp-custom-0 68s KubeDB Ops-manager Operator evict pod; ConditionStatus:True; PodName:pp-custom-0 + Warning check pod running; ConditionStatus:False; PodName:pp-custom-0 63s KubeDB Ops-manager Operator check pod running; ConditionStatus:False; PodName:pp-custom-0 + Warning check pod running; ConditionStatus:True; PodName:pp-custom-0 33s KubeDB Ops-manager Operator check pod running; ConditionStatus:True; PodName:pp-custom-0 + Normal RestartPods 28s KubeDB Ops-manager Operator Successfully Restarted Pods With Resources + Normal Starting 28s KubeDB Ops-manager Operator Resuming Pgpool database: demo/pp-custom + Normal Successful 28s KubeDB Ops-manager Operator Successfully resumed Pgpool database: demo/pp-custom for PgpoolOpsRequest: ppops-reconfigure-apply +``` + +Now let's exec into the pgpool pod and check the new configuration we have provided. + +```bash +$ kubectl exec -it -n demo pp-custom-0 -- bash +pp-custom-0:/$ cat opt/pgpool-II/etc/pgpool.conf +memory_cache_enabled = 'off' +num_init_children = 5 +pcp_socket_dir = '/var/run/pgpool' +port = '9999' +enable_pool_hba = on +log_min_messages = 'warning' +pcp_port = '9595' +sr_check_period = 0 +ssl = 'off' +backend_weight1 = 1 +load_balance_mode = on +backend_weight0 = 1 +backend_port0 = '5432' +connection_cache = on +backend_hostname1 = 'ha-postgres-standby.demo.svc' +health_check_period = 0 +memqcache_oiddir = '/tmp/oiddir/' +statement_level_load_balance = 'off' +allow_clear_text_frontend_auth = 'false' +log_per_node_statement = on +backend_hostname0 = 'ha-postgres.demo.svc' +backend_flag1 = 'DISALLOW_TO_FAILOVER' +listen_addresses = * +failover_on_backend_error = 'off' +pcp_listen_addresses = * +child_max_connections = 0 +socket_dir = '/var/run/pgpool' +backend_flag0 = 'ALWAYS_PRIMARY|DISALLOW_TO_FAILOVER' +backend_port1 = '5432' +backend_clustering_mode = 'streaming_replication' +connection_life_time = 0 +child_life_time = '300' +max_pool = 75 +client_idle_limit = 0 +failover_on_backend_error = 'off' +pp-custom-0:/$ exit +exit +``` + +As we can see from the configuration of running pgpool, the value of `max_pool` has been changed from `50` to `75`. So the reconfiguration of the pgpool using the `applyConfig` field is successful. + + +### Remove config + +Now we will reconfigure this pgpool to remove the custom config provided and get it back to the default config. We will use the `removeCustomConfig` field of the `PgpoolOpsRequest`. This will remove all the custom config provided and get the pgpool back to the default config. + +#### Create PgpoolOpsRequest + +Now, we will use the `removeCustomConfig` field in the `PgpoolOpsRequest` CR. The `PgpoolOpsRequest` yaml is given below, + +```yaml +apiVersion: ops.kubedb.com/v1alpha1 +kind: PgpoolOpsRequest +metadata: + name: ppops-reconfigure-remove + namespace: demo +spec: + type: Reconfigure + databaseRef: + name: pp-custom + configuration: + removeCustomConfig: true + timeout: 5m + apply: IfReady +``` + +Here, + +- `spec.databaseRef.name` specifies that we are reconfiguring `pp-custom` pgpool. +- `spec.type` specifies that we are performing `Reconfigure` on our pgpool. +- `spec.configuration.removeCustomConfig` specifies for boolean values to remove custom configuration. + +Let's create the `PgpoolOpsRequest` CR we have shown above, + +```bash +$ kubectl apply -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/pgpool/reconfigure/ppops-reconfigure-remove.yaml +pgpoolopsrequest.ops.kubedb.com/ppops-reconfigure-remove created +``` + +#### Verify if the configuration is removed + +If everything goes well, `KubeDB` Ops-manager operator will remove the custom configuration and move back to the default configuration. + +Let's wait for `PgpoolOpsRequest` to be `Successful`. Run the following command to watch `PgpoolOpsRequest` CR, + +```bash +$ watch kubectl get pgpoolopsrequest -n demo +Every 2.0s: kubectl get pgpoolopsrequest -n demo +kubectl get pgpoolopsrequest -n demo +NAME TYPE STATUS AGE +ppops-reconfigure Reconfigure Successful 71m +ppops-reconfigure-apply Reconfigure Successful 63m +ppops-reconfigure-remove Reconfigure Successful 57s +``` + +We can see from the above output that the `PgpoolOpsRequest` has succeeded. If we describe the `PgpoolOpsRequest` we will get an overview of the steps that were followed to reconfigure the pgpool. + +```bash +$ kubectl describe pgpoolopsrequest -n demo ppops-reconfigure-remove +Name: ppops-reconfigure-remove +Namespace: demo +Labels: +Annotations: +API Version: ops.kubedb.com/v1alpha1 +Kind: PgpoolOpsRequest +Metadata: + Creation Timestamp: 2024-07-30T06:53:27Z + Generation: 1 + Resource Version: 99827 + UID: 24c9cba3-5e85-40dc-96f3-373d2dd7a8ba +Spec: + Apply: IfReady + Configuration: + Remove Custom Config: true + Database Ref: + Name: pp-custom + Timeout: 5m + Type: Reconfigure +Status: + Conditions: + Last Transition Time: 2024-07-30T06:53:28Z + Message: Pgpool ops-request has started to `Reconfigure` the Pgpool nodes + Observed Generation: 1 + Reason: Reconfigure + Status: True + Type: Reconfigure + Last Transition Time: 2024-07-30T06:53:31Z + Message: Successfully paused database + Observed Generation: 1 + Reason: DatabasePauseSucceeded + Status: True + Type: DatabasePauseSucceeded + Last Transition Time: 2024-07-30T06:53:31Z + Message: Successfully updated PetSet + Observed Generation: 1 + Reason: UpdatePetSets + Status: True + Type: UpdatePetSets + Last Transition Time: 2024-07-30T06:53:32Z + Message: Successfully updated Pgpool + Observed Generation: 1 + Reason: UpdateDatabase + Status: True + Type: UpdateDatabase + Last Transition Time: 2024-07-30T06:54:17Z + Message: Successfully Restarted Pods With Resources + Observed Generation: 1 + Reason: RestartPods + Status: True + Type: RestartPods + Last Transition Time: 2024-07-30T06:53:37Z + Message: get pod; ConditionStatus:True; PodName:pp-custom-0 + Observed Generation: 1 + Status: True + Type: GetPod--pp-custom-0 + Last Transition Time: 2024-07-30T06:53:37Z + Message: evict pod; ConditionStatus:True; PodName:pp-custom-0 + Observed Generation: 1 + Status: True + Type: EvictPod--pp-custom-0 + Last Transition Time: 2024-07-30T06:54:12Z + Message: check pod running; ConditionStatus:True; PodName:pp-custom-0 + Observed Generation: 1 + Status: True + Type: CheckPodRunning--pp-custom-0 + Last Transition Time: 2024-07-30T06:54:17Z + Message: Successfully completed the reconfigure for Pgpool + Observed Generation: 1 + Reason: Successful + Status: True + Type: Successful + Observed Generation: 1 + Phase: Successful +Events: + Type Reason Age From Message + ---- ------ ---- ---- ------- + Normal Starting 74s KubeDB Ops-manager Operator Start processing for PgpoolOpsRequest: demo/ppops-reconfigure-remove + Normal Starting 74s KubeDB Ops-manager Operator Pausing Pgpool databse: demo/pp-custom + Normal Successful 74s KubeDB Ops-manager Operator Successfully paused Pgpool database: demo/pp-custom for PgpoolOpsRequest: ppops-reconfigure-remove + Normal UpdatePetSets 71s KubeDB Ops-manager Operator Successfully updated PetSet + Normal UpdatePetSets 70s KubeDB Ops-manager Operator Successfully updated PetSet + Normal UpdateDatabase 70s KubeDB Ops-manager Operator Successfully updated Pgpool + Warning get pod; ConditionStatus:True; PodName:pp-custom-0 65s KubeDB Ops-manager Operator get pod; ConditionStatus:True; PodName:pp-custom-0 + Warning evict pod; ConditionStatus:True; PodName:pp-custom-0 65s KubeDB Ops-manager Operator evict pod; ConditionStatus:True; PodName:pp-custom-0 + Warning check pod running; ConditionStatus:False; PodName:pp-custom-0 60s KubeDB Ops-manager Operator check pod running; ConditionStatus:False; PodName:pp-custom-0 + Warning check pod running; ConditionStatus:True; PodName:pp-custom-0 30s KubeDB Ops-manager Operator check pod running; ConditionStatus:True; PodName:pp-custom-0 + Normal RestartPods 25s KubeDB Ops-manager Operator Successfully Restarted Pods With Resources + Normal Starting 25s KubeDB Ops-manager Operator Resuming Pgpool database: demo/pp-custom + Normal Successful 25s KubeDB Ops-manager Operator Successfully resumed Pgpool database: demo/pp-custom for PgpoolOpsRequest: ppops-reconfigure-remove +``` + +Now let's exec into the pgpool pod and check the configuration. + +```bash +$ kubectl exec -it -n demo pp-custom-0 -- bash +pp-custom-0:/$ cat opt/pgpool-II/etc/pgpool.conf +backend_hostname0 = 'ha-postgres.demo.svc' +backend_port0 = 5432 +backend_weight0 = 1 +backend_flag0 = 'ALWAYS_PRIMARY|DISALLOW_TO_FAILOVER' +backend_hostname1 = 'ha-postgres-standby.demo.svc' +backend_port1 = 5432 +backend_weight1 = 1 +backend_flag1 = 'DISALLOW_TO_FAILOVER' +enable_pool_hba = on +listen_addresses = * +port = 9999 +socket_dir = '/var/run/pgpool' +pcp_listen_addresses = * +pcp_port = 9595 +pcp_socket_dir = '/var/run/pgpool' +log_per_node_statement = on +sr_check_period = 0 +health_check_period = 0 +backend_clustering_mode = 'streaming_replication' +num_init_children = 5 +max_pool = 15 +child_life_time = 300 +child_max_connections = 0 +connection_life_time = 0 +client_idle_limit = 0 +connection_cache = on +load_balance_mode = on +ssl = 'off' +failover_on_backend_error = 'off' +log_min_messages = 'warning' +statement_level_load_balance = 'off' +memory_cache_enabled = 'off' +memqcache_oiddir = '/tmp/oiddir/' +allow_clear_text_frontend_auth = 'false' +failover_on_backend_error = 'off' +pp-custom-0:/$ exit +exit +``` + +As we can see from the configuration of running pgpool, the value of `max_pool` has been changed from `75` to `15` which is the default configuration `number of repicas * 15`. So the reconfiguration of the pgpool using the `removeCustomConfig` field is successful. + + +## Cleaning Up + +To clean up the Kubernetes resources created by this tutorial, run: +```bash +kubectl delete -n demo pp/pp-custom +kubectl delete pgpoolopsrequest -n demo ppops-reconfigure ppops-reconfigure-apply ppops-reconfigure-remove +kubectl delete pg -n demo ha-postgres +kubectl delete ns demo +``` \ No newline at end of file diff --git a/docs/images/day-2-operation/pgpool/pp-reconfigure.png b/docs/images/day-2-operation/pgpool/pp-reconfigure.png new file mode 100644 index 0000000000000000000000000000000000000000..fbc208484da4cc359ccc1fe4377c00ab886bce34 GIT binary patch literal 99893 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%0Dez!QxM$r6(kcjE#s1_!a^V!j11 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%0DOscE5ht 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 z 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 z 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 YkjC?TF-9`*4)9S?(3G!|eI4|_0PEjN3jhEB literal 0 HcmV?d00001 From 959a28c2aa9229a094ea593d4c6639d26721ce19 Mon Sep 17 00:00:00 2001 From: MobarakHsn Date: Tue, 30 Jul 2024 17:04:00 +0600 Subject: [PATCH 11/16] Add Pgpool sync users Signed-off-by: MobarakHsn --- .../pgpool/sync-users/pgpool-sync.yaml | 13 ++ docs/examples/pgpool/sync-users/secret.yaml | 11 + docs/guides/pgpool/concepts/pgpool.md | 14 +- docs/guides/pgpool/sync-users/_index.md | 10 + .../pgpool/sync-users/sync-users-pgpool.md | 191 ++++++++++++++++++ 5 files changed, 234 insertions(+), 5 deletions(-) create mode 100644 docs/examples/pgpool/sync-users/pgpool-sync.yaml create mode 100644 docs/examples/pgpool/sync-users/secret.yaml create mode 100755 docs/guides/pgpool/sync-users/_index.md create mode 100644 docs/guides/pgpool/sync-users/sync-users-pgpool.md diff --git a/docs/examples/pgpool/sync-users/pgpool-sync.yaml b/docs/examples/pgpool/sync-users/pgpool-sync.yaml new file mode 100644 index 0000000000..b758183231 --- /dev/null +++ b/docs/examples/pgpool/sync-users/pgpool-sync.yaml @@ -0,0 +1,13 @@ +apiVersion: kubedb.com/v1alpha2 +kind: Pgpool +metadata: + name: pgpool-sync + namespace: demo +spec: + version: "4.5.0" + replicas: 1 + syncUsers: true + postgresRef: + name: ha-postgres + namespace: demo + deletionPolicy: WipeOut \ No newline at end of file diff --git a/docs/examples/pgpool/sync-users/secret.yaml b/docs/examples/pgpool/sync-users/secret.yaml new file mode 100644 index 0000000000..f4b0e86148 --- /dev/null +++ b/docs/examples/pgpool/sync-users/secret.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: Secret +metadata: + labels: + app.kubernetes.io/instance: ha-postgres + app.kubernetes.io/name: postgreses.kubedb.com + name: sync-secret + namespace: demo +stringData: + password: "12345" + username: "john" \ No newline at end of file diff --git a/docs/guides/pgpool/concepts/pgpool.md b/docs/guides/pgpool/concepts/pgpool.md index c713178cb9..9b43fe7bc2 100644 --- a/docs/guides/pgpool/concepts/pgpool.md +++ b/docs/guides/pgpool/concepts/pgpool.md @@ -151,7 +151,7 @@ Example: ```bash $ kubectl create secret generic pgpool-auth -n demo \ ---from-literal=username=jhon-doe \ +--from-literal=username=jhon \ --from-literal=password=O9xE1mZZDAdBTbrV secret "pgpool-auth" created ``` @@ -160,7 +160,7 @@ secret "pgpool-auth" created apiVersion: v1 data: password: "O9xE1mZZDAdBTbrV" - username: "jhon-doe" + username: "jhon" kind: Secret metadata: name: pgpool-auth @@ -297,14 +297,18 @@ apiVersion: v1 kind: Secret metadata: labels: - app.kubernetes.io/instance: + app.kubernetes.io/instance: ha-postgres app.kubernetes.io/name: postgreses.kubedb.com name: pg-user - namespace: + namespace: demo stringData: password: "12345" - username: alice + username: "alice" ``` +- `app.kubernetes.io/instance` should be same as`appbinding name mentioned in .spec.postgresRef.name`. +- `app.kubernetes.io/name` should be `postgreses.kubedb.com`. +- `namespace` should be same as `namespace mentioned in .spec.postgresRef.namespace`. + In every `10 seconds` KubeDB operator will sync all the users to Pgpool. Secrets provided by users are not managed by KubeDB, and therefore, won't be modified or garbage collected by the KubeDB operator (version 0.13.0 and higher). diff --git a/docs/guides/pgpool/sync-users/_index.md b/docs/guides/pgpool/sync-users/_index.md new file mode 100755 index 0000000000..eca4c7be19 --- /dev/null +++ b/docs/guides/pgpool/sync-users/_index.md @@ -0,0 +1,10 @@ +--- +title: Runtime users sync to Pgpool +menu: + docs_{{ .version }}: + identifier: pp-sync-users + name: Sync Users + parent: pp-pgpool-guides + weight: 30 +menu_name: docs_{{ .version }} +--- diff --git a/docs/guides/pgpool/sync-users/sync-users-pgpool.md b/docs/guides/pgpool/sync-users/sync-users-pgpool.md new file mode 100644 index 0000000000..f892d3c3fd --- /dev/null +++ b/docs/guides/pgpool/sync-users/sync-users-pgpool.md @@ -0,0 +1,191 @@ +--- +title: Runtime users sync to Pgpool +menu: + docs_{{ .version }}: + identifier: pp-sync-users-pgpool + name: Sync users pgpool + parent: pp-sync-users + weight: 10 +menu_name: docs_{{ .version }} +section_menu_id: guides +--- + +> New to KubeDB? Please start [here](/docs/README.md). + +# Using Sync Users + +KubeDB supports providing a way to add/update users to Pgpool in runtime simply by creating secret with defined keys and labels. This tutorial will show you how to use KubeDB to sync a user to Pgpool on runtime. + +## Before You Begin + +- At first, you need to have a Kubernetes cluster, and the kubectl command-line tool must be configured to communicate with your cluster. If you do not already have a cluster, you can create one by using [kind](https://kind.sigs.k8s.io/docs/user/quick-start/). + +- Now, install KubeDB cli on your workstation and KubeDB operator in your cluster following the steps [here](/docs/setup/README.md). + +- To keep things isolated, this tutorial uses a separate namespace called `demo` throughout this tutorial. Run the following command to prepare your cluster for this tutorial: + + ```bash + $ kubectl create ns demo + namespace/demo created + ``` + +> Note: The yaml files used in this tutorial are stored in [docs/examples/pgpool](https://github.com/kubedb/docs/tree/{{< param "info.version" >}}/docs/examples/pgpool) folder in GitHub repository [kubedb/docs](https://github.com/kubedb/docs). + +## Overview + +KubeDB operator allows us to sync additional Postgres users to Pgpool on runtime by setting `spec.syncUsers` to `true`, if this option is true KubeDB operator searches for secrets in the namespace of the Postgres mentioned with some certain labels. Then if the secret have username and password as key KubeDB operator will sync the username and password to Pgpool. Again not only to add a user but also this feature can also be used for updating a user's password. + +At first, we need to create a secret that contains a `user` key and a `password` key which contains the `username` and `password` respectively. Also, we need to add two labels `` and `postgreses.kubedb.com`. The namespace must be ``. Below given a sample structure of the secret. + +Example: + +```yaml +apiVersion: v1 +kind: Secret +metadata: + labels: + app.kubernetes.io/instance: ha-postgres + app.kubernetes.io/name: postgreses.kubedb.com + name: pg-user + namespace: demo +stringData: + password: "12345" + username: "alice" +``` +- `app.kubernetes.io/instance` should be same as`appbinding name mentioned in .spec.postgresRef.name`. +- `app.kubernetes.io/name` should be `postgreses.kubedb.com`. +- `namespace` should be same as `namespace mentioned in .spec.postgresRef.namespace`. + +In every `10 seconds` KubeDB operator will sync all the users to Pgpool. + +Secrets provided by users are not managed by KubeDB, and therefore, won't be modified or garbage collected by the KubeDB operator (version 0.13.0 and higher). + +### Prepare Postgres +For a Pgpool surely we will need a Postgres server so, prepare a KubeDB Postgres cluster using this [tutorial](/docs/guides/postgres/clustering/streaming_replication.md), or you can use any externally managed postgres but in that case you need to create an [appbinding](/docs/guides/pgpool/concepts/appbinding.md) yourself. In this tutorial we will use 3 node Postgres cluster named `ha-postgres`. + +### Prepare Pgpool + +Now, we are going to deploy a `Pgpool` with version `4.5.0`. + +### Deploy Pgpool + +Below is the YAML of the `Pgpool` CR that we are going to create, + +```yaml +apiVersion: kubedb.com/v1alpha2 +kind: Pgpool +metadata: + name: pgpool-sync + namespace: demo +spec: + version: "4.5.0" + replicas: 1 + syncUsers: true + postgresRef: + name: ha-postgres + namespace: demo + deletionPolicy: WipeOut +``` + +Let's create the `Pgpool` CR we have shown above, + +```bash +$ kubectl create -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/pgpool/sync-users/pgpool-sync.yaml +pgpool.kubedb.com/pgpool-sync created +``` + +Now, wait until `pgpool-sync` has status `Ready`. i.e, + +```bash +$ kubectl get pp -n demo +NAME TYPE VERSION STATUS AGE +pgpool-sync kubedb.com/v1alpha2 4.5.0 Ready 41s +``` + +### Sync Users + +Now, create a secret with structure defined [here](/docs/guides/pgpool/concepts/pgpool.md#specsyncusers). Below is the YAML of the `secret` that we are going to create, + +```yaml +apiVersion: v1 +kind: Secret +metadata: + labels: + app.kubernetes.io/instance: ha-postgres + app.kubernetes.io/name: postgreses.kubedb.com + name: sync-secret + namespace: demo +stringData: + password: "12345" + username: "john" +``` + +Now, create the secret by applying the yaml above. + +```bash +$ kubectl create -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/pgpool/sync-users/secret.yaml +secret/sync-secret created +``` + +Now, after `10 seconds` you can exec into the pgpool pod and find if the new user is there, + +```bash +$ kubectl exec -it -n demo pgpool-sync-0 -- bash +pgpool-sync-0:/$ cat opt/pgpool-II/etc/pool_passwd +postgres:AESOmAkfj+zX8zXLm92d6Vup6a5yASiiGScoHNDTIgBwH8= +john:AEScbLKDSMb+KVrILhh7XEmyQ== +pgpool-sync-0:/$ exit +exit +``` +We can see that the user is there in Pgpool. So, now let's create this user and try to use this user through Pgpool. +Now, you can connect to this pgpool through [psql](https://www.postgresql.org/docs/current/app-psql.html). Before that we need to port-forward to the primary service of pgpool. + +```bash +$ kubectl port-forward -n demo svc/pgpool-sync 9999 +Forwarding from 127.0.0.1:9999 -> 9999 +``` +We will use the root Postgres user to create the user, so let's get the password for the root user, so that we can use it. +```bash +$ kubectl get secrets -n demo ha-postgres-auth -o jsonpath='{.data.\password}' | base64 -d +qEeuU6cu5aH!O9CI⏎ +``` +We can use this password now, +```bash +$ export PGPASSWORD='qEeuU6cu5aH!O9CI' +$ psql --host=localhost --port=9999 --username=postgres postgres +psql (16.3 (Ubuntu 16.3-1.pgdg22.04+1), server 16.1) +Type "help" for help. + +postgres=# CREATE USER john WITH PASSWORD '12345'; +CREATE ROLE +postgres=# exit +``` +Now, let's use this john user. +```bash +$ export PGPASSWORD='12345' +$ psql --host=localhost --port=9999 --username=john postgres +psql (16.3 (Ubuntu 16.3-1.pgdg22.04+1), server 16.1) +Type "help" for help. + +postgres=> exit +``` +So, we can successfully verify that the user is registered in Pgpool and also we can use it. + +## Cleaning up + +To clean up the Kubernetes resources created by this tutorial, run: + +```bash +kubectl delete -n demo pp/pgpool-sync +kubectl delete -n demo secret/sync-secret +kubectl delete pg -n demo ha-postgres +kubectl delete ns demo +``` + +## Next Steps + +- Monitor your Pgpool database with KubeDB using [out-of-the-box Prometheus operator](/docs/guides/pgpool/monitoring/using-prometheus-operator.md). +- Monitor your Pgpool database with KubeDB using [out-of-the-box builtin-Prometheus](/docs/guides/pgpool/monitoring/using-builtin-prometheus.md). +- Detail concepts of [Pgpool object](/docs/guides/pgpool/concepts/pgpool.md). +- Detail concepts of [PgpoolVersion object](/docs/guides/pgpool/concepts/catalog.md). +- Want to hack on KubeDB? Check our [contribution guidelines](/docs/CONTRIBUTING.md). From ba68552914f2556a83d1afc88c1d9c63eb9b1d9e Mon Sep 17 00:00:00 2001 From: MobarakHsn Date: Wed, 31 Jul 2024 13:03:58 +0600 Subject: [PATCH 12/16] Change action for prometheus Signed-off-by: MobarakHsn --- .github/workflows/ci.yml | 2 +- docs/guides/pgpool/update-version/overview.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d70d52d805..492015851d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -53,7 +53,7 @@ jobs: # helm install kubedb-crds appscode/kubedb-crds # helm install kmodules-crds appscode/kmodules-crds kubectl create -f https://github.com/cert-manager/cert-manager/releases/download/v1.11.0/cert-manager.crds.yaml - kubectl create -f https://github.com/prometheus-operator/prometheus-operator/releases/download/v0.60.1/stripped-down-crds.yaml + kubectl create -f https://github.com/prometheus-operator/prometheus-operator/releases/download/v0.75.0/stripped-down-crds.yaml kubectl create -f https://github.com/kmodules/custom-resources/raw/release-1.25/crds/appcatalog.appscode.com_appbindings.yaml kubectl create -f https://github.com/kmodules/custom-resources/raw/release-1.25/crds/metrics.appscode.com_metricsconfigurations.yaml kubectl create -f https://github.com/stashed/installer/raw/master/crds/stash-crds.yaml diff --git a/docs/guides/pgpool/update-version/overview.md b/docs/guides/pgpool/update-version/overview.md index 5527d3fb73..0be3a59d66 100644 --- a/docs/guides/pgpool/update-version/overview.md +++ b/docs/guides/pgpool/update-version/overview.md @@ -27,7 +27,7 @@ This guide will give you an overview on how KubeDB Ops-manager operator update t The following diagram shows how KubeDB Ops-manager operator used to update the version of `Pgpool`. Open the image in a new tab to see the enlarged version.
-  updating Process of Pgpool +  updating Process of Pgpool
Fig: updating Process of Pgpool
From d574d85f6e811a0918c5fad918985cd47f216a52 Mon Sep 17 00:00:00 2001 From: MobarakHsn Date: Thu, 1 Aug 2024 11:23:26 +0600 Subject: [PATCH 13/16] Custom service account Signed-off-by: MobarakHsn --- .../pgpool/custom-rbac/mg-custom-role.yaml | 14 + .../pgpool/custom-rbac/pgpool-new.yaml | 15 + .../pgpool/custom-rbac/pp-custom.yaml | 15 + .../pgpool/configuration/using-podtemplate.md | 4 +- docs/guides/pgpool/custom-rbac/_index.md | 10 + .../pgpool/custom-rbac/using-custom-rbac.md | 488 ++++++++++++++++++ docs/guides/pgpool/custom-versions/setup.md | 2 +- docs/guides/pgpool/monitoring/overview.md | 4 +- 8 files changed, 547 insertions(+), 5 deletions(-) create mode 100644 docs/examples/pgpool/custom-rbac/mg-custom-role.yaml create mode 100644 docs/examples/pgpool/custom-rbac/pgpool-new.yaml create mode 100644 docs/examples/pgpool/custom-rbac/pp-custom.yaml create mode 100755 docs/guides/pgpool/custom-rbac/_index.md create mode 100644 docs/guides/pgpool/custom-rbac/using-custom-rbac.md diff --git a/docs/examples/pgpool/custom-rbac/mg-custom-role.yaml b/docs/examples/pgpool/custom-rbac/mg-custom-role.yaml new file mode 100644 index 0000000000..cea2e81796 --- /dev/null +++ b/docs/examples/pgpool/custom-rbac/mg-custom-role.yaml @@ -0,0 +1,14 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: my-custom-role + namespace: demo +rules: + - apiGroups: + - policy + resourceNames: + - mongodb-db + resources: + - podsecuritypolicies + verbs: + - use diff --git a/docs/examples/pgpool/custom-rbac/pgpool-new.yaml b/docs/examples/pgpool/custom-rbac/pgpool-new.yaml new file mode 100644 index 0000000000..7c2d1c331a --- /dev/null +++ b/docs/examples/pgpool/custom-rbac/pgpool-new.yaml @@ -0,0 +1,15 @@ +apiVersion: kubedb.com/v1alpha2 +kind: Pgpool +metadata: + name: pgpool-new + namespace: demo +spec: + version: "4.5.0" + replicas: 1 + postgresRef: + name: ha-postgres + namespace: demo + podTemplate: + spec: + serviceAccountName: my-custom-serviceaccount + deletionPolicy: WipeOut \ No newline at end of file diff --git a/docs/examples/pgpool/custom-rbac/pp-custom.yaml b/docs/examples/pgpool/custom-rbac/pp-custom.yaml new file mode 100644 index 0000000000..9ad1899c36 --- /dev/null +++ b/docs/examples/pgpool/custom-rbac/pp-custom.yaml @@ -0,0 +1,15 @@ +apiVersion: kubedb.com/v1alpha2 +kind: Pgpool +metadata: + name: pgpool + namespace: demo +spec: + version: "4.5.0" + replicas: 1 + postgresRef: + name: ha-postgres + namespace: demo + podTemplate: + spec: + serviceAccountName: my-custom-serviceaccount + deletionPolicy: WipeOut \ No newline at end of file diff --git a/docs/guides/pgpool/configuration/using-podtemplate.md b/docs/guides/pgpool/configuration/using-podtemplate.md index db2d14a897..e0f19d9ea9 100644 --- a/docs/guides/pgpool/configuration/using-podtemplate.md +++ b/docs/guides/pgpool/configuration/using-podtemplate.md @@ -2,10 +2,10 @@ title: Run Pgpool with Custom Configuration menu: docs_{{ .version }}: - identifier: using-podtemplate-configuration + identifier: using-podtemplate-configuration-pp name: Customize PodTemplate parent: pp-configuration - weight: 15 + weight: 10 menu_name: docs_{{ .version }} section_menu_id: guides --- diff --git a/docs/guides/pgpool/custom-rbac/_index.md b/docs/guides/pgpool/custom-rbac/_index.md new file mode 100755 index 0000000000..0348efb621 --- /dev/null +++ b/docs/guides/pgpool/custom-rbac/_index.md @@ -0,0 +1,10 @@ +--- +title: Run Pgpool with Custom RBAC resources +menu: + docs_{{ .version }}: + identifier: pp-custom-rbac + name: Custom RBAC + parent: pp-pgpool-guides + weight: 31 +menu_name: docs_{{ .version }} +--- diff --git a/docs/guides/pgpool/custom-rbac/using-custom-rbac.md b/docs/guides/pgpool/custom-rbac/using-custom-rbac.md new file mode 100644 index 0000000000..b55b502414 --- /dev/null +++ b/docs/guides/pgpool/custom-rbac/using-custom-rbac.md @@ -0,0 +1,488 @@ +--- +title: Run Pgpool with Custom RBAC resources +menu: + docs_{{ .version }}: + identifier: pp-custom-rbac-quickstart + name: Custom RBAC + parent: pp-custom-rbac + weight: 10 +menu_name: docs_{{ .version }} +section_menu_id: guides +--- + +> New to KubeDB? Please start [here](/docs/README.md). + +# Using Custom RBAC resources + +KubeDB (version 0.13.0 and higher) supports finer user control over role based access permissions provided to a Pgpool instance. This tutorial will show you how to use KubeDB to run Pgpool instance with custom RBAC resources. + +## Before You Begin + +At first, you need to have a Kubernetes cluster, and the kubectl command-line tool must be configured to communicate with your cluster. If you do not already have a cluster, you can create one by using [kind](https://kind.sigs.k8s.io/docs/user/quick-start/). + +Now, install KubeDB cli on your workstation and KubeDB operator in your cluster following the steps [here](/docs/setup/README.md). + +To keep things isolated, this tutorial uses a separate namespace called `demo` throughout this tutorial. + +```bash +$ kubectl create ns demo +namespace/demo created +``` + +> Note: YAML files used in this tutorial are stored in [docs/examples/pgpool](https://github.com/kubedb/docs/tree/{{< param "info.version" >}}/docs/examples/pgpool) folder in GitHub repository [kubedb/docs](https://github.com/kubedb/docs). + +## Overview + +KubeDB allows users to provide custom RBAC resources, namely, `ServiceAccount`, `Role`, and `RoleBinding` for Pgpool. This is provided via the `spec.podTemplate.spec.serviceAccountName` field in Pgpool crd. If this field is left empty, the KubeDB operator will use the default service account. Role and RoleBinding that provide necessary access permissions will also be generated automatically for this service account. + +If a service account name is given, and there's an existing service account by that name, the KubeDB operator will use that existing service account. Since this service account is not managed by KubeDB, users are responsible for providing necessary access permissions manually. + +This guide will show you how to create custom `Service Account`, `Role`, and `RoleBinding` for a Pgpool instance named `pgpool` to provide the bare minimum access permissions. + +## Custom RBAC for Pgpool + +At first, let's create a `Service Acoount` in `demo` namespace. + +```bash +$ kubectl create serviceaccount -n demo my-custom-serviceaccount +serviceaccount/my-custom-serviceaccount created +``` + +It should create a service account. + +```yaml +$ kubectl get serviceaccount -n demo my-custom-serviceaccount -o yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + creationTimestamp: "2024-08-01T04:55:42Z" + name: my-custom-serviceaccount + namespace: demo + resourceVersion: "269793" + uid: 21a51f82-84b8-47ee-ab80-4404778bc5ee +``` + +Now, we need to create a role that has necessary access permissions for the Pgpool instance named `pgpool`. + +```bash +$ kubectl apply -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/pgpool/custom-rbac/mg-custom-role.yaml +role.rbac.authorization.k8s.io/my-custom-role created +``` + +Below is the YAML for the Role we just created. + +```yaml +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: my-custom-role + namespace: demo +rules: +- apiGroups: + - policy + resourceNames: + - pgpool + resources: + - podsecuritypolicies + verbs: + - use +``` + +This permission is required for Pgpool pods running on PSP enabled clusters. + +Now create a `RoleBinding` to bind this `Role` with the already created service account. + +```bash +$ kubectl create rolebinding my-custom-rolebinding --role=my-custom-role --serviceaccount=demo:my-custom-serviceaccount --namespace=demo +rolebinding.rbac.authorization.k8s.io/my-custom-rolebinding created + +``` + +It should bind `my-custom-role` and `my-custom-serviceaccount` successfully. + +```yaml +$ kubectl get rolebinding -n demo my-custom-rolebinding -o yaml +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + creationTimestamp: "2024-08-01T04:59:20Z" + name: my-custom-rolebinding + namespace: demo + resourceVersion: "270018" + uid: bd6b4fe3-5b2e-4cc4-a51e-2eba0a3af5e3 +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: my-custom-role +subjects: + - kind: ServiceAccount + name: my-custom-serviceaccount + namespace: demo +``` + +Now, create a Pgpool crd specifying `spec.podTemplate.spec.serviceAccountName` field to `my-custom-serviceaccount`. + +```bash +$ kubectl apply -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/pgpool/custom-rbac/pp-custom.yaml +pgpool.kubedb.com/pgpool created +``` + +Below is the YAML for the Pgpool crd we just created. + +```yaml +apiVersion: kubedb.com/v1alpha2 +kind: Pgpool +metadata: + name: pgpool + namespace: demo +spec: + version: "4.5.0" + replicas: 1 + postgresRef: + name: ha-postgres + namespace: demo + podTemplate: + spec: + serviceAccountName: my-custom-serviceaccount + deletionPolicy: WipeOut +``` + +Now, wait a few minutes. the KubeDB operator will create necessary petset, services, secret etc. If everything goes well, we should see that a pod with the name `pgpool-0` has been created. + +Check that the petset's pod is running + +```bash +$ kubectl get pod -n demo pgpool-0 +NAME READY STATUS RESTARTS AGE +pgpool-0 1/1 Running 0 50s +``` + +Check the pod's log to see if the pgpool is ready + +```bash +$ kubectl logs -f -n demo pgpool-0 +Configuring Pgpool-II... +Custom pgpool.conf file detected. Use custom configuration files. +Generating pool_passwd... +Generating pcp.conf... +Custom pool_hba.conf file detected. Use custom pool_hba.conf. +Starting Pgpool-II... +2024-08-01 05:03:29.081: main pid 61: LOG: Backend status file /tmp/pgpool_status does not exist +2024-08-01 05:03:29.081: main pid 61: LOG: health_check_stats_shared_memory_size: requested size: 12288 +2024-08-01 05:03:29.081: main pid 61: LOG: memory cache initialized +2024-08-01 05:03:29.081: main pid 61: DETAIL: memcache blocks :64 +2024-08-01 05:03:29.081: main pid 61: LOG: allocating (135894880) bytes of shared memory segment +2024-08-01 05:03:29.081: main pid 61: LOG: allocating shared memory segment of size: 135894880 +2024-08-01 05:03:30.129: main pid 61: LOG: health_check_stats_shared_memory_size: requested size: 12288 +2024-08-01 05:03:30.129: main pid 61: LOG: health_check_stats_shared_memory_size: requested size: 12288 +2024-08-01 05:03:30.129: main pid 61: LOG: memory cache initialized +2024-08-01 05:03:30.129: main pid 61: DETAIL: memcache blocks :64 +2024-08-01 05:03:30.130: main pid 61: LOG: pool_discard_oid_maps: discarded memqcache oid maps +2024-08-01 05:03:30.150: main pid 61: LOG: create socket files[0]: /tmp/.s.PGSQL.9999 +2024-08-01 05:03:30.150: main pid 61: LOG: listen address[0]: * +2024-08-01 05:03:30.150: main pid 61: LOG: Setting up socket for 0.0.0.0:9999 +2024-08-01 05:03:30.150: main pid 61: LOG: Setting up socket for :::9999 +2024-08-01 05:03:30.151: main pid 61: LOG: find_primary_node_repeatedly: waiting for finding a primary node +2024-08-01 05:03:30.151: main pid 61: LOG: create socket files[0]: /var/run/pgpool/.s.PGSQL.9595 +2024-08-01 05:03:30.151: main pid 61: LOG: listen address[0]: * +2024-08-01 05:03:30.151: main pid 61: LOG: Setting up socket for 0.0.0.0:9595 +2024-08-01 05:03:30.151: main pid 61: LOG: Setting up socket for :::9595 +2024-08-01 05:03:30.151: pcp_main pid 68: LOG: PCP process: 68 started +2024-08-01 05:03:30.152: sr_check_worker pid 69: LOG: process started +2024-08-01 05:03:30.152: health_check pid 70: LOG: process started +2024-08-01 05:03:30.152: health_check pid 71: LOG: process started +2024-08-01 05:03:30.153: main pid 61: LOG: pgpool-II successfully started. version 4.5.0 (hotooriboshi) +``` + +Once we see `pgpool-II successfully started` in the log, the pgpool is ready. + +Also, if we want to verify that the pod is actually using our custom service account we can just describe the pod and see the `Service Accouunt Name`, +```bash +$ kubectl describe pp -n demo pgpool +Name: pgpool +Namespace: demo +Labels: +Annotations: +API Version: kubedb.com/v1alpha2 +Kind: Pgpool +Metadata: + Creation Timestamp: 2024-08-01T05:03:26Z + Finalizers: + kubedb.com + Generation: 2 + Resource Version: 271249 + UID: 53b75d96-4e5c-45ec-bccd-6c2ca5a363ec +Spec: + Auth Secret: + Name: pgpool-auth + Client Auth Mode: md5 + Deletion Policy: WipeOut + Health Checker: + Failure Threshold: 1 + Period Seconds: 10 + Timeout Seconds: 10 + Pod Template: + Controller: + Metadata: + Spec: + Containers: + Name: pgpool + Resources: + Limits: + Memory: 1Gi + Requests: + Cpu: 500m + Memory: 1Gi + Security Context: + Allow Privilege Escalation: false + Capabilities: + Drop: + ALL + Run As Group: 70 + Run As Non Root: true + Run As User: 70 + Seccomp Profile: + Type: RuntimeDefault + Pod Placement Policy: + Name: default + Security Context: + Fs Group: 70 + Service Account Name: my-custom-serviceaccount + Postgres Ref: + Name: ha-postgres + Namespace: demo + Replicas: 1 + Ssl Mode: disable + Version: 4.5.0 +Status: + Conditions: + Last Transition Time: 2024-08-01T05:03:27Z + Message: The KubeDB operator has started the provisioning of Pgpool: demo/pgpool + Observed Generation: 1 + Reason: DatabaseProvisioningStartedSuccessfully + Status: True + Type: ProvisioningStarted + Last Transition Time: 2024-08-01T05:17:50Z + Message: All replicas are ready for Pgpool demo/pgpool + Observed Generation: 2 + Reason: AllReplicasReady + Status: True + Type: ReplicaReady + Last Transition Time: 2024-08-01T05:03:39Z + Message: pgpool demo/pgpool is accepting connection + Observed Generation: 2 + Reason: AcceptingConnection + Status: True + Type: AcceptingConnection + Last Transition Time: 2024-08-01T05:03:39Z + Message: pgpool demo/pgpool is ready + Observed Generation: 2 + Reason: AllReplicasReady + Status: True + Type: Ready + Last Transition Time: 2024-08-01T05:03:39Z + Message: The Pgpool: demo/pgpool is successfully provisioned. + Observed Generation: 2 + Reason: DatabaseSuccessfullyProvisioned + Status: True + Type: Provisioned + Phase: Ready +Events: +``` + +## Reusing Service Account + +An existing service account can be reused in another Pgpool instance. No new access permission is required to run the new Pgpool instance. + +Now, create Pgpool crd `pgpool-new` using the existing service account name `my-custom-serviceaccount` in the `spec.podTemplate.spec.serviceAccountName` field. + +```bash +$ kubectl apply -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/pgpool/custom-rbac/pgpool-new.yaml +pgpool.kubedb.com/quick-pgpool created +``` + +Below is the YAML for the Pgpool crd we just created. + +```yaml +apiVersion: kubedb.com/v1alpha2 +kind: Pgpool +metadata: + name: pgpool-new + namespace: demo +spec: + version: "4.5.0" + replicas: 1 + postgresRef: + name: ha-postgres + namespace: demo + podTemplate: + spec: + serviceAccountName: my-custom-serviceaccount + deletionPolicy: WipeOut +``` + +Now, wait a few minutes. the KubeDB operator will create necessary petset, services, secret etc. If everything goes well, we should see that a pod with the name `pgpool-new-0` has been created. + +Check that the petset's pod is running + +```bash +$ kubectl get pod -n demo pgpool-new-0 +NAME READY STATUS RESTARTS AGE +pgpool-new-0 1/1 Running 0 55s +``` + +Check the pod's log to see if the database is ready + +```bash +$ kubectl logs -f -n demo pgpool-new-0 +Configuring Pgpool-II... +Custom pgpool.conf file detected. Use custom configuration files. +Generating pool_passwd... +Generating pcp.conf... +Custom pool_hba.conf file detected. Use custom pool_hba.conf. +Starting Pgpool-II... +2024-08-01 05:05:34.353: main pid 60: LOG: Backend status file /tmp/pgpool_status does not exist +2024-08-01 05:05:34.353: main pid 60: LOG: health_check_stats_shared_memory_size: requested size: 12288 +2024-08-01 05:05:34.353: main pid 60: LOG: memory cache initialized +2024-08-01 05:05:34.353: main pid 60: DETAIL: memcache blocks :64 +2024-08-01 05:05:34.353: main pid 60: LOG: allocating (135894880) bytes of shared memory segment +2024-08-01 05:05:34.353: main pid 60: LOG: allocating shared memory segment of size: 135894880 +2024-08-01 05:05:34.555: main pid 60: LOG: health_check_stats_shared_memory_size: requested size: 12288 +2024-08-01 05:05:34.555: main pid 60: LOG: health_check_stats_shared_memory_size: requested size: 12288 +2024-08-01 05:05:34.555: main pid 60: LOG: memory cache initialized +2024-08-01 05:05:34.555: main pid 60: DETAIL: memcache blocks :64 +2024-08-01 05:05:34.556: main pid 60: LOG: pool_discard_oid_maps: discarded memqcache oid maps +2024-08-01 05:05:34.567: main pid 60: LOG: create socket files[0]: /tmp/.s.PGSQL.9999 +2024-08-01 05:05:34.567: main pid 60: LOG: listen address[0]: * +2024-08-01 05:05:34.567: main pid 60: LOG: Setting up socket for 0.0.0.0:9999 +2024-08-01 05:05:34.568: main pid 60: LOG: Setting up socket for :::9999 +2024-08-01 05:05:34.568: main pid 60: LOG: find_primary_node_repeatedly: waiting for finding a primary node +2024-08-01 05:05:34.568: main pid 60: LOG: create socket files[0]: /var/run/pgpool/.s.PGSQL.9595 +2024-08-01 05:05:34.569: main pid 60: LOG: listen address[0]: * +2024-08-01 05:05:34.569: main pid 60: LOG: Setting up socket for 0.0.0.0:9595 +2024-08-01 05:05:34.569: main pid 60: LOG: Setting up socket for :::9595 +2024-08-01 05:05:34.569: sr_check_worker pid 68: LOG: process started +2024-08-01 05:05:34.570: health_check pid 69: LOG: process started +2024-08-01 05:05:34.570: health_check pid 70: LOG: process started +2024-08-01 05:05:34.570: pcp_main pid 67: LOG: PCP process: 67 started +2024-08-01 05:05:34.570: main pid 60: LOG: pgpool-II successfully started. version 4.5.0 (hotooriboshi) +``` +`pgpool-II successfully started` in the log signifies that the pgpool is running successfully. + +Also, if we want to verify that the pod is actually using our custom service account we can just describe the pod and see the `Service Accouunt Name`, +```bash +$ kubectl describe pp -n demo pgpool-new +Name: pgpool-new +Namespace: demo +Labels: +Annotations: +API Version: kubedb.com/v1alpha2 +Kind: Pgpool +Metadata: + Creation Timestamp: 2024-08-01T05:05:32Z + Finalizers: + kubedb.com + Generation: 2 + Resource Version: 271244 + UID: e985525a-9479-4364-9c8f-192c476fd2dc +Spec: + Auth Secret: + Name: pgpool-new-auth + Client Auth Mode: md5 + Deletion Policy: WipeOut + Health Checker: + Failure Threshold: 1 + Period Seconds: 10 + Timeout Seconds: 10 + Pod Template: + Controller: + Metadata: + Spec: + Containers: + Name: pgpool + Resources: + Limits: + Memory: 1Gi + Requests: + Cpu: 500m + Memory: 1Gi + Security Context: + Allow Privilege Escalation: false + Capabilities: + Drop: + ALL + Run As Group: 70 + Run As Non Root: true + Run As User: 70 + Seccomp Profile: + Type: RuntimeDefault + Pod Placement Policy: + Name: default + Security Context: + Fs Group: 70 + Service Account Name: my-custom-serviceaccount + Postgres Ref: + Name: ha-postgres + Namespace: demo + Replicas: 1 + Ssl Mode: disable + Version: 4.5.0 +Status: + Conditions: + Last Transition Time: 2024-08-01T05:05:33Z + Message: The KubeDB operator has started the provisioning of Pgpool: demo/pgpool-new + Observed Generation: 2 + Reason: DatabaseProvisioningStartedSuccessfully + Status: True + Type: ProvisioningStarted + Last Transition Time: 2024-08-01T05:17:49Z + Message: All replicas are ready for Pgpool demo/pgpool-new + Observed Generation: 2 + Reason: AllReplicasReady + Status: True + Type: ReplicaReady + Last Transition Time: 2024-08-01T05:05:45Z + Message: pgpool demo/pgpool-new is accepting connection + Observed Generation: 2 + Reason: AcceptingConnection + Status: True + Type: AcceptingConnection + Last Transition Time: 2024-08-01T05:05:45Z + Message: pgpool demo/pgpool-new is ready + Observed Generation: 2 + Reason: AllReplicasReady + Status: True + Type: Ready + Last Transition Time: 2024-08-01T05:05:45Z + Message: The Pgpool: demo/pgpool-new is successfully provisioned. + Observed Generation: 2 + Reason: DatabaseSuccessfullyProvisioned + Status: True + Type: Provisioned + Phase: Ready +Events: +``` +## Cleaning up + +To clean up the Kubernetes resources created by this tutorial, run: + +```bash +kubectl delete -n demo pp/pgpool +kubectl delete -n demo pp/pgpool-new +kubectl delete -n demo role my-custom-role +kubectl delete -n demo rolebinding my-custom-rolebinding +kubectl delete sa -n demo my-custom-serviceaccount +kubectl delete -n demo pg/ha-postgres +kubectl delete ns demo +``` + +If you would like to uninstall the KubeDB operator, please follow the steps [here](/docs/setup/README.md). + +## Next Steps + +- [Quickstart Pgpool](/docs/guides/pgpool/quickstart/quickstart.md) with KubeDB Operator. +- Monitor your Pgpool instance with KubeDB using [out-of-the-box Prometheus operator](/docs/guides/pgpool/monitoring/using-prometheus-operator.md). +- Monitor your Pgpool instance with KubeDB using [out-of-the-box builtin-Prometheus](/docs/guides/pgpool/monitoring/using-builtin-prometheus.md). +- Detail concepts of [Pgpool object](/docs/guides/pgpool/concepts/pgpool.md). +- Want to hack on KubeDB? Check our [contribution guidelines](/docs/CONTRIBUTING.md). + diff --git a/docs/guides/pgpool/custom-versions/setup.md b/docs/guides/pgpool/custom-versions/setup.md index d38e719afe..a38ff60642 100644 --- a/docs/guides/pgpool/custom-versions/setup.md +++ b/docs/guides/pgpool/custom-versions/setup.md @@ -43,7 +43,7 @@ spec: exporter: image: ghcr.io/appscode-images/pgpool2_exporter:v1.2.2 pgpool: - image: ghcr.io/appscode-images/pgpool2:4.5.0 + image: myco/pgpool:custom-4.5.0 version: 4.5.0 deprecated: false ``` diff --git a/docs/guides/pgpool/monitoring/overview.md b/docs/guides/pgpool/monitoring/overview.md index d5f14165cb..0b80f7415c 100644 --- a/docs/guides/pgpool/monitoring/overview.md +++ b/docs/guides/pgpool/monitoring/overview.md @@ -3,9 +3,9 @@ title: Pgpool Monitoring Overview description: Pgpool Monitoring Overview menu: docs_{{ .version }}: - identifier: mg-monitoring-overview + identifier: pp-monitoring-overview name: Overview - parent: mg-monitoring-pgpool + parent: pp-monitoring-pgpool weight: 10 menu_name: docs_{{ .version }} section_menu_id: guides From d17413ed7dd2c009598b47319453f8a7ea710416 Mon Sep 17 00:00:00 2001 From: MobarakHsn Date: Fri, 2 Aug 2024 11:08:43 +0600 Subject: [PATCH 14/16] Prometheus operator flow Signed-off-by: MobarakHsn --- .../monitoring/using-prometheus-operator.md | 7 +++++++ .../pgpool/prometheus-operator.png | Bin 0 -> 92732 bytes 2 files changed, 7 insertions(+) create mode 100644 docs/images/day-2-operation/pgpool/prometheus-operator.png diff --git a/docs/guides/pgpool/monitoring/using-prometheus-operator.md b/docs/guides/pgpool/monitoring/using-prometheus-operator.md index f94d8ffc5a..aed1d40caa 100644 --- a/docs/guides/pgpool/monitoring/using-prometheus-operator.md +++ b/docs/guides/pgpool/monitoring/using-prometheus-operator.md @@ -16,6 +16,13 @@ section_menu_id: guides [Prometheus operator](https://github.com/prometheus-operator/prometheus-operator) provides simple and Kubernetes native way to deploy and configure Prometheus server. This tutorial will show you how to use Prometheus operator to monitor Pgpool database deployed with KubeDB. +The following diagram shows how KubeDB Provisioner operator monitor `Pgpool` using Prometheus Operator. Open the image in a new tab to see the enlarged version. + +
+  Monitoring process of Pgpool using Prometheus Operator +
Fig: Monitoring process of Pgpool
+
+ ## Before You Begin - At first, you need to have a Kubernetes cluster, and the kubectl command-line tool must be configured to communicate with your cluster. If you do not already have a cluster, you can create one by using [kind](https://kind.sigs.k8s.io/docs/user/quick-start/). diff --git a/docs/images/day-2-operation/pgpool/prometheus-operator.png b/docs/images/day-2-operation/pgpool/prometheus-operator.png new file mode 100644 index 0000000000000000000000000000000000000000..ad9d8dac380e1c4291e0274cfa0d9747d4c2e0c3 GIT binary patch literal 92732 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 literal 0 HcmV?d00001 From 28ea55fd2b24e914043cd95e403aac60dc0ee346 Mon Sep 17 00:00:00 2001 From: MobarakHsn Date: Wed, 14 Aug 2024 12:22:30 +0600 Subject: [PATCH 15/16] Fix names and add new sidecar example Signed-off-by: MobarakHsn --- .../configuration/pgpool-config-sidecar.yaml | 39 ++++++ .../pgpool/configuration/using-config-file.md | 2 +- .../pgpool/configuration/using-init-config.md | 2 +- .../pgpool/configuration/using-podtemplate.md | 128 +++++++++++++++++- .../horizontal-scaling/horizontal-ops.md | 2 +- .../scaling/vertical-scaling/vertical-ops.md | 2 +- 6 files changed, 170 insertions(+), 5 deletions(-) create mode 100644 docs/examples/pgpool/configuration/pgpool-config-sidecar.yaml diff --git a/docs/examples/pgpool/configuration/pgpool-config-sidecar.yaml b/docs/examples/pgpool/configuration/pgpool-config-sidecar.yaml new file mode 100644 index 0000000000..cac5940a8a --- /dev/null +++ b/docs/examples/pgpool/configuration/pgpool-config-sidecar.yaml @@ -0,0 +1,39 @@ +apiVersion: kubedb.com/v1alpha2 +kind: Pgpool +metadata: + name: pgpool-custom-sidecar + namespace: demo +spec: + version: "4.4.5" + replicas: 1 + postgresRef: + name: ha-postgres + namespace: demo + podTemplate: + spec: + containers: + - name: pgpool + volumeMounts: + - mountPath: /tmp/pgpool_log + name: data + readOnly: false + - name: filebeat + image: repository_name/custom_filebeat:latest + volumeMounts: + - mountPath: /tmp/pgpool_log + name: data + readOnly: true + volumes: + - name: data + emptyDir: {} + initConfig: + pgpoolConfig: + log_destination : 'stderr' + logging_collector : on + log_directory : '/tmp/pgpool_log' + log_filename : 'pgpool-%Y-%m-%d_%H%M%S.log' + log_file_mode : 0777 + log_truncate_on_rotation : off + log_rotation_age : 1d + log_rotation_size : 10MB + deletionPolicy: WipeOut \ No newline at end of file diff --git a/docs/guides/pgpool/configuration/using-config-file.md b/docs/guides/pgpool/configuration/using-config-file.md index 8f7437b1da..fdc876fd9c 100644 --- a/docs/guides/pgpool/configuration/using-config-file.md +++ b/docs/guides/pgpool/configuration/using-config-file.md @@ -3,7 +3,7 @@ title: Run Pgpool with Custom Configuration menu: docs_{{ .version }}: identifier: pp-using-config-file-configuration - name: Config File + name: Customize Configurations parent: pp-configuration weight: 10 menu_name: docs_{{ .version }} diff --git a/docs/guides/pgpool/configuration/using-init-config.md b/docs/guides/pgpool/configuration/using-init-config.md index e198e75245..7884d7281b 100644 --- a/docs/guides/pgpool/configuration/using-init-config.md +++ b/docs/guides/pgpool/configuration/using-init-config.md @@ -3,7 +3,7 @@ title: Run Pgpool with Custom Configuration menu: docs_{{ .version }}: identifier: pp-using-init-configuration - name: Init Config + name: Customize Init Config parent: pp-configuration weight: 10 menu_name: docs_{{ .version }} diff --git a/docs/guides/pgpool/configuration/using-podtemplate.md b/docs/guides/pgpool/configuration/using-podtemplate.md index e0f19d9ea9..92662f1a04 100644 --- a/docs/guides/pgpool/configuration/using-podtemplate.md +++ b/docs/guides/pgpool/configuration/using-podtemplate.md @@ -163,7 +163,7 @@ postgres=# exit Now, let's verify if we can to the database through pgpool with the new users, ```bash $ export PGPASSWORD='123' -$ psql --host=localhost --port=9999 --username=alice postgres ✘ 2 +$ psql --host=localhost --port=9999 --username=alice postgres psql (16.3 (Ubuntu 16.3-1.pgdg22.04+1), server 16.1) Type "help" for help. @@ -178,12 +178,138 @@ postgres=> exit You can see we can use these new users to connect to the database. +## Custom Sidecar Containers + +Here in this example we will add an extra sidecar container with our pgpool container. Suppose, you are running a KubeDB-managed Pgpool, and you need to monitor the general logs. We can configure pgpool to write those logs in any directory, in this example we will configure pgpool to write logs to `/tmp/pgpool_log` directory with file name format `pgpool-%Y-%m-%d_%H%M%S.log`. In order to export those logs to some remote monitoring solution (such as, Elasticsearch, Logstash, Kafka or Redis) will need a tool like [Filebeat](https://www.elastic.co/beats/filebeat). Filebeat is used to ship logs and files from devices, cloud, containers and hosts. So, it is required to run Filebeat as a sidecar container along with the KubeDB-managed Pgpool. Here’s a quick demonstration on how to accomplish it. + +Firstly, we are going to make our custom filebeat image with our required configuration. +```yaml +filebeat.inputs: + - type: log + paths: + - /tmp/pgpool_log/*.log +output.console: + pretty: true +``` +Save this yaml with name `filebeat.yml`. Now prepare the dockerfile, +```dockerfile +FROM elastic/filebeat:7.17.1 +COPY filebeat.yml /usr/share/filebeat +USER root +RUN chmod go-w /usr/share/filebeat/filebeat.yml +USER filebeat +``` +Now run these following commands to build and push the docker image to your docker repository. +```bash +$ docker build -t repository_name/custom_filebeat:latest . +$ docker push repository_name/custom_filebeat:latest +``` +Now we will deploy our pgpool with custom sidecar container and will also use the `spec.initConfig` to configure the logs related settings. Here is the yaml of our pgpool: +```yaml +apiVersion: kubedb.com/v1alpha2 +kind: Pgpool +metadata: + name: pgpool-custom-sidecar + namespace: demo +spec: + version: "4.4.5" + replicas: 1 + postgresRef: + name: ha-postgres + namespace: demo + podTemplate: + spec: + containers: + - name: pgpool + volumeMounts: + - mountPath: /tmp/pgpool_log + name: data + readOnly: false + - name: filebeat + image: repository_name/custom_filebeat:latest + volumeMounts: + - mountPath: /tmp/pgpool_log + name: data + readOnly: true + volumes: + - name: data + emptyDir: {} + initConfig: + pgpoolConfig: + log_destination : 'stderr' + logging_collector : on + log_directory : '/tmp/pgpool_log' + log_filename : 'pgpool-%Y-%m-%d_%H%M%S.log' + log_file_mode : 0777 + log_truncate_on_rotation : off + log_rotation_age : 1d + log_rotation_size : 10MB + deletionPolicy: WipeOut +``` +```bash +$ kubectl create -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/pgpool/configuration/pgpool-config-sidecar.yaml +pgpool.kubedb.com/pgpool-custom-sidecar created +``` +Now, wait a few minutes. KubeDB operator will create necessary petset, services, secret etc. If everything goes well, we will see that a pod with the name `pp-misc-config-0` has been created. + +Check that the petset's pod is running + +```bash +$ kubectl get pod -n demo +NAME READY STATUS RESTARTS AGE +pgpool-custom-sidecar-0 2/2 Running 0 33s + +``` + +Now, Let’s fetch the logs shipped to filebeat console output. The outputs will be generated in json format. + +```bash +$ kubectl logs -f -n demo pgpool-custom-sidecar-0 -c filebeat +``` +We will find the query logs in filebeat console output. Sample output: +```json +{ + "@timestamp": "2024-08-14T06:14:38.461Z", + "@metadata": { + "beat": "filebeat", + "type": "_doc", + "version": "7.17.1" + }, + "host": { + "name": "pgpool-custom-sidecar-0" + }, + "agent": { + "ephemeral_id": "17afa770-9fe2-450c-a4fd-eae1301fa3f5", + "id": "3833c41c-e37c-49d7-9881-bf4a4796d31d", + "name": "pgpool-custom-sidecar-0", + "type": "filebeat", + "version": "7.17.1", + "hostname": "pgpool-custom-sidecar-0" + }, + "log": { + "offset": 2913, + "file": { + "path": "/tmp/pgpool_log/pgpool-2024-08-14_061421.log" + } + }, + "message": "2024-08-14 06:14:33.919: [unknown] pid 70: LOG: pool_send_and_wait: Error or notice message from backend: : DB node id: 0 backend pid: 20986 statement: \"create table if not exists kubedb_write_check_pgpool (health_key varchar(50) NOT NULL, health_value varchar(50) NOT NULL, PRIMARY KEY (health_key));\" message: \"relation \"kubedb_write_check_pgpool\" already exists, skipping\"", + "input": { + "type": "log" + }, + "ecs": { + "version": "1.12.0" + } +} +``` +So, we have successfully extracted logs from pgpool to our sidecar filebeat container. + ## Cleaning up To clean up the Kubernetes resources created by this tutorial, run: ```bash kubectl delete -n demo pp/pp-misc-config +kubectl delete -n demo pp/pgpool-custom-sidecar kubectl delete -n demo pg/ha-postgres kubectl delete ns demo ``` diff --git a/docs/guides/pgpool/scaling/horizontal-scaling/horizontal-ops.md b/docs/guides/pgpool/scaling/horizontal-scaling/horizontal-ops.md index 8cbea8b186..88f29e71b8 100644 --- a/docs/guides/pgpool/scaling/horizontal-scaling/horizontal-ops.md +++ b/docs/guides/pgpool/scaling/horizontal-scaling/horizontal-ops.md @@ -3,7 +3,7 @@ title: Horizontal Scaling Pgpool menu: docs_{{ .version }}: identifier: pp-horizontal-scaling-ops - name: pp-horizontal-scaling-ops + name: HorizontalScaling OpsRequest parent: pp-horizontal-scaling weight: 20 menu_name: docs_{{ .version }} diff --git a/docs/guides/pgpool/scaling/vertical-scaling/vertical-ops.md b/docs/guides/pgpool/scaling/vertical-scaling/vertical-ops.md index def3657be7..6585d7d099 100644 --- a/docs/guides/pgpool/scaling/vertical-scaling/vertical-ops.md +++ b/docs/guides/pgpool/scaling/vertical-scaling/vertical-ops.md @@ -3,7 +3,7 @@ title: Vertical Scaling Pgpool menu: docs_{{ .version }}: identifier: pp-vertical-scaling-ops - name: pp-vertical-scaling-ops + name: VerticalScaling OpsRequest parent: pp-vertical-scaling weight: 20 menu_name: docs_{{ .version }} From 479cc28fe3f783f31b76d19de2500c30c5b8897f Mon Sep 17 00:00:00 2001 From: MobarakHsn Date: Wed, 14 Aug 2024 15:00:01 +0600 Subject: [PATCH 16/16] Add nodeselector, taints and tolerations examples Signed-off-by: MobarakHsn --- .../configuration/pgpool-node-selector.yaml | 16 + .../pgpool-with-tolerations.yaml | 19 ++ .../pgpool-without-tolerations.yaml | 12 + .../pgpool/configuration/using-podtemplate.md | 287 +++++++++++++++++- 4 files changed, 331 insertions(+), 3 deletions(-) create mode 100644 docs/examples/pgpool/configuration/pgpool-node-selector.yaml create mode 100644 docs/examples/pgpool/configuration/pgpool-with-tolerations.yaml create mode 100644 docs/examples/pgpool/configuration/pgpool-without-tolerations.yaml diff --git a/docs/examples/pgpool/configuration/pgpool-node-selector.yaml b/docs/examples/pgpool/configuration/pgpool-node-selector.yaml new file mode 100644 index 0000000000..1810035bb2 --- /dev/null +++ b/docs/examples/pgpool/configuration/pgpool-node-selector.yaml @@ -0,0 +1,16 @@ +apiVersion: kubedb.com/v1alpha2 +kind: Pgpool +metadata: + name: pgpool-node-selector + namespace: demo +spec: + version: "4.4.5" + replicas: 1 + postgresRef: + name: ha-postgres + namespace: demo + podTemplate: + spec: + nodeSelector: + disktype: ssd + deletionPolicy: WipeOut \ No newline at end of file diff --git a/docs/examples/pgpool/configuration/pgpool-with-tolerations.yaml b/docs/examples/pgpool/configuration/pgpool-with-tolerations.yaml new file mode 100644 index 0000000000..7e7c373d97 --- /dev/null +++ b/docs/examples/pgpool/configuration/pgpool-with-tolerations.yaml @@ -0,0 +1,19 @@ +apiVersion: kubedb.com/v1alpha2 +kind: Pgpool +metadata: + name: pgpool-with-tolerations + namespace: demo +spec: + version: "4.4.5" + replicas: 1 + postgresRef: + name: ha-postgres + namespace: demo + podTemplate: + spec: + tolerations: + - key: "key1" + operator: "Equal" + value: "node1" + effect: "NoSchedule" + deletionPolicy: WipeOut \ No newline at end of file diff --git a/docs/examples/pgpool/configuration/pgpool-without-tolerations.yaml b/docs/examples/pgpool/configuration/pgpool-without-tolerations.yaml new file mode 100644 index 0000000000..c8ab025cee --- /dev/null +++ b/docs/examples/pgpool/configuration/pgpool-without-tolerations.yaml @@ -0,0 +1,12 @@ +apiVersion: kubedb.com/v1alpha2 +kind: Pgpool +metadata: + name: pgpool-without-tolerations + namespace: demo +spec: + version: "4.4.5" + replicas: 1 + postgresRef: + name: ha-postgres + namespace: demo + deletionPolicy: WipeOut \ No newline at end of file diff --git a/docs/guides/pgpool/configuration/using-podtemplate.md b/docs/guides/pgpool/configuration/using-podtemplate.md index 92662f1a04..b288c57ce9 100644 --- a/docs/guides/pgpool/configuration/using-podtemplate.md +++ b/docs/guides/pgpool/configuration/using-podtemplate.md @@ -250,7 +250,7 @@ spec: $ kubectl create -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/pgpool/configuration/pgpool-config-sidecar.yaml pgpool.kubedb.com/pgpool-custom-sidecar created ``` -Now, wait a few minutes. KubeDB operator will create necessary petset, services, secret etc. If everything goes well, we will see that a pod with the name `pp-misc-config-0` has been created. +Now, wait a few minutes. KubeDB operator will create necessary petset, services, secret etc. If everything goes well, we will see that a pod with the name `pgpool-custom-sidecar-0` has been created. Check that the petset's pod is running @@ -303,13 +303,294 @@ We will find the query logs in filebeat console output. Sample output: ``` So, we have successfully extracted logs from pgpool to our sidecar filebeat container. +## Using Node Selector + +Here in this example we will use [node selector](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/) to schedule our pgpool pod to a specific node. Applying nodeSelector to the Pod involves several steps. We first need to assign a label to some node that will be later used by the `nodeSelector` . Let’s find what nodes exist in your cluster. To get the name of these nodes, you can run: + +```bash +$ kubectl get nodes --show-labels +NAME STATUS ROLES AGE VERSION LABELS +lke212553-307295-339173d10000 Ready 36m v1.30.3 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/instance-type=g6-dedicated-4,beta.kubernetes.io/os=linux,failure-domain.beta.kubernetes.io/region=ap-south,kubernetes.io/arch=amd64,kubernetes.io/hostname=lke212553-307295-339173d10000,kubernetes.io/os=linux,lke.linode.com/pool-id=307295,node.k8s.linode.com/host-uuid=618158120a299c6fd37f00d01d355ca18794c467,node.kubernetes.io/instance-type=g6-dedicated-4,topology.kubernetes.io/region=ap-south,topology.linode.com/region=ap-south +lke212553-307295-5541798e0000 Ready 36m v1.30.3 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/instance-type=g6-dedicated-4,beta.kubernetes.io/os=linux,failure-domain.beta.kubernetes.io/region=ap-south,kubernetes.io/arch=amd64,kubernetes.io/hostname=lke212553-307295-5541798e0000,kubernetes.io/os=linux,lke.linode.com/pool-id=307295,node.k8s.linode.com/host-uuid=75cfe3dbbb0380f1727efc53f5192897485e95d5,node.kubernetes.io/instance-type=g6-dedicated-4,topology.kubernetes.io/region=ap-south,topology.linode.com/region=ap-south +lke212553-307295-5b53c5520000 Ready 36m v1.30.3 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/instance-type=g6-dedicated-4,beta.kubernetes.io/os=linux,failure-domain.beta.kubernetes.io/region=ap-south,kubernetes.io/arch=amd64,kubernetes.io/hostname=lke212553-307295-5b53c5520000,kubernetes.io/os=linux,lke.linode.com/pool-id=307295,node.k8s.linode.com/host-uuid=792bac078d7ce0e548163b9423416d7d8c88b08f,node.kubernetes.io/instance-type=g6-dedicated-4,topology.kubernetes.io/region=ap-south,topology.linode.com/region=ap-south +``` +As you see, we have three nodes in the cluster: lke212553-307295-339173d10000, lke212553-307295-5541798e0000, and lke212553-307295-5b53c5520000. + +Next, select a node to which you want to add a label. For example, let’s say we want to add a new label with the key `disktype` and value ssd to the `lke212553-307295-5541798e0000` node, which is a node with the SSD storage. To do so, run: +```bash +$ kubectl label nodes lke212553-307295-5541798e0000 disktype=ssd +node/lke212553-307295-5541798e0000 labeled +``` +As you noticed, the command above follows the format `kubectl label nodes =` . +Finally, let’s verify that the new label was added by running: +```bash + $ kubectl get nodes --show-labels +NAME STATUS ROLES AGE VERSION LABELS +lke212553-307295-339173d10000 Ready 41m v1.30.3 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/instance-type=g6-dedicated-4,beta.kubernetes.io/os=linux,failure-domain.beta.kubernetes.io/region=ap-south,kubernetes.io/arch=amd64,kubernetes.io/hostname=lke212553-307295-339173d10000,kubernetes.io/os=linux,lke.linode.com/pool-id=307295,node.k8s.linode.com/host-uuid=618158120a299c6fd37f00d01d355ca18794c467,node.kubernetes.io/instance-type=g6-dedicated-4,topology.kubernetes.io/region=ap-south,topology.linode.com/region=ap-south +lke212553-307295-5541798e0000 Ready 41m v1.30.3 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/instance-type=g6-dedicated-4,beta.kubernetes.io/os=linux,disktype=ssd,failure-domain.beta.kubernetes.io/region=ap-south,kubernetes.io/arch=amd64,kubernetes.io/hostname=lke212553-307295-5541798e0000,kubernetes.io/os=linux,lke.linode.com/pool-id=307295,node.k8s.linode.com/host-uuid=75cfe3dbbb0380f1727efc53f5192897485e95d5,node.kubernetes.io/instance-type=g6-dedicated-4,topology.kubernetes.io/region=ap-south,topology.linode.com/region=ap-south +lke212553-307295-5b53c5520000 Ready 41m v1.30.3 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/instance-type=g6-dedicated-4,beta.kubernetes.io/os=linux,failure-domain.beta.kubernetes.io/region=ap-south,kubernetes.io/arch=amd64,kubernetes.io/hostname=lke212553-307295-5b53c5520000,kubernetes.io/os=linux,lke.linode.com/pool-id=307295,node.k8s.linode.com/host-uuid=792bac078d7ce0e548163b9423416d7d8c88b08f,node.kubernetes.io/instance-type=g6-dedicated-4,topology.kubernetes.io/region=ap-south,topology.linode.com/region=ap-south +``` +As you see, the lke212553-307295-5541798e0000 now has a new label disktype=ssd. To see all labels attached to the node, you can also run: +```bash +$ kubectl describe node "lke212553-307295-5541798e0000" +Name: lke212553-307295-5541798e0000 +Roles: +Labels: beta.kubernetes.io/arch=amd64 + beta.kubernetes.io/instance-type=g6-dedicated-4 + beta.kubernetes.io/os=linux + disktype=ssd + failure-domain.beta.kubernetes.io/region=ap-south + kubernetes.io/arch=amd64 + kubernetes.io/hostname=lke212553-307295-5541798e0000 + kubernetes.io/os=linux + lke.linode.com/pool-id=307295 + node.k8s.linode.com/host-uuid=75cfe3dbbb0380f1727efc53f5192897485e95d5 + node.kubernetes.io/instance-type=g6-dedicated-4 + topology.kubernetes.io/region=ap-south + topology.linode.com/region=ap-south +``` +Along with the `disktype=ssd` label we’ve just added, you can see other labels such as `beta.kubernetes.io/arch` or `kubernetes.io/hostname`. These are all default labels attached to Kubernetes nodes. + +Now let's create a pgpool with this new label as nodeSelector. Below is the yaml we are going to apply: +```yaml +apiVersion: kubedb.com/v1alpha2 +kind: Pgpool +metadata: + name: pgpool-node-selector + namespace: demo +spec: + version: "4.4.5" + replicas: 1 + postgresRef: + name: ha-postgres + namespace: demo + podTemplate: + spec: + nodeSelector: + disktype: ssd + deletionPolicy: WipeOut +``` +```bash +$ kubectl create -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/pgpool/configuration/pgpool-node-selector.yaml +pgpool.kubedb.com/pgpool-node-selector created +``` +Now, wait a few minutes. KubeDB operator will create necessary petset, services, secret etc. If everything goes well, we will see that a pod with the name `pgpool-node-selector-0` has been created. + +Check that the petset's pod is running + +```bash +$ kubectl get pods -n demo +NAME READY STATUS RESTARTS AGE +pgpool-node-selector-0 1/1 Running 0 60s +``` +As we see the pod is running, you can verify that by running `kubectl get pods -n demo pgpool-node-selector-0 -o wide` and looking at the “NODE” to which the Pod was assigned. +```bash +$ kubectl get pods -n demo pgpool-node-selector-0 -o wide +NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES +pgpool-node-selector-0 1/1 Running 0 3m19s 10.2.1.7 lke212553-307295-5541798e0000 +``` +We can successfully verify that our pod was scheduled to our desired node. + +## Using Taints and Tolerations + +Here in this example we will use [Taints and Tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) to schedule our pgpool pod to a specific node and also prevent from scheduling to nodes. Applying taints and tolerations to the Pod involves several steps. Let’s find what nodes exist in your cluster. To get the name of these nodes, you can run: + +```bash +$ kubectl get nodes --show-labels +NAME STATUS ROLES AGE VERSION LABELS +lke212553-307295-339173d10000 Ready 36m v1.30.3 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/instance-type=g6-dedicated-4,beta.kubernetes.io/os=linux,failure-domain.beta.kubernetes.io/region=ap-south,kubernetes.io/arch=amd64,kubernetes.io/hostname=lke212553-307295-339173d10000,kubernetes.io/os=linux,lke.linode.com/pool-id=307295,node.k8s.linode.com/host-uuid=618158120a299c6fd37f00d01d355ca18794c467,node.kubernetes.io/instance-type=g6-dedicated-4,topology.kubernetes.io/region=ap-south,topology.linode.com/region=ap-south +lke212553-307295-5541798e0000 Ready 36m v1.30.3 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/instance-type=g6-dedicated-4,beta.kubernetes.io/os=linux,failure-domain.beta.kubernetes.io/region=ap-south,kubernetes.io/arch=amd64,kubernetes.io/hostname=lke212553-307295-5541798e0000,kubernetes.io/os=linux,lke.linode.com/pool-id=307295,node.k8s.linode.com/host-uuid=75cfe3dbbb0380f1727efc53f5192897485e95d5,node.kubernetes.io/instance-type=g6-dedicated-4,topology.kubernetes.io/region=ap-south,topology.linode.com/region=ap-south +lke212553-307295-5b53c5520000 Ready 36m v1.30.3 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/instance-type=g6-dedicated-4,beta.kubernetes.io/os=linux,failure-domain.beta.kubernetes.io/region=ap-south,kubernetes.io/arch=amd64,kubernetes.io/hostname=lke212553-307295-5b53c5520000,kubernetes.io/os=linux,lke.linode.com/pool-id=307295,node.k8s.linode.com/host-uuid=792bac078d7ce0e548163b9423416d7d8c88b08f,node.kubernetes.io/instance-type=g6-dedicated-4,topology.kubernetes.io/region=ap-south,topology.linode.com/region=ap-south +``` +As you see, we have three nodes in the cluster: lke212553-307295-339173d10000, lke212553-307295-5541798e0000, and lke212553-307295-5b53c5520000. + +Next, we are going to taint these nodes. +```bash +$ kubectl taint nodes lke212553-307295-339173d10000 key1=node1:NoSchedule +node/lke212553-307295-339173d10000 tainted + +$ kubectl taint nodes lke212553-307295-5541798e0000 key1=node2:NoSchedule +node/lke212553-307295-5541798e0000 tainted + +$ kubectl taint nodes lke212553-307295-5b53c5520000 key1=node3:NoSchedule +node/lke212553-307295-5b53c5520000 tainted +``` +Let's see our tainted nodes here, +```bash +$ kubectl get nodes -o json | jq -r '.items[] | select(.spec.taints != null) | .metadata.name, .spec.taints' +lke212553-307295-339173d10000 +[ + { + "effect": "NoSchedule", + "key": "key1", + "value": "node1" + } +] +lke212553-307295-5541798e0000 +[ + { + "effect": "NoSchedule", + "key": "key1", + "value": "node2" + } +] +lke212553-307295-5b53c5520000 +[ + { + "effect": "NoSchedule", + "key": "key1", + "value": "node3" + } +] +``` +We can see that our taints were successfully assigned. Now let's try to create a pgpool without proper tolerations. Here is the yaml of pgpool we are going to createc +```yaml +apiVersion: kubedb.com/v1alpha2 +kind: Pgpool +metadata: + name: pgpool-without-tolerations + namespace: demo +spec: + version: "4.4.5" + replicas: 1 + postgresRef: + name: ha-postgres + namespace: demo + deletionPolicy: WipeOut +``` +```bash +$ kubectl create -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/pgpool/configuration/pgpool-without-tolerations.yaml +pgpool.kubedb.com/pgpool-without-tolerations created +``` +Now, wait a few minutes. KubeDB operator will create necessary petset, services, secret etc. If everything goes well, we will see that a pod with the name `pgpool-without-tolerations-0` has been created and running. + +Check that the petset's pod is running or not, +```bash +$ kubectl get pods -n demo +NAME READY STATUS RESTARTS AGE +pgpool-without-tolerations-0 0/1 Pending 0 3m35s +``` +Here we can see that the pod is not running. So let's describe the pod, +```bash +$ kubectl describe pods -n demo pgpool-without-tolerations-0 +Name: pgpool-without-tolerations-0 +Namespace: demo +Priority: 0 +Service Account: default +Node: +Labels: app.kubernetes.io/component=connection-pooler + app.kubernetes.io/instance=pgpool-without-tolerations + app.kubernetes.io/managed-by=kubedb.com + app.kubernetes.io/name=pgpools.kubedb.com + apps.kubernetes.io/pod-index=0 + controller-revision-hash=pgpool-without-tolerations-5b85f9cd + statefulset.kubernetes.io/pod-name=pgpool-without-tolerations-0 +Annotations: +Status: Pending +IP: +IPs: +Controlled By: PetSet/pgpool-without-tolerations +Containers: + pgpool: + Image: ghcr.io/appscode-images/pgpool2:4.4.5@sha256:7f2537e3dc69dae2cebea3500502e6a2b764b42911881e623195eeed32569217 + Ports: 9999/TCP, 9595/TCP + Host Ports: 0/TCP, 0/TCP + SeccompProfile: RuntimeDefault + Limits: + memory: 1Gi + Requests: + cpu: 500m + memory: 1Gi + Environment: + POSTGRES_USERNAME: postgres + POSTGRES_PASSWORD: 5ja8dHF79x4o6Ot6 + PGPOOL_PCP_USER: Optional: false + PGPOOL_PCP_PASSWORD: Optional: false + PGPOOL_PASSWORD_ENCRYPTION_METHOD: scram-sha-256 + PGPOOL_ENABLE_POOL_PASSWD: true + PGPOOL_SKIP_PASSWORD_ENCRYPTION: false + Mounts: + /config from pgpool-config (rw) + /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-69qx2 (ro) +Conditions: + Type Status + PodScheduled False +Volumes: + pgpool-config: + Type: Secret (a volume populated by a Secret) + SecretName: pgpool-without-tolerations-config + Optional: false + kube-api-access-69qx2: + Type: Projected (a volume that contains injected data from multiple sources) + TokenExpirationSeconds: 3607 + ConfigMapName: kube-root-ca.crt + ConfigMapOptional: + DownwardAPI: true +QoS Class: Burstable +Node-Selectors: +Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s + node.kubernetes.io/unreachable:NoExecute op=Exists for 300s +Topology Spread Constraints: kubernetes.io/hostname:ScheduleAnyway when max skew 1 is exceeded for selector app.kubernetes.io/component=connection-pooler,app.kubernetes.io/instance=pgpool-without-tolerations,app.kubernetes.io/managed-by=kubedb.com,app.kubernetes.io/name=pgpools.kubedb.com + topology.kubernetes.io/zone:ScheduleAnyway when max skew 1 is exceeded for selector app.kubernetes.io/component=connection-pooler,app.kubernetes.io/instance=pgpool-without-tolerations,app.kubernetes.io/managed-by=kubedb.com,app.kubernetes.io/name=pgpools.kubedb.com +Events: + Type Reason Age From Message + ---- ------ ---- ---- ------- + Warning FailedScheduling 5m20s default-scheduler 0/3 nodes are available: 1 node(s) had untolerated taint {key1: node1}, 1 node(s) had untolerated taint {key1: node2}, 1 node(s) had untolerated taint {key1: node3}. preemption: 0/3 nodes are available: 3 Preemption is not helpful for scheduling. + Warning FailedScheduling 11s default-scheduler 0/3 nodes are available: 1 node(s) had untolerated taint {key1: node1}, 1 node(s) had untolerated taint {key1: node2}, 1 node(s) had untolerated taint {key1: node3}. preemption: 0/3 nodes are available: 3 Preemption is not helpful for scheduling. + Normal NotTriggerScaleUp 13s (x31 over 5m15s) cluster-autoscaler pod didn't trigger scale-up: +``` +Here we can see that the pod has no tolerations for the tainted nodes and because of that the pod is not able to scheduled. + +So, let's add proper tolerations and create another pgpool. Here is the yaml we are going to apply, +```yaml +apiVersion: kubedb.com/v1alpha2 +kind: Pgpool +metadata: + name: pgpool-with-tolerations + namespace: demo +spec: + version: "4.4.5" + replicas: 1 + postgresRef: + name: ha-postgres + namespace: demo + podTemplate: + spec: + tolerations: + - key: "key1" + operator: "Equal" + value: "node1" + effect: "NoSchedule" + deletionPolicy: WipeOut +``` + +```bash +$ kubectl create -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/pgpool/configuration/pgpool-with-tolerations.yaml +pgpool.kubedb.com/pgpool-with-tolerations created +``` +Now, wait a few minutes. KubeDB operator will create necessary petset, services, secret etc. If everything goes well, we will see that a pod with the name `pgpool-with-tolerations-0` has been created. + +Check that the petset's pod is running + +```bash +$ kubectl get pods -n demo +NAME READY STATUS RESTARTS AGE +pgpool-with-tolerations-0 1/1 Running 0 2m +``` +As we see the pod is running, you can verify that by running `kubectl get pods -n demo pgpool-with-tolerations-0 -o wide` and looking at the “NODE” to which the Pod was assigned. +```bash +$ kubectl get pods -n demo pgpool-with-tolerations-0 -o wide +NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES +pgpool-with-tolerations-0 1/1 Running 0 3m49s 10.2.0.8 lke212553-307295-339173d10000 +``` +We can successfully verify that our pod was scheduled to the node which it has tolerations. + ## Cleaning up To clean up the Kubernetes resources created by this tutorial, run: ```bash -kubectl delete -n demo pp/pp-misc-config -kubectl delete -n demo pp/pgpool-custom-sidecar +kubectl delete -n demo pp pp-misc-config pgpool-custom-sidecar pgpool-node-selector pgpool-with-tolerations pgpool-without-tolerations kubectl delete -n demo pg/ha-postgres kubectl delete ns demo ```

Pk(ZY+6&65&M>?a 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 AWdHyG From 0e92b5c9056197061fdb8f7e46839ecbd6544908 Mon Sep 17 00:00:00 2001 From: MobarakHsn Date: Mon, 29 Jul 2024 11:59:12 +0600 Subject: [PATCH 08/16] Add image Signed-off-by: MobarakHsn --- .../pgpool/pp-horizontal-scaling.png | Bin 0 -> 105036 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/images/day-2-operation/pgpool/pp-horizontal-scaling.png diff --git a/docs/images/day-2-operation/pgpool/pp-horizontal-scaling.png b/docs/images/day-2-operation/pgpool/pp-horizontal-scaling.png new file mode 100644 index 0000000000000000000000000000000000000000..90eb46802d55f0e5b1042fa2e1739af050af2045 GIT binary patch literal 105036 zcmeFZWn5J6+BU3$h=i0#gA6GtNHg@%=qTMtH%du|O83x6iF9`ispQZ~HwZ)b(ETj< z@4cUW-|ze7{r>WS9|JRMt?N4LIFIwV2!8uU78i>g>)yS4xbkuk<$L$gQTOgWkioG*Y8RTGm9d-~rwG+nP=39cT@y39Lv+D!_2h|okP zR5~`-u5R@Srmvn{oq2kSW77KJOaAli#nGuI&GY}fr1gsxWk&ti-}mqR|1baVZvB7W z4Xo~**U4p8qbzKiW%nx02Rmorj{D0A21c{>&ZkR}Vnu~Sw}yyP4zl&&CM2N;S*qkX z!z5PDA=Pgj>ig^S5GH*){$+fIK`HTOdQPKdsRJ^{>mcwr_KTox{D87gf8=^rz&pICtx9JCwqo%sh?8b(vhooc z299_P}XVx8aUEh)SK!Za@4EZ8{V95 z;xJiET2s7`M#YaSePo_{zaE{girobF#IY{<+?@EtwHGR9W0f@Q2szJtj_&zfull?# z(G@&$^~WL}aj$5WYpSuGHrk%59+SF@tEfW6=rgzM2-X)Ujx3OnT(j&2$R@;k+-&+7 zydL>TN1E@M?N=K{L~&>Tr*C?uNC@cKeplKspdx$x`MWlXe!hR zSYS6Lhko91(q1RXntV?JXCwwL`9dgX^G~0f3xmzScL9q~`_2p+tYLc0r6){uYec|Qdx9BgrZO6;@C1dlUS9x-4pi)_M!Y32E#og{_!^pKUEjqx}#$1pzjOMPZb%G zXG%#vqpP^Q?Q*ql#-ySQ403<6zo^0`84TXkv`Gs6K`<%!fMCT5OTstW`hJl1(rU}oY> zECXb^5n=r1D0Fk^%Dwn}mS_6CJ@cH!>MPYeZj9P4hV_$EL=F2FLmFVUDjHSO#ml z=o-_+9_Yw`<}8US$J^=bUYqS~lpSjN^|-0wNY8k$8oQ+wZthC=O1L#$5(sH(+?$FL z;%TQn*f^A|I7k_m5u_<33z#_4ww{bC&m;MgLgb;VfHa*lAej^`GuSziUg;5NFYR|z zcXKJOrZttJj6Oz|ME0go?YK5oH%k8+9pX(L#M{WA;kiUVmW^HwW_M&lj_7_`;){X&OdRks6@HO5MtJXD_*M+%N^j@MX{Isi%Q!SZlHG zgW#>y^GwWGFIJ9@NS%RAhbxJFdJH7hb6%b-6>0}IPVRAm`uy{Y74Lp8>wxDD3I&z* zy#eh5-VsZOFShF3v^yu$cL`Ue?skho7WvRgzDLi#M(jz3!wzv9>^U~l*_M9r7oOoO z-G*{AB^>ALYYtA-r8b1_Onh#T?*nivzTVy1@2f0ou}4S|BEPlQW7XRY29t_vtmmTC zc;ih3fHOW}Mx{`SxIaaE^rW4=cE$)(V4U;gStKj1Y(lR!T5=-mJG%Qr$gErS{=7+R>?{Sp~s-XSsKt~CDa(RYbTIz0~#oWt-)@F_#S3so2x zK-fO^l!FIGk9d1wz67BTV=5_c#Ouy@dqZRsgPI!CZl;(6x9a^6QtE{657)88#dxoE zN7^A-+Q%+0VCIUi#jD)HM95@Ir7<6j!2LmQI;U9I;8vDe9QO=oJu)<)iuHa%^;F|w zJOxCLY5ksZK6QH&9UYBNNcf{*A5yU%(%1@tqj@#f`;09BlH9H*FJ9zkj_LViX#4iIWsW!fl}7)-1&j#UI;~I~$0A-C`7U z)`BHi`cOR>@kX15(Ar55Mkg?U3>9!d$s{p|S23v}iSZGu>(k(8WbWW5hx=>Qo%I#| zTP6_R3Ng<4dw$0e(yh_-^z8EDmwC*7W3b&#>8Ebz)k716j-ichZv=B#4~sOHHT5UB zqrePU1ndr-_Yd<)gZ3;1i4>3wD4S#>e9)j`0eN5-oqf_3uO@!v#OJ@5JfV$W(l*mH z{g`2^lv00QYdFR6ami&M==`DxKZ6Fl6S<7vR$HktOwaU->O>)Gl-F2g7YGzY*PG~Ly_Kv-BZ$qBXAuHJfW-g^n0xQh1$L1y3 z+QrNNGy*F9zG_wZp_K6tCZww2%Ui(p8JQDXSyA%$dG8lKB^09{7z*06~zK3 zqk*#QSG5oKLa3im@b$SX+~o`;)>~3oAlg1A(V5DCn1*vKA}uTJbAad2(jT}&2BmI% zci8vs%hBexoaMggiL`hxb9=E;rP2>r$V3;_#gTQw_s*HZUzebMsgv*h#6QpOHo`i)xII_w`$6mxq9bU!b9l9yf=BV9c#bjsj%w zUQ?U1AZl^zfqRp1Y5f(@s&$?;HI{n` zU)G_0(e6A4H5ok1jxYLAAl(lrTXg>gfQ6Nd-XbTp>ORuiHSWt8Uka^1D>T(H1TB^* zXDe_-hSHD3ybo$8f-^-{TMl>r-~D5TnKKy&I37cj9@j{tgBoO?vmt2HJPQJzPw`ad z6+Z2uJ>gESFNNqfeT0OENEb0Y9++egSv|Ew#+Ll9DCK;07JzVdr6P>-qJ8*hNKdVP ztR_@uW(%EODNM#SDlCR%O&~#=Ko0*`784|DoL2zHki89mDF-dY))q%HPScUPv_R~^ zS4sRK9?bg#lgeH!Q|Z0#SGpCBknB=1$th`2g`$AuhCoZhc<9F<=A=~hc5OHibiq=s zGwAKO5#n;M#n3SnPTnWk^KzUZapN7Gz4~Vw)yermgLwt2Es^4WHI+9JCXMwQ$K$1L z2vZi+5I)_5*Y%~M)WK`-?1Rz?L-Y6|R(GaBV-o{;+Of{b0nf|gjR~=UTRC?XQ-49c z+dm$EPR%7EwOwlc{K4qKk@WBP=JI+HgKB0hb{ny^{d5Gc`mgm9VUFJ3{d!E!x3=(% zb%VLA{ib!=9Anqe&^&`PtGT%wVZ)0JT12O6Y(oQSyfwQeVXhS)1S1fl@M4`>4)r2U zLlNG)0-)UbR2})4tk(#iU~3ouMYIC|$tSV*^WlZxb+g~<_d1P3$9EGVkV@}qpI)8r zEUR{gVWNj5Mthx~)8&O4ck1f6KXB(A6ioYYB<^>l2>GUJm(R5>iN9I2sF?gL;$Bl^ z2vD!111ALmNdDqakOdj0PgC<$r}qrsyP$cKZS9os*cUL&QPhB21Z}FZgW6|PHrW22 z!`OZyNr?U{WmxJ4rErOU>^rTs9bG+xS0|-$t*Hp23T6Cpk@kt&52^T&h}SYJ-#o)$ zE)&hRACeB+4#Co6)u9s6@F{j-vOfb{SVsq8?+E!Ry4%_a^8E8K=T~4sddb0ImJvx& zSM~JETe;s?-GzuBd$l?ob57@-NIe)*BB}&3{0r}%M#OZJ2Y+j8tEzL#j&`AGn&tbqexQO@`k#lRE_iUa1tWQ>*@O; zG@Vb3+<4|X$JE>`0sUerB^#H|??WU|!3zb{5$ zz`ms0CE!H6>Sm@rI0>n_a*0k_Uhyxxp?-C2^1Q8n%Spe~{{G<6mn*LdCS1#l;@wBL z*-$!(#7(ExPWtWJsEsGA58hylux~oKXtM7h?X_fG+Tu*zFNL)| z_3Sz|3*AiVeQHTewV;#plihS{y}NZv2AN00^GI5Sy5Q=$WX4zu{^n^%t{P9FLK?u| zpSn%d+0*UREj^K%NXkxeGr|&i95B=4#eM=g4@PG*Xa-x2mxRZ&>lj_0?hAMv7ahID zO3FCi@1l_fI$<0#&1?nY#_RLVF*TrQ-#Lz91dJ4DUdWoJgv_-1pwv`d!8%MX`=k2EqE?1_ZQj$9*29r`p3yhb(O z+_hhr`zAJW$rPrDm&TNEZ3#>o&8be~`Lk&^M_LcYlQi5u%Mho)G zQEBcQFRDJwQ&R~!iJ$DuswIrCty%OX^WzD-?5M`5-|``k@Tl9nW0;B?R4O<`MfHOP z$*`d;r&$iWE6E?!)m%JIc6i591?)i&(9qPR=U7V{ji#{wF~glL;4cn9P!<#fS#33{ z;Oryfbq93Btuv@kldDjVm;V-<_V|iX!larGLETxJG9Pybz z`}Xf=kCp-gz|zvPK*6pfgt*gKOG~Q&dkc7!u-OI|u95gcJ=Enbd`{eVDFce?lW#6u}VZb9H{yR-{!KwseP#{#k@kc3&vi zC5)8o0YHKkuogMR#C0>96bY|$6q?t@*;R7C^VgbLmPK|~eA=G+i-6IMwf*-qGCg&( zBNcSWBCj1_o3F}>!2-kF>kEstrj|93B4@~$r*3yfNLX0x2*qi8>Hmb*&z03w8`-Vt zvN=}Vwwmr!VwO27C!HoI7_9m?xNex(O?wC)Ue{^+6yI@S-FeIa1DLZ$1zkzYW-Vw%T}gr{d?xe^P?$vL%oR4g>8 zGDPSqvB7jqj$yuXP&71CHnPCDJFw5|WHz^RHfBkA1?W>~{oW$Ea8#<^A_*iL+o78 z$q$nirk!qgdmF39j3Nzqp>Rug%_$@iyA2hq*Y_%9>&3CCy)^41HJgBZjL6L@uKm0(E_>0A{ zmayE8Z+!~ZB?t;p&pJg0efyR5+;qPBu`~hu2mG^6G4|lfxAeCLcu{z_y4e4$?)vfo z$}5_tx_owVVT?j{cUJt#lr6*(F7#!M2om6lgfS7j9c_%NR3gWUbu_}Kf!-FV>th)R zW6~VvTO1BpQ61TBLgKj6C-L!P8F}WwOg1kgqf9u=Jnmx$!MZ3bvD*q4%C6<=(~R@D z-r966CpR~D*ufp8`u}(w^mYB@l$0>2=oxx4{|7#58X>1VLOb=x8k8`ODyYa&EG-I2 z3Dm6+AOmjAx6BLNRtUeS3LI(bwwKb6rKxG#bzTgEI5|zmrlKk7N~Hpy$c$^>#nK|y zf4wII;n)^LK=&_hzXbHu4X5oX!>yBk@COaz0<^0nP$~7$b?qUH<7-3N*cBBOMS=fx z=x_eZnpo0l6mL=lJ_AXacwFD3_+1iHWxoP)wYT5Gx@2W|8ev=^27Gy5pRJx=?6wsD zzg|M08jM2F1q8(eb7n=C7;vd8WKJG})GGl&L7VGIAC8V4ZYIssrDbFS zjy~RnVLST&*oy}A{%^c0+)xc<@JP&tP<~Bih_GYdCeTjBF>#mbH@R!pJLMm}{O6+& z{?|uenGZnTzyD6?2za$!@z8+YVV!F<7BS000EL}6;5vUATt28T-9;7>Ed(537(y5V zmJF(ugtPrq*%S*LADddG9rD!b(t?m-T_jcaE=QRsW0nQqO%hwByZJjdbj|FF2e=ov7% zh)PR~kob!67hpS8XHBISgBywLb3d3WHInmMJqLqzowNJ<`l@z9?lOQb#{XEjhWJ35 zNT_jFgyH$&x+}o%$CY_31~dJxvDJad$Q0PsHGJA`%~#1SO1?|6QJ#|j!_arjlFM%! zhRg-WOrDxu$oFYGJ}5V!>?(rAP z+M|z11i{hr5Eb{Zt-AWNC)D7)v44E~VOIFKLUlDxEdu&&;Q~>?(R?VF=XD!5jg7L2=6LAdr87k=fST&_RNZh=rW&04y1Me3i7c5OK(R&OG=zj-!oqMiIsUPxD04q(H)gb` z(-_Pe*!y0M`d?RQK<7r=28L$k?nhQjjPoUjCvGGC;JhAK3%<}%f zZGrnh&Nu3cpz1WfTO0icg-XOGf0tV9OC`$z{^{O1O}GCfID310S0E?-$&x3!&C0I8 z#OHP_N8WpLzR5Y`vD>6D6~}3yueKbFh$*SzpZ9#lXEX8M^J5B7PzVSJ>W;>A>~F44 zmH?35F1*|LwWx^A*vAilmsVJWtb5vaED&4z_?W&uGF;+t!J=I$Om^tlW|PGaf3Z4N z9aejx@u|=h%xPNg!T#@zy$j%i4aFab8tKqy834Gl`Vs=<5N3I%FK?i_1kauY0FdnO zZp)4OG!QxzK#(SDL*o_4wSnY1dUOoH5vx>Syl8}oq7B%3wL3UJPlG3RS@!L*Mpl~V z#Dq=9@F|m@u3^P+6b}PAK|k8U=2GbIVCgM&A0cA7OrsasJ9G^~s8mkR<#0*Bdng$&!27YDn9;*RU>EeNk=undPRf?SGZPH%P!Mv0ARr zSwHQ}1gjOQXE<+;)vcy^yam8;W@u4qY3T+dE3Auwn`7?PAoweQ+$b){xs3b>9Y8Au zs`+04luaulGOKxgeX+X~uVeS_q7caZc6EO-s-aCjA`$_Zzn-yczegfq1&TX!O&<1J z6I=}Bk7={XD3k*NK;M5z)jb?J;KYC>1p7U?KE67mb9xUNaw5?GL{50&_jAxY<)`S2 zI&uzncgfW;iCP4*&JVCW@86jy1VFDBDv7%p(Xgq!S zY^R<-e=Z)(OSbu@0BM54q7or0rhWv4q^hou7HJUyKG~V{%6!E827nSclmhspg&JMP zks>)P$2_P?)syaH(3yz=Xxn6-@L-?5LKmqYPR{$g(ao{(c*+_mEH8kHme)>4o5f=! zrQGro@+4dqMNMJD>hY^Z_YWj(i|%_0-UD~WU)glq{ygn`NB+>!m+dq)98T{mee9i? z&PJ9J3Xu)(r9P?8Z7wS!C$|jJpgJ`4eogv`fgx+%dPQEGi|%hEj)qE;CZp3L!X~ zs?M@s)Kw;<@i4?BcK_JKvpG$~!|3|*Oio_@U7R~G#qR0(5dx-&u9xH0$2Y3cNf4By zpuoD>0LaoIdokl5SKj^jkk_HouHR`qJv|A^5pdKx5B(vw)O)p6>8}O%F}GuUc|zAK zZK2|-$p${A8w2_A^-drU~JR3xQ~L zkzD^G2-1s5s(b+O#rQzEdC`2Ev4c()szK291SfyniL#6WhZy?}r&_Jqel=vu%nC7q z{ZO`g4RHpOo=tZB8^-!5JNQmiN$pUFdc=#1C|d~7rQmA9W8NzJLisl z{&#HgiJt=W910NKmbbFi2CER#5L+K`tJPF(DM`SZWw4xfQqZYr#_{T3G@lE1Wnv3O zs7&jYE2R4HD-mBs`FCI+=em`2L8qmKwB z5z7ELOTFAm#a#^NLc8+bW&X~Ert2F2O@f8Mxr{sC|84azur9J;-R$-L@#9CB7d%wo9O#Hy zP?af53%|aOBFQUs>oIb(v$gOPF<;;ovHd_aM19F~7u~ab8b0zM7;J!!J0N1Gzq0l5 zH10rZg69A}5jDj0QlrD5vkDXap+BuzlO?YSs5#u}Z@Bo6{N$qPlIml}2s`>!O8=*h z2~z;GTeyMN^5zMd9476zD&ks|%=h|~tD6opIrrYyxOI(t;Z<38?4lOMl5a;hlqMzT%b?06>umVy5p#r4m)q(-%z56R8 z`zm_&Ujr0wbRJFSKMvY?8uC;7*mPNmXdfwsoLmVIu0I~DqU@sfN$RgPLMNPTh{spP z1YlUs=`Gx)os-HZapSh^04h^vea{MUl8w<&mV6?&X~@Qy5P(m@s718dV@k?~sGNb6 zx#6v=oAS*~UACr|6+m76)&1?kL|lfg=t{|a{Q?0+Oc!IDJ*1z2;q?g+>dLV6Z^@nQ;ZtY!aX+DfhUtA_#lOh0EDFP zxYCK8o??I;-T3M6~<$U=*e{Qbe)~^@A}tCcgtxdhxxrD zz%1DK>dPUYQVqld^Z(lG+ZOzm+{#7_kAAAhE_~)(uRO?h007pK&I5edc!3)0zjk|t z9c9xC8nr3^jHXf)I`dv?>I<{q!}H}!_UYQA59FUGc;V*B{VK@EfiVQrFEG8E&u`E! zM8B|I)J1)67tPok-;6zwdb_Ggk5jcf-i1eitz`Q75g`HD+NLJ7bN^Lmb7lJOmOf_j zk}hLDsqb&m$8x>aMPibeaGd{T27nyPH0%GSA?-^{uRRgW6XQ5)Je<^p9M-cbo{o3Q z0=)!-XU>NRB};g6i@i)aBey?d3=O@CO48f2#eHKAq628fK+bZ!rh(<2RSpw6N2va) zvDC5m#o11`-*g8+RRH?E#OU7phlyn*A~~8gCv*Q)#kU*Mb3dd*KVEFt8W7+Al&{&< z`3h>3!Mg91pyRcpVVwdd2;pqp`*M_hhx1R!yf65LJuj^XYiphxK%C&EUioIY0b9Y_vY_a;Fcp>Xyi3zff zv*ohlKNr`146EH-HPEAO(CvvuP>hg_me^m}!sZtV^{F?g)@5<=!}a zH=0gP6|J}mk$L4(wvfgi_LYpyx>Ol`%6iPmDys;rW7F~ZR}VO~Ygqwg%S!YQx&;;k zfQS39zwy|^R62-7(o$y>MpM%C)IlfN6>nTJMggi+M=Ph6MC%zPW!TZ?c;P`BpY69l zqv{cvOdT(wzO-=;?mjEs+#$j!aAyRSwVUZ3GpxX=A&CTt3SKWmp0tQ>Io{1Fzgc5I zrK8;Armv2FysjkQgRgL)OY0<q9q}c2N6sjVJOj z4aR?15QQehbd@F1H~tU$plC(|av1dT;SyCe7WiHfv%R|kW!;Yf`lO#(oJ z*!H32DrdlBV zq~6|?Ofj!+0SplCg{XngR4A0iQ`fYUX$QoZr)idojhm^=hF+BLySF+BoW zIfclgIH!tcQ4#_Z2i9I-3iKJscciOVfNGFp^pp0Y7E@=LIx=qL)D55@TXWOBt=#WM z7RvFk<8A2+F%r&e5}z9{0+Ow>&DQzT1J3S;DK`fXY*uet1w96)uG=RaeHQ!R2LfKl z;A;Wnw%y|tA=^Qk)hOG+?)kyR_WVi#?+u&?^K=RIV@pb5H*#6%s^T3KcQ_R|4n)V0FAs`Bv2z)`jN z=&8i2_06?bu^_n%Wu*G7%yWTL4qeU%JKxAHD3@pW&eggmJjT@}su!AF>!ww~L;GqY z1$H-fUaxI=)?(-|JR->>>qoaX)nQ(5q?5;U7yrsq&APMlkbe$Z7hD}aI>J;Xk|4qV z%s6ZI<2CeRf0sC45xSPQ5shcT4L;@6KHc+4d@eufEL?z%o>yAZ6&coD_`r#Or zwUWwuLMZ3B+9#l2ssH&?-1BTXq0>zaAlR*L0J3h>#r?(|h3&=W<*7HTK?ny3lzm|8 zm#nWQ8N@_4uejW6*-Wv(r-C*^oq6ATYUJKclPkr-#S;_5QV|bt;ed3XILeM4gNVi4 zE7>SJsCK8}))Z5B`#@9DL^%`D^a*8aq}X)j#q*lU%A;H~VCL-0zTRS}IQ8MwaJ+QF zW-uqU<^58G!QNHG)v5P|x6LUR+UBVhJMj(150!yUN#ecC2kTSiDpq@|h06}7sWd@nX2Q*< z?!wP}uINM!4(OgSe31HKa-@D~KB~^98yE7BRfX%Oke%g5e;;jy{pP-7!UvhwivCkJ z%b1=NPJYAVq43j@G%dyEt|HFnu0Bq__nnKlr^th&pjz|uA5WE_O24YwclY*vn%hSF zH}_yBzqFN-TAszM`h?c`_=L(I(9geLocZw5aA%w}eUG=(s|LfE!7-Z4>=U<bw zRKs|rNR5TgyreydjCKESSn12ln9`SQ-u?=Ghs&q$ryOvuTmi}1!L_P9;oJrDKI4`EFWViT|U@VI(=}(#3pmIAG&{hI{4?q%&M#P76>BW$tF2J z0XZyR?f-N0iz1UAd;c8azb0aIU%xVUJn&$D<70QrAIFK7eT6=7qYX3?Z{^3uTloj| zxbou2i}Z{_5xu!e^F7K&lflrhW=sAq=9vc#>5FF;9vB0XejROcO;S2_`3DqgC;Ub&fi^Omj!gFN7~l`aNmT??))w3auShTMkHF|KV9{3p0#5Q;YInFdSVPfb1oiML*OMmoxfBikf z+Qz5pb=SV@8}+CZXt-Pz7xX8W7dEw>2_TeOu{h2+;0kHvCb%QPl>rz65WRby6dz&} z*M=nDXmoblJNc)mR>&u4ZQ@kBi?AP?oB>Tq$jFGQ^8hdgS0i#l)SHnp>scOMAGvzE z`*gfuDTO!xcop|C`~$;`_9_QXdJTkE-;sP_k^^_|>Y;^iZk#5XXQ?9EWwIpyPZ#}) z`z7Rm6Rdno5thE2GIdtIK9*L#oc6Z9U5aR)u>AYiG%9GGpYw0u)iHX{;ID=6G#&09 ztsVKo*BRcQYIHMG_gwf|*>U&y4=j97dNS|N(P^N8C3t@}to*sRyOnc)F8?0xUM|YQ zSIp4P_r!tcCru^)Pn{%+1x`gE@r>R}U$F6w?7CT(sjI$!ZB&#=Fem7Orpw>DyUQ~) zd5-9H|N8v?;->!>0p0%htDE(}ts8UxbvCl_3!z|UstAk$uU`A* zl%iFuh?L%-$xU6rT{>T&dd~P|X9Lq@yyC|4JfOy^Q9TXT)|qzW>_8Pt3qFtQBjjM> z6dk8r)`g^TUZ%e(r*!0`hL4koHW&XXe_JEMhJFxJ`oThy%r5_vi&Zt@|p zy724|yP7$u+2HyoZL4%pC@F~q#}8dUc#tE(8fZv5FI1D{7sn4hzlIOGlJU%zSJ73>kGr?!d6#M z9)0-jrf9B!V*=ryJUA}rtxDq5d}`KE|C5fyBfexdgX0qM@Hw2cN;kR!n{_NVA6wet zm&NGGy5`jtbVE`Zl{3518m;^OeC1I$wew#~+kz#@Slw6!n2n=u-qc>^QtN0ZRkXp# zLw0x>14$iHQp2hq>05t~k)##*W#Tv;FCW{)Aw!8HQU0hvS6p%Mqwd=nY-@+luQ{r= z&yEu7_ZUeQkdi67Q8Cz#EtEnT93$Nih2bBWNcNCMbH6epdZzl=WV5$nOD%;PI>D-o z3eqL2D`^7GGHM$N9VMze3J-U8b8QQBidByl{CATaBSPjK`D7mg$1r52%TzHGled< z1Ywrv=2S_##)D}h0`7;*xAZ@WzUwd2!8cGPLu!LkV6>Si>Q!&w3=B2YE{I{d4YNI@ z&bMPBU=9ZmjWi6{&is0U&HCf+5&rUL-x8j=4OPpKFDS3a4Bzt+Tg9s5`RS;4H2`G3 zFd!$Fc9Qn+VVo-FV7LOwajyT*y#%ZmmVOktA7?RZ`EE1yf6i@ zWcvaFJ4@j8LN>+1yb#5LwVHoM14f-Hy#n3L%sq|pJut;WvLo-$)ntl=LI?7N2${Od z``6W(_c`L?hcNkpJCfq=Jyp5AS1Rsacn(ILm7g%hf)4Q30)l4S^ve5b_T9ksQnV=+ zl#@0}fX@|;0k0eDfoJhAss>(H3F7Xl$N!AqCg(Uamq27`C4`##&X z(Ko-)@W9`*e8Yz6Xl6k5SzOTDL7}oXTp0va1kY~2L|qATJb=o^t00$Qk*k6Yzam`L zF_L{?OiNqx<5RMZ^<(k1y9aao@UEd4xpD0S?$PS8=D{apUS=8Qs#zP_)@-bqfFSB^ z|E_udKulMW57FE|gZV`Q(1*qL;Jt$bM`HD}pdG$K*7ZYI*Yjpf{_gGC`3S&o7x(_Q zb=p@}RNxa6`vckswe8-SY;_IHo@;&gbq3?)Y{i5hz(fmPux(<~2&l#uH%nVO=Y4K$ zi;|0npSL2EN4bT#@vez8pI{e0KofE-CEaA?_moFZ}Lh(5XOcmd4{ZS1Bb2+&vuv^qDo3Sl`5j&ExnUP z&gcoo=v86Gdtqcw{+{U~5_G-dZO$8>6rAjcb+dRodp%n_R%jvC(YW)b${oRFC_~f~ z$<2a7ir9G>C^l9LMc!#^T>TIiz(K{)ItO)$xcNlWv>B2YjEhQ;q#0l?_7v#7d!73X zyw4s2{EHO8y^WmL3%${pT(=Sx5lu52$$O_Dv~g7ZGPWEA$zxz-Tm&Y$o#)&o`Vfep zJ*7x_z?p7woZrL#mg^(VCD$SLx1Gh&c(&{0fFcmEHTesG7P7pcKBQ{;eab;k20jZ_ z!~#?4!6C2&7x(4^7Q1?N#x9F+#@Uq&z4UyGF%aqa^vT~h$Zq3m?Qq#-m-viXYpJ&_ zpNKDvtN$!G4^MbV1%8iLJs)*_`fC;#vmSz~-0OJ@x*;UakG?N;33lyH74xznZ0b%L zLuAj{q%LaBr&@gY)muxaGD95-&U^9@F(;*P3b^2$W~%I+>;x={><0$2z|tKERL_Dj zUmo}ou8r`vCVKnYOfN*3W zRD|xY!Rtud?NBUdy5CvSWtrC7(*s8-pxqoZwBM&Ytz=DO}d!P{C^$kmVUh%9SOy#hs^E?z zRw>7(bbAtJiPX%*?Cq5VM`g;Lj3)M3h$8a!*$Fuh=FPpUE(RlO?SNi~RME_5&&y^X zZFu~7b(OPJxJyZdCKng&CITFWH5pMt7qiXx4%P8{o}^dfPCsRNKVj8`L`hyc6db&x zf3et58CLU?#JZ;L^0lk`9W56EpaWu7b-<<=9A8+(2r_cAQ!XzTzT&NHC;&X;3tl@t zz~-ZUbpVkQ`8k*2TRWJj_>%47RzDN&)zQ)M7w83fveM_&?VL^1Z8Cl04=jNr$$<9H z_f9kbOE+-+`;YKu|J3_J(BSE9kZDEbnhFO zAXwJY}``)lAlb#ijdRS?_!RQ{ca?J6&doCMhY2 zlfg)+gdTUv#=WIXBw<0oxQU>DdaE~`tTYez+MR(DMT(y1abcuw=@cCI={X!NndLL7 zIp1mq8r=>?yuGiEG;TFeUHz-s4V@cT>mgwFRTH-+_oJ7VL-b22=#!--l26Z=rZv-( z1`(GZ+alf z)H&dZ#BBYqy!lc3lSIOBE#&%1jZ?aa`U%q_%C zN+`3bbmqEM1|o=;0Wza&$6%yR-$g{Q{q!0&NMfuv)}T9davkt&wzF_ssv)uqdhvv` z7xD?AX*gyJjFO;Xz_RR7hhDScy4=p!;~cwg(A#lFyUso)j0w;#(~Y}2)+=zd0H|Tu zMA*m2M@{hLWZq|W>INul_TzdkWJ}}l%>k?UAcqz}#N2rd03G$p0V@gfXP;LP#>!Vr zv(~0#y6ckGD}dT3QOLP~ybG#9)KfoprD^=k)$AR!p4UO|g-T2q-u~eDrNzHox#J@f zs(G>wTkp}JjQGU+C1FK?Q(BB^uNH9N={3DlWLTuKe^3&82uBcT|tev68SZdb;-v{EOu+BxNkdSERo&b zS*=jBBtRZsWgiCUjW0J1ZX^MgJWN4|413U1cQO#c?dI7TMrPFjD8}DURasgITT7?R z$wY=SMfMJ!%sAo!`jRl?o1<}q+lC+jmm-I8=J&K!MqY=m{+~gW&U;-KCyzX3|G zGw`$rcYO?)Qvq381HBM&VYBYOBpiZ_OGNiT%xN^2Uv>W{^^st zq8N=kbEzTWF(ZRb2f^pbQ7yQe+)zLTduuIH*a?tBkmO9ars|sFRrebQYHD%&Bv3HI zma?+4763J<+R}V5>F}s0Xrzz3Uw56ca{klWZ;9fOuSuB#bnKqOw$(zseP1RFI@4*< zO{2TQL)gWFdP37J*_*&*bl68cak5F9AmicfczOER$<@04yo8QO*Rz&k)-+WSC=~nc zn$l?vatY2!f3>dpFre41rtp6kkT8VDW^t{mhH7P&!}!%Gxn6co;orVqNJ;mE>+P9R zV4!A1X$_zbQZetw4J+2g*JE+Efb`X4-s^;H6Ody|&n7qy>FFGCRe@t2Jq<{}7<@;wh&zqfRx|skIP`9G z6_Pq^K4`ohFS21?h+r)Ni+#*Fk5IYkrj?s38#X;#1_Ya~MkqQIy<>b9sak2M`qe_k zOw2zsDzFUlXm{Q~t#NRB+`)l;>a3Mx zJ@xLAPuOn`MNzEm#ULo4ac%VfJJ`bUU8=?Pi1zyTLFWEJsi0cuo$GbTn~m*~qV~CY zFe87>LUB9b2R?B@h)~ZDHRpCJOg1m$i)U9Vz+!+T0nBwq>=vCj;lHsV`*zNOGH3*}7M*o&%Ivi^lia)% z#WtB;JuyAvN!jXA&VhI|cB%vGUK=bz@&KUbazM(Nn3<6e$`+u2(_)47dsdU?vvcR* zqQQPj_DiSH?>j53v#!{^z|0A>RsCY)E4b>orPCVszGug6PTs`#%31!Kna2#UN( zi`TEm8epkGQLqm{vVz|h0w>jge?gID7D)`KXM+Ht-y8PvFU9stoifX5Y(87%T{tkt zO*t1`M~3%p0l4K(>&i=THsF7t++41Tjh?zVD6!8Lt*S?@ZCCHb9K;zbN*lft_()HI zCmW$bgDf_>MG-+T%Yz)LPELS{9Io_g+2c|9ije$LE=6?zv~KnYm`x4>U#gmz>mYchO)3iy4T9 z2`BMV*E9HKcz;abagzNzZG&h)!ht4#3>NI$!4L>M?_&55c!RFDY41s^zdg!*1ur3-m!WK1DO zO>}Cl3(a&Ew|8E)h!pn5^}RG7ftGf!#T}izt2f%EB@T>$?Yy=#YjYX~2Up!3i@a4} z7)i}%5`RhQS9kYVuVFbk*B{~Kaz9VsUZY3MK2=>}MpW;Ux0!$KuEb4Fget6`Qe;{_ z3Yn2p(Mu%Y#`Oqi$p1{Oge|bkyk^f}HlV~hAm{Zz-whg?jNkH`>aDHvm{&?nm_=gt zPr|EoI@JqRBwVT!u2k+ZR=3IqW?T@eR5EZ4p#e&@%9VqrI>X%0%F{P(VBkjWDppo- zrk;F6aYWGu>R9*rM?#2>UBB=~?apLr+C~BksqUyBmwDyR<)X#EF8X3~iMh_`R#VsE zb_9J=;$asR{LQAqbL#xNE#0Jzz`nW`AoZ46_YMy0;l_1twX;+5WD7$R3!M@!J(msI_>*6hk-(78PWsyyB#rO3SE-NQokGjLb7hv7 zrH>7q-j;5uegEk^0d6wB=(D&0T!LMdGh)LauP7~}zj4x}Vy{WR=(4N=SA88LE%A-F zeMnl;UR84izdP-mL@Xcyj}VZcGr&iGUt6nvZxyhr9Dt9K{!LRjsO>M{8~qHD=;LSqlQuw} zUHnjW#Jo7Fu>M)-AeeOy6O;jidzb_S7C>A@6Zng@4)32eW`9rnndx=(Z{|hP8;Z57 z59=}HIF(M~jV=@3s#-C;&x~swp8zg}v$g^0h0_=+fpR;09#020y09>m$3Ds>oX5kk z=V_(IooLcV9>-r)XbM>bML;#4bbMPK11l?yY0GDpW#MBcicGULy<=yD~2SLNE=)<5!*p@R8cP~leJW_FH&S3XYwsr`N8gX*? zT7&8QIHIDWK_y)1HL))<<+@mCH%QlcVncY=#Y=LN8yzx^%(Q*!5ng!4WPMP5$Lm$g zi$fagJ?iW0U5;I*KybC~Csz-{59yHTS)8;D=4Yb2W!REOGgJBkNk~TYTNfJ!&Pmde zD`w3+tPo^Q0BjgzrW##rCR)^)=4!q&$;1?#*$4+cssj9a?ICmKEoyxWmosfF4~fDe zX4%0WycmXZWk8v81XFPM9SC0tP-zjM>RnDMsL;$&^Cp)#Zun)Lo=k{fNTQ3*^mdVeb1f9#E4ElWhG8qa zrynP4y24oe8ss38NtKXjqPM3>mMJrd2*ZI6+=}-cElSBWY;6;s&fG2^=Qyk!hD}b$ z#$N|F=i1j1FNypKjn}dpmKrbcOGQ3>JLb0|cRq!853iuuR!5>sHPqSGyW190Y_U-|4C0i#x6P%B5uPNS9-X z^89GM&T1^*+I)do;t&fxoNa73)HvD(ab|k_x2^7218sAGTMq}hg-7Tz7E?la(p+^l z*&JCJ;2Nb%9|Y!F%ZHBwe`>Q1lxzGZX-YSRUpL5_zZ?=PweaJ8iXwH^{&bY?4eW;%TS<(6m&l`8 zGyPK6`)FZQ6|Y$QZ#htQy{o&sC`Bu8MeidD(7xN=8$nN$Sh*Fl|QG zT@C*sMFEp;PBQeJF%!yvCs}0bf_K<3!>pfZIP@>h!S*2GwS#~X3nE!jx22ECr0`hB za?#Zot1^=VbD_lLeTd-%I7oq3KoF^F4c811?@^=z$gziD9}pOrZxE0e_7Xu`0tJ;E z;W#!=>9t9~a{qlDbT?(2erb0k9fdlbp?uj0=Rh6-glm0>0cii|Pnycw)6UbyHc(v*MjRdC&#&N|2xa2vja>nr=-o)VIK zE;>#$1CXA6xBJlr?~k*hB=H@5HDY|Hv0&~Z?llqgZr3^wySjG{BvXQu&ap4=%-JHo z{m%T|#63$iGMFn9rw1_rV|#i)Ah*U=Ufmm?I#09gfvRG>zv14II?5e?&Xoev@w;Oj zZ#ED!A-rOzF@W8=q`^TvcKb=T{oS{8x=z;0ZyJnWl~f(AV0 zw@3V1XWv}6ah(ldfLFZx^9tF@;ASvwLq$*j@a}S|ZFy_!Q<`1lvk@>hR{A<-#+q5} z%V+cAQk_~RyQcjY31B{N8BC0u@4-L{^}5N`_Vi^E7o&YRz6|ttH(Sd#GHpWg))CpOdmtR2(;%yWFbmu_c@Nd#LJ%f z*rMBw-8vZeDA8drn05fhqNWxPB;3k%IefNbe|GVKOFvP+@6Uxw5DRMt4&;k=elA*x z9?VI0J!C#6l)w1IxS0(uKw#{?;4)PhJdXbKX-}5;rxN=FJzAEzx4q3jsx|)lzjf?h zhzb(D?}x9h6w4yT^*RJz81~^hmfnV1>CIhvABNqP09;(5hJzNtRu%agzl_XH-}zNU z#%aO;ocXW8sxZbdB)B_o4R?X5J{xJ$7y&1nvUJmCfy=W}=JVWv(r_y{h_KpAoUr7? z^NgbvVUJs#zXb>_t;_u<0cRO@-oCPpPcv-vhnU^HuD80K^(stqaOPWSR`IMbU(c$1NQYV(K71~aQj}O&86-Ga;*e#~-ZN5FdR^P@4O zhs&}*sr&dE)O?bH_}6@59P3J{?ZIRT>n;a0=|Egq)o%b~rSI1m6dM2(_!OY!K|~_5_05Dx7T>T{BPT&-FG- zjp5QH%8bKkH)XekCr!Ii4m74tv9kzod3~EVOPhE@Fo_U@2+UlE^@c@8x@t!qHNUw| z3|W5E6BrCqegKSK{8?OytwPWKE5^X~-$!bFMOz5-;} zgw7wPc_H6%KG2AS^;Spbb-P=fkH5IcSpku+Fasd)n96CoL`gI{&pWpo+S~`xp`&MocP~ zGw-eo;DmBZrzc}d%y*L}1+zUAetJI5N}0m_!9!pOuHQamm-xjqDgJMFts`%|k4{lx zDZ#4##P0wT;{t~{M-X{u_)5uyg}<9@ft6bjKGC8Sjl z(XgC~yEDl39!81uk{g@U>!OSbJ}LSpO0MjDemZscRH>~|kN=wpx5LA9Iy@%=YU=E0 z*MpBF1Mt0{f^X`G4MKK~=F|B08!6qUTJX|b3;j^I5()Z;9>d#n!PHhcDm-64C40LE zZU54HiFaqq$NV?Gf|oO{zaaG}^Ft3@Zr@gSRHfDi2>&-XB2E;B{*hk&;NW1f;X*Ev zj+X-E8tx2C9mwtGgUgm}A}(ubE~HKGyWuHEAFI$l8`yZ9@^*!8M5lfG+|<41;z*3gjSkeO~E^iEs7TkgWOHcH~NQa z*?ZBWJh$_bfarrMTtM{8FE~q@%PXSxj6LrO#-=Q1k+dJfgQd#}*Ogz--VMpT+YwRV z?|XVVBH+Y@g{Ay@#;xITIa_}c1-(e7w{o?l2K z`HQ*r&D^2=R1HcI;W}1~0Y`7n=UQjKXD?5nU((kz<#g$Iaj>u!)RM~8jPSX)}#iE6WUmbr6z`Uk${22Uxrsdy~ zO`J`pBD9Up*8CY2zB!nZ1GH^O7kOmobT&S1mRk4ff3|Y+!fvj7kyb&gLEDa=n%bJ< znSDt)-r`NxlA63hBQgWiaKC=v+U^?O`PkQ#{w4LhO8ajt4i){ZKXZ2Ox_2Yt(N&jSDQeJPU)9~$8ul%*c zrUh&Og99P<0c;DH%12~$gxIC)R>kqA5=m6m%C{X+slU7N|GP&jo2AzfjN_`MrDupU z<(VyqrnN@7lB>AN8QvWwIdM&>=Isi4(zCrDp3slmeBn9E0nU_>zZ0hx^lueJ5`A~C z;Hu{XTtxjGrY9#8|Nq%e`E93J#G4^j3J?fH!Etk5f<;fYL=g#Zg2AkCK4NEOD=aC# zP2kAw{MTpRUqd0PPD!4o(FJ!eoj1ej!3*B>VJjFWw%Q!mu}!QU>cYCf!~b`vvA5M< zn@EMNduBQs&6Xpk zSsw_(ej4-lp1KxoVJb&mGb714*RRbZ*Uu;HSpBkLj&GAwZO8rNRAJu;*SFgM6DAM! z2x4YoVRKp4o^#o@PWEGNq)}~b^80_jMr^iPwK;4p^apO!6K`h3AxvzqM~P(lluvQ2 zpSmTm`MY;aant0Ns15hrou2Pb-)=ai`1tGF7P; zv#w-`X(SP%(A!;*+aQz!_LOq_Xs@Wwcw`p##4BX-aqpi#|IdZ3>%TLUY$rTqzit!c zLZ@R;8UQ|+F}#7zP*m|7!THq}`F9GbG`y<+L}XNpwyX@_?R}n~r$wmV%*+h&bP!$( zwg=G4J&n7qHyW@7_>jyt3cwql{rd)Kg3jPDavH7#9N)98#ZKVc5pR&*icC_c=5fX$ zmzG!Upi`D=wY?rLd}n)0qO>vdyKhLLn^Nh{WwjGkA(+7$EP_aFE%{Xxs+w@V`+cVW z$ZUMPyM^LkuS2uIDC9xx=h5xeei&DUOW+G*aigN9&VYff+tb!=?VPu^HDQ^bAIfds z<6?KdkYc<$VgSGYj3(MD-<4_F&d~6pJn$F1(X_HEM3^jC)u3RgaXyi_>a*i$zTIe> z`kMrJhd(hZm)Rsj@K|*$0jIU0kcOJtN5JbKyUHr?&|Hb7wj%2%vtD5%lUv?D9%~s< z6K#hZ6npV$NI{6RI6qoLXlu6Ch6kL5_Ej!(cJ74l|5CJRrBvh1qd-%YA zX|>aw- zgHZSRFJqu?CN?%DV2Z7$6Is~T0AFlOb6NeMSGcML;{EZHqoqS#DB~ngD$n^rtV;w@ z@0&oHaF5}qVdcn;K!K-y`dG99uz)jL zFP?pu|7q67MtHs$dQ#AGnl&#Efrv`)L7=z4rQ9p*hYqSuxVybBnl{SD?`znX@+T=8 zG)many+BwYSSvOj;GT`xLa;qxl9yYq9x3j3Yw@!6dGYs}f&Z!1;5UlE1W9yaG8*t> z5ywLz6ddLntcYMpUcV+esQN;!;nx5iOrZAtSy-#e-E$Q#-u|H>go42|(G5bun?q?p z!6g*TN;z{Cu>PZ;Gtc-_U19%)zKUqrrRu39E%V5qtBL9E8{}34!p!YUsDf_bz9D&1 z(`)qEsvDcrd8>>J23}r)haQ*ZfK_TGCa8>zjGWralK4gJ%J;OP#&U=u)%EVb!)p)H z8tZXeHH4W(A@stVa_o+5URsg0dcqG2(b4*GK(oWI`k;gt37BwF$I5r0j5@o8BA|>5 zCZ7w9)AO3+0h&}-!~Z;?u~~cj&`!vmzwOnAIf$g@%wWz+YQBd0%gkBAm$9@@O2aW} zx{txrroes#gl}qZ7gI3AA83P;CzX=sK;4aF@`nKW`HNGgJ*-@z#G5|X7sddDGFmn; zllJNxi^JwIO@^=E-K$=z{RTYt#`GK_UIc#ZG}v<6p{Mb`J&v582e@Io&Gm4x6u4I( zP?$pKz>iE2{+wJsJ)5+cp5^@280&vlhbBi;P^O`Hz3qTH)|X94%_e{A61UtF+U%G7Qlh4DJ#e1vxU)3d8N62*-C7VYW-fr z^=~B4+V|#9?{ekScj}0^*%e`q$MGw;9s4!GyEFjAdfs0vLXl#MV{B&=@XhGen;v)C zf~|Jtm9mAS*Z3^-N))EF@*I`yZowzN{W?RhLud8v6KR&9Dw56@DDFtzW;A!z{!W@` z*ivm*Se5=<@qWb&hI${JxAM*w6uyFcT5H<#1mPAz#soB`p?^AB;?nQ9>z4@)0lDU+ zwdudtUM!eo<7&TmX!zAmFQhXi2aCw~*Wy=KnZTA0#?Y%#ypvj1RmIzyTtgq1FMuR!=ne|cOzzmabQK*4OQPZRJ1 z>Uw%5z&t0^Er!#(Oh-JU3_IvsbwPUaFAUQ;Kx5eR(C#J7d@Se2m96U~F2I3CcNycZ z6{L&l6?K-+>uK~vmY4(S=ZO-*FTXzY__(_qn$4W-SOGe0WjRMG1}f~JMScNPIDCxyBy62_65UFqDB&R^?NCZ_C3lhY4OI1?$tFsb>nmV;iK)F{BbbK zVr1=3(qqKmkK_fx(v5@0fzuc}u#1qdicgLpA@9L*ViW!1w*pU#a@x2wXU2Po{=?Vn zi!o@<#XCP-_XmS_GsDMcw0qfHv-Re48Z&x#C>C-tN46kc+Se{WNjKK-I@<`=w$Q&h z;>bfTw-)XF_oMF|R-N9Q;*Oc`Y7va&yzwOs$D-GA>wQlCX*3>_-RZU6Le9ngy)hvv z4iLrQ9k^n{9>Z=X#HD<9Lh$m(W}dd}#z4u~s+Jp=O7Y1~%x7kmWt!EC7q2mn>kfr- z1-t)^F~|i)PU}y2zgdO{ndNaSv%IH*j%3AB#3N64_4zF~Y&3wt39`Lx{1vd#L)!n| zW}hMqbpw6Ph#S%#t0|?Xx$(+c3h6PK>dK?9j+LxiYzAT)P%=Nc)Z#^U$A}-_-(AS! zK|L>?Z!G=Fy2s_PoGjRXyomsX*l9YwR8YoBu$42Zt5F$4R=t`~&$0(kk4kg|ierZ{%W z9uO^ryWHvFkTKne&iG8ah2u_m^uB%LSAo-}*GTPFfVn*POQyuMp~pka?g<(qZczAL zS0bXl*O?t~Zo85jf|q13f2S3Z&Z%tK8-W|th{z$+{F0M0q6W>;j=Y5zywqA`e2h0= z0zdZ!xxtuZU;mI5_BwJmUD~Vjk@zm(n|@XMk*#*8sCzM}{Fcj$B2x&E?5T%4VRJ(L zmPwe>EeDg+8!o%CR0V*c@sgXK-4kMjEP;W6hzNslw;;k?ju%~L>|BHj7c6-2mFmuJc;K#5+KVFH)f$cg`KbH(|mV+qf&2I*A&E1ci#$;>{{^I&0nA`K# z&xR{jgKsz4X^#6U3fk$0_pLha8PB3z_3^lK+W9EcG{PI>;o@3?2nnk1V<%>n#43Ii z7x_*lUatL27vD!Yi_&|4l5e;8DIXY985F z3e0r5rTWPEG{|DuO9CkG2T#JfHWu?F>{zdvM534ewqD=FKT^N{NiEdWaK62fm&ze& zCWcD{qtH|}rjDE9iNdm*sY!?bDTPnr-gL|E*Lo+eZE5RG`qT8fEX&M!(s)EHdttv= z0%F&358>V8f7j@a0c^k%&`3eswlV^UB1B^E4PsIxDD z!~RyvLLfumwq2vX;jm{18(V6x?b?y}8hgsSMg2Zl?0xYAx>m}en4oD5=$giz{PaMl z=Ap?0eeBgn2CC|YdmV75D$J$Xf7WP-z8@IQahr)Wu=Ch3--2Y}l#thT_#upByE8sd zcieAlLien9NHk2;;O8XRYF1%BL|md<{{#kuf$k!b@cA;*+u0h_i;IitDl>H9>tEu4 z_VNm6H3a)!=JYSIk_3kQnNTcG>Ujb8UzF*J3}7c|xP9xzL$J7PtocRQMlnF9s!=|X z;!Ay>lJPaGsIin?%KYRYA2w2!gqb002$r*S>JS`V{lN2F6chu%H4i)<|2-L_Yb zfT*`YK}9C*cSUo$bh#gqIWQy&DqTM{G&BG>h}OC>;X6CIsh$U70QzsSpgN^lY>BXj8V`tD%6lOLaYfo zA|jHO-7$XpWMfdKS`|a-?;^mGBC8hNZH}n*=HR#u5-194F6>X�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%0A@Y@E3bOn5HET)Vx-x3tHw!c8 z2~Pi(TP`YuGyi_AHas2LwX^r-}w}s-RR$G4nmcp-f&gAivxPt*;vO zB9|H=CS804b-{7mhCDViVI|gP04FkL$pkZJ-{%0-&9y&ZTq1{EGl_4B( zfCa|+!X237FCt<@O{Dd5HwIJ*g_>#sFQ=2*(IMSE8e7wo91XpiRybc6YeG=MQ)e9k zvx!locvqz@?quQR0x|b_U|!k%=^eXAH|}BAH>dsQvSL2h8Qz!#bu}ZvTbZ`_=xKp@ zpIVIq$300T`9~-XxDf%_4RYXMD8X~OX@#kO$278V6C8}r%q1x8BKWP-{Ce)_Y~+|5UjfQp|@wK-eP$z(5On3*C0Z4+C0V|3ut z_|&$XOFyD$7*#Utne608(VD)`+Q!E0sbrS9?Y!A3DyiJLWo4?z{IER~t?s*T451+u zwvQABfn4t$bsskM931d!bkB1N4SKgucyZNtI4II+Xv$10ElX2Y6D`I@LPFB$cTt@; z``LOqPrfoPzgd)O#1TtS7|iX&X&Lt-FG>kXAS7j zTy5^RlA7r!W*#4jj33g}1mX#`k$-#FQwCRL?gYF^N6e}t!tu3O-iLuI1;-2O4Ju66 zD12fRWak;Q*^f+*IiZ&>1)$1RWj4R%*iSQ{<6Yc{b!MY@yR{iJ^h)ppObVi?Pq&m! zV>%ua^l$iQ_+<}J{hB6d-Y!X;7jK}r515)rz(LVF@w(-tlFrTr)V6W>fk^AhwGdPp zkni7-Kj`GV*x1hNL{jo2Wki~!ZOcrcLKm*&EU)5_uo}tHt;IhSaaa^~dHSB*q2X_N zz4){Oj@~GKJ_7a-)X)uV@Wl>z=u0^I7>gti;Q4BoKE_ek{wDxBP>VW}_R3C1X4dst zk@pC|*yWak>aI5G`XpOkqLWoD68EZ=Dg$3x7kEgxGXmxBz35cg4+f4YO0?-)VRiKU zvH0#uE&U(%w<#1x)j(~tu`lt4uvZp~;cc0h-{|{5InY)oXq5kRa&m!pj72tcg(jRv z(yP0QRB1jyms+TD91Oqco-Fe{@i;mJI&%3B>Kb;d3(-4OX#Vk!TsM-1W1x_0A?+ul z3>ed&xL%c-KmcFRrp9Uw%DO|^8qE^Zl`E_^P6x#J|ISmJmV(Z}@zn!dx5nJrf+>Evz2bB0F}h$Z`$uLqmaM>3}e`VIopS3fDi zH>azPJQ0i7DA*v-PebkyNX+6bFX?KQ>}g$vbs9Ra;O$puA@cro@~Q07GJYp$nhcmO zOge4Whya*k5GO*6XQAHlb2OBIL4I|*+$2h*vzB?p6uvL6ziJr&Ztf~Xh$Q+i=ARO& zqeW^%c=O~X{fnCVA2l7qLjNoaczwqqCyJkZiZ(9P#qig8S1?OzDAnG) zrm3qje64V+ge^$ApyL-)xYAr(V4LL#Z+T=5DP%f4{#d?G3?hy=xh{tpw%f-j{E&AH zL^E-e>{N$}r!wh8f1R&$-OpGOzb44;cRP+)1X}hWS84sU@u$2q*>(n5!AIbFbX79C zN6y6!^i`Yms#Ydtf3alLTZE`=7!Oj&6h3|4+Z^o0wEUr(y~PRam^ zSVUQj&Betf%8I;Dz-1cb?6;>6%mrz2a`fxckXoo>pq?~f7`$1Mjg+yi?stJW(r^qJ zZ7V9NO4)}IkZwGXg)`rmO$j5lCkL?DPqmjW@cxC}hohe=P7iG{7T|a{= zVQ1pkCs#TS+y=sWUc8X}ZYn%cWhlA>G8(X)HefjpB_$;s0Aop`8kjPmIJdsdxj2wM{G*9&KiWJ{y_qn(v1w+G_WA|84UW#UcNbi*dlzSknChW zs~*-Us9CcoTbxx|O3z%BnB5iGipJYM2g3boGgzb1bce3(w~2kBa@N6*PMWaL+=*w^ zP)fUMjv+e`T@dRVa}!^x&Zjz#26D1FXU4*;zxmNCT>x zxiaBw3u8hXc0{5VwMUtX>nNB2K)>gmpNfM8wZoG*qb<$F9JE9`t}gm)w)%w{|Bytv zgPm01XQ&~<*q8C|-7lxV(kwE=|@kP0*Eo1RA3=nqZ<}wOE{#zS4g((iX1>-g3ZbqV z5YP&PJUz)5mPu%MfAauhHqKA~aEm83YQ1nDCp3Qkac+7Y*@Ur0%vtbEH08OXvy;jd zELQbn$?X(}ESwKz0iv3`>b|FLRgDaayIqwvJbBBQ={#|LYKm9Gwiv3ZciC-GhD-ny zpjY*|-2qU*rrg|99dP5*?MAVww7mx!O$(fIN&Yq9sL4hinvrjl%9BS@` zBhAlY!KExWyOO{ER#y{wB%>J99w1}_LXe}j-hP@;NJpSzl$F*=W771Y+h5 z|JxyQU<$hG*r900R)|4zLQ|3OsReeJMWMBi;2LISFZZIa(r~S89df< zx*6W_b(=IKiLex=UM~y3MJ>G>hl<>LJQC>T?(e;;*r~VqaeqTo-P5Hi@$-oVfg69E zOoncdTYQK-c9-2X41QNN15OfehBw*QUX;9+1Opt0k>U6W*g(iw?jIP?PVyL*6ZO^b z!wIwF&eDVLO9r&NC^>##OA>Z!nlC8RomaZr=(pLLdmP3`S?miGeR)DZBm0(65qwME z`c+yb8T9cB9k?E4F81F9B-ZgkrHnd}SC?VEhyqym^j4ZBuCIHMwJo|Kymv4#=XRwB zW^6|kxGf8>HiS2MSz1|eH)l>ZPWw^SjthSougy+w z^t5yXD|*x;k5?d24;DLXe2-ZPL8U>|?C(;YoIt(in>2|vSQ zFp zSD5R)Woe^P$tLG+mG`4lU73P2Db36(xkF`UrxL5?(PYx^^&75O8eOiTiq_7V-i|5 zy(Z`xpFIW|evT4JL1Q!Tb{DuMFqcgaqk^9kJ+<5BrLL*99afP&xStH8iZQugbLm%~ zWjqUtI%H9~6&K$#7B2K-Kpa4kI=))Hct;~@0Di-@?EPc;8+z|4ez)6+uv3T&xMD?R=3E$B7tVFFi63wi$3p>I=z&HQG&K zgq-Qh@K-D+gF=rny}{@?x!ZBgllm#T)lde|W0WUZmhtwWw=0wf8C2r`IVrn%-0^wppMoy=0|l3dc;LrZGP4DIe#+OFs~Gf=;3jnpxtQl6PNX+7gw za?3k^t>Od*e)FexyPT9^gg}dfkgK{EdoOijB%$vdW`4Asa+j!KSBY=NdxIlh$qJwx z9J`7h_?mzfc1hpKN9P>+NAXX>x%o&izELFC3H@YMQb==0i#ce;RM7!@awzrpC6k%n z9lN}s74zea>yM0?Di9^@YsO6nc!DN2)C!@}j)A7>9?L3LaH>U@yDU(*zTeGR$ziY5 z+AP{5>Q$>TcHmB~>)@4VI1DG_<$e^fG6@R#x zn8~p-=2-Gs(Vw+UYPS5rbJTC~;-~tJTo8t=kt}=(CG#krZ*EhXtCzfQ6aYvQaE~;u z8lO?g4>;p~63Fg+Mo26IsM1{~Yk@4v{3PhD;xO$?HOMbY1{@Vfats_j&s19?Z- z5D`$(F9Iw9Qsv#dvb-eUFI`<-tf=SLdL=a2%A{Cj-4kgUDI^#<-1g_alN?*h;{?mS z3*b$Uldw$>$@2>z8ON&@n{TJQQKWV3vE*N~cLA(H`!&oV#y+$!@63fKl3ZTf+dhJ-HIVy8$v8j9D;nLNXW zQm`ou7t8LfeyKT_Y#np$#RvH)qoQzuk^LF&@irNTe>LqqU;9xix7??LcO0o+_TF~a z_WsJO*Pbum>Ka7wHOnHYC1_Sqlv)f&>RvNos$~A zB#;{Y*-FauhL2i}`aUMqLW9O>Q9r(@*iN+s5dd`RI ze=vD;e5!Dy$ORK3f6Wd7KDlLbmYqWOhUc-m+{L~xEKM}R-A>stvPfmKU_>@MPA>b3 zk%vb^tE)~r z3-HiNi5E1FeP6RSDHGhpL@&LJs#=9=FjnB&@^^2pw@Xg|F_gXN1BZw+7l>cQGs%i#i}PpE9t#s z!qL(D?q18Z`C5+zGTI#GO1D z29Hch=ti|h@MZrwW36{bT#5IH#eZ0u%Zyr!YT!9IMB`P+b=@tvS^u6L zbPK*GCZTm69UUFSbg35kwR#CcuG1Kh7Q_f1cDI(yeL!t@`15(@({$PUb59+qeJWfl zeuHRy0)a3TAVw=+&gf7EkKCjQDrsm+S zY4}N0SJkhlOS|^PFD&}(q(p3zxI6d9uc?M)Wn)p8c#u0EaRg>BzWTE|tKK;O$c&E1 z8&9du9HyBbwYsHublanegv$Fpm(T+LPy;ubQUB%_^Y5g?{$n1 z0#QVZ&5S}JC%j$Tr$!VLpde077i9f`4B)cbH3K)?Re!p- zlUek$VeW1LeOlleV!MDX!p`46TNd)=sOw@+fV6)lXEdd)Ldq(2Z8@0v;9Oqz5m53b ziTj?h0=0HiQ&W@`MPUIjk;Bsde#95+vBnKpv7Md>=84|m?(l~{n}@GV(y1Tu)X~+d zt-K75DAq#F!qE^JCiP9f)9Z~Wr$Fip!;`<52SznE*^XKpLL-8oF{bnlGa#jZYo2hx zyB9(l9bpmK9o8!7w-WENuLb;pen8SnD+|EhPW}@uHmdaYZDC&5XV>dk6XRkk z2@R-DO2$usMUPnDBq^jf{8nEsK6SKRDd&^m{Xs2Riu;<a-^7Op9a>jNg^ib?~I9I-kH-FE$idDJ% zPB>qmjjcI2V1?&XTZ(^M^g7MQ$YMF5AXoQ1TrOul&L@wR|If65KD#5Db~DDLvj}6H zNg?OspHh^?1wx6<4)`y$@PdDH27)(b08^|x`Yz(lTMa`?Rb?lE)dqw(Wqpxx8^Dr~@M>hflIsx;fcEiD9ukSa~LGxZ9 z4<_4mfa<147z5?<)|;)7tSCZ_f&R}dB)!j7RZeQsWTD zyvDqLAII%oj75zCio)l|QXHyw z#*fF%#j?7${zTM?Bf93p#&iS+= zEF0bI7ib;IC^sKjF`cg@VNxu?bu&9oDDplc+Xg=2!NnCz&eihpY1Q8 z9>Z@l!Ww6tmQpAnx9r?@7uV1l{dtDl%Dn{ENXwy0;bY4ZCPS5qWyNtAEG0V$9OofO zpsJxi&G-@exDSya%6-ArdC7|CGYh4*`xdSmP3dMJSX|Jifn zudUe^zqg1V~3NF2r-( zY>zTC&yBP$7aR^(=1b`%wct;(44l?);f&$!cXA}U;xZPtZ`19fPQtys%tPqxH|arn z`l#;A!7cz%W|K!6w(zX+=S1V5*K=bhrJGqvL}2MYL5Fn?8|cds6o3M1>YT|l!|GY) zeF9EUhlN_*6fP6g+g@M${l|#;ea#+7iQB6aa>)L3YnPwG6*_qeue=1VEh$O;lkJ`z zXmAXxwJWcV$ail&g>d1j1Z2Vwh>W= zhVJ44Ibog+aHh?z+M*K!Sc?r*R}&Si>?-=GM6Hvd0Tkz-!PEjJK;^R*d3x4Y`T`W7 zDy*%tLtD)+1+-Rnq}bG)=A>o+a-#gvMiKj?!T#H>*pdn(_ZzjxHNvG^dvej=prV-u zjB(;U2(EBy^Kg+;<0ExJ0xb>{A&ts~wO~q3?%Rnl!!SF$FYE|H?HU?~H2%<;?&F%$ z5vkch`}3H70v1_W#~>i-frR;S`Ava=^NHu7H9fYH#m(OBlIlk5dbBE1-m+2OR;fx= zlF0%)3(K6|XBHV|1q@aF69;ZJ0pO+%AP%xWd+bi5TvJX??mur@*7rH8d0s$O+TNGg zQJ>uEdf%DWZQ(V@o&^QxGPB4&9VC{V4}(xv-2slm*pY79u9?1xovPG1ee4bQ8?zU2 z=tcp*ae6_#S8yUh1y6n|WTyM|ToI=_px%{rybmbDUj$GAWn(b)KA=n(CI}rBStBUl z+M2XdnAp8KU&Rkma3B!uB3lOhJS(kp&_1&Go@*OT0FM4?kmxQ!b0NSN8KaYIR+P#v zO2%-{>d3s=1zvo#P!yRyQf&p4F@4zWfJ#QldojyV@_mmMEH-|LJuWh0o){HQl$E1U z;bdcg}L-Q|!+Hb?yMxSD9bOQ1WRMSN)yRPq_ zB_Y7a7O=(Y{_dW%V#cY5H>IP`@whC&(JhX;l3{)2)WTX3*#glkYg)Sigp(TsW59UyhoRLkjCZd{vlc4ZW^7{`CG<&QdkyVRo0Esg@+8+Q2V$w!9slO%k^Xa z)@H6$W^B+NxPggkFT)_`!nkRD$*i;Lq01gAAbp6rLrT3_IAoEL{rd=oV?a|0Wl)r$ z0F@!=n84MHpfcdzYvfjq76jRP#DhbSu#3u&X^RQN`u;h0uOahZt_**bYN7v5`Q0#P zs77kxp*u%9ahn;KIzUuHi@FJ_gFbU~7@W5uxne`4zuK@8NCuFU_CVW3jD^FXLKk>5 zWo2bz)bkifATQlUM3&u$g}wE!ZNeh@m{43+{F|t=V5CF)n3EtImRR_6@rRS_-grV0 zMByAv4b<4Oc61_M&z91WZNXM>$r%NU!S^ediee!V#bzj1WMpP$2OLAlX;Bl^8yZ;x zKD#5!QfbZ1v&el*By-Q)0zPgJbDa|fgn387smkapir<9ay&izMLlT5-Gr`nN`FXn= z_hOBl?UsaSEtl}rTzsuwfC>^ZYV~UZwjdx&_>M9T<@ToOxbbHBA?eZghagu#8y68l z`J*GVQ0B;CS+hh}6F4E+qAFIH3&^2fjtnfM`>Rto6RXV8K-x{3kCFp4WG5+5;Q805 z1vRR^{=LZ)lT85ds0n7_iMoU06EwX5_OR@8;GnE%$n`LleKOW}Cm>h&7GAZze@vN{ z{X+-LiA$bAA7>iozPZ%QKsFeNyB#C8JtPLo8$sb>;-^nv0ccK2P2~V`1(uDy(7~~% zY21}IZ-M^p?S!-}9DxG9@XrUDRPkd05z%hgAI z*zC5F@2ZmTno>?%tx$HY0sz=HmZ+8a>0W|*2Q95!U}dtCc$mwRX83{pdy}0&%k3Um zYbf#0sh`#U0)?%2JC6*sYLnSJaMgaW56<|1{wO2EJeN z>NkIOG55Bux;9eX)$F)_c_?a{aB`rnp$xGyBp;FSWn4o zbioskG!&BpM^Q-z2@v1&1a%?EkA816YCoyooaPIAvVXI2c7?iSL4?f#F!x|bf%*Bl zw_F0U6Hk&AXss3!ws6XTN1=%J7nvhGiF8(|+zBND(W1)u{B9*@gHEz5nxTkK!n5>S zms@v+8-BtSYMCOVqjiWOxw*Nhxm4}-_q&zZr4+ptp|$zn0L{LmQ3k=ah#=RS10q=C zgql(2f#H$U{Q9B|4q?I;%8Ze*v3kT12Kg9G>R#U1f)y_p#Fx#hZ8n_$GtSGjoN5iQ zZmYG4sp#kVm%GYFSpllR+lbsJBo`-J98plMZ}LE+n4FKuvZ2r6%N?Z{(I!U<20sdo z0dXGy%)ux@6jJIp0_HkAV(PNUwpmtfj^Hr&sowYmWT39Vd2KNkx2+LiHj=mJ-(bRF zB{{>st~9$}PG82eZ=%8);P4DUgu|XbNF_^k4iGn|_Gkq10b$Z+AU6P{Umzga8+Chb zGeRwwAmsDcw%g^YP6iA($Ku=f4r0ddG{W3%3Z$1HSA%EYD~tpCqQzhO8=2r5|Sn*Q+{-|4$cUzYuAoY_~2blk@H=9H0QJ}-EoIriR=H_bZ zi8F$Sv8MTHk@w`t{oZ?Ay!6Rv<$+i9l7AnZ^|adG;@5P-ulpzihd zB&`q-o)&r>zs0d>iE{dTH=TTt;w;X{BX+lSGPnQp$6_FKtg7$knNJpKMJP}!qNSw; zOd-`gKnobeDK5Kp)o^7fl{Ycy{b4q@l%nPTQKK;;OZ!OLzWY`Yuj<{)SiL@jY&pQ0SVEYem8#~lw1nPxw$ zbOz&QM(HruST5`S?*%^s9b^_Bd9sR8LIsWCH{9(G?R z+nDilp0r&2>1GZ@J5;PZ$yCh})zgB@$;txAA;#kz*!Bv%?nl*R%;&59zqz$vw?!tC z6}UK@MSs(83OEtG44`6Z)0bS3Zpgom0}ADYL6qmGKevv`>-$Vg6mKQQv4&kg;6S~i zVY3R`*p0dXu8jCEpyAeg&bUASp04^$kxx{R}DQ$1nPpsx%kFZ=$M6u6aD7jfNk)q9*QuG9*6dCo6o9H=&D2r-?7N4`-|6cZq z;9JTK^zUzfxi6MfN3Am}c{S5q4`N+3p}I`!=8Y&RAnFoZx^M9SN~wizZWY9=sjy0hcAtn5K0f0S6sFMJi8u;VU8 zn=Own37;B5uK@=dyJ&*-CY7j*n*S}8`fG!@eyznRNh0UtFwSF55Ga1^w;ZjCSePAo z$q*6nVcO@u@snl=Kit;?y04A?g=7%R@$u*&4Yn~G>H-eHUl8OpMsOvnn`kDCPG0o= zpEk=cCA$W9vnq=!w1?&a@!o%;UEW*ZdS2jm5Xo0^Q{shLHP&}*sKY7eTgW1dopJZ> zOuOC1-mJ&^sB`oI3q%P-fBHc2LiMlHdM3cBv+8jx?5W;?x5AX6a{D@@)&KQD;<9+U zZ;de05pYYKPHJ>I?uc=xOShHkRgZi5qm+RK@9PC;SUehmM`9d1!dnpNoYQSryB%+B z8YR{vL)LeK1-8RUPU`;+rNs|QhVWHz!+?}?xryV}5D>)vDF(&+uJfs$*bTNIIE9>G zmFC-ULg%49oG6INeH#D;%#5E&Uv7>+mn#9}zG;KjB(Qi)0*@cSL%YUSQ)p|LYXhDxAmUg;Iu_1RfP}tcZcZL6Uocx?<|rXi3R(wShR9 zI2HSbLw@#6N1A{0kcyS>x=G|uJBinO_Fux{u?ajr0YA>KiRtP_BpbmZ0^7`s4 zYg1RWVI$y%@&CoHzRsnm)U2 z|E`Q!ru)TLLsOJA92TW~+#41l`k|Q&vNcLZzdlC7+28oFv38tAUQ}Ha?2~;C2sxG^ zDIn+mFn?g?NILPNv<8F!zAwBzpn>Z>YGKmCMBGk)o_~{(rTMiK4XxcPC9gr?N<`LJ zYVLIcgE`gidv8Nv4t%PdA-m}4K=w8V zrtkt<)*dqKL*NO$f2fwCX5;9pk7%`#CuL%VRwpljLLVbr7j^-q`UqT`%f7k)uK^*v zgXIfR9eLu_!|yR3KPq8*I~Qbnp&5W|$L#;iPdx=v!b)mSO z!ZJ>atqiy4n&pYq`4vi1%5HNG^3kFN?EJ2RT{2`8aYu?YzzN6KPQQuFLZ+Su@9$c$ ze!p;R&0U+ZlVKmPQT-vdnKU$r9etX`s zTysHtQ2973YCGWO1bj-KRPXU6`)(tJf3qdpGVv&}?Y-uHt#rhk=jq_j2Xy5X?ZB^U1Ke7{|6F>tKwD}`buw7{ zC||ihkpTCO*8b`kkf%+xY_|D6dew|n8g*jPKCTxb+3u;oI8UYuT3Z^%`zd{OIP7-w z)d{{^umey!Z$yWtaB@~GN44Q3Tl7kAn2HQv&pLYJ1hM56#TlP7hDLZiD)Gs$7=i?XXm;-%Y{U%!uG9OOyiMZ{b zCnjzr{4(!&!Kc-20W(|RUv8rwb$4Fz%j8*QVz>SMa`Lc;oQgxXZLr@@#=n4gEY}2^ zx~`B?TCBWe9Gf&G|HTx@k9u}Q9GuKzDem*Rpu1bJrFyHM=c@hFE6*C!Wr376hH*GQ z;-RFicgk`DgP_&E=eO&5Sg%!D9B^)orMSMsUa#;u*CPotC;>G0Lb~6FmAVy>c_Xpp z{Za}x_ry6keLXOD?5-piM<2g3pF9$w$z!FxwI_ipPc-F{(Zt|puGd~dP5Z&1?w!>Mod zvD~#8l!S`};_)P+3YKAw$7jhrq)!98&mi{lR?#I1O&R$GzyUP>yS5ho2T`zr zJ7K*l`{J&SPvg49ugeVt+lQ+d9d5x!4B&(aj7e{NXQNam!eo3Id|8^Ke*_*<(mWw} z)DJq*_MGcw zU-V0+IzC_5H%OD`j0nsi+tN>c3=y6~6H!no4Er4Hf%%O|#X9{L)g2_W^|GQW{kc`q z@8_nZ)5xAbox;YdkF7Mb%@yI|Ppl)z?S^mO?}qOASnINNJT~coSw9ZROj$hvAub;KEKQP9~L%b8LY@$+L2~ijn~V z+-*ryvVNhT*b@PDm>E3&9Ww>(%4l$H-V0C(m!*}$cO)T%Jo+66(M~|BjM({!1PW#L zQt;$hKXl%S$$FoY0s8FD$$yvpD7A|3+Kqon)nFUqSNFJPi*c={$|UxZ_6ouoIKSV% zu2CPqoZF&>X$Z#=($MgJ6e3-BmtUqf$V8{LD?>m$u=)GfRnlaAtmr$KM1h<%=M>~1+-VWOiM4xV9x8QXVfPZ-9_@jCL*IHaY}oDz5W;0K(M$3y9rn^rX7z{?IYQITG)&X9(l$*u5F{^g_taJe z6t6ejZ3FHhv+&}5anvdylZ5>7V(mfo=p_B?D>Y$sfS&v#K+P8L>rOQ4%IArfcu_IN zAfZD{w)F+*uVB3$cir-LD26Op>r#4_gY&h3zMk*CA-nWjJZTO6^4?oc=SNl9n6;|mKA}l0)sE2#bIcOfIC(+?z4v3DV+>Vn zsku6;>MJf9V1G!}>M6nrWM6J7$u0{;Yg_BNsSc^-WWBC_7;koEIgjhNY00^1*dy%R z4KG>PB@R^mQ)S&CPvVm!XLZ{lehu~;Z%S9yVt&}uhEs|QlgvA9^X%}Q(9=v!^WHQn zV#FGOWxvw@rYFqU;{0imYvM>$(gvM+Mu`4~b(E74@kN=5uyFPlOu&FKt=6qhmj!FQ z-$D(oL!;M9;H^jf>c*D>$H2x$-*$&sdBX}H5z>mKM&EkeBg|MiY0F1`S^FUa^*BFo zOLNnCOm`1SgJyMcCS9Jr_wOYnrMZ$Rv34Bz)WSeY;9zRe>wjm2cOob2&N*2mXL8nv zzsAsntl7iuJ?yv;-{@$e8O!1d&r1AiE?TWSEaJ9xuw~Z*r4%>%ZZKD3eLl!R65q7D(Q(?C z5g~e{$czX>ul^3D^1B=7Gm)btgfuVyK0(Kx9l__=#nM^38|D6?Icqsa9T*ZC-X7>_ zK3gql)$xgmHk;tjdY7b)z%QDQrP5!OiMp}`eVAADErdp1+d0zMy)OgVHXa6l`U)X; z8oUj(5#B_1F;{R1*{V}zXMg>>fX9@~#SIg$y`%rkZz^YM^_6Y@dO9Q@#KSH!_-9x6 z)Z!*_ekuK;`mk<`;QzOICevTWbWsvH7RqL3_&#UWuwa>{9Blsi+{IPw?cGbI>Csg4 zn<14Bt#7d#YeCL|DZ^^ner2B911il8g^w6^e$aQ|?#GA64^n9wvW{8#__cuc)4N{5 zjiB%kA4EC!)j_uIEV(q1&@Esw)Zp(hsYR!2sHZ;+C@O%dl}dYeWLXgJ%16~a zodhwStHWKMCEajZ{2oN3+|2kcaCFm0d*)Qt)3N`RjAwr@l``q;R8?&~=RErKb+v)a zg<w`U0pO{mp1=oOJ0GOF3J(c(PYJr^6JAM@3ngoNVDN-uH06*O&oXm4Qxbn5* zfLig%;o5P|oy?B2-r`IHaDI>oLIT)a^A2iZ*tXDgTVPcmHOYdgEjgl_mNUd^*1~r& zDh=!0LFagC%slX1!nkYnb+Ts*P#$@g#}(9-IVO(M&sJlJRODo%^|bqIktgEzar~te z*Edsfuu6aNW-tgRXB5zUaBD(m8@7Fq#kUmYmJNB5Z;>{mcOTm{Fkwu~c|YFFA?Hr8 zBE^E}=h=ZEoJTW34bn(eGVfYnF)#eJzoK-mS`AOJUOYGShLoI!8($M&P_^EQCQA-a z|Hzt1V-0x1{W-X1lhHCJQdxqu;f`@&lUeOxMC4EV&Ff`|JL~f|NH=`mS|Uzj=T582 zzu8iB^Ph!v8QYwa@(8Kfg(DYx^pTMujo)<~qF$P-;yJ1is+7)l@^eC=J0~-Xsa&Uo z-qGWvZQtrlOGh=+RK|v{1czoFEe-Vv>tOuNxmBCVE(sH0=3gF`dhg;!$Khg1^0crN zsWL@D8|C#qB0=#qlopJ@y~K+%A-m&IjUDv$E19N0C@hrc(|`8FQm(yw5pUz5zndU5s zeI-E7^Rpqo9QnD8r^te3cj(9o+{t9nN_ll5WVm@U^+WmjmV4KjE zz8dY9KBfBn`eWzpM`Cr%m(1G=NpJnhuvKh#Ng>jRvk;5rtwnO!cAYBe8Ep-|)}@TV z7hZickn^b6-?wh$P<$l?xSOpbA2FnivT|ke_05cvNaE1O#L0iZe0s1F81lVY;5{j__2v6ju{*r7@882C;w7J%_;8rD4yLS) zTpAGaTvBo%bae~`mZ{#WB&=BV#}cHJw{D~}gRMy3S9a_yiC`M@Kc@4X*sq#+;_MGx zY4R~YzKpdo*1OsBFeCLRtW!z3%VEQcLXHI?@7=L)<`g3&PT(y4p2;WhA9SI+lI#)a z5kDb>=|b~DwafRXh^yqDVT%Z%lL-Rn5`SgO+3kmD4_@41D;9cNnc>HoE0>x4TPdYc=!{6=ZY|3jSFxZFT|Iz;DGCelh60Gcm&&roaV)uFTteqqz~0L&YKHdpOq)oqCI{cjjV#*OKoPTe|Oj z!ms8X{VA^32OtSToJSR$W#;u7+3rL71X+DG)uA_cr*h_Iw<6T)pO*;8OG=iU)mes! z_5UEqOlB#2rlanz${UKjHRaGim7dpP`A)c9LmECEQCv+ogTiYei-j?IseK#+GS@+^ ze>!esf1OU8+=X>c@#AZ4BX-)R@nsT(yyV1q4%A7^L+rN#fRHl8z+$~(HOl}0N&X|C zfq_jK=9i+qRziiUDyw}% zD;2NxwX?%F-hND+b&k-!!LA_W-0}+|0w?Lj#Kir{i%4jl$Anf<;{)T{zGYkRyJbnLcb3qWi&H6#-b?}e?dIt z#}ClH{uv`7vSh3-3ppLFgRI~kXJlUJT-nQkpXk=CtY+_qAek?o*{XcxQy^DtNPOY_cf0F`_Y{Mg>=A<)Ggc`YGpxm+QRMFz zwB*((o*Xh~QqrukbsdfKvL|vMMql{ZG6XoGC1d!%?bx!aD9_`-aJ8yj&JP;Rd;k^m zUy@_0pYY$rVoig)rH7TcB}LfFPQ6wMlLfD{84i43*;^enNDv5e$Gg=vzA6~E=b@Qm z75@^u7xdgBu<564_Q6<8K+Wpzp#$idqVOPP$}`Wz#?eeKVZ!kmEltf2LGI?a7xK|! z^>{h&o{}Xpb7|$EQ?Bx4d6psYF17)lSL5JwyxWA>(!S3M z(YiUUiz{_`UmXSvJ)*>(8LNp&`z`W0rHQ{Yf1_QAeaRhBNs?5~7zQBRI-d(!R$^@S zH`0?fbBc84t6QJtX9)`UvL>NG9aU@fMFzgzaaJ_}BykF{f)(RBIeinyTRC^#NhKZR zR=vFgXG0T_Vl#FN)^7Y*L>5b&J7u0k^IcXCuO7hsB^ePj?yy14uqQJH@itTbmD5-a zS#C$7ZJdI=jah@Gn$Q>jNEk8qOvD4N-1y)GE&Qlwm3??E__$4)uU8R%@CvU@spn2GU^-i;HVI@}wUauZ z8y*!D^?sPDrub3^q`@*f`=k~}KQ|c!XBZSMCE6u{7#GkpXL+)Hj!u~s^4eO>uk zn%l}u869h6>UH@f6*6e}m4w@Tb;hB6LOz3#qw*-48%q59Xl2MCNm zv7iqoWX{cd{mq)qX-mgH(}o;Fr9tuZ5%s7H$+lOFBf-GfM@N)cRJrSy{y7LR0VpJ%kLze6*^&z|F!QveOV9pw~4x@r-%_!*?m z%vCXSm2%Vn)81EwwfU`IwiJrHySuwXfl#zqaSvMDC1{HlE2OxW;_hz6gBRE0Qrrp7 zq&;Wm{LcS+?q;~-%YL5Z+q&NMuJ!Jhr#7a@c8*17^WCniI_qt+`ce@8BmvljCiR6E zyk>n}qeiG66i{R_{P7?wS2z^5{+WKQy%@$2aDK;^U%nqiuF;hg=NW#0v3Kk_!-Tfa znITe&b23AJJ|EzqvcX(3*?u}yn!|keo7*@ z&f=m1#;Lw)!b_VDS_I)U0i71eDfS9R4Kis?N=S_T=b2lsPe+UW8zwdtWwTVO6fsNJ zia69{+*a1?)VGL_^yWi$)8iZH&UI@p#y6HAZqB-zk+J@EypG%SY`+4?moR_5wdiN} ztKQ)uOEz8$v@~&&bVnS@Y~((>7bPkvo3;j+()%?U%c@ARidQG)E6`LT6|Y>YRlQ;g zLc@$Ref)q`FN_Rosl@zD<5UBbH70<2wn2y@JmPjr_5<0i^t(Jn)QMXU2s*GaoFAq@ z+yrqzXSEACMB?im!`>Ow2xTS)BhmaFj>i)bVhnrkFigA`U~tpJIe(&8ztUk}e&~Ay z3i$`!VzWfUN&Mc|<+$R&So^CTBVorr-$oGZF zh3~4nbZh`EH&BX8^Y#6pC7T!4b>39y(PMvJw#wFC|2BON+zBXZ#(9I9uu?Tvjstp? zV>%lP*uvj_Q~!bFb;lCE_J*-X3!mcFJ8apkbqNq?@HAB%=fuMoKN2I%fA$Nz81yB< zq2RG9!@1(*+I7L{LRF85v7qvt%EK;=CdRC|oEu6++gr6vbj~M>_a=DL^&>SJuPOt6 z0Z)=l{itM{NhnUZTr3$myk_3S<3wS3AqFgzUsc5|=BLAUR))j`XYbT>89_wv;%Ug( zV3>$LGNGuFlr*=XR{kf%(pmoniV7)g`T4FG-c@YR4P($O?{q!6HvNyp%s9K<$WuJ@ z8r3M*sP^!7E|cW^>YrpIJ3FK=E5W~j3)Pa+05C))zP@g=zkKro3y?*B*BVMC#z#h7 znsDm6xzpXhb>|tAgw*=>3o9;&ET2X0skZJG@@hR|xs`01$}^Gmuz9>x6gqa7^w33Y zC~8fQqruO_=CpA!DsO-b3N4JnO7tYit`xI|O~90<^k;M80QvGCU&@wr8^a&ATq`c0D&1@3ReR zU(~g3k*LD8E>Xt36oGi=S|>NknN3jB)Un>@j*WE^6^c(tOJt!%5H5HQB1GTWj$tbJ z0znrxW2_p__VpG;gc(m46G=z5d%|X~`%>JU@|~S3R*I5uslV?@1jkGavFXJDJtMie zpq9ro<-Suo12?39p!TUWSqf1y84@`&G8w)003EGyX4nmpYTMjAEQ1S~dJB~1tYBXv<)XqX$+YpyR+s2EFD-}~S4hT~ zqd(UT%*t|(?<1Aq)&$Qb6-B#+@&~%wiVt)41#`{w=r4Tn-d;dToiGs+lVSvmE_J!U z$UF4XAN$y#=%L*8lq)cLpir>$hbaET48I%+lcj<*yUn{V^#No`3{M-~2sU#Ar|t{3 zcx5;i-w|*f!wMUWXQ(W`ikB_CB=wU_s;c&ql`kk_DxEp~ZDr$k8VWD9Mcl>-yz4 zFqN`y&G#y2&6CC8f~L;gmU&?yu&&9PoRa-(+x_=p)NcQKgyK72{TP&s{>#wvV=RUw z!m^(i*}T{_avH^RMb(jUgyOjEeNTALXwy0ema?27Q=&#_Pq|re4bQugZ}x=BsYJkq zOO)eWJDQ=^ME@XX3izYM2=L2FVRMqXc5$}yH(4{C^E`M1=gb>E zaamyZZN+~U>)5aCDRo}9cu<*qybTe*Xqi1uEsWCK+5?n~0zwW{i}({;c0Z_4gXf|( zb#hz2pzvqyD<)*I1J-YA?w0u9cz~EuRFl7tBphuPzug8oX4Gy_lU)6PYR&nT45|6F zVCCz?_!cj(qol*)`gP2C@7L4Zjy+XSj_uXfnk=~mYx9}- zS#e@454do(QZ*sc3`16VOEu(3EPszim7T&C*akI1hGsck;KR#YnxjfzTq&r(4R<43 zt?Ui|+QR|AH;4Qx7#*{9P2=mUnIyi=_@H+q6B#gI^MPe1(UPg%aN!#r-F`taO{{F= zVeDXNzkGWV0fs zDL@AdD8MZDSv-ZX6b{n&@;{(yk(-_Qd|t9($Z2^qxwl3@^6`?igc34rkVbRpJ^W+rp=S6Sf@^N3#t(GjfUW~W{Z8@?Da z1SVZomiR=DG$ww5fjHid6(Ebyc9Hk`Tfcj*&b(^@* z%?J8^FI7d~ixEWmO{r^p>Z~>}({MsZKnoAb^tAn?Fbc%BPVU{VSLS-x$%NIswhnmr zWAO^@#Af2+btUE{ph-QEV(vshQm?ZTnjZGC{VRRrWC|Y0a5~F7N^5acprS55LX4xC zSy8BCL4hp!p!DE{GWvE!wXom@o^dLqRV}EOANP!43EmJ&e6_w}dCQjrr`lb*%z}ru3W?s3}-{^Cm^S@p(%m)fo%Xf2N3j79&0gU(l(G_Cxw0 z{l~H(h}s)5PH=MIcO(f(0`n#l?$?3VSgW-}8-c_6i4p5+!MoK6r_Oghg(~%P5*~|i zCr%pRH2n~{*e82WaG{c;6b242PYy?sQk_Dc#-M`5;qKz@%uGl1qeN-KnwmBP4s@6F zBoWFt(SETWwkqp=LPlohyOycZ1=eEvg2Zp^S~^_pSF~U~{lnU(0ybVLtcQ{T(_%i+ z_cNF-P-A|U6Nxvn+v0|;AVM9-<^KHAM&~C*gfZimPrSR8>(kApKM72vV5K7=q8`|C zb-Q5y2QrMUY}uU&nnO|7*PRxG(*CD(o+ooO>TYDBP<*PVxIjmGaqIBGv zvz{>-q*%$19xk0`quS`&4h!Mi;5{|RCj=#dg6_bc@f!{{1k^eD%>(|36v8%CH=W}j zfk6%CV>J#b?Q{fFkBw%LPIwIW4^Xx}!41AlkU0#6U?Z+4^k ziMZI|{R_*avjvo&2y?C`v;zFErY?eUN>==tn!^fOK@+H7eJjW~o&liVq=7 z-G?Vp>vefV*{_j^>kr}j%bLQ*wO8W$K-(T83(okhJmbT6X1?3`+lIZdorZk{({|`P zh3%H}$xCC<`CLBc#rQ%4S^O;EKUae_{kb;VYV29|zQUd53Cw5vjPhJ0 z;&se0TQS-l65(>^$(F79xrfLacJ#QGy8HEda2&+YA7Q5&TBqOesTb$$PAw91+9b^2X-T4GQ2Y#6n0W|xz;lZ}$=ZVcsZ z@HYHI7l_f9^B>ob*NM(6)zH$e#9xo;1_!*CIn6m>X_K@;Sh*KNa*9QTjRenw$0g1s zQN1ohAyW)yDT~>?zqo>|aYq9@G9m}9j|uVj$pcKg+WVjM8EgrtG7J-61H^;ZZg|!D zGrDS0%;5V>06(vl7;1gyWa%h{!lxLvma-0&P9s}h&7C5q;A#Id?a+OGvD&9?b^_G@ zu4H4VE1RX6km~zChR2;)k{aXXOX8-0az&9kifgB`rl!pl5r=T~L}PQnO4sJ7(Jxt= z%C3Ywpj5U>m3J|#1eqiv#mY*G$la>|OsP_+IJVa6%Exjcm^E@9lTyUSCMxgl910i97ZX>wHytZCYo#N9KJPywn zjJ;(qlr@>>RyRA-ABSLHW6*utz-NrdsrYCP(LA^CG@0Ao`g@L&kTJ@5DBjQ%JU z1~DC{nbW|e6eLS&&BVA-R1F5jR4&VnghxFKnndK8Y|N}JgoEP|xV#7b7gwLmZ?=CT z9}eG=r^=~pm>N^poR6=aR?}?RjDKI-63!4Zij0>fbiO;J$4fTu&&cPl84qGdwKyMh zu52raYztadx`}KMPCo(ehasl4bbNAlc)Bph-{8|xMrqoCoW)yXS3NS21ycec=L0cc zruM^;RM-Y0-q$H7PdfjZ6;dgf|H?0A&^XOz08$|r(ADsL#Mr!^v=H_l4<6m1VID_m z!>FjX(>=s)d3WD(e5IcXbBRlY(@__2b!ibaDSn>EXt$5i8rNVBW5q=M3y37GO}Z1%F}W;mv)@Igm!Qb0ilx7|((_m& zT!%KhPypqBZuW=UN&3FW4;X7Z*PHL|-U&v{QCg)KrZskL6TI23sh548O@XPC-88Y%+?n+0?=3feg9_4fC4EE? z)<(INelF!}>pz;GD?U(imTPb3rrLpQ_}x{Q-u}*;(IH(gi`Pb_g+1|5$FpK1$WL@7 z6$@(UaobiI!BqG$XZO|HW}7st`^2lkBA%*T8&E(i#PZ6n!Rma{_VN1FJS0!+J5~92 z=oXCtKjvBI*2N?X^M#Ox`y@*t7O~ve+FY9%*$5|g-ptAF*-~+oP=DTxo|HbmQPY>N zO4~toEuN^Bf{vRa@!E|DHd-E?uQ5v~*Vl6;&vpY1I_qe*#3CS53Sz$|_4fR2VE7f5 z-x>;WMYHT40fZX(1IGb*iGz23i&Zk51Wv8U16uqaFz#1`XYqpf3IsX{DP|E zxN%;un2@--oUosaZ zeo*R7`Z_TEL3mUni2o8eX~Rglz`)d?amIe)K|!1Oi2Cf9m@c$N_=SrCvw1>;NQTTm z{WLl0`v*b0gQ0XbWf0bzN46l(go_O&mL7NM!>P4!qGpYN@v2cwNfQSF;B|Tf?0$Ou z<&+u2RsNc$vhuEna?EP#M{KcNij7+Sa{;#OiW0}$5-|rBxPj}i8B~I*sZ zyT38>ohj4io>hkjU0JelE}F%Kqv)wlbixELBLe@0O$k6@sXYFL${R8FVo4@nSse^u zIyUtzIoLi47&hmC<*YTpNp3GW>?j~~M8l9o{uHt&tf&UbAe|AJXcL`aY}TzKU52vO z*j&ae;e0!CS$9=`8-h8Z3eSq-4)_MnsyYk5zR1oZ=`?=04KEoHygl>X3Nxxh5odRF~Rn0VPH8 z4bwW^17zK)<=6+{4b}dktv-N8WVgu83%mPkZNhkYv9ml@v7V^DkTWXqPQHudC+$qpEQy#y6Apv%wOY zM6vIT4B)xRi6WgIWPjO!I+7ctv zSrNoB=}D6O(R4z&c3($gkzL%CmY@hvzZ|5hj9`Yjvdy~g=QaIo3E@ygnsy`ovQ=$T9!AOAcU^L zM(3?VnHz^n0iPtxySpWMk<&xyP*mDT$(c{LfARxGl)xl@1E=n{M!B!v?3mQKEk8E=W!&hbrs?^Y=O_Ltx!SMwwYQ{&9(xE-Tp}uGOzyfp^uD&S zoa(Z`F)rl}M@ftJ*}?8&P4S)8XE{HQ>m9AHESEN%Eqz1Sy6(JM1RgD{|4Xv}@6$*X zw)JjkpsaCo66c~NHH*Z?tYbD8RVr38(~OUb6XP%X-|VG~CTp@iv`QC!F15>UX~RMboPdk$`t)6XSZ2-iIF%4j zO&2B{B+?nlIEuXyDOuhp1c8u<3%GDT>5&fP6n4XDpG5bxX#v&BF9?&?Y98;Rlh&-L z?KKIHPe81f6x$fjTGU9Fp0cZR@Om&(uO{eqS7f@=xatlymtkm?SYJ##(KU2DSRap`?4 z9;q(BRZmf}fa$zFGdT=+rI}ny={I`d=DPw**cRklW)DENq0u49JvFV)tA-KTd|q6% zha{Zmp1a!X+B4Zr+P6gMQ!paT*-dcujkF_re}z9)ycO>3N>|QmRvC*^`VJ05dF$v^ z&yEMCOoA3s+ZMy?TO+BFPpvnecEX0*#$8ZfN3+#4U+6Xy?vmbgqVZ9?!Rz$z z5Zo-mk%THmI?6UGScPH@qS(~H>W_UUzrdO>;X`x~t3k;fG*o`Oat~mv+T`eXqq%ek zFgD&&zO?#!N@=!gU+kdjC=uuqI&=zHl16{{n~=Jn)jmFQB}{@mrX z3`?&`%IX#Ke@O0MWd3RCnqY5SPW@kppFX&7c)eQ#;3$d07`$Cs=Hs}$>jG2vPBOu+ zBz8c|=qG|nei04Wo}YBc#MFb#cR2_9{T(Mt)*z2@zzI7NXsr9*BTlbx;0xJs6{03F zlczF{LY0l5%(!#;%swri&HA400MATSa{$GGj={jir1MFF-SPQ3GAw{b_BM4o;?@Uf?P+0gsn+C#Vh1F-g(POSGy{RovYY zffc0uqh3Y*ZWw>^H%J$s{-rli+S)re7?kaO_CqrP6%uLvjv=QUjuI_~+|LDins;wG zyk(rIQO<71#dc|iOlHN$05OE|_R(06!$UA%!DRF|A7r?<@Q*34UL``XDvMve{^mxA z=v}7M4NHbCV-j!hEJGQ)8D%+!cp7fI&isQtPejbS1YU9L;>05V63MyvAPKMh{325i zf30;ze(PjgW}6rL#G~|A`oR7u*m;RY!sKgov6E*|VxqT6*RQ~BE!wjb?4Fp_LRP$u zufS5rS6o042?p^PZy&Bx^)3N?&(UVZgP}>bQ7oQ)A1n#LS5l7+6X|N)T+B?62xNM6 zHU(sE~;5+9y{?yQ{`yT9rJ)cM;wGV^?hL! zw-x?UxJsO%3?M@A!-VC7^%Va@ih9JtK_v~(roh<48J1|x@oAz{{v1VDpn>qRAP-n4 z#>FnRjhDcxC#ZzWdh^{vN{qtv$}myuoj@4NNjGrso!?;~0wrfl?>3DY#&X#BEa^j= zEyW`yCdCt>WZp07tDfhxnIOl5R7mL$t9R&O2rG%(7xjtrR|m2SDWe41Fj4uM<eZ zNaITccf;qtzP|v^xtjE1z(xJ$Z+vwr^5xmu~vjX3eGj zl>W_~1`dTt`0ncQ3oAbU>w#}3RT$3aYpIE>t?AjC>yKij%&pAUTj(tK&7O8(GT8s1 z4!%YRukwD5^bN-nYVsNPTO|vRPRdRDHb2j3H@=;~d*06Hm1+&%k`7*Q(Si|hVjaCH zA98{`*cBA8j7eUp3~18LDY(A<_}nFZrlEtDaTNaXr`nD8XWv5);)riO_2ZO_Jm}){ z0pcgBy+QmeWyYI`1Dzg0eM*!+WY`ruzcLAR(#Q*ijv^BASYi}#M9TGt;uKkRcIm)( z2o7RO8Ejxv42eG%NP7oxlG6UQ4OBsh#YLPq(Jlc$($qq%k^HRz%6R>OUNmA&XFYSQ z>jDW1;uYfvHud2ky0P_a9WLyfMzC|1I3h**eq4IF7)KxoVM4QxfF#7>kaITn$YJI7HQY#m1vRNDm z`N>!{PcIn!t79t1coV$XHW_-mz4kaC&h_?cchY7!?0fcKo(_Ip#nlM4+Vj^nYxO3V-G?WbqXudR5*;3HP=%q(lg&7UWL) zI1sh5J`1~@k)K)91RY{sNcC$)pXy7GnXQe3I#0p%#@&$s`g+)Kn3C(-1$TVJt18n@ z?{|10?N^ENY}_A~UjLC#=K1~zyLSUZjXqssIP=4OA!j!g79z`^^u>ZU+Vx5}JOns0 zr1P_#&lAmfEKj*fkYSLQuj3Trei@}YFKH4^_nVEg)l3pJ3!r&umFJXjw4f}@JeIK! zf!Iy&&W?yVfxYgOu?3zU5W|?AdZ^c4OI(|4IR$ZD%)8?cHhW>iG-r@##f%Qa;77)j zbtvkLkp9Dq^A%UZ2q-6X+q>D50N>zDR zgmWbd)2m|?zv^pDwxxhqCUVAo8%+l()yJ6jYdd`y>qv?%h&Fud?O!TF<_Pz!l;{@vVp9R^XJqgi2Dl%aR^>H~ zH8-@!LG0j)YfT-1FMR`XX)rB+hOp$IX^|r3+T!(tx+cc-4N)AC54;R-Y$a$}YO#-x zU$l;OyE;W-%vO=^gwEH(4s8suj@D;gC%O4{Hi>&zFQJiG*_@FeWW3i`;rT~wMOPc; zdo-1N(=P=og{7Nm$!aBPKIPvy3Org-KNPvIDOyyzgg)A}&_lW(%yyT0($eLE<_&+> zO15cIJFiP}Dm5{nKuhYYPhD%mWAbml7*am|qEVyD+MplSF!xtvUx`($Jh3vOU?`T;_%$98EUaRjcFcJs>N>|;+B-gvPM){ z>8YTdan|!6kWYz0YKgg(T=6cM0>Zq-QJ{3i^{S$TbX5n2%8uxn!R^nY-lRZD9aHI3 zdLj1KkIZ(Q<}$VjX3*9Ck}XkZbW69AzdEM}vkIDUUz0uE(X3aWh-bw9i0qhL;oY9@B2sJF#3^jf zZ%|>74HM{nvYp^V^J`=+o9AtNgEbik5yd-%so=MoRsf-S^G_Z|zBr%|<{{j*I}+$_ zxm%z&{VYd$dDNslVMoxoRSIGECQcj{d61re84$QYUaQd;*))Kl7SL=< z=r=u9r8?KX+TG5ylyh9ZrT+XmO7_N!qskoah`%Cx__b=d$d9!2SdUIUwGuPzQVrMa zPv~q56p70zKH$QGsYwz~TI;UiCBo{Fv%tG3i7DWS`^Mz`0(Gs5WD@|YcwuIu#R^NQo4pBckj4vN{qH~NZ_&u zz*3vW(C8DVU}Bf$t!%WB3-&6&DAe|Z9q{afXyVk4I;Y2-hS zA!C0HFe7<#gp!=`;$AXERQ4xXPRtKzlHW`0z1z(dxAeMKB$wpll1dDLs$Ou5@3XrW0X%D=~}`0F1-0r>8hg#8Y&lZ_^dIdQ~L^lVE!a zaEcTE^ZE|%wVNkVse64SA|Qe>=PUw^@UGLMHdT5;)a zlb4AYIJcLjFt|=@@nN`olErfMYq<=IFH{T=k~J112$*~?^q5p%yC1QR`mlbdGe`ki z)C?IR3dz!b{mea@Rv*K&B3Ft3M@o(Lzv&yg^DM5Vozr1eJFoc$Wv zrU(#nGw~9L(-Xn)$q^N7=y~0fHh6j|0d{PG7ilQx2LF3m~?@ ziEz|<)OJmDALtgLOup$0xnAOYKoQQWL;DxiSCzou8lY{`(l8|vXJdi>_^pvtnxgBf zk~SPi3gw-_%{4EKsX3!=tY=hbq_rJ7us54Y8LQlK2dZD-B)2}zA}vW?LB6zGZ|`6= zI|=(a-?AZ}-cLn@EV}LtehBX(;y3{1A}%p2a{4mto)7v*j}yd2`G;8+EnudJ&7>RN z^)s3ajkj7@Cus3Kgt8qHdz#E?FE$Q7q1{cdZr+3C76*7$BXnhS#VE_xkugv8^IF)%-Y_X}Cf zSc^>;8iw<8b(41k-{XD5=H_pV*tfzRezQKV5U6&{#K^)lNS|#J$ltxWF_d$+9##}x z>|uS+^*#~&#cw9fF}u;HIW6Y&mgCPjyOvaL6w7U$4O=t|B+XXs&5-{>pBhawDX{IF ze)BDHpgW&8UQ@$=KAI-hjwjC09T~0)I*DV$Ocd9{40pk<{wT30w#%db23o4L z#eeSRtDO=Lxo@vRk}MuK>osd;DjgL@yY39hQCc|HYUU$tuYt2!7=0gOok9u4Gq+#U zLwgznG=b3d9uNhyQP2dz#RnC%5}SM12f1~z|Fw{+X*eI9u{$!LyxD4rRay|&9b~-Eui<`3@V$b@Y}6rCx1xTF6pl3N z{D2*=`LXwM6_f+{`V|z}>Zv?yqD1G_iQ-7R@-b2BD(d^e3nA8cOGLHbNwXq8K4zwk zi~int?Qgry3tbW^M6U!~M)~~aXG}Y@{+Q<$a^$DA2LEXJ+cXlK{c7VUG77?25Nx0o zf;i~?5m4eEN}>#ucA;c~0l&%oK5(fejIJ=#9h5(g@o6ojg&{zgGQY7Ol{m-Y|n2#9$i#w$OHwq)( zqmJ#Yq3S4_}wn)XTjDV8ACsnUh1E)0?MQV)FQO)iH>fH08v7%z`H4bD+D z4PwpA-8nk0ZxKua?@v)4gtYw{b+!fXFAyV7=ln?P8LJmFtH|{bUhY zir!b;O}7BWor}ND41F7&Zz1iLUfy}>0y>t5aVVZYdne%*6xtG*YeS|Cf7z+F;P2R@ z&k32c>!$u5%4T2{J?zd(ubnuEn5>loTdT3_IyyJEU{MFN$0Segc%OwERe?xG_hB|{ zx^N@DJ2&63lyr!>@3zA`)_!NnVlLLOp6?oH=uIr~mMuc;oN`vj!g|@GiNEV;l#R8b zRUe|brAHW*IM$}V9T3$>-JcI$t!uY`oH`KA78qT~Jmx`p;zsD^6f+c+Smca8>$r z@R16=^Kzyt@{2gkhZS#Sz3B4jzgul^8`%!4!#xaG5z)fX4y6Fd-%#6s5ssWWzy$WF z%4Kyz>;U^>he4Ap(lEL~)3T>Ao1aZ&{#$1{4t4~|2c8*uwcGA(a?f^AL$7J=HT*CU z7|^3XWMBrzrN$giBi)F2?Dl0UWy~KJHPJODqxxwf%YQ}u0iGy83A7}>n|6+B)hP)3|=Qv}W99k);7 zVpUJ$Uvt*7$msNv9Evk$a19%sEK^eCAphL5kSRZZ^E`H#MoWXXNKmmM@v6cB3O4?{ zcBjP{)?=3vqlUip4YFC`mQ77M{5Lde8kfuOEeqJVD2qI;tFR=d$#A&wa!w)r65@`I zL(}|hG+$#0yVGrMe*8$!%n>HYJZPjDS=9}p?&x#I;e z@+1x|+{Gr6eTx+`#awX=GQ zx`4}^0xS*gA-}~BE|KmH*o}Pp1usR{iz9H&0pt1-HS4s#oA$6>29`IJTXG_L0|-g# zO5Xx6+2%W~e$L5Jd{zS?;aj=!n~CDm#JXq&V=+9jq3>=)#wn{CXqB!{yen!bO&)>+ zjCj29VmNj`v9x)0ub@~oPAWK~AgB{)BDAl1yuC6yhAC?dT;i0eRjczN9n8^Mf zLTIqEhy)%e*}~Zo{qYtW@NhxB{QO#(L7$XOe5YvSEyPsMk z?>L^4gaw+bG)YE|x^smwQP;Z!!0iU!8-}2Kq}8`s;i}V?@wZ=;K1?EP*+p6U^Lx!N zr?A=E%WtTseT^dI9O?)h5&ws9K>5Awigc&@L)G?YFk~rES%@m98s={DmfnXI#JRhF zISidKs4m0>DG+zk(g4Jkh~v11m8t2Cm3ld%t@p(`Fg;OZYJ`W|4390i!_ zentZ?i$m6?*)vf z>|U2~%Yg^F>E_Q?qv9&@HNLS|2r{Y=#Pj9W-Tian7nGehDC?#~u1_wK@8g~t)u=x6 z8|)9MR5@^f2d*LSDOmuv+SGxI>`L7$xUdrh(HQ3T$jf^3khOV=J|E65dTtO3$*ns! zZ1vZP53>o@|~P=iROMHm6jb=;)8|7 zqB}@B2XZk$83_3w-9Hi|s>K5YvP{0WgYIN>E#KNc)~EEs8UNVpU9P@J2G^7fN z!8zz{PtxLhM|4>5AZa{QS$M-0F|U99=f`Pk{)!K{#{#s&B3vz* zO^0zxHsJ2o%hi0vn=y}1;+@G^ueuFPIYr!HAylZD1Q0e=JO9Ug(DI1+(@mON)ppzp z2zPcSpyFy_0Ugd2!@_>^!`*5IS&HEV;-z&ljmW{xAh7VK&p3pMTPcGN>rIMqcOgWb<>}>xN&rMQ?%MaVW+ffvcsWEuB-8UmRh} zMZh}7^dOfWK!Li{Yr?|Lgcs?Ow<`Fr{N%rDIHBDmjzvTTLh?fS3IN6dgR(blDsv_# zb$qWbIu>%1om8@A)A2yH&zT?9b8~H%Vj{XLZ~HzgF|T2^{4|=gJly4eU~Y)m>%17Y zU5IE7J2Oc7+C`J8l5L5=i%+lCn?=(*ogXF6gocL@~xtH$_uQJYXt_6Rc3Tutl=L>Y)I;9MCkb(r!Ax$yzRUW%01Ja=il>VPS_dQPCxPp=Lz!es7rvD z=ah({$mp#K5>|Mm~N!EW56!zIK+$rs>{CGoXjlENBQP>K{Q8Ol{tF09wy zto}3Q|K*iHGAwVSjfb_}=Bb#nsfRyX{-6L`C@R|tifAbL;^A5)ik+(Zf5?n~TLIw5 zLrL*@BBXNacB?FR;ibeR_4T)^<3@7TLJ|@ZARUtW2LEXsk`=WrXvq^SZ4=w9j1x$*z7s^X+jmts^||mh9R(EmYxP)`!R8Z^-nop2NE8&Rc0uBUuKiz00XF;kOe82>M%#_-GAN%_7o;MC8s-Q!W)|Uk5%)})Bm@c zyF5SnFSmNZx<@UG3HI`T3xxgchQD2e1wVoEhlcz2KYu?cfANHL3+Px!1dI9@WkW~RxNSg-zFGs60UH||9 literal 0 HcmV?d00001 From ba7551c56c57ace6fa72a58e108d86c32723885b Mon Sep 17 00:00:00 2001 From: MobarakHsn Date: Mon, 29 Jul 2024 19:04:31 +0600 Subject: [PATCH 09/16] Pgpool configuration Signed-off-by: MobarakHsn --- .../configuration/pgpool-config-file.yaml | 14 + .../pgpool/configuration/pp-misc-config.yaml | 25 + .../pgpool/reconfigure-tls/new-issuer.yaml | 8 + .../pgpool/reconfigure-tls/ppops-add-tls.yaml | 25 + .../reconfigure-tls/ppops-change-issuer.yaml | 14 + .../pgpool/reconfigure-tls/ppops-remove.yaml | 11 + .../pgpool/reconfigure-tls/ppops-rotate.yaml | 11 + docs/guides/pgpool/configuration/_index.md | 10 + .../pgpool/configuration/using-config-file.md | 185 ++++ .../pgpool/configuration/using-podtemplate.md | 199 ++++ docs/guides/pgpool/quickstart/quickstart.md | 2 +- .../pgpool/reconfigure-tls/reconfigure-tls.md | 870 +++++++++++------- 12 files changed, 1028 insertions(+), 346 deletions(-) create mode 100644 docs/examples/pgpool/configuration/pgpool-config-file.yaml create mode 100644 docs/examples/pgpool/configuration/pp-misc-config.yaml create mode 100644 docs/examples/pgpool/reconfigure-tls/new-issuer.yaml create mode 100644 docs/examples/pgpool/reconfigure-tls/ppops-add-tls.yaml create mode 100644 docs/examples/pgpool/reconfigure-tls/ppops-change-issuer.yaml create mode 100644 docs/examples/pgpool/reconfigure-tls/ppops-remove.yaml create mode 100644 docs/examples/pgpool/reconfigure-tls/ppops-rotate.yaml create mode 100755 docs/guides/pgpool/configuration/_index.md create mode 100644 docs/guides/pgpool/configuration/using-config-file.md create mode 100644 docs/guides/pgpool/configuration/using-podtemplate.md diff --git a/docs/examples/pgpool/configuration/pgpool-config-file.yaml b/docs/examples/pgpool/configuration/pgpool-config-file.yaml new file mode 100644 index 0000000000..946b09b890 --- /dev/null +++ b/docs/examples/pgpool/configuration/pgpool-config-file.yaml @@ -0,0 +1,14 @@ +apiVersion: kubedb.com/v1alpha2 +kind: Pgpool +metadata: + name: pp-custom-config + namespace: demo +spec: + version: "4.4.5" + replicas: 1 + configSecret: + name: pp-configuration + postgresRef: + name: ha-postgres + namespace: demo + deletionPolicy: WipeOut \ No newline at end of file diff --git a/docs/examples/pgpool/configuration/pp-misc-config.yaml b/docs/examples/pgpool/configuration/pp-misc-config.yaml new file mode 100644 index 0000000000..60b69eb8af --- /dev/null +++ b/docs/examples/pgpool/configuration/pp-misc-config.yaml @@ -0,0 +1,25 @@ +apiVersion: kubedb.com/v1alpha2 +kind: Pgpool +metadata: + name: pgpool + namespace: demo +spec: + version: "4.4.5" + replicas: 1 + postgresRef: + name: ha-postgres + namespace: demo + podTemplate: + spec: + containers: + - name: pgpool + env: + - name: "ALICE_USERNAME" + value: alice + - name: "ALICE_PASSWORD" + value: '123' + - name: "BOB_USERNAME" + value: bob + - name: "BOB_PASSWORD" + value: '456' + deletionPolicy: WipeOut \ No newline at end of file diff --git a/docs/examples/pgpool/reconfigure-tls/new-issuer.yaml b/docs/examples/pgpool/reconfigure-tls/new-issuer.yaml new file mode 100644 index 0000000000..525645ebf9 --- /dev/null +++ b/docs/examples/pgpool/reconfigure-tls/new-issuer.yaml @@ -0,0 +1,8 @@ +apiVersion: cert-manager.io/v1 +kind: Issuer +metadata: + name: pp-new-issuer + namespace: demo +spec: + ca: + secretName: pgpool-new-ca \ No newline at end of file diff --git a/docs/examples/pgpool/reconfigure-tls/ppops-add-tls.yaml b/docs/examples/pgpool/reconfigure-tls/ppops-add-tls.yaml new file mode 100644 index 0000000000..c254ba7f15 --- /dev/null +++ b/docs/examples/pgpool/reconfigure-tls/ppops-add-tls.yaml @@ -0,0 +1,25 @@ +apiVersion: ops.kubedb.com/v1alpha1 +kind: PgpoolOpsRequest +metadata: + name: ppops-add-tls + namespace: demo +spec: + type: ReconfigureTLS + databaseRef: + name: pgpool + tls: + sslMode: require + clientAuthMode: cert + issuerRef: + name: pgpool-issuer + kind: Issuer + apiGroup: "cert-manager.io" + certificates: + - alias: client + subject: + organizations: + - pgpool + organizationalUnits: + - client + timeout: 5m + apply: IfReady \ No newline at end of file diff --git a/docs/examples/pgpool/reconfigure-tls/ppops-change-issuer.yaml b/docs/examples/pgpool/reconfigure-tls/ppops-change-issuer.yaml new file mode 100644 index 0000000000..5ff7899732 --- /dev/null +++ b/docs/examples/pgpool/reconfigure-tls/ppops-change-issuer.yaml @@ -0,0 +1,14 @@ +apiVersion: ops.kubedb.com/v1alpha1 +kind: PgpoolOpsRequest +metadata: + name: ppops-change-issuer + namespace: demo +spec: + type: ReconfigureTLS + databaseRef: + name: pgpool + tls: + issuerRef: + name: pp-new-issuer + kind: Issuer + apiGroup: "cert-manager.io" \ No newline at end of file diff --git a/docs/examples/pgpool/reconfigure-tls/ppops-remove.yaml b/docs/examples/pgpool/reconfigure-tls/ppops-remove.yaml new file mode 100644 index 0000000000..369bf9852c --- /dev/null +++ b/docs/examples/pgpool/reconfigure-tls/ppops-remove.yaml @@ -0,0 +1,11 @@ +apiVersion: ops.kubedb.com/v1alpha1 +kind: PgpoolOpsRequest +metadata: + name: ppops-remove + namespace: demo +spec: + type: ReconfigureTLS + databaseRef: + name: pgpool + tls: + remove: true \ No newline at end of file diff --git a/docs/examples/pgpool/reconfigure-tls/ppops-rotate.yaml b/docs/examples/pgpool/reconfigure-tls/ppops-rotate.yaml new file mode 100644 index 0000000000..f47d6d6802 --- /dev/null +++ b/docs/examples/pgpool/reconfigure-tls/ppops-rotate.yaml @@ -0,0 +1,11 @@ +apiVersion: ops.kubedb.com/v1alpha1 +kind: PgpoolOpsRequest +metadata: + name: ppops-rotate + namespace: demo +spec: + type: ReconfigureTLS + databaseRef: + name: pgpool + tls: + rotateCertificates: true \ No newline at end of file diff --git a/docs/guides/pgpool/configuration/_index.md b/docs/guides/pgpool/configuration/_index.md new file mode 100755 index 0000000000..d6f1ea49ac --- /dev/null +++ b/docs/guides/pgpool/configuration/_index.md @@ -0,0 +1,10 @@ +--- +title: Run Pgpool with Custom Configuration +menu: + docs_{{ .version }}: + identifier: pp-configuration + name: Custom Configuration + parent: pp-pgpool-guides + weight: 30 +menu_name: docs_{{ .version }} +--- diff --git a/docs/guides/pgpool/configuration/using-config-file.md b/docs/guides/pgpool/configuration/using-config-file.md new file mode 100644 index 0000000000..8f7437b1da --- /dev/null +++ b/docs/guides/pgpool/configuration/using-config-file.md @@ -0,0 +1,185 @@ +--- +title: Run Pgpool with Custom Configuration +menu: + docs_{{ .version }}: + identifier: pp-using-config-file-configuration + name: Config File + parent: pp-configuration + weight: 10 +menu_name: docs_{{ .version }} +section_menu_id: guides +--- + +> New to KubeDB? Please start [here](/docs/README.md). + +# Using Custom Configuration File + +KubeDB supports providing custom configuration for Pgpool. This tutorial will show you how to use KubeDB to run a Pgpool with custom configuration. + +## Before You Begin + +- At first, you need to have a Kubernetes cluster, and the kubectl command-line tool must be configured to communicate with your cluster. If you do not already have a cluster, you can create one by using [kind](https://kind.sigs.k8s.io/docs/user/quick-start/). + +- Now, install KubeDB cli on your workstation and KubeDB operator in your cluster following the steps [here](/docs/setup/README.md). + +- To keep things isolated, this tutorial uses a separate namespace called `demo` throughout this tutorial. Run the following command to prepare your cluster for this tutorial: + + ```bash + $ kubectl create ns demo + namespace/demo created + ``` + +> Note: The yaml files used in this tutorial are stored in [docs/examples/pgpool](https://github.com/kubedb/docs/tree/{{< param "info.version" >}}/docs/examples/pgpool) folder in GitHub repository [kubedb/docs](https://github.com/kubedb/docs). + +## Overview + +Pgpool allows configuring via configuration file. The default configuration file for Pgpool deployed by `KubeDB` can be found in `opt/pgpool-II/etc/pgpool.conf`. When `spec.configSecret` is set to pgpool, KubeDB operator will get the secret and after that it will validate the values of the secret and then will keep the validated customizable configurations from the user and merge it with the remaining default config. After all that this secret will be mounted to Pgpool for use it as the configuration file. + +> To learn available configuration option of Pgpool see [Configuration Options](https://www.pgpool.net/docs/45/en/html/runtime-config.html). + +At first, you have to create a secret with your configuration file contents as the value of this key `pgpool.conf`. Then, you have to specify the name of this secret in `spec.configSecret.name` section while creating Pgpool crd. + +## Prepare Postgres +For a Pgpool surely we will need a Postgres server so, prepare a KubeDB Postgres cluster using this [tutorial](/docs/guides/postgres/clustering/streaming_replication.md), or you can use any externally managed postgres but in that case you need to create an [appbinding](/docs/guides/pgpool/concepts/appbinding.md) yourself. In this tutorial we will use 3 node Postgres cluster named `ha-postgres`. + + +## Custom Configuration + +At first, create `pgpool.conf` file containing required configuration settings. + +```bash +$ cat pgpool.conf +num_init_children = 6 +max_pool = 65 +child_life_time = 400 +``` + +Now, create the secret with this configuration file. + +```bash +$ kubectl create secret generic -n demo pp-configuration --from-file=./pgpool.conf +secret/pp-configuration created +``` + +Verify the secret has the configuration file. + +```bash +$ kubectl get secret -n demo pp-configuration -o yaml +apiVersion: v1 +data: + pgpool.conf: bnVtX2luaXRfY2hpbGRyZW4gPSA2Cm1heF9wb29sID0gNjUKY2hpbGRfbGlmZV90aW1lID0gNDAwCg== +kind: Secret +metadata: + creationTimestamp: "2024-07-29T12:40:48Z" + name: pp-configuration + namespace: demo + resourceVersion: "32076" + uid: 80f5324a-9a65-4801-b136-21d2fa001b12 +type: Opaque + +$ echo bnVtX2luaXRfY2hpbGRyZW4gPSA2Cm1heF9wb29sID0gNjUKY2hpbGRfbGlmZV90aW1lID0gNDAwCg== | base64 -d +num_init_children = 6 +max_pool = 65 +child_life_time = 400 +``` + +Now, create Pgpool crd specifying `spec.configSecret` field. + +```yaml +apiVersion: kubedb.com/v1alpha2 +kind: Pgpool +metadata: + name: pp-custom-config + namespace: demo +spec: + version: "4.4.5" + replicas: 1 + configSecret: + name: pp-configuration + postgresRef: + name: ha-postgres + namespace: demo + deletionPolicy: WipeOut +``` + +```bash +$ kubectl create -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/pgpool/configuration/pgpool-config-file.yaml +pgpool.kubedb.com/pp-custom-config created +``` + +Now, wait a few minutes. KubeDB operator will create necessary petset, services, secret etc. If everything goes well, we will see that a pod with the name `pp-custom-config-0` has been created. + +Check that the petset's pod is running + +```bash +$ kubectl get pod -n demo pp-custom-config-0 +NAME READY STATUS RESTARTS AGE +pp-custom-config-0 1/1 Running 0 35s +``` + +Now, we will check if the pgpool has started with the custom configuration we have provided. + +Now, you can exec into the pgpool pod and find if the custom configuration is there, + +```bash +$ kubectl exec -it -n demo pp-custom-config-0 -- bash +pp-custom-config-0:/$ cat opt/pgpool-II/etc/pgpool.conf +backend_hostname0 = 'ha-postgres.demo.svc' +backend_port0 = 5432 +backend_weight0 = 1 +backend_flag0 = 'ALWAYS_PRIMARY|DISALLOW_TO_FAILOVER' +backend_hostname1 = 'ha-postgres-standby.demo.svc' +backend_port1 = 5432 +backend_weight1 = 1 +backend_flag1 = 'DISALLOW_TO_FAILOVER' +listen_addresses = * +log_per_node_statement = on +num_init_children = 6 +max_pool = 65 +child_life_time = '400' +child_max_connections = 0 +connection_life_time = 0 +client_idle_limit = 0 +connection_cache = on +load_balance_mode = on +log_min_messages = 'warning' +statement_level_load_balance = 'off' +memory_cache_enabled = 'off' +enable_pool_hba = on +port = 9999 +socket_dir = '/var/run/pgpool' +pcp_listen_addresses = * +pcp_port = 9595 +pcp_socket_dir = '/var/run/pgpool' +sr_check_period = 0 +health_check_period = 0 +backend_clustering_mode = 'streaming_replication' +ssl = 'off' +failover_on_backend_error = 'off' +memqcache_oiddir = '/tmp/oiddir/' +allow_clear_text_frontend_auth = 'false' +failover_on_backend_error = 'off' +pp-custom-config-0:/$ exit +exit +``` + +As we can see from the configuration of running pgpool, the value of `num_init_children`, `max_pool` and `child_life_time` has been set to our desired value successfully. + +## Cleaning up + +To clean up the Kubernetes resources created by this tutorial, run: + +```bash +kubectl delete -n demo pp/pp-custom-config +kubectl delete -n demo secret pp-configuration +kubectl delete pg -n demo ha-postgres +kubectl delete ns demo +``` + +## Next Steps + +- Monitor your Pgpool database with KubeDB using [out-of-the-box Prometheus operator](/docs/guides/pgpool/monitoring/using-prometheus-operator.md). +- Monitor your Pgpool database with KubeDB using [out-of-the-box builtin-Prometheus](/docs/guides/pgpool/monitoring/using-builtin-prometheus.md). +- Detail concepts of [Pgpool object](/docs/guides/pgpool/concepts/pgpool.md). +- Detail concepts of [PgpoolVersion object](/docs/guides/pgpool/concepts/catalog.md). +- Want to hack on KubeDB? Check our [contribution guidelines](/docs/CONTRIBUTING.md). diff --git a/docs/guides/pgpool/configuration/using-podtemplate.md b/docs/guides/pgpool/configuration/using-podtemplate.md new file mode 100644 index 0000000000..db2d14a897 --- /dev/null +++ b/docs/guides/pgpool/configuration/using-podtemplate.md @@ -0,0 +1,199 @@ +--- +title: Run Pgpool with Custom Configuration +menu: + docs_{{ .version }}: + identifier: using-podtemplate-configuration + name: Customize PodTemplate + parent: pp-configuration + weight: 15 +menu_name: docs_{{ .version }} +section_menu_id: guides +--- + +> New to KubeDB? Please start [here](/docs/README.md). + +# Run Pgpool with Custom PodTemplate + +KubeDB supports providing custom configuration for Pgpool via [PodTemplate](/docs/guides/pgpool/concepts/pgpool.md#specpodtemplate). This tutorial will show you how to use KubeDB to run a Pgpool database with custom configuration using PodTemplate. + +## Before You Begin + +- At first, you need to have a Kubernetes cluster, and the kubectl command-line tool must be configured to communicate with your cluster. If you do not already have a cluster, you can create one by using [kind](https://kind.sigs.k8s.io/docs/user/quick-start/). + +- Now, install KubeDB cli on your workstation and KubeDB operator in your cluster following the steps [here](/docs/setup/README.md). + +- To keep things isolated, this tutorial uses a separate namespace called `demo` throughout this tutorial. + + ```bash + $ kubectl create ns demo + namespace/demo created + ``` + +> Note: YAML files used in this tutorial are stored in [docs/examples/pgpool](https://github.com/kubedb/docs/tree/{{< param "info.version" >}}/docs/examples/pgpool) folder in GitHub repository [kubedb/docs](https://github.com/kubedb/docs). + +## Overview + +KubeDB allows providing a template for database pod through `spec.podTemplate`. KubeDB operator will pass the information provided in `spec.podTemplate` to the PetSet created for Pgpool database. + +KubeDB accept following fields to set in `spec.podTemplate:` + +- metadata: + - annotations (pod's annotation) + - labels (pod's labels) +- controller: + - annotations (statefulset's annotation) + - labels (statefulset's labels) +- spec: + - volumes + - initContainers + - containers + - imagePullSecrets + - nodeSelector + - affinity + - serviceAccountName + - schedulerName + - tolerations + - priorityClassName + - priority + - securityContext + - livenessProbe + - readinessProbe + - lifecycle + +Read about the fields in details in [PodTemplate concept](/docs/guides/pgpool/concepts/pgpool.md#specpodtemplate), + +## Prepare Postgres +For a Pgpool surely we will need a Postgres server so, prepare a KubeDB Postgres cluster using this [tutorial](/docs/guides/postgres/clustering/streaming_replication.md), or you can use any externally managed postgres but in that case you need to create an [appbinding](/docs/guides/pgpool/concepts/appbinding.md) yourself. In this tutorial we will use 3 node Postgres cluster named `ha-postgres`. + + +## CRD Configuration + +Below is the YAML for the Pgpool created in this example. Here, `spec.podTemplate.spec.containers[].env` specifies additional environment variables by users. + +In this tutorial, we will register additional two users at starting time of Pgpool. So, the fact is any environment variable with having `suffix: USERNAME` and `suffix: PASSWORD` will be key value pairs of username and password and will be registered in the `pool_passwd` file of Pgpool. So we can use these users after Pgpool initialize without even syncing them. + +```yaml +apiVersion: kubedb.com/v1alpha2 +kind: Pgpool +metadata: + name: pp-misc-config + namespace: demo +spec: + version: "4.4.5" + replicas: 1 + postgresRef: + name: ha-postgres + namespace: demo + podTemplate: + spec: + containers: + - name: pgpool + env: + - name: "ALICE_USERNAME" + value: alice + - name: "ALICE_PASSWORD" + value: '123' + - name: "BOB_USERNAME" + value: bob + - name: "BOB_PASSWORD" + value: '456' + deletionPolicy: WipeOut +``` + +```bash +$ kubectl create -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/pgpool/configuration/pp-misc-config.yaml +pgpool.kubedb.com/pp-misc-config created +``` + +Now, wait a few minutes. KubeDB operator will create necessary petset, services, secret etc. If everything goes well, we will see that a pod with the name `pp-misc-config-0` has been created. + +Check that the petset's pod is running + +```bash +$ kubectl get pod -n demo +NAME READY STATUS RESTARTS AGE +pp-misc-config-0 1/1 Running 0 68s +``` + +Now, check if the pgpool has started with the custom configuration we have provided. We will exec in the pod and see the `pool_passwd` file if the user exists of not. We will also see if the environment variable is set or not. + +```bash +$ kubectl exec -it -n demo pp-misc-config-0 -- bash +pp-misc-config-0:/$ echo $BOB_USERNAME +bob +pp-misc-config-0:/$ echo $BOB_PASSWORD +456 +pp-misc-config-0:/$ echo $ALICE_USERNAME +alice +pp-misc-config-0:/$ echo $ALICE_PASSWORD +123 +pp-misc-config-0:/$ cat opt/pgpool-II/etc/pool_passwd +postgres:AESNz9O12b8N9Ngz1SpCYymv2K8wkHMWS+5TICOsbR5W1U= +bob:AESBw7fOtf4SCfFiI7vbAYpKg== +alice:AESgda2WBFwHQfKluCkXwo+MA== +pp-misc-config-0:/$ exit +exit +``` +So, we can see that the additional two users Alice and Bob is successfully registered. Now we can use them. So, first let create the users through the root user postgres. + +Now, you can connect to this pgpool through [psql](https://www.postgresql.org/docs/current/app-psql.html). Before that we need to port-forward to the primary service of pgpool. + +```bash +$ kubectl port-forward -n demo svc/pp-misc-config 9999 +Forwarding from 127.0.0.1:9999 -> 9999 +``` +Now, let's get the password for the root user. +```bash +$ kubectl get secrets -n demo ha-postgres-auth -o jsonpath='{.data.\password}' | base64 -d +qEeuU6cu5aH!O9CI⏎ +``` +We can use this password now, +```bash +$ psql --host=localhost --port=9999 --username=postgres postgres +psql (16.3 (Ubuntu 16.3-1.pgdg22.04+1), server 16.1) +Type "help" for help. + +postgres=# CREATE USER alice WITH PASSWORD '123'; +CREATE ROLE +postgres=# CREATE USER bob WITH PASSWORD '456'; +CREATE ROLE +postgres=# exit +``` + +Now, let's verify if we can to the database through pgpool with the new users, +```bash +$ export PGPASSWORD='123' +$ psql --host=localhost --port=9999 --username=alice postgres ✘ 2 +psql (16.3 (Ubuntu 16.3-1.pgdg22.04+1), server 16.1) +Type "help" for help. + +postgres=> exit +$ export PGPASSWORD='456' +$ psql --host=localhost --port=9999 --username=bob postgres +psql (16.3 (Ubuntu 16.3-1.pgdg22.04+1), server 16.1) +Type "help" for help. + +postgres=> exit +``` + +You can see we can use these new users to connect to the database. + +## Cleaning up + +To clean up the Kubernetes resources created by this tutorial, run: + +```bash +kubectl delete -n demo pp/pp-misc-config +kubectl delete -n demo pg/ha-postgres +kubectl delete ns demo +``` + +If you would like to uninstall KubeDB operator, please follow the steps [here](/docs/setup/README.md). + +## Next Steps + +- [Quickstart Pgpool](/docs/guides/pgpool/quickstart/quickstart.md) with KubeDB Operator. +- Monitor your Pgpool database with KubeDB using [out-of-the-box Prometheus operator](/docs/guides/pgpool/monitoring/using-prometheus-operator.md). +- Monitor your Pgpool database with KubeDB using [out-of-the-box builtin-Prometheus](/docs/guides/pgpool/monitoring/using-builtin-prometheus.md). +- Detail concepts of [Pgpool object](/docs/guides/pgpool/concepts/pgpool.md). +- Want to hack on KubeDB? Check our [contribution guidelines](/docs/CONTRIBUTING.md). diff --git a/docs/guides/pgpool/quickstart/quickstart.md b/docs/guides/pgpool/quickstart/quickstart.md index ef2a53f1d3..faebf4986e 100644 --- a/docs/guides/pgpool/quickstart/quickstart.md +++ b/docs/guides/pgpool/quickstart/quickstart.md @@ -188,7 +188,7 @@ Here, Now that we've been introduced to the pgpool CRD, let's create it, ```bash -$ kubectl create -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/pgpool/quickstart/pgpool-server.yaml +$ kubectl create -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/pgpool/quickstart/quick-pgpool.yaml pgpool.kubedb.com/quick-pgpool created ``` diff --git a/docs/guides/pgpool/reconfigure-tls/reconfigure-tls.md b/docs/guides/pgpool/reconfigure-tls/reconfigure-tls.md index 608ec62ebd..ce0f7b46e6 100644 --- a/docs/guides/pgpool/reconfigure-tls/reconfigure-tls.md +++ b/docs/guides/pgpool/reconfigure-tls/reconfigure-tls.md @@ -253,8 +253,6 @@ statement_level_load_balance = 'off' memory_cache_enabled = 'off' memqcache_oiddir = '/tmp/oiddir/' allow_clear_text_frontend_auth = 'false' - - failover_on_backend_error = 'off' pgpool-0:/$ exit exit @@ -360,67 +358,32 @@ pgpoolopsrequest.ops.kubedb.com/ppops-add-tls created Let's wait for `PgpoolOpsRequest` to be `Successful`. Run the following command to watch `PgpoolOpsRequest` CRO, ```bash -$ kubectl get pgpoolopsrequest -n demo +$ watch kubectl get pgpoolopsrequest -n demo Every 2.0s: kubectl get pgpoolopsrequest -n demo -NAME TYPE STATUS AGE -mops-add-tls ReconfigureTLS Successful 91s +NAME TYPE STATUS AGE +ppops-add-tls ReconfigureTLS Successful 107s ``` We can see from the above output that the `PgpoolOpsRequest` has succeeded. If we describe the `PgpoolOpsRequest` we will get an overview of the steps that were followed. ```bash -$ kubectl describe pgpoolopsrequest -n demo mops-add-tls -Name: mops-add-tls +$ kubectl describe pgpoolopsrequest -n demo ppops-add-tls +Name: ppops-add-tls Namespace: demo Labels: Annotations: API Version: ops.kubedb.com/v1alpha1 Kind: PgpoolOpsRequest Metadata: - Creation Timestamp: 2021-03-11T13:32:18Z + Creation Timestamp: 2024-07-29T06:47:24Z Generation: 1 - Managed Fields: - API Version: ops.kubedb.com/v1alpha1 - Fields Type: FieldsV1 - fieldsV1: - f:metadata: - f:annotations: - .: - f:kubectl.kubernetes.io/last-applied-configuration: - f:spec: - .: - f:databaseRef: - .: - f:name: - f:tls: - .: - f:certificates: - f:issuerRef: - .: - f:apiGroup: - f:kind: - f:name: - f:type: - Manager: kubectl-client-side-apply - Operation: Update - Time: 2021-03-11T13:32:18Z - API Version: ops.kubedb.com/v1alpha1 - Fields Type: FieldsV1 - fieldsV1: - f:status: - .: - f:conditions: - f:observedGeneration: - f:phase: - Manager: kubedb-enterprise - Operation: Update - Time: 2021-03-11T13:32:19Z - Resource Version: 488264 - Self Link: /apis/ops.kubedb.com/v1alpha1/namespaces/demo/pgpoolopsrequests/mops-add-tls - UID: 0024ec16-0d43-4686-a2d7-1cdeb96e41a5 + Resource Version: 8910 + UID: 679969d1-4a1b-460e-a64a-d0255db4f1c8 Spec: + Apply: IfReady Database Ref: - Name: mg-rs + Name: pgpool + Timeout: 5m Tls: Certificates: Alias: client @@ -428,34 +391,84 @@ Spec: Organizational Units: client Organizations: - mongo + pgpool + Client Auth Mode: cert Issuer Ref: API Group: cert-manager.io Kind: Issuer - Name: mg-issuer + Name: pgpool-issuer + Ssl Mode: require Type: ReconfigureTLS Status: Conditions: - Last Transition Time: 2021-03-11T13:32:19Z - Message: Pgpool ops request is reconfiguring TLS + Last Transition Time: 2024-07-29T06:47:24Z + Message: Pgpool ops-request has started to reconfigure tls for RabbitMQ nodes Observed Generation: 1 Reason: ReconfigureTLS Status: True Type: ReconfigureTLS - Last Transition Time: 2021-03-11T13:32:25Z - Message: Successfully Updated StatefulSets + Last Transition Time: 2024-07-29T06:47:27Z + Message: Successfully paused database + Observed Generation: 1 + Reason: DatabasePauseSucceeded + Status: True + Type: DatabasePauseSucceeded + Last Transition Time: 2024-07-29T06:47:38Z + Message: Successfully synced all certificates + Observed Generation: 1 + Reason: CertificateSynced + Status: True + Type: CertificateSynced + Last Transition Time: 2024-07-29T06:47:33Z + Message: get certificate; ConditionStatus:True + Observed Generation: 1 + Status: True + Type: GetCertificate + Last Transition Time: 2024-07-29T06:47:33Z + Message: check ready condition; ConditionStatus:True + Observed Generation: 1 + Status: True + Type: CheckReadyCondition + Last Transition Time: 2024-07-29T06:47:33Z + Message: check issuing condition; ConditionStatus:True Observed Generation: 1 - Reason: TLSAdded Status: True - Type: TLSAdded - Last Transition Time: 2021-03-11T13:34:25Z - Message: Successfully Restarted ReplicaSet nodes + Type: CheckIssuingCondition + Last Transition Time: 2024-07-29T06:47:45Z + Message: successfully reconciled the Pgpool with TLS Observed Generation: 1 - Reason: RestartReplicaSet + Reason: UpdatePetSets Status: True - Type: RestartReplicaSet - Last Transition Time: 2021-03-11T13:34:25Z - Message: Successfully Reconfigured TLS + Type: UpdatePetSets + Last Transition Time: 2024-07-29T06:48:30Z + Message: Successfully Restarted Pgpool pods + Observed Generation: 1 + Reason: RestartPods + Status: True + Type: RestartPods + Last Transition Time: 2024-07-29T06:47:50Z + Message: get pod; ConditionStatus:True; PodName:pgpool-0 + Observed Generation: 1 + Status: True + Type: GetPod--pgpool-0 + Last Transition Time: 2024-07-29T06:47:50Z + Message: evict pod; ConditionStatus:True; PodName:pgpool-0 + Observed Generation: 1 + Status: True + Type: EvictPod--pgpool-0 + Last Transition Time: 2024-07-29T06:48:25Z + Message: check pod running; ConditionStatus:True; PodName:pgpool-0 + Observed Generation: 1 + Status: True + Type: CheckPodRunning--pgpool-0 + Last Transition Time: 2024-07-29T06:48:37Z + Message: Successfully updated Pgpool + Observed Generation: 1 + Reason: UpdateDatabase + Status: True + Type: UpdateDatabase + Last Transition Time: 2024-07-29T06:48:39Z + Message: Successfully updated Pgpool TLS Observed Generation: 1 Reason: Successful Status: True @@ -463,65 +476,122 @@ Status: Observed Generation: 1 Phase: Successful Events: - Type Reason Age From Message - ---- ------ ---- ---- ------- - Normal PauseDatabase 2m10s KubeDB Ops-manager operator Pausing Pgpool demo/mg-rs - Normal PauseDatabase 2m10s KubeDB Ops-manager operator Successfully paused Pgpool demo/mg-rs - Normal TLSAdded 2m10s KubeDB Ops-manager operator Successfully Updated StatefulSets - Normal RestartReplicaSet 10s KubeDB Ops-manager operator Successfully Restarted ReplicaSet nodes - Normal ResumeDatabase 10s KubeDB Ops-manager operator Resuming Pgpool demo/mg-rs - Normal ResumeDatabase 10s KubeDB Ops-manager operator Successfully resumed Pgpool demo/mg-rs - Normal Successful 10s KubeDB Ops-manager operator Successfully Reconfigured TLS + Type Reason Age From Message + ---- ------ ---- ---- ------- + Normal Starting 2m12s KubeDB Ops-manager Operator Start processing for PgpoolOpsRequest: demo/ppops-add-tls + Normal Starting 2m12s KubeDB Ops-manager Operator Pausing Pgpool databse: demo/pgpool + Normal Successful 2m12s KubeDB Ops-manager Operator Successfully paused Pgpool database: demo/pgpool for PgpoolOpsRequest: ppops-add-tls + Warning get certificate; ConditionStatus:True 2m3s KubeDB Ops-manager Operator get certificate; ConditionStatus:True + Warning check ready condition; ConditionStatus:True 2m3s KubeDB Ops-manager Operator check ready condition; ConditionStatus:True + Warning check issuing condition; ConditionStatus:True 2m3s KubeDB Ops-manager Operator check issuing condition; ConditionStatus:True + Warning get certificate; ConditionStatus:True 2m3s KubeDB Ops-manager Operator get certificate; ConditionStatus:True + Warning check ready condition; ConditionStatus:True 2m3s KubeDB Ops-manager Operator check ready condition; ConditionStatus:True + Warning check issuing condition; ConditionStatus:True 2m3s KubeDB Ops-manager Operator check issuing condition; ConditionStatus:True + Warning get certificate; ConditionStatus:True 2m3s KubeDB Ops-manager Operator get certificate; ConditionStatus:True + Warning check ready condition; ConditionStatus:True 2m3s KubeDB Ops-manager Operator check ready condition; ConditionStatus:True + Warning check issuing condition; ConditionStatus:True 2m3s KubeDB Ops-manager Operator check issuing condition; ConditionStatus:True + Normal CertificateSynced 2m3s KubeDB Ops-manager Operator Successfully synced all certificates + Warning get certificate; ConditionStatus:True 118s KubeDB Ops-manager Operator get certificate; ConditionStatus:True + Warning check ready condition; ConditionStatus:True 118s KubeDB Ops-manager Operator check ready condition; ConditionStatus:True + Warning check issuing condition; ConditionStatus:True 118s KubeDB Ops-manager Operator check issuing condition; ConditionStatus:True + Warning get certificate; ConditionStatus:True 118s KubeDB Ops-manager Operator get certificate; ConditionStatus:True + Warning check ready condition; ConditionStatus:True 118s KubeDB Ops-manager Operator check ready condition; ConditionStatus:True + Warning check issuing condition; ConditionStatus:True 118s KubeDB Ops-manager Operator check issuing condition; ConditionStatus:True + Warning get certificate; ConditionStatus:True 118s KubeDB Ops-manager Operator get certificate; ConditionStatus:True + Warning check ready condition; ConditionStatus:True 118s KubeDB Ops-manager Operator check ready condition; ConditionStatus:True + Warning check issuing condition; ConditionStatus:True 118s KubeDB Ops-manager Operator check issuing condition; ConditionStatus:True + Normal CertificateSynced 118s KubeDB Ops-manager Operator Successfully synced all certificates + Normal UpdatePetSets 111s KubeDB Ops-manager Operator successfully reconciled the Pgpool with TLS + Warning get pod; ConditionStatus:True; PodName:pgpool-0 106s KubeDB Ops-manager Operator get pod; ConditionStatus:True; PodName:pgpool-0 + Warning evict pod; ConditionStatus:True; PodName:pgpool-0 106s KubeDB Ops-manager Operator evict pod; ConditionStatus:True; PodName:pgpool-0 + Warning check pod running; ConditionStatus:False; PodName:pgpool-0 101s KubeDB Ops-manager Operator check pod running; ConditionStatus:False; PodName:pgpool-0 + Warning check pod running; ConditionStatus:True; PodName:pgpool-0 71s KubeDB Ops-manager Operator check pod running; ConditionStatus:True; PodName:pgpool-0 + Normal RestartPods 66s KubeDB Ops-manager Operator Successfully Restarted Pgpool pods + Normal Starting 57s KubeDB Ops-manager Operator Resuming Pgpool database: demo/pgpool + Normal Successful 57s KubeDB Ops-manager Operator Successfully resumed Pgpool database: demo/pgpool for PgpoolOpsRequest: ppops-add-tls ``` -Now, Let's exec into a database primary node and find out the username to connect in a mongo shell, +Now, we let exec into a pgpool pod and verify that the TLS is enabled. ```bash -$ kubectl exec -it mg-rs-2 -n demo bash -root@mgo-rs-tls-2:/$ ls /var/run/pgpool/tls -ca.crt client.pem mongo.pem -root@mgo-rs-tls-2:/$ openssl x509 -in /var/run/pgpool/tls/client.pem -inform PEM -subject -nameopt RFC2253 -noout -subject=CN=root,OU=client,O=mongo +$ kubectl exec -it -n demo pgpool-0 -- bash +pgpool-0:/$ cat opt/pgpool-II/etc/pgpool.conf +pgpool-0:/$ cat opt/pgpool-II/etc/pgpool.conf +backend_hostname0 = 'ha-postgres.demo.svc' +backend_port0 = 5432 +backend_weight0 = 1 +backend_flag0 = 'ALWAYS_PRIMARY|DISALLOW_TO_FAILOVER' +backend_hostname1 = 'ha-postgres-standby.demo.svc' +backend_port1 = 5432 +backend_weight1 = 1 +backend_flag1 = 'DISALLOW_TO_FAILOVER' +enable_pool_hba = on +listen_addresses = * +port = 9999 +socket_dir = '/var/run/pgpool' +pcp_listen_addresses = * +pcp_port = 9595 +pcp_socket_dir = '/var/run/pgpool' +log_per_node_statement = on +sr_check_period = 0 +health_check_period = 0 +backend_clustering_mode = 'streaming_replication' +num_init_children = 5 +max_pool = 15 +child_life_time = 300 +child_max_connections = 0 +connection_life_time = 0 +client_idle_limit = 0 +connection_cache = on +load_balance_mode = on +ssl_ca_cert = '/opt/pgpool-II/tls/ca.pem' +ssl = on +failover_on_backend_error = 'off' +log_min_messages = 'warning' +statement_level_load_balance = 'off' +memory_cache_enabled = 'off' +memqcache_oiddir = '/tmp/oiddir/' +allow_clear_text_frontend_auth = 'false' +ssl = 'on' +ssl_key = '/opt/pgpool-II/tls/tls.key' +ssl_cert = '/opt/pgpool-II/tls/tls.crt' +failover_on_backend_error = 'off' +pgpool-0:/$ exit +exit ``` +We can see from the above output that `ssl='on'` so we can verify that TLS is enabled for this pgpool. -Now, we can connect using `CN=root,OU=client,O=mongo` as root to connect to the mongo shell of the master pod, - +Now, let's connect with just client certificate using psql. For that first save the `tls.crt` and `tls.key` from the secret named `pgpool-client-cert`. ```bash -root@mgo-rs-tls-2:/$ mongo --tls --tlsCAFile /var/run/pgpool/tls/ca.crt --tlsCertificateKeyFile /var/run/pgpool/tls/client.pem admin --host localhost --authenticationMechanism MONGODB-X509 --authenticationDatabase='$external' -u "CN=root,OU=client,O=mongo" --quiet -rs0:PRIMARY> +$ kubectl get secrets -n demo pgpool-client-cert -o jsonpath='{.data.tls\.crt}' | base64 -d > client.crt master ⬆ ⬇ ✱ ◼ +$ kubectl get secrets -n demo pgpool-client-cert -o jsonpath='{.data.tls\.key}' | base64 -d > client.key ``` - -We are connected to the mongo shell. Let's run some command to verify the sslMode and the user, - +Now let's port forward to the main service of the pgpool: ```bash -rs0:PRIMARY> db.adminCommand({ getParameter:1, sslMode:1 }) -{ - "sslMode" : "requireSSL", - "ok" : 1, - "$clusterTime" : { - "clusterTime" : Timestamp(1615472249, 1), - "signature" : { - "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="), - "keyId" : NumberLong(0) - } - }, - "operationTime" : Timestamp(1615472249, 1) -} +$ kubectl port-forward -n demo svc/pgpool 9999 pgpool ✱ ◼ +Forwarding from 127.0.0.1:9999 -> 9999 ``` +Now connect with `psql`: +```bash +psql "sslmode=require port=9999 host=localhost dbname=postgres user=postgres sslrootcert=ca.crt sslcert=client.crt sslkey=client.key" master ⬆ ⬇ ✱ ◼ +psql (16.3 (Ubuntu 16.3-1.pgdg22.04+1), server 16.1) +SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, compression: off) +Type "help" for help. -We can see from the above output that, `sslMode` is set to `requireSSL`. So, database TLS is enabled successfully to this database. - +postgres=# +``` +So, here we have connected using the client certificate and now password was needed and the connection is tls secured. So, we can safely assume that tls enabling was successful. ## Rotate Certificate Now we are going to rotate the certificate of this database. First let's check the current expiration date of the certificate. ```bash -$ kubectl exec -it mg-rs-2 -n demo bash -root@mg-rs-2:/# openssl x509 -in /var/run/pgpool/tls/client.pem -inform PEM -enddate -nameopt RFC2253 -noout -notAfter=Jun 9 13:32:20 2021 GMT +$ kubectl exec -it -n demo pgpool-0 -- bash master ⬆ ⬇ ✱ ◼ +pgpool-0:/$ openssl x509 -in /opt/pgpool-II/tls/ca.pem -inform PEM -enddate -nameopt RFC2253 -noout +notAfter=Oct 27 06:47:28 2024 GMT ``` -So, the certificate will expire on this time `Jun 9 13:32:20 2021 GMT`. +So, the certificate will expire on this time `27 06:47:28 2024 GMT`. ### Create PgpoolOpsRequest @@ -531,27 +601,27 @@ Now we are going to increase it using a PgpoolOpsRequest. Below is the yaml of t apiVersion: ops.kubedb.com/v1alpha1 kind: PgpoolOpsRequest metadata: - name: mops-rotate + name: ppops-rotate namespace: demo spec: type: ReconfigureTLS databaseRef: - name: mg-rs + name: pgpool tls: rotateCertificates: true ``` Here, -- `spec.databaseRef.name` specifies that we are performing reconfigure TLS operation on `mg-rs` database. -- `spec.type` specifies that we are performing `ReconfigureTLS` on our database. -- `spec.tls.rotateCertificates` specifies that we want to rotate the certificate of this database. +- `spec.databaseRef.name` specifies that we are performing reconfigure TLS operation on `pgpool`. +- `spec.type` specifies that we are performing `ReconfigureTLS` on our pgpool. +- `spec.tls.rotateCertificates` specifies that we want to rotate the certificate of this pgpool. Let's create the `PgpoolOpsRequest` CR we have shown above, ```bash -$ kubectl apply -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/pgpool/reconfigure-tls/mops-rotate.yaml -pgpoolopsrequest.ops.kubedb.com/mops-rotate created +$ kubectl apply -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/pgpool/reconfigure-tls/ppops-rotate.yaml +pgpoolopsrequest.ops.kubedb.com/ppops-rotate created ``` #### Verify Certificate Rotated Successfully @@ -559,93 +629,110 @@ pgpoolopsrequest.ops.kubedb.com/mops-rotate created Let's wait for `PgpoolOpsRequest` to be `Successful`. Run the following command to watch `PgpoolOpsRequest` CRO, ```bash -$ kubectl get pgpoolopsrequest -n demo +$ watch kubectl get pgpoolopsrequest -n demo Every 2.0s: kubectl get pgpoolopsrequest -n demo -NAME TYPE STATUS AGE -mops-rotate ReconfigureTLS Successful 112s +NAME TYPE STATUS AGE +ppops-rotate ReconfigureTLS Successful 113s ``` We can see from the above output that the `PgpoolOpsRequest` has succeeded. If we describe the `PgpoolOpsRequest` we will get an overview of the steps that were followed. ```bash -$ kubectl describe pgpoolopsrequest -n demo mops-rotate -Name: mops-rotate +$ kubectl describe pgpoolopsrequest -n demo ppops-rotate +Name: ppops-rotate Namespace: demo Labels: Annotations: API Version: ops.kubedb.com/v1alpha1 Kind: PgpoolOpsRequest Metadata: - Creation Timestamp: 2021-03-11T16:17:55Z + Creation Timestamp: 2024-07-29T07:10:15Z Generation: 1 - Managed Fields: - API Version: ops.kubedb.com/v1alpha1 - Fields Type: FieldsV1 - fieldsV1: - f:metadata: - f:annotations: - .: - f:kubectl.kubernetes.io/last-applied-configuration: - f:spec: - .: - f:databaseRef: - .: - f:name: - f:tls: - .: - f:rotateCertificates: - f:type: - Manager: kubectl-client-side-apply - Operation: Update - Time: 2021-03-11T16:17:55Z - API Version: ops.kubedb.com/v1alpha1 - Fields Type: FieldsV1 - fieldsV1: - f:status: - .: - f:conditions: - f:observedGeneration: - f:phase: - Manager: kubedb-enterprise - Operation: Update - Time: 2021-03-11T16:17:55Z - Resource Version: 521643 - Self Link: /apis/ops.kubedb.com/v1alpha1/namespaces/demo/pgpoolopsrequests/mops-rotate - UID: 6d96ead2-a868-47d8-85fb-77eecc9a96b4 + Resource Version: 10505 + UID: 6399fdad-bf2a-43de-b542-9ad09f032844 Spec: + Apply: IfReady Database Ref: - Name: mg-rs + Name: pgpool Tls: Rotate Certificates: true Type: ReconfigureTLS Status: Conditions: - Last Transition Time: 2021-03-11T16:17:55Z - Message: Pgpool ops request is reconfiguring TLS + Last Transition Time: 2024-07-29T07:10:15Z + Message: Pgpool ops-request has started to reconfigure tls for RabbitMQ nodes Observed Generation: 1 Reason: ReconfigureTLS Status: True Type: ReconfigureTLS - Last Transition Time: 2021-03-11T16:17:55Z - Message: Successfully Added Issuing Condition in Certificates + Last Transition Time: 2024-07-29T07:10:18Z + Message: Successfully paused database + Observed Generation: 1 + Reason: DatabasePauseSucceeded + Status: True + Type: DatabasePauseSucceeded + Last Transition Time: 2024-07-29T07:10:19Z + Message: successfully add issuing condition to all the certificates + Observed Generation: 1 + Reason: IssueCertificatesSucceeded + Status: True + Type: IssueCertificatesSucceeded + Last Transition Time: 2024-07-29T07:10:31Z + Message: Successfully synced all certificates + Observed Generation: 1 + Reason: CertificateSynced + Status: True + Type: CertificateSynced + Last Transition Time: 2024-07-29T07:10:25Z + Message: get certificate; ConditionStatus:True + Observed Generation: 1 + Status: True + Type: GetCertificate + Last Transition Time: 2024-07-29T07:10:25Z + Message: check ready condition; ConditionStatus:True + Observed Generation: 1 + Status: True + Type: CheckReadyCondition + Last Transition Time: 2024-07-29T07:10:25Z + Message: check issuing condition; ConditionStatus:True + Observed Generation: 1 + Status: True + Type: CheckIssuingCondition + Last Transition Time: 2024-07-29T07:10:39Z + Message: successfully reconciled the Pgpool with TLS + Observed Generation: 1 + Reason: UpdatePetSets + Status: True + Type: UpdatePetSets + Last Transition Time: 2024-07-29T07:11:25Z + Message: Successfully Restarted Pgpool pods + Observed Generation: 1 + Reason: RestartPods + Status: True + Type: RestartPods + Last Transition Time: 2024-07-29T07:10:45Z + Message: get pod; ConditionStatus:True; PodName:pgpool-0 + Observed Generation: 1 + Status: True + Type: GetPod--pgpool-0 + Last Transition Time: 2024-07-29T07:10:45Z + Message: evict pod; ConditionStatus:True; PodName:pgpool-0 Observed Generation: 1 - Reason: IssuingConditionUpdated Status: True - Type: IssuingConditionUpdated - Last Transition Time: 2021-03-11T16:18:00Z - Message: Successfully Issued New Certificates + Type: EvictPod--pgpool-0 + Last Transition Time: 2024-07-29T07:11:20Z + Message: check pod running; ConditionStatus:True; PodName:pgpool-0 Observed Generation: 1 - Reason: CertificateIssuingSuccessful Status: True - Type: CertificateIssuingSuccessful - Last Transition Time: 2021-03-11T16:19:45Z - Message: Successfully Restarted ReplicaSet nodes + Type: CheckPodRunning--pgpool-0 + Last Transition Time: 2024-07-29T07:11:25Z + Message: Successfully updated Pgpool Observed Generation: 1 - Reason: RestartReplicaSet + Reason: UpdateDatabase Status: True - Type: RestartReplicaSet - Last Transition Time: 2021-03-11T16:19:45Z - Message: Successfully Reconfigured TLS + Type: UpdateDatabase + Last Transition Time: 2024-07-29T07:11:25Z + Message: Successfully updated Pgpool TLS Observed Generation: 1 Reason: Successful Status: True @@ -653,19 +740,47 @@ Status: Observed Generation: 1 Phase: Successful Events: - Type Reason Age From Message - ---- ------ ---- ---- ------- - Normal CertificateIssuingSuccessful 2m10s KubeDB Ops-manager operator Successfully Issued New Certificates - Normal RestartReplicaSet 25s KubeDB Ops-manager operator Successfully Restarted ReplicaSet nodes - Normal Successful 25s KubeDB Ops-manager operator Successfully Reconfigured TLS + Type Reason Age From Message + ---- ------ ---- ---- ------- + Normal Starting 2m16s KubeDB Ops-manager Operator Start processing for PgpoolOpsRequest: demo/ppops-rotate + Normal Starting 2m16s KubeDB Ops-manager Operator Pausing Pgpool databse: demo/pgpool + Normal Successful 2m16s KubeDB Ops-manager Operator Successfully paused Pgpool database: demo/pgpool for PgpoolOpsRequest: ppops-rotate + Warning get certificate; ConditionStatus:True 2m6s KubeDB Ops-manager Operator get certificate; ConditionStatus:True + Warning check ready condition; ConditionStatus:True 2m6s KubeDB Ops-manager Operator check ready condition; ConditionStatus:True + Warning check issuing condition; ConditionStatus:True 2m6s KubeDB Ops-manager Operator check issuing condition; ConditionStatus:True + Warning get certificate; ConditionStatus:True 2m6s KubeDB Ops-manager Operator get certificate; ConditionStatus:True + Warning check ready condition; ConditionStatus:True 2m6s KubeDB Ops-manager Operator check ready condition; ConditionStatus:True + Warning check issuing condition; ConditionStatus:True 2m6s KubeDB Ops-manager Operator check issuing condition; ConditionStatus:True + Warning get certificate; ConditionStatus:True 2m6s KubeDB Ops-manager Operator get certificate; ConditionStatus:True + Warning check ready condition; ConditionStatus:True 2m6s KubeDB Ops-manager Operator check ready condition; ConditionStatus:True + Warning check issuing condition; ConditionStatus:True 2m6s KubeDB Ops-manager Operator check issuing condition; ConditionStatus:True + Normal CertificateSynced 2m6s KubeDB Ops-manager Operator Successfully synced all certificates + Warning get certificate; ConditionStatus:True 2m1s KubeDB Ops-manager Operator get certificate; ConditionStatus:True + Warning check ready condition; ConditionStatus:True 2m1s KubeDB Ops-manager Operator check ready condition; ConditionStatus:True + Warning check issuing condition; ConditionStatus:True 2m1s KubeDB Ops-manager Operator check issuing condition; ConditionStatus:True + Warning get certificate; ConditionStatus:True 2m1s KubeDB Ops-manager Operator get certificate; ConditionStatus:True + Warning check ready condition; ConditionStatus:True 2m1s KubeDB Ops-manager Operator check ready condition; ConditionStatus:True + Warning check issuing condition; ConditionStatus:True 2m1s KubeDB Ops-manager Operator check issuing condition; ConditionStatus:True + Warning get certificate; ConditionStatus:True 2m KubeDB Ops-manager Operator get certificate; ConditionStatus:True + Warning check ready condition; ConditionStatus:True 2m KubeDB Ops-manager Operator check ready condition; ConditionStatus:True + Warning check issuing condition; ConditionStatus:True 2m KubeDB Ops-manager Operator check issuing condition; ConditionStatus:True + Normal CertificateSynced 2m KubeDB Ops-manager Operator Successfully synced all certificates + Normal UpdatePetSets 112s KubeDB Ops-manager Operator successfully reconciled the Pgpool with TLS + Warning get pod; ConditionStatus:True; PodName:pgpool-0 106s KubeDB Ops-manager Operator get pod; ConditionStatus:True; PodName:pgpool-0 + Warning evict pod; ConditionStatus:True; PodName:pgpool-0 106s KubeDB Ops-manager Operator evict pod; ConditionStatus:True; PodName:pgpool-0 + Warning check pod running; ConditionStatus:False; PodName:pgpool-0 101s KubeDB Ops-manager Operator check pod running; ConditionStatus:False; PodName:pgpool-0 + Warning check pod running; ConditionStatus:True; PodName:pgpool-0 71s KubeDB Ops-manager Operator check pod running; ConditionStatus:True; PodName:pgpool-0 + Normal RestartPods 66s KubeDB Ops-manager Operator Successfully Restarted Pgpool pods + Normal Starting 66s KubeDB Ops-manager Operator Resuming Pgpool database: demo/pgpool + Normal Successful 66s KubeDB Ops-manager Operator Successfully resumed Pgpool database: demo/pgpool for PgpoolOpsRequest: ppops-rotate ``` Now, let's check the expiration date of the certificate. ```bash -$ kubectl exec -it mg-rs-2 -n demo bash -root@mg-rs-2:/# openssl x509 -in /var/run/pgpool/tls/client.pem -inform PEM -enddate -nameopt RFC2253 -noout -notAfter=Jun 9 16:17:55 2021 GMT +$ kubectl exec -it -n demo pgpool-0 -- bash master ⬆ ⬇ ✱ ◼ +pgpool-0:/$ openssl x509 -in /opt/pgpool-II/tls/ca.pem -inform PEM -enddate -nameopt RFC2253 -noout +notAfter=Oct 27 07:10:20 2024 GMT ``` As we can see from the above output, the certificate has been rotated successfully. @@ -688,31 +803,31 @@ writing new private key to './ca.key' - Now we are going to create a new ca-secret using the certificate files that we have just generated. ```bash -$ kubectl create secret tls mongo-new-ca \ +$ kubectl create secret tls pgpool-new-ca \ --cert=ca.crt \ --key=ca.key \ --namespace=demo -secret/mongo-new-ca created +secret/pgpool-new-ca created ``` -Now, Let's create a new `Issuer` using the `mongo-new-ca` secret that we have just created. The `YAML` file looks like this: +Now, Let's create a new `Issuer` using the `pgpool-new-ca` secret that we have just created. The `YAML` file looks like this: ```yaml apiVersion: cert-manager.io/v1 kind: Issuer metadata: - name: mg-new-issuer + name: pp-new-issuer namespace: demo spec: ca: - secretName: mongo-new-ca + secretName: pgpool-new-ca ``` Let's apply the `YAML` file: ```bash $ kubectl create -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/pgpool/reconfigure-tls/new-issuer.yaml -issuer.cert-manager.io/mg-new-issuer created +issuer.cert-manager.io/pp-new-issuer created ``` ### Create PgpoolOpsRequest @@ -723,30 +838,30 @@ In order to use the new issuer to issue new certificates, we have to create a `P apiVersion: ops.kubedb.com/v1alpha1 kind: PgpoolOpsRequest metadata: - name: mops-change-issuer + name: ppops-change-issuer namespace: demo spec: type: ReconfigureTLS databaseRef: - name: mg-rs + name: pgpool tls: issuerRef: - name: mg-new-issuer + name: pp-new-issuer kind: Issuer apiGroup: "cert-manager.io" ``` Here, -- `spec.databaseRef.name` specifies that we are performing reconfigure TLS operation on `mg-rs` database. -- `spec.type` specifies that we are performing `ReconfigureTLS` on our database. +- `spec.databaseRef.name` specifies that we are performing reconfigure TLS operation on `pgpool`. +- `spec.type` specifies that we are performing `ReconfigureTLS` on our pgpool. - `spec.tls.issuerRef` specifies the issuer name, kind and api group. Let's create the `PgpoolOpsRequest` CR we have shown above, ```bash -$ kubectl apply -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/pgpool/reconfigure-tls/mops-change-issuer.yaml -pgpoolopsrequest.ops.kubedb.com/mops-change-issuer created +$ kubectl apply -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/pgpool/reconfigure-tls/ppops-change-issuer.yaml +pgpoolopsrequest.ops.kubedb.com/ppops-change-issuer created ``` #### Verify Issuer is changed successfully @@ -754,94 +869,107 @@ pgpoolopsrequest.ops.kubedb.com/mops-change-issuer created Let's wait for `PgpoolOpsRequest` to be `Successful`. Run the following command to watch `PgpoolOpsRequest` CRO, ```bash -$ kubectl get pgpoolopsrequest -n demo +$ watch kubectl get pgpoolopsrequest -n demo Every 2.0s: kubectl get pgpoolopsrequest -n demo -NAME TYPE STATUS AGE -mops-change-issuer ReconfigureTLS Successful 105s +NAME TYPE STATUS AGE +ppops-change-issuer ReconfigureTLS Successful 87s ``` We can see from the above output that the `PgpoolOpsRequest` has succeeded. If we describe the `PgpoolOpsRequest` we will get an overview of the steps that were followed. ```bash -$ kubectl describe pgpoolopsrequest -n demo mops-change-issuer -Name: mops-change-issuer +$ kubectl describe pgpoolopsrequest -n demo ppops-change-issuer +Name: ppops-change-issuer Namespace: demo Labels: Annotations: API Version: ops.kubedb.com/v1alpha1 Kind: PgpoolOpsRequest Metadata: - Creation Timestamp: 2021-03-11T16:27:47Z + Creation Timestamp: 2024-07-29T07:37:09Z Generation: 1 - Managed Fields: - API Version: ops.kubedb.com/v1alpha1 - Fields Type: FieldsV1 - fieldsV1: - f:metadata: - f:annotations: - .: - f:kubectl.kubernetes.io/last-applied-configuration: - f:spec: - .: - f:databaseRef: - .: - f:name: - f:tls: - .: - f:issuerRef: - .: - f:apiGroup: - f:kind: - f:name: - f:type: - Manager: kubectl-client-side-apply - Operation: Update - Time: 2021-03-11T16:27:47Z - API Version: ops.kubedb.com/v1alpha1 - Fields Type: FieldsV1 - fieldsV1: - f:status: - .: - f:conditions: - f:observedGeneration: - f:phase: - Manager: kubedb-enterprise - Operation: Update - Time: 2021-03-11T16:27:47Z - Resource Version: 523903 - Self Link: /apis/ops.kubedb.com/v1alpha1/namespaces/demo/pgpoolopsrequests/mops-change-issuer - UID: cdfe8a7d-52ef-466c-a5dd-97e74ad598ca + Resource Version: 12367 + UID: f48452ed-7264-4e99-80f1-58d7e826d9a9 Spec: + Apply: IfReady Database Ref: - Name: mg-rs + Name: pgpool Tls: Issuer Ref: API Group: cert-manager.io Kind: Issuer - Name: mg-new-issuer + Name: pp-new-issuer Type: ReconfigureTLS Status: Conditions: - Last Transition Time: 2021-03-11T16:27:47Z - Message: Pgpool ops request is reconfiguring TLS + Last Transition Time: 2024-07-29T07:37:09Z + Message: Pgpool ops-request has started to reconfigure tls for RabbitMQ nodes Observed Generation: 1 Reason: ReconfigureTLS Status: True Type: ReconfigureTLS - Last Transition Time: 2021-03-11T16:27:52Z - Message: Successfully Issued New Certificates + Last Transition Time: 2024-07-29T07:37:12Z + Message: Successfully paused database Observed Generation: 1 - Reason: CertificateIssuingSuccessful + Reason: DatabasePauseSucceeded Status: True - Type: CertificateIssuingSuccessful - Last Transition Time: 2021-03-11T16:29:37Z - Message: Successfully Restarted ReplicaSet nodes + Type: DatabasePauseSucceeded + Last Transition Time: 2024-07-29T07:37:24Z + Message: Successfully synced all certificates Observed Generation: 1 - Reason: RestartReplicaSet + Reason: CertificateSynced Status: True - Type: RestartReplicaSet - Last Transition Time: 2021-03-11T16:29:37Z - Message: Successfully Reconfigured TLS + Type: CertificateSynced + Last Transition Time: 2024-07-29T07:37:18Z + Message: get certificate; ConditionStatus:True + Observed Generation: 1 + Status: True + Type: GetCertificate + Last Transition Time: 2024-07-29T07:37:18Z + Message: check ready condition; ConditionStatus:True + Observed Generation: 1 + Status: True + Type: CheckReadyCondition + Last Transition Time: 2024-07-29T07:37:18Z + Message: check issuing condition; ConditionStatus:True + Observed Generation: 1 + Status: True + Type: CheckIssuingCondition + Last Transition Time: 2024-07-29T07:37:30Z + Message: successfully reconciled the Pgpool with TLS + Observed Generation: 1 + Reason: UpdatePetSets + Status: True + Type: UpdatePetSets + Last Transition Time: 2024-07-29T07:38:15Z + Message: Successfully Restarted Pgpool pods + Observed Generation: 1 + Reason: RestartPods + Status: True + Type: RestartPods + Last Transition Time: 2024-07-29T07:37:35Z + Message: get pod; ConditionStatus:True; PodName:pgpool-0 + Observed Generation: 1 + Status: True + Type: GetPod--pgpool-0 + Last Transition Time: 2024-07-29T07:37:35Z + Message: evict pod; ConditionStatus:True; PodName:pgpool-0 + Observed Generation: 1 + Status: True + Type: EvictPod--pgpool-0 + Last Transition Time: 2024-07-29T07:38:10Z + Message: check pod running; ConditionStatus:True; PodName:pgpool-0 + Observed Generation: 1 + Status: True + Type: CheckPodRunning--pgpool-0 + Last Transition Time: 2024-07-29T07:38:15Z + Message: Successfully updated Pgpool + Observed Generation: 1 + Reason: UpdateDatabase + Status: True + Type: UpdateDatabase + Last Transition Time: 2024-07-29T07:38:16Z + Message: Successfully updated Pgpool TLS Observed Generation: 1 Reason: Successful Status: True @@ -849,26 +977,54 @@ Status: Observed Generation: 1 Phase: Successful Events: - Type Reason Age From Message - ---- ------ ---- ---- ------- - Normal CertificateIssuingSuccessful 2m27s KubeDB Ops-manager operator Successfully Issued New Certificates - Normal RestartReplicaSet 42s KubeDB Ops-manager operator Successfully Restarted ReplicaSet nodes - Normal Successful 42s KubeDB Ops-manager operator Successfully Reconfigured TLS + Type Reason Age From Message + ---- ------ ---- ---- ------- + Normal Starting 3m39s KubeDB Ops-manager Operator Start processing for PgpoolOpsRequest: demo/ppops-change-issuer + Normal Starting 3m39s KubeDB Ops-manager Operator Pausing Pgpool databse: demo/pgpool + Normal Successful 3m39s KubeDB Ops-manager Operator Successfully paused Pgpool database: demo/pgpool for PgpoolOpsRequest: ppops-change-issuer + Warning get certificate; ConditionStatus:True 3m30s KubeDB Ops-manager Operator get certificate; ConditionStatus:True + Warning check ready condition; ConditionStatus:True 3m30s KubeDB Ops-manager Operator check ready condition; ConditionStatus:True + Warning check issuing condition; ConditionStatus:True 3m30s KubeDB Ops-manager Operator check issuing condition; ConditionStatus:True + Warning get certificate; ConditionStatus:True 3m30s KubeDB Ops-manager Operator get certificate; ConditionStatus:True + Warning check ready condition; ConditionStatus:True 3m30s KubeDB Ops-manager Operator check ready condition; ConditionStatus:True + Warning check issuing condition; ConditionStatus:True 3m30s KubeDB Ops-manager Operator check issuing condition; ConditionStatus:True + Warning get certificate; ConditionStatus:True 3m30s KubeDB Ops-manager Operator get certificate; ConditionStatus:True + Warning check ready condition; ConditionStatus:True 3m30s KubeDB Ops-manager Operator check ready condition; ConditionStatus:True + Warning check issuing condition; ConditionStatus:True 3m30s KubeDB Ops-manager Operator check issuing condition; ConditionStatus:True + Normal CertificateSynced 3m30s KubeDB Ops-manager Operator Successfully synced all certificates + Warning get certificate; ConditionStatus:True 3m25s KubeDB Ops-manager Operator get certificate; ConditionStatus:True + Warning check ready condition; ConditionStatus:True 3m25s KubeDB Ops-manager Operator check ready condition; ConditionStatus:True + Warning check issuing condition; ConditionStatus:True 3m24s KubeDB Ops-manager Operator check issuing condition; ConditionStatus:True + Warning get certificate; ConditionStatus:True 3m24s KubeDB Ops-manager Operator get certificate; ConditionStatus:True + Warning check ready condition; ConditionStatus:True 3m24s KubeDB Ops-manager Operator check ready condition; ConditionStatus:True + Warning check issuing condition; ConditionStatus:True 3m24s KubeDB Ops-manager Operator check issuing condition; ConditionStatus:True + Warning get certificate; ConditionStatus:True 3m24s KubeDB Ops-manager Operator get certificate; ConditionStatus:True + Warning check ready condition; ConditionStatus:True 3m24s KubeDB Ops-manager Operator check ready condition; ConditionStatus:True + Warning check issuing condition; ConditionStatus:True 3m24s KubeDB Ops-manager Operator check issuing condition; ConditionStatus:True + Normal CertificateSynced 3m24s KubeDB Ops-manager Operator Successfully synced all certificates + Normal UpdatePetSets 3m18s KubeDB Ops-manager Operator successfully reconciled the Pgpool with TLS + Warning get pod; ConditionStatus:True; PodName:pgpool-0 3m13s KubeDB Ops-manager Operator get pod; ConditionStatus:True; PodName:pgpool-0 + Warning evict pod; ConditionStatus:True; PodName:pgpool-0 3m13s KubeDB Ops-manager Operator evict pod; ConditionStatus:True; PodName:pgpool-0 + Warning check pod running; ConditionStatus:False; PodName:pgpool-0 3m8s KubeDB Ops-manager Operator check pod running; ConditionStatus:False; PodName:pgpool-0 + Warning check pod running; ConditionStatus:True; PodName:pgpool-0 2m38s KubeDB Ops-manager Operator check pod running; ConditionStatus:True; PodName:pgpool-0 + Normal RestartPods 2m33s KubeDB Ops-manager Operator Successfully Restarted Pgpool pods + Normal Starting 2m32s KubeDB Ops-manager Operator Resuming Pgpool database: demo/pgpool + Normal Successful 2m32s KubeDB Ops-manager Operator Successfully resumed Pgpool database: demo/pgpool for PgpoolOpsRequest: ppops-change-issuer ``` -Now, Let's exec into a database node and find out the ca subject to see if it matches the one we have provided. +Now, Let's exec pgpool and find out the ca subject to see if it matches the one we have provided. ```bash -$ kubectl exec -it mg-rs-2 -n demo bash -root@mgo-rs-tls-2:/$ openssl x509 -in /var/run/pgpool/tls/ca.crt -inform PEM -subject -nameopt RFC2253 -noout +$ kubectl exec -it -n demo pgpool-0 -- bash +pgpool-0:/$ openssl x509 -in /opt/pgpool-II/tls/ca.pem -inform PEM -subject -nameopt RFC2253 -noout subject=O=kubedb-updated,CN=ca-updated ``` We can see from the above output that, the subject name matches the subject name of the new ca certificate that we have created. So, the issuer is changed successfully. -## Remove TLS from the Database +## Remove TLS from the pgpool -Now, we are going to remove TLS from this database using a PgpoolOpsRequest. +Now, we are going to remove TLS from this pgpool using a PgpoolOpsRequest. ### Create PgpoolOpsRequest @@ -878,27 +1034,27 @@ Below is the YAML of the `PgpoolOpsRequest` CRO that we are going to create, apiVersion: ops.kubedb.com/v1alpha1 kind: PgpoolOpsRequest metadata: - name: mops-remove + name: ppops-remove namespace: demo spec: type: ReconfigureTLS databaseRef: - name: mg-rs + name: pgpool tls: remove: true ``` Here, -- `spec.databaseRef.name` specifies that we are performing reconfigure TLS operation on `mg-rs` database. -- `spec.type` specifies that we are performing `ReconfigureTLS` on our database. -- `spec.tls.remove` specifies that we want to remove tls from this database. +- `spec.databaseRef.name` specifies that we are performing reconfigure TLS operation on `pgpool`. +- `spec.type` specifies that we are performing `ReconfigureTLS` on our pgpool. +- `spec.tls.remove` specifies that we want to remove tls from this pgpool. Let's create the `PgpoolOpsRequest` CR we have shown above, ```bash -$ kubectl apply -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/pgpool/reconfigure-tls/mops-remove.yaml -pgpoolopsrequest.ops.kubedb.com/mops-remove created +$ kubectl apply -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/pgpool/reconfigure-tls/ppops-remove.yaml +pgpoolopsrequest.ops.kubedb.com/ppops-remove created ``` #### Verify TLS Removed Successfully @@ -906,87 +1062,83 @@ pgpoolopsrequest.ops.kubedb.com/mops-remove created Let's wait for `PgpoolOpsRequest` to be `Successful`. Run the following command to watch `PgpoolOpsRequest` CRO, ```bash -$ kubectl get pgpoolopsrequest -n demo +$ wacth kubectl get pgpoolopsrequest -n demo Every 2.0s: kubectl get pgpoolopsrequest -n demo -NAME TYPE STATUS AGE -mops-remove ReconfigureTLS Successful 105s +NAME TYPE STATUS AGE +ppops-remove ReconfigureTLS Successful 65s ``` We can see from the above output that the `PgpoolOpsRequest` has succeeded. If we describe the `PgpoolOpsRequest` we will get an overview of the steps that were followed. ```bash -$ kubectl describe pgpoolopsrequest -n demo mops-remove -Name: mops-remove +$ kubectl describe pgpoolopsrequest -n demo ppops-remove +Name: ppops-remove Namespace: demo Labels: Annotations: API Version: ops.kubedb.com/v1alpha1 Kind: PgpoolOpsRequest Metadata: - Creation Timestamp: 2021-03-11T16:35:32Z + Creation Timestamp: 2024-07-29T08:38:35Z Generation: 1 - Managed Fields: - API Version: ops.kubedb.com/v1alpha1 - Fields Type: FieldsV1 - fieldsV1: - f:metadata: - f:annotations: - .: - f:kubectl.kubernetes.io/last-applied-configuration: - f:spec: - .: - f:databaseRef: - .: - f:name: - f:tls: - .: - f:remove: - f:type: - Manager: kubectl-client-side-apply - Operation: Update - Time: 2021-03-11T16:35:32Z - API Version: ops.kubedb.com/v1alpha1 - Fields Type: FieldsV1 - fieldsV1: - f:status: - .: - f:conditions: - f:observedGeneration: - f:phase: - Manager: kubedb-enterprise - Operation: Update - Time: 2021-03-11T16:35:32Z - Resource Version: 525550 - Self Link: /apis/ops.kubedb.com/v1alpha1/namespaces/demo/pgpoolopsrequests/mops-remove - UID: 99184cc4-1595-4f0f-b8eb-b65c5d0e86a6 + Resource Version: 16378 + UID: f848e04f-0fd1-48ce-813d-67dbdc3e4a55 Spec: + Apply: IfReady Database Ref: - Name: mg-rs + Name: pgpool Tls: Remove: true Type: ReconfigureTLS Status: Conditions: - Last Transition Time: 2021-03-11T16:35:32Z - Message: Pgpool ops request is reconfiguring TLS + Last Transition Time: 2024-07-29T08:38:37Z + Message: Pgpool ops-request has started to reconfigure tls for RabbitMQ nodes Observed Generation: 1 Reason: ReconfigureTLS Status: True Type: ReconfigureTLS - Last Transition Time: 2021-03-11T16:35:37Z - Message: Successfully Updated StatefulSets + Last Transition Time: 2024-07-29T08:38:41Z + Message: Successfully paused database + Observed Generation: 1 + Reason: DatabasePauseSucceeded + Status: True + Type: DatabasePauseSucceeded + Last Transition Time: 2024-07-29T08:38:47Z + Message: successfully reconciled the Pgpool with TLS Observed Generation: 1 - Reason: TLSRemoved + Reason: UpdatePetSets Status: True - Type: TLSRemoved - Last Transition Time: 2021-03-11T16:37:07Z - Message: Successfully Restarted ReplicaSet nodes + Type: UpdatePetSets + Last Transition Time: 2024-07-29T08:39:32Z + Message: Successfully Restarted Pgpool pods Observed Generation: 1 - Reason: RestartReplicaSet + Reason: RestartPods Status: True - Type: RestartReplicaSet - Last Transition Time: 2021-03-11T16:37:07Z - Message: Successfully Reconfigured TLS + Type: RestartPods + Last Transition Time: 2024-07-29T08:38:52Z + Message: get pod; ConditionStatus:True; PodName:pgpool-0 + Observed Generation: 1 + Status: True + Type: GetPod--pgpool-0 + Last Transition Time: 2024-07-29T08:38:52Z + Message: evict pod; ConditionStatus:True; PodName:pgpool-0 + Observed Generation: 1 + Status: True + Type: EvictPod--pgpool-0 + Last Transition Time: 2024-07-29T08:39:27Z + Message: check pod running; ConditionStatus:True; PodName:pgpool-0 + Observed Generation: 1 + Status: True + Type: CheckPodRunning--pgpool-0 + Last Transition Time: 2024-07-29T08:39:32Z + Message: Successfully updated Pgpool + Observed Generation: 1 + Reason: UpdateDatabase + Status: True + Type: UpdateDatabase + Last Transition Time: 2024-07-29T08:39:33Z + Message: Successfully updated Pgpool TLS Observed Generation: 1 Reason: Successful Status: True @@ -994,46 +1146,74 @@ Status: Observed Generation: 1 Phase: Successful Events: - Type Reason Age From Message - ---- ------ ---- ---- ------- - Normal PauseDatabase 2m5s KubeDB Ops-manager operator Pausing Pgpool demo/mg-rs - Normal PauseDatabase 2m5s KubeDB Ops-manager operator Successfully paused Pgpool demo/mg-rs - Normal TLSRemoved 2m5s KubeDB Ops-manager operator Successfully Updated StatefulSets - Normal RestartReplicaSet 35s KubeDB Ops-manager operator Successfully Restarted ReplicaSet nodes - Normal ResumeDatabase 35s KubeDB Ops-manager operator Resuming Pgpool demo/mg-rs - Normal ResumeDatabase 35s KubeDB Ops-manager operator Successfully resumed Pgpool demo/mg-rs - Normal Successful 35s KubeDB Ops-manager operator Successfully Reconfigured TLS + Type Reason Age From Message + ---- ------ ---- ---- ------- + Normal Starting 84s KubeDB Ops-manager Operator Start processing for PgpoolOpsRequest: demo/ppops-remove + Normal Starting 84s KubeDB Ops-manager Operator Pausing Pgpool databse: demo/pgpool + Normal Successful 83s KubeDB Ops-manager Operator Successfully paused Pgpool database: demo/pgpool for PgpoolOpsRequest: ppops-remove + Normal UpdatePetSets 74s KubeDB Ops-manager Operator successfully reconciled the Pgpool with TLS + Warning get pod; ConditionStatus:True; PodName:pgpool-0 69s KubeDB Ops-manager Operator get pod; ConditionStatus:True; PodName:pgpool-0 + Warning evict pod; ConditionStatus:True; PodName:pgpool-0 69s KubeDB Ops-manager Operator evict pod; ConditionStatus:True; PodName:pgpool-0 + Warning check pod running; ConditionStatus:False; PodName:pgpool-0 64s KubeDB Ops-manager Operator check pod running; ConditionStatus:False; PodName:pgpool-0 + Warning check pod running; ConditionStatus:True; PodName:pgpool-0 34s KubeDB Ops-manager Operator check pod running; ConditionStatus:True; PodName:pgpool-0 + Normal RestartPods 29s KubeDB Ops-manager Operator Successfully Restarted Pgpool pods + Normal Starting 29s KubeDB Ops-manager Operator Resuming Pgpool database: demo/pgpool + Normal Successful 28s KubeDB Ops-manager Operator Successfully resumed Pgpool database: demo/pgpool for PgpoolOpsRequest: ppops-remove ``` -Now, Let's exec into the database primary node and find out that TLS is disabled or not. +Now, Let's exec into pgpool and find out that TLS is disabled or not. ```bash -$ kubectl exec -it -n demo mg-rs-1 -- mongo admin -u root -p 'U6(h_pYrekLZ2OOd' -rs0:PRIMARY> db.adminCommand({ getParameter:1, sslMode:1 }) -{ - "sslMode" : "disabled", - "ok" : 1, - "$clusterTime" : { - "clusterTime" : Timestamp(1615480817, 1), - "signature" : { - "hash" : BinData(0,"CWJngDTQqDhKXyx7WMFJqqUfvhY="), - "keyId" : NumberLong("6938294279689207810") - } - }, - "operationTime" : Timestamp(1615480817, 1) -} +$ kubectl exec -it -n demo pgpool-0 -- bash +pgpool-0:/$ cat opt/pgpool-II/etc/pgpool.conf +backend_hostname0 = 'ha-postgres.demo.svc' +backend_port0 = 5432 +backend_weight0 = 1 +backend_flag0 = 'ALWAYS_PRIMARY|DISALLOW_TO_FAILOVER' +backend_hostname1 = 'ha-postgres-standby.demo.svc' +backend_port1 = 5432 +backend_weight1 = 1 +backend_flag1 = 'DISALLOW_TO_FAILOVER' +enable_pool_hba = on +listen_addresses = * +port = 9999 +socket_dir = '/var/run/pgpool' +pcp_listen_addresses = * +pcp_port = 9595 +pcp_socket_dir = '/var/run/pgpool' +log_per_node_statement = on +sr_check_period = 0 +health_check_period = 0 +backend_clustering_mode = 'streaming_replication' +num_init_children = 5 +max_pool = 15 +child_life_time = 300 +child_max_connections = 0 +connection_life_time = 0 +client_idle_limit = 0 +connection_cache = on +load_balance_mode = on +ssl = 'off' +failover_on_backend_error = 'off' +log_min_messages = 'warning' +statement_level_load_balance = 'off' +memory_cache_enabled = 'off' +memqcache_oiddir = '/tmp/oiddir/' +allow_clear_text_frontend_auth = 'false' +failover_on_backend_error = 'off' ``` -So, we can see from the above that, output that tls is disabled successfully. +We can see from the above output that `ssl='off'` so we can verify that TLS is disabled successfully for this pgpool. ## Cleaning up -To cleanup the Kubernetes resources created by this tutorial, run: +To clean up the Kubernetes resources created by this tutorial, run: ```bash -kubectl delete pgpool -n demo mg-rs -kubectl delete issuer -n demo mg-issuer mg-new-issuer -kubectl delete pgpoolopsrequest mops-add-tls mops-remove mops-rotate mops-change-issuer +kubectl delete pgpool -n demo pgpool +kubectl delete issuer -n demo pgpool-issuer pp-new-issuer +kubectl delete pgpoolopsrequest -n demo ppops-add-tls ppops-remove ppops-rotate ppops-change-issuer +kubectl delete pg -n demo ha-postgres kubectl delete ns demo ``` From d7d376751a948784c7fb4331737855f522510572 Mon Sep 17 00:00:00 2001 From: MobarakHsn Date: Tue, 30 Jul 2024 13:03:56 +0600 Subject: [PATCH 10/16] Pgpool configure and reconfigure Signed-off-by: MobarakHsn --- .../configuration/pgpool-init-config.yaml | 17 + .../examples/pgpool/configuration/pgpool.conf | 3 + .../reconfiguration/pp-custom-config.yaml | 14 + .../ppops-reconfigure-apply.yaml | 15 + .../ppops-reconfigure-remove.yaml | 13 + .../reconfiguration/ppops-reconfigure.yaml | 14 + .../pgpool/configuration/using-init-config.md | 211 +++++ docs/guides/pgpool/reconfigure/_index.md | 10 + docs/guides/pgpool/reconfigure/overview.md | 54 ++ .../pgpool/reconfigure/reconfigure-pgpool.md | 759 ++++++++++++++++++ .../day-2-operation/pgpool/pp-reconfigure.png | Bin 0 -> 99893 bytes 11 files changed, 1110 insertions(+) create mode 100644 docs/examples/pgpool/configuration/pgpool-init-config.yaml create mode 100644 docs/examples/pgpool/configuration/pgpool.conf create mode 100644 docs/examples/pgpool/reconfiguration/pp-custom-config.yaml create mode 100644 docs/examples/pgpool/reconfiguration/ppops-reconfigure-apply.yaml create mode 100644 docs/examples/pgpool/reconfiguration/ppops-reconfigure-remove.yaml create mode 100644 docs/examples/pgpool/reconfiguration/ppops-reconfigure.yaml create mode 100644 docs/guides/pgpool/configuration/using-init-config.md create mode 100644 docs/guides/pgpool/reconfigure/_index.md create mode 100644 docs/guides/pgpool/reconfigure/overview.md create mode 100644 docs/guides/pgpool/reconfigure/reconfigure-pgpool.md create mode 100644 docs/images/day-2-operation/pgpool/pp-reconfigure.png diff --git a/docs/examples/pgpool/configuration/pgpool-init-config.yaml b/docs/examples/pgpool/configuration/pgpool-init-config.yaml new file mode 100644 index 0000000000..43cf5e8094 --- /dev/null +++ b/docs/examples/pgpool/configuration/pgpool-init-config.yaml @@ -0,0 +1,17 @@ +apiVersion: kubedb.com/v1alpha2 +kind: Pgpool +metadata: + name: pp-init-config + namespace: demo +spec: + version: "4.4.5" + replicas: 1 + postgresRef: + name: ha-postgres + namespace: demo + initConfig: + pgpoolConfig: + num_init_children : 6 + max_pool : 65 + child_life_time : 400 + deletionPolicy: WipeOut \ No newline at end of file diff --git a/docs/examples/pgpool/configuration/pgpool.conf b/docs/examples/pgpool/configuration/pgpool.conf new file mode 100644 index 0000000000..1f0b9d09c5 --- /dev/null +++ b/docs/examples/pgpool/configuration/pgpool.conf @@ -0,0 +1,3 @@ +num_init_children = 6 +max_pool = 65 +child_life_time = 400 \ No newline at end of file diff --git a/docs/examples/pgpool/reconfiguration/pp-custom-config.yaml b/docs/examples/pgpool/reconfiguration/pp-custom-config.yaml new file mode 100644 index 0000000000..683eed426c --- /dev/null +++ b/docs/examples/pgpool/reconfiguration/pp-custom-config.yaml @@ -0,0 +1,14 @@ +apiVersion: kubedb.com/v1alpha2 +kind: Pgpool +metadata: + name: pp-custom + namespace: demo +spec: + version: "4.5.0" + replicas: 1 + configSecret: + name: pp-custom-config + postgresRef: + name: ha-postgres + namespace: demo + deletionPolicy: WipeOut \ No newline at end of file diff --git a/docs/examples/pgpool/reconfiguration/ppops-reconfigure-apply.yaml b/docs/examples/pgpool/reconfiguration/ppops-reconfigure-apply.yaml new file mode 100644 index 0000000000..267214c3eb --- /dev/null +++ b/docs/examples/pgpool/reconfiguration/ppops-reconfigure-apply.yaml @@ -0,0 +1,15 @@ +apiVersion: ops.kubedb.com/v1alpha1 +kind: PgpoolOpsRequest +metadata: + name: ppops-reconfigure-apply + namespace: demo +spec: + type: Reconfigure + databaseRef: + name: pp-custom + configuration: + applyConfig: + pgpool.conf: |- + max_pool = 75 + timeout: 5m + apply: IfReady \ No newline at end of file diff --git a/docs/examples/pgpool/reconfiguration/ppops-reconfigure-remove.yaml b/docs/examples/pgpool/reconfiguration/ppops-reconfigure-remove.yaml new file mode 100644 index 0000000000..f2359780d0 --- /dev/null +++ b/docs/examples/pgpool/reconfiguration/ppops-reconfigure-remove.yaml @@ -0,0 +1,13 @@ +apiVersion: ops.kubedb.com/v1alpha1 +kind: PgpoolOpsRequest +metadata: + name: ppops-reconfigure-remove + namespace: demo +spec: + type: Reconfigure + databaseRef: + name: pp-custom + configuration: + removeCustomConfig: true + timeout: 5m + apply: IfReady \ No newline at end of file diff --git a/docs/examples/pgpool/reconfiguration/ppops-reconfigure.yaml b/docs/examples/pgpool/reconfiguration/ppops-reconfigure.yaml new file mode 100644 index 0000000000..521ab406f8 --- /dev/null +++ b/docs/examples/pgpool/reconfiguration/ppops-reconfigure.yaml @@ -0,0 +1,14 @@ +apiVersion: ops.kubedb.com/v1alpha1 +kind: PgpoolOpsRequest +metadata: + name: ppops-reconfigure + namespace: demo +spec: + type: Reconfigure + databaseRef: + name: pp-custom + configuration: + configSecret: + name: new-custom-config + timeout: 5m + apply: IfReady \ No newline at end of file diff --git a/docs/guides/pgpool/configuration/using-init-config.md b/docs/guides/pgpool/configuration/using-init-config.md new file mode 100644 index 0000000000..e198e75245 --- /dev/null +++ b/docs/guides/pgpool/configuration/using-init-config.md @@ -0,0 +1,211 @@ +--- +title: Run Pgpool with Custom Configuration +menu: + docs_{{ .version }}: + identifier: pp-using-init-configuration + name: Init Config + parent: pp-configuration + weight: 10 +menu_name: docs_{{ .version }} +section_menu_id: guides +--- + +> New to KubeDB? Please start [here](/docs/README.md). + +# Using Init Configuration + +KubeDB supports providing custom configuration for Pgpool while initializing the Pgpool. This tutorial will show you how to use KubeDB to run a Pgpool with init configuration. + +## Before You Begin + +- At first, you need to have a Kubernetes cluster, and the kubectl command-line tool must be configured to communicate with your cluster. If you do not already have a cluster, you can create one by using [kind](https://kind.sigs.k8s.io/docs/user/quick-start/). + +- Now, install KubeDB cli on your workstation and KubeDB operator in your cluster following the steps [here](/docs/setup/README.md). + +- To keep things isolated, this tutorial uses a separate namespace called `demo` throughout this tutorial. Run the following command to prepare your cluster for this tutorial: + + ```bash + $ kubectl create ns demo + namespace/demo created + ``` + +> Note: The yaml files used in this tutorial are stored in [docs/examples/pgpool](https://github.com/kubedb/docs/tree/{{< param "info.version" >}}/docs/examples/pgpool) folder in GitHub repository [kubedb/docs](https://github.com/kubedb/docs). + +## Overview + +Pgpool allows configuring via configuration file. The default configuration file for Pgpool deployed by `KubeDB` can be found in `opt/pgpool-II/etc/pgpool.conf`. When `spec.configSecret` is set to pgpool, KubeDB operator will get the secret and after that it will validate the values of the secret and then will keep the validated customizable configurations from the user and merge it with the remaining default config. After all that this secret will be mounted to Pgpool for use it as the configuration file. + +So, if you do not want to use a configuration file and secret for custom configuration you can use this `spec.initConfig.pgpoolConfig` field to provide any Pgpool config wih key value pair. The KubeDB operator will validate these configs provided and will merge with the default configs and make a configuration secret to mount to the Pgpool. + +> To learn available configuration option of Pgpool see [Configuration Options](https://www.pgpool.net/docs/45/en/html/runtime-config.html). + +## Prepare Postgres +For a Pgpool surely we will need a Postgres server so, prepare a KubeDB Postgres cluster using this [tutorial](/docs/guides/postgres/clustering/streaming_replication.md), or you can use any externally managed postgres but in that case you need to create an [appbinding](/docs/guides/pgpool/concepts/appbinding.md) yourself. In this tutorial we will use 3 node Postgres cluster named `ha-postgres`. + + +## Init Configuration +Now, create Pgpool crd specifying `spec.initConfig` field. + +```yaml +apiVersion: kubedb.com/v1alpha2 +kind: Pgpool +metadata: + name: pp-init-config + namespace: demo +spec: + version: "4.4.5" + replicas: 1 + postgresRef: + name: ha-postgres + namespace: demo + initConfig: + pgpoolConfig: + num_init_children : 6 + max_pool : 65 + child_life_time : 400 + deletionPolicy: WipeOut +``` + +```bash +$ kubectl create -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/pgpool/configuration/pgpool-init-config.yaml +pgpool.kubedb.com/pp-init-config created +``` + +Now, wait a few minutes. KubeDB operator will create necessary petset, services, secret etc. If everything goes well, we will see that a pod with the name `pp-custom-config-0` has been created. + +Check that the petset's pod is running + +```bash +$ kubectl get pod -n demo pp-init-config-0 +NAME READY STATUS RESTARTS AGE +pp-init-config-0 1/1 Running 0 2m31s +``` +Now check the config secret KubeDB operator has created and check out `pgpool.conf`. +```bash +$ kubectl get secret -n demo pp-init-config-config -o yaml +apiVersion: v1 +data: + pgpool.conf: YmFja2VuZF9ob3N0bmFtZTAgPSAnaGEtcG9zdGdyZXMuZGVtby5zdmMnCmJhY2tlbmRfcG9ydDAgPSA1NDMyCmJhY2tlbmRfd2VpZ2h0MCA9IDEKYmFja2VuZF9mbGFnMCA9ICdBTFdBWVNfUFJJTUFSWXxESVNBTExPV19UT19GQUlMT1ZFUicKYmFja2VuZF9ob3N0bmFtZTEgPSAnaGEtcG9zdGdyZXMtc3RhbmRieS5kZW1vLnN2YycKYmFja2VuZF9wb3J0MSA9IDU0MzIKYmFja2VuZF93ZWlnaHQxID0gMQpiYWNrZW5kX2ZsYWcxID0gJ0RJU0FMTE9XX1RPX0ZBSUxPVkVSJwpudW1faW5pdF9jaGlsZHJlbiA9IDYKbWF4X3Bvb2wgPSA2NQpjaGlsZF9saWZlX3RpbWUgPSA0MDAKZW5hYmxlX3Bvb2xfaGJhID0gb24KbGlzdGVuX2FkZHJlc3NlcyA9ICoKcG9ydCA9IDk5OTkKc29ja2V0X2RpciA9ICcvdmFyL3J1bi9wZ3Bvb2wnCnBjcF9saXN0ZW5fYWRkcmVzc2VzID0gKgpwY3BfcG9ydCA9IDk1OTUKcGNwX3NvY2tldF9kaXIgPSAnL3Zhci9ydW4vcGdwb29sJwpsb2dfcGVyX25vZGVfc3RhdGVtZW50ID0gb24Kc3JfY2hlY2tfcGVyaW9kID0gMApoZWFsdGhfY2hlY2tfcGVyaW9kID0gMApiYWNrZW5kX2NsdXN0ZXJpbmdfbW9kZSA9ICdzdHJlYW1pbmdfcmVwbGljYXRpb24nCmNoaWxkX21heF9jb25uZWN0aW9ucyA9IDAKY29ubmVjdGlvbl9saWZlX3RpbWUgPSAwCmNsaWVudF9pZGxlX2xpbWl0ID0gMApjb25uZWN0aW9uX2NhY2hlID0gb24KbG9hZF9iYWxhbmNlX21vZGUgPSBvbgpzc2wgPSAnb2ZmJwpmYWlsb3Zlcl9vbl9iYWNrZW5kX2Vycm9yID0gJ29mZicKbG9nX21pbl9tZXNzYWdlcyA9ICd3YXJuaW5nJwpzdGF0ZW1lbnRfbGV2ZWxfbG9hZF9iYWxhbmNlID0gJ29mZicKbWVtb3J5X2NhY2hlX2VuYWJsZWQgPSAnb2ZmJwptZW1xY2FjaGVfb2lkZGlyID0gJy90bXAvb2lkZGlyLycKYWxsb3dfY2xlYXJfdGV4dF9mcm9udGVuZF9hdXRoID0gJ2ZhbHNlJwo= + pool_hba.conf: I1RZUEUgICAgICBEQVRBQkFTRSAgICAgICAgVVNFUiAgICAgICAgICAgIEFERFJFU1MgICAgICAgICAgICAgICAgIE1FVEhPRAojICJsb2NhbCIgaXMgZm9yIFVuaXggZG9tYWluIHNvY2tldCBjb25uZWN0aW9ucyBvbmx5CmxvY2FsICAgICAgYWxsICAgICAgICAgICAgIGFsbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVzdAojIElQdjQgbG9jYWwgY29ubmVjdGlvbnM6Cmhvc3QgICAgICAgICBhbGwgICAgICAgICAgICAgYWxsICAgICAgICAgICAgIDEyNy4wLjAuMS8zMiAgICAgICAgICAgIHRydXN0CiMgSVB2NiBsb2NhbCBjb25uZWN0aW9uczoKaG9zdCAgICAgICAgIGFsbCAgICAgICAgICAgICBhbGwgICAgICAgICAgICAgOjoxLzEyOCAgICAgICAgICAgICAgICAgdHJ1c3QKbG9jYWwgICAgICAgIHBvc3RncmVzICAgICAgICBhbGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1c3QKaG9zdCAgICAgICAgIHBvc3RncmVzICAgICAgICBhbGwgICAgICAgICAgICAgMTI3LjAuMC4xLzMyICAgICAgICAgICAgbWQ1Cmhvc3QgICAgICAgICBwb3N0Z3JlcyAgICAgICAgYWxsICAgICAgICAgICAgIDo6MS8xMjggICAgICAgICAgICAgICAgIG1kNQpob3N0ICAgICAgICAgYWxsICAgICAgICAgICAgIGFsbCAgICAgICAgICAgICAwLjAuMC4wLzAgICAgICAgICAgICAgICBtZDUKaG9zdCAgICAgICAgIHBvc3RncmVzICAgICAgICBwb3N0Z3JlcyAgICAgICAgMC4wLjAuMC8wICAgICAgICAgICAgICAgbWQ1Cmhvc3QgICAgICAgICBhbGwgICAgICAgICAgICAgYWxsICAgICAgICAgICAgIDo6LzAgICAgICAgICAgICAgICAgICAgIG1kNQpob3N0ICAgICAgICAgcG9zdGdyZXMgICAgICAgIHBvc3RncmVzICAgICAgICA6Oi8wICAgICAgICAgICAgICAgICAgICBtZDUK +kind: Secret +metadata: + creationTimestamp: "2024-07-30T04:42:48Z" + labels: + app.kubernetes.io/component: connection-pooler + app.kubernetes.io/instance: pp-init-config + app.kubernetes.io/managed-by: kubedb.com + app.kubernetes.io/name: pgpools.kubedb.com + name: pp-init-config-config + namespace: demo + ownerReferences: + - apiVersion: kubedb.com/v1alpha2 + blockOwnerDeletion: true + controller: true + kind: Pgpool + name: pp-init-config + uid: 7ec27da6-8d80-47d4-bc18-f53c8f9333a0 + resourceVersion: "91228" + uid: d27154e6-b843-4c1d-b2af-79a80af38ca0 +type: Opaque + +$ echo YmFja2VuZF9ob3N0bmFtZTAgPSAnaGEtcG9zdGdyZXMuZGVtby5zdmMnCmJhY2tlbmRfcG9ydDAgPSA1NDMyCmJhY2tlbmRfd2VpZ2h0MCA9IDEKYmFja2VuZF9mbGFnMCA9ICdBTFdBWVNfUFJJTUFSWXxESVNBTExPV19UT19GQUlMT1ZFUicKYmFja2VuZF9ob3N0bmFtZTEgPSAnaGEtcG9zdGdyZXMtc3RhbmRieS5kZW1vLnN2YycKYmFja2VuZF9wb3J0MSA9IDU0MzIKYmFja2VuZF93ZWlnaHQxID0gMQpiYWNrZW5kX2ZsYWcxID0gJ0RJU0FMTE9XX1RPX0ZBSUxPVkVSJwpudW1faW5pdF9jaGlsZHJlbiA9IDYKbWF4X3Bvb2wgPSA2NQpjaGlsZF9saWZlX3RpbWUgPSA0MDAKZW5hYmxlX3Bvb2xfaGJhID0gb24KbGlzdGVuX2FkZHJlc3NlcyA9ICoKcG9ydCA9IDk5OTkKc29ja2V0X2RpciA9ICcvdmFyL3J1bi9wZ3Bvb2wnCnBjcF9saXN0ZW5fYWRkcmVzc2VzID0gKgpwY3BfcG9ydCA9IDk1OTUKcGNwX3NvY2tldF9kaXIgPSAnL3Zhci9ydW4vcGdwb29sJwpsb2dfcGVyX25vZGVfc3RhdGVtZW50ID0gb24Kc3JfY2hlY2tfcGVyaW9kID0gMApoZWFsdGhfY2hlY2tfcGVyaW9kID0gMApiYWNrZW5kX2NsdXN0ZXJpbmdfbW9kZSA9ICdzdHJlYW1pbmdfcmVwbGljYXRpb24nCmNoaWxkX21heF9jb25uZWN0aW9ucyA9IDAKY29ubmVjdGlvbl9saWZlX3RpbWUgPSAwCmNsaWVudF9pZGxlX2xpbWl0ID0gMApjb25uZWN0aW9uX2NhY2hlID0gb24KbG9hZF9iYWxhbmNlX21vZGUgPSBvbgpzc2wgPSAnb2ZmJwpmYWlsb3Zlcl9vbl9iYWNrZW5kX2Vycm9yID0gJ29mZicKbG9nX21pbl9tZXNzYWdlcyA9ICd3YXJuaW5nJwpzdGF0ZW1lbnRfbGV2ZWxfbG9hZF9iYWxhbmNlID0gJ29mZicKbWVtb3J5X2NhY2hlX2VuYWJsZWQgPSAnb2ZmJwptZW1xY2FjaGVfb2lkZGlyID0gJy90bXAvb2lkZGlyLycKYWxsb3dfY2xlYXJfdGV4dF9mcm9udGVuZF9hdXRoID0gJ2ZhbHNlJwo= | base64 -d +backend_hostname0 = 'ha-postgres.demo.svc' +backend_port0 = 5432 +backend_weight0 = 1 +backend_flag0 = 'ALWAYS_PRIMARY|DISALLOW_TO_FAILOVER' +backend_hostname1 = 'ha-postgres-standby.demo.svc' +backend_port1 = 5432 +backend_weight1 = 1 +backend_flag1 = 'DISALLOW_TO_FAILOVER' +num_init_children = 6 +max_pool = 65 +child_life_time = 400 +enable_pool_hba = on +listen_addresses = * +port = 9999 +socket_dir = '/var/run/pgpool' +pcp_listen_addresses = * +pcp_port = 9595 +pcp_socket_dir = '/var/run/pgpool' +log_per_node_statement = on +sr_check_period = 0 +health_check_period = 0 +backend_clustering_mode = 'streaming_replication' +child_max_connections = 0 +connection_life_time = 0 +client_idle_limit = 0 +connection_cache = on +load_balance_mode = on +ssl = 'off' +failover_on_backend_error = 'off' +log_min_messages = 'warning' +statement_level_load_balance = 'off' +memory_cache_enabled = 'off' +memqcache_oiddir = '/tmp/oiddir/' +allow_clear_text_frontend_auth = 'false' +``` +Now, we will check if the pgpool has started with the init configuration we have provided. + +Now, you can exec into the pgpool pod and find if the custom configuration is there, + +```bash +$ kubectl exec -it -n demo pp-init-config-0 -- bash +pp-init-config-0:/$ cat opt/pgpool-II/etc/pgpool.conf +backend_hostname0 = 'ha-postgres.demo.svc' +backend_port0 = 5432 +backend_weight0 = 1 +backend_flag0 = 'ALWAYS_PRIMARY|DISALLOW_TO_FAILOVER' +backend_hostname1 = 'ha-postgres-standby.demo.svc' +backend_port1 = 5432 +backend_weight1 = 1 +backend_flag1 = 'DISALLOW_TO_FAILOVER' +num_init_children = 6 +max_pool = 65 +child_life_time = 400 +enable_pool_hba = on +listen_addresses = * +port = 9999 +socket_dir = '/var/run/pgpool' +pcp_listen_addresses = * +pcp_port = 9595 +pcp_socket_dir = '/var/run/pgpool' +log_per_node_statement = on +sr_check_period = 0 +health_check_period = 0 +backend_clustering_mode = 'streaming_replication' +child_max_connections = 0 +connection_life_time = 0 +client_idle_limit = 0 +connection_cache = on +load_balance_mode = on +ssl = 'off' +failover_on_backend_error = 'off' +log_min_messages = 'warning' +statement_level_load_balance = 'off' +memory_cache_enabled = 'off' +memqcache_oiddir = '/tmp/oiddir/' +allow_clear_text_frontend_auth = 'false' +failover_on_backend_error = 'off' +pp-init-config-0:/$ exit +exit +``` + +As we can see from the configuration of running pgpool, the value of `num_init_children`, `max_pool` and `child_life_time` has been set to our desired value successfully. + +## Cleaning up + +To clean up the Kubernetes resources created by this tutorial, run: + +```bash +kubectl delete -n demo pp/pp-init-config +kubectl delete pg -n demo ha-postgres +kubectl delete ns demo +``` + +## Next Steps + +- Monitor your Pgpool database with KubeDB using [out-of-the-box Prometheus operator](/docs/guides/pgpool/monitoring/using-prometheus-operator.md). +- Monitor your Pgpool database with KubeDB using [out-of-the-box builtin-Prometheus](/docs/guides/pgpool/monitoring/using-builtin-prometheus.md). +- Detail concepts of [Pgpool object](/docs/guides/pgpool/concepts/pgpool.md). +- Detail concepts of [PgpoolVersion object](/docs/guides/pgpool/concepts/catalog.md). +- Want to hack on KubeDB? Check our [contribution guidelines](/docs/CONTRIBUTING.md). diff --git a/docs/guides/pgpool/reconfigure/_index.md b/docs/guides/pgpool/reconfigure/_index.md new file mode 100644 index 0000000000..07f2aa3a87 --- /dev/null +++ b/docs/guides/pgpool/reconfigure/_index.md @@ -0,0 +1,10 @@ +--- +title: Reconfigure +menu: + docs_{{ .version }}: + identifier: pp-reconfigure + name: Reconfigure + parent: pp-pgpool-guides + weight: 46 +menu_name: docs_{{ .version }} +--- \ No newline at end of file diff --git a/docs/guides/pgpool/reconfigure/overview.md b/docs/guides/pgpool/reconfigure/overview.md new file mode 100644 index 0000000000..ace840b13e --- /dev/null +++ b/docs/guides/pgpool/reconfigure/overview.md @@ -0,0 +1,54 @@ +--- +title: Reconfiguring Pgpool +menu: + docs_{{ .version }}: + identifier: pp-reconfigure-overview + name: Overview + parent: pp-reconfigure + weight: 10 +menu_name: docs_{{ .version }} +section_menu_id: guides +--- + +> New to KubeDB? Please start [here](/docs/README.md). + +# Reconfiguring Pgpool + +This guide will give an overview on how KubeDB Ops-manager operator reconfigures `Pgpool`. + +## Before You Begin + +- You should be familiar with the following `KubeDB` concepts: + - [Pgpool](/docs/guides/pgpool/concepts/pgpool.md) + - [PgpoolOpsRequest](/docs/guides/pgpool/concepts/opsrequest.md) + +## How Reconfiguring Pgpool Process Works + +The following diagram shows how KubeDB Ops-manager operator reconfigures `Pgpool`. Open the image in a new tab to see the enlarged version. + +