From 0ec7e4f85542c5284a5d3742f38cc3ea5af76f1a Mon Sep 17 00:00:00 2001 From: jinho0928 Date: Wed, 7 Oct 2020 14:26:30 +0900 Subject: [PATCH 001/106] Update KUBE_VERSION_UPGRADE_README.md --- K8S_Master/KUBE_VERSION_UPGRADE_README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/K8S_Master/KUBE_VERSION_UPGRADE_README.md b/K8S_Master/KUBE_VERSION_UPGRADE_README.md index e3b055c2..0673957e 100644 --- a/K8S_Master/KUBE_VERSION_UPGRADE_README.md +++ b/K8S_Master/KUBE_VERSION_UPGRADE_README.md @@ -146,6 +146,7 @@ ex) kubectl drain k8s-master --ignore-daemonsets ``` + * drain 시 pod의 local data는 삭제 될 수 있다. * 업그레이드 plan 변경 ```bash sudo kubeadm upgrade plan @@ -277,7 +278,7 @@ ex) kubectl drain k8s-master2 --ignore-daemonsets ``` - + * drain 시 pod의 local data는 삭제 될 수 있다. * 추가 컨트롤 프레인에서는 해당 명령어를 실행하지 않는다. (sudo kubeadm upgrade plan) * sudo kubeadm upgrade apply 명령어 대신에 sudo kubeadm upgrade node 명령어를 실행한다. ```bash @@ -335,7 +336,8 @@ * 스케줄 불가능(unschedulable)으로 표시하고 워크로드를 축출하여 유지 보수할 노드를 준비한다. ```bash kubectl drain --ignore-daemonsets - ``` + ``` + * drain 시 pod의 local data는 삭제 될 수 있다. * kubelet 구성 업그레이드 ```bash sudo kubeadm upgrade node From f2e8112709998323ebdd75e1249462080cea2ead Mon Sep 17 00:00:00 2001 From: jinho0928 Date: Wed, 7 Oct 2020 14:29:11 +0900 Subject: [PATCH 002/106] Update KUBE_VERSION_UPGRADE_README.md --- K8S_Master/KUBE_VERSION_UPGRADE_README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/K8S_Master/KUBE_VERSION_UPGRADE_README.md b/K8S_Master/KUBE_VERSION_UPGRADE_README.md index 0673957e..502c4485 100644 --- a/K8S_Master/KUBE_VERSION_UPGRADE_README.md +++ b/K8S_Master/KUBE_VERSION_UPGRADE_README.md @@ -141,12 +141,12 @@ kubeadm version ``` * node drain + * drain 시 pod의 local data는 삭제 될 수 있다. ```bash kubectl drain --ignore-daemonsets ex) kubectl drain k8s-master --ignore-daemonsets ``` - * drain 시 pod의 local data는 삭제 될 수 있다. * 업그레이드 plan 변경 ```bash sudo kubeadm upgrade plan @@ -273,12 +273,12 @@ kubeadm version ``` * node drain + * drain 시 pod의 local data는 삭제 될 수 있다. ```bash kubectl drain --ignore-daemonsets ex) kubectl drain k8s-master2 --ignore-daemonsets ``` - * drain 시 pod의 local data는 삭제 될 수 있다. * 추가 컨트롤 프레인에서는 해당 명령어를 실행하지 않는다. (sudo kubeadm upgrade plan) * sudo kubeadm upgrade apply 명령어 대신에 sudo kubeadm upgrade node 명령어를 실행한다. ```bash @@ -334,10 +334,10 @@ ex) (1.15.x-> 1.16.x) yum install -y kubeadm-1.17.x-0 --disableexcludes=kubernetes ``` * 스케줄 불가능(unschedulable)으로 표시하고 워크로드를 축출하여 유지 보수할 노드를 준비한다. + * drain 시 pod의 local data는 삭제 될 수 있다. ```bash kubectl drain --ignore-daemonsets ``` - * drain 시 pod의 local data는 삭제 될 수 있다. * kubelet 구성 업그레이드 ```bash sudo kubeadm upgrade node From 6a855043cfc9b0edf67bda5909192f5e8693363d Mon Sep 17 00:00:00 2001 From: seonghoon_jeong <66111041+seonghoon-jeong@users.noreply.github.com> Date: Wed, 7 Oct 2020 16:08:34 +0900 Subject: [PATCH 003/106] Update install.sh --- installer/install.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/installer/install.sh b/installer/install.sh index 6c3ba4b4..ab874791 100644 --- a/installer/install.sh +++ b/installer/install.sh @@ -9,6 +9,11 @@ type=$2 os_check=$(awk -F= '/^NAME/{print $2}' /etc/os-release) +# ProLinux == CentOS Linux +if [ ${os_check} == "\"ProLinux\"" ]; then + os_check="\"CentOS Linux\""; +fi + function set_env() { echo "=========================================================================" From 4d89eaf269596cd1535d691f8385eeac70460d66 Mon Sep 17 00:00:00 2001 From: jinho0928 Date: Wed, 7 Oct 2020 16:36:46 +0900 Subject: [PATCH 004/106] Update KUBE_VERSION_UPGRADE_README.md --- K8S_Master/KUBE_VERSION_UPGRADE_README.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/K8S_Master/KUBE_VERSION_UPGRADE_README.md b/K8S_Master/KUBE_VERSION_UPGRADE_README.md index 502c4485..b811d856 100644 --- a/K8S_Master/KUBE_VERSION_UPGRADE_README.md +++ b/K8S_Master/KUBE_VERSION_UPGRADE_README.md @@ -141,7 +141,7 @@ kubeadm version ``` * node drain - * drain 시 pod의 local data는 삭제 될 수 있다. + * 주의: node drain시 해당 node상의 pod가 evict되기 때문에, pod의 local-data의 경우 보존되지 않음 ```bash kubectl drain --ignore-daemonsets @@ -272,8 +272,8 @@ ```bash kubeadm version ``` - * node drain - * drain 시 pod의 local data는 삭제 될 수 있다. + * node drain + * 주의: node drain시 해당 node상의 pod가 evict되기 때문에, pod의 local-data의 경우 보존되지 않음 ```bash kubectl drain --ignore-daemonsets @@ -334,7 +334,8 @@ ex) (1.15.x-> 1.16.x) yum install -y kubeadm-1.17.x-0 --disableexcludes=kubernetes ``` * 스케줄 불가능(unschedulable)으로 표시하고 워크로드를 축출하여 유지 보수할 노드를 준비한다. - * drain 시 pod의 local data는 삭제 될 수 있다. + * node drain + * 주의: node drain시 해당 node상의 pod가 evict되기 때문에, pod의 local-data의 경우 보존되지 않음 ```bash kubectl drain --ignore-daemonsets ``` From c25a1312ab34b65cc490e94247fcc7a6da22ef93 Mon Sep 17 00:00:00 2001 From: jinho0928 Date: Mon, 12 Oct 2020 15:36:26 +0900 Subject: [PATCH 005/106] Update KUBE_VERSION_UPGRADE_README.md --- K8S_Master/KUBE_VERSION_UPGRADE_README.md | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/K8S_Master/KUBE_VERSION_UPGRADE_README.md b/K8S_Master/KUBE_VERSION_UPGRADE_README.md index b811d856..a7d1ced4 100644 --- a/K8S_Master/KUBE_VERSION_UPGRADE_README.md +++ b/K8S_Master/KUBE_VERSION_UPGRADE_README.md @@ -143,9 +143,9 @@ * node drain * 주의: node drain시 해당 node상의 pod가 evict되기 때문에, pod의 local-data의 경우 보존되지 않음 ```bash - kubectl drain --ignore-daemonsets + kubectl drain --ignore-daemonsets --delete-local-data - ex) kubectl drain k8s-master --ignore-daemonsets + ex) kubectl drain k8s-master --ignore-daemonsets --delete-local-data ``` * 업그레이드 plan 변경 ```bash @@ -275,9 +275,9 @@ * node drain * 주의: node drain시 해당 node상의 pod가 evict되기 때문에, pod의 local-data의 경우 보존되지 않음 ```bash - kubectl drain --ignore-daemonsets + kubectl drain --ignore-daemonsets --delete-local-data - ex) kubectl drain k8s-master2 --ignore-daemonsets + ex) kubectl drain k8s-master2 --ignore-daemonsets --delete-local-data ``` * 추가 컨트롤 프레인에서는 해당 명령어를 실행하지 않는다. (sudo kubeadm upgrade plan) * sudo kubeadm upgrade apply 명령어 대신에 sudo kubeadm upgrade node 명령어를 실행한다. @@ -337,7 +337,9 @@ * node drain * 주의: node drain시 해당 node상의 pod가 evict되기 때문에, pod의 local-data의 경우 보존되지 않음 ```bash - kubectl drain --ignore-daemonsets + kubectl drain --ignore-daemonsets --delete-local-data + + ex) kubectl drain k8s-node1 --ignore-daemonsets --delete-local-data ``` * kubelet 구성 업그레이드 ```bash From b7a6b0ff9a9130ac56fbe381fe66009f0ef2abf4 Mon Sep 17 00:00:00 2001 From: Sunghyun Kim Date: Mon, 12 Oct 2020 16:21:54 +0900 Subject: [PATCH 006/106] Update tekton ci/cd install guide --- Tekton_CI_CD/README.md | 4 +- Tekton_CI_CD/approval.md | 100 ++++++++++++++++++++++++++++ Tekton_CI_CD/mail-notifier.md | 119 ++++++++++++++++++++++++++++++++++ 3 files changed, 221 insertions(+), 2 deletions(-) create mode 100644 Tekton_CI_CD/approval.md create mode 100644 Tekton_CI_CD/mail-notifier.md diff --git a/Tekton_CI_CD/README.md b/Tekton_CI_CD/README.md index 10a000cb..d29339e4 100644 --- a/Tekton_CI_CD/README.md +++ b/Tekton_CI_CD/README.md @@ -6,8 +6,8 @@ | ------ | --- | ------ | | Pipeline | v0.12.1 | [Tekton Pipeline Installation Guide](./pipeline.md) | | Trigger | v0.4.0 | [Tekton Trigger Installation Guide](./trigger.md) | -| Approval | 0.0.3 | [Approval for CI/CD Installation Guide](https://github.com/tmax-cloud/approval-watcher/blob/doc-temp/docs/installation.md) | -| Mail-notifier | v0.0.4 | [Mail notifier Installation Guide](https://github.com/cqbqdd11519/mail-notifier/blob/master/docs/installation.md) | +| Approval | 0.0.3 | [Approval for CI/CD Installation Guide](./approval.md) | +| Mail-notifier | v0.0.4 | [Mail notifier Installation Guide](./mail-notifier.md) | | CI/CD Templates | 1.1.4 | [CI/CD Templates Installation Guide](https://github.com/tmax-cloud/hypercloud-operator/blob/master/_catalog_museum/was/installation.md) | ### Usage Guide diff --git a/Tekton_CI_CD/approval.md b/Tekton_CI_CD/approval.md new file mode 100644 index 00000000..7807c042 --- /dev/null +++ b/Tekton_CI_CD/approval.md @@ -0,0 +1,100 @@ +# Approval for CI/CD 설치 가이드 + +## 구성 요소 및 버전 +* approval-watcher ([tmaxcloudck/approval-watcher:0.0.3](https://hub.docker.com/layers/tmaxcloudck/approval-watcher/0.0.3/images/sha256-6f5fd3fbe9f45909954181a9121321bbf13dc5f46724a6ad72bb156754cac2c6?context=explore)) +* approval-step-server ([tmaxcloudck/approval-step-server:0.0.3](https://hub.docker.com/layers/tmaxcloudck/approval-step-server/0.0.3/images/sha256-dd1eca762c7009676c2ae41d409ee084e803eefe40581ad95463f20a88bc0a59?context=explore)) + +## Prerequisites + +## 폐쇄망 설치 가이드 +설치를 진행하기 전 아래의 과정을 통해 필요한 이미지 및 yaml 파일을 준비한다. +1. 폐쇄망에서 설치하는 경우 사용하는 image repository에 Approval-watcher 설치 시 필요한 이미지를 push한다. + * 작업 디렉토리 생성 및 환경 설정 + ```bash + mkdir -p $HOME/approval-install + cd $HOME/approval-install + ``` + * 외부 네트워크 통신이 가능한 환경에서 필요한 이미지를 다운받는다. + ```bash + # Approval 필수 이미지 Pull + docker pull tmaxcloudck/approval-watcher:0.0.3 + docker pull tmaxcloudck/approval-step-server:0.0.3 + + # 이미지 태그 + docker tag tmaxcloudck/approval-watcher:0.0.3 approval-watcher:0.0.3 + docker tag tmaxcloudck/approval-step-server:0.0.3 approval-step-server:0.0.3 + + # Approval 필수 이미지 Save + docker save approval-watcher:0.0.3 > approval-watcher-0.0.3.tar + docker save approval-step-server:0.0.3 > approval-step-server-0.0.3.tar + ``` + * install yaml을 다운로드한다. + ```bash + wget https://raw.githubusercontent.com/tmax-cloud/approval-watcher/master/deploy/crds/tmax.io_approvals_crd.yaml crd.yaml + wget https://raw.githubusercontent.com/tmax-cloud/approval-watcher/master/deploy/namespace.yaml + wget https://raw.githubusercontent.com/tmax-cloud/approval-watcher/master/deploy/service_account.yaml + wget https://raw.githubusercontent.com/tmax-cloud/approval-watcher/master/deploy/role.yaml + wget https://raw.githubusercontent.com/tmax-cloud/approval-watcher/master/deploy/role_binding.yaml + wget https://raw.githubusercontent.com/tmax-cloud/approval-watcher/master/deploy/service.yaml + wget https://raw.githubusercontent.com/tmax-cloud/approval-watcher/master/deploy/proxy-server.yaml + ``` + +2. 폐쇄망 환경으로 전송 + ```bash + # 생성된 파일 모두 SCP 또는 물리 매체를 통해 폐쇄망 환경으로 복사 + scp -r $HOME/approval-install : + ``` + +3. 위의 과정에서 생성한 tar 파일들을 폐쇄망 환경으로 이동시킨 뒤 사용하려는 registry에 이미지를 push한다. + ```bash + # 이미지 레지스트리 주소 + REGISTRY=[IP:PORT] + + cd + + # Load images + docker load < approval-watcher-0.0.3.tar + docker load < approval-step-server-0.0.3.tar + + # Tag images + docker tag approval-watcher:0.0.3 $REGISTRY/approval-watcher:0.0.3 + docker tag approval-step-server:0.0.3 $REGISTRY/approval-step-server:0.0.3 + + # Push images + docker push $REGISTRY/approval-watcher:0.0.3 + docker push $REGISTRY/approval-step-server:0.0.3 + ``` +4. YAML 수정 + ```bash + REGISTRY=[IP:PORT] + + cp proxy-server.yaml updated.yaml + sed -i "s/tmaxcloudck\/approval-watcher:latest/$REGISTRY\/approval-watcher:0.0.3/g" updated.yaml + ``` + +## Install Steps +1. [Approval 설치](#step-1-approval-설치) + +## Step 1. Approval 설치 +* 목적 : `단계 별 승인에 필요한 구성 요소 설치` +* 생성 순서 : 아래 command로 설치 yaml 적용 + * (외부망 연결된 환경 설치 시 실행) + ```bash + kubectl apply -f https://raw.githubusercontent.com/tmax-cloud/approval-watcher/master/deploy/crds/tmax.io_approvals_crd.yaml + kubectl apply -f https://raw.githubusercontent.com/tmax-cloud/approval-watcher/master/deploy/namespace.yaml + kubectl apply -f https://raw.githubusercontent.com/tmax-cloud/approval-watcher/master/deploy/service_account.yaml + kubectl apply -f https://raw.githubusercontent.com/tmax-cloud/approval-watcher/master/deploy/role.yaml + kubectl apply -f https://raw.githubusercontent.com/tmax-cloud/approval-watcher/master/deploy/role_binding.yaml + kubectl apply -f https://raw.githubusercontent.com/tmax-cloud/approval-watcher/master/deploy/service.yaml + kubectl apply -f https://raw.githubusercontent.com/tmax-cloud/approval-watcher/master/deploy/proxy-server.yaml + ``` + * (폐쇄망 환경 설치 시 실행) + ```bash + kubectl apply -f crd.yaml + kubectl apply -f namespace.yaml + kubectl apply -f service_account.yaml + kubectl apply -f role.yaml + kubectl apply -f role_binding.yaml + kubectl apply -f service.yaml + kubectl apply -f updated.yaml + ``` diff --git a/Tekton_CI_CD/mail-notifier.md b/Tekton_CI_CD/mail-notifier.md new file mode 100644 index 00000000..6477e3d0 --- /dev/null +++ b/Tekton_CI_CD/mail-notifier.md @@ -0,0 +1,119 @@ +# Mail-Notifier for CI/CD 설치 가이드 + +## 구성 요소 및 버전 +* mail-sender-server ([tmaxcloudck/mail-sender-server:v0.0.4](https://hub.docker.com/layers/tmaxcloudck/mail-sender-server/v0.0.4/images/sha256-3d87f419d056132690bd7cdcb5aab1abe0021ae12b4efd50a8b7c0be7a44dd86?context=explore)) +* mail-sender-client ([tmaxcloudck/mail-sender-client:v0.0.4](https://hub.docker.com/layers/tmaxcloudck/mail-sender-client/v0.0.4/images/sha256-0364005e432a67e839cee04cdb0ebb5d925eb4427fd248f346566300f890d046?context=explore)) + +## Prerequisites + +## 폐쇄망 설치 가이드 +설치를 진행하기 전 아래의 과정을 통해 필요한 이미지 및 yaml 파일을 준비한다. +1. 폐쇄망에서 설치하는 경우 사용하는 image repository에 Approval-watcher 설치 시 필요한 이미지를 push한다. + * 작업 디렉토리 생성 및 환경 설정 + ```bash + mkdir -p $HOME/mail-install + cd $HOME/mail-install + ``` + * 외부 네트워크 통신이 가능한 환경에서 필요한 이미지를 다운받는다. + ```bash + # Mail Notifier 필수 이미지 Pull + docker pull tmaxcloudck/mail-sender-server:v0.0.4 + docker pull tmaxcloudck/mail-sender-client:v0.0.4 + + # 이미지 태그 + docker tag tmaxcloudck/mail-sender-server:v0.0.4 mail-sender-server:v0.0.4 + docker tag tmaxcloudck/mail-sender-client:v0.0.4 mail-sender-client:v0.0.4 + + # Mail Notifier 필수 이미지 Save + docker save mail-sender-server:v0.0.4 > mail-sender-server-v0.0.4.tar + docker save mail-sender-client:v0.0.4 > mail-sender-client-v0.0.4.tar + ``` + * install yaml을 다운로드한다. + ```bash + wget https://raw.githubusercontent.com/cqbqdd11519/mail-notifier/master/deploy/service.yaml + wget https://raw.githubusercontent.com/cqbqdd11519/mail-notifier/master/deploy/server.yaml + wget https://raw.githubusercontent.com/cqbqdd11519/mail-notifier/master/deploy/secret.yaml.template + ``` + +2. 폐쇄망 환경으로 전송 + ```bash + # 생성된 파일 모두 SCP 또는 물리 매체를 통해 폐쇄망 환경으로 복사 + scp -r $HOME/mail-install : + ``` + +3. 위의 과정에서 생성한 tar 파일들을 폐쇄망 환경으로 이동시킨 뒤 사용하려는 registry에 이미지를 push한다. + ```bash + # 이미지 레지스트리 주소 + REGISTRY=[IP:PORT] + + cd + + # Load images + docker load < mail-sender-server-v0.0.4.tar + docker load < mail-sender-client-v0.0.4.tar + + # Tag images + docker tag mail-sender-server:v0.0.4 $REGISTRY/mail-sender-server:v0.0.4 + docker tag mail-sender-client:v0.0.4 $REGISTRY/mail-sender-client:v0.0.4 + + # Push images + docker push $REGISTRY/mail-sender-server:v0.0.4 + docker push $REGISTRY/mail-sender-client:v0.0.4 + ``` +4. YAML 수정 + ```bash + REGISTRY=[IP:PORT] + + cp server.yaml updated.yaml + sed -i "s/tmaxcloudck\/mail-sender-server:v0.0.3/$REGISTRY\/mail-sender-server:v0.0.3/g" updated.yaml + ``` + +## Install Steps +1. [SMTP 서버 설정](#step-1-smtp-서버-설정) +2. [Mail Notifier Server 설치](#step-2-Server-설치) + +## Step 1. SMTP 서버 설정 +* 목적 : `Mail-notifier에서 사용할 외부 SMTP 서버 설정` +* 생성 순서 : 아래 command로 설정 + * (외부망 연결된 환경 설치 시 실행) + ```bash + SMTP_SERVER= + SMTP_USER= + SMTP_PW= + NAMESPACE=approval-system + + curl https://raw.githubusercontent.com/cqbqdd11519/mail-notifier/master/deploy/secret.yaml.template -s | \ + sed "s//'${SMTP_SERVER}'/g" | \ + sed "s//'${SMTP_USER}'/g" | \ + sed "s//'${SMTP_PW}'/g" | \ + kubectl apply --namespace ${NAMESPACE} -f - + ``` + * (폐쇄망 환경 설치 시 실행) + ```bash + SMTP_SERVER= + SMTP_USER= + SMTP_PW= + NAMESPACE=approval-system + + cp secret.yaml.template secret.yaml + sed -i "s//'${SMTP_SERVER}'/g" secret.yaml + sed -i "s//'${SMTP_USER}'/g" secret.yaml + sed - i"s//'${SMTP_PW}'/g" secret.yaml + kubectl apply --namespace ${NAMESPACE} -f secret.yaml + ``` + +## Step 2. Server 설치 +* 목적 : `Mail-notifier 구성 요소 설치` +* 생성 순서 : 아래 command로 설치 yaml 적용 + * (외부망 연결된 환경 설치 시 실행) + ```bash + NAMESPACE=approval-system + kubectl apply --namespace ${NAMESPACE} --filename https://raw.githubusercontent.com/cqbqdd11519/mail-notifier/master/deploy/service.yaml + kubectl apply --namespace ${NAMESPACE} --filename https://raw.githubusercontent.com/cqbqdd11519/mail-notifier/master/deploy/server.yaml + ``` + * (폐쇄망 환경 설치 시 실행) + ```bash + NAMESPACE=approval-system + kubectl apply --namespace ${NAMESPACE} -f service.yaml + kubectl apply --namespace ${NAMESPACE} -f updated.yaml + ``` From 9f20c3f6f03e90e7a6d8a853ac4cc8fddaf990fc Mon Sep 17 00:00:00 2001 From: jinho0928 Date: Mon, 12 Oct 2020 19:11:59 +0900 Subject: [PATCH 007/106] Update KUBE_VERSION_UPGRADE_README.md --- K8S_Master/KUBE_VERSION_UPGRADE_README.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/K8S_Master/KUBE_VERSION_UPGRADE_README.md b/K8S_Master/KUBE_VERSION_UPGRADE_README.md index a7d1ced4..7d853f5a 100644 --- a/K8S_Master/KUBE_VERSION_UPGRADE_README.md +++ b/K8S_Master/KUBE_VERSION_UPGRADE_README.md @@ -147,6 +147,22 @@ ex) kubectl drain k8s-master --ignore-daemonsets --delete-local-data ``` + * Cannot evict pod as it would violate the pod's disruption budget 에러 발생시 + * PDB가 존재하는 Pod가 생성되어있는 Node일 경우, ALLOWED DISRUPTIONS를 확인한다. + * ALLOWED DISRUPTIONS가 0인 경우, 아래와 같은 방법으로 진행 한다. + ```bash + kubectl get pdb -A + ``` + * 1) 해당 Pod를 다른 Node로 재스케줄링을 시도한다. + ```bash + kubectl delete pod + ``` + * 2) 다른 Node의 리소스 부족, noScheduling 설정 등으로 인해 a번 재스케줄링이 불가할 경우엔 PDB 데이터를 삭제하고 drain한 후에 PDB 데이터를 복구한다. + ```bash + kubectl get pdb -o yaml > pdb-backup.yaml + kubectl drain 완료 후 + kubectl apply -f pdb-backup.yaml + ``` * 업그레이드 plan 변경 ```bash sudo kubeadm upgrade plan From 8c403cccdde624040eb43b220fecd11636e0d2dd Mon Sep 17 00:00:00 2001 From: jinho0928 Date: Tue, 13 Oct 2020 10:47:14 +0900 Subject: [PATCH 008/106] Update KUBE_VERSION_UPGRADE_README.md --- K8S_Master/KUBE_VERSION_UPGRADE_README.md | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/K8S_Master/KUBE_VERSION_UPGRADE_README.md b/K8S_Master/KUBE_VERSION_UPGRADE_README.md index 7d853f5a..cbb37b65 100644 --- a/K8S_Master/KUBE_VERSION_UPGRADE_README.md +++ b/K8S_Master/KUBE_VERSION_UPGRADE_README.md @@ -141,23 +141,26 @@ kubeadm version ``` * node drain - * 주의: node drain시 해당 node상의 pod가 evict되기 때문에, pod의 local-data의 경우 보존되지 않음 + * 주의 : node drain시 해당 node상의 pod가 evict되기 때문에, pod의 local-data의 경우 보존되지 않음 ```bash kubectl drain --ignore-daemonsets --delete-local-data ex) kubectl drain k8s-master --ignore-daemonsets --delete-local-data ``` - * Cannot evict pod as it would violate the pod's disruption budget 에러 발생시 + * 'Cannot evict pod as it would violate the pod's disruption budget'로 drain 실패한 경우 * PDB가 존재하는 Pod가 생성되어있는 Node일 경우, ALLOWED DISRUPTIONS를 확인한다. - * ALLOWED DISRUPTIONS가 0인 경우, 아래와 같은 방법으로 진행 한다. + * ALLOWED DISRUPTIONS가 drain 시도하는 node에 떠있는 pod(pdb 설정 pod) 개수보다 적을 때, 아래와 같은 방법으로 진행 한다. + * ex) virt-api pod가 drain하려는 node에 2개 떠있는데, ALLOWED DISRUPTIONS는 0 또는 1일 경우 ```bash kubectl get pdb -A - ``` - * 1) 해당 Pod를 다른 Node로 재스케줄링을 시도한다. + or + kubectl get pdb -oyaml + ``` + * 1) 해당 Pod를 다른 Node로 재스케줄링을 시도한다. ```bash kubectl delete pod ``` - * 2) 다른 Node의 리소스 부족, noScheduling 설정 등으로 인해 a번 재스케줄링이 불가할 경우엔 PDB 데이터를 삭제하고 drain한 후에 PDB 데이터를 복구한다. + * 2) 다른 Node의 리소스 부족, noScheduling 설정 등으로 인해 a번 재스케줄링이 불가할 경우엔 PDB 데이터를 삭제하고 drain한 후에 PDB 데이터를 복구한다. ```bash kubectl get pdb -o yaml > pdb-backup.yaml kubectl drain 완료 후 From ae861c50eaca60241df2723ebaa179cd154d72d4 Mon Sep 17 00:00:00 2001 From: jinho0928 Date: Tue, 13 Oct 2020 10:50:20 +0900 Subject: [PATCH 009/106] Update KUBE_VERSION_UPGRADE_README.md --- K8S_Master/KUBE_VERSION_UPGRADE_README.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/K8S_Master/KUBE_VERSION_UPGRADE_README.md b/K8S_Master/KUBE_VERSION_UPGRADE_README.md index cbb37b65..17437ee6 100644 --- a/K8S_Master/KUBE_VERSION_UPGRADE_README.md +++ b/K8S_Master/KUBE_VERSION_UPGRADE_README.md @@ -147,24 +147,24 @@ ex) kubectl drain k8s-master --ignore-daemonsets --delete-local-data ``` - * 'Cannot evict pod as it would violate the pod's disruption budget'로 drain 실패한 경우 - * PDB가 존재하는 Pod가 생성되어있는 Node일 경우, ALLOWED DISRUPTIONS를 확인한다. + * 'Cannot evict pod as it would violate the pod's disruption budget'로 node drain이 실패한 경우 + * 해당 노드가 PDB가 존재하는 Pod가 생성되어있는 경우, ALLOWED DISRUPTIONS를 확인한다. * ALLOWED DISRUPTIONS가 drain 시도하는 node에 떠있는 pod(pdb 설정 pod) 개수보다 적을 때, 아래와 같은 방법으로 진행 한다. * ex) virt-api pod가 drain하려는 node에 2개 떠있는데, ALLOWED DISRUPTIONS는 0 또는 1일 경우 ```bash - kubectl get pdb -A - or - kubectl get pdb -oyaml + kubectl get pdb -A + or + kubectl get pdb -oyaml ``` * 1) 해당 Pod를 다른 Node로 재스케줄링을 시도한다. ```bash - kubectl delete pod + kubectl delete pod ``` * 2) 다른 Node의 리소스 부족, noScheduling 설정 등으로 인해 a번 재스케줄링이 불가할 경우엔 PDB 데이터를 삭제하고 drain한 후에 PDB 데이터를 복구한다. ```bash - kubectl get pdb -o yaml > pdb-backup.yaml - kubectl drain 완료 후 - kubectl apply -f pdb-backup.yaml + kubectl get pdb -o yaml > pdb-backup.yaml + kubectl drain 완료 후 + kubectl apply -f pdb-backup.yaml ``` * 업그레이드 plan 변경 ```bash From 1326faac5704a75cf9c1a3306db6519a3f484db2 Mon Sep 17 00:00:00 2001 From: jinho0928 Date: Tue, 13 Oct 2020 11:34:04 +0900 Subject: [PATCH 010/106] Update KUBE_VERSION_UPGRADE_README.md --- K8S_Master/KUBE_VERSION_UPGRADE_README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/K8S_Master/KUBE_VERSION_UPGRADE_README.md b/K8S_Master/KUBE_VERSION_UPGRADE_README.md index 17437ee6..ea9bbfce 100644 --- a/K8S_Master/KUBE_VERSION_UPGRADE_README.md +++ b/K8S_Master/KUBE_VERSION_UPGRADE_README.md @@ -155,7 +155,7 @@ kubectl get pdb -A or kubectl get pdb -oyaml - ``` + ``` * 1) 해당 Pod를 다른 Node로 재스케줄링을 시도한다. ```bash kubectl delete pod @@ -163,7 +163,7 @@ * 2) 다른 Node의 리소스 부족, noScheduling 설정 등으로 인해 a번 재스케줄링이 불가할 경우엔 PDB 데이터를 삭제하고 drain한 후에 PDB 데이터를 복구한다. ```bash kubectl get pdb -o yaml > pdb-backup.yaml - kubectl drain 완료 후 + kubectl drain --ignore-daemonsets --delete-local-data kubectl apply -f pdb-backup.yaml ``` * 업그레이드 plan 변경 From 526d66218882306e207065232e5fa7eadbd79bce Mon Sep 17 00:00:00 2001 From: jinho0928 Date: Tue, 13 Oct 2020 11:39:08 +0900 Subject: [PATCH 011/106] Update KUBE_VERSION_UPGRADE_README.md --- K8S_Master/KUBE_VERSION_UPGRADE_README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/K8S_Master/KUBE_VERSION_UPGRADE_README.md b/K8S_Master/KUBE_VERSION_UPGRADE_README.md index ea9bbfce..201c4c71 100644 --- a/K8S_Master/KUBE_VERSION_UPGRADE_README.md +++ b/K8S_Master/KUBE_VERSION_UPGRADE_README.md @@ -148,14 +148,14 @@ ex) kubectl drain k8s-master --ignore-daemonsets --delete-local-data ``` * 'Cannot evict pod as it would violate the pod's disruption budget'로 node drain이 실패한 경우 - * 해당 노드가 PDB가 존재하는 Pod가 생성되어있는 경우, ALLOWED DISRUPTIONS를 확인한다. - * ALLOWED DISRUPTIONS가 drain 시도하는 node에 떠있는 pod(pdb 설정 pod) 개수보다 적을 때, 아래와 같은 방법으로 진행 한다. - * ex) virt-api pod가 drain하려는 node에 2개 떠있는데, ALLOWED DISRUPTIONS는 0 또는 1일 경우 + * drain 시도하는 node에 PDB가 존재하는 Pod가 생성되어있는 경우, ALLOWED DISRUPTIONS를 확인한다. + * ALLOWED DISRUPTIONS가 해당 노드에 떠있는 pod(pdb 설정 pod) 개수보다 적을 때, 아래와 같은 방법으로 진행 한다. + * ex) virt-api pod가 drain하려는 node에 2개 떠있는데, ALLOWED DISRUPTIONS는 0 또는 1일 경우 ```bash kubectl get pdb -A or kubectl get pdb -oyaml - ``` + ``` * 1) 해당 Pod를 다른 Node로 재스케줄링을 시도한다. ```bash kubectl delete pod From 8fe353072056fb855476d8573dd15a6e327c123a Mon Sep 17 00:00:00 2001 From: jinho0928 Date: Tue, 13 Oct 2020 11:40:22 +0900 Subject: [PATCH 012/106] Update KUBE_VERSION_UPGRADE_README.md --- K8S_Master/KUBE_VERSION_UPGRADE_README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/K8S_Master/KUBE_VERSION_UPGRADE_README.md b/K8S_Master/KUBE_VERSION_UPGRADE_README.md index 201c4c71..583c24a5 100644 --- a/K8S_Master/KUBE_VERSION_UPGRADE_README.md +++ b/K8S_Master/KUBE_VERSION_UPGRADE_README.md @@ -148,7 +148,7 @@ ex) kubectl drain k8s-master --ignore-daemonsets --delete-local-data ``` * 'Cannot evict pod as it would violate the pod's disruption budget'로 node drain이 실패한 경우 - * drain 시도하는 node에 PDB가 존재하는 Pod가 생성되어있는 경우, ALLOWED DISRUPTIONS를 확인한다. + * drain 시도하는 node에 PDB가 존재하는 Pod가 생성되어있는 경우, 아래 명령어로 ALLOWED DISRUPTIONS를 확인한다. * ALLOWED DISRUPTIONS가 해당 노드에 떠있는 pod(pdb 설정 pod) 개수보다 적을 때, 아래와 같은 방법으로 진행 한다. * ex) virt-api pod가 drain하려는 node에 2개 떠있는데, ALLOWED DISRUPTIONS는 0 또는 1일 경우 ```bash From c76b71482468343e6c03175a7a277d67fca34af8 Mon Sep 17 00:00:00 2001 From: jinho0928 Date: Tue, 13 Oct 2020 11:41:05 +0900 Subject: [PATCH 013/106] Update KUBE_VERSION_UPGRADE_README.md --- K8S_Master/KUBE_VERSION_UPGRADE_README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/K8S_Master/KUBE_VERSION_UPGRADE_README.md b/K8S_Master/KUBE_VERSION_UPGRADE_README.md index 583c24a5..00d59e77 100644 --- a/K8S_Master/KUBE_VERSION_UPGRADE_README.md +++ b/K8S_Master/KUBE_VERSION_UPGRADE_README.md @@ -148,14 +148,14 @@ ex) kubectl drain k8s-master --ignore-daemonsets --delete-local-data ``` * 'Cannot evict pod as it would violate the pod's disruption budget'로 node drain이 실패한 경우 - * drain 시도하는 node에 PDB가 존재하는 Pod가 생성되어있는 경우, 아래 명령어로 ALLOWED DISRUPTIONS를 확인한다. - * ALLOWED DISRUPTIONS가 해당 노드에 떠있는 pod(pdb 설정 pod) 개수보다 적을 때, 아래와 같은 방법으로 진행 한다. - * ex) virt-api pod가 drain하려는 node에 2개 떠있는데, ALLOWED DISRUPTIONS는 0 또는 1일 경우 + * drain 시도하는 node에 PDB가 존재하는 Pod가 생성되어있는 경우, 아래 명령어로 ALLOWED DISRUPTIONS를 확인한다. ```bash kubectl get pdb -A or kubectl get pdb -oyaml - ``` + ``` + * ALLOWED DISRUPTIONS가 해당 노드에 떠있는 pod(pdb 설정 pod) 개수보다 적을 때, 아래와 같은 방법으로 진행 한다. + * ex) virt-api pod가 drain하려는 node에 2개 떠있는데, ALLOWED DISRUPTIONS는 0 또는 1일 경우 * 1) 해당 Pod를 다른 Node로 재스케줄링을 시도한다. ```bash kubectl delete pod From f22d53491d4f0a892a7b636a3aa079eae2decc5f Mon Sep 17 00:00:00 2001 From: jinho0928 Date: Tue, 13 Oct 2020 11:43:53 +0900 Subject: [PATCH 014/106] Update KUBE_VERSION_UPGRADE_README.md --- K8S_Master/KUBE_VERSION_UPGRADE_README.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/K8S_Master/KUBE_VERSION_UPGRADE_README.md b/K8S_Master/KUBE_VERSION_UPGRADE_README.md index 00d59e77..12075072 100644 --- a/K8S_Master/KUBE_VERSION_UPGRADE_README.md +++ b/K8S_Master/KUBE_VERSION_UPGRADE_README.md @@ -156,16 +156,16 @@ ``` * ALLOWED DISRUPTIONS가 해당 노드에 떠있는 pod(pdb 설정 pod) 개수보다 적을 때, 아래와 같은 방법으로 진행 한다. * ex) virt-api pod가 drain하려는 node에 2개 떠있는데, ALLOWED DISRUPTIONS는 0 또는 1일 경우 - * 1) 해당 Pod를 다른 Node로 재스케줄링을 시도한다. - ```bash - kubectl delete pod - ``` - * 2) 다른 Node의 리소스 부족, noScheduling 설정 등으로 인해 a번 재스케줄링이 불가할 경우엔 PDB 데이터를 삭제하고 drain한 후에 PDB 데이터를 복구한다. - ```bash + * 1) 해당 Pod를 다른 Node로 재스케줄링을 시도한다. + ```bash + kubectl delete pod + ``` + * 2) 다른 Node의 리소스 부족, noScheduling 설정 등으로 인해 a번 재스케줄링이 불가할 경우엔 PDB 데이터를 삭제하고 drain한 후에 PDB 데이터를 복구한다. + ```bash kubectl get pdb -o yaml > pdb-backup.yaml kubectl drain --ignore-daemonsets --delete-local-data kubectl apply -f pdb-backup.yaml - ``` + ``` * 업그레이드 plan 변경 ```bash sudo kubeadm upgrade plan From da0ef8659c7dd111b67dd1c33fc628093f37d902 Mon Sep 17 00:00:00 2001 From: jinho0928 Date: Tue, 13 Oct 2020 16:53:46 +0900 Subject: [PATCH 015/106] Update KUBE_VERSION_UPGRADE_README.md --- K8S_Master/KUBE_VERSION_UPGRADE_README.md | 24 +++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/K8S_Master/KUBE_VERSION_UPGRADE_README.md b/K8S_Master/KUBE_VERSION_UPGRADE_README.md index 12075072..4e426020 100644 --- a/K8S_Master/KUBE_VERSION_UPGRADE_README.md +++ b/K8S_Master/KUBE_VERSION_UPGRADE_README.md @@ -141,21 +141,19 @@ kubeadm version ``` * node drain - * 주의 : node drain시 해당 node상의 pod가 evict되기 때문에, pod의 local-data의 경우 보존되지 않음 - ```bash - kubectl drain --ignore-daemonsets --delete-local-data - - ex) kubectl drain k8s-master --ignore-daemonsets --delete-local-data - ``` - * 'Cannot evict pod as it would violate the pod's disruption budget'로 node drain이 실패한 경우 - * drain 시도하는 node에 PDB가 존재하는 Pod가 생성되어있는 경우, 아래 명령어로 ALLOWED DISRUPTIONS를 확인한다. + * node drain 전 pod pdb 체크 사항 + * 주의 : node drain시 해당 node상의 pod가 evict되기 때문에, pod의 local-data의 경우 보존되지 않음 + * drain 시도하는 node에 PDB가 존재하는 Pod가 생성되어있는 경우, 아래 명령어로 drain이 가능한지 확인한다. ```bash kubectl get pdb -A or kubectl get pdb -oyaml ``` - * ALLOWED DISRUPTIONS가 해당 노드에 떠있는 pod(pdb 설정 pod) 개수보다 적을 때, 아래와 같은 방법으로 진행 한다. - * ex) virt-api pod가 drain하려는 node에 2개 떠있는데, ALLOWED DISRUPTIONS는 0 또는 1일 경우 + * MIN AVAILABLE 과 ALLOWED DISRUPTIONS 및 drain 시키려는 node의 pod를 확인한다. + * 해당 PDB의 ALLOWED DISRUPTIONS가 drain을 시도하는 node에 뜬 pod(pdb 설정 pod) 개수보다 적을 경우 아래와 같이 다른 노드로 재스케줄링이 필요하다. + * ex) virt-api pod가 drain하려는 node에 2개 떠있는데, ALLOWED DISRUPTIONS는 0 또는 1일 경우 + * 해당 조건에 만족하지 않는 경우 'Cannot evict pod as it would violate the pod's disruption budget' 와 같은 에러가 발생할 수 있다. + * 해결 방법 * 1) 해당 Pod를 다른 Node로 재스케줄링을 시도한다. ```bash kubectl delete pod @@ -166,6 +164,12 @@ kubectl drain --ignore-daemonsets --delete-local-data kubectl apply -f pdb-backup.yaml ``` + * node drain 실행 + ```bash + kubectl drain --ignore-daemonsets --delete-local-data + + ex) kubectl drain k8s-master --ignore-daemonsets --delete-local-data + ``` * 업그레이드 plan 변경 ```bash sudo kubeadm upgrade plan From e77f9f749afe7e3c4ba9f59d3731053501451175 Mon Sep 17 00:00:00 2001 From: jinho0928 Date: Tue, 13 Oct 2020 16:55:11 +0900 Subject: [PATCH 016/106] Update KUBE_VERSION_UPGRADE_README.md --- K8S_Master/KUBE_VERSION_UPGRADE_README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/K8S_Master/KUBE_VERSION_UPGRADE_README.md b/K8S_Master/KUBE_VERSION_UPGRADE_README.md index 4e426020..db862250 100644 --- a/K8S_Master/KUBE_VERSION_UPGRADE_README.md +++ b/K8S_Master/KUBE_VERSION_UPGRADE_README.md @@ -141,8 +141,8 @@ kubeadm version ``` * node drain - * node drain 전 pod pdb 체크 사항 - * 주의 : node drain시 해당 node상의 pod가 evict되기 때문에, pod의 local-data의 경우 보존되지 않음 + * node drain 전 체크 사항 + * node drain시 해당 node상의 pod가 evict되기 때문에, pod의 local-data의 경우 보존되지 않음 * drain 시도하는 node에 PDB가 존재하는 Pod가 생성되어있는 경우, 아래 명령어로 drain이 가능한지 확인한다. ```bash kubectl get pdb -A From 91b3fac022723908cda704fd86a67dea128d6a96 Mon Sep 17 00:00:00 2001 From: jinho0928 Date: Tue, 13 Oct 2020 16:55:59 +0900 Subject: [PATCH 017/106] Update KUBE_VERSION_UPGRADE_README.md --- K8S_Master/KUBE_VERSION_UPGRADE_README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/K8S_Master/KUBE_VERSION_UPGRADE_README.md b/K8S_Master/KUBE_VERSION_UPGRADE_README.md index db862250..cad1ba5b 100644 --- a/K8S_Master/KUBE_VERSION_UPGRADE_README.md +++ b/K8S_Master/KUBE_VERSION_UPGRADE_README.md @@ -143,7 +143,7 @@ * node drain * node drain 전 체크 사항 * node drain시 해당 node상의 pod가 evict되기 때문에, pod의 local-data의 경우 보존되지 않음 - * drain 시도하는 node에 PDB가 존재하는 Pod가 생성되어있는 경우, 아래 명령어로 drain이 가능한지 확인한다. + * drain 시도하는 node에 PDB가 존재하는 Pod가 생성되어있는 경우, 아래 명령어로 drain이 가능한 상태인지 확인한다. ```bash kubectl get pdb -A or From 613feb923904e4a4a3c3f7b213e231c8acc21b20 Mon Sep 17 00:00:00 2001 From: jinho0928 Date: Tue, 13 Oct 2020 16:57:40 +0900 Subject: [PATCH 018/106] Update KUBE_VERSION_UPGRADE_README.md --- K8S_Master/KUBE_VERSION_UPGRADE_README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/K8S_Master/KUBE_VERSION_UPGRADE_README.md b/K8S_Master/KUBE_VERSION_UPGRADE_README.md index cad1ba5b..5fe38639 100644 --- a/K8S_Master/KUBE_VERSION_UPGRADE_README.md +++ b/K8S_Master/KUBE_VERSION_UPGRADE_README.md @@ -164,12 +164,12 @@ kubectl drain --ignore-daemonsets --delete-local-data kubectl apply -f pdb-backup.yaml ``` - * node drain 실행 - ```bash + * node drain 실행 + ```bash kubectl drain --ignore-daemonsets --delete-local-data ex) kubectl drain k8s-master --ignore-daemonsets --delete-local-data - ``` + ``` * 업그레이드 plan 변경 ```bash sudo kubeadm upgrade plan From 26b342a0e0c526de076fd874dd2e85fe91c873e0 Mon Sep 17 00:00:00 2001 From: jinho0928 Date: Tue, 13 Oct 2020 16:58:13 +0900 Subject: [PATCH 019/106] Update KUBE_VERSION_UPGRADE_README.md --- K8S_Master/KUBE_VERSION_UPGRADE_README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/K8S_Master/KUBE_VERSION_UPGRADE_README.md b/K8S_Master/KUBE_VERSION_UPGRADE_README.md index 5fe38639..e5590bf3 100644 --- a/K8S_Master/KUBE_VERSION_UPGRADE_README.md +++ b/K8S_Master/KUBE_VERSION_UPGRADE_README.md @@ -166,9 +166,9 @@ ``` * node drain 실행 ```bash - kubectl drain --ignore-daemonsets --delete-local-data + kubectl drain --ignore-daemonsets --delete-local-data - ex) kubectl drain k8s-master --ignore-daemonsets --delete-local-data + ex) kubectl drain k8s-master --ignore-daemonsets --delete-local-data ``` * 업그레이드 plan 변경 ```bash From d425e91b03c5b332cbef1a9da03eb43cae9d4d5d Mon Sep 17 00:00:00 2001 From: jinho0928 Date: Wed, 14 Oct 2020 08:34:50 +0900 Subject: [PATCH 020/106] Update KUBE_VERSION_UPGRADE_README.md --- K8S_Master/KUBE_VERSION_UPGRADE_README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/K8S_Master/KUBE_VERSION_UPGRADE_README.md b/K8S_Master/KUBE_VERSION_UPGRADE_README.md index e5590bf3..f009a3a3 100644 --- a/K8S_Master/KUBE_VERSION_UPGRADE_README.md +++ b/K8S_Master/KUBE_VERSION_UPGRADE_README.md @@ -142,15 +142,14 @@ ``` * node drain * node drain 전 체크 사항 - * node drain시 해당 node상의 pod가 evict되기 때문에, pod의 local-data의 경우 보존되지 않음 - * drain 시도하는 node에 PDB가 존재하는 Pod가 생성되어있는 경우, 아래 명령어로 drain이 가능한 상태인지 확인한다. + * PDB가 존재하는 Pod가 drain node에 생성되어있는 경우 evict되지 않기 때문에, 아래 명령어로 drain이 가능한 상태인지 확인한다. ```bash kubectl get pdb -A or kubectl get pdb -oyaml ``` - * MIN AVAILABLE 과 ALLOWED DISRUPTIONS 및 drain 시키려는 node의 pod를 확인한다. - * 해당 PDB의 ALLOWED DISRUPTIONS가 drain을 시도하는 node에 뜬 pod(pdb 설정 pod) 개수보다 적을 경우 아래와 같이 다른 노드로 재스케줄링이 필요하다. + * ALLOWED DISRUPTIONS 및 drain 시키려는 node의 pod 상태를 확인한다. + * PDB의 ALLOWED DISRUPTIONS가 drain을 시도하는 node에 뜬 pod(pdb 설정 pod) 개수보다 적을 경우 아래와 같이 다른 노드로 재스케줄링이 필요하다. * ex) virt-api pod가 drain하려는 node에 2개 떠있는데, ALLOWED DISRUPTIONS는 0 또는 1일 경우 * 해당 조건에 만족하지 않는 경우 'Cannot evict pod as it would violate the pod's disruption budget' 와 같은 에러가 발생할 수 있다. * 해결 방법 @@ -164,7 +163,8 @@ kubectl drain --ignore-daemonsets --delete-local-data kubectl apply -f pdb-backup.yaml ``` - * node drain 실행 + * node drain 실행 + * node drain시 해당 node상의 pod가 evict되기 때문에, pod의 local-data의 경우 보존되지 않음 ```bash kubectl drain --ignore-daemonsets --delete-local-data From 68417a980f809fc82245be324c95e515992069e1 Mon Sep 17 00:00:00 2001 From: jinho0928 Date: Wed, 14 Oct 2020 08:48:14 +0900 Subject: [PATCH 021/106] Update KUBE_VERSION_UPGRADE_README.md --- K8S_Master/KUBE_VERSION_UPGRADE_README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/K8S_Master/KUBE_VERSION_UPGRADE_README.md b/K8S_Master/KUBE_VERSION_UPGRADE_README.md index f009a3a3..c458fe39 100644 --- a/K8S_Master/KUBE_VERSION_UPGRADE_README.md +++ b/K8S_Master/KUBE_VERSION_UPGRADE_README.md @@ -142,7 +142,7 @@ ``` * node drain * node drain 전 체크 사항 - * PDB가 존재하는 Pod가 drain node에 생성되어있는 경우 evict되지 않기 때문에, 아래 명령어로 drain이 가능한 상태인지 확인한다. + * PDB가 존재하는 Pod가 drain하려는 node에 생성되어있는 경우 evict될 수 없기 때문에, 아래 명령어로 drain이 가능한 상태인지 확인한다. ```bash kubectl get pdb -A or From 39c8739c228ca1a40c658c0288b7257abc5e7ac8 Mon Sep 17 00:00:00 2001 From: jinho0928 Date: Wed, 14 Oct 2020 09:03:50 +0900 Subject: [PATCH 022/106] Update KUBE_VERSION_UPGRADE_README.md --- K8S_Master/KUBE_VERSION_UPGRADE_README.md | 38 ++++++++++++++++++----- 1 file changed, 30 insertions(+), 8 deletions(-) diff --git a/K8S_Master/KUBE_VERSION_UPGRADE_README.md b/K8S_Master/KUBE_VERSION_UPGRADE_README.md index c458fe39..a4fbc8a5 100644 --- a/K8S_Master/KUBE_VERSION_UPGRADE_README.md +++ b/K8S_Master/KUBE_VERSION_UPGRADE_README.md @@ -295,7 +295,7 @@ ```bash kubeadm version ``` - * node drain + * node drain * 주의: node drain시 해당 node상의 pod가 evict되기 때문에, pod의 local-data의 경우 보존되지 않음 ```bash kubectl drain --ignore-daemonsets --delete-local-data @@ -356,14 +356,36 @@ ex) (1.15.x-> 1.16.x) yum install -y kubeadm-1.17.x-0 --disableexcludes=kubernetes ``` -* 스케줄 불가능(unschedulable)으로 표시하고 워크로드를 축출하여 유지 보수할 노드를 준비한다. - * node drain - * 주의: node drain시 해당 node상의 pod가 evict되기 때문에, pod의 local-data의 경우 보존되지 않음 - ```bash - kubectl drain --ignore-daemonsets --delete-local-data +* node drain + * node drain 전 체크 사항 + * PDB가 존재하는 Pod가 drain하려는 node에 생성되어있는 경우 evict될 수 없기 때문에, 아래 명령어로 drain이 가능한 상태인지 확인한다. + ```bash + kubectl get pdb -A + or + kubectl get pdb -oyaml + ``` + * ALLOWED DISRUPTIONS 및 drain 시키려는 node의 pod 상태를 확인한다. + * PDB의 ALLOWED DISRUPTIONS가 drain을 시도하는 node에 뜬 pod(pdb 설정 pod) 개수보다 적을 경우 아래와 같이 다른 노드로 재스케줄링이 필요하다. + * ex) virt-api pod가 drain하려는 node에 2개 떠있는데, ALLOWED DISRUPTIONS는 0 또는 1일 경우 + * 해당 조건에 만족하지 않는 경우 'Cannot evict pod as it would violate the pod's disruption budget' 와 같은 에러가 발생할 수 있다. + * 해결 방법 + * 1) 해당 Pod를 다른 Node로 재스케줄링을 시도한다. + ```bash + kubectl delete pod + ``` + * 2) 다른 Node의 리소스 부족, noScheduling 설정 등으로 인해 a번 재스케줄링이 불가할 경우엔 PDB 데이터를 삭제하고 drain한 후에 PDB 데이터를 복구한다. + ```bash + kubectl get pdb -o yaml > pdb-backup.yaml + kubectl drain --ignore-daemonsets --delete-local-data + kubectl apply -f pdb-backup.yaml + ``` + * node drain 실행 + * node drain시 해당 node상의 pod가 evict되기 때문에, pod의 local-data의 경우 보존되지 않음 + ```bash + kubectl drain --ignore-daemonsets --delete-local-data - ex) kubectl drain k8s-node1 --ignore-daemonsets --delete-local-data - ``` + ex) kubectl drain k8s-node --ignore-daemonsets --delete-local-data + ``` * kubelet 구성 업그레이드 ```bash sudo kubeadm upgrade node From fcf86edfa797ed2d493cee2d0e3cbefc2f400436 Mon Sep 17 00:00:00 2001 From: jinho0928 Date: Wed, 14 Oct 2020 09:10:30 +0900 Subject: [PATCH 023/106] Update KUBE_VERSION_UPGRADE_README.md --- K8S_Master/KUBE_VERSION_UPGRADE_README.md | 35 +++++++++++++++++++---- 1 file changed, 29 insertions(+), 6 deletions(-) diff --git a/K8S_Master/KUBE_VERSION_UPGRADE_README.md b/K8S_Master/KUBE_VERSION_UPGRADE_README.md index a4fbc8a5..24d27048 100644 --- a/K8S_Master/KUBE_VERSION_UPGRADE_README.md +++ b/K8S_Master/KUBE_VERSION_UPGRADE_README.md @@ -295,13 +295,36 @@ ```bash kubeadm version ``` - * node drain - * 주의: node drain시 해당 node상의 pod가 evict되기 때문에, pod의 local-data의 경우 보존되지 않음 - ```bash - kubectl drain --ignore-daemonsets --delete-local-data + * node drain + * node drain 전 체크 사항 + * PDB가 존재하는 Pod가 drain하려는 node에 생성되어있는 경우 evict될 수 없기 때문에, 아래 명령어로 drain이 가능한 상태인지 확인한다. + ```bash + kubectl get pdb -A + or + kubectl get pdb -oyaml + ``` + * ALLOWED DISRUPTIONS 및 drain 시키려는 node의 pod 상태를 확인한다. + * PDB의 ALLOWED DISRUPTIONS가 drain을 시도하는 node에 뜬 pod(pdb 설정 pod) 개수보다 적을 경우 아래와 같이 다른 노드로 재스케줄링이 필요하다. + * ex) virt-api pod가 drain하려는 node에 2개 떠있는데, ALLOWED DISRUPTIONS는 0 또는 1일 경우 + * 해당 조건에 만족하지 않는 경우 'Cannot evict pod as it would violate the pod's disruption budget' 와 같은 에러가 발생할 수 있다. + * 해결 방법 + * 1) 해당 Pod를 다른 Node로 재스케줄링을 시도한다. + ```bash + kubectl delete pod + ``` + * 2) 다른 Node의 리소스 부족, noScheduling 설정 등으로 인해 a번 재스케줄링이 불가할 경우엔 PDB 데이터를 삭제하고 drain한 후에 PDB 데이터를 복구한다. + ```bash + kubectl get pdb -o yaml > pdb-backup.yaml + kubectl drain --ignore-daemonsets --delete-local-data + kubectl apply -f pdb-backup.yaml + ``` + * node drain 실행 + * 주의: node drain시 해당 node상의 pod가 evict되기 때문에, pod의 local-data의 경우 보존되지 않음 + ```bash + kubectl drain --ignore-daemonsets --delete-local-data - ex) kubectl drain k8s-master2 --ignore-daemonsets --delete-local-data - ``` + ex) kubectl drain k8s-master2 --ignore-daemonsets --delete-local-data + ``` * 추가 컨트롤 프레인에서는 해당 명령어를 실행하지 않는다. (sudo kubeadm upgrade plan) * sudo kubeadm upgrade apply 명령어 대신에 sudo kubeadm upgrade node 명령어를 실행한다. ```bash From 76cd9fa6df80ed2d7b82dd4f2604e01c96c42591 Mon Sep 17 00:00:00 2001 From: jinho0928 Date: Wed, 14 Oct 2020 09:14:53 +0900 Subject: [PATCH 024/106] Update KUBE_VERSION_UPGRADE_README.md --- K8S_Master/KUBE_VERSION_UPGRADE_README.md | 35 +++++------------------ 1 file changed, 7 insertions(+), 28 deletions(-) diff --git a/K8S_Master/KUBE_VERSION_UPGRADE_README.md b/K8S_Master/KUBE_VERSION_UPGRADE_README.md index 24d27048..d8780979 100644 --- a/K8S_Master/KUBE_VERSION_UPGRADE_README.md +++ b/K8S_Master/KUBE_VERSION_UPGRADE_README.md @@ -296,28 +296,7 @@ kubeadm version ``` * node drain - * node drain 전 체크 사항 - * PDB가 존재하는 Pod가 drain하려는 node에 생성되어있는 경우 evict될 수 없기 때문에, 아래 명령어로 drain이 가능한 상태인지 확인한다. - ```bash - kubectl get pdb -A - or - kubectl get pdb -oyaml - ``` - * ALLOWED DISRUPTIONS 및 drain 시키려는 node의 pod 상태를 확인한다. - * PDB의 ALLOWED DISRUPTIONS가 drain을 시도하는 node에 뜬 pod(pdb 설정 pod) 개수보다 적을 경우 아래와 같이 다른 노드로 재스케줄링이 필요하다. - * ex) virt-api pod가 drain하려는 node에 2개 떠있는데, ALLOWED DISRUPTIONS는 0 또는 1일 경우 - * 해당 조건에 만족하지 않는 경우 'Cannot evict pod as it would violate the pod's disruption budget' 와 같은 에러가 발생할 수 있다. - * 해결 방법 - * 1) 해당 Pod를 다른 Node로 재스케줄링을 시도한다. - ```bash - kubectl delete pod - ``` - * 2) 다른 Node의 리소스 부족, noScheduling 설정 등으로 인해 a번 재스케줄링이 불가할 경우엔 PDB 데이터를 삭제하고 drain한 후에 PDB 데이터를 복구한다. - ```bash - kubectl get pdb -o yaml > pdb-backup.yaml - kubectl drain --ignore-daemonsets --delete-local-data - kubectl apply -f pdb-backup.yaml - ``` + * 추가 컨트롤 플레인에서도 첫번째 컨트롤 플레인 node drain 전 체크 사항을 참고하여 drain 가능한 상태인지 체크한다. * node drain 실행 * 주의: node drain시 해당 node상의 pod가 evict되기 때문에, pod의 local-data의 경우 보존되지 않음 ```bash @@ -396,12 +375,12 @@ ```bash kubectl delete pod ``` - * 2) 다른 Node의 리소스 부족, noScheduling 설정 등으로 인해 a번 재스케줄링이 불가할 경우엔 PDB 데이터를 삭제하고 drain한 후에 PDB 데이터를 복구한다. - ```bash - kubectl get pdb -o yaml > pdb-backup.yaml - kubectl drain --ignore-daemonsets --delete-local-data - kubectl apply -f pdb-backup.yaml - ``` + * 2) 다른 Node의 리소스 부족, noScheduling 설정 등으로 인해 a번 재스케줄링이 불가할 경우엔 PDB 데이터를 삭제하고 drain한 후에 PDB 데이터를 복구한다. + ```bash + kubectl get pdb -o yaml > pdb-backup.yaml + kubectl drain --ignore-daemonsets --delete-local-data + kubectl apply -f pdb-backup.yaml + ``` * node drain 실행 * node drain시 해당 node상의 pod가 evict되기 때문에, pod의 local-data의 경우 보존되지 않음 ```bash From bb13e914498d040580162a264a618f7e5c626219 Mon Sep 17 00:00:00 2001 From: jinho0928 Date: Wed, 14 Oct 2020 09:15:41 +0900 Subject: [PATCH 025/106] Update KUBE_VERSION_UPGRADE_README.md --- K8S_Master/KUBE_VERSION_UPGRADE_README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/K8S_Master/KUBE_VERSION_UPGRADE_README.md b/K8S_Master/KUBE_VERSION_UPGRADE_README.md index d8780979..0747aab8 100644 --- a/K8S_Master/KUBE_VERSION_UPGRADE_README.md +++ b/K8S_Master/KUBE_VERSION_UPGRADE_README.md @@ -299,11 +299,11 @@ * 추가 컨트롤 플레인에서도 첫번째 컨트롤 플레인 node drain 전 체크 사항을 참고하여 drain 가능한 상태인지 체크한다. * node drain 실행 * 주의: node drain시 해당 node상의 pod가 evict되기 때문에, pod의 local-data의 경우 보존되지 않음 - ```bash - kubectl drain --ignore-daemonsets --delete-local-data - - ex) kubectl drain k8s-master2 --ignore-daemonsets --delete-local-data - ``` + ```bash + kubectl drain --ignore-daemonsets --delete-local-data + + ex) kubectl drain k8s-master2 --ignore-daemonsets --delete-local-data + ``` * 추가 컨트롤 프레인에서는 해당 명령어를 실행하지 않는다. (sudo kubeadm upgrade plan) * sudo kubeadm upgrade apply 명령어 대신에 sudo kubeadm upgrade node 명령어를 실행한다. ```bash From e1d973b8315db23ac6b2a1e9b752ea2b49befe3e Mon Sep 17 00:00:00 2001 From: jinho0928 Date: Wed, 14 Oct 2020 09:17:23 +0900 Subject: [PATCH 026/106] Update KUBE_VERSION_UPGRADE_README.md --- K8S_Master/KUBE_VERSION_UPGRADE_README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/K8S_Master/KUBE_VERSION_UPGRADE_README.md b/K8S_Master/KUBE_VERSION_UPGRADE_README.md index 0747aab8..23e0add0 100644 --- a/K8S_Master/KUBE_VERSION_UPGRADE_README.md +++ b/K8S_Master/KUBE_VERSION_UPGRADE_README.md @@ -298,7 +298,7 @@ * node drain * 추가 컨트롤 플레인에서도 첫번째 컨트롤 플레인 node drain 전 체크 사항을 참고하여 drain 가능한 상태인지 체크한다. * node drain 실행 - * 주의: node drain시 해당 node상의 pod가 evict되기 때문에, pod의 local-data의 경우 보존되지 않음 + * node drain시 해당 node상의 pod가 evict되기 때문에, pod의 local-data의 경우 보존되지 않음 ```bash kubectl drain --ignore-daemonsets --delete-local-data From 683e0947166e16de4ebe9fa4e12804c8575a78eb Mon Sep 17 00:00:00 2001 From: haemyung_yang Date: Wed, 14 Oct 2020 10:45:00 +0900 Subject: [PATCH 027/106] Update KUBE_VERSION_UPGRADE_README.md edit pdb --- K8S_Master/KUBE_VERSION_UPGRADE_README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/K8S_Master/KUBE_VERSION_UPGRADE_README.md b/K8S_Master/KUBE_VERSION_UPGRADE_README.md index 23e0add0..31732861 100644 --- a/K8S_Master/KUBE_VERSION_UPGRADE_README.md +++ b/K8S_Master/KUBE_VERSION_UPGRADE_README.md @@ -142,7 +142,7 @@ ``` * node drain * node drain 전 체크 사항 - * PDB가 존재하는 Pod가 drain하려는 node에 생성되어있는 경우 evict될 수 없기 때문에, 아래 명령어로 drain이 가능한 상태인지 확인한다. + * PDB가 존재하는 Pod가 drain하려는 node에 생성되어있는 경우 evict를 막을수 있기 때문에, 아래 명령어로 drain이 가능한 상태인지 확인한다. ```bash kubectl get pdb -A or @@ -164,7 +164,7 @@ kubectl apply -f pdb-backup.yaml ``` * node drain 실행 - * node drain시 해당 node상의 pod가 evict되기 때문에, pod의 local-data의 경우 보존되지 않음 + * warning: node drain시 해당 node상의 pod가 evict되기 때문에, pod의 local-data의 경우 보존되지 않음 ```bash kubectl drain --ignore-daemonsets --delete-local-data @@ -360,7 +360,7 @@ ``` * node drain * node drain 전 체크 사항 - * PDB가 존재하는 Pod가 drain하려는 node에 생성되어있는 경우 evict될 수 없기 때문에, 아래 명령어로 drain이 가능한 상태인지 확인한다. + * PDB가 존재하는 Pod가 drain하려는 node에 생성되어있는 경우 evict를 막을수 있기 때문에, 아래 명령어로 drain이 가능한 상태인지 확인한다. ```bash kubectl get pdb -A or @@ -382,7 +382,7 @@ kubectl apply -f pdb-backup.yaml ``` * node drain 실행 - * node drain시 해당 node상의 pod가 evict되기 때문에, pod의 local-data의 경우 보존되지 않음 + * warning: node drain시 해당 node상의 pod가 evict되기 때문에, pod의 local-data의 경우 보존되지 않음 ```bash kubectl drain --ignore-daemonsets --delete-local-data From e9bf05dca080cbde52cad587738b248961ccbeb9 Mon Sep 17 00:00:00 2001 From: jinho0928 Date: Wed, 14 Oct 2020 10:52:49 +0900 Subject: [PATCH 028/106] Update KUBE_VERSION_UPGRADE_README.md --- K8S_Master/KUBE_VERSION_UPGRADE_README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/K8S_Master/KUBE_VERSION_UPGRADE_README.md b/K8S_Master/KUBE_VERSION_UPGRADE_README.md index 31732861..9cc979b6 100644 --- a/K8S_Master/KUBE_VERSION_UPGRADE_README.md +++ b/K8S_Master/KUBE_VERSION_UPGRADE_README.md @@ -142,7 +142,7 @@ ``` * node drain * node drain 전 체크 사항 - * PDB가 존재하는 Pod가 drain하려는 node에 생성되어있는 경우 evict를 막을수 있기 때문에, 아래 명령어로 drain이 가능한 상태인지 확인한다. + * PDB가 존재하는 Pod가 drain하려는 node에 생성되어있는 경우 evict가 제한 되기 때문에, 아래 명령어로 drain이 가능한 상태인지 확인한다. ```bash kubectl get pdb -A or @@ -360,7 +360,7 @@ ``` * node drain * node drain 전 체크 사항 - * PDB가 존재하는 Pod가 drain하려는 node에 생성되어있는 경우 evict를 막을수 있기 때문에, 아래 명령어로 drain이 가능한 상태인지 확인한다. + * PDB가 존재하는 Pod가 drain하려는 node에 생성되어있는 경우 evict가 제한 되기 때문에, 아래 명령어로 drain이 가능한 상태인지 확인한다. ```bash kubectl get pdb -A or @@ -382,7 +382,7 @@ kubectl apply -f pdb-backup.yaml ``` * node drain 실행 - * warning: node drain시 해당 node상의 pod가 evict되기 때문에, pod의 local-data의 경우 보존되지 않음 + * warning : node drain시 해당 node상의 pod가 evict되기 때문에, pod의 local-data의 경우 보존되지 않음 ```bash kubectl drain --ignore-daemonsets --delete-local-data From fd9109d6c052c95ca5c8941515b6d999fd44735b Mon Sep 17 00:00:00 2001 From: taegeon woo <61040426+dnxorjs1@users.noreply.github.com> Date: Tue, 20 Oct 2020 12:36:47 +0900 Subject: [PATCH 029/106] Update 2.hyperauth_deployment.yaml --- HyperAuth/manifest/2.hyperauth_deployment.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/HyperAuth/manifest/2.hyperauth_deployment.yaml b/HyperAuth/manifest/2.hyperauth_deployment.yaml index ca16e8bf..59496f95 100644 --- a/HyperAuth/manifest/2.hyperauth_deployment.yaml +++ b/HyperAuth/manifest/2.hyperauth_deployment.yaml @@ -21,7 +21,7 @@ spec: secretName: hyperauth-https-secret containers: - name: hyperauth - image: tmaxcloudck/hyperauth:b1.0.5.6 + image: tmaxcloudck/hyperauth:b1.0.9.7 env: - name: KEYCLOAK_USER value: "admin" From 5e7d97c0213c120a40cfa773b9319d457e6d76bb Mon Sep 17 00:00:00 2001 From: jinho0928 Date: Tue, 20 Oct 2020 13:58:40 +0900 Subject: [PATCH 030/106] Update KUBE_VERSION_UPGRADE_README.md --- K8S_Master/KUBE_VERSION_UPGRADE_README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/K8S_Master/KUBE_VERSION_UPGRADE_README.md b/K8S_Master/KUBE_VERSION_UPGRADE_README.md index 9cc979b6..b0e3a28b 100644 --- a/K8S_Master/KUBE_VERSION_UPGRADE_README.md +++ b/K8S_Master/KUBE_VERSION_UPGRADE_README.md @@ -422,6 +422,8 @@ * 업그레이드시 runtime 변경을 하는 경우 (docker -> cri-o) * crio 설치는 https://github.com/tmax-cloud/hypercloud-install-guide/tree/master/K8S_Master#step-1-cri-o-%EC%84%A4%EC%B9%98를 참조한다. ```bash + add stop kubelet command + sudo vi /var/lib/kubelet/kubeadm-flags.env에 옵션 변경 기존 (docker) : KUBELET_KUBEADM_ARGS="--cgroup-driver=cgroupfs --network-plugin=cni --pod-infra-container-image=k8s.gcr.io/pause:3.1 From 9bef2b9b21b026311a6da547c307b617d6c7fa81 Mon Sep 17 00:00:00 2001 From: jinho0928 Date: Tue, 20 Oct 2020 13:59:05 +0900 Subject: [PATCH 031/106] Update KUBE_VERSION_UPGRADE_README.md --- K8S_Master/KUBE_VERSION_UPGRADE_README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/K8S_Master/KUBE_VERSION_UPGRADE_README.md b/K8S_Master/KUBE_VERSION_UPGRADE_README.md index b0e3a28b..c6a0886f 100644 --- a/K8S_Master/KUBE_VERSION_UPGRADE_README.md +++ b/K8S_Master/KUBE_VERSION_UPGRADE_README.md @@ -422,7 +422,7 @@ * 업그레이드시 runtime 변경을 하는 경우 (docker -> cri-o) * crio 설치는 https://github.com/tmax-cloud/hypercloud-install-guide/tree/master/K8S_Master#step-1-cri-o-%EC%84%A4%EC%B9%98를 참조한다. ```bash - add stop kubelet command + systemctl stop kubelet sudo vi /var/lib/kubelet/kubeadm-flags.env에 옵션 변경 From a55588d4e1a8a79c68b29c3bca8608bf730da60d Mon Sep 17 00:00:00 2001 From: jinho0928 Date: Tue, 20 Oct 2020 14:00:13 +0900 Subject: [PATCH 032/106] Update KUBE_VERSION_UPGRADE_README.md --- K8S_Master/KUBE_VERSION_UPGRADE_README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/K8S_Master/KUBE_VERSION_UPGRADE_README.md b/K8S_Master/KUBE_VERSION_UPGRADE_README.md index c6a0886f..3181ae18 100644 --- a/K8S_Master/KUBE_VERSION_UPGRADE_README.md +++ b/K8S_Master/KUBE_VERSION_UPGRADE_README.md @@ -339,6 +339,8 @@ * 업그레이드시 runtime 변경을 하는 경우 (docker -> cri-o) * crio 설치는 https://github.com/tmax-cloud/hypercloud-install-guide/tree/master/K8S_Master#step-1-cri-o-%EC%84%A4%EC%B9%98를 참조한다. ```bash + systemctl stop kubelet + sudo vi /var/lib/kubelet/kubeadm-flags.env에 옵션 변경 기존 (docker) : KUBELET_KUBEADM_ARGS="--cgroup-driver=cgroupfs --network-plugin=cni --pod-infra-container-image=k8s.gcr.io/pause:3.1 From b14f6fc8670ab2e865b447ab731ba6203cc3921f Mon Sep 17 00:00:00 2001 From: wooyoungmin <47769117+minwy23@users.noreply.github.com> Date: Tue, 20 Oct 2020 19:15:24 +0900 Subject: [PATCH 033/106] Update README.md --- Kubeflow/README.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Kubeflow/README.md b/Kubeflow/README.md index fef20aed..c802fc64 100644 --- a/Kubeflow/README.md +++ b/Kubeflow/README.md @@ -47,11 +47,16 @@ $ chmod +x ./image-push.sh $ ./image-push.sh <> ``` + * 아래 명령어를 수행하여 registry에 이미지들이 잘 push되었는지 확인한다. + ```bash + $ curl -X GET <>/v2/_catalog + ``` 2. Yaml 파일 및 script 파일 준비 * 아래 명령어를 수행하여 Kubeflow 설치에 필요한 yaml 파일들과 script 파일들을 다운로드 받는다. ```bash $ wget https://raw.githubusercontent.com/tmax-cloud/hypercloud-install-guide/4.1/Kubeflow/sed.sh $ wget https://raw.githubusercontent.com/tmax-cloud/hypercloud-install-guide/4.1/Kubeflow/kustomize.tar.gz + $ wget https://raw.githubusercontent.com/tmax-cloud/hypercloud-install-guide/4.1/Kubeflow/kfctl_hypercloud_kubeflow.v1.0.2.yaml $ wget https://github.com/kubeflow/kfctl/releases/download/v1.0.2/kfctl_v1.0.2-0-ga476281_linux.tar.gz ``` 3. 앞으로의 진행 @@ -98,7 +103,7 @@ ``` * 정상적으로 완료되면 kustomize라는 디렉토리가 생성된다. * 비고 : - * 폐쇄망 환경일 경우 설치 디렉토리에 미리 다운로드받은 sed.sh, kustomize.tar.gz 파일을 옮긴다. + * 폐쇄망 환경일 경우 설치 디렉토리에 미리 다운로드받은 sed.sh, kustomize.tar.gz, kfctl_hypercloud_kubeflow.v1.0.2.yaml 파일을 옮긴다. * 아래 명령어를 통해 Kustomize 리소스의 압축을 풀고 yaml 파일들에서 이미지들을 pull 받을 registry를 바꿔준다. ```bash $ tar xvfz kustomize.tar.gz From 311a18dd2f488c1f630f14eadc61a6c9fc2798af Mon Sep 17 00:00:00 2001 From: wooyoungmin <47769117+minwy23@users.noreply.github.com> Date: Wed, 21 Oct 2020 10:37:03 +0900 Subject: [PATCH 034/106] Delete imagelist --- Kubeflow/imagelist | 73 ---------------------------------------------- 1 file changed, 73 deletions(-) delete mode 100644 Kubeflow/imagelist diff --git a/Kubeflow/imagelist b/Kubeflow/imagelist deleted file mode 100644 index 157d44e9..00000000 --- a/Kubeflow/imagelist +++ /dev/null @@ -1,73 +0,0 @@ -gcr.io/ml-pipeline/api-server:0.2.5 -gcr.io/kubeflow-images-public/kubernetes-sigs/application:1.0-beta -argoproj/argocli:v2.8.0 -argoproj/workflow-controller:v2.8.0 -gcr.io/kubeflow-images-public/ingress-setup:latest -gcr.io/kubeflow-images-public/centraldashboard:v1.0.0-g3ec0de71 -quay.io/jetstack/cert-manager-cainjector:v0.11.0 -quay.io/jetstack/cert-manager-webhook:v0.11.0 -quay.io/jetstack/cert-manager-controller:v0.11.0 -docker.io/istio/proxyv2:1.5.1 -gcr.io/kubeflow-images-public/jupyter-web-app:v1.0.0-g2bd63238 -gcr.io/kubeflow-images-public/tensorflow-1.14.0-notebook-cpu:v-base-ef41372-1177829795472347138 -gcr.io/kubeflow-images-public/tensorflow-1.15.2-notebook-cpu:1.0.0 -gcr.io/kubeflow-images-public/tensorflow-1.15.2-notebook-gpu:1.0.0 -gcr.io/kubeflow-images-public/tensorflow-2.1.0-notebook-cpu:1.0.0 -gcr.io/kubeflow-images-public/tensorflow-2.1.0-notebook-gpu:1.0.0 -gcr.io/kubeflow-images-public/katib/v1alpha3/file-metrics-collector:v0.8.0 -gcr.io/kubeflow-images-public/katib/v1alpha3/file-metrics-collector:v0.8.0 -gcr.io/kubeflow-images-public/katib/v1alpha3/tfevent-metrics-collector:v0.8.0 -gcr.io/kubeflow-images-public/katib/v1alpha3/suggestion-hyperopt:v0.8.0 -gcr.io/kubeflow-images-public/katib/v1alpha3/suggestion-chocolate:v0.8.0 -gcr.io/kubeflow-images-public/katib/v1alpha3/suggestion-hyperband:v0.8.0 -gcr.io/kubeflow-images-public/katib/v1alpha3/suggestion-skopt:v0.8.0 -gcr.io/kubeflow-images-public/katib/v1alpha3/suggestion-hyperopt:v0.8.0 -gcr.io/kubeflow-images-public/katib/v1alpha3/suggestion-nasrl:v0.8.0 -docker.io/kubeflowkatib/mxnet-mnist -gcr.io/kubeflow-images-public/katib/v1alpha3/katib-controller:v0.8.0 -gcr.io/kubeflow-images-public/katib/v1alpha3/katib-db-manager:v0.8.0 -mysql:8 -gcr.io/kubeflow-images-public/katib/v1alpha3/katib-ui:v0.8.0 -docker.io/istio/proxyv2:1.5.1 -gcr.io/kfserving/batcher:v0.4.0 -gcr.io/kfserving/alibi-explainer -gcr.io/kfserving/logger:0.4.0 -tensorflow/serving -mcr.microsoft.com/onnxruntime/server -gcr.io/kfserving/sklearnserver -gcr.io/kfserving/xgbserver -gcr.io/kfserving/pytorchserver -nvcr.io/nvidia/tritonserver -gcr.io/kfserving/storage-initializer:v0.4.0 -gcr.io/kubebuilder/kube-rbac-proxy:v0.4.0 -gcr.io/kfserving/kfserving-controller:v0.4.0 -gcr.io/knative-releases/knative.dev/serving/cmd/activator@sha256:8e606671215cc029683e8cd633ec5de9eabeaa6e9a4392ff289883304be1f418 -gcr.io/knative-releases/knative.dev/serving/cmd/autoscaler-hpa@sha256:5e0fadf574e66fb1c893806b5c5e5f19139cc476ebf1dff9860789fe4ac5f545 -gcr.io/knative-releases/knative.dev/serving/cmd/autoscaler@sha256:ef1f01b5fb3886d4c488a219687aac72d28e72f808691132f658259e4e02bb27 -gcr.io/knative-releases/knative.dev/serving/cmd/controller@sha256:5ca13e5b3ce5e2819c4567b75c0984650a57272ece44bc1dabf930f9fe1e19a1 -gcr.io/knative-releases/knative.dev/serving/cmd/networking/istio@sha256:727a623ccb17676fae8058cb1691207a9658a8d71bc7603d701e23b1a6037e6c -gcr.io/knative-releases/knative.dev/serving/cmd/webhook@sha256:1ef3328282f31704b5802c1136bd117e8598fd9f437df8209ca87366c5ce9fcb -gcr.io/knative-releases/knative.dev/serving/cmd/queue@sha256:792f6945c7bc73a49a470a5b955c39c8bd174705743abf5fb71aa0f4c04128eb -metacontroller/metacontroller:v0.3.0 -gcr.io/kubeflow-images-public/metadata:v0.1.11 -gcr.io/ml-pipeline/envoy:metadata-grpc -gcr.io/tfx-oss-public/ml_metadata_store_server:v0.21.1 -gcr.io/kubeflow-images-public/metadata-frontend:v0.1.8 -mysql:8.0.3 -minio/minio:RELEASE.2018-02-09T22-40-05Z -mysql:5.6 -tmaxcloudck/notebook-controller-go:b0.0.2 -gcr.io/ml-pipeline/persistenceagent:0.2.5 -gcr.io/ml-pipeline/frontend:0.2.5 -gcr.io/ml-pipeline/viewer-crd-controller:0.2.5 -gcr.io/ml-pipeline/visualization-server:0.2.5 -gcr.io/kubeflow-images-public/profile-controller:v1.0.0-ge50a8531 -gcr.io/kubeflow-images-public/kfam:v1.0.0-gf3e09203 -gcr.io/kubeflow-images-public/pytorch-operator:v1.0.0-g047cf0f -gcr.io/ml-pipeline/scheduledworkflow:0.2.5 -docker.io/seldonio/seldon-core-operator:1.0.1 -gcr.io/spark-operator/spark-operator:v1beta2-1.0.0-2.4.4 -gcr.io/google_containers/spartakus-amd64:v1.1.0 -tensorflow/tensorflow:1.8.0 -gcr.io/kubeflow-images-public/tf_operator:v1.0.0-g92389064 -gcr.io/kubeflow-images-public/admission-webhook:v1.0.0-gaf96e4e3 From c2e8c3d71741d8de5482ff3292da0d69ae1c5032 Mon Sep 17 00:00:00 2001 From: wooyoungmin <47769117+minwy23@users.noreply.github.com> Date: Wed, 21 Oct 2020 10:37:35 +0900 Subject: [PATCH 035/106] Delete kustomize-apply.sh --- Kubeflow/kustomize-apply.sh | 25 ------------------------- 1 file changed, 25 deletions(-) delete mode 100644 Kubeflow/kustomize-apply.sh diff --git a/Kubeflow/kustomize-apply.sh b/Kubeflow/kustomize-apply.sh deleted file mode 100644 index b77c61e1..00000000 --- a/Kubeflow/kustomize-apply.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/bash - -dir="" - -if [ $# -eq 1 ]; then - dir=$1 -else - echo "[$0] ERROR!! Invalid argument count" - echo "[$0] [Usage] $0 ${KF_DIR}/kustomize" - exit 1 -fi - -module_num=$(ls ${dir} | wc -l) -echo "[$0] The number of modules: ${module_num}" - -i=1 -ls ${dir} | while read line -do - echo "[$0] [ ${i} / ${module_num} ] $line" - let i+=1 - - kubectl apply -k ${dir}/$line -done - -echo "[$0] Done" From 94f2906a28f1aa21d59a09f15d37cabfb708281a Mon Sep 17 00:00:00 2001 From: wooyoungmin <47769117+minwy23@users.noreply.github.com> Date: Wed, 21 Oct 2020 10:37:42 +0900 Subject: [PATCH 036/106] Delete kfctl_hypercloud_kubeflow.v1.0.2.yaml --- .../kfctl_hypercloud_kubeflow.v1.0.2.yaml | 342 ------------------ 1 file changed, 342 deletions(-) delete mode 100644 Kubeflow/kfctl_hypercloud_kubeflow.v1.0.2.yaml diff --git a/Kubeflow/kfctl_hypercloud_kubeflow.v1.0.2.yaml b/Kubeflow/kfctl_hypercloud_kubeflow.v1.0.2.yaml deleted file mode 100644 index c1eb3d1d..00000000 --- a/Kubeflow/kfctl_hypercloud_kubeflow.v1.0.2.yaml +++ /dev/null @@ -1,342 +0,0 @@ -apiVersion: kfdef.apps.kubeflow.org/v1 -kind: KfDef -metadata: - creationTimestamp: null - namespace: kubeflow -spec: - applications: - - kustomizeConfig: - parameters: - - name: namespace - value: istio-system - repoRef: - name: manifests - path: istio/cluster-local-gateway - name: cluster-local-gateway - - kustomizeConfig: - parameters: - - name: namespace - value: istio-system - repoRef: - name: manifests - path: istio/kfserving-gateway - name: kfserving-gateway - - kustomizeConfig: - parameters: - - name: clusterRbacConfig - value: "OFF" - repoRef: - name: manifests - path: istio/istio - name: istio - - kustomizeConfig: - parameters: - - name: namespace - value: istio-system - repoRef: - name: manifests - path: istio/add-anonymous-user-filter - name: add-anonymous-user-filter - - kustomizeConfig: - repoRef: - name: manifests - path: application/application-crds - name: application-crds - - kustomizeConfig: - overlays: - - application - repoRef: - name: manifests - path: application/application - name: application - - kustomizeConfig: - parameters: - - name: namespace - value: cert-manager - repoRef: - name: manifests - path: cert-manager/cert-manager-crds - name: cert-manager-crds - - kustomizeConfig: - parameters: - - name: namespace - value: kube-system - repoRef: - name: manifests - path: cert-manager/cert-manager-kube-system-resources - name: cert-manager-kube-system-resources - - kustomizeConfig: - overlays: - - self-signed - - application - parameters: - - name: namespace - value: cert-manager - repoRef: - name: manifests - path: cert-manager/cert-manager - name: cert-manager - - kustomizeConfig: - repoRef: - name: manifests - path: metacontroller - name: metacontroller - - kustomizeConfig: - overlays: - - istio - - application - repoRef: - name: manifests - path: argo - name: argo - - kustomizeConfig: - repoRef: - name: manifests - path: kubeflow-roles - name: kubeflow-roles - - kustomizeConfig: - overlays: - - istio - - application - repoRef: - name: manifests - path: common/centraldashboard - name: centraldashboard - - kustomizeConfig: - overlays: - - application - repoRef: - name: manifests - path: admission-webhook/bootstrap - name: bootstrap - - kustomizeConfig: - overlays: - - application - repoRef: - name: manifests - path: admission-webhook/webhook - name: webhook - - kustomizeConfig: - overlays: - - istio - - application - parameters: - - name: userid-header - value: kubeflow-userid - repoRef: - name: manifests - path: jupyter/jupyter-web-app - name: jupyter-web-app - - kustomizeConfig: - overlays: - - application - repoRef: - name: manifests - path: spark/spark-operator - name: spark-operator - - kustomizeConfig: - overlays: - - istio - - application - - db - repoRef: - name: manifests - path: metadata - name: metadata - - kustomizeConfig: - overlays: - - istio - - application - repoRef: - name: manifests - path: jupyter/notebook-controller - name: notebook-controller - - kustomizeConfig: - overlays: - - application - repoRef: - name: manifests - path: pytorch-job/pytorch-job-crds - name: pytorch-job-crds - - kustomizeConfig: - overlays: - - application - repoRef: - name: manifests - path: pytorch-job/pytorch-operator - name: pytorch-operator - - kustomizeConfig: - overlays: - - application - parameters: - - name: namespace - value: knative-serving - repoRef: - name: manifests - path: knative/knative-serving-crds - name: knative-crds - - kustomizeConfig: - overlays: - - application - parameters: - - name: namespace - value: knative-serving - repoRef: - name: manifests - path: knative/knative-serving-install - name: knative-install - - kustomizeConfig: - overlays: - - application - repoRef: - name: manifests - path: kfserving/kfserving-crds - name: kfserving-crds - - kustomizeConfig: - overlays: - - application - repoRef: - name: manifests - path: kfserving/kfserving-install - name: kfserving-install - - kustomizeConfig: - overlays: - - application - parameters: - - name: usageId - value: - - name: reportUsage - value: "true" - repoRef: - name: manifests - path: common/spartakus - name: spartakus - - kustomizeConfig: - overlays: - - istio - repoRef: - name: manifests - path: tensorboard - name: tensorboard - - kustomizeConfig: - overlays: - - application - repoRef: - name: manifests - path: tf-training/tf-job-crds - name: tf-job-crds - - kustomizeConfig: - overlays: - - application - repoRef: - name: manifests - path: tf-training/tf-job-operator - name: tf-job-operator - - kustomizeConfig: - overlays: - - application - repoRef: - name: manifests - path: katib/katib-crds - name: katib-crds - - kustomizeConfig: - overlays: - - application - - istio - repoRef: - name: manifests - path: katib/katib-controller - name: katib-controller - - kustomizeConfig: - overlays: - - application - repoRef: - name: manifests - path: pipeline/api-service - name: api-service - - kustomizeConfig: - overlays: - - application - parameters: - - name: minioPvcName - value: minio-pv-claim - repoRef: - name: manifests - path: pipeline/minio - name: minio - - kustomizeConfig: - overlays: - - application - parameters: - - name: mysqlPvcName - value: mysql-pv-claim - repoRef: - name: manifests - path: pipeline/mysql - name: mysql - - kustomizeConfig: - overlays: - - application - repoRef: - name: manifests - path: pipeline/persistent-agent - name: persistent-agent - - kustomizeConfig: - overlays: - - application - repoRef: - name: manifests - path: pipeline/pipelines-runner - name: pipelines-runner - - kustomizeConfig: - overlays: - - istio - - application - repoRef: - name: manifests - path: pipeline/pipelines-ui - name: pipelines-ui - - kustomizeConfig: - overlays: - - application - repoRef: - name: manifests - path: pipeline/pipelines-viewer - name: pipelines-viewer - - kustomizeConfig: - overlays: - - application - repoRef: - name: manifests - path: pipeline/scheduledworkflow - name: scheduledworkflow - - kustomizeConfig: - overlays: - - application - repoRef: - name: manifests - path: pipeline/pipeline-visualization-service - name: pipeline-visualization-service - - kustomizeConfig: - overlays: - - application - - istio - parameters: - - name: admin - value: johnDoe@acme.com - repoRef: - name: manifests - path: profiles - name: profiles - - kustomizeConfig: - overlays: - - application - repoRef: - name: manifests - path: seldon/seldon-core-operator - name: seldon-core-operator - repos: - - name: manifests - uri: https://github.com/tmax-cloud/kubeflow-manifests/archive/kubeflow-manifests-v1.0.2.tar.gz - version: v1.0.2 -status: {} From b28ee82475d37703ab0bac1597f09c9e7639dbef Mon Sep 17 00:00:00 2001 From: wooyoungmin <47769117+minwy23@users.noreply.github.com> Date: Wed, 21 Oct 2020 10:37:48 +0900 Subject: [PATCH 037/106] Delete kustomize.tar.gz --- Kubeflow/kustomize.tar.gz | Bin 151478 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Kubeflow/kustomize.tar.gz diff --git a/Kubeflow/kustomize.tar.gz b/Kubeflow/kustomize.tar.gz deleted file mode 100644 index 5abb2de567ec0b12404fdd39ca74383552b52a2f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 151478 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 z z1UK%Dwsn&1#ijx^wVc^FnwJNU{s6s-Fbno#kQ(k9>-hK+xn} zq-9%TF!3jEN6Eh{XkwQeyLS)E9u! z-I@cGP^$Q|O?1D2At^OmYEA@rf3%YUvcIOU6fTjh0r)sqz0ljSNh^+{wf-Px1rWxTbniVjA;EmY zHH0H_o~zVBQ&aKY{&$I~GJ!LO@=5BkZBw(lhM0r2JsMK9j$`F;I%~+)GQF4l5s8a~ zw_Ju!{xZ7L$=daW%n@?=c3$|90~#yPgiGI(fsFhVQsm0332E-#Y&pP&wg=bA^S)Tp z)$?BY^6KRvH+#RM`;8>o#q)k!$Ey`>_j(vjuobP=``Yt9J5~kd-|N`!pu_5L)@T0D zt)p_f9H5x1hVFFUS8b&E`d4S{zinvy4qGh=H@>`}lJE2`5{wO3Y{`jP+@8)xob%EK zml_fcuU6Oa79p7S%z`rs*pw41D%+uJq+6uzXEp#J5OE;lV=hQe$`lV%b&yP$(IT&* zB5Pm*T)5yPi*t2;wa6U$oo&?N{RIsnI zt7e=r9?>88O7JC0l%lA$phXhdO{*G~*&r*4SKrX#u=D3p=AG=NK;SFZ#FphT_FD{u zn|bBDnW6xp(UxTcKno|Py3k(LOx%xN1Vo68|2_%Y`!9&a*r~E%j@oa|o+EnkvWenL zA4#_;vaH7KB4RLLj*YM5ZiB0#+pR-JkpfzUlZ5`M+PLL6gO7IuZXnq$IVFV4gls#H zJ{sp_hGY#tZvw%MizULH8xq2eD{*Ocn?DzdIeH(@!jJJsOVN1@7;{pvL12Fi2lyCA z1Tr5yH--X4Vb~{22*Fje5FhpLq`-2Q%}e+4bI641X);G z7jyt88#W3bGy6EBjLTVmVtvL;pB^V)?5OTh@Z@WODQ#_6HDxbtv@#Os)wXw#UpZ&P z%OF~C=OSiJFWybUojYp6jSF4Ejbqh3BOC^2Vx9(PB3>4q^`x^-RPgEbOPP)b;A+;->}A)4Uf$8a7}CW;bZkZb;b*f95eQWgAzBs}OB2R{2TI$ULX-%=BIDvbKJz!b#^5M_m;%OckB{nLv`~ zB+joxEJ%o3cC?1n)y=zyX;uv+2??@(DW4v&%Y3^eAUZtM@5dJxFbv_zddv3xoJp({oW*T zH(FbgbiLxfGxxpd#`lWB#uYCwN|R6;x1z0mu8X|IUp7?1CO>I2wrWljcacFb8`Am%9_CO}_P30burpk#bvTrX}mMH5oFjzyrGh1YuJd`_D(2m#f zWRfS4)kpYcPlU9cA+nlT2lSjg_k7$Dyn0+P{xgz8D5tk9FyG9fR=6tPCkoJ=Ndqwy zY5{K;-e-C{pO1i4?}%b*H>5v*^%qB!LlfQmAVj6fF!=jR$|Il%7a7_T*B-v}-~cm+ z>ep@I?`W}}CLOyWa9WQ2D^15z09T=uk(K@#iOOmwQ1Js~VMdia&RzLD-?Pe@k`qHh zAqvYf2(PqRHCXzBzwF^+1DI9?7^ty&_VB)1qE z5?t%xb}#`N5VPV^x>fv|f-qHG{ThBLVZ_>-0WDyAe(`RxR+JOWA$jEc3(6^GRE%ZC zG|MDnTN!fgS+M%6sv~2iQ_Qk*6Jpv%j@7z%qw1sOsu||6;_igiAql}22^|sV8vSXj z@*|WAM-1c&M{%g-_AN4{Q-@-?Y)h)(3$4O`7yn`!Y?|S}z{mf^1)OXC zf$0Ch>wlw{{~2tdTsEcBX#$s^a}E3`{(tbsKe$1@Z06rX{*n0{XbNRB!T;Fie=*|) z@S2(8{;!`c;tpIDf$SQ&Qp%-s2J)qIhy4Fs3%RmIlnbY3g@26D ze<*X@|6@?j9a8^HAe*M(KlY!`(>M4Z^lu0`@`aQ6KMUs2?*4a*eq%3Nj;oq>`}Nvu zvp8{n5iu{pB}Q{L)soerpVUIJD$zBB$z1qQ+bOD$9w5Lp0=Pt-(>m2MX-t3-FYlR> zR%s8R^iR?MO2vFNj0u0g{JK0Vsc<=76%}p$tSlN!pdd#x_i36)Jw|k7N*%8m;H_DF z?&;e*mY@2%c4jf9?q8r0W!%M7KF$oIvnE>D&BAX2S0H}N~ z_9CUwQXZzmu2Ez`vj!uL#jw14r_{laB#$358MHaH82qJhbqgJTX2y!_75-GH+H^p~ zYdd|feEZ(rl6t-qf^J^krmz%zfWkA`=#fZmhyjL7e1og+Viy{i?@=X6YKvG^* z4GfW#;Um^Ij@brCc_wRQSw3xcZ-8S}2sI1 z9P6`TS$Yb^{@BN0xBlAAcxSbQvtFA@-bc%!v^?qrGX>+zsQod-vqc4fk9^I9ay|JX z%z4E`?p_Tvay>U`j*3L7`8H}QWWeiy#Aljgm^pG#xTH&tiFBcF9GUzk!7ZrMlU#MT z|IPDIlHH38V*gtSm=EZ!Zu5YVx-RTWK&}8+E77V1Do4*4JD-R}e~ZDZ!D4afC01;3 ztI)RzCkZ?*W+GvBNg6@>xB7zM<1_AhBEsnl;UfD1M)a)?Y7b)gC$6x-H0? z)-}xvWAjPb=qUEpC13G`yZh>^<0{PDj5|dh)I$I;yw}U|9?T%M=~JdaaqUIxkY#8? zPdzhDLPxS&#J>7S1(s_Nt0j!oPANjjd~vDAdxe6s-q~8P()j^A<}yh;Agmv<@;s`YN<)f3xz9#b2R*(kR(TDk|s`l;(GgF&Mf> zJ1f_0)#oa8ZD-t%RmC+G_Rt5z=kL*+KV+(K;IT>OsOy51Bs{c!1fOLmu>tpZ0ZWNuL6{0X#*NE#z zHh#3&Eu?RxWSc0-wW0DHg8`}b^%P^9i&A$38R%_|;=eF$(=}+I&S%BVqLK`dMh3_huDrc)(RVRA#y*Do<>zA4)4u*AeVKR zIp;Wll81vAcj0t0?B4cmNtR3qZ4iXXYGo0y%owr5UCXiS-oKvS02*e&%h8!Xd1slrPaM8Uv|XlZV(ji3u~IkeM4jbvd| zq+3l#Szer0a`hujoyvCzYnrU5GB!@Y97;EIfo8AqZ@@7;*)~Qypa!*`llbJ;y)Y6o zQogEgHU*?&UCMPdDcadA_G&CQ> z$Oj3}{HUkBaQ4(B6y$f|zY+AqkTg?Zk@Dz*N%v1vZbTkg5vB5R;UsRgBJxNu?Pb8SKtNk_XFi4h+I<*rpYE}0! zh2S248384Cq@x?DFJhNyWG{F$OI@R(PN!U4d83%Vq80Pm?k_O%(Lrv1caOZHjudlj z&J;w1DZxnQb7al&--g3M;D}-E%zRV-#-L$$6lyisRlJJq27(3j?&~^q%f6GnFs9N0 z;v-Zix6j&SGL*%Qt8Lz->ulfu4H^=aD2q7L{a2vPURs4Wa-}ac_T=%s&@J_cDr5Rb z#-}wcBA^AKf%~3B_VFmBh zPD@`KlC$bQSO5?r~zS@1PL~% zP?nD|(|Zm+$y$fU&U9;8mR(d2NLIfzBgjO4a!wugK z4-Kq6p57l{?~lEDDxiU3MwY%ET-sy@yy}%7bp+39XzxCwPn#tX*aKBEWvva2b^r8A zKQIB(8(M@orRI}Hu;)Rw#Z(ikHJG}&pcsz>wNb|!k7FR8{3B?l;xy~;2Hv5 z=55`qf=~%Nv#pR{WEm$QG>#)6%sPM$MYu?2q%b~BgJq66Bz+UJB;(IU z6^}nqv7;f|sJVJTK7cq>iOQ}%rS?hSmNonwE}M{C;@)*Px$(C5# zr{&XYPVMWv#3@Iz-^)d%{2Z;^L?U{%y-7y3pRcPT5iRs9xA^hc%jDUaEoR7gmM^v!qr}{CfyXx4n%13OXk^{P7ns(ixC|dws zCe+Kej-N2mT)zqB8h}HlIwF|&?kx*T{pve9j<3@4TWd<1dFS|po;{t*9M1}s1>y=V z2BnTqq%qFYbbCF=z>YHLsvB&SqTS9hueKL7FV82en#-#YOcr(lZ`p62fU%0wGuN5) zgvnHdz3(7|&d!A^=|uHI#)~p^d%%V1Rr51+#TBvK1M9Jjr;pVY#feU2b4#F? z4Pjn|X`8!+yZ@rFB2o_dBsfgJ(r_GJ-E39Np-(_CE}l*M-n%++MeRX$1GUk@z&n@dQ-OUjaKO zNvCo7r`R(%iSNyJL~a2#@X7?4tu{7V(pRucObf%WbUvfv8PMFUm@{C0`e}eO^LDvt z5O#fQ`GdcnPGjfOlHa{su!veyuVu+*ip(Z0uz#De-eVIag+p!KKWjGQ_hs*G)rQC} zSesalrbo6Z2hOEXSq2SqC5&Ffw9dRZPVF^cjc`fkN?A1Ircc9MVOui4f&TdVNC$XE z@`wCpl-gaY-b*vx*`(`wK*b1$vUZ>0WWj15yC#g@xElLImJnzE?X|OWy!VE zkIMYcqpJpq3s-n!*&7O6aj(ubo0pph1TW*;*Fu)c{C*{7P2uPxEL&Mio%2&(kiO5* zBbRJny`5P_;qY1=A=zs3V95T4v%|6^4r}+~+~`}9yVO5e@O#4GqgBmA*p4wVaO)XWhrNx zv;q;`AqI7{j(?=m@Dy|MCCq4VA7SLBNdEEKXOFZw_j;&~Y#xts*dMDV(18QRo zyW^eeGrHeouD4KwE<$6Pgb##9Et9UFu+z@zRiw1)_(U)<$3BodBhR=LYmW$jdSQ#q zqb@y!nP)4)8j+-XjiDaOK4DOdO=Rt2A$j^=+;oZJmM@S$FF#z9R*oduaORQB_%2{} z9X12)BcKyaRx`N;oL24aQ3$#8fpu7NNR1!bBT`!(PhgvzkxizsGxoMLdB~=uTwYs# zvQfzyx9h&3Ud$>Q)CCZLRKyPa1%K^EB>6Y&1~0MMox#ZSnDbS;iByxVC>GIo=c``ad|&eN{^&xZhx&e$2D;L@!smQp{h~++ z3y8l}{ivO#0PDEB1ari3w`>)8{v&M)I$AOG|PE zG9{hqLy9lcUnY`7Q9Kw~!$=vp))x$@C2-jHPi{Q{7Q3%(TeKjXvcCYw%Ug13)Bu>l8++g+9xVEA9U@Et zXdhuZ4yZM?Qj?2`xJ`Zkq$|B~@S^s07yzOo>2^z~L&WOlTNw^!(e051-8U(#&Pd=I zCVdci8THzBQen=IPkNqw=420mumM555R+nB7v0U}CXr)c{iR-znT(AeLqS2uhS7jr z-1LR7vj`D=^U&4pV_t$4eJnaqoh=w%G`eHACkBq3pVL(}IVlc!AguBRC`5J$;eR}YvJhiRw2sys zBzG~f-&>MmnE};QB*@Fu2YWO4(f@t&%A@X zZGiFJ5{&BVTS(~*d7y0)J&SG7xSriwB-TH`Pczb(+`vpBfViQXgqiXHiEZPYv<7d`tuit@6p|0vh&#R(H`CTE4(KbCtuqr716i z0o~M;u<}!Khb{@~ciHJkVI<+<+w0bPC|Rs^A#2>2W?wFfK0P<*Tie%q1vn;Fu$>S! zdxHh$t`7&Wznp+k%M18hyT8pWLz?MT+6*&*ZY(yNI}b>gc_yhq8-`b>1~L_0b!^YB zsb^D~1L>1okT*e=G%_nC?@^{Fr)$a3PtQ&i zs0TODfDtcb@;h{zIfm=ObJZMy$yY7PNoioy^5;`Et{gf= zDU&E7z76lZrU$9+uH{yCru+I7hYvI0s;(f$FQ%5jN zk3$V=?itXjvr}7fladq2c#hf!ssGK7e^NMb? zA1-bFJT`P(-@ytTJR%MXTxslzJP$BkP5Q{vSU`G&w$C{@4)#%-vTe6ArS^^hN z`xG>8Fcyjd#cx{zXNZE|L4BgoTuFM_Znl0^8wxGKtup$1l(=0KV8oiHC74~hnNoJ# z5lM*rYwZ<*kLAyF5AANZHc{yo78~wcH+BIZm-0pDKE5j~kih;Ttk6B57?1Xrj};g< z4}&3Hiy{5BlreENq2EG6`v0d7Ku zrPj5Wte(TUeG^I*_B`~~@Hp%tpDicqyeM}kTRW?3{*A&EGOK{cZ~|jUgC5v}up`?f z-%4{wmOF>~3P7bUl90_yVVkeC_Y3G{SGcQ+&s<%%Hj$Hq3!`@ymW@!8F9Bwij_f1F zeqX1H5zdr*h~1rq(XM4UQz9$XHe$%kCN%6T8_0Enppt@(!?lZ3y?T#i7xz6odvf=j zfQu7cHr1C=%mbdJYyaKOyVpcEu(fZ+m(=_&M$Xz2>D{oTm-8}*%4gU7c7*o#iu`Qz z=*OrrWO^$a5y^5#hQyalVAu-l4R;CjG3r4QBljW#w=!1a6w)kR4q|iK4op<1<13HM zkfJw>O7)KPaM7yM2Nd}8CE&fQ1zKGXX(igPCFM?XWzdwiXNj^*i?Vj6Pp>0?By(7$(^_5Lh)xMshaP)LH zS0_ymC=+fGQ0SoOPuC;BN$wOdlz^~6rU<-_sd^PAi>s*|}*SAwu z63sdDFfazyPoMr|Nt8f!ZHhlun=5TT6tpY$BeNSWG1Hp= zW{=-eXlE-r{0Sg~Dp~s{r^sv;x0x5o!CzJ`17U78*r&2fJuPLJVH=SdEMr3lz^Bz=mEi$=t!*PUBt_P8)XH2 z$wadGRX!LT34STAH}(;7@cy{H`KSzRUlO{#H>h%fkLiI#Q%PK!+ZNxPFrNGRUoti za81X#77*a`aALVeJZ1NFmjaDSq@=a`R82P2&7ieR%u1YUo91akVRa`=T4OWGuBHJ7 zcML52h#&%c&R&BM9zX=9 zM$}3#^?-bU*dnfg&zjxR@$GqS9XjB;9Ki^08O3(40pqW;#wicP@Vv=Z+TDisdX0O@ zj`cb1Th=5`Q`ANsQuuibJdsbQ=UEe~d2t?XWvlA-s|-^~SdEDC=L(K>@9P(R+~~zy zJLd~g_skm_-!?r1@!D#Oip>d29Y_>h;9dV+;~guA!!`Gqnp!ckUXLzaixMc z(G2jD&Wh#;L*zHU!UtFK>DI2sEE|>96`)(Ps2yDbY+HSs&xPs{HfkJ7Mu8Q#L~rVT zO1)X~YV|BS5jjm2Hrmf(X0aN@!LbWy0tlpARKS)ZifhO9?$IU7rrB)h5w#sY91*S3 zeUj~PYb7inQ{dV}#r21bj;LOl!4#m;9iKc?ozt5(XJebGhn!qNN>1N{wZk_S6R_PtVPT#`7z#C+NO|IstI6N@e`Q4A zTe5HUKj3KJVtj_!Acwm1?P7Q(vyzB+bP%iTDM2l_B>OQtH4LF{=B%I{Ymx`DE{o|- zL#Es7rkoYi9J-N9vM!SX!}vQu?qu3`8CEe1>F`X^4BXndW7Sm6N=?DKM=1W%a^~&s z8K}|96Yo6%=o9N%c55pVyFN+|@OqxhcL(I6qDI%5IVJuI6OQkc3g__075+Y7^D%bE zn_17is%AR5cZ|PUuU2BjX6+QIbDf3TCK_Ow2I9V-A85|8UNvk60)zb#uo#CDkZL)k zNK}Kq8*KGEx}WLZ(j6baU9VCVNA=X9)Y3+*m*V#O)Q1txz0HSgI~^4;;_*r(K5IkU z1u>me+8x5p|7Mw8%_JINb#qc&qvhxDF@<7}C;eNvBG@l`Uc6V@_D){&k~8btYOUu8 z=E>Nynz_bBT$$L|F02EuXJ>iR^Pth$1Ru|m!YoG@T8%uV5C6SCr4RnLG%{~$C7XN9 z-8-Vrw38FEl9c`(GE^4-wNDvyTDfi2GTs`yrX#_N4%tshIXbW`a(c)fe~@k z9*3i3vNdH#Rtdvm@HUp0&2NOoAQSwBahF4%pV=#;-Am639n7pD?2wco9^eKNVNFu^B*A?WBXJ%Qnjpo$;F*&O>8tT^HM((uLIv ztA1V|Sg9*)zj}qo`N=|lD4Cc1(C>!aW62RV+eAe9O#-x!J}GD~-COYD4wq^cCM}PC zPi+F)EcaW`kXeFk7#G3FP{7OkaH^u18jT6M_Cjk(rlSHcO|9X8;HoECzQ(=dTFhit zo8K`_c+KIo37jj7Kk=quJR|@EU87P`sJ#1N7fh;gjCw6f6Twd3LYqHFCVs~mRp3Yc zq)<+tX|42yV22(M>OIb}2mD0bB`#1_Sf`MIZ9`hC=T$(KeXX&4H&* zF={H&9{&t`c@2Xk_O^pV?vbNTXPRw@N8{}pq0z)$ZKA8~8|cA;RJYsB9KH7R0TNw? zfrBE(T?7=C^@6cRdE=^oJHcUL$PSZk<6K@H`&n@v`&}n{Uh>-L$R165hd$iYQ*=M=P+1Mj zb}y;f+fTij6k)6T*d)Ucm$4d(OHogbkr+ zcOy6-L$mH1nsVI5vH699gR!tJV=^@I!gZR8%N1Lsj%Nw_N*IN;$lb_&c`Qv@IWtQW z<{*a?`HmW%{tc8F+EI&+-@QA+JJwDMU5uXKEDI&ztIo+u#}k;cWV?0yYP)mNv)h7P zgLZQ4gOX&A)jB`e)~QnU^fw9KvgL@QD=-KRRXiI!C|lUnJI8>y7st}nWtHe!MJHvC z;&Z1m0!*PxBJ-)0p6q3He|AqObtrG6bk?!L{y>8(a&%2&bpykMPX<)uAFae)h@PM8J*U|S4 znKohRA2vT^l^5vNTP}R*80rkB=0JOG`YWXxU!DqmsUSMPzYJ$4KJU^#OVpk<8irzQ53Sizj&;FqpofRXk@Jd96%?8jdLQdln?Rlt47Ip#>4DmOfk=4@8tZCeWoC9I9x&R8# zY5&5ng9rD#8CT2)# zz+UytGw7X{&a(sxGs~ho8xMM@rKR_G`O9f1av_S>`@yV!bE(M}61T5xj}acl$gD@F zxkU(};$<3lXm&>}FkWKrehrjDhrUZjnDGVW&)3CNqVk3)HLT6Uwcy@d+vgwnY~-GJ zT3lJLNKSG*xYHx+*wr7TWw*A@{*EMlFjKQ&-a(_&V+JC-a&E1o(p)nB>D&mS+8Zy} z6p}3m#5!_)U+~mPq`j+jte-?f)w=tfxP`K!uuTG~6$pje@#!S!Nog60AE1vgO<6cP zz>m|PYTFEN>{iY0I!cx(yboVkq(PH2r|k5ZqDk(tc5p^_EK8}yhA1pLPprfQWz(Vg zozb)eSTl1ERmcHe1VN+rNpkOpz{Fmh?$_Z*{BmwlfGG9M*&V-HsWGw}wM1#QcK86< z9(&ghd&!gwYdBJl?<=2MK3FP0Dh<3{6so}Jv)E=e4iOX2@tXExeavNy*m5RwFt$QxhO%P<)%jCT2*9)4uUr%=gIMKmho$ra1it!WZGvl13C~^iZpBm~XaS^V?S<+;(XN=Jwuq4wjvC#u<#w%AW2 zWAR4xqw<*nS*?BLtD)s%>5&U?#r|F(7T^w&32_T75ejjaIKs%s{zpJg2`m-z=SnRZItW74 zAAlA;LhDysI8B?4<5PeSvO71Mf|@X9)Ot+qA?5RZnYkjGUfzR!x%qrOovT6HWusM< z>IR~C|5zoU+HrCPj3%wKtJdih;*!E*-=7g}xNgXI;sgbNl zVUVy@^-it_p~gUCOGyREMDK|STdH_kVLqc$h}trIsDarU%D^<(?8=WB~za zp0kau5rd%T;kbR;z_ehSB|vXZ;R1|d!g=@2I4lIzLW}cNlhz?4SaWzE5@!mEdbW`L zCbH6&3#lM!pLBX9*4`>pV}HY`-CrayrwOg=$|pH;$*zpCMw=te&2A&l%^s2;0Se;& z4^!_LC0Wx%jkayO+UB&UZDXcw+qP}nn6_=(n6_=(x1V|M_uc#BWJN~oj5_PYs`#)_op}!;_~RX*asxs@e$Gkmh`_8 zf~sTY6BvBgG4@{}gMWp(2bPG1x=SBnIdYTKg&eY45TWDuf-Xz+>C}KBsQXF`q@O{ z?2@1>mHzw;TR`d_IAgK1?=KmaRWVKWR36Oun<1)RQ*Eedo`C=ZfLp4p?| zzK&T4Gy7t^_e5Fey*)u$?k8>V&DKLdU7_4E|&@**bmWf{ET zNb-Y$E(_K7S=|Gu0vGzyaNF%;gaBb=yGo`8rzEA1_?o-!!YZo>S$c*ijAAZ=h-XM{ z&b9JWk+XOi4f_#*^aJk$Jb?BAH zn8!yiU%>xs!8o(uXZzQJA#_*p7nyq0s+vOfUU~vr#$~O*NvDBsh1Z1b5waYH+AdvW zkw`6`6&1G@u~x1{&OSD+JyL;)OP&ksADuN@k_8&9cbF~6l21kcM=F=yU6!t9QULEOW06e ze;lD=t?GB%@WSw0#{ej~JqsrDPS+TE^QMXkAx zpjpk%npQ#$serwRrXS9<&g(dwamUpnr59!ac(J=g%=c&pUi+j;xoB^jm89#dlbEjU zx4e9X)*>b7^ZZ>hj?_qXHe4=s`5LdgOfl+&b?2&m8$jaY1Crh!evbhE7LwmAaRR3`2M zNbAi&s?wrjnY~b0gzJ%GjbSduS#Us&%L2I#q-DiZ1?9+B|YZ&P*(rD?esh&3er;TL(C;a2C80n{|Q_8KljxDx3Ii{ee zJ8zAWztTIP9a|Vb?RtdyHkj|9fVK|4E)dL;&L3ufmv>;+i>~&yp$`AnG(fNU)Bh5f zY%s{Sr?-G|$C9zw7YEIK#6PiV4;el+L)wjZ{{~-$C>cfBI3*ybhn>*p7zkrP5@K4B zRgsALxaT(t`rp}>(hQl~+$l-geiG)isTmR4TpA^R&f_rJV~exgbgtnU?oDfr|1{M1 z^oy)sSztc{D(+870K6$C`&kQp(lTMIb7O+lG~P3?lwMe|(Yf|#v>lL<^uPy;KePOf zr_;MOX`VY^xu1lf7J#zeHrB4|s&{forwVRBq%?KIn3LHe*ATtMA+?~p9t-cGdd_qp zH!{WGbnp#ju1y&vS$kHk!B>)fG!K6Q+&hKxa=11!*`FQYUn>O03GO8wy$Q2n2OPvm zvSB9-5KvNwi^v#boCZ;AmiS7R<~g`wQlGH+Hx2w;+kv!AThGocuB}l$&w_1EfiK;A z#{UYmv(8j%D6lq{LahHZ_;Y%rv_QSSn)XLd3}n@vO4RK-aEf}}uMsp?9X_&gIH>`s zF}o>DbuT=w*H?JXGre_{Q~@?5L!A;Cts%t!tdiE!Z$ju#kX8Gx{?0MfDl zqBU&?6L^zz2F=0bD5tFDQosZ!Zwga=k0u&$8;JNUq%;XYp$p#gp4v_Oi3>OESHG+n zJ+7t+aQ18AK*Id`85$8H+G)tpG(+_qEw&s%7e$TyC*XV#!<}sF2FRl}NOaT%Z#e?g z!%ml>N3tOm2)rXAvOw@2HO#IKX122(@wUql&YIYI*DKd5tJkM{Snf`8+` z#Z9r_=ql|MJ%cjP+=*f2UKG`j_ip-WYLR1_Db( zU54!Mz_UuP_PMQc{^B8qk_~F3b)Ir80pc&Lwfj=ta{MC3CPhiSCa*(o43dU@rY8B) z)R;H7NIDkk!#x241K2%SH9EFRrn}%Yp@lyaY!~O-yBmya?Pwe#0EsSdavJ zJqDK4e#5RsVE;_Ie{NjKZKiJsGueL#0}AN>i#7mM16(6zzWs>h-(CY0*GSM9yMJJk ze|Bx!cOHTNZ^543w=MRH0(bE8wq8}vRz5oe#TS9t7~DLPbto&PCR+w`>31269}eU$ z?yhQPI+WS#Gj9sd1L_q!)3|LW@zX_Q#at7XU7Xk4T4?JCs;O;UN90MVkwHgG)04MC zHLf;1=}5x6c68|gTt~5DrK`_p{d-@|4;K@YNyo~np3DYuPFR~Znp3%)+vt8BJD@U( zMXC2eTK&7pi!~#|+F5p)2z1aoko#1b$EWHprkq+7N501_4nus{&D4)omyE-gP9K03 zGCl1zmcLaV-iO`ZzW4DEaxA}U$V+YXyL@|V+~-4YDzH`|VhZgojvnJ!o#_-3ImO@qyX#IJ947^ZJgkp-lRm#aAap5?y#6Qys75nL9sT z!!>xDqU&WxIiffJIktc0)@Qd+W;SRGCvTyW8K^N5b>N(A=`)iA`&mnBw`Wjhn7@kR zAsQmILt8X6`i~19x?gT$Z>hrt4@6NBP`iC>48~Uv>M>jwyw+H9(`@yyN|OVHm6dEL zl^wVMgD~G`a;`;t*Lv3M#oH5f3^-vtB>_Y4$o_IE0#uIC{FtU|A5zEFlc1@J^L4Js zguCMyIe9+67dwb2<4`B3QCjDfAo#%c!lng(WWenNgsx}XXswJZ*1@3Ly@~QZM<;XB z;5<-0Yj_2)+|M1D2t5&c`T~Xm1>G;b3>1N|Xr=P2oL2RJYVQr= zw`EF!!*~#tPE)lcsBPJn(rjD{(&)@Gi9Y>N)-mY_rjV`d+`3^pT+;i6kcO4g zz$wYesgAL0)P)-mP5=N*Ysh7WKQJ3pI+0KImI`1QABWn#Pstky=TBZH*=dNyw8TMf z-|5JnfY4dTnn&R2RXX^KY~(Z;a5*mpN>Z}&%4CDxCXmZ`>b3-guz9DfYmp(Y!)?_U z<2KQ&K7=(gV5;iREn`0fSg8$P6i1Q?lJTPFJ8dnS9eCar*e^f;!FRqO`YdSkt{6Y8 zS8rjH8o8C!+G+O2bYgFe^x!vDdb2C6-5`6r^lNM`ustV1QU*=bx_XveQdoVEm=4C& zRe*p#Vx|@S*5u{ny-B)>)i@T+D~Wj!nB{0AMNf^L(}7G(D_nbP`P%Tny+;*wCiOF0 z25y`&Dhh!+fgL)tF&$@m(%nagwGJ%*wI3Xp{(I_{Nv4P^0OE}=YeRjR)l60`weol+ z&ijDd-G{PxX_KZ!`W|@vN)TR!J1Gk*B*(G`0N=H;D>R9|V@wdBe;}<0v~Pk4?a|>n z5i#8nB{kxl%yKdg8(5(APR^{lB0PIB%noqdU$+zn8T;7XAVODB$i53pdmnLN-h8YN zPELjg01Z?0Ehowj5L4ZqyR3(7BGSwIe;Ad;|AJ?>>f@iaCVC?Pi~Hmu;7?bXvCsO zriNk!$7ni?x`USrK;(ijv9b-VMp?#>usE1l#L6L8R~qCqAK;ZsaQfkGy{1!h4(Dh@ z!DPpE7%n5#Ovm+pCfCe@rswzs|2Zm667EfD7s#-?LG8z*x7i0@5;kw2$2O1f=A|uN zAuAM(WDf@U#*>4WhvlqB5DygD&#vHY=uT9qMJw{SQ_w(;>Y)Fdz(8;+J5m(X%p8Sx z3;NjW7JJ#k{YRuUN5SrVPtMW}0CA;=Z_U(k7O)rp@u)+bTzLnN=vd8AfbNYvgo{8h zqHjhZuT-Wzeg=>M?7)!+PX@Yw26sL87rQ751zx`tudSWorv6mwnwod8qo<*7;Vkp> zuNH06<=!lo{{hJ(2|uwJnGw*9y^suD@+0*SM*A;uNPtS?9D3h?p`Mf)u=c^@hRg>M zk2={;gNMKEUz|TpgUiTxl870}i^f0zDi)uy0r*}lPE`UDNbSE9L7ASaS3o8I+QzS_ z@F4!KvIcH!AIQ{T^3qlFOlinjYWU$Dc$%=wK%@Noqb?Mu82UNKZA4sex{1qHLhkB8Dqf{q(-(g|W5I^4EVf(;U;+NUx zajl7NARWZ=1OuML+06*azkag(?i?$x>;05F5VnH^1d5KFyTVZE!9Rq+W3q#j;;dy3 zlqa4TsOxTrfJp-(E^%($w-UBx3X_r7C5t1L0#8sns9)~VZi3t!tb#>J+l@TQ8u~5w zQK=}DqooavFGW?)@T2g$)6t`wRyhp!fnbF^+4^O4&5Xab(6)AOvb?7JVDNtmO>Mx1 zHQ4R_^^m&9lu~a>1gPsNrrkHdpzq}zU?KauW~xl?!gfU~zFy39=+egpnk5gw?Wx~C zi)ii)ZhJ-j2+HiL5hGS1{!rMD=i+jegAj{%z7f?5A-umd%1yM6V_0qJj2+Wk&^e4h zj)BiRt=VPZfP3ggHPf*1MQ}}C$*+1^^2}5W2~IF2C>KTD+zxTviRlWwBk<&)w@`V> z16gEv6_weFr3qisdSX6onrqn~{mZs98-lxg5nW9|0Xflr>9YT<_Z-l5BbE2;{)SQ7 z>=&SM8cwg%?K8dw>>?0bnA2`>8Lo?le)Gz_-Bd?cP|GSGR9TLi{)&Usz=md?D7RgXdhJ{C9*;%P7Rn zRm$C_5!Mp;)BOD$1Y8fA2gH*_sZfl~pC+aOyO44Q6#{?LC`di5>1L74r02plLrN?c z2**3A(*~q3_MDXV&e;W?z7+x7eaj+XDI(s|mE0|#v2*w_Zz)&jFDw8eOUEGDG!^{j z8;@7~T;m()w8#r%1bZsX5-%kx8q+R>w)QXNo0RHArs?gT+iVV4qML))@x107xZG={ zfTh&5akH=2<-7{UX^!R=pz5xzNB_VVWA;9$RIq#c1&CDuLZ zDr`ASPy8_q?x>ICH^k2vzZBK?Sg)zuVauER?oL{+^Vf{}NZD=V4?NrVnCJDp?(pK( z)Dj$St_97+{+p62x5W^UI@7KeUajl68aEvGn^|Qz6AP)?ARZr}sEyY?TmMDGy^9yY zGZn{>+-iPmZUwtBz z{p08^j11kmA)SX7t)5R3nTvfIJ=dH%=g%Q6KEmfro#aM^2X0;hljz>S%4erb3**A?o!BY_QIiza`nK+^F|YE)D=Jo zs`2k-cEwSeCzrVONFH4)jPDN{&e{Nmg44^Jpm;e28i2>d%@+EDX;h~*1da$J-^Yb^ z?vHC520tCTVA}i=by_B3V&9YrfsifG-cO0L2KmhD2c~eC^pGoOV`F_bjHdVHB6~5*dhMqnKrPh>ZK|Cu`B$2_M8Z(T)?pKm*X&e9IlsQU`t9<}fZ1m$>e_2ZB zZt!My5&?rgMR(4uf61#i^sVrXqd3{%o#e+w0>z+y+Ghz_s;V3L%1<6kb#QduIP*&n zGs3JAa!1T*2Mqg3I_fUPw%_gkI9zjR(TklqDeFRIuKn?Eo5->_I5PBkyF3(IZ%y-LxzW|G zvZ<9CSCBdX2ANUuetR%dN=`ya9~eD}cC^P&>vp$uIG(c9@S>z?FJhamM$P~Uw_0Fc z(3D^WAgA-$(m!uTPMbNr69r|r{`Bs=4+gGCpD)f>NFMa|jxWnefjsQ|#_ zx%ccaf!_rg6YidgN9{UAP%Ih#0{A-W{(PI>*eGxE+#NsBN9`Q8huQ@8aPvBtMy;=7 z5!zTehJ@a9mG@`Qj`b0=ksicP|JD?TmrQj?Ksj9R;Kb}(ZwaJgr_vjnBwg~%GO?}c za1BsO)iFk&8?~kAn#0YD>S8`)>cqIM19_#;YO&A zEe^^>_8)3_M#Q1@5D(`LARfNo3z?Ol6wPmL<*k@Ag2BYyZ>~)NRvF6Z4hKeP2B$% zc`ioQMf!jM9#qa#HGM+N+FvZXbDx|;L(?JQ6XwFj4Phy29-Gg{4CZTJCzAdoomm0L zQkX~%J2AFcT5?2T;ucN8hvBe&>Trd|7qA$lwTQJYn;#m``YR+*A-l)p^UFBYHcJy`WrmSnw$%H2W{Z@CJ|6%H0PIv0&!?6uEDXIm#4jN2HajBhjJSAde*Cx}O;Zos zE2F=$48l1Z4=TejL(wk1T8;Y`CmXb`jrf|_OfZqy( zD*GNFZ4Hz8qtNCq5i#>(6#BPqctqAz0j@->m3J+h=a(aXisfiOQ-8rO;yE~8%E!D1 zug|7ue~uls_>N9yn9kPw$?d^tn1o6Bw9mt&O)ELC++Uk6x0i*{u&-Z)(##HU-yJKE zb=RcICSd$u>49tI?RoUUR3xvbv~w=VxW}1zh)Fx-wPa7Ag z8*HX)Fu@g@8C}e3zbs^2iY3L)nb|9M_kO1*=VexyT)G0aPvZ02M*R~xfTLy1bTTAt z2@GO+K3FyRbnYJb#Nb^~a?B$yAl?C|tx-)sHCf@cuqHoAOtRla}`@ z;qh8x#_OR)0Hy^3a~pw#taV!y1}B>LW`Cn-6paU5;*zE3Y@Igg3572y7|OLQ;g$|4S|+VM{AU}RDR6aGu7l? z6bP^Exz!Yhlz}9E(y38_k#L?af2?2!up#ck8~^}=UaK4 zw)DeUS>6Y>0spnn*i`e;+F{SoV` z=U^Jc@SfYfl{V$>)_Oza=I(=#2~0 z8rrzIXvDz-KUJZW{c8)ur2aZq$OxAope@mm-E!zls{`?W$03q?RzRb{81k_0$tu59 zBm4Hj&{3tE;S{hnK~TUGu>~^dq@gmGID^?O&N|0!oZC;I!(W z$P4-8LcF3V-D z^NMine0zgDxv@*;qvX~HNgn*Uf?6X&sU(2O7tBx?N34h%(l$=UQIQGr_#o5unSKmB zK#%D4hp7MF6q4^c+NkXe0YZ~ICuXR@Q>52bO?s&sosH^}vZ}pd>Ke>4C*7HNp^3b; zylLLN&Z`%7K5K6`gzr`hX>pIaRg+}&v ze67eR)i6LaJtA*&)tI-v8zWP^G)S5%Ns*T>)L+D=tt?ljphwm<&hAfh6;8mZ7MkE! z;0+Ig04%c%BdV>L$ydjsrN7?+bld#Ld~opVrQ0XFV>rdd=`9Fz`HZDRxauhuDqYvL z8Yk&C(77Xr=a589M#XhI99sK1tiAXMe>tky9bjk+w*7SAM3IOhH!VSxFPE{?l_QN5 zX`YL$F5m*u@LJ^Nv<#9l>E$mm*Oa>!Ep3fuF&2qrquhiAe*)Fg z)F$6D76M$+PpPrZlcpG@#(_jkX~ZZ5I1co)t{7~b*Fi|@V5?}$IqCmXIBH_ld*D1- zcm&}}DKf<2{&Gt8<<`xPyGEnT^Me=Pw+^4Pt-4C8Vz&9sOurNEhXJ7-qT{%;t|brC6!CZ`NimFJtyOh>)0EOe8ZUo#s970VX)Qo}M@dk24;A+`H8CC(~cT1B1BQb=wXzAE}G_) zw?pjETKBIM-2g!&srF__Dg?9nZ&hrdxMl2su2Ivk2YBn;jS|e3{2j4w?>A-*z&#zI zLt%mvH0~(AiFuD@V~c2P*}xd#@FtQ}V7%P??Gza8>@QE9vtN(QXdpMgv3R!W605Rt zlBO2&{J{`*M_+lT#jI=alT#r8T^B;}d+_9m{{3T9lqseW;?5QfGAU_gkZQ;K44vcS zk})h2D2Osa$0jQx8miE}T3!cwknlc+qmNzG)A{?ElNmgu=1L`%Z3dAHrUutDd&RiH z8l^n`w7~+b)seDB{^ofqw2jk>Zk0SPRuBr)zI+j?jl4brPk-J)TkdrbSgy+Lsg##ba5?CL^IT#BqRX($<=z{7?H- z4K5VXiP5{?fCoXN9mPN;fZtf3VpteKbDHN?LTlo<-*JX2BAy)L`Qy#-O28_qAVi?~ z${;xQJ=9dyOqrp2nt8wc9PU2?+2-ejP*VLHh+9H^JdH@u(X2}nV%E0xrWysbIyZvd zsm3(u`;RkCB}*D0-I9%ibbRgj&VXBf7R0mgf#uX_T228By7N}ln0vZ}r8 zN;)%)0G_k@>$Hp{=`r}-(zLn4xLMwtL{Akz&aE&Z%ONyy1%FXe)E@1&6jzAvSG7{$ z?d(}YWu>$2Hi#L4-{ez}=o&2UdWi$gPRi!Fq>4rHuB@%fiY{mT)G`R9YTYB#t6DAi zGKY>wTRSQuEF($`@Na4d7tBKw{vpGYj&rrwn?>g4g5iZ0HB2eM77Eh4it+=}QI_C> zK~Z3tSc&_DsaA>mvUrJm?*FC<@()l-G4c<#OIT$Dd8f!_1PEh-3k77;MW;LKNP-ov zz$fp*sx(nmwM}sO_BELWE7=x|xE7rc1`y3q;3#745gco)T-Pb%DLUR}XTX=Y{@o`u z*ZDd=2P`mwfTo$9A6zM{6)6i#W?<@`3ufnQa-Bq)SHBovhzAvcbca{-4((0(H^Vkb zn@l^YNz}3135z1V3Ml6hGgZ)G{R8n{P16BXB=& zZb6_|PYoi6SRb$MKerxWM$2FsGP3V~pcS&d?D(<1V^!=tF^NKDD37hhp7k?`xxWxHoIn#%UT~l zEFX_eR6%WtdetIB&MY6cnaR;CG`<-;6Yh`gNP5_laDEvWH`AUy`ktF)=keo`H?tN5k0R4+_|{}70wb_9bA&3E<-23-FY{?xU-*ZL~vag{Mc5?N}6NB7GupG zll5Yr7NRS!=6X+D*;~z{Y$xN_;O>Xwj|L$FGV6!twu*W4NArCSKo4Dfk)Ovoz9fXB z(tkL%*!2B-1Cy;-Mn%F1oBj8dpEs8vC&?xU3MzJ}=bJeu00aIXbF5&PuLh(LqUyTv zmn$BKs_R^-E{--as{~}(js%12288||r!2XSDs1eK;%!qFZ2Wd`QT2vhtbr~E|GNR= z_r=K{4a5z^2~z~RZ`!1^j37ttMIy`}y{@Ls1p@>LL%+?COnl7G58?S@THOPRRJ{#~ zWCH|-G(Fo7Kmr~>!~!0`kL6eIXvLB10jnI_*j0UW3u%C>f(V&J3VpS6zp!&UwySVH z)4JdFmegu@MSL09%BA$Bf92ayS+V<_C|`!r!<^FwUY{w)>-e6y-! z8nILZ*?f>C)&@0e%u6@p!;a1~5|~d<$WEC|if?sc>WAPWsa53>wk5ccWjOiQU+*Eh zF22qB{8=4OJWH(RQWA3>`hwk9BYE~QX6W#K;XVnvU>RtfybC)i$0&?-lNpDxG;JiX zCpsXEgjr-0Mi2-n_5ypW-3>DeP<}dRBucul)6%V=kmu&6Dp6(mNmD zv@U8^g=e6v<{()-##y;1xDTElmlvOQA$2kjuZF+WSA!LCO*NMTwP;JK;Fc%0ym<$z zwUe%@jRV}1MUA$GAk&;k_08*k`OGY%43Hn*0cQcfNhB*BW)xJ13K{Y9`j$tCa4aZj z4gx=1b#H-slfSs;VJSGKjsB?U#^b;q9_BAiVVF~S6b{nwo0)84diKNes8^^_UC>_J z#y!5NLwrKgbiR&+OdnvonKUvgDC9Ra)XkiQ1MWd20T6{GCF?(7uYe1r_*)xgO$cA> zi>jYsc&|XFKad1j`H#Gx*gDQFo+-laOgnl|FjaRW|G@7(1_0&+RQ#)XsCYoGUzY^f zkC6LSAk|R0S0jGI*EDGeG#vm^TBky^ujG%9WZ944KQ#k*EoSN$BhE zU1|W>VXYbTgn`x#*!ctE=>rQw49Fo5MC_9);U>K=ruyaUD^AB6*jC$4hP!V&!SxTP z8EbgQvqi;8t1{r`Db-SUPo+kfW@qD*`8eMu?eJd&+4s@?Y3#zlJ@K| zmO``$=@AA7yAgJG^L{a`M9?|HbnPKO>Pru)4H_3sRZAIth`^h_>hmgCd1nA z|A&og=CCdrf9!c!%`YEqYUY33p7CSLTxW)q&Ve@0la%c0k~;)q11JM4&rch#kVE_H zsj>pJgc@y%mvUTbr)HU-h~{jhqN0M^@q0&a%H$UmP3=Kox3j{gN)^k)Bq?KOr+8&vFJ zopB8PjJ_dntKP#}qWc+b$At9_sW|@6Tl)`?g7&}FD&GnF^8eoj-yu!yZwH+hm{jWv z&r@4*lXAJhviDC+yxrfn#YKjre?t|^J@b+^mObXGMRnT9HG#Y<2|+-2FhSqr zyIdDR*^P+E4wBV?-4cG@W{m5cVp}rDb44&~?$uAAlbN4<@QpI0*d~xqsOAm z7L6^io`1~v;X@NmhX;Xn-T;M$G(5WqV$zd31Y}+N)Vodis_7PeV^b=+)6?26boX#2 ziqaV8`8$q^2mA~7?QAQ9cBN@)6zr|YBb3p~1Pd%5b1kbF^TM?R*9IO8H3GdI(2GxjiDO8FAHFXObPp!PaWb1Fj0jjsp5uv?m~;MtVtQJZ>-I*pdB~@bhL|50o{42YXOp% z{|Zj8V)~P-wu2svT_X%r%qkL_5(J-k}= zAuA>5hD!r`A$B)VF9`Y=B!a}&b!OFh`Qy=UkML%~x}pRH92Fa<8AZd6yviM60w~txij}WGCagy-M z^UygpcolK=#054T1CuNeC-f=N@Ruo@^EA6r1Ml|fD0oNd9Qe(|i){2^uHuXNGcl@4 zVhER5f=z+rU@3Tp!rlBJk_=AwuYs4df7Q zp%eujyT2uI5J@By!iJ~oeV9qMWD>z8p;%Ds)SJ;hvJbGVZ5ZGL1G~li=FXKvcndfI zI7#`E7io;trP`sM!<_zE+UuIWo7txJcza;cEiTWgYIDekpn~(Fe-M;hm(TBW5!4_r z<7RfBVPENKwLc!FmYM*1p5rM&GcPWGEr>774-rI*(=O4_=QD+c_x$)yVa)M~U*}Q5 zEDr^C*C3Nz&?=ZSF=hveH%%btk|*%jZe|JR8<0vKeZajBZjEXfgC`&p9uo;}>ZQms zBck$t0jG}DKQpsgqru5G#8az>1|!oapJvq5Or~o|>YjTI558;=5+RWu>Sut*2rnSb zkCP0;%p$XQUi7JSwz5g-EzEVW8iFZhCd;_BFGTZg%$Ro@)k`nEO&L=)G>PbEtd*~}B)7F7BlsTY#5snFbp)5l z7zMhKqdK~J6JK4pwo&u@m)(@kp_(%5{}u__g{E(NW<_qd2h1?OpL1_;+|7hl<8!w9 zh6N3+moW?&S&vpGLJJ~WqdQwHti~DgDko*F_VAOmzlStqr?_D9GQ5?h`QeH{V@B=a zc~g_M#Rq9{H>qu%M&qmRxUfUraX0kI5%8nW84gsEc2(n@#Q>qJIK5**$X6Pcq1YkY zX%-~dA#03e2*zG$lpHZtfR`m6Re-=E1DG_etTR0ozPYJPOjNKNa0y?HKhWq3HFP zE%0L&vckJq7ipXNr10@^5A(X9FWZTpLphM)4o_a0tpNt;<-FI4z#~TB8GFanzrg?{ zKgN9-ukxv{+OCc%a&3HGs=;BE4V@oZr$dT6J-sdhYW^eCkU8+p&re-YtbL&I%O+_< zVDhHiz}Rq?sY-M550|kL7kSa&zLdax7#%V2H$5w``n0O)FODG!J09W}^<&J%ZM^BD z9po7fs!Y2>J00Nc`p+BB@Egyakv`Oaqt}= zVm@*yNKdP4l$=&uE@Qh>X|pI5NOhScAFwc`?N*28bsGwMqqR#6-?eb zF_B0Z^%d|?z^;I<(p{1T$h^qG_^i(5q$UJCWuyZ(s5&O5MRjo{;pYdG?V+&hAy*|- zA?V(P-@ND@*&2MLU6sjffmE-(;h87Pw(oAb1yPs#%c(nvdYwCipucJJK=YG!o!m|r z9HDtrUDq5(C$?e{`82ypehM%1`m}X+wgJzD1-NZHmFgs;=kJ8VqIIPi!EVN=5R^;+ z%fdjEEQ$5|xr;iE56J(KpZH_pL(h)6}ruoYHSrkn^&1vXd!tG0~ z%{07$3`PbSjvOPY)C(`f8##c^DqY$dK8Y|}vJ7FMj*p!nHy=XoQ0C;0e}9Zd{!VP7 z2xlI0xcO4EmB%j84n04o(8gF+_&z0%$Q3nr$#ndBdy1{w78-AF05(3;QKiXlVkcni zq(`@Pg2i>7m`)!EB|j8{-Ic)U zr?Q{oMuiaMMSGT$R%~EI_cx*lMXEzxsg7$~61%<~zBly}=HkQgsr9x3t4SyBtklJO z2)cRvVQipA^GY^a!l-YrYHG9iH+J&R5r`P@I3Nu7Fme^kx)A}35ot+?^uc&T9 zsl51zDOtjQN$n$3@$ct>QwskW6`vqcuA{F}VrvM8u(4=!B=$>J9_lXw*lNrAaeQ$4 z86CLw4BD9j5KPNA^JHJJDib)6Qv;8cqe8ABRL0PJ_DQ6ldirl_oiRw6gg=ONY_G#r z<5;KbbAB`(s3D^iVbHI7&G2W^&AQdu_jZi?^e@H)_!we$|EA$RSl^vlLkh^~{Shs< znUlx6t$~DB2&gp}2-igqT6||-wt9gLsi*{@qeYAs{7q!IKdhKJ2O=ojxBkMz&JU=X zUhyUEiWngh85k6fUbJ%M&x-FUM?mge{jxclT%$u2aB?Hgze~^q~y1Yf`JVjtG}~q6R;B;;MTGYP2~;uMxsxz-`(eQG89LLf+&N+c58j!(28zFk76s~T?71RvBwrjb zuna){;`c#w%)jgXI){w$K1#yT8J0^nca$~&q{|Qc3NhHVi`bZzTLn|n-)Es99&8gN z0kYjt{L!KimKeB9$(H3r@EHd4Rn?hK(5SV620Fa+RQVM$Zm4-<33!k=-$z`rR5wpI zag3+0$B2K|U#C;AUXb85hH!@lAU%V*#aBu-^yV4_88}Qy5?%qY-wdl%v{BRvK1MIl zhqin+NaXR~NctfNJ`c(%b7prKRolMo-QRoHGDDpIf|hm;K`Cd z>nQH~yanvsGX%`uU)!z%A}NIKJsGoPXWr=URWNG}kCsSCv|zRJYtOvBqox-S1F%>3 zAUq5^za|($J6YWR&Jy4)S#}6^#Wz+;IZ@^M$XBEazZn-PtS1vG&V1$aVcFgD@lS{J z_vRISX(c+H@I@iJ8`@fk8p7HFTl=SxaEu##@@L0&$B}lxy-)0g59^1?Vu+h_qBQh* zfVDp@o>uPFt8!X8Ojqk$4kD$MGJ%FtMt|7~PvGX$zk1m80wLQtM21|55~B5c`y{My zwCZ@*<$F+LaI5N(HoauCxb+5u0`vPzjGzq~9?N3wKC7Vy!UyD(gaEq-E^wQHK4Y?} z`WnP9DD9GJ4s0XLFwIE6O{=HheMMTHHvJ;|dKeZ;`+5?a&pZ6$qNL`%5#4T@j>@B7 zqpdvY?v<#C|3swVe9ehu{kX~}lsHV^5J&X`5)P%@sg@|^7Ba-TR(tUqu}^1xzmaly zotC&uvig21*EM`eCq9h$Q7j);(Xr{7u8fp-rZ z9drEX@+d_)(7w1xD{5_is+4xfYCQ;Al9|3_D{5Hb&Q~ru8tw}lb*f->;K4jP=}~d} z-2!2b?oVPXhV+940SQYpP70Oz$QTEY0k_#X3q?Y-O&D1@|uMPR4~Bf@I_ zv4FW9(SKU({#))n7h8W_(ZbKWCeCQvGYlWlW?G~m?>i!ToSCO>Vb^fH8P*v?DzkmHlUd}3`) zh5BRKkb3J2@h!xw@@qw;bli@zo|A|sPtaMRl5{=_NtpTJc*KElLB)!U9buZ>^d?@T zwWKIeq(CYoS)MCtV-8TA?Xg%tm-?xZ3ZyjZBee4gSo^|5D1QC)!TiJXVUuwk21gtQ z(uJzvl1&d0@vV#7O^D0gqL=B5PF^$w~>2#1wDn;Z&66oD9{s>tudzpO4B z{)`T5{?c2*6aDgwWKU>1y7ZXLxnq8GoF9KA3Dd8XX8$eFM=fT@X1G}e*f3du?@`F) zU{=VSyk<0B0n!P-Yd|Z6FZZlP%M4{MfssIzB_vMr`{W@}SxwUX+B`CYk28mazMQ(h zyI*YSW82V?3mVwI$#-A9x*St0KEyXy@^@eOXxTQvWF{4#ELrz$nO(dNAxo(j=t@A9 z`^bl9fnj*qy0?LBNY_aP#@F1+^4wIWE+TJ99P*T1fC2lqnUTh=*W-u ziPxM5zqB+H{e2M3iEJF>;4O4_55tbjlx{$b*a5m|fL%ApkgmU~ z7&^|pIbr`5O?hNlUL>`=A9ep2^;QHtwi)FglD)@$Np~@0fM%Y|un$zWF7$QRt#S*} zA+gaz0HBPvr@f>|oLgbyM2`{lvH!AWt%-jfNt$}ojVb=z!zhZLqQCW9_?FeWW8 z(Q-NI=RPN5^iwdzJ2waedut~Wt4n$eq8?7x4e2QsLpV*UE_vAE(WDp3TCV|cVs9Oy zuDK$s49*{*^$ny?6g;@1!r;-7l zgw$OFkCWG$lE9QVQ@@9|w;z4W{UT~^spZl^!!*;kSq7xrD9S{NZ7m%f2}es&hucwK zg{PPY+EthX`bWN9ZuUUH*vL|7T0yRmvx1+JvOpK!FhROnBw`F1W0pI-d2!aw!@je<0Zm z)0ZM=h>|&yp(Cz0;>R&rc}mcn;WhsWb3c~{V7^Mw_kEsifNiueLxj&T`WFD;=)FH8 zwj;yE=E%x0896&<#fLbya=O2FrC{`B>&E)Kbq%Zne+-)?TL)m=;vftM_u z_aFvFDv~6u6K-xqx63R(xzTgtc`siB7#&1f;`|;(&~&fDTNRT`OB>q9EfEp3@Zn~{9dGyygiD*h5lT5&_>|GBqS^mXa zCzL}!m?VYN*%wH69Jz{k5hjjRXuu_ISBzj}h4Xx*_cS56ah`V^C#i8&{@B*iR^+2a zhk(_5I#xs^HH~QWeg6x8(!;TrT8)xvJUZ^;K9)tBRhStYi_L$XgZ4-5M}Ct3s6D}p z^0~ES-)^a;|HT&>psesrBwT{kTM(g2=;*%*`|tjAIFaxF2Zs}_|J_9q^uKgo5mWCy z40#))pV9?z71+n=^b3mNO{sp%Rm@DOy0pGrr@GwoxCi~gI3{18ed{SOai z`kx$5wExd8N=nRc1T)R&MoX6+l_vDxYV-d~jrfm~ac=*In2?(Ow_nupKiIb4qnD$y zSWqKQh{99kx%;Y1zSN`t!qafAHmc}g~|{>{^~Hqm}yCNNCaLDmdWC;>7n(lI!D0g;Vxi1#A&ocb0GEAQg<(NHtmn5+vKo zvZAbVemydz;d2vrjgs+yVl$ib_iwNENlOL)hhVQV{~wR0TK}_)(kSdutsnqk3V7!Q zkJRtq0$(I)OHj2zzv>3zqGv4@p|il*z5+9ahanvq`!UYG#Ok1ruM?8ecb?(J>~pDY zf#Ouy4hODJDJH~aA5!`>3*yvfG#%TOyGhsaSlTW>I z!R?Tp>I}r=a$2Su-Tg=+2^F7*>EXhBh|>P1?UGgvgT)!5&*XuED$o;7QejvNS#`lt z!~FstZiG^4(>>-J1t+F}%gpF}v2a9+w`aF>hj$)BH%@J$0XPCi-$5Jz)+`q+DFX-H zLiK5@UEW$C9}FP#*W#yVy5v}wsE+oGH>IGHU z`PPf75Mup>RRUuD#f7DHd0^$E0IEYQxfNqe!=GgSD}hbodCTAK*r-x1|E-_%l`mEL z|9)QoKc4jU{ogLiM)SWGoEs!R4f;^Z90?*(sWS-;6jPSQQA*30Bg?wJ7mB8uCt%FA z&hU~X-<@J5x2;_{{^Ui;|JStlmP?iWM}L~*|HJ9wSo8lKlpLFSbNSF;;&yBP$8!Kh>zqa5-JzXk_lK!vHj!)m8b(i*L+NiYu9Ow7{f%gC3NqJ$sw|w``iDI1P=NuLRr1|@q z9mx=#|HJj8*z&x87`7X-sI??J+>(79!&kT#fl+)Kgv@eSM?_f!ZWok1#I(kg^i=ru z+th}~6qI;|<=d+I4i;C8IE1)hb1knF7n%McPOE1ZG=5Q#ts&m7by}LF~+e;BzGY>fO1%k+*hs09B;){*hyyh|$6PtL6QJ@=Bv@i*MaU`7azjkAhB1`t>rZA2X$6}*F$ zd>xjep+mu$#w}`$RY4z!ib+cSB(S*nNeT&nWrHon5)um;?j8P=BKGKdo-uO_i-ns2 z9cL0T!wc4}bMlb{74>RGGN)neBL{0pJHYum2lxZ@b_Gr;53E57k2Pz%5j0AYuj6Jh zqyRO6!O{Hdc&q9f$6gc|kN1vmSQO3$WsQK!)#c6Y*(qQEpB!JELsu=scR={H!Y5)T z0yPmsO%X?R8B*{W9!cXa43;eMJDRi%6KrIN6+J zql18e6d)o2qkteRd74_^mmhoxA53`!TB=Y1DB44x0v%!|<@hxxHA}vOc>sM5 z{pXrIx%!aOI--Xh9ndA*>31ic3do2Yg7Aq4{vJQ610RjyTeku}*kNO32H_TbL%*VVZlE~`h~8~DFvITo=*IWblpxTdJ4<3dxdx)YrMerRy7S-B-$12Z(g|2C}SOidOJaq%)#uhY120hGVPR>)oRr zzxU7J;mP9j%@BC?ey|*o=a^vX>%{&3)35_=x!s zc;=v!`#|I=c`zc2VDF_hpZko77`Yk>4wL(sXA?b)cCN0HW#j;hm z;eh^g>BiB|kp6Aoe{gNr0$;lx8W@r58%E;NB####&ri>fMFc;xUhW%+<5|W(2wd~C z^Yo8Q(?D@xns5=dBYvY%Pgiu$6sYCfH z+5b5AZz1PA^OL;3{Q1+(*~#_Ut(+RXAm?`KJ&HCaMdED&Rq~(A3QlHP)F#8}!}(6o z;F?KWzB#)-KmGL6+41SwwTuLKlEX2_wat6P@}2Ni(f3!^XFs0*N6Ggj%t-b<(NlrAC?ZE@1?XRWEzrknY+ z=*%ft#DQLUKJaJ#NH8h9P}&pnjdM#oT@6PCE$x*xzjgYr;Qt$m1W>{Mhf~4-pVw+i?%1oS!?P|e3y38))=w&tFd6V3s zasJ7Q?&&Fu1!YhKCb-H16OjENYmfcpLnGv39h5~&;4rRi8!wHlZT52)ZBw#14VD%* zFBA-E)2Ca;gvobYf=~vaC~;{a7A(9_h65$V%ApVhm=po|=`JQk5QSt+Ho82XJ^n_; z{=bn(5LNy^!@T|1cyg%izjjeRoWEhAsid>d8=`tb8}?`OH(2{vGrUJQ^P6K2LK^N7 zVt7N>&Yr-x-UuN9_XI+IlkQ^V@t#0jZ?yhtSEU~PuNMiTivGdpQ>OpJiH`rZi&7H* zfvIqM_*bU3=}E`=J+{|z8lzkyK`uc^Z-E{z(ejEcI{=aP|7S;WQHH38PQQn?r{1u~ zOg#&csRL$I2{cUg|?_@!*A++z(ssfID5 zNlB!S!5uOG^#lwT z|C52v|GSe?JO8JY;nOhWQ#?Jy9~u9{awmd&I{8bmGD$z`J+MoA(yZ|wt-CD2B4IUX zIijbZmclER3#IqnOKPvs6L0GC_k3(6fA=!I(qPsHmTi9uo&QdpDE>s$lbqea7xOL% zAFa@Kn0691%k-U+Q+(p9ZVAO(5M~O)=ZO%r*$A0Nvm6n(CnT>8pJkHTJ;>=%8_a(( z{il)O&<_xXVCvh&fvckbz7YS7o&QHV{@V^pjrk{m0oQ1w#r%(_lS4iKJ1E)we?}BO zGeIF5LcYY18UV4Uh_$zk0#Pyl!|8OG%l~~i*7twAD9Zi6%s`x95NWswR4sJpkx4Uc z2B8_bwllZFR2uk=Zm9b=v3;4u`$y>$^bB7p>_c|3QWF>4beh$u2T>=?T+3j4_`2I? zP659ku!es`)t{l+TkMnlBLaH{fn+v;L41c}(i9_ckhPHN6NHA*3*u@aJw?xncQoKM zcXEKmxPP+b|N*=d$sRR~sR&CR6NNQRr>BQ4CW- zM$(lhG(jvNHbiT~e*b+a@Bh0fE&V^_Wg(q} zvAt}rj@na1%nz%GaHs|*yO{7eLh%F`#Zd4&S+@a&N-$a0Ki7x*MMSLFmySzu8U~Pi z)k*MGNi+{FIE{0$2zl=pl_x;~Rw_rC!qF$Cma~S${mOyyUK{6k7eRbQqC=&%z*HJ` zCgbn>-5jj_%oWiJ7gF4wjtOVYd$=hAmB*XcWNSzTO)mda9g}d=Pj47=xBsG9KpLa9IFvZf0N>sS z0sn}QkdV}YON|antqiJQlv@NqJmA33n+Fu2<7UF>Tk!QFe->hC?vj zd}B5a@EG`^vp}*_SRRKR?Sn2_M6SP}d$;Hjf$J=jxU|N4_8HC>bk1}$+Yjz{HsL1P z1zjZeaewkJvlC?Qcl||EjwT6BP1fQQ5|`)q1(PpjuC9NnpQBy?Rhaf;qikYxxk2)W zj=E-nxi7aFUYj)bZN-%5`n2Pa@}%XjEtq`qc&y8!I9?=jp6YZ7#d#mdpH!DjLhfS2 zdHPYZvaK!0oF@bJHAS1>;J`n(pjS{D%l|~|YIFjqy#GCv{r`sjvA+M?NhuH&aL}n5 zJNI*=ugjXH1^qX+2&|(2$ym1k81|3f6ta>u7%O zh}Lgq+H{5S9D&c2!R6+1sm@r|7Mlup=QI4ZZ4qu&^IciZ2h-M@6mT z>aFh+s{-YfV!h7&UlFj%`#<6Gi=k+s<@19awJ(h|x4(Rf{@dHneT6@|I=;F2EY||)3RIrHVYuNw;=U1H0lfd z>rBHmq3gCAa?g4XR@n29=#M|{$rY4>e7R5z z<@rT(8Q0@??=FA&boT!0_CHHd7B2WyU`~&3kAFD6QJ-Ki;+zSnTGqE`rPBUr)Ss>; z?F$c0gUH;7ZQt+9Z_Ih_5gv8JJT<=iP3-XRhM5>)5X6SLV()~JM-?2Sb946Y?Bv!M zba==WM~R#WFNpWCyL5si&R(u_1X+J<@Xf6OUdNRKQaJ>pl4DHi7-VBtWZYTID-6N# zQ=tAm9%e1Zvw~d$NosyfvQM3OmMhTw93EWczJKlwPM6ZsME+YnG`0LBrRw}Q%*lU) zDa3@(^56E0^89zDqV)xoN_%AytW%eILL36pX5Pgwgo^Tv3AWN$?A z`i$cEO-3^}o~H{*V6bYx>_oX{G;NNAFWh>&u;ti?zP&bX`~PtIs2fQjh)< zx3%*3FV*?~#{E%_{wLF^rvDw3we-Js$0qy|Mw^P_`jo}KL72aY{CB*k<=P~zm5ENTYB$o*kuxRc)PBWFru4wk%SGonQP>q zomGC5r8fUxBNBAA{Z}sk(_tU%z_!w3UHH=K{NGOQuXXZIMYiH|e=74eaLG`h_1q)> zb(Bi_-#`NB3i=;TruqC&Q=R{5Cq}127ZE>^G5OGAg_TR-Uv5}7o236D4WigH&MC8`#*ZuK!xXsw<-t#j>Cwf}D- z0d$r8-_ON=9ZdQI?fm z_U^J;8_xm#+ynHDmn!-%J#*A-qw4-=IFRpuhW*K**8lCIG|vAbE{N3NkH&bug}1l# zC0-*&nh}I=3I{jsJq$Q`{BOam)XNnvm+d|$jNH?#dl(J>60jMd|PV&l+{ywANZr3D@rd|#XPVc{(pD% zl=ovX@u->+qUJZ#vH1SC-%R7tjqi=_PmovRDm`vVy@Gn7=`bc2knph45ftsZ!7^|<@ry@|3>nE4JTur|7{1Q z&iuQxrAeJKr~uGx8MK)H!|`yU=YI#K*8H!T0J6pWPX_3jp8xHa-28`jL?r*rdIlb@ zqXDRr|IrB`H~$b5M$7-(FQWZ#K1~3U(Pu~?PfrGTxm?o=!qYTIfa0LQSzig!nln#9 z+s5Bo-c{)ONEST-XG5PFX8rBv@`6}}c1Z;NE_g(fgamS>kl!JdHA-ruk|`^?fH zLPr&UAp=Xb^*9PPf_95=L@g}&JBj0k!vV5MwCn{jx{_?p9>mgn0npU9cmH z4bPI9xr{;_()~cmBfRDnvVElH1dg)JWA@STRQJ3c^#r%I0mLH^4>VF4g1^?IgKf5TE_8$r{V2_V}&p#!)q4Ysh zlY-|Si$7y2rhmm0w``+I{u_-)Ir<+DwEfpE%J$?xEQMNwAH?7fi4f6Rl{$cC)3J z|BIXXI&D<(|3N>;|Hq?|zW>`r*&hEV-d5i%>;I#$TYPmXaoRY2#+YpC8mIZ|pQ|YO z|Hf|qNNJ=0?+^9;-!2L_|99Bkz+Z4Oz$SM8s`;NzhW(uWe>~9f-*-~}7XSeN|LlF+ zcHB6U;6Cdsc(Qtq>>e@i7fG|88I`PZYs->#B)Pk1d-}MTBr=mNCYeJrC97)uyzl#o z`z0F@xDX(j7p0_>?INqXOGyHO01y#~2m}JpvHllU#6v5b2l<3S+TorwiUQf-p;c?u z>8dEcg!-X~PL!8F*9DnAjb<^A18u$jc=>(uV9{X1zSZ{F-;s>A!;*ClENeOVWH z8atzr?`qZG^7txP&a*EZ5cZNEQ7J{!37z=#xY9NUQB*OnYM8e>0|k^&>!<{%F48^qfFaE_M@H#~OB0?;IUoA3;|M`-H( zpw!r14Y3?^@P{a4;V}OUUo99uM^xkJW}}I(a1bs}uC7&z2pVy7h-q-MYDqTEI4(p| ze4a*eG$n{E^kxwZB>iv$U(dxuggGBh{WMV-PGLIg$a!IuT0^YC`cf@4^7 zpL&#WKoc8BaP>InLoc&}d~nq3d;nz`hv37dPd?+1F?~W1Nd^HbcLJi!G#g){V-O?o z%E3g`F7n8j<-ih`2+3K`eOrVeKJ4=>py9EuhK^U_XxjG^2R^f$DDG}$NoLRjF zeqvGP?D-vd3ijxRp$S?zbjB`_`P?BuL$E+2;eJjCSjC9Bffec;Q4bwu+m z0IftTCqwd&2ps$vFC@AGO4qnzMcnM9l@Hm##|2YoGGe>OVn>A@f)`dmoQ~Gwi8b*+ z+VO$y7hz&s%Hg#L{u1Kg?DIgDmrVCWT%Rr!uxoc?oncZfZ8}y#G#)R;(-^BGH}!9E zl@gra0QoV4MVAqf#go0xh#_sSO_qO|I4KCn`yg^W&c@MVf?ty_z${w3eK4A^RnVC{ zITmsVtm7b>dndOlDrsYsR?ghi`Ftr8ORh70*Qm+)dsvVj&JaYyxVaeIz8-!pPEX&*$oJNj}E4#8aV~oI$#Dl+^)s(mfBU zVxn1`i+Z(?NS6|*(&<*Jm={X>E2@~ngeLvZ`e!K(H_!newIZm#R4YQYB9ymZtq9eM z@W2j7VfguB0_nr~`Cp~cW4+QmC6oEE?ncwb)OX`3iAHGyfs2x_AHjpaPXqBN2%X-gV@Z=}81q#pV^8uZ`0-*c`(tq8K;4AI22dsvc)%u$;p?ccbsm*JeSv5Fp1d8FXf^0KcBumJ!;6NY&DCNf0xA- zM}3tXRWa1UR+h}_=kYL#k_YnBU*G+Rm7YXH3)2Z+b-(tQpDT|RuZVnsu`>yb`S4z% zwglQb{waJ``>61#7`kHUwQ+iWhF{P zG$UO*qm&}$m=?-}(M@|sG}Gd^r)B2yCJ|4M+U?R%euU7g_Pg|_+V9!~rE0(Hd)n{% z4&8rC2y~I$vKLDIg}{sh4HrBXc#QyKvx2$AseocFfVj}VaYS+CkwBnuP9Y0c&Q)DT zFN^6!!7j@ zp0UHfFYBO+k1ilktq9svtq7Z-RILc#(~3~VM}MsbVzoE65l&Tn^kQ79_~-)q74QDe zc=tOrfvWiEip?uF&lRZRqbu&I;-eqOK2>~l#ZlFIRK-VE@zE7SR}8)O=PEv$o+>{2 zA&pe~UHqx`yQ=-JXYBBI=>FSAd~_KgTLuR2tf($7lF^DiBCj*QMu+hjRLYOdxyf(IUEyobuVTS^Rc(J;3tdbX82t({4GpjvwGP znb2><%Hbs_)Ke{hKL% z%)#+fHZ2h{%NM1ik&5?CZ6J%1#%eCrkHcNXD?5HVqdKw>%gCACyoBmcT{QQdkCJ9yUT6P)HWpTm`Fy7tVx> zB$3@j5YOXqNf?-LFq3Owb0vyecYZpt?k2uFp=%eAD6A0-+#Fa|-SMy_P#KD-ZUC)L zSjeluzj$GQG9&l!n1iQT%_ngj#hZ1rAn_MAgu0bLq3|$-0M>M0`7i7l!Q45iBh%Z0^?*WGHSB%9Gk= zYj*ksx`Z6~Csig&Y^{QQ^^o~3ka=#}^LG)pcQQfYxGtNe%sbCt+*7O34|!D&{nWG| z>u-PG;XWwl3HKU*`O-IF{l1^&_rJ-n#I76P1h?w`zgD}SzyGb@X|}5S-?s4R_rEDx zsB@=t`4wol>W`TK24UKd#L^f&V?w!2e(kNCeI7 zn0I^v#HD4e>?3Nv##edAT*3mD9SxhJ|LVQg#5#>EYX)OzrZaTBi3W0a-~~oo>$SGL zJ%WOF06IDUVB&ksb>h08zz1A-{SXy$(4|LcSabbazk094Np4Z)99p(0Xgh|-TkVBu zIN0*qRRRMh*Js@t^{41nvT9!B-hkDGC}Oz=mAh>pw(7lltCp{DF%N=^2o{n1L+f;O z9;FxjhDF`c9K~tQ525YVUBK5v3onIkE-$jb;(NE-Sze&i>NZ!vKr{|k7U`^p(rK+O z(q2_$Wsd;Lfr$(Ga?{9-z)HJ5zQ}#!(~n_bHVbc~d!&J>R>q0P#zf&3g-Ikfzp61d zUfH%6O#vf-451y=jh^|i@^bfvZvyk($%Uomu{BmluEGGnnHdFrDnC6c*|elo2$X62NV zSSjcQ;afZuE8l&0Hiz2H<}~+y%BE2avcA>cKQrTYWPH~GNQ(efpq1S1k}FN7A|c3pzo>G{?5 z(fRSor_+n=VJ2=RpGBV0s>JC}AFi%n0-s5gq@@U*UR|Gl_;hx1ee~(;qb?1(;}7RQ zoxXcIT6-`tWvEY~H%FHUfO8)hI6;;e@%d zx#aOTnwe35fU$v3MEe!EJD{Po)>JGe11AM!k}bgN|C@lCA`!9kpEQ0 z!^mSt@|&?t^9@PRHlfKY&?LNh0Dqm1!$`e8`OMsTaikfn?q#ZK%_3ZewVMjW)?tF&A5Qv9wNM1zN$b0d7h~XCwSgxCI9Oav0)o4 z_#c+~PM-gJy>_qS|1CT@Zxm;789Vr*`@VereIGgAk51r#f{*(i=4SBY)C_IUQ91#* zJJ6nGI~Ya(Jy#s^Tavc6aV9Mkw6w*xV!NZZCTHeOr4DYt2rDUrbzs7hdw{ZD>ds1P zWgDBb+*YSnk8hsX<9O!UX^`XxL2VJ`20^^n0l7ZV4hzab?Kk`7{qGks^1`H8zt<_N z-s=>{&%W_NqbRmFaWgmzk~LFv(>Kb|7|?_`X3J+w+^Z}Dd*hYQx<^G3`7LNB@n}poEDZU2^2v< zq$4P22mcnvGBo`zj^?u^4ev<9S!;J`Gdszg4l$6~VJI`%VP9Tbo{6<>d*^8ffgcCt z2O5EqrqID~9t5i8DJ%kG!BNjJEIRnjhU2AavU;}nJV^d;Xaug1|NWx;Z}ofa%Kx*C zXLHfFrr_U+=K=QuNx>!@wAc{CL()0PW`rQwRvO)~FlM(tyF=ymmc>Kyh2$(N2V5dC zb8v-ZbSPG8Df~w*5F4)y3&%|ias3AGdAenFkKLB^E<1jx^#~Mv`fuPT{Es`_Bhx#J zf6ix~{Bx$hgDJ<#2KzzSG}Nis5~K>v7TO9~dKbkv*qjWJF1B^+$LSoyrMENyn;`Yb zaZqDEA2LjBT94v!vCVuYu`SZV!|;0KXwX5^a)J{PDC_lnO~4rQ@q_@mr+wX7O@p7Rzou`!2;f@U_QFOx_7ZJ+|r&K5Ky`^QImxdlY=uhAFmYAokakaU! zUh}k6J=IzzR&>G2cDA%5#bE@5?(Z#YM-u`KXFLY_gu$@W$W|~3(xFwuK&aY|ECZD< zVd@&oLPzF%Zn776UdG%r4kmx>iOR`iNW8*3T=T66jn0bJ4)sFv z(uSIOOL$FqD^Ib8Kp!i%>aA|QxuEd7*}S~GJ)X_;bsV11S+9^ljlUVCupoeF6`IUG zl)x4r+ly+om(}Vls?}Lmt2ijx2dZU!`@8z}C971!JK~ni+0>2e>OwiXHbA>nuE8$~ zSaTL{n{sR% z_C#FU_K=>4Dqmx7b7x)a{={)D%_=R4}AjR*Cnbx?2i?Ad*1b5W)sEb7&c{C_R$ zcV5inXLTuh=^EhR)$of(!z!Cys$narU%~vUu8IWpr~J$==uvT5mzVTS0I+=xLLT!P zKL~rtPtVe9H=AdEvBY~kr%T`88DHJm+^js!ea$M?RM)`d^3Xx=1SQi59ZB+Yi0_V7 zrJwwO;o&IGubAcA)=~-C8ua=<5|}XwDdU}5(kV2NbdJbl|1-NkeJjB`cZv4aoN}mf zMgAjILaUYglHs5RK}3y}PAdQOjt7*{>l+rtH7u6XFMQqD*C<`Lm>UxB2 zF;_x1b0SCm!w6AS`Wk5OrIq5}(X-P2d;a+UR;Sg>+kb;*tIGekjpqsD|D`J`mlJSN z{8;XrdT06@cBK1X{lettqj`{Muk^D5V0uiWFmny-otn;~5Y`-Rqk6}crmjd!i=oAK zaXZ_I;SHdQ4m8X@VbPnU4u9|5I&qR!68kV1U>ptq5zBKydBYmtEp4SFQ2-svR}kqJ z&p<-Q^HsytJB2 zmj3WcqWD@*HmH*L>g}vomRg|&t6DNPd{)Z;jL*dY#^&;{Po?puAjW85C@h(hSdFHDq4Q2K~yCMK(x< z*pWKTl~Bm8SgPuyLedzaHiNNI$xc!KdFg&v4}Vtjzova}+Qv%$Z}p4(->>YyZ9EIk zf8v}k4e%AwVd4sCn^Q@})!*E+2LC_z`R`VzSBU@b^|}@RZ{u0}{C6Q^b#^Ki?FN3J zw6@>vitQuwvrKlH9cj*gj~zVjt>V`7Fe+j8+cQiRd#GLeV~c=!y%fGqqbNv(_lmap zDfw((gcae~B7=-fVW-ZbtE1w@quJs>vOGwuAET9p%tPx>(wqFDgr!rrWGt7B#*>Ze zlF`%;urD2^$0AytYb$?N%m19eb%Qom$p22SSFr#3-EOy%|66z#-~XW7bzhM*S^r*$ zha$HIdP0(MAN3MR_s~lv9**i7$kHCdliV{=yePuX-2=dr)VuST*%(aBLfhf_+21tl z^v~hGep3M!pU)D!BXjx&m&wCMqtzZz(bnO9bHCXz$_CLmjgr)3as0+er;8tN-)M>6 z#SIm!_bCp=?u4wE#dVvT8T`rJPf@&h!n}u}n7^fLz@)Z;L-oe&zBbEKn0QaG*vM0Y zkq&)T>hT51pckcrUM~@}Z1n2n`10gBpC(&meqLof=7F7@AN~0Lj4P~4lw{uy01Faa8%-2bIg1Fgv&e(8UE`_-Jr+cu;>P&;1d~B$m|mBlsaK6rmFs`3R&c3woB%lkZ=|RPY$3wbYDl z>wjH+IOl6sUEB+j-Cz8-e|z=sbxcY4=1uJq@A;{{{(IfH}u2ZK0{Vqaf1vp`l}J6lc_WIe1Yn+@(06L&!Cv&3h40;-U9 zb2K%j*5(AD&I2blDx%fpM%c-7sdl1%m&}JbWk_66ZT*H3u=yLTTRR1p*>h03H+OFg z5}rjKQXgui2Dv{6OBi8a^|Hhqn==9_GU+iL!UZ$o*2hsh&#tB6D7@E8J%kB3cp~~0 zz@LV{b_vYxbFy&O#AYm9o>*lC+d4tUsiLC#E#rDLw$&-dWZZnxhjP{xNB`8%(Kye? zxfV9(1%Wl4a2(TI%o{DgijQlvZ3(3x(=IKmEqMkI^|Pg z61AM3#dIAO=vu*fG0FL@a)WTL*0oDbDrVr!uyRN?=LQY5#tvsR7X~+o>B-UiR2KYQ z3vw_TvI{Yum4ZE%;5Bkr*pfj-Z;Kx|Eg@X#^)7?xxR~g!2=J)zem!^ z{O%I3^I-6*TwMF=EQd>s$?L$F08aHrVDJCM61PL+`2glmKCXF*w=42@c^p; z1fh~W&*9yMD)njPnM{3_y?B&ibX9o27PwjL-vS#IYl{HSMW4TG$+Klg{*@xXMe@ib z&V`aGxyk!F3zc6|BE57NQuVyhvn>Aa2~vO2v-13Rw-Eo=8}zFCpSJNlHvgBA>q{LB zP|3VR1ZgE-zSd_M|C`gfc^j+vza;;AcTnYj*veCSh*;?#3pIV7iIkrkqq_RZn+K}+ zx#XxjJC(H9-m`%JpX%rbJsX_==ye9w`HyWp#rZc*e}i~_{(pko-&gW~yVLCC`G3&sSNR{d@jU(Y=Px7)ObCZO zN&X@B#Kv3V#+cgqDX&>CZy>vGoqUbuH?C_ZcCvKFOGU*q+*1ES(=?emdQyuVz$cs^ z6S6$0t=tt4n<;7+kYOT4bt~ zPSfrmcgqGDUq5mUUO148!5DY?ns+BZ0llkr(37k7Mzn73cQ4vW=jGNo$sp!z`GL`g zPTkAST;Uq+r<*vs>ihegH+4%l|0(X@mOtgi-29ig#`|Tb*|=-_X{VX)1OGm!d7b4; z4l|7WB@6;qcC&fA63H7?*h)$M#`4L?3qAN_8JuUmqqYtKzmOPP#-Yf#jU7~ieTUPSj;g;pYw6Nu3ObD)W zsdguRJ#dIr|6o!uMuaPUo2FG#rcMd?iUtu+%Md(_2yQ#d}{8oV%#kTve7IJQbz;mGmTcShb`BnRBh= zr0PrKzif$Kd+A+gEnl+w^1p>SX}rpq_F?PvgGP)0ba72_wX>BE8pchO4=oGK)~MjQ zR_e76?L2aw*1*c`x~Fr8ED)&1N}QXi67A3&{%0C*jpOu@6!}y%M+XHmZCRP(Z7!b{ zU1W$f-HWE>){il_LO~%Cw?=Q7gI?O9Sv?PWR{8(U+juu?W4Zr-&~6X{(nl+F^4FuYi}xqi@rU!DPTzgJJi0#paGo!; z64EN11gPtYpIE~na&JK5TVa%1JW)+>Z;j@m%a4hf3*4TlI-IBc{7hn{k>v-t`alV0 zr4wd3w~im+YFkKkh*hH*t(2A%dX^WtbF{Ru+SKwx%K?FT55JrgQ35*^7AAiv(&PMq zZOx(CgqQdQHj_JkmC)RoXeorI(DD#Jf}P=65%e$` z$#xO6n0YZ`i2gi;wHMHb;(!^{g&yDlAhGab8QyAW-H8*9`9K+X)U#<}D#rw-BjNe- z;SYBn6{Qd#DjKYUM6M{8$K4XZM70#zau|EuBJyL1xsgQyOx@TwsA|CVyMiOAN zy8bn5O!k1TaI)~40O&C2pg2F1=nm{lcY^KEj7TK-Jn;zy!I@1UU7S<5PU_>j<&WU2 z>S)%R(k?>_t>zwfB2;t2tSq^Ybq7RfrSUzsJ%#EB!Wv{fN%7B+E9(jN13fTum;g`E z1)x`gXsq)n#ZzE7?R1j>2M;q$p}%~--Ll~Vu1Il28Nicc7r>9edZq69+{=1>1--VS z*g8^IlDw8E`~#Cu%z;5L3J{8E zM8Mmd0{7$Kj7d+5krqO$RR`$MhivfV#PQSSmIDl~@Zt@rA+@z3wK?tCS+k%|4w^Nc zU&`k~5Use#04eqkskDT06lx~@+yS{65CH@bHsOv?grO@^v{@tQt|LIHDaOf5b(YR3 zeI62V0X(e@Ipim|Od!B3++#zfHTJmFE$va}M*z`7pLyXdg55%$#zP(;3KC;hg3$Sg z>ytwZFQI_KO!gTC2~0hW3iUs;|26hrV|v9b;Z;3Nb8?jkL#|Eeb_)R0KrFxO)#b(2 z>nECE0JYA<8dItXp`{ZGu0}pQ+;X zwsX@f5FO5AK+kn%j*D{5T-_2-#&Hecg?x=EQvpd^=L7}th%;E;G5r-F&OXmD(n|kE z;~O)Vp}{HuEm%|V?ir}A*B-^u)Ph#$498-4kAgIgytym=dOu)>KRl3*Vvwr_0!_LS z8dpG41H=NA%$%5IBS4F)S~x`xF|7KVb9=S874;(JLbLXk06Ej+ly373Pr1GP1}lU=ydU#hj7gkuEnIU6UuGzVbw zvVecTndI;v@?-U-czAQnTR@o1oDgJ-XcOd-J7IFb>64vKVwL~`o=zocCN7q&e*z9F z=3pxDmT&~?B}1HjT>yoC$T40%x<;SwCO#;}zS$}MP45wBa&uhk`hcRgH&084O;bzb zXbzSLaV1HVAWB%0DmKpMk;7hq4XwR(Q#u!MU8-w=?BzXABYhgQapqEmPq_yj0Lc*+ z`lh257E;Hh6|Vm7HyH%ty5AfbPJ2j zH5?3)D3-Qz>5R%;&bHzL{3NIInC>0q;v1Kv{{njuC#^u&k{qZT&G(-VamLe(`KF9t0oM`UNds7d*E48?HUd1`or4~uWp^OGjxX0 z?Q7uCDWFNt0V|?)4iuD>uWooB-F<%U5xAWFwl?)wTxpH0Us)VkBhWtQ0Adt4TutJ~ zqy>yLvayufT9Bg1M=zB$RK;wk{*;0AOYaz}37TFC|8eI5-;xmvus(u_Ubb$%y$_u! zNFL~%13E9R8Lv|3hFNShLXA%vfx@purULB%c&`u3dpO3+_~ZoYxB^M|At@WCP8G0` z(qrdgNa`d5Wt*XlH*_w7|B3=AJIzGc=f=p{)Vj@Ehn{wDiPrBnIdf)D72+d2;l`r5 z>cmdjHQkkWweqfR$-64q&PIj=G=!O&NVSG@tMn)+nXb$*URXFd(H_?Aqh0b**wRoC zO`u2?^+PnQk)efk>q)!094TVoW({lh(EUb{_W~4(-Ss+Sx`s*T$} z{im;X>`z%NJ6-X>UjKEG-xt z7+qY;ZS}cU986=|>S;F<_h^V@aY-seG$;5jgS6?XPvk?z@xKxdL?^SZP^Fayn@?xj z5(Oek(?Cu~z*7EhKE|=bo5=4oeAQr*qapI7(>GbNF#$u^d~VHIP-(J;-dw57mCF1w zD)W0kNjdk=K!&B1JC@|E@YOhDgy;EV)F}9YQ{+nE?>R6yV3FMTvzb^iMCdwz!0a(I zD0uCRFJ&cQm7A!Jt5vWE9K`=Zt|1X|<$KI^V!9jg&>FijhCoVY5zLk}bPg08)NrR> zgFyUyGI83y{^8)DJ?bBHd+uQ94mwWv!08T}PH%Y7>$#l+cYo-$2Jogg=ysgps5cr8 zT8`5kb=_vS)!t{rXO|1|5JDvxD#`HGN`|*W+vBS>iUcphy>+#h8l)3ikmXhdooGXS zRGb^%6AmtHg8Z1aP()k{LxE8zQo1Suz}-n@r;-*YT$8+E-hf=z#W2*}Xo^f=j4$dP za+t)vC25{!2PA|j9;>~U%tWRxfaXKu&Y8{LfKEA!qmiGQ?L%$JgeVaBDZlJQAJjaw zR8@)Qr2$=ZFPV=<{%6E(+lnb5h&r zXbiLNqj_whTb@Lh!Z9-diHxNlX5a!vs5aqi!Bj8``?(hlU_2DfE&|R3L#<3MqLskI zn%>A98)^Yiv^nwFEvHFf5$U9rx;v~ncRVhQqC9SxIZ2ul$UBOY#!uRD$`Yd{_tB_z zc|=qATJyuca%MUF=Uy;qPO8PCS}eZe#UcPqoDsSR)#e8st)LJlzTW{=6Fh`M+w&=j z*>}gBFH(o{nMkh*IU6y{m_vaS-AT5gBS!!XZm_f+E(1UWVAKc;Ejm<+AqpvelbB>1 zE}7!`?s(VJi3**F32ScWr85p%q#<9BBFX76$=E=EXY*sd+i-&W{;oBNi#30*$gPFdKdVpVJk6PiP;wvv&YeN8ihF|DR2{%!=E|9!dKuMN8FtBt1|;VYdq%e zFQ}ENG`}fTrbbchHDC@u97VOg?1P6Nq8Uy^P28-ceT9LT%~QMtCxNejt0k!iuWEnS zim*72;t$1g@ZKyJ0@}c4h{QjVD6Hkb(UAeb9|~lM!$*`QKeKzRmnK>**(>pl_t5x^ zye_}e2$`Qj{R8nX3h*Chfhp$U8cPt7UitFFW$T(pwab#fb-uafxB+k>dU*L4+967KNB# z0hj_0DdfX_kU7X(gHgAi@1@k>q|f6|fLmt1djqU9pIQEN3Oo$*BT&KWKWUN5B@h)X z^bq?L&!RLD5$2YK1;NZyhw8@3S7HP6d)8q2cfx=WDE}^UFDw8qV^r1W=UwZN-nq$C znH1Gp_jRsy{1kY?-NJRy_Jg^{U?oA7&^x`jW&qk8u%BqN(ybCF*$96~o}O6hkS3)W?y7 zp&~aswcw!0oI2`ckmM_j*6r4t^=6~h-Gjde^>!D3wVO2q=hG2)!$el?k2TR_vyUW~ zfh|c33~N>m&NuqI-_LoYkS$o;y8$gPEaRtEJ;U_i~u4sB9NuX zM=kTq^MF3N&262AYU^9-So-yyKWH`gmNu>Jw5usAbdBN&X%jdrK68=;H|uLP6)=OR z)|pcr8D10N!#DuxiiDw(gmF+o7enfZtn65!6lfa#gpss*GfGO0i3SK+18QLP=~sg+ zTjv1lF5OgZYi7%WbKxT@5&856~sMd+oAJ44gAewvf0?9+XCQ+6X z2ma}>zxCf3<}{P%aXyJ6pZwV;YNQ0@&mel^kf9e+Z2lwX4%+ojlk;wW4}Z0@U$7$6 zzre}enu7Q)LRCQ9c0UQn*vD7zem;4P+hNq27M;&gOEA#cjeX#(KODdRcy)bp`RV-V z?8LI|UqK6dqh9{+59cScd$wZB)7fqJ*!N<5C9`SBcM7$mUooJ!*iq}%(a%?}#jyg> zy;`nT)}O4>@zuW|!+=u8!)ysayW7=9h$P*b0OdddT$}&>FV=@EL`;QXz{1JHs^yM6 zv0f?K=!(JRH0xF?nQm$agp9`&<%Av2{*ZkC{!E#VKyz z;W7VZGkTnr+s>?FgZ3FQRIInY)&v)@{pKgRFi+^fz#-x?C$8%SR-|fElg~Gyu4O2m zIrHNva1eX;InAQ=_)W%Q*5&w#^A_-J?y8e-hF0aW-Nbr(enqBfozAJ5@qS7xs;TI? zy7-GMS^o1a;rr!Ft!^EW))5i0#Ej`+66@7D1r4g&dls+xnp7pkjy4Z(o!I9AYGTYy z+B(iCDhr+V#}nGF&GcJ!=oSVlcDO4A#jd80iw#)pyxaz06p#qI6ts`a4L`FEr0Buw z;OWzyMZ!5^(^G^x;&D@cAW67yMn*%R!>NtYBD2GMh@Ep(h51Oj7>+|5!MvMtCj#bL z3-XgH;Ygb+d&ykU?lK)slBAK{%qVojF!f`Gra2zarp*LFZ{h@~JBcEJLdfpKR19$@ zag#h9&4Uan?g~l~CRq45sHhDFKAt4E>9?@v_V~!DJWsSp;}mzu3PB zL)eccWmEscjMV5)X+^<6WT`@uFJFqM^TT_Q{8D6!lZN&<%D4{WCP1rJ1Zw?-I1x1Y z0AnW6*kr&DxQm3Nq>!QWUvf|sG$na-YC)Nj9qAPotF^mihAngue75xdS+!(7teNw_ zD?p-|fTRUNjm}kR8&1DbwZqydifUiPA#xf5#VQK-JGs;M8=+h<45v(%_5 z-VWE4EmAn9&iHvGqm+X*|21ePsp-dRr9DPwb&?Ubh%do$Gy;)jC`D#OVw3+6UM}VG zC>Qx6#5Zq(0Y?Sa$IJIBIvcQ*2jj=)fL=S}j5@U8JLbMu%<#b|;OF}Nl_A!6bo3l3 zAH^T}kI1w{za*OQDrbkt<;J_FFD+8bL>WiOV~;T9EG~GwJ(WU8a!#ub)&<@2Dz1Aa zu>x4wSY8};l!e=M>n)FAhSEHmd2w-k3ol_*WS!zzAog-ymwfrB>+1`ZI#~^Pu8->E zO)5R$iEL2#=fvH$T-ah%v>&h&F&6K55=B88=qx53QPjk9n`OguT{6@vtymlUS6#!}NloY}*7^me+gemeQ*th^- zR*hUvCgZ54%#f8S<Q!;kYw{G|p)l!`t0*&l+{C_=kr5+E3K zNvqt^ZH#H@2xV~xC@Bvc4GORXTOvK&Z#G+a@p9v~)yQs3P{IEh#tn7T)D2-J_c0rU z1YX@OKK#&t71+f+>VNy>ym|Fsa~9tpzM}Zy!&f)Tm09NkxGwV)%N9ZQ{!{xW*^Q5< zZx02C-9P+xdGhDeD-dFz;Psc?z4U&@4rh}X#Pn-;B(adgBDA6J>Agtb$0;q*x2mnX z*yrP!P#_sUw+Wr%NgXJfVh{JxgE@u=kO?TMM;?FDSw*-KqZdk17qd`=t6u*&oaq|hnalNcl>W6`L0l<-fQn9z3JI+NR70ii-04^AxduqAR+ z3~jH}S9CYL=Sej*;oyvE!9`^G0zM1;wAdM97`4TQYEA6rcMnjSL>SIS@p5<+ki(U$ zgU~aTxECy_NI17yC{C^(g+$VI@q+IPN*6HK|1nCuF}oQzfb1Ihsqup-{aQ`u40IG6 z4GOU1Dvs=+IMC+t5IgQCQM+#non!_*kVsnGju5djxXd17ejW>5fT>tr8x7u!5HT14 zVj_QccUSj;od|s%E6(rEzyda}W@ELIH}%hxbQ-)?&0k@bw|w(QA^kQwPaPB~;rJ}` zj@1>Y_b?ZfDm93lwBHq=)XxI6K$On`#MLc#Sp7?GNVx!5IHYLCWXg)L>JS+zY*hd% ziZ!Dex4GA;rh7juwe7L6NtsN}XwfhN%W9b#gi-e*^0attxyB-XEZnBkz7=)JYY@ylxt%l?%I1B^EYNFs7n3s`PtFJA~0e`CNBh43ARfvd#P zn1|x!aQi4fNz|rM%1&oxoxm?go)-(eNR-Hub){a=d`Vy<7W2@sJS_UaO9>{+V=s91 z%a;TT&4huJ8!xh(01OTV1<0L>ITCIoS?*8FK^J4~ulA1}`x*=SUJdK*YU?iQcxx=V z#^NDVw4s)dR4u^T@;6W9nu?@v981?%a6I{hsic-sX{i=UDA-!@f)Xn4hs2D*V90`| zg8U-lKua=5iCK^rMZWWLfaF!1WrJZ3gPd&rde0w>(ZF#iBNy^p zWXIhV4$@o0(|cx)b|#`WlEa0=xK|v+2lQ;&z-Vxhme7>2L7^)p3~i!BQS0<=o$Lt# zl~)5c;s&J?2oJl=Vg;l8?)YTSNLDMi0Nt2*+^w$sKyuSc9PUfAbPU2+m%$?Dkd*fc z7~_9ZxJOw(eD7Zi3`3_FY#o?+Un_d3g|AUMA^GkdRTNPwNC>jLN~CwCVZb*(YCHz0 zrtU7W&`RJbQ>jszewSYRdM*hG9raM!@l;d=s$WgmC!gfXm}{Y~ax7@)Fv#@9cn36OWm_f-iT?_>I<=p|Bk~b&QIm4IVeawIy4z%0&<;6iV+r` zA_Ov}FfIjzyD@OzNZW4XsRMmS>D+ull%5YB;33irXA1ZXfnvzV9B-qNM`0qtA!@6N zT!4Fq`F+JrP2Mg)ktidjbSx`C;h3k!w^SNDi<>Wjvv4c zt%k>jb1*{iOGBjK%nffg{?F^Q+s>Eagb$wWQvZ{HgMg9nBDHH*@@0U>4QXUn6C`pMWG7{@5%Y{mJU9MP6 z@8xgRQNEiar-~%0$U05)LCX*Q$D#p}$08Z`l4UL%<>kVFUecG5j(wTood6eB!HXT&D{U_mu+j|t7cNt|=3SQC zQ|z-lF{}g7Nln`xXTb$hD3TQ9^|Dx`Uve_!7lI*&C-+hP7M-<4Im|aTQddwKQ@CQu zQ=<1s9bn`Gp}h zy6T4_iWd;wLk85-$yl@|41XiWrpUT)+ zv1qY~;AwgMq^v+zeQ~K({JsPOQS~8Qua9@e`+Wb!7~U1UFW{6*0CRZra=@5QO$wC0 zUsnWNbF!ykT5+CGCq`thFtSRU*u$-;AnOzAhb9hxRA&K&Vf-45nY*5;dU-s!-{#Z%5AWWcp1)f-3ni&c7Q*`Q4M@*OM2kU5X{S-;uu4_fV3&vl#agZ_Sp z?YmyT(_wDUV+Rb_&T;ze!0C1l+M`i>|6qT=(`j~xtTpPk_BE6OXfOoL<^rP;%t=MR z@jI60XBuDg*o>q|1ai=BY?LMeUJa?j7)wX4$n^Y~5g9cm%n8!TulbKr43cKQ*=lPa ziV|2ap5%F735km`U>QK{Zfj-TPI=w7yS(N>^PpK;Q;%I((r$CVw6@yo)4rm|-2Xmi zTJD4Au;O>nBi3`pxEQmy2hB8^%$$vsrwkT{u!aVOHaA$H(9PER`c%H14b-Q_>W`r(mFqwG z_O-cwc4enp`JZp)f4T+Vpb)w0_gHh}c%$B+%liG%u;uO_boQJ5VbATc-l%oZ>KwRk zchG0UQOg^R4)*)a!T!OBbse`i>UDd?wX&QL*IO{Rx^z9IyvJ`35%{g8ptdaWw{Fm` zc_HM}$m6fsl(p0u)ROW%@mEM0doGB1fWr5idm59hSPGtJ8F1opfsbvQ$duX0Yg)$h@1kWbth1B$81#+DWB!q!?Pb-#V7`}FY`8JVc98P{obSZ~;IS&y~%TL*5p*B=ZAJ-2zV-|hFB zP7f6EHgj3GJ9Jx~GaMasnxlgeYq8dWqsJGNaGHF+c_I8=>(^Dd?$`IMi2s#Q_L~R) z{*P7hzs*)>&?&_Kwws+Q{&x$Ht{myP@1<^V+j4^0#OVl)Nt_yZ$-@C!DTntWAM20omZ|Lthy9!m#HC{iRv&t9Vw(|H;gGob1PEh5T>! zJMFyu?{=DlO8#%*DHzCE7-QqMJp|bzjpaW@vHvS7!@))59c4R;FLN+t>U_RbwsRXf zTxLxYB0}okdC3f_v3iqYdZ+XVgbY|YA5&i@FCqn5l%kBbm`;?SVLN_!X@qe$`D)4{5)vfq{3s0W^UB{jH3obvB z8iq&qOT@%!f+WR|bkNOAQo;w)2gO1ZZaJqx0(;FW2dT!^y z-5+|b0leuAx*caY>Wzkjmg6)>UANh7wfEU@Yi#;#&kFvRpLs%&4duWJ{_k`;h4Y{N zZogge{}vvd_Z2PF#Vw#W`w2HZbUol_og{XaFskPLvMt?_06(SGg&TQg@9d#ZSHR0} z!n%~xKVi^vZ?bg~en_Pm{uKK}wwaiRKH}9= zQJDGn_0boX#;Y;iA^0?qTv~2?Kn`UqyE}h05YHb|w)dwxZ?|#B3P)l#?p+>Iu8WU8 zT=4iVK27(EU3+wt>!w}H$K*VwgC($X-F$SU&!*kff;~3vT?Qi8sYh>ZZ`vtyt8>$S z8Bp>Z_t-t7mtI`IfoFyOS6D|kX=A1Tr|AFhw^~*Hk8M18`!60kZXMQ&33_|DwxYB^ zp#WY2P5j77;=!k3xsyh7K9>aDKXgODfPmp?6Fa8R`J5d&A2N~OY6r<$_-df@@8W1a zThjF%>9@h2t9CKbQb_kY33ZUi#!WEKJ5T>E(MaY)46qQ6Y!2$m*e=!FK)HSG=T3gK zg8$3(;Rm;|ivQc4g8!%AZ&&`GZ9F9j#Y+iv%kfd)ykF&8dDi6rN9h5p_`lQb=J|in z>-H=D-@;Q^`}5n)IeD;X@#pLi&6?qm*}805g?6=7ve*!A#2D)==4w5po#K}s z#*+E0Ux89mi?j7fynpV^3Eq7IDlBx~F@3dirR?|Fsyu zCc~$JNBDJv>dr|n9;8j~y4DUlgL?dbQ2)Qtd^}V5|LOI=52(`ri+A{PqRO@&A5?DC z6B&$;w<$Y)(V%t7s zl?!};cBSwqY(`eW265mRm;!v+5fD`chgqAX=nlr{nLfFf)%OZo*=>MAM28t9LWA_k0!GJ|ID6i z`)?nBi;=F^UrBHcJkl8ed;`NZWkJ1BW^9(LNVU|O- zp%cnQK0bvxn(yNTTbYgDey7D(kMg~+sOW(|7j_}qDLSCdmw`X1p&S^0u!~Oc$I)6s z-$BNnC*vZs{!sG(JHR8SDXK=Qou;_-7bdRTN6u(*ImsAlolvO(y2gS$26QJd3b~Uq z_bj0&xLlEQ=OnwJ?gswp!W^pXpQQLWE-`ExYm|@{d;n1U&>vekrO{vM)}^g{LKi!w zaL4noY|0?XQAFRkwkdGpbDraC**H@ z%9q_{C?%mEW4hKTNxQ^-O_&1y2B`E&6e_1%(KmPU@$KfJH0^2)8gHLA&K3`ymc1t* z0%s|hd*SXe3et_Y3><$$c*e`r{@h?*c58@?jzy$pNRX4elJ=cq2L|HG_;DR?19pXU zxOq&F^c#9Z2Y?MfN;mQ^rwP4ibIflRKRYnMRT^ZEu@|!E4u*%^IafxcOm4}~Z+ z(kG>8bp0ewQF-J=>aIOe+IBh&Hn~ZG5>SQcj)wMyE%=<0T(;mNRkz84-*z2Q-x}fy zjQp~?-;z^znaO(YNXOtbP46)i3@FW8?1XDN1*zdq`uJfGt@9tu&7!YnpTJ}JXBzDs z)uqlqH~)-wZK_w{{PWpWB^=iiw_?xr7IN|O9u#T2b{F5= zYdCe5Zu*188@I0SHG(E9clVQrUu3dh>?3{T=cE8*B1{t|HFMqzMjbEf9=D- ztN4F1V&lJU9RFqO{I7jL`;BXH6d1f>=2OX3&7!s;*zC?(ObLsRJ@P29!dPqdFsT>% zu}RV^RPcZ7?w|g%(*M)4rXv4OU`)8?|HFe^Aj8jhRB8p_0!#@4=!WzlpjTzL;V~yZ zkt6OcwI#Vnz?}R0CVg8>^wf(OTXqx*;Z=Js`sNjE5B)96LdjBu;ziny% z|309&IOZ*({cTAo6N)#MS4zctx>v|C&YX0JcKoN$l1KG^4ho!yg(DmOej!OM}A z*D@r<5=wQPGosmW?_8%rK;!bxgHO&=-lmew^rldWQL3Xj8c(L#U1gm_Rh2|k*YI?5 z%3Y*I4JW^{B@NZ35m5tEu`ps*7LjS8q$FZ-K}6_w#XPvB&$!$zRjI_H71c1lH$Fu1 zM<)i)y2dJsaT0;E;c)Hm9?}I=g@=q^SK_aeVJ_AEBmrm`0^tgG{>TCA0y<#b5q`mO z3CET~8jc10`VVC$Df}33m*&=qolP?E!pFV(sMP;Q?D_u)+y8a`$6nyg<=y$K^Skr= zUvI82?qMO~tBcF~zr4G>dr2pRiRJ{XH6*K@tCVWBJ2S!T;m& zd?fP!6#4||$#i&tO5Anqt^Ch<33UF@rHxgvw&4zTcY@n}<7|KRLXu-4GvB2?UWI^e zgU&l(fp{Zdm-6ZrP)21g>hwWj6+2ne4&H4u75{tV?w9{Gw*J-&fO?w1ys-u^`m$z` z`nAG#P1H6iQHqL_f~|v#nuDsZ;p~hUD0lwG8yNovHV?4X-GldJxKa3QXM7B!Pw=;q zq$_~?=f)?`cyJ!UGm!yQd1n!LhQAw}81xs^5^vG7e{qrrqE2$g*KEvkRio^dP_-z# z4zOJE7P!mST@tSghF+7dMX&jNbnCG7*8IZIN@ec_7K2lwD==d zW*9!n_cWclzPU{oV85HKhwK?alQ-yL zfjzKovCG}+vl%7%i@`m8_Z|q!*t^GaMbUMmH|Y>YU<~3AHi1cH-VmW!(OJPWs98=# z=9GR){uywmD)|NU+KYiT7&oMVxr*T?9EsP4q!3=sY4Sqvc@Y%pe?_ZFn?9=aKWj7- z^}m@t)%M>$pxFM)6e(8u&M*~>S?emJ-w{dF((o%c)YQnUYN6UpoBLIvJE8@(p4d5~ za-SIsGX5IBoeqY0G~}Pt=bR}L!>MUPE8jg-CDFF}^!H-RDjqQmI|gzN(35FTFuI~7 zr;OFraiPYWT*uMEV-1|J?_a$gZ#u;*>JW60rG_6m@y=g4%iTRpK%DT8qaKx`!X5kt z6-N^6v-E3_)ivDRfo28tJUT(@p}CqRCHo^GPHBWv(BsPqUU`A@bPN6UTrlUx%mZ65 z_9HjDHDzu=g*{4l*}aj%2dy@fpv^-aPRR@`ov;hr+8#W^H&ewpWvqiXW52}FhNU$P zCO^N$6Uy6R*fKkZk=|o?59prp8k)=jgTldK2L0j3Vx!nk z+}i^0vS>r!TEH$!MmD~`1N%qB4o0*>n@P0u4Aad5Y)M1Ua}&6oT!5WqXe3YJ()i@> z9>^ProIX&MU3gdACm(xN($E)F>VL{jd9yyM?EmwzWdECwZSDWx2ee$;#92|iw&8u_ z{;L|@f3{xFXailTfYRppjNcL$$oy=l?3($AltP|KG@rkQ5l<7m6}|bhRoAJzCjakM z2d0Yu$M#&>|4rxG{@(}iRyV=2R_XRbtz8O39c40}$5jk1)GlE-#uQ5~$VCwZW;!-H z|8!8v{~c6-s^b6IOtSw>ClkH?_W>R9e{Igs_omgXpVeh4Vtr=I1h?w#zX$Dsq>ti! zA1c30*m@U#p5g=5C12E=!w%_R#sBirVBlN{xueMv-`>2vYL&l{bvHXyIwMC(+y;U5n7vxPjds_umw2ScJEO7)BUEk` z1igL?n1$R``H+H^8cT*c{J&T6*YB$Ne`<}T^?y9k{ND%E&Husr`jn=vRIp#huubzz zXMd0ciRzS{Tw*V|Z8mA9q92$Cvn;)BLE11Jh>dcE9-D-FL0$fDo&4v!8vFnGR9gS% z)>QL<573tXRoQ=Pi-C5jf4H1KP{XL3=qKx4bQC)_^1lG6!~evKuXP_){BLpb|9Jhk zH2?Pk?c#saF1Mf>jtI5*e@_!&75|SWlKwxlwEo`<)Gqhjblq5ebrFJ{~d+?A*fvc$CCYjJRWKO?*oK5ftMs!VStKtY1aGdLBaps6@Dd9$^Vud z|2v)8y8deqP)2`uu@~7hXhHwc4CsHF{)dM$`omnCap(jl3gT%$7h2GNI@0v-1HmQyOYY;bi=Cafe!>PE?DllyWrwJ|J4Ze5YurKR(*dJy z7{3T6ED2v25~nQ;F!zJxIsNA9?bW;c^NWki+uQrUUjChNpC&P7e4qS#x0e?;mv<%a z*`qwfjAmOy9EJXWc60gq^8EI4FtY3yrZqCHpYKK^b7Gm+^uKERfBbA&xkoro=Jf_u zJ7nM4z$@1{SdYU>7Q4w`Owt8@n*Ds-xI`81)x5Cd`#i508{C8{J!03CAAUrwUq3G4 z@1L|`;Y$If{O>aP&v!NCzh#T^e=?cs^S?fz>r6k`dXFRtmz_q=>Vj*83pv5*&s?^c zSQME^n9#J~#rcA0NREldP@X$Tl?|vY-435uh81Whb(6Z34X;UJ6O`118-bMfJYRfH z^4u2{%TS)SgLxaHJB?{pRFmRR7kK;ggHrx?dHC~Po%5fGDE~(@o&Td3U}eZlB9tDn zu+^;n4L}+Hcd_?}P{seFk-Y!6#ybA94*)vNjkoe*FI;+fX@}|s+@lZawta|xksaYs zx$7HdTfLLK^i^g)psi*W#*lsRTGimO(ellJn*U3*?-qSj@;~SQMe09~wf{#Sp!EMz zvZTTaC|Y%>Y0p`LU0?Dha%qsojpw)@Vt?no3sDY7A>qH6tDhV?of#wRSMC3GP*Cze zvo-Ick4pZxCH@~jN74e`Ed?^C2h_ zwpc}38(9Bu@|ep18(AKYjht@)ME>vG`SZJ`{vY`K$F{ZqPajZ7f2`TNU3h@Dpg)lR zGfn>h)FsL1R{(k!(ukX)azkc`O z{_@TB-QVx8&u?!(yt{cNyXc(41Khl9Aa&4zot#Yvv-%lW#@38!T{YG^emRd$JPiEB zkbjeF&t!~n#2!-an^W;tV}Bjkoc7oG+CeG*d-nga6!rh6I{$Aka2Wp|B-SeZf4cVg z!2_<5NC-Q$j(e&>Da{7nS&Ray$N0{no7e_(h#aJ64DFIO$c(Y9&_$vC3 zr>y=z2G>W{WTyRp`+&On--%{Gl0_C}fX7M#J5kyuduKZ0+O41UohY%UL#`hi(_bbu zpLs0y_k3N=}t z{mZjPm1CG!3u?I3YK@4IwuA8=`>3 zHE)!k6neW)QT!3E_$V737SU1(op_fzK{2LKWxkV6r&?B`EBmmlC@!0xT-6VQ%AvDf z$KD#C+}uTG)+TBxa~h-1fR}H;+=dM=^Re9$=XLVAiUMct#vpuGHX6)c#&5s(gjLV= z#p=%OJ_t6%IpQ4xFP(EvBerFVLgjxh;ZnLp&N4_kWiO>$7rxXF8DW{LPRIxwIzG~m zy=;CpP)GlZ-GkQunb@-aHyznp|LX&I|8F0rd=BBSMD6@{fu_q1;pbN#P$qmN+GHV= z@iiw^GTZSQ?*s)&fvR+|E_H87E9lZTNMk2B;{=FdBtSb!11HX}Lznbr1ijGT(yCwX z3CeUR96Vu(b7uU{|6!?ZERCa3kLNxvMzmZ^$@)yI!)4edH2(W;}yU z;b*`NKwvL1b`Ks!kLLp1!fuRc1+M!EknUSt;nX3ETn^w7CxniYU;!MUjXG$=NFJgz zaG`5G__+h`FQat`L=bHm^cSHnq4zq)?k1xSB?lY# z`)mq5V+Mv}9un|+xXv!48C;0wzk<64K%YZi!^6$72`@n;++5z?Wh*GcIFDk4-2Am9 z$1}tW_-rr6bXvvH2DRvg?luC5L_d~+&laae6E0nB{9TeA%K~x?j0-0O>}4!GqPMsM z<0=GKH(qc7R*9~$3=x``5QEit77GOD4`SqGm)X#hA`U?>a{((w1iX5CdwFwboWFW? zb$9jd?fGlt_WJU|_~q*I^{ZQ?{w014CpFySLRKKV2BA^IxZ1$eGY1wBzez*mbmM&V zP9YBf^$R;J12RRfXE-bHy0M8|fAxf?2PCT>c+Z43i#|++gi?%^-csWji_{ue1{8Pw z%niE`&llNah+9I#iDNLaAwJVM22+MoWSukQMGy z@%rVt@9FA_wywukdo&QJq5tn44O*f9+xBcK>i@IZNaug+16sy^=5r!b=vzg3Iw8<( z^A(ZAWv-Vo)EP3H1CDetx9KAAm#T?+_BgWapRJiaF&{0{o>}I4{9?8m%_l#b-gsdx zCs`Lz5phC67!JjOZ~>?Jc>i{Ld4F{aR(nqH(il^upPwpTyMFiT{`L94UB13mz4yb9 z`Td`GR9vS)a2zv?~7dTJ19u(;bEZ4}c>R#+eu6!@yPUGI{qqr{{YRLb+qd}|W|9m3J z|M^(^|Mvp>#(#1_o`s$w!oBPou`HIwhf<-T3>$^w^*Z)e{^#8I!^~gvL{;@&8M3N) z8{A?s0yb%(2lr^IN5xpo#w*wf6Q|koWfb)JXb-FbSpJsoY`XMD(}K`hu)fjL(mXmg z3t7!$RNDs3D#BQ=^DtI!Jya}_Y-FtzAzK=3n~%I|4D3=aFYbMe0QGhM>-pW~hx5N@ zqY$rlF_IGguOa{Ujs~sr{~Fo0WdEN|wEo`*UzS7qkc$z-gh!Ji1q z`M;ZJuqytyxcDF9|842|-+e$$`tMZ=x&{5Gv(a4BzX!iQjXPJnfSz_RJI^w4zbG7yZ~lCj5s?T9dGNXJJ07XS_Tzx4*7 zivK55ss1An|GNHDAFwC?*JAvlfUtNSZR6+L57^iL1G34Mcwn%zwjeQh*}PV{l9YIou#O}( zy+;bXG%8q`x>i_&(O|0Z(-=AR07HMeFhBZ93NwTtg40@$`|JiQ=x>An1o=O*<`ZrI=>r9TdnMXKO~)b6GJlt{SK!pGwVM`JJd3BN}i`)^4pj#QM)8d#dCAdV%BZ|5cK!Ny)GpoB0BX+hjwp zY~t8N>kyjpe>+#eD*hjjMf=|f)r8Ufe|Tt`|GlOX$M^-}7hzQD2~|pn>VbZi7KkU0 zsS3nb4CL5&{j)%A{@=qI&}{#Y*MECr>-~QZ(478h;+Y>;CJg*JApL<>sOjGW$n;Ol zI1R(jlD~h~)c+6L|K~dYb1!f>|34~D@NDYR{ZDMVz5}4};<1tc1wa%2KT!R*kv*39 ze>R@#`rm!P0sQ|&#xHRHQzu)8(ZvdHyjpK#tHs9I7P#}}`I?bqU%h1V*{K*QfT_HS z$|Kgvr=EmhbPv&PK$3dq;!ez|j(a1I3r(xjO)K%#p_3((vpP>?-6SJF{$uEU_Lljt zAX=Za$+Mpo6fliEX|3EfUrxY;c{1VdC6Q*CvM0ffl#CK+K;{0Wu&wIG7X+)q%YQ_R zIz!ty%Ll+^f#<{_91++fyMSR;WX89e6;|jZ@&B=fn}$lLTL1g-{~Oz~|L<&~_5VJg z3;Tbq1WS@yuutMBrFY-4QTeBYD*o@s|8J)7|I_yWKA@%lpWaA+B~ZfuNAmxp@qfDh zYadXD{>?4^JhY*|KL6h=Hd(5?Sx>MK13z~%Pd zov6({ojFk(ZNd@Bi{;^es~EK9g>FM1BbBx zRCsZ!j69Xb9l`lioz)tP(9}1X+{akXvT3esIF2$By@|7E_8LutoehYMCTBA`^Zs^f z7k{z_Ny(oT*`>EdG3?Axh&}C9v~f_mTzNREY|hcf=(E9oZ#Rs27(<^A8p(&vADKpX$RBFEpB zroon;!JJF5Xl<^33!wJ_w@wFRx<^FvrY?DN$5q9BMglX4cqc1CwEVZqfLLI(#lVF2b zx+r8xmtl{T)-e^57!NQeK~3rMAtZv^x+ypm1c!YZ5CM1}zCsi|fAXjN|H!+1mFee4 zeP0~4uy0W}=L0-AmcH|Rh0woVXgp+aGw2<-ku#_s~3|G4IrcejBF-d0OBaUesDXNJbCg#(`?SEt+MSpK?0b-+G0f;HkKXVfiTX`%X1AcQ}%; zX)ku+6?CxcyJ zQ+uzyKwS#Yisz__kYtYcU8Yrz^Hy zpTmx_PMvqs5QhVH3^hsl(5f>lC{tU&f@dP_2!%Ch`98q!+<%(vYp3Pu?I(0?{H82A zJYg+1L!M=9Z=^H_M_q@%R}g4|cs8_ssB7BmKIx-8p&q-gQZ73%Z=!fhredIbspp9P z8PG@pE0bw2KQq3CphLv#Okoz0>GBFSyhyveB&tNp90vA4M-@^f8Z@O`RaE&p7sP*4 zaQde~i!GqF8Q{-2I}K3SnCroy+5?at0dSH(4c#?~y<7*eMPnq=*N}MM|{|Ejm{Z1;hdw)nb1DK;vdxaCH@1BN|i=HQt zpJA&Il+fXB8q#|prwKTQpj0@4nIy-`dV$GMB}+RjL*2yUq$Y1VrWM&~wbqKad$`Mi z!+72K_cQrDxV|LjCN|vV+FHq2=A9tGJqS*rJ6ZsC2h2YFWJTjKWL9~__~kvHu;A{np5Dx0%c2nV+l4t$hjeJCyp*aGTGdJ_k@59$^+(9SBw

!y(KZRmDX zduV!&R*0P|C}hlY$j-Nkmwk&O)<1Q0rRSC(&NN+wMa=0>KXwOq2O_W$&77m|*ep!% zRnQp=L^2m|w%gV8Qy~CbH zEP{$^T#qwj3^DR49P{Ur#fFbzzfR{Cj`OBZ)DP~2B4dZ(&s;Sf)iIk`wn71Bw7O~S zLgydXyM_J%aeC2FHo~*GS!hGc$NW1aaE5Ox2k2;lA4}Nv#DDm;!Y=uNg<1nZ%Ii{~ zY?LtzDr9~h@R8jJ$HXtT1#WJYmyjHvocUVB5FTT&meme$Hl~UFVW4S#lS!-kb$A$Oq(%Bls2)NETL=r>DYAVt<*!d%<)D0 zz&w?&acr)lCa4IrDnW(Cgn(c_*AdC%9^AJj`ojJp3D=1eGO z_&!eujA-vR#C|@R*%~xQV8)c6In~oAjURQ7p%~2mj)(O}D2Y*~3*k|M zg}Ds~nInJ^F=|q^vn-=QW7~)ZQOedYtR?C$PryazyrZX#!}mMO7yFE7Tjy?#`rQsK z(kcT8Q2wZH8G1ju89CzCU9NV|lyZ9UPB5Z(~@`;qG&-aH$-m6WlR! zcTq?VAO;;1VP|lmy`2LK-d}W1Lp)7h^ijAgKlEcF&y z8YK;UT(WOgF|Rh0Sf8D%@ic)qlpfck5_u;(B;kYG2i=$RP~o4sD0tvB)~mc!azpsC zA01euxgxFE0<;J^GxKa<3O^~dc8B4-y?5GfU_bZWuKnI)C=~4n)8Y$_isZIvrvgU? zm>ptm|H<%%B_yEz6Rs4g_lP$CFj(f);x1jZ9O*CG?ClN))dlztVrwaJQHMzf(Y}e6 zTq%;iYt-YgZN3sEVG#1#F734FzkQNnQ?$yE-)$_`sy;xw2>F8nH{{JCJZ#%2`v~Q` z&_%P492;9IZ;-ggfO<$iU_-`BG(+Ah%Va_r0*L%#1<1%LSKvok_D!^cfeOo{4B4-e zhPwdez^(I%o*EG@qjIS`Z0Eli1%tUni%U@=ktF%* z%VbADju5K5P2`vgLe<>6uISdZz*g$ie`HDnZm~K4yhn$?ZI$sHRt?6}2zj+nFG#4- zQQ~<_T$Z@&;zEs`SMwJ`q^5wZh%DdDJU_!@`LQ=$o_B$t%yI&O`XGgS?baZ z+$iRh2vB~>s8Ot4DKi)*5abbT4{BZezIs_XQNc|XV(x+09kugCIAObvV8wPn!uWXW zE&VsWCLDhR-pZq%Wy3oEoqcV(4y)t6#%n|n9TQR~X7+{)u%bA3Tr8ajp4Ris^5plL zPxB=5t3{W?NbSKt&8%9&n_OAk^1w8tc13(IqI{NHLjHO~aziU^hen(%eZMESf3L&T zd*OyCKRC>axz%~)e>hA#7*`){{f$@0Q$Cz1bn7ZOQa-oSk@tBdkhpnL#w#hu#U4I6OvU45s zI=+f|)#z$Sr49ITjDaYy{>qar-G3JZ_sL%Y5E$;f5()^E(NR&xZ&Ak#QNvFK7G7qF zq0hBj(;UPPzLGq5a%@n6;j`8no+~@)ze+B!9;Y6NL2|T^X$v1JM%D`^nuO5gNgzwa zKlkDUlo+u;SLgj&ZZpqo>`?Lt6TfjfxGPP2Fy?7#x_6JtvRLs{;>t<@i_iHswyBd6 zUmT}dtcXx%2di!|Ga2=J=7Ex58XYFl=O0d}Cm=zw@UaNFn2wBf>e+SDO3pC9U7HB%VR!dlRVgFlK@c zU>3xK?G6}9fiEi`Cf`)vtduxAF9t~RE+ zS{{10O)tCAYIyU7{=98qlDp9f^w z1`x7V5u4zS3$bzsg8#Zc9sJ$DX|11EEkCUDBmV0&@Pa77Rieuelz#E_Ln&keL^qCl zP|9}!@*F@*pMq(RfcBcV9z;t`N*L^kVjKxu^dijX20(teZ-(E<^oGXk2oC{jvpcy8!%kloGB-cq*uauM z(F3$>S&*24tqYGdks~trSr~@i>&u3_eZ$8H&@TnJd&`I&*^kQ?;FxE_PcB0ygm3!6 zOb0u&ZZhR0mePs`_6?+p9aYY&)dl>|OaFKbT|UTQ_)FwG^up1bKjqO%F3B0P=(J=M zvQ$x&B%=TN2)>zi0?}|(F@A>DK>fhVjQmQ;UAj^sPs}i1|7XrKi143maiE8$M_^fF zuCL{&f4qc+uLpq=+b)LZNn{>8mrAk4(%&zMfE|JoiW$|I$oKRN?l2S0?*jI3IAN-MqZfYF?{W z=#h`P^{}*Boc#7&m*1Ce)md@l$yVrMgO>VJDhW^6!ru9|bK?m_B&mc#m}E;iC@_x! zjl=~sec+COz;Wj9-3E9$oVvRp|GGJJ4F_Bmu}uP+Z1qyjfuo!=U1dz)qL!oHf}>W% zU)v>?*%s)Y6dMZmwj%F5n0lLg{J5n0xg5pOGH0&8bNyX0f^xA6DXjyLll%b}*_?Gx zuqB*?{_j^8`iz1MZ`aR)6$VvlSQSEm7x$3?_kn}HF$2it*8L~mkE<88(r&)8$-MD@ zJDMDKfUZrz=eb8Dpy#9e0PsQ8*#>C$lFvBCWXE(GR+V{E-h6vhM zOXXcBg7O|rJbzLx8+G;%407%7-)Rc)_5VD!YX!V0p63E=1MdW%6+4xcX|4e|xd6Wp zFDpQguk-vBz&B<5MDQ$#X=7AgFkZw%0G)abirmu}mT~rN7IaV$L7HGh-qfVG=-I5< zkWJ=9CDqRW$fOO|=eJrPix2F|=qEFxag9VZ#;|WcW>F6xqF<{yKv4NJ{Sn}PBKV@* z_%@P_zqN?TP|EX*)XfH%2=^GUG?snzy5qj}2Ixw`?~qK#SR|w`He3RF!P8Qlk1fM6 zR7_NM&Dolm68LBfLXqY#xeW?K^S5PKNmVmz`n2~4aw!6w9A3@8&D0Q}r5!@git9~Rh7t-%1Ts0583p(=)su{uL6krwi2gB4{}Z|uQd)!s%D zQo_>{p?636`0&@x@opL2Prqhs$b0~{HaNGw3_hrMxd2+?arSrl7T4n==Vg5ER4REY z70m#5Z@><-@mJ^<0K*x?{lovIWbE4@(CGK-9qp|IZ&t_y)u+W-#RNK45%6|xpa;2j zcDMuiYNy$1lW#bI%{S*YfF3O1=jEfU+ot>ZdFl8Nd{)jn0^Ee05SCPL05)KN)|vtF zGWP&OSxrnp!-w%?&+Qfy7MBrOiw}e)DZu{+g6g681{@bp02<=&`$YsJ(c}J(nFY0GFiu!+EBaHSk`2m#%WPdU^ z+=P==VMsG1YN1eOo)2EsZ~PG`z%aZCuIlt1k_A2f*E4^!brufUGV}4~N^28-6(4up3V-#^=<{ zzsN5i3nPRAe&0_QPj5@<541SKZ0@%`wT>>*C_vhR1l>XQsKapn%r>U()ow zhKBy+SK5Ube&MCH{@)&cUao5`*>{`BcqtN zlwRx0H#ekX9sNHbvCxqvB=3S>PAkI=hA|tRo-ZZU{S-DrX}(wD0k5BL@1<8Ee6qg> znB-fSiQh^OLuUKa`=Btf=8ZmxP)W4krun{31M|Zrqr}#(*=$Uy9$MH(OKUvU;!GbvYfO26{J5>0 zPLFscWaNl$gD3HLqI^PcsoA2DhPk7;E>SLbJ;8s8(_=Enfbwa^9o)<#rT;igirYgj3`*uhIv~*CeO%IZtc0K_nF(c zT!G?xQeQ~ic10Sr2;7UDKs(QnS!BrZbvuhHqsDxvoDZ`k?I}y6jpFuyX!3}ax54#;4-rgITLFiu%Sh^i`wq{ql zr6BrR$K7a~irEu5dI^{&t0~%%gw~Pty0Q*V5hO{6>F$O7 zm8Pi1n+W;&?^BoWP!wtBIZqquIvp+EaT=2&mYfAUhAM;dWw^A=FNeQ-)2M1fag&!J z44j@{)&rdvHx^^A0r3R(@2}cfX5_6^f=Ua`>5ea`Al7mN-e`mkCLjGGecLjLYUsW;f2SA%WikPBvHfp8GTi&vC&sC z?#dA+!ohM0MJ$RXS$Y-H^)3a85VU|L!Vbl46A&5A1N~*Dl}%oCj;t8ZAi5y0q}vC6 zRLwv(07E^6eqvJILZY2fdpC=Og~{n6RR)q5!WoOLsbDX*2V5l}a(JXgTP zD7`X+2GnplYJo}@h?-AVrs$Uo!J{mm?pJ(f#>)O)vaEHsILD2XWDhEmcI@hndW53E zV{{bJVAK=0`%dtA%@Vk`cCE6^w*44`sLR+)uTlFyC2EwtUv`E=TO(CLabOEG6wL_S> zRjAeQ3vbEK3g&(yk;pE0nd6^0qm)^fd0w_0M>@(@neu@tm_MvCsjAKP z88J3wJc1R|Ae=i2hMHq_wKC@AYWmDPoz@M|O~StyXe@{7^tjcja_ATHC1k%u|0<7& z>FgXq&>CqeKOkwAPF-?eF9L+;#IujwHBa=xI-gXr;g4Bol_mLEv-&XdsdX7|QD9_D z!vn#S0>mhr^%oJ}m%rFzv``vzfZ_3a4IsZtwtO9s@#+=z)@QUqlDVCQW)ND+l-acP z;AtG)$`*J7yw`T1xJVIN4ZK8 zCGe0Aaq|`K3mYe5mXT`@ua(G`8vaxVAQsDQ6MB5U9jq2UjRO5!))oSxJrm(?`9j`L zp~$mnta7FpJzgS8UzvvRcU84al%B?|U6lU2yj+~NNmt6$3IL3$<2H1ynL`&3QpKIM zFc%sHt+EWO)&AC-IaRV}P7R^AbjcrXhW`H5x&_XU|M)DN(m0yWBi7C)JC`a3oOO7> zyEPjb-^&yQk-X?Ul<4y5RnMibNOw#ytZx9}q@09P2dUOTP8aJraj@q%gE4_Ss6m=j)YtRAw&$Ubzvl8#H-??Amv6GOA>Wc+(ya0;Mt3`xKGqV9q1HuVtMP4>HrUQ z=U|zLl-94^hldg%T5duDb=HP%VhY*{;vGaR=r$-R>6rRuWNgo~TLZfNKSgCKg2zQb z>(M;0y_yWEIU=6t$86G#pg39NQr*r45k$$9YW>^nxt3vi2>VdGzV2j)L;HHbw9itA1o;Ps7l z4V2@reN%4PUVb9*nFa@Xe4(x*UEsJf_=C_^hi!=kNq1_-9!fK#47Z=ishb zupdeVGKSAH&VU&fL8H%_X?3~?5Hhn@3`2cu%iIhanA`DhW%l1#F4j3-aM5IbM-IFfo6MOuU@2fh zL8LYOeo{lfJC$xjwdieQ+Ph_MN8*sTuFcLnLE&**kc1Hu%c>wIccAJ7_aZ*EDZb6; zK&;<>aXZnhDl1FN50qW*4SC z%-ISPJ4JJ_29F?uH;M12U)e0ZvZXtAw{L0AFoGFQF|;I=%q)5z;!^SZh??xuG*hw2 zlMgVAD`VNMW^jEJ{?oh=#jk(H91!{k`O>vU z(4QIDSLe&;o9It-Tv!G!EzTj$jq~6{y5K}6{420dX7O<+4YMuW2QdMoCa)42N?0Co zlhfjcso65L;v6cP_`-EVy4Qqi>M?9>s!ioi- z{sK`=>r=N2l~PV4r7%1?mO{^ieLxjIpn&PF#zpnJ^phq+$yYBBH*8WuhDT#IYC`h0 zftGX|Id5~BSQRr%wuYmEjO}|$YP8b{i})|3>IcSgG4a9Jhb3VylO&JxKzw0g2Bkk5Yo`P|_(fRansZg%1`;h^ zO@!SRIcEI*Ytpl)D>0)Q$}vtoenI+B-iP!dGsc&e4v*SE5Vx{vvOFywRdQ;S!Z7!_ z>zs|}Mk;V6W#MKAFobmm(?lNfEGH&>X?wm_GA(?<)f>WIjiS;tU`lydVME!q;$uS z0))IQUpVkPWvM|hk1h?vPm8VwQwQc4T_YI-2Qm z{f}5ulxK{DH{h=y3m3OQZR>KjXHEm#9UmvJZ3?jnJI&qYC0lLfv6D_{$!}!n^iR#; zChjgr@C-Q=43({EE~7eVI4{-$J%Y(UX8X>*Q-$E#dgTpEMok1<{c&UTuCy+U{n&o! z3k@>Mae7EmJS@tia-lI0hq9O9z6*(=r+kGs&p{pZ{8}LK*yCh!?zzdQcS>2hvd{9Q z6_Vc+m1d5ZD@jb?;L+)e4kbqcy=5+Jvw~JFf(A>`YPLiW(P*1&+g&hB zisrRqa)#PUBd3k4_1g!0Y+PEBcX4GX`*@-C3;yRh+GL%Qc|47K5BOa8*Iv88rR^1H zdzf||5UCmDg!LX+pHaziIPwW-bo7Ss zj>k)Db1%9Q5&erObMhn(xmC^jZGm~b>YML`-WU@GD0Uq*S2j0+ZWKLf=4!Lhs%ckr%rLj7(%AI@)6oNg z(0wR)m5gK1r95W7mr7RnB4vl}n^jkGSM_} zQpx4#X47rDR9kk5l?jVhoDhQtaZT+lFA{)4bYCs~YS9x)8}e<ho@?sBU;sC|AiA9pl~ySWI=$#IW&vvq0$ZaiZK_A8(lCU)IMoO znhNX6I5qk3^Vl(c;nbI!D!%Ex{A_|!>8`^s)eVsRCQ}-J6Lv2cmnnf&L*ULyI84@w z*E){5g=TglTcUeHwa;zWHTh1NDP7m(LAv+G?4eL$KSt8xO=4Kj;A#RpL!LisGd5dk zpzPm3?Ddhjr=A7^mM4!ghF8H%4A3S;oQjb=OvvZ^)}|_?lqz7-L0{%YZUGpLrUG=t zH|GPId#6UzBRB9#&**`UegP%t$&S9D0w=VhD?Zx>9F(CbwQ$zIT7jqWlLov}gQvOX z--gW(d9zo%Z0>hygLH3zc2^j6ShLo5?11#az^(E_X+t z>KN76>locOu3>0wjlQhW$R%NlE{VRpBJsve`=3L;ZbS?}Tb#6druLX?8-d-!a4v~m zdZst;Sw96KG*&6~PvdmypE~j9YwAW$$UXsm5Bsm*Kfs?}j6LRo4xL`iO~?GuYc0Vf zYfwTb)=o!B^xc)QPaYrN=Flrg#mdmD8*}#z%=OQ)PAmhps_46~BBA!5lZOyh{g&jD z9WY9To#+dBXOPR{g8jEbb_OLz8SU3K#~B(tF0>)$$IoQ`ijYh%{Zri_(|rX)KZww@Sv9xM9mGu2vqU4)Xs6 z3*xAC3o8)e;Aci=&7p`D2T0W2URtfi#8UyR)bJEUbVsJUyWbdo0eOMCG@U%6- zSf*jXs34d_nDkCUaGVb!Ol$S0U5V`LR+Oaep^&L}I#JFHG&rq>$14nZ>HY>OlpHep zJu3-OpGg7L?4Sbg-D+2M4waNqg7pKPF&`9hRRG(l!DJ@2X9PmJ`1S6l`$C7nw&W%z zs(0$Bb2tDy05hV0%Y0zS<1!MzU4SYM?VY}rzbeQnKx8ADX}S^J&KCwcj3E4`#wuy@ z;N{n^op~K(a1f8NS=e~P?fs&`xSpY3`T>)_f!MDC8+79}DG>fRa0J)F+qR=Yc;Uq9 zOIoqlKk4WL`46h>eRN4r)T9xp>O?J}qB_CJJ&(0-V|@N4CIOjmB~FL3vn!N+oBo0S z+TZOS-}diIH-xqzywY%?(o}<|ir7F+gwHcc+Jmu5bRDu>;19XdwI9cy9{AdVeba;0 zg6HLR?!nc0ngyB`E)@H^t$aYw$q7hQEYhWiK|6)1HI~EcFfDp382s9}dMZtV*jR){ z53TvC^+g$=o7_)At<2HV7$^6mQfgB}muFpdaYh%~-a1~5ad!+wdv@nDc_D1c9_I&f=VAWTPE@FkHE|@HP55T1s%abAaT(_h z{=x!wIEnly`e1qw(}r>i5B$gT9zoPpg!xE#as04mQE#oMkxL!6#4qpbnnjF>NhgIH$tM>pm%Z?-C0iGDAv1m1bl&G2G~af3NN zX~y=Qa%+jFQ8*OH(~ZzmN(8AS#uj$OcM~GhqlcG!mDd};ilK!9G*)FkApH*p&ct`< zPtfT);Jw|EErLf{&_H) zS?2rJ@9;m^t$!4^Eim%hH<5h*Xl_Jz?ex;4fiCk);L*CRr)hbMsX_kGO|pq4joxo@ z(m8Vm8!j)sqK>m6stflRYt#wOFlTJK8hV z2nCNH6B)OZg;^Hl800U}38B(!Di@`0NOsy?w`fd_w^rQN8zycl~gQ)1Q%aZWc$c|6I>MX7QXQtc8F_ z5)ETjwow#LN*xr?nC? zhqUwdi`Qow&ob{T#XeyyS-Esu-tw4X;!cF$a}W%0hrk|clWQypkf7+V^UVRj;K)^a zv3jCFfOLpx@d+3%Vuz3mthM~e1%ZZUx1RxPSr ztdYFi$V#dlqwat8Hw%1=K#7+5*U?2XRaWGlFh&gH30g(sQLy=`41a&t8t`Jy7$_sk zut*bhs|eWVj4Iw6Ywx{-_iMq``~cOXZ_MQrzvAlj;3gvG{UFTk_yrgn`zqE7NhGaE z0XruDlXc4bHx(FqBZ*{UUJPtjC^rForV6R(g|pD+;bKoKWb652bMwDSj1AV z&n9S3L?7^t@AO0VDys6|RKbFHRd!s%VaJ=Hk`B9zquU^D5sG2|n~>LTPK@dPyX?zA zmGDoewL3i%`tcYf7NA^NU`@9_m4VKRrW499fpWQR4JC>O9#aEc?GidaGPB{^lI(_a zdp?8@t{zR94s-qYebP9TE&@arUEC?s>q{f@W%YAR@z1NzK2}vn+rKn&F%!my<>6QW zw~Qmuq^WNpIaK#bEwB+cxDU#Y!oQi&Jtb*O*q#p z#*1g__q|KbLIkWa$E=jR2HY>u?M@k2+W(wP%}aL|^WGzlru^zjly}LzGgL%YV*}++ z;{C4FJcj$cFf|3GO=YWXtKk_p7K4WTj{5S~n>nWBX!#4eX}Tzh2HZX%%?RaqE0>0T zVaU?*3!)0g%g1J?Ut9g80EwKpw-mv_f<(;^r6oFx^f%t?2?6Vx*73^*3rBrue3&t9#QcTbhIZPWW|Qj*Q1j zlU+_BQ(=cUDbYm~Z?v1_39)ACNPH4fcyy z{u0c7em3lpvC(GiQ`1lnU5?7gf=z9eXhc#9cOk$GyhcsKO^5kI>z(j*#17AzX5v!VWz!h@86>JmU@ql#?yRm*U9ECAVm#^bNU4=mW{N*N+(W zYGiiLw&bo<(fP4!`MgXmpeFx+QS4%9+u&k&`92@m;ICL;2x`KaiV${xm|)@stv2Z_Sa++Li8(KDQGhG38TQ5{cE+c9ffPE*{T@Pu=c;#s-;xb9kQ410 z?wGDQQ~1&Ena5^m$oL)lZ$ZCIvrhgv0Pgp0bbSKV6x_e?CJEtNm28(LF7QM;DwD9;G=I`Y$^Mb+p{{rdAWF1>3Pw_!eNSd zH~j+1a`qgvhtV0YBo@UDdub=^lv>s)sMeeVqq&fMxNStaWgmM=)qP#^EdmC|nf=(Aee?-2Gh-$CI*yy+VsQmdr@ zS@$@_3UAmj=zGCI?%vOLZ|-*Z2HV8EaWe7ZF^n<9kmD=R)50LQGs~`!G7j|x{P-u# zm9{=ic7wlJJ{Vl^@aufY1+iI?6U-!CjifmEfcR_XN1TxHdwLUZI>{uyy)B%R%*uMa zK~Usb`pN@uPjL!&`Y{9vnd^jV$2M!qS1q+m3u2<$WQvh%flm`!sXalIRpog|Qf@P0 z!DI@iy`+Lg6yEn@^&Rm7_!}|wypu<{3A@#{G_0}ImDyUh-N4b=5LXgk^^D(>zRLrM zIBY{x+2w>AwgHt_4=lz*H)e`XS8B>EU`dIzD`|Aw6hTy2M0H7Jnj3)cJY@@{QQKTe;YRX^+E8jzrQc7 zn0nu(dYwt~E6=+(WaA8ZI=83y0~fy%-)WBmgj{wn+<6=DQ-IIrV zl!SQC{?+L;{JK3^g`*up9u2@|M*)x3wDqeMP)>(egmzz=^vl08o?#NC`Z(~AW@pF7 z^5#iSO)Pq*pCs`!cXlJ^)%(LfcDOv1wH|?%U9i!|dt->5UmFZlWY^L8kE{$~^htz3 zjd!oQeqGIUdo^tocil8iuZDl_AL63x@L)pT6HcWTuq$9x2IF)90}-7)=kw8Eg5r=r zv_XBYxDz8M1Pf6)yV}QnE%BUW4)NVXwISyx95r($g`gs7qSmx_)sW4=TA;eW?q$o0 zcvx-l)uxn7O;|v`s=&oF@tr7(?IH(9Ei$Lz*oKTt$*vlAF)DXRfA}KHS$OTyU0teQ09bb%7RA2tnsx#vgk_x~|*LE>|Z> z+VMF0tuUJ|9Mu(N~JU%$Tkfv zGxsML@6Ga#x--oPmGmKLe+rLVRtS&W$AP_7;9kCHu0m4@&}Cx}pa=S1Xz({A$cax8 zDQ|qieRT(s-vuMk*l^MJoa0W&(dLBk_vKy(NQzCE5Ulo}yMBOc$deKW%>l&*yD zj=$aQ$G9nvcS3QfH|Gb;9X-fvr@w=*C>uTH`=vqTBLwu@F$!fziI$}F9TOy$4K2Qf zV~Be`9Oy8mRQJO+Kc-zco)U{{t^w0o7HQ%KGtI4#;{kh5R4`*g;5=PV$qV~s^-VDK zif=d|FoLW&+aBZH6I|L3LlvcZRmnAkH=71xiuru7QgzGD=Jh4r8L>!ama@Wo5JC&= z(H>ukDR4nZKsZWc7U$o={-Z_HGNtf2$JA6AS(f=+CYB@hvZU&b_#Mt*xni;e<{G(- zM6%Kx_&!Uw!%zAVg43z|S`r_-n{Ls4h-2@+8l@Dy1&|5evX9c#mGaEGb;^t!3|ng? z*BIR|&HE6$isu~MFTyNFyezjixzx*35lt(CP#A1Iao(9=kY&j~jowT_XJk~?4d5Uy zg!{20qv=lxX)1{?kS2C2Gct0@`yjD2PkY~&U*zdm;q#1sQu?dNRtiDC12H{SopHjZ zpS$4OMn}4JTMCp zNyaC(G`&y*W;W9}0rthMMhG*NTFeQc%(i%pz!)JSk*Zvj3O#GtzYP8?S*&$Mi)WKf zM>4a4+D>1(wIS_cF%fli^uMzLfWSyeu;Y4PS-gj|x5tz@YL!00zQFW6RJq5!)Iw0e zwJi=yp`XVPCj7>x7ttAF|2Q%>&$$p5L?@R_Uq?jck;iOUIi0!# zctSGfkHn^Ikjd^wTPJiwQApBmyLgz+1fZaUQwap}`rV&z*lqtLJ`8Oo3ikvO%8wVa zRcnM@!=);FwmQ{t^8EM!}wC6COiF@mOwij%V^(Qlu;;daEAI+D+pLs$f$cx-^iu! zb?+wJqNB7r8^yqv04G|i_&{x431>s}ThUUe=@?fN#Uk3&*^ZBx5A^6fR|Ns%1b8vb z)mhHTgJmi%`D|b7ALcNzl9>Cy$f&W@*lPEo=73;(Z`P9g8BzCE(W<;L((KN0HEX<) z4aaH3ZNtNN>wZ0n0@`e%=f1dZ6f?TI=qrBY)pXkwPlli#OOAf~t4vQtOzk^_eH@AH z{1~}IwBNZDqDDy_tU;M==w}q(wboDDFK*Mq9=k%!-pZ`iRZQQ;qPHpNlo`gV_-EXm zdnfnwsYVjqTSx8C;v5yKN~cAx@sjpnc5U;1%k_h0{o#zvFEA8C`Dor`OmF2(5+Mb% zVB@)P3UPTH&fV0-4=J`xPItEEF;qP^O zTwJ#3F>{mTVJC~fTgMR(hs(eX%OG({QWmjj=Yb}k*I{|w|Xf=Wd_gnQE4a{fXn zw@pqJ+#%8XCT4oVA%DH|;SD+h2kSWAR>o04-t<($nq_X{<-KR}3Q4Xj$fIcK_I^8h zj6%T0cM3>2H)&w&C$v##tVJieZ8&WRXS8{5zM1ee>xs3 zkz3fm$3E9)SzFB1aAZzDVF~rrAJ-OdGeM$QrpU8kT<&8SHy5%ZxAV0*mMe|qYaH*} zxn^0GzrOp@{90Q1HRM^#JfL>648M;kRwI`)Sw=W|M9S0oZ&=6)OE`#$Fk3j|+cD)U zgFA?Nua4tQjBU(k7ZsRQ>>ZvXlULtpYn}Pv<~BmOU5-`#SDyI2^K^{#xV?bB7AVT9 zO(R%4HK}KfqN6v@5>rM8OxIAs!R@3zRx=SsUhF!L%v~`oKMO5d5|X;s47+Snhl2+E zGKxB4y{4!;pZx*poS8GY*F>m9Z((UGPrGvDGFDbFZMUQakHKkKv!rXV$1=WWJRHHE z^sN_~BaPs5Sc8H3YND~qV%0b-o=hw?T~_xk{`UK(R5YUKP|4yXhii$#5-0fu^;amB zt7nF7`dkhB0@KpBh}@o@h5t}}?<`=|DcF%U4YyGNdCr_o0CMp5lj$>Uy6To|4Gxl1 zW8I@2XC`GrEmuEbWJy=v(~}M*tzUI%G*6c;NFZPt?*0|>QGpPyhB1XVdznKNj{hOl zAW&<3aIMSl8~K|a_qt$hP4qFJldcjZ3(;D?DT#QZcBCH?r2=v|s12IifXz>sncQV* z!w*aL^~x&kFnb|F8T_&1p$3#9GUlN0wtw8nUfUoQ6YkfpfwTN>y#B4-LDVE~(M`gy*ZMjhxj z7+%&9b9Lh*3zEq&)`bJ}!Cre4S7TaSXHIofoui_^OyUVV;xpZ)ICPUW= z?`_6|cpO4^qhT*3oX=B}t+@pGor^+wZ&HZAm<3mX>OW#XNPjfSIaBV{=zrJkHzfIN z1`^ae{X-U$wMjL1h77w#xconC-9wZp!4fd&wr$(CZQHhO+qP}nwr%%q^R}%!{oeo1 z;G9`iW@J@vYE>0qMkw_W9SQT2y+_9=4opp~_H+)DE$z68Ko(CKEdFJp>YTM^rgE)^ zwo}hU5;_$s002Nb>tr1JAj2@upo)mb%!RSMx&jdig_VbMPL-PYVn!t&hn~*fuF8Z#Bdu+yK$GI-=lW3Oh}piC zUmYD(t2(3}utM3+_=71L8)KZ-e1qqg6CADbUW-BDgv57j>>v0yB0L#@B)WY(;t8mO z_={v241Do0C@WR>yzE0-F3K?&RHrZtK;~p$EG_;&h|%EK`d8KiiFcul8PXM0&zgh= zy^>TzDE@UHfnBdGFhdoZRM?n??jtT9iMvg#1^NyI57NL3A~rLTjh5Ohiu`MT@2BAXTB?{VWx__xT0u zKo}k?oj0S4ahiM6*q1Q_S0vJUcD}sTq0g?-#+@ijvLahoW@k0t44Wo#-w-`1L3Bb!z=x<*v_qLfB3L}D)h7ta#l>JUMGrbu z!T+1VJd?g%D&vX*b-4zfDlN5(-)7rpFP3%a!!pq zNfLve>*4IvL3wYYbS34lTC6zm?yyClo-ROX*N20vXS4G^p|ceM*P?4lQbtktr1>d< zsysFO8B=$=7`s`OrM1=3pUaZA8=MOe*W3P3K9o*iId$d!$)=Q+t{N@XCsES?-C&AH zXdS`AqgNEvb0-@g<&Z|}&2oni?VgTEacn{qxCx`!dyM@<(9g-7>C4>(R5oc(uv&Xk zS&X$X0_!=e2TZ8@im=iM6Z*aaZ~2Q3i&@{+4?KQ<{3(z zp-*SvIi8rH)d^TkP$A-Q1$m3727Z?*>$-f{i2;e%hhxhEM=6zEmeZBe!kKp|^RJr! zs4^aV{(4UQkO;`G_CW-$Nc(Rv2`YTtm=U~qw@F>Lz*H{iA-lv#OgW6`zl1GoiuWvJ zk0keKRK(w-BqO33ZqZivK#Zf5j*WI^e2jov!_uUiO$t}{s)E(@D#5TyuWKJjq-0Fv z#L0;U$23O>-dG@WVp2D8HZ8zu`aCrwCJF$1WO5%SMi$9;^FiFfvHehaemF`kh*-h1 zSsY&s_JPxTH@zoG_dmUcjY=j>@YYxIqo(NYqa&KIhwet0>bUP_D>m}kt0*PwK)}oD z51z}@8y`tBkIq#b@=|O{xz(D8&udM_^>%1A&V?p;o&q>Wllk#B4h~dpP$Q~qv6Dbs z9cFA&rgPr&18B78FN|%&8uL^2bxg4o8iMTz>$Ys|{G+ zxe~W@Wq3*+%2EB4DgBu+)I1fI`l%TE}E8(BrlXPFKLl%dpGmBF)jslJ7!IzGphZp(jV|%F!|i6 z@(;vb{bYOYmBf82&eqNALoZ(!1sius;ql6kWgfoZj${Z$sA2L{5E{k6ma3##AcvPs zCAi-5cu;avHA`YAg$h=s@svi?idy(ny${2=!3Zyzr^h#EiXK*u@%Lwzm;$RnC@P{5 zovEzR1pP>eB*1`==nqH(aw4WI&}zU&i32_s1z;ZBfV+8dRyFc-&8}aOyjN?BF$1xEtH=y~xW$Rtp1#pqpjc40(vdybfUGLXQ00v)6I^nAQb#w8f6cGM>JwFC zdnW>om;iD_0zm@LrYTb*t~LUz;AtLG_L71=PgrNCtpb`-?1OgtY61?a5pFQ&ZcLEG zDGW=Y6Rikpr0s=+*wQCn8zH(YL~T~~(lgee4D?0(creQg;5^ZTVnXSgS;XXrrYd-*PytUaHxOPgkfO z^YnrYm>;y9bW<>ZlvicGYq9&H+m?vjfjz(A^^8V*RHIgi8w-UgNc#LD9o z0X`{mWa{&grGkuy>psOfM~xIJe3ne|@O8!yw{)2YlNxb+^><86e)AyrcUUj>Djgm+ zCkAcM`!=+HAWtsWHv&_Rm*c_tdvAwhVTGezrKTAp5px0_^vTh8HQIQ%aL(}OOhltQ zcMjycHkZSo^jy9M@f)Zczv*~@duxsf7p7eURC5g^M>apybHs48z{r`L2ZWO5!?vX_ z{*;BlniTpV?L-f*-#!w&;7pS^c)HbQUm+0>VIs4JIb$ z)!H8ch>Wl2gv%$@4adNTmVq;iJZ(md9Uk8#-Sf%AM^pV~I(lIBI5;vPt3rRmZEU~S zM|bP51OkfKPWYKn;UYX6LyVlgC}5g7)w`hDDqzDwsD6kd$d!P69Bd5p{?n_5Zmj$M?H*e4gq`164O)H`fQ(pQBV8@~y+`*2=pe(_Ed6rkmgK z9zu4mNzh^Dtq|087Ek@H*l@VU#sHE)Uvb6YFn#S<|ArVrXB*;s7rg4gB|y7NhI4T6 z*E64*F+*s^W-Lf2Y4*`Yu7d%vM^gA|QJ-Wz>8){~X(?NwA{Vs_nmkS1Cd)+Pq=gB@ z+F_Z!pCaDUq|VuteV12VFQX5#ORWNi#~<_KrE9)NywDO6zG?^Q5iURMCqA0L@Vh%& zyn+`xU*$}cnTxn#;=G2=bf%}Q$(SD@QKNP9##*K})v>mzjRMuNIzKJbYcXE? z{{&wy%2mg>(Ckth1^;_n+x(T?_r)#Z`gOK zeo)a|mFgO2nLL&H*0Mr?SWf;!AF8xcZM5!5cNYN*^GE*b8pafN8rE%mH5a4P@74y#tuhGlDyWXQ3p-c}P z^t93()a*|Ms}DpTcd^H3Y9?O!(srOn(bRN3m#dSMv}_8RcA(=XTG11+DIR;!6T6gT zdZ4>w##_HB3476!e555^z)tCt;cr3cO?>MaIO%NK zvHk~e4TzBjULYibwWAG#sMa1uX>_j-xxOzo5J;quDJS%Y%nGmG05Uz1KhaqUV?o-v zYdKaHDauv9-Rk$oLcB8w_R8K5L`w#HGja4Hsy&&_!fG8^>+jd2 z_Da$ri9iLtVWlXdYDs+j8@2ZxVR@Bzv;HV#5icv;Mr2^<=)m{+@qC`0jO#f>-sy!c z_fGtoAdhK^3}Zs3#62Tcec8bF9Z959bP9oOpcYko)+x|LUQkc|&^eU%Ax13i3YX@` z7;dE{K)@^^jY&z`mr2IiOLW59OTO4E6$$F{XD$OINozvhnVraCpiPq0Ah{T-p^@Qy z&znQky;>SQn-+BVeotHCK}B+GR1c_9eUl^qec=~I}570st~yc+7A-%K)*-D->sANyP^~y zdn#v5b>I8+CpH}TYG6|^jqku@h#}A+@_-SIxyyM*=z2ts9nhMmPK*pn{iFl7fy1d} z{cvH0vDd}60WctAMGjZ*)RdOjDFqpS{#1tI!;5`WY!f^``yR|$icP~Y9qT|j;Yk_!J+&LYNjw5}o`Y%HiS zrPROw++AUd*rRjs-L^k59^TJsYU7Aez#ZXk3)Nt{>lSUYF`@I1`yo8Zqj;5?8aJ4t zmx~#m%h+Uu6GD1z`@)o^eQ&6iec_t6h3?>*cEvNA)&J%bmzMt<{RX{K-CBQF-&^*C z>VXj=b%mw)$sjF(!tF`na`Cs$s{-=C0LK@;63 z++>L@Zchb~D>mVwo;WxOaU|>(z7bK6Eveq(*-T|5lO>C+wMOLI`d5DIit3TL@uB5g zLWeCy%A=Zmml!9_A?TyfHh!N}wP`ZCaivMai#w;8ar6*dyBT}#;=Bry=xw)pEJ(5s zqY8i86KosM1IH9oXn7-5g~d(q0m*O@sPbI z90!{4N}psE$aej81&JQ#6bJ{3z0tS5?Dr z*&5mXK59j}LFKA0f&sD2FL6eY1#3M0gh9qK|BZ>zTz-X|nInyA+B~9{6b!l7Y>e;} zcsw(EYAB_VzSzfc8DY6*3TS8)?$HY>n+Z$L^n1vcaJt{@eptN*7G#VChx!$Ks%Te6 zt**+?3BaUbbmTZE(9v}0@pbTm@oz-~j0&#e-8bWf=G^>;KDa+jU!JZ{SC<>FiJhiQ z_yJ3g^wLP|9^J*^tW^Yy=%OTucZ@hZFsZ)UUw5@L3R!UV#I7E-0}PTdsV2@-5i|&P z-px*HkQg)I%?p~Sg4@%87n>8VbXoeAb=!r1JRKkPV_kzkp0j!Y3^hZbn|V?h$d1Hc znOm(IiVkOZm{EG4mmhX!n!I2_>k#ZhATaXzk<4cxY<{dbdWw><^(Ga3;`Ri8b^>&f z-oqx_D^9Demns!A(%?qM!tsutA0RPh=Q)*54y+UYfxt)e5|*31u^RBLF|@8&R82$^ zOfu@28G(INnXMrkB#c-&)o^Op;PS#uqQlh&=LCBK(ZF^s9HJk_q2ahtI*~+_*){GL zbJPUfA9QEBb~vK#m9`;5dr{)#N(`SfKYfC=jewu1oOaUuQ^TB=rOc)CR`M3p%_7?J zD+AvS)eGab;nV1Eepn~Ue=ma{%zeCC1 z#>CLiTi6#!k~CzD$SlhMn-LG{cZhm#P=bz&OVs2n2BD<*0{S~;{5KO)_8ZRoQr98G z7I&GcC^QTwhJxEAxEpVhszSOYT)|luyaIUD=>~I={CIAC>b!a@i8UErl1d;Pp%q5L=T0qzbdp>;mQWgTy~xneasPwt4q1BH1CKlO zj)mC1k*5jGDXwye05;HxnevpCHhtX%pKKb)Vx4RV4`qBX)XGESpc)ew^${P}ajbO_ zG5(*H7`tS$;sxl8$ki-^qmpy_#hA5biHyReUEOo=7F&t4h^{cqCBHGMxr^LRPa=34o3Q<0975#9!xhR(2m1QLt)IQPm1j?-W9Ry4 ze2wYuO{uXgQTYY=1JJLvy*2p{3Pj@8yt^#}l#_-Z*tp8;5?GuEdK85hg#yUrw5XP8 z5$sk;C&OYUd*qstbTKnFXptJ{939k29w4R^Z*fBhTvX;1Ub%xws4Mu0v811%<5Dg# zZa!=)sX&C-MrVQkVsP zAb0MUZ~J#wL9>!6^71hr*JU5?scvDond6T_Ta6wQ7?+GcC0Yd>^7$L&97ppO5^I-z zxTH7#f~1=Bs5dKx`yxGnPlZswvU~PKQDqTu;$Tx|&w$d?`*5bZ0knazz*4)R!}af; z;y*gRb9U22^;Eo)!X`HD&Ntb|hCse!=;oI-OJPB&!)DCI5@iIzV6_^QX>MRzu#f3t z8-Mo9&wNNbL;L=_8Sj7m&GL=z?<;=M*!Xc}iG(Lq$TLjaD(+ix{C2MYtfb19HJL5i z+50WJBB_+>$aUG^Q0_7kE|LWgS~`$zs~3b#xg5-cE)06LLgFpffAW&F26jN#9D%5@5)S?qu%bm4AvZc*@j5fHTlz`V zW0lnj(k!L@oFYDwiKR~^Ry{uSe`*#o_c-&$#WpB1o%&2iFuJHh)9oX;7Lx`ls_0uj z&MY%zNT&H`i+AB>aVLfAb6pX`9eQw${q6vXm($^0FU}Gxf+oPRKhzkEUG;2k1q}3` zD6UjM`V~z=_P3bt3+QY_xFf7EIs~(1Rxs@J$bt=#dYGx0?uT`uKM^K@S3l zV?vF^+v~>OvQY=?XE+9th_592n=$>U_L3l&m(J-9$&Onf%c6AfgTYsx&=kZ;j?GKc z-c~H$uo~47P=X0w&WDZ_44)u|rIF2ETHHTwT#?VV!E(^&Mp}vHe8k-NfGnY2@kYrB zF|4HBiEKlkP@@7H4|cpnXmB3-!w&v<5SzpB|2nVAUE5T=h+uhaztk38K4B~?4lVFO z#D33-1deg;eJ~>`I{b3EuH7vcfrEsSuM4!ZlYB;@dc*g7P-Wrr|4iwe2Fv(_JOdhp6c%(2=}k{S?@&Nf42)t_sbZ z*$k_O<{5}wZPRzqoe&bl4K5z1SAS7vkcO5=vbtU;);b@v}B56K*)L^dhc zvk+rc00s|Vv(DPU-u9}N3(0aP6ML?mX-FxZ% zIikrSGHN2y(KxG_C6cD=a#0CL=bI}kgtbhLqXh(2rfcP4RegnZ@>L1a&BZFQ*W;d0 z(hjl;wIP%sB3CV(2(`UdwgY zLa3-c*?0)R#Qs8Ypd#Fl>MjS~6P>9HuzjP@9XQ2Ghgs6dL0QX9NwP(>`7OsVshTnd zeVC-aqtnn~GUkyC%*NxU06V)x7)7b!_YhXmv~uw_v^5|~x0l@5^Zi@14@qh1Yzq)! zdL_DgBR;?r`R!u4sA5<39XfK-ej56Z2{DsJZ3Z&c^x&vRVeqC6L~+{#VZ6ok6CGG$ z&~cZ8Q+HNY9P5wR=IiK7I%DginyT z7#&^nfqY1%A5OM=XypND{)JL`Pj3$h2tRFX-DIv{S=606*RbL^ z6mw}SqzA;DY6s~WreSu%@40~+SaEoNGky9qv{YIb!n(L3vqOEMl?TlJg~)~@14KGyTlUWS6Dlzn8&1Tq`fc3 z0t(3fqjrPa5lEFmEJRXuF^!)=GO_bX7HEz%G5&fP7P=}PF$0@qsfCcy{S6)BY4JRJ z_)v41$N3Qdoq;}Sq7GtMh`3FX_@u>R2INj~7vvTlAq2)w_g>)WR#%u~2dF~_=xMKl z#GZ7xHbkzhMrUT!Yl9OUpr!5Cp72%9_#u*9`hh7DsidH4iQwy_h6OVFxa;6 zw@8IkLC*>p%MahhBkvNWjEF`H6woB*Qeqqe~?d-K*komr+z%N)oGB# z@?gW+Jk(r84?&HJ74P;6)S&n65Wlk=##mQwHa-LB;FZ9yA)xuGR(M7358j(i@~fL$}G=r5jzzNS_e#2qZdXk zNgz+4w?AD8KAWK#8;tX$$xv&9X{Zm_aY*S>QAv{}a|~G%=~~bLq}C8fFUid|N$R3l z`dFPRyNWABx2}Vj>ak*SMJJU(AwjBdUrwedI{hFs4{0EvNaAal6BmZKhH7BZ^&19B zlHLxhh+~8AJAmlGcJZm5-YxTBPeXVtVek#z)J%ZDio?SyL{4b;O_Vr6b=7IIa-83yTcb72y*HZtYa6cU)Mj@|EEE}-yw;*(-qF(A_uAGb5{nyS6U74cWk})0s^gShr8QL&9Mhh}?6nAE5=!>|g zP`PBu)=BROvv6^*2wjmJ;i&pyX^Bk$>@X@a>~Ih&=Fn~jN+ZA!H^O8y0fg6IDZ=?M z2fpxT77#dOKYZikNjftvd%E%-Vb{a;n&F(!OFiB4iS%ULroPJf%etTQ*})Y-+*K{B z7_3()bb<+i#YRERRmw}ye=2<}W5#dz-?|PWqcUlL3T_(s06=SKJLKp?l(n10|GY-NDu%nxN_LjHPV>?Bl6uCCdsH>TK7R&j zO~U%e-9BcZK@6(cY=|hDpy~N*zpF;4&e2GX{C58L%&`%5?R-&dIHz5+(O<{e^`3y@ zayGU4`w!-65`p+<1V5CY+}WEeqD(#Bt9Ula8xf2c_JQ7eKt{M ziy=&%LW@EMq%f))9Ct6SbSz}tNfH)K$uJ4G9^{rA8smQBLJsCnRk{M;_$0}|NT_lx zXVepBo3HNM0HT4l_c;oPr4)}}fDyRpSsos}L1c_juQVmgt@J*U5sCsFqscZr(&pJJ zxF*w9K!R!aK-V?n8f)u0gaT0swh&)|9aU?95ZezqYrw8zPm1Y7aeKt#o7dcQSbfbp zs>YLgUOfHNzakf@;te0do{**C6aBPUf>_Uon7-c5?*GKEue;v{Ud)S8|6nkX=E#Af zN;&~=-T+_iSy64;%$bv)ZYPZz*t%6BN5fl*4n&5a6>Q?EZeL?+!L_nx27S@h z(6ynT3$hlNR|Al}+ddUe)IP+sBN zym_R|@lC6@GeS%ct`6paxaGALls|3d4hd~(+pM{GrfsNCXcf2XzZ(!7PIiHER^fz} z^~kA|^mZT;VC;JTjqoJNfB+Wce6cXyH_o zJRs}O@m$h5|KH?8uQ@}yUSpp#M}f;o(b%SnUMz$b)*Q(l4A^U=vqVm^cPB8hI965z<9IM^FMJ5}KT4qt&kpUbm-v(R<8N_|`7!hnDowl%!cgUTBk0KZ z>Av4wK!YXWe8TF!zxcv+wO!=>m00Pc#KT@oQE!e!EL~nG?tTr`A3!E?A_CqBgTr#%~hc^?{PQ{uBJ(Z z1(&fz?D7KAZTeW39}b zPcNK9>QvJ5YP8YF0oajmlZp_@s)1E!(m!7L_XNRHWl>2Z$s@<~yE zF^d%5E+HfnttP1e5LJpA#TYhK&KTwe4#h@%&Rz3|$n~t;s7&FlA#RNk?{@OX8E>W0 zp#Co7E|a`y9yy&H9eUV!)BvixJ3ETs1i6azCd8QPNJwJ-19+s|JYbj4E!cG#2Vx)@ zm>#Fy0Z=mr8&d?rFbSbAEQGJh03fh4qWrQCBVrwZB11)hb092lM72{a)QnTJ68%Rr zODmv+ok7mB4e(JGRLC*umoX6U4TyU2RnH|ew@UljL$n2qulzd@fY_Q5t4f2)jJ zx-~fUyr0NE4gXk9v2;GZGnB7mD7RQWhb4urpH8iwFMrZb2Pb zc*5h&!%uXh%o`>0;6y+kiaHtpiIw64qUxHGE|v?KyK6AS+clw>12;@ z$9!_uf;oxSL{r4Ky zmf_*205dID3}BaRbecVKoMwD{VFW%pv!v3*B3aa9gFwN;U83(Eix@sQhFfo*eV;E5 z<{$Uh{ndg%_~kBXIs>jEb7P9S6M2W=DY2`MU&+X@P{qPQbyM$umInoIDZFhI>q~{T z2gNkPL=$Go1^}#Y8;i8?;tcOQPS;B>g^{?X>i<9B;v@0@1{ag+n|^Y5-C6v%{{t5b z-a#JiH4!?UK7uIVDjG&JgxVB#+{6Jmw~JjevDyaV*0)hj5zyVxKjm0*;1$pJ2LW*Q z^Pf5!20;v;vkC!{zusbw^ZJi0mQef;5oh$q8EBfSM|q8#%6wDDwY=!-AhQ?Ih~kI zMp@Q`!lwu`W@VgQsnXh{bro)#x3U)up{G)r$f2lYtH|a~!9R=!K{t>SOtFn`On*qE zrU@IW7A2v}v|T%@gfLMJA{gio0KOt(QdF@FzC?}5kqY62#ReMIzP2eyw`qq23=vDT z3c<6)X_sGbkur~=OcLce9CZvroEk+O_jM+)sOO*@y@P1yKdggKyBJ+|89Q^&Qk&zf zYmAJw`MBod1v7P9LBV=io+G_2StMlrm#M#UPNF3aE{@Mk`6wax4KEK+_$e>*GqZA8= z9m~9=^RkugUc=g$B*61DkJV&5w}MFFVSg`pSI|2GuKWRc;5@g8_-~cK2x0mv8rMUS zA_W?rqv!@k2sD7bVO0Y2_0I&4OeZjPJ(-E9RvZT2)g+-rF5P}AFr9DseeJm{T$SEd zBkOc2T6Q6md5>N_(X^vVM>T`qh=-|2yK8;Rlj4Rg3Ic!SUwDx;t|{26d$OVjz>IUc zD2sVg6XB#Rv`JmyR_NoTgXL{_7fYGbMgY=9k@Zq#;-qE#8Ej5D!i9rx5L87XLx0Gk zqfstt6;kp0`f~&oq6=ON2Y3a(0NpYwxWgTcsBY$=r!(KK<5sh~jvI80^6(6b5QlFh z%x!qsGI(b3t81hC^DcA3>tpUo!Fp-hDd{7q)}dhzMPVH3AYo}FR_1>y;Vk(}y;|i? zTxBbQquy*Q!(WMVuXRX!%D4ZmRtK{8ed|B0jp+El*K9q6PDXyhc%>2$0kfQD-^Hbr-{D>J?3hLki|y827{lOrY(n0cmE7c_O_IBGjUfTaHKXU4LjNSrYX?bbV?ds?qmd{A$>a1~E&hXZNC7qP zK({(SNFofavG0t%Wqv~C|(okauq1{D%1;L17 zo0^ugS=bTj=((H*y(Ir@1Loq7jdO@Gx*hZf0|ZA-!=fhn7rwZKmhkell`6QK=g(t2fTK*y>nzwnaHO zjpWC;6dje)VFMRbMBlI3(=@@uUJPp%Yol^F$20^4J&d@FtTSfgQB8UY9&7pMq`CYUx`1=#i1?;T-TTBo2 zZ4!!e&ye7yAeS|%JI-~NZV4sAMX|}%A2f4be6?@O(J*O#@j5)cb`AhVv97J@+03FB zQ_DVVE&E{7UHd=R!E2|h**|O#YuSN$zq8`$TJ~Vkz_skcXS0Uv+_h{$o?7-{WcjPv zhWyR{=h^aSGml@4@t>_ui;?)dDpuzoCsCgB*r|{!rLsNS4YU&+McR@83{qmuK`}4o zG4!jrkL6reA-bw&lWi$SISnsAcB{UTKjcW(BU@J2{}7+~txAFOfd0ygHg^ueFNQYv zJEe<~#u5t8chQC6_Bp!n3v>Mwt(}SE?$}j?k<-rA1n_X1nJT;)Q>H;t;esnly5O~D>g6^>Lmy@D;Rn%U*XR?S#onb;2 zWoBo^MEx=qnivNA!bZ@)TXV}}oz!wB>lS_m_T*{LDu(Z}^S(Qy)e`deO10ZWQ6d5# zqD(7BET+fYs;upuG2Hao2F6|ZSX6GaezHtu#~ z%7HFh%c8!!;Gd_%vwrMzfbShvP5#375Ey6L9t*e^@fYn@r|x4NX;6I$bsYG&S=y>^ zf~%~6C$Ry-hYScOd)9sR!Fkw}qz|dEE2S4DKsoSr=tQ>|A3Q5QZ?as>P)iHPHJuCm zs)QrL63hj$GN;oP5jL&*w9Q_49)WF3PMpl_EpR#kTv?-wp4BYKT-_G@em{=YQo34&S3JYBXB}ednj(=^ zu|0lXq7vccZ*2)asTNm*o3tF$xD0+ghW&u!c|#`1%#wU#5#_P{4p1|{mLe)nMU#^_ zz#io=VC}f^;L!VzVT8A;`x;D^f{DHcOH-QSwf_wNs`y=cJ{b+Gq9q*ciA*ji#r03 zIv^BcfvG(i6&I}UiVNnL*rJRe_peZxsj2u_qDXvQ6%%xQF%@rg%{50Qv08Cr>uFbT z!bZ8VW5+Hm!ckzfHXgUtJ+bDzu~U{Bb0O5iHU2G)sMOHaNl;MA4}=k(u|w1Ot;saC zvF!xB5KaANKOp5be<=lb)c+{Ol+=GI1uBJf4;?3k99(u0q|wVRIh@-6p%j2dT-+u$ z8ULXa&8EMU;s%Ty>>K@;QgHu=Qj|rpg#L$8uolD2SD?U0ye|GvQh=I*bDA5zmqw=X zmR6=k7I*$1N#Q0jm~?3?Mbx;Xm8%8w+rNn?f{w=4NGkxQxf0yNu}EL`Z6t4ZDvfpN z$S26pFzT&UFH7FjE}^(APfcqgo=O zK~k*Qk%fjeE*EUDlj3^Hce_%bAhF#S=w5q9Cr_ z=|9dSud)atbAU;-VM6bzzmrr}Vx-~yRTR$uKZ-)>KZ*jD;K(P2j$~Pr6jr1fOy*1& zQ9y7lMvFlh;~Jm^`tT;E(RWYY?7Os6wa@?cXy5awu;J&`9mO0hJ134{5tU>Kc}7lc zr5#1?scr$kYRa@(qZy&S-5=p!f{JNQ92dL~yG@+L`N1f|S| zVL_`ClK=zi1bWIT%-$J(>|K1BuJpN8Bw#P_pnjEEd+d(EOB-4R6W~jl0Hqj71>Z^+ zU2&_hcip-u+_Bi2z83XZar9JW{?b0qLq|z~q8ASF`aC zrxPfA1tm>EoWw-9RL{?U42AI{V@6g%3ju-=19wbR>4y=Bz(7SQ67E z#Z8;X*~QA66m%G|$72E+x?f9Ig?WE)v?|4}fyIUjCGnMO=lJm-gRm4HfR)5T%dljJ z2iuVjB9CtNR652C^`99g60GJ4-YUTBgX!b`aB>qC1RlROAoS)WMrk#ZkGWiv>$?V@ zLtDh!q_;6=Le3048aITpojoEWg zzYLNW_vt!Xr2JQR-<(Hc*DvdHEqSgS?=H9R1-_F+kQGl&bo6i(w)iIU{w<%U{-fu2 zT_13U{d(!iyJuN1D}Q*&*AD4r%ZE1-kWX9FAl+p8UelkJZ@*kU%*Q##ZsmZ5wqSCS zVxY&jN8N=v_?%1X$41hYolr%~a+5mhD_v_ZK*P=%PM7odvDQ0w$G)={`zgmH|Kiy& z!$?WH*!+eD!a`Y(gXm8e@ULG9-sH%cva zYfnTiB$G2tU4JwidY-E?TZw*G(--t@xtdY#?gn=e>fE~O^s=Fw^(5DL+p=}Gwo$V` zSK&KdXuQvRr@r4UbA&ZoD+4*Ko|vJHIc%*$M7Z4lZT4kl)OvXM`eOE1c3w}%Z(b3i0*YoML#Gay z+(_~fpLqoJ>#^=RZKCGgQ8A_JdAKq<&A~q-!KWVa5E+#_U)0oh(QHdH#lW6LF5P@! z5{1Wb22t0+*69fJsPGW&GU61oi$=>am{53N&&oKZ7aG z95X~LO#wA7Nyx;Mmx5vNlR@agQMNdiJ|MGB_U*8ZhZpTblWfZCk7AfW%kS6kHna(+GyypZ7Y0Ufv z3?;OsLJ_udRE0#WDBrzeHgR8-bS7f-eEbIJ;iG2?dfreK_LFai@ z{5;i^ja*%**u8%}48`>1TJd2x;pZ!$nd+Vx}q!zi{TD zdpa2)VyEfblaQ*-2Zx`_GUTN1R$Z;GOq3>TAW-7syD~A^S+j|@%@g&b@sEWuNuEll zX%R`(^@5q&Is&|n8a2mNM%tF5+Z0z5C|0=KJZd)I6wKh!{*!5`tiN( zKCaYUAGDMkv`xHhOZRu5LD%yC7i0GrBudb&3%YIFwr$(CZQHi7+xBkTyKURHZBKva zoICeMOiaxDsECaGpZQc}t@WlvsHVKrii{=si1ZDg@9WiRn(Vh|o{#@>`0-4Nv*Qxo z`~Td_$?NaD&z1D?;sa&%Tw&&ZF?vg!!OpDe><*buLV{q_OLA!^i@5;_H+;Mn7NWD| z&Og>a9AMiVLuewV+xbMMVb!cf>sm?bDh@!ivXA#R{XpFvh@$|l2-Vi|d7D3y-EZS9 zfztE$Sn_X7#13)VYKWW&eVHQd$(>+O#X$nko{ec@TjT_Zj`x;|3Tm>l!b8W4s*dG;E@Hz*Zco%S^9DPEk&dK)u~oq20+p z9w$=AMW@wNy?4<94bKbx8?U_V)O0`hU{pP~&mQ;@1O`1q31fbHQ&4`IsV_uRDHP40 z93R$8%{-|_n5wUrR-ZxONu&=%SJLtq-rQMeRIn zd?7xEoZbY~;`fWVS}ot_n$Y4!wYh?Ut1=L^2-zHvQ{X=g0PZq`J$=?cDN8vpbL16cA}Wza7t8h) z_x?siBhnz!j2~3MkG_8!$iwmkdH&mZW_qD5p2coYiBp5a-lDG9Aq$Wd@Jea2Y}*BhD4j%j7?>` zlh=hd*Cvae(_+p&H5Oh?*Qn4}YJ8c!U{SFhi>$ALNpxanSsV6Diyws%NG6f`zAf{O z>SG)9eZKcOt;Ggz#oxB!q_HU1Y6Fc&IB=nEP&A=ykFG-6UT=E1lMr3v<6vB{#nE-M zr#8VVY&i@zKQgH@Ep)h!4VR2%zNaFN9!>MAEq z&Y~6=q%3g=7zC#!Q9ORzUue1a5Sy)vIPymAM$i_zH#bC2bgw#xw*!jjd*!aX{R4Uh zkWI;%Gf*g}(4=0&0jj}QU3lkxP`z|o8Goz1EOa0*OUF@Pxr`TT?py!@Jxf(;Ge}-_ zpCDUF1l2|Cu_Y~-t8`_1+WA6;ub3Ti#2#H}yeMt0rZ(!QwayK_5MBQ!Vr*4}i{NC7 z*7+k%oAh0!IE*QEP;2f>yZV4eG|tmxtwm*3VOv!0hl-lgoAzobSJqs(sCo$XdYnl$ z+^-qIkDkSmdMRwQyi&-HipKw&P_f#`hM~1g(evu5ECj@9qquFJS zZ<6>T#B~@KKNgruyW^!u-W7k7kze`|p^Jq);pO4K+^gAJeN56jCz}mNPRA z(snHvlBj-hx`_E%?H6XWqjJFQ-k=jJq;95%dC*|*5^H%hEh4=~A8)9Rqj1YV7T*=> z`1KV{Fm#TD(Y}zlNWpFu+71*X(AxGR?ee3s*TEKt5O~}3<{OHZ82N7gJ?5jMC+h5Y zwZyC5nV62)6)lx%Zp&xrnh}sy69Q=HK$(z+#K^?AG*91 z86Rnjtt3s#{n|esYae^HUWW%|@`PL?5lE~tU(V?)Fw`?2UmJkcSrsp29a~)05Pd7F zt-n#$@2T?bM0f|bzYEpUZ7}P?TJY0TQ`i2{yG`FOc42tUveQ?q3(+5HYN64ZuwuOe zKupC}pKYc#^!2+2`UEL*mZ!%Cil1?>>=ZxZdibpU_Mu7hixSf4HaTu| zL>2Ta>#`(iSJOwZ4?YCV)AHOxH!M*H-Efl!P5)-@dEkUkI=&hmm1B`|O;PDxjUH7Z z8i1C`!_>Q2Sz}T|n{Ij3)**E-p!Ez`-Vec}oveq#U=AR#OR3SJ=LFh*_q`qG94TtN zla>CJelR7Lpq3gA6`RCbl)_vfieySA38>J!@!G@0!xx?Q*;!%yLi=X&B8pH&kuoIs z5}dExkIOjnyg4|Uo^k$$F-H7{D6`IKF#X$F>JU07MEcq?(J-;~%{W5>%2HnKqfIfb zvXZrqk``7UcGxWY?>d@oRk|f75Zc2!`pLQ>uhlvgmFG4TJY%Ic%+{{H580Tkt5J}h z3m<{7GHe@!fvQcG>$}>(vl~xXv@}q3y&ux<7qjbHjax%91zUF;6iqYd(5NTd7X6FS z49YgvC6^%Vcu$4uqM^IxL_^AkJ4hY)v_)L=inTyq(c$y?kGlbuh==?KTBfO8qW;^htF{e%n$HfgE$Ro}*Zx28wg70v81=#GBY!=81SP#iKB&B> z$ZR`H=v>{YY z?X?4CXR1=w+G!+;lDV{z>oQNjIDTdKRi)1$qL}W|q10H6Hu%1)n!=6h&c}eCmv!K! zjkjcHH&Rjk7}m0>Dz~`OI9{#djVjK%*Rs-fF7cG1r7+{ATfdTG739IrlQy#NdvYdY z&y$0C4colJVc!w_FqXVr{NJHtN1s^rNc;>Hv4n!I(ti^`CEY{#r(=` z{?BNu*Q<7!HobMw`$@Hl%6n+?_SN6tV_)~2vUTMm4f-wYSoCJL_M6OM1*&YHv&BVh z&EBt?6-R!mq7KS5>r@>kI=kyX<|_IqonMU`*RAK(Bse>6T@6cqeWLy=R;})Z1y~g! zSb40{!<_ve>lXeOE-{9ZSSw;z51ETKx_Yj|Nt@Tcm0OwfRhkGlgX^Y>jMl>jkJa25 zmB=L?W;;DlL6fT)KT!Tbqz0Q}d3BUZ}7oo4%Mlay5tj zcaqv%zE`^0c-F@m(Zdfl#@o|}(V4!=mFyp(hO$`Lpq4D3h5sso7QdHmALS|vJ>O~K zU|(8@T|0@(Jymh0JGTl6mZpbO6qP&JJDp3|c+TA7|-w%fTu?Iiq*Hs7+VR>Ji6wc9C|xVENUe8C>% zzY`O1-m}ygUD5{FY%lJrcn&wS806xpZP6VS ziuL~SeZH)sxV66)o1e={Vo9=H-mLwl-M(?fo@k?L=lwEb5myk&)Q*Qj?)p~vvv_B6 zTM~4N^iGP}s(+;qBi&#iVN||jy(w2S2z{h+@i*CSh1W7}$gijrrFKGCn`X&cOOf?$9^lTS^Mgrol6PVez-?%40MTI`F3hY^4@Man^lbUOBZ>OGNv^8`hvox zR9fS8B})(P%A{GJg$t~r!U(-SnDIr4ArVfkQppaY_=}jXMVeeqChwDuXwU)$4E9S- zce!h{ThHvj8$Q+<)`#y3_ixlWFReB@pDgK<2q0q*+NaD?55sKTl*JA0A~vgKt1Gh= zUgeTw$DY4xgGsL}818vXiq6|~D>#Y>;q&bq3KL(sDyUIkBV#hxvU-U2GxpIHzWV9^ zq=LB9^itCN5WjjDFsae|tvd-=vxYv>N(uDf=!z9L{-T4q$0}`bbYAK#W?Fq*Sj(rY zcnLi;uPNq?OQc+L82oKsh&2#2aW|KJOwa!FXD!XS_bp#L+gKqzs4{*o+aJ2Z zk$lZitLBzc?ZAUbZkR{Lj*VLs|2M$1!g}@yHMWtK8|jdv&*u)Zr!7iuUAM}MNEd1b zd)G!62h%hh!P?-4UK7Ejsp0aC7Ur-Q83AbJbO@BzhH?P{wfSt-#Z^}=Ub2DPBbIUHSQ`{Cg1PeHmjMYsn(0PvsSBk2l z!P8Ad63$Q1<-LxG=I^4d`V-&W<+<1hRP)(>e=?p&?f;*_PUJng9jYCWi78OXwz9Ku z05;Gj!fqG+^&g!t=ckz^e)XRl-LEok;C(TH!i(@cz~6VZ zETB!4-BJK{(CrM$ULUAI*+3Cx1Mo5d|2>BQhD@#+)@A+X(X>&$Om5*^?!2Q&bihGr zfx&e#z&?C(@@;>_s-Kk)_xjJHc>Zpbs1b70NAEj$6M@eo6Lj3;I-r8PywPV1&U@gs zIX-GPK9rV4?qu0HFw@Uy{kWcx;hu<*AL+Nl_#PCd8`^N!Q3^RW#ft9RLsV|Iq&@NM zbvN3iy+NfFBMiUy5ps=FU%+cd=MRN zVi@0nQXwIV=jLOdf4Vn>4aXsE#ZUaMNmCL^xD-S}sC|zl zmmlL~l%J#XegNI})&xk-?aVW2Um8rk@&q7Vi87`|6&A_Gzcbd#hVBn}E#L6-bnk@u zXFvC8^Y8EeIy{tjPyX-;wjOswE%ZFp33M1Hm?hj*#=VKu!BTOPFND+rSwB=v0IX}- za`*CT>&*d7Khj6{k|AH}#}EGS2)RGNRnKY8U3RcUWbP6qd{rEdX!U_XtN4|KsFsR= zMM5vIE)R{&FkeaPLjFEVr7ejQ7ezYXbn2)zp>YWl`iFeEVd{Tw+L>irSh-*D{e{O- zz5iU!JfjqlmhNdSZ!HZH=IL4&XZZhMG-VLKcKr#^BbYM~|2)(<7Qe9ueS*!r^Bo+PVpH*Z$yCo{zlo?WUY7Rs z5pPPM$Hm3Rt=)$VCx;d%hn7M-BMej7CP$^+r$P^e5hYkI7ufeo{CUx@nJRwHBj1o)>jQ^d z(JqXGzwo9=69Sz-?yNj^AaeRF!{+x#y&G$}$eOdJV$JRKM0E9R2;v(;bmNha-fspO z?ML9>dt?bkMFe`vI`-k;+I6D0mv~r1$fCMLEPu`CcUlyuri9u3k+6>`)O+t>lP~{J zwD5lw1*B4W291v7A3yz)XYsLLJuf?#ofC$z%TAT~s&Z0FfZa46pz9h&L2o$&NJYmq z%&WUR=hqHg96}!*GbgD}78a-jnH99fZg*HW(AgOyh{?gG<`#RR#6Y6Ahe)ocrj@zevmcLuE0FIGXFYx>@!f?rD15#cMW8gZx^LNG-)st%sRdTYa}q5_ zXFojqI}Q_pbHaS_d?MAUf%`NBe5l(qLTNldU$ukWS#H<@+&{dW+u1)yOfNq-!2J*W z38BPJN@!m-?^HC%_(E{KyM(v;&V$o4?P_vrsyF;$^*pG;$IV!maM?xhBtlP4_6ViM zJoPdrobB}`=kO0WO!Lk)pQnejL83C0XYCx?8@&P`Vg&Xmlhtw?P0VM7M?Pe{pGiJ3su{2j**n%|<`1 zO~5?=0dY<;bXQRbp6Y3-dS71PK}%ZsaV;&e4mSHKz#aVEEAC5lb}xSL2q;@~{i8A+ z=E85zwmC^=ewr?}tgs^=dUS-GeSN=+cA$KITH!UGeunY6-d^~591+paJFswgMcX6R zOvoLG_>(pW8PzLgI7hV_H7Y;N{%xI}HDK1lOb7a;=v=S&MDsJ2w%Cv$%JJk2Pq<}C zGZ9q*DZyc~DGRqCBN(wa8yTM1FR&Ngjiuo`fyYLML#8muYo{q;z8Kh~t1YH7b;{`HeH^dyuH}jU)sD z_8iZuI9loD12$g1u}(uY>t%7o_ngdLck4tA#`q4#Q*%~3^#KH0I+j8)spW*1*JFE? z!nIr$jbUn_wYaKxSLd415Za+Ij6NSMdS}$XQKl^*4v)e^%0T+3+G^+8`#jO5zar1Y z3FSrjG`~-oT={@4+urN8+HB>h!>rvQ;fkUcJ+r2LI9JFnEXQSw^W{%TSJad*H(F{m zL;=Sa=vv`eN;;hlU{qfnoTcL&553S!1q7S95Xa4mU}_u5@A@`WfljHTS)nGj2 zX(0BJtF?U=$k7ao?Vc9cOxasGCD;m)Vyf5}mG|W6TdtW-Ug>HIZ(9d0jT&}ZLI`^; zKnqu-P*s=qCJ1R8tQuL$)UvkNapXMrCMX3PtVZoOWr7G}*#-rw7A0^|HbI4{WSVLw zrqCnOZyOL)R=Af7v1yf?Ygb0vwX+-8!t-jiS$1LLhNP zG5&i}7FlxX&#+<#e6)h6&(Gvt*x!jU0;tLopbVygQv0;F1Pj^?BlLwbG|=$leV`VO zky$xQ^1QHUh&}Mf9k)>KEX`o7c#W~yd#hD_T=H!B`gry%>4omi-Y2lPa0sa=S*+he{6}Lem zd6I-`qvC>qFClZ*^!_H9I|j+fF2J!okW$JaRBRB8lzOA1#+Lv1+ltWlM$gal%;&!T&#nLahyTx&{tuTF&Fzc7kJJP^ zzfF9XDnyznUiyxe@ZL*DFf{)6HwiwGds-I8;`m}TbO`h7zd<`w0^{%91R8g5C3z0$ zHqUo5TQ*wdrm8_hLbN|9SoNZAx zX5uxc<1*xVx=7ISu%Y3t(+1=ecB=H+1&HwGfWJg1U2Ar%v> z6jXgnxouX|m6{KnZ+A^b$ZgaM4?^TP+A08g?f+6?L@|Rr=i91ctb=A1yJS&2H?lB{ z1R%$_I@Lq)Hug3`aaZOuLlQ}TXS6fQsR{6LIUZr!>6o&qBG2shNBrH?nz_sbl@s=# z{nIYw%++sdYQ$-WUFJ|0Pm%>-MPK;u8dG zt_THY_)gEFS)$Xa722g6Yu>!eVB@apD_>pG$pKfFs75`T(^*+pW_|GZuqyj0L-Wiu zI*@~O{0a7N?XHHh4AZ3t>(LYm&_`>A2|QiW*cUrYvokt$QI*VA8nf%5~Vml&O%@$faGisC2YlIk>CSBr@-L*7;!-%@M| zB2e)}SWG1T?5pZPBKgBWyHf_aM%r8pmYoeSnlxqG(JMBXaADSkudYx5z_2jUxC9f5 z*kTE!3yVNKM9nV7SWdVdWnmL;XK+Sd?QuiHNQhqH2Ac8!OEru9LI$(2@3|l}#8usw zUBeg%1~c}65Edw8*xc}hTd{Hk?;-a<45ViY(EZ7j(#mrbRWMX1_@!7$Zvi;b6RT$p zc3#yDfe-A@5ZcNFH^je<-k2w3;aH)}24YRUkfkG1-V@K-_<4J3VevQ&&XNyJyVL>m4VVis%!6|P zI?Ng^u2jg)WfKhB;98-~a%#2ekRZD`S;fczHCn>MM~uoWs;eok7;2{FbFuCckDmSU z9Te+Lg#Am6If^18Z9=3XkOP1t#KsFClDWo;vg!rj5<+P0V-}6!E4uR}lolcIfOIWN z55gk&hte`lP!fbj_2X)u-J8W~u}g#N62l{|4|SIl47u_iCz#R+#w!u#ZEzo%x_~NA zgWIR$$Ih7zd>vomRb6sr5`~QWj~KXlGuZz(@|Z*vwbsAL15I8CQL@!9?o8JR)5M-N4==-(E#P4&Ss}n^D`u-D8%Pw% zGSpe2D3OP%^(9C((oi?t4`t=7M2;C05niDl%O)vH^rM}pl_#YM_z@}JfQRle6jALn zZ~q_6FR!W+R1=0;7be-BJT1f!2UiCp4Y&U1j!!)e^GzUFR=jowH|Seg_iy8i#+QUSVNYS zYIL}3<0N=3G-7*4xnt1W$us^}bepFpWxXEjyT7Zrq5%Y z?=2*qKD8SBWxqKx>^k|#VsR`szq7|nr8&O?hm8YXt^POfBY_rKnbE{4B-E?L6oBs< zelbTpDHk1QZ4DW9&8x|Aeo5v`qzO39^kVyFjz7#+|3!Uj`G2S%-N*RNn~PAI3$bs; zhqK4oXI;EB>+cY>9ld+px@ms8_1@|Wh4&{_($NDbiUVpdN}wpV_ROkD7%YNpy56GjtoJR?M)EeL)AmgNp;kY|Q1^WnEO2ky^|$G*BD9BoF}-(DUXP zg`AaxnQXd14J}%;e`Pkrbwh+i$*zjTwVrAbSOM3RPXY$#zoQb2PnpNjV8&A`U-GvizI=_N#TqanN(Nn_an6#IT6T*C0$3Ito(DkObo zgrV42l6dE|v+~B6Be*k7!Y6=If~}~SaS6W)ld5p@fy2wbd=0sha>4P_5@?3%vMOkrB;wUG;XCPn<4mXeADrVy z|AX^ALvv|ZqG25RfBXD^_TN5lq!6}Ktbrh;E@t7m|4XwG*kCvY14v|&L zxGnDSRGMOJf@`vuwk%_=XEHaz2&k_W8r4Pctoj*ai@X{Qa8OJ>Vf4y9i)uwld4`7<^k)&OBH>O(D!)I4ik(vUf=0$l^JPzKxV&hmEHsIUs> z2H!&&uWo5Yr=o2s!3Q9iS5SrehpLe%k0!vO``(o}J zqq&b`))pmPc+=+RHw^0-BXje>(`#q!ob_737X@>-r^JD6Hlskh+yw(Ne%>!fq0E`N zx2Ov{)VSr`sJ`jB!oKRU!uZsVzf>T4_1k7SUpdJ#98TW!Mo!qTqBuz`wr()sz%9wVyr2PrVql?h3MCb=RFy+2Sjqek$8nwi z2gi3I5WU9b|IKko!GCdF2>V|g--SakkTC=d68$&FZ6g1RqucV516$FPpRK)&^tsxqJfLULy`6sUaf_=ZJ!5?y0`NGA2}V@QXUik|EFATC)vmRj6=K zh24m_({-FlCw*n(qLuSv29<~{mnSWY?P>FrW6BT2sHi?=S0?|yNf!XZhKBNsHcKd@ ztWOL&HC0p-i?Q5-s8d8DBrVGY#T4&0wTQEmL7akPEQVq@0uo|dEoh)1gh~Y&42@By zr;}Ec%c>R=*vKEC?}6qaTDj@UHLVDoT98-FF7(!a3f(*7_*3T&9-ZDofkpB_m291; zX&$K+N(@;o7OUMWCQ}t`uKO4+=`@L8f6V12w{tg5hESB>N$-!$kDTsIDE5#eSz5!v z382=>S}x#}6IRp*2U7CN5-JWS4SI%VzmZZ|&g>JH2(rmy9!?5sx1AYOd5?v|$7m;p z;6m*r!BOp-frt6jlusG0boyK`dZeBxPJq4n96S)^+{OF<1GS)M7mn_uRB%(>)X4s7Eab(2kS6|%A#C^`*vj`lPv2{BlzKNO~LEh!m z*}0r9=X_p5Sm5uSk7pQC7O^RnLaO0Se%N1txe!ql6%u8cD@tP~xQI&2*d156 z6z94+8pHMgCrmnlhbw_FdRuPD_=g`lW;Q&nJcF5%VZ$Z7w#?KIhS^E_CK>8e*n-I~ zngw%!eB9slnG1Xh@bGSu>g9lbFZpoLdxVVU^)bcd02uFawvxldb3=gCxwI)*K^VE) zm1WVHFy~IMax=TDoW$l0VxXhm4DM;w<`PWrU5Q(_YVHRJnT{QLca9kA4&wIlj{DB% zNZ#su`ldjU;V{r->NZ2(XzZ==48B?cd0J$}n>Eu=o!f%+%;n=H4j`S&y6nDj`L={n z>r^&cIqcPyv)9a~O~-mWIdnTgmwq-sP%_FjmWvjriH5n*$9P~a3*4%#XfE+JOmOD# z)o#B9Ay67ie$8_iMdNT#TkiE)ub7VWj;H3oRC8Cf3R4HjahrfpYL2KriqRoE!=0`tm@oFN#!JZ9} z@5y3qL=wRq&blodkAC&>rH$I&5VYB*zyjb3K-4fN1LT4adL-UU$}vTk0it&2`L{Hb zgJ6W0i`%z5Cmpej+v0%mg&OY-wz3s;@?}y>vhPO(SSFCLrNW3&!ml?vYm=Lzmi%I^z!MmYoL$DdI zf^DFZfe(Zzj)EDX8~sPa5GS3Hc&M5{X1GHqC^IyTGxG z*039$L;V|cBdTx|(yPRXQy4t~d@1SSP?P6O(V>s54bf^e?N{t0Uk|FI%Dh{|#lQ2Ddo6oLcelc*~pqWWRm`{oGzS0nbB z{C2)0{T=L-FjUmInjJtkI}`_Bp-K&Sq?Vt7P_5L~u{T_obynHcQ6St%)1q0P(at7+ znJZ%yYeTNKRv^!z7A>PIv``&F0~pLH5C*z&o{UXpQmDvR6cJIPMUGSn=>r2b+>|UI zi=vgGCysPE;}n(yc`M_z;ia#F_-HL%-xF`f;Fa-PMzECR-A`Z-TqP^@AK+vDd^m}K z3Arsm+DVTru9zNUQpb{kU4Aj4$EejM>#3W2JF-~=;cH36NPPPp-j#|zr7^vB6J-uq zl_a;LNU9y`3ib#$v^Z6`Kxd;(zu4KThxnQqPY6voITo_^Khrgexi&bCR>7)DoquJ< z8{~-bbps|KL3gM<8xm^0(s6THFW@BC%1H~}M&ct6Lfch0lU^NhoNCnk(LEwA^e3GRGP2yT8e&{dze7<=Ig-Gt=pk}UJzt&BFe?s$@@d& z-RczKsw9nZa;_v~)xC3d(`GbB^WR70M z`sVNE=<0WN=np=d>i=y2p0FTMCAhSin-XnUjj0Fi_ND-er@Ii@#xgDg5*aspKMkp0 z{U(02wv+#mgLE`r;We^jjmfxQ#xQ#C@Amyk{9$T}xt(95vuW;_*{XKCci(kyZsv(b zD9O%$BHf1WY;1hy_ex$kXtvu*rB%;fsNTw+M|YhL%0k|ZxNwBy5?<)G-h08h$E|NA zpD=GxNnQ+=aUwKN*;vTU1SHXti*npKd5W97nYE=lygz&vjk;hwGRZv-bG{EXf_zh61 zOW*#u1ERHaP0|ie9aw`*o@q6h3V==Ct-8srb*+WG#+(B*Y^2xr-&K8+07v`rTfm}M z0!^8SO9xKMUiewUhPH30GlUhcYy+DDLUN1|N(_j@7nbyC0CqM9^08ZIlhtAvZR)Dy zp$6gcw19zNNMyEF@%-^p-J%y_*{69h6iM?`fIiEez=dur2eUCXY^NZ{?4ZEziK3aF zGW?Fc4I>yli93szV&S3ye5#g=y6^a?r=Qx)Q_0Jgc|&I9AdLd`M?NSro_fg z=XPL!geCLLjXK~t-r*?|JaR`2dHf$pRS^oWT_z?Q<$F~--zvH`d6%Doir63)qRnk^ zgzRW`2fAFW+323J{vBsX5I4L#CbI%?XQ~SKTTLO_O9QO@N=z5V))tAt&nF7_?3rz7 zR`8R?v|XQPSO-4u58snU_k=Saw=3{z^V;6G%W3lwqT^j3x06QhJYBG9^OXWuz7N8; z%kex(lp)Tz=FDfG)3%Q&Y@#uVaAaGH>-0gPUSBbL65d%CI ztkCi4TY7ijuaWqMl_1uR^`-5?Jt*nL+GM71F?ql?Ve)Lpmudk5Kn7yTJQeW2`yrA> zfXEy)5`1=;q?F9fFKo`^bh8$Y2Y*4cm=Q*3lXEx^YKQ6qH zJ{m6WCMCu#vAS?R@6?$-zkFU-{QX}p>fTrKF2w!ccW%C)YL$y4Gm(vr|< zl>BMc63WbPmw7)%^?7JIJy(gQS`4Qc(23H7Cm%0_%RH;IIwhZjD;NS{QD=smBlNDS za@-vs3FAtzXRT0s2Jah*NZWCZn2(V~hk}hPcLC~$g*)=cT}lanxlDxjba`Gv;_kb^`TliW4Bc`_={7hq`m2m5<7w;?%Hcw3{P>wa zfkv#|I|X0Lz-X2FzPL3styYWGc?v1KydZiovOK*-#ZORiP`FBHeZ|1-x)nrTQxjMV zMDJWV>1d!$kSuFktHHdHY6c@f!2kqks)5pIgn>FxY+$y3_tY26I)I`9I~eK;yI-IIe#Ov*rkfBI>vb|1LC)n(LD+ESKZ zW!=%NtOu|CAp=>xT;7sE;m8X?aCc2WaOUJYvPYt`Ulin#F$!n;2fWX#4OQ!=^tI8= z17dlrv1$I-6w|G!8OY92ed%T=Gn*Qp!*CcgTgy@uGnD{Uaxu|_~?;EU5@a2mgxgQ#E=yhl6dz&D_={a`Mx}j&kYaNB&XT-M?RIVRyp>do?CBfTf08gC)%#P-=TAF zYSaqh*Vy_?FrH$hvOn)6fxyf_L>Ad*;qsKbq`kf$NCwOj{S4hbvcaMVOf_D~o+Kn4 zKDoE6hVdjOI3a<4BzsaZQ}YGfD8Yew=S23;@}wMbe~sX#>V!RmrkY-oFUjt?xB|rG zK3^1HM;B=SnVOizV`8gt|2bC{`vcJFx6@RmUr!)O;`Jz+qF|)08(5M~0hkD?k!DvY zOCn+CQcgY#F;vNhc&?;GfT*RN;KZ*$gN^`(O0g|o5gm)b!YO+qNRnEcm%cS!8<1Z5 zcqU-!S45Il#vJVGf*3xOt*4y3Y>2MC*=+&ogp4`qi{|cWnAISQ|EKoqc;A3C&V7%0z0waP#YSJ?KYM9S=p7b0< zSLKX)x8BL2SzqT0UHwB8Oo&S)jEo#Z+hP=Q*bxd0=xuJXSi7b!6Ft5e2bV+Dj2e`u zcDgKuEnkAG5d=c+11|enHJDktWjz5o<^Tl-#0f*oV0q{XRk`yR*eRD<&oX7kH_02f zaw*VO8*Nmo;}wkKky)Q3pH&jyb_%e(p7T*f^Xva1EwEaVbFanIy>GGENx<^;lz2L$ zfcoK)fl^8jRN<|Qjz1$dsra7#X>?wHa`yE7 zD3t3S-&>r+T*6MW*FqkQzMUA7*eDx?zbL$ES1T%YuV8U%E-g9~iu)E$IYw1^V+}^m zU7)dm48T&qE9ew>ff~*O83Ki)4i8cllbD!&?U~Cifnw3ztM^C4q}2JxO4F2JpUULE z#;ODsK74p?p6lUZb%%*_9S7)Tvj6ZwLQv-c@~|$(h(oV!33vC-Jzk zn6_`2Kqp>6D^!D17j;eefCo$ zk(4-L8JGNzk-GNuTan9vo|FG{x;bB2aM{1E)5&@g>89H2&Hw7v0Oxrjt@K(9k)EkA zCa&iwg)CI96D_JauA&l70y7f;`CP4-fiWrc0pPT>T2{eQ_h%>2vMWsJf{re8KLfxy zzJ~ENu3B}4J7LEHFvYfD2aqID1FAm&x?P5H4QAX{Hfm?OCV}KxWCAt-F9+n}3-XZ= z>d&A#JTw*$KhrF|t?$@5wxo(ioA8;V=aWyuqX~lX6N(?yik}m_7LX0Iahp`j8kE&& z-wrOZ-m32EUgaD@o04U%>(y(9)v_1^2n8ZSPz)5NqYnJVAOmGahR=h?tHLZT5pyDj zhZ$u+qdsF4!47m10SVh6f}uTRh7X2(!sA_k66vp9$+bspL{S`X*wxx;2#xM=`M}@Y(ghG}<=r$G~E4llQ1`7#|2MZqzf)24Z6er1cvJ5@(vW zTJo@MOU`W&Irsr@5Qr;Iy9fof~?a! zY=D}!_S&MQcLiZo7*pcFw@Ux^(Ej$(%f})l+-8OyI?{ult=TNF{J%;V%o!W)L+=Ak zF!#v^hE1OQsx&y~gQ?{LZNMVKhskl_kkQ`W?6y5McU8-*My#?%a$JvY4L=wNVc17b zjZ=^$z&&#G&(8FhytRqx)}(yr?v#h><#N|<)I--_1cM){v+b7vKhVWaw5tVhJM4W{ zm<}P6S-vik4`3%DBJv$GarsID(g4tpr30o2AO~K**hvMp@OJ0e=5!PWf_g%70v2Zhdj zzZCNSH-(x6|Dh1^KNKEC{8D(Ro<{%Q6t)xp4~0%r|34@^KKvgF&2j!0g$ttjO?y?g zjvs}jqp~IpFPfW2p|;~}z6#wfS<%5qAW^Cg=nw2Cu$npDNW|8;GJwbXey@d$a0U>B z>U#}FHjX%k*`3*4zy>IqM0Tnbep>(ejOilt{EQJ>jUwp266Hh)IL+OuVdHouUg=VIO+aO`pZTe<6Vt3x@Uz7k(3l@P9rQ;BMLplf}% zee1IQa(CZa6C_Ql!i|_JKQ@>i{j2L6{#>&L74`5v|a%XwvY@ z;{WHldqTnT1)jK0ti@81Ogb7lmd*3Wvn21w)nzS3TkBtw44?0}4fk7@y14K-QVw+- z%tKxD9qCQg9jnSlC6cJUeXJzjgC>q-LxpQ)o_(Hg=i8;xSH_?8KW03H;xAT3NSvkJ zDbU>D4(AWfl=`Eqb|r5k*w1Pmr_=9+%!{!1wan}V7&E|%5VkW#bCRRo!=f#B8$*3K zVZrV$bLHA$!RmXwo;v6o_hm1x`i{`CD(^~53FTqZd{~-7^D~{z%4xFulPY%^A`cS$ z`(>Z_2lyFisjm}XV%5?99nCxZqd_)2|4_AD4(@RI*S0*~0oPaN)x)rst*k>g&F#}^ zv%t4^`d2@EM$j-LmkQk*$=Ae>IH7whO_lS&txmAeiU8NH>kfp{8XcXxMDaW93Lng4 z^JM(YtW%$A6^V-UZU!?7FWLY%C8#e%sG$Pvb7@au! zYRbWN?wGO1w|Pik>>qhdEgz(87%(1G*oY}v2Me>J!&KIwSrL7Y2a3k3IwjC;+*LR} z!4rPA+H9g_yOrK<7`o@nDmE=qL3`_yxvKj5^&G}5yF9YXbub;d8D(wmmlYX@0Ph zq|4f(c~oJahRy2*>w*zH^GD?;<_!kk6TwLY!R=!FUrc>pHQn7Eg3_JRC@GB~ zNF&{y0+$k`6%eFTN>W@>iY3Q3`t?yk!*-`MmFe_eD`z-{J^lkb+r`8)ZgWfbw7%ZTqEQ^qH=(z!ok)MOZlz^1JK zxB(sc!2D;lOg#28VsBV{vbbk7ljL#j31%(H?~#w?uO2H9J*Mwr(5X$s6o?r>wP34q zLY?+9Yv6Mf^XX|fM*rutezjjuW~$TRFUrzV60x4<;}{sDPS4=UN>6y9%g3N=%@9*# zjlW|ZDKn@3{MXREvmdXVL8-Edz?MpEis)1tl$7=HkehX%CIS6E+lwBSbiXl@)M)dj zYbZq&X{M=}j>l`CEuKzHhwfJ=qCbtgBd7x}K5d^KJZD~?G;oP5dgFyJUpPjQwJ(Z} zoh-+WD!6Ziej?N07GEfg^{KW7!xW7jV}$(G8}{Z__?Y=;IeKl&_(1sQ>y`PODiOA0 zS5tv6v*BVkRNGd8_%$nLf1E!nEoyB}*f5K$4R-}FxaFb;Y)(D1wo0%x+Tx^0M*p5d z_qFQN;R)x#&V+4i$VUUgstt)Wjk3-Sw5}kiDrs(N?h3gGVif$;zkkjDL&ocip3*oSzsAdkO$?Y8+l_kqdImd|k=6cOlsTX8pLn`>lW`g8{jvUJ z(Pr2X7cu$;@><-J@yn0q0Q_UN<@-!^zOKmAq-YT2T-Z!H5ma;BPxGDnJbqE(q zon0uyhLd4r%bVss^^CO6AO4y$DNmkKO1N`3knT=k!7?h%((2U~P4tnO9{O0DNj<%F zK#r?HAH38efZQZSnfGi*CL#V)^l@t$=Il5pZr;87AY<=Py1LOA_Ww!xrtr7Er)ztA zgSR`ko9|_r%`FK}63!8~KnFcpgIk{T3p( z^chf3*5!x#xI;UL<_am@MAe1|q#rBGCCvT{U_B`>0I7Lcr?1=D6SZG_LVmYRB2E-R zz7if%@51x?$($-wQ`aK6dFoxiQJpp>=q9^*V7SO0}Z&D#LDMR|Z#|v1iIX=6Ofu&n=UY zcQz(sJ=U~#*g9X}n^;Qcez&fY)ka-C0155p32a`V2Rb|+o@njiA@busWsMUP zZN#~RU6Q;BHMwE@L%w7~*X3SIu1V<*8&Q>+-hNU^>rQF_%GyZU&6;&DkPkIW)K)Fm zVoVwnvSbSqv)DBkNKoMhm&BV=R;6g7XYzDi3m1U@&mEN9aU7&lYme`n{QU~#mlM5a zOe!V06LY&Z%-md=;I9J)bRV(#i0iW0C9rdbA1o&CvTV zv2a+`kID|7Cu#pykJ)n!J3R4ITfUn*@m*=jAo*%i$hgOAo*b1mhuRh(8l?Rwu5p; z{<{X%zD6&SyqcG@OPd0aH3t-jpYoQ;+F)jBn!0X<%G%hFpZSmG%HXZr3lTaoq4=DV z*AGo{7Q27FF#=acGNV4NR5O&%k(?FNxRBOb=yx)N+&{Df-Q`XM5$*M!Ge7y!yV` z!qTvPJoNzW>vpW8oNY$Y|NENg9a!62Z1h6_IDG679H1cuZ&oi4N13sJk>z#AW}}?d zlQX{$uc$+Az&F&)6Ga)?4UsWsQDtqcM#&8h#9C&G2exl-y8jS`j+z9iMEg%{Jt5{< z1LG>5ksKp&`MSB}t80iIZ_`=mJ|h=eSm@UybIOT8AL*Ng5Wb^{6Z|hx5Q(|dNB7h3Ty@dOR``xz&Lt`Th%?@m zH*Nl!5dHd)^5mK(JEC{;k|8dA#{GoRTcJ!7~7WGP&P^77wNF@8j%2NL~%YdOr{`sAp!z@V30oH|vhu6(HqbpwXAbi=3Y`7#GCPelU! zk2COb*-6=oFx8U-0=n-HskP9P=t!Iw)eDyLjHd(&CwFJdCvO=~J8Av(XP=ZG&I(Q4 z^hs~`Hp@#AFTeF>5)Jscmwrh8Fr9)J#e)jTlHg1m(^Ik>&X?|}sRETCyLieZbeHMueet0FD& zkD2Iq&CiPp)b+fU`apG_eYuHbY=Y9;}o%S;{hqW;2IWqFkhP9>? z(yMZwMunq0Xn~zs#CM?qVQGmKYM<}3CoQHZZ#ISg_#AlSsZ6?6Xu17*KjD)sHY1gj zm&mjkO++L(dPq?sJ0+_nB=ln&vWJTD>&b~-K(5W^1P}sI^1p7O7;n0P64*<*@Ul`R z?XfzVUqy1=A)nk_(Sph3RG`lpgglml71D%1ljFFc*2;A8?m4GYTfs#0R_CQus@LlA z#YXgmz;jaIxPN80FH}Z$T!(sBl%Op(aI~>@6^;mGXJU1o?I__ z{hO}GXJduf1!gv?NvstgPUwo2CsEuZs3-6*n#Z`<}FCS;BTZ3nq9X%CQ3CiruGG*hrNV)Z z&M(&S+5F8}a8jV>ZW(?_-xnUHJNm=47bg%qO5Gm7*gtXtf!18ea~Yt6`GK3Kfu39? z8hEtHbjHQKh!^bq4dOA z3=034Kf*9>-{pSAlkH3WRY;tADC9rBCAt{iSbWk%@&gCnUNTv+o>FXj#n3L(c>Zo4 z_x#dy&X-P7us62*%x{UsdDmDv5-YYu#Q@8o8%qRFTqYS?oZW$Q-T82QH|3I5e8xTn9_)3gb|5O5jo_Fb{R>bpY(g4w zVo5qc44)SYKV)*~V(=*^aCO%=(Xax1VN@c(;4{9bWGJwCJk>|7h-z+|oaUg5E6pN0|XRvX)jeN$^t=26ydIJ7q{=oXi*vuM5li~fQY70i>NbISlB zX22P_5*As)1FBeYG~RCsri4$dNs<~>?lBmo7toB*0vNpU zqSt#OYrp*1eO84@apH}k#i`oi8Rp)kHD(+Y8!q+5o?iSS#!NG2Wh0A$dl1HueRd0# zV-_qz7BquMXgbIwh=+nMk?dQf`Qf5G{thHc6Is`7T?Ho=uDBb0GI_{@>XPwU#!t$> z;V^ULGV9Nn4B=^K0Cx|#p8yV5-=nG#!ve_3;^c9IQ@$OKg_6tA%529z3j?Pj4Zb^zQ?J+J1 z@vpzN5?RqX#oslSCJi9K3oHrxBYG5TBafh@8*3$4(tVO6)jX1AEIwV5_SP zg9V07ZOZKK@OZcLZ9K-iCShgB(SEXhI^;@Uw=COO0PTZfhm|Si4y|wzMCwyiG zo5N7yupe|$v(8O3EEYO7vv?V!W6Vp{{}gUXe}&Ed5eZ|my@AfZy0O%+uz;uJh01Qb z1a^0R-t+Zt#CZRdJ-j2*Xd<$4FrJ)fm01;`U5#6)yEl zm$UE3zIjCRdYJ_p*p5pdKe0{Zr}4b-d&2lr)OpKWJrBcGA{qsD5)`wK8|ZLcvivyfmVG`|G?-b;$mM_#V2Mq*W}N}|UA{<%Mz`!SBu5lkA8YD+!64-} zyp|sMkVoh10Wz`^3yZyr{H_Jsgx;TaNcc&l+Z1`BLvuNoeOHAr8r*F*&Yy&@upw8G zq`d-Jrnb{Idbw;iOmoLYklCpGdO8)YC!2fY_IJ7{1&kzr-rrn=_sP`vWv;NUQAUelMTHs-%vnU;`-fy2k+}fcmxCrRCQ)Wh+DZ>Y9VE`Xa(OSNR=Cdgj0n3yq z@b~3DlwfTe5=XT`)j_A)i^AuBZ>Ye?x#Bo@6>lVau^bkX-Vd4wLY3LqAZ+yDuLuRu zDEiiGJeGNNUwjA`cnq+ct{mn-e&q#()2%V4$2A%qJiS z)!QC+_K*m!S))@+GRN`j*zK{qKPJX6IToDI3~rIKo?4**@e+>ceNm{IBUDRZh2$@% z#_5JyKUo8sw&1ws_nknLer!~T3vhyOK9xch@mj#J%)G|OUZSeF#+Q8wQ0S8WY&H;| zED-1BuA7*|^w9ZC@)gCp{Nt~@w!fg4ojc!d%Rcu!#ujg`XzU*{s=%Z`Ui=wkaxfIhVFy!;Z{Jp)Ro zbe4Ypm?k@-SsEa2qHMd{Eot%1B$|rO)s^o09&XRd;RrA7Le2GXDco>vHi;Ronfqn_ zbB=9COg)s+w8`0JlA_e6Ncu!dDV0$-82KVxEfBQ~T&<^3NK< zj>iu-!Ccli=M`#eNAxDs2^Q#YK^JrFzrPLwy8S2H8dpf_lkgv*HzHmDPv+?_yDZ`9 zFPW;P3k7<&B^ne#A{a}hq2h5V-6 zE)t1qH*P!G@QCo??;+?^$cp)N=d<*WH14|NQH@!h;w?)MC+b(Ft{qfvl6i1(dbPK< z2VWoDK3|6M$5?91Tfh+)TWe?MC-A%0^L^8s$-%|j!~5}7LZ*7{eE|GEli40p#2Dmy$_Lnz6%j{Gy;%( z?e`xfay@Zmaq=pqksBBm1@Y$by297{y z1BmJ&Cy@%H5LzX>pXyP<61O62rD@Mo^rn#&WFRxW@EP*>%PkB;SaB1iD~14_wp?*x z{F|cTs){hO6CmY#(Gf?4#I3S<_WlN%)(lz+XLTP!3HO@3AXa=l3d!r|s-mcQH2yI; za)*bv0_B!+D@sF|`vL{MkoV1-7Y7Gt2KrMU@!f_z*rxbMfs8 zboYTwMg2p0r_R{t@}0#PU|1F5jerJc-3T=PeYp+MufPHV!B$Lsx0Jb=`h1&|35*zT z1dT9!^`pkg*2`HKR58mROHEYMo6U^!sr00{RUBZe1$HzDVAe2=@l&ud=^e>lps* zev%~#*brd3y#riPrAL6ptX|~x+u)rKj8;UiRvM|tdtxm#1Qwle&8=TW90w5zp!@Vn z;V=?sS3aX`foDd-3vS&v???`TRqe1S=+Cu^2iH2cS1{Jwo#(L$C_S2S4EUaO!*Xe| zWLa_M57ak2;<+b!-NA?0h*z==ogXAgsG1(H>nbn#lD#qJWJ-?HeP8ulcJR&WonMXE zr72s$^tUd;E@#YH4Db5d{$I=!Ya0s(zHj5`MTWo0auDdyNLqzpFImL(dA<=2$n}_z z{4MXBtJS{z=F4;9zfStrI#3e2YQ|<&*yH3`Z30Q(q5U3n+1v=>iB=4pQ(;eu+HI7i zy=iwB3QBerB(|0RZki4UgqB{s{56x)4T@_-yTc;|NL8^X(mWi@FLQ4E}&j$BX z9Ga&9>2wT-_R>AyFd4u?R+OT}mLI|`bp{gO1HzJmEpXIhuniG@e+&o%eE2GAT6)T? zFlT!scI$hV{t;l0cwM8%hS4e8IZ1=_=zv?ffjfwFBl7xg3}|3A?8`gs!ya*YOB3=# z&yy7ImXgxoCOq3rniaPCZh2-{)J2l40R?~(%}KGLf5Rlje{R1g$!$s_H56aR#P_M^ z5qf}fT4c`}T|2rmO`~E8`|Cdp4Csu(X+J4u2qbJgBiIGr?mr*z9S@|La-ES%=ny+N}R>SosuB!CbdE_HpYBG%R%#?sJ zW-|FI)wBSW_bmUI`0|{}yG=k;#!`eFjsu4Q>F`X&lzHShUUBNa0%69#!!C$Cf1waa z>Gi?Ra4=nU-7t+XFQDW62Wf=u+MX1ANB;zrv3?hVFB}s`&Q@j04dS0`zfpgwKWSr1 zaUZ#+#!;DTbE+{Ck$?Zn_sJg4eCL(yHsQpo`IkK#f1Q6}str|dDR1cKV^;N+mMf~R zHqoB4u*>;|g{M>A;V&c~3MiPa(`He#YdgichY&*Y`(RlLm9t-tvFQm<_W!(i)s#UW zC?wFg_bb1h2ftI>!v=G1-oV`V+)v^+mqgFrE`j_yw0HY&{{f4n&C_34#RqqmcJwSW zp!ZvW1<=|dubl&k+4bKbNK;=OwZd9L*O6Dp`=xF)2)M)~y@%MI%40G5A$g*hO2BYY z(3)!T8rj8AxRerFhAJ?B3s`Tp( zB~{`ou5tAE3B(ZpgD04mcnS9)2rgR!qb%JB4*fHdMzKK7Qd|wa(t~Ci*}6|zJ3uu^ z|IeFf_Fu(pr}3?06>OITFBhynsxXx&X$}A;-IqOoaF{Z_QZ3%>xzp6<6}B;uoI*IP zLGM09brq(iv-X1I({npdyts-q0o0wfDS=zkm$XP&8q(wQ zAuq_m1L}B(&p|oWYHRp! zzRc9GGK?x%E?qcfcI)9n% zxB4*DG}dhGktLsurQt}EVqQI za+Fom5tn?lf3ZBb3#KRTK+9Whq$<{@3lOUM$FH>-`B7B>MouC|Kd?u|s_0=C!Da$(%+VENaS z?Iso93*YMI+~1$;F#|cQwqk9kq|&vl@tb~i`Y@?!$=o$A%vT$uum39ys)#=W{0dWj z=ddtw6y6Kbs) ze#Hv-H?RYur7ZZdz3M5Hpo$eKAm-&yjH)TYnT)3SdqIQ6YFdx$0IHgV7`{*ZQV6=u z9Ir(JWM+AZ?RcXr=J%&?n?BVgp<`q5h5zOFe9K2K*fSOv{EG@XM*ASyEU*)NL?^p> z$aCZK{E9)25e|vS3ww}m?@9-R5xWZ*T}{3sX$#+Qw2_?Pfp zu!_~Vrf=}S5ALkX-aD?5Ckp!e7Y36k*=leh=Uj*{C^?Ou?iw`kM%3A2Q|y8+MfnG0 zdzi-m02U7A)i9btaejZ!E1b$fvN!q#4G#6;R$IM=NSA=tjy<>~-r*SFo?o9W>w`n1 zFm(rjI$R$87PM%+11wP#NLY&2yIV-C!G}jk<|gT^OQ^i=-NX3M1A$4JHhehjM}w>L zd^jfrn4kwy*c?V2KE?06)+)H^?V?;z7%smFw>4{cfYw|VE(_{vtKa}Kq3P9WOdBK= zosD_dt3}-D79ypRlLpGa!XGpk!Ygnw5a-1#Y~LtMb+lx)jU%iSlpyLtY0I4pF_ntQ zIT9~F@s!Pb){e50+jgS$&xC2%JFng*EWFOtr-&>2J!yKl{S}Iea#v~7Z#orA7WU3} z=;D_7_L%FmAKtA0&X$prDT<)Zc|hM}DEED9{)>%@^N#A@dm6(%LK)=fSHI4NCnjyi z8Q&t8l9Mrt+k>_ok9p-^uYZ*{tu9Xn=L>|x4eioZXFQ!XT|OZPuZIjS{#^dB)TtS4 z0*%&JB4V)hoF&zOylR^8-u8Xp;GBx3X6gK1&1YH8#QSybv&0TZf1Dxvng<5)ITc9e z!iC4&gHJJZJ>o#diM6gwFU>fEULZH4mGGz9-6Z}4!N9=Vn68-A* z2kt@<^r?pO4UF-ppDs6wfa$PE6h*##G&u9ksakz{rZ52V6rTXofI>L5RM#0$quG1d z`WpqkmAgRf`U~_O3@qvSQj+BwRG%@uEw4Xxj1HSwK^Z-h!N}eidM#-kNO{8+do#CS zvNOq8Z;A@vandHaQLMPdcUu*>_&UBi2%O31efnZa5@T9EJMI{pR(A~#Mq`&&!7Wt? zNzNeBd0_P5GdIYgNTmm#pw6N_L#}%yQ6w3J4F<-N*AjCV#?pIY_o~yMCN+zmLkG(> z-rX=uhZo+v7zu=uvHt=ci}1S8=eLlN!taxi;@6LOj>-2t#)SyqLjPH7UErkr^R)*C zk>ENLH205!rB_I1VaH=+foUe;CWF5t_XJ2ihhF_cT4Hg5I_4Zr{b>?h1#$jt8l0L*U>VsN=!yrnER)IcR+_L|4x z+f~dc=TBQ&WSqh`R%DSvRi3Y)W5FbZ6iJ4ZT*SAOKZadM*bvP|4;;QAA2_OLyNW{&|&yoU(9&EQoZ zbyA0l_x+@BY)vsu@dZG>M%FFgam<15ST4ZD25EGYqVGt2XW3LfJ+wNXUV?Mf z`|bR_uj18iX;oC*e3fWlc10;1rh!Ze`f7yewslGz*{UktAp7_M%CNxCoq$gug<{DM6l_6Sl6YY+ zWyE4&Wkgd9e1(bT{J1z2(c$kNH+#xvwZWRQC?{C>`}!;u!T1+3Wrcc$EaGsgZP}h5 zDWcw$1!swJ}fUbNW{*Wnx3_=tvh<0@bA$JyXl+kT&b0l;M6NRG(1h7s_cO! zk=&-@ne@DK^gAQ}O>Lr0#>EQuX?R$P`p%QEdf9EUf$ilKX?05_O&mx*HFBr`gNepUc zovwHP_MoOvv(Ceu=Cx$J3HID+Vho!BhKz>%A}XhS8s>U8|i-rPPD|LN%9`opxdra zq3SqAjV{>WDb#bq%33wI=Em}*k-^Hxv==Kw*KqfbWi@ft$GJTdzY!v=D?D^${%y?d-Kp25Q$d;IwW6+lh3+@J_s+8ldoYEC@W6lr+ zYUl(IMl!ecTKH;D&>DuUu*v&4C4yNz38^AstWwvHlMQXer2_L5xXdfz zj~1VV|8s@DA60u7jFC_R^_k2+HL z58&eOAvu1%Bc$k_T~^-|IRY;12+&GdKhj!_cNeti`W_ejy>V#ST9(+xY~3~$-%)Pa zna+QGKdjgIjyVE=F?;DsqHvU?<4rL#TMCB=PpyxfqD zr*FIjBJOMMVX%?yRL`)lY>Z7=odj8!^S3It6?vq+G^CM|o)e#h+J$B2n%p`5=-HKg zPuzE+gei4Mm=9k0%yU&YXh)MMMaA#Zxx57m(m z>x3h&;IqGfGN*IsgzfBPmFu7(9T=#pu2~=U5CS$}x7iTsz?E+DMF$OLDJJQ1JUWJJ z6w6dyyyQd=q+#LyUG*~6C5G3S6sM4Y52rwIN!IT{&D^*HvL?eFGb>)PNOwOyTx1=b zJNgRdiZp7JeUOBs(h)|Bkn==gu6uzwJeVa>LbivC$oPMG3f>_9%b^*+1zh)n~gs}E@<BlFe3rsw3fM}C|kCmz1PC@~3Y(Iw)SApEPFw^rQHNJTu4tgF2Y$X=~c zM5ZS78Yf|x{gGq%)i5LplTJti3W(#JNsDUpyk{m|t}!`6-Qq*1$sVEa>+gh_1QPvi zi6p7^Z%1&Go97Sb-F&lpR2W?H{H4>`G&Rm4n92$xAP$}~fOO!5tI{?}AT2v)+AM$E z{l4k;SAqBmicda{0e>-XR+^)rKsgaOW+M!c*fvv6Jpbvq5rBw8TkGGkG)Ikk_!oId z^4Bj#bJO9cFvHoA4`ul5Ev$hXO*+~$xs0nLPP1sn=Eg+Udsp5XnOKitO99FhXZcI2 zFG`-BK~%}>)xf^rw=;+p_pLzG#u|j&Nzd%X;d^-AvL)ui@ya#Ey%tv{n4aY6Aj0tc zh;$(M28W4LBGU+#?r(Jx#VTz+yg+5}E9*?|;ap^64TDe3m`f={`1tZFlCAWyIoP|I z>CzqOD9Yy+K4QYV6~{TH7!$M4z#?AEHgsx6v*C;KP13C`nMjLT?6FS3zWBeh91qRk zdMrymRNS3&Vdz9S38=I@hHhbTPHCp?`j)$S=Nu66AMxV7E@l+_w(*jvRX+YY2Z43|zE1aCb0_8@>K^Ffcc=o<~Yd(X# zBH-)5U;I9{w|1Xdk!ZPs34is z1{#0anCn4j+TYZ#T1=xhbFq_5KisbEJmd{Jt`j@{iRr-3^uYCKW81 z205%47TXGD;o#*i;E4QQ4;&I8GN|_uvLyB?WI^I$7owo@(7@^S^TY2gz$lsT5UA=j zZ$NeLQoS?3;1oR%UAX0(yR%*57!177DO4C-+1m=1w)qPi zSQztARPvzfX_=^8Q{smse=eQR5%Iqny7Lu1h&*K7k4BR&5=oXHBAVvv-rP}g4PSn^*tbbSs(;lX5)SUuE@Iu5OC+ed6nWEP#cD5 zB|`j3c}I5&(XeD;0{uVbhQZPsxsO-!r0EBFZ5A+fd!7(;T|)M!Z;55y)EOTpIhJ1n3sQ7laOuUm=(j$StS9GyW`nYhqwvwR@6>jgyhAU-M$ra>i@H z>X3F6r!T*<67J!Hv9StWeDg6Ae1EbJ#bqrzg*MuG^8Sg%b!V0?akjmLQm)GJ*d$$2W{e_AAY9^_JNB9aBXXQFlpn0wKQT~alt&#tf zSiGx*X&e{rk`8kId6d~b;4J_e1up6D7%vXFCIw!0t5KlT+Sh>?aV5} zX|&xEHQM&+!Lc&)8=3E# zaZ1YIuwi7uPoOjbNvLcB2`ojY%+eAm+x;HHDt2(@#lIO5t9y_kOmKYa%71H#;a3IX z4$3R<;|`*BLwBZR_d<4X{8CIl{>`Z^fAd6t(uc+Q5m?TM{I>@YzJ;p8Q}{3CpY15z zG4tZl;g{B4$Vsa}_@$UL0^v~cR<>_+;zKQVRGvq-9zs7)q2dKek3mA=47`8~UUdbJ zsLrZRBL73+zUa8!-P(&Tv+X9Ukt7=)V~H*rbLK(maR~YVGfSJK^#i_HB>R9Y_<6o9@76tKhu|Rn6#yU47)qKIv>0pEYG=iV6M%2Ivt|KMv~1I*kSy|P0|=a z2NR?!en*N#BG*z9CN16h<;*R^keg=*=eL<($9-;Y*MG-0<|GKr8&P{e&GP=jTU-P~ zU?t|yq}$_V7E;vsu?O#YLqDDTi_f-P%_fY3*ARa8mlLekm=Dry!t`5lD|@?T;eY+s zF-%&#>On8zLme4}kn;%uYR)IRV*t5Zcv~R6U3&1)$6H0S_E2CM2jld*wVW&fz6KO8 z&Y&oJ4@J6Nhp``52fQ#`*Cbw3o}Cz^fNLJK;dRKyex^LoqMAW+L~`#zi_A{hUzz+XAxvt;UZ@f3m7GqTp3Nro>dIx!X?x?|Aps z$R2zU37D2Q*kIbfNlclm4?N1paDHw_=fatFohsXKoqr^6@z`k63r9pcBi0Ee?;$;?`BfjVPAee^3d@2F8V%{C(S~*sS{TrFw;dMobQ(i)qz!rc@Fg%-N0g6FoR5oB~E z^Sx&GF3S6;XwCbgmn-I;CiVqa#I9S!Cj(hRPaihjK2tUWCf8v-$I{YcKE`_77{BQ= z{snWK%nean(*Yfuom-c(P0FC$$0T{hR##pk#MSTDu%pnr%i3~z3t?;lHXSaT5O2!Y z$0OH%Ro}%AigoA2I{clPAA4)K1LvBiezS(TzK48@&Ftdm((aBIfkZVTubHnFDvyxR z6l@e~Kz$BPF8_v1BavFUt4maJ#ln!PxG;Ho^^*H|>}P9yp)NfPV7c z2kJ(mIBWf z_mckK3;zwCzyNN$fqAJryb$y!chr|mH}+yG+mq9+*FHeHT(FZCz$)1^73RC;K3dl@=g6AISdwU>Ms&_z8LS2bBAaf=3nmf;I;_OUj-?XIoaH zSO&Nsm|%qCZzj)Rzdmit({y9*&_OEzZlq+Ou3^*MBK(i_TmtSj;{yW8wFjBjh^< z7u%HCrv(PXa@skQ26TPW{y;x>f_V$pFKZ6hopD{;Ax-Gsl z|8k?mmXGU+PnK}hITt8xccpCz<;V=5_{0Z4r!RAhKR?+gDvZ~^5Ews8gh1M2FVtA zHwEAy+8m0UA(9v@?@06)7$}9{0LSuk(ATibjH+Ez#vxRn8_UT#z;;Da7B}$w*J36tly^*~ZIM8TKYOwP)EKJv89msoYB8J^0%C zhjvtY1RA3#UKZe4NBE*RxX#;XkO`gh2Q4RrXyzke;Czx{9QPHa>e{(OoJuWs=N~k< z)xES6{iJ1$;!L#dn&-}ruv4Op@w0_pi08WY8CUF@1BQqHhx-?oEw(UTILX~fjB9}G zzi3iwVKT#^^CLR(+0Ax`4AsZ-GBUQ4aa68P&urYzIJAG$QyXvsnhe))o94xm$n zEGGhK_fQn6wHw$Y97k-F@9(j-Tad?m3~eLe)SiU|2rS$XGp>WICV*E&bPDP8{N4}L zQ!Y;-A#nph25y;c`ErAnH9=}WpLFdjMSny;b{hkY3`b!6E;<`V{Hn>Xnzo@;#eABL zxYeMSvj`{z{$LkhK)(CH(36>g2umR&N=4)Cbs{o>9$5r?tH}khxA^KGVH=NN6Eg5vyRY7pFxgL;@)*bTMInJc5Y@Pk&a+|%e z=UOFc6M~O2(hoUru$ThcW%|ems&)$-m+a1aaGyaB=?aobpg17_=)-4blx}^D`{56~ z`(xb0Tr*!(%7C~+{u9g5K6Mr=%s&aUgo1lRQ#ifc-nEJ<^Pk;b)*^oR8`PrwytKKa z?63bP5_MC1`uAu?E(~7S8Bi&u5wuOeYzpVW4N<{UUp5lY$9(sg37?Bc&x~*kM#Q^3 zu=?SIdRfW(V?6y+wZw+chF?$L(&r#btDT^ zzzTs8a7Xxjtf9DvoQhP9RhSmIf0Ois$03X2I-X^!5v_mCo>({Th6`}X&1yrfLr_~i zcnc)^BbpyNRnP-N8MkHA<~QO0HuAqI1mx=fX2tqH^SPA&B1kO$isZKEz19yjQ+_~s z{J&=kSRVhEkG;MBB%rXFSBs=*8sDf@pZsV>t3|L;p!`nWIv<^_)zJ-Zhozd;%6Rx zJ@fs|YG-~gJk(yPy*}IKEfmno2Rmn4_ifX$qc>~MTRWgKOuu0l1=BoUD}(e?F*F~3 z*H2V_$za_C}|FyX;^?xGh=<$C|5AdA`K%N6CDdqnMu)OuWyUxA8>*RmX za{R9?<`YfwzX0k0|I>xDKkkn^;^TeVvKO4c^t>>DNNmf;`n(C(f%-o{{H3^FNFN)- zypIaCDJp>p<(ZYh+yFN>kk;G?l?U5#6w`p185NXUI$#qFD=>c@NAex{H~5E;cE0A> zC(ZXYw_Tj1Lb>;xXajzt|0)|aNbr*a+Q?~^*>`>`hNDsQqAbb$A&Mt=H;FH05tZvuF$)fO|E|3wJp&VM+MUcr)3!0QnR&1Au1h8w}3ho&FqFZmrjR$T!x{}FG_0;n$k?{fg)>3_6E zUjL(yC(`~agv#)H7Qp9`-^s}qsdPYa4Ug_2Sli}D;IDD;$R-Nm`f%4N1YqO5$knQn z+e%JoG}uRD`!22cwX(ncW(2qK0UD_g((&zh`}dY#{Tx7GG%CAMP-eR5tdPoEoN#ny z1IJ2w#-B(G4idOSI($4E^e(=jKXVgGro=!r@_nqJ$wE8&BXdllNRND9iRdb(9PblD zJjLoLze6v4Nto)&{~D~la||B-o9G4m-(;pq`7eSp_%CL7A4+wkn8mNQR0;HvE{8wJ zYIw^oh7!0~y?T%e#dW>VNCdP}IExb9uWB0V%J(+t6qcUpMlW6_f)Sm{4*g7@64mAZ zbVqGI29N*8)57_0K3z!tj|d_F<8>007XW9a2KE}cA*tlYLr+mskJOO=TOl|8{-3x1 zX!H3@=KmH!74iS6miDCVe35Az>uC8c6J6`b<@Frnh!KMhk_##k$f2LABuSDa9Y6g) LjYi!@0B{)qPk4Os From 0a6af14f990795ce570fed6ba316594824c718e9 Mon Sep 17 00:00:00 2001 From: wooyoungmin <47769117+minwy23@users.noreply.github.com> Date: Wed, 21 Oct 2020 10:37:55 +0900 Subject: [PATCH 038/106] Delete image-push.sh --- Kubeflow/image-push.sh | 26 -------------------------- 1 file changed, 26 deletions(-) delete mode 100644 Kubeflow/image-push.sh diff --git a/Kubeflow/image-push.sh b/Kubeflow/image-push.sh deleted file mode 100644 index 14998989..00000000 --- a/Kubeflow/image-push.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/bash - -registry="" - -if [ $# -eq 1 ]; then - registry=$1 -else - echo "[$0] ERROR!! Invalid argument count" - echo "[$0] [Usage] $0 192.168.6.110:5000" - exit 1 -fi - -image_num=$(cat imagelist | wc -l) -echo "[$0] Pull ${image_num} images & Push to ${registry}" - -i=1 -cat imagelist | while read line -do - echo "[$0] [ ${i} / ${image_num} ] $line" - let i+=1 - sudo docker pull $line - sudo docker tag $line ${registry}/$line - sudo docker push ${registry}/$line -done - -echo "[$0] Done" From b69ca68857610d46e58bcb598154f820df9fba55 Mon Sep 17 00:00:00 2001 From: wooyoungmin <47769117+minwy23@users.noreply.github.com> Date: Wed, 21 Oct 2020 10:38:02 +0900 Subject: [PATCH 039/106] Delete sed.sh --- Kubeflow/sed.sh | 90 ------------------------------------------------- 1 file changed, 90 deletions(-) delete mode 100644 Kubeflow/sed.sh diff --git a/Kubeflow/sed.sh b/Kubeflow/sed.sh deleted file mode 100644 index 32d90cc8..00000000 --- a/Kubeflow/sed.sh +++ /dev/null @@ -1,90 +0,0 @@ -#!/bin/bash - -registry="" -dir="" - -if [ $# -eq 2 ]; then - registry=$1 - dir=$2 -else - echo "[$0] ERROR!! Invalid argument count" - echo "[$0] [Usage] $0 192.168.6.110:5000 ${KF_DIR}/kustomize" - exit 1 -fi - -echo "[$0] Modify images in Kustomize manifest files" - -sed -i "s/image: gcr.io\/ml-pipeline\/api-server/image: ${registry}\/gcr.io\/ml-pipeline\/api-server/g" ${dir}/api-service/base/deployment.yaml -sed -i "s/image: gcr.io\/kubeflow-images-public\/kubernetes-sigs\/application/image: ${registry}\/cr.io\/kubeflow-images-public\/kubernetes-sigs\/application/g" ${dir}/application/base/stateful-set.yaml -sed -i "s/image: argoproj\/argocli/image: ${registry}\/argoproj\/argocli/g" ${dir}/argo/base/deployment.yaml -sed -i "s/image: argoproj\/workflow-controller/image: ${registry}\/argoproj\/workflow-controller/g" ${dir}/argo/base/deployment.yaml -sed -i "s/image: gcr.io\/kubeflow-images-public\/ingress-setup/image: ${registry}\/gcr.io\/kubeflow-images-public\/ingress-setup/g" ${dir}/bootstrap/base/stateful-set.yaml -sed -i "s/image: gcr.io\/kubeflow-images-public\/centraldashboard/image: ${registry}\/gcr.io\/kubeflow-images-public\/centraldashboard/g" ${dir}/centraldashboard/base/deployment.yaml -sed -i "s/image: \"quay.io\/jetstack\/cert-manager-cainjector/image: \"${registry}\/quay.io\/jetstack\/cert-manager-cainjector/g" ${dir}/cert-manager/base/deployment.yaml -sed -i "s/image: \"quay.io\/jetstack\/cert-manager-webhook/image: \"${registry}\/quay.io\/jetstack\/cert-manager-webhook/g" ${dir}/cert-manager/base/deployment.yaml -sed -i "s/image: \"quay.io\/jetstack\/cert-manager-controller/image: \"${registry}\/quay.io\/jetstack\/cert-manager-controller/g" ${dir}/cert-manager/base/deployment.yaml -sed -i "s/image: \"docker.io\/istio\/proxyv2/image: \"${registry}\/docker.io\/istio\/proxyv2/g" ${dir}/kfserving-gateway\/base\/deployment.yaml -sed -i "s/image: \"docker.io\/istio\/proxyv2/image: \"${registry}\/docker.io\/istio\/proxyv2/g" ${dir}/cluster-local-gateway\/base\/deployment.yaml -sed -i "s/image: gcr.io\/kubeflow-images-public\/jupyter-web-app/image: ${registry}\/gcr.io\/kubeflow-images-public\/jupyter-web-app/g" ${dir}/jupyter-web-app\/base\/deployment.yaml -sed -i "s/gcr.io\/kubeflow-images-public\/tensorflow-1.14.0-notebook-cpu/${registry}\/gcr.io\/kubeflow-images-public\/tensorflow-1.14.0-notebook-cpu/g" ${dir}/jupyter-web-app/base/config-map.yaml -sed -i "s/gcr.io\/kubeflow-images-public\/tensorflow-1.15.2-notebook-cpu/${registry}\/gcr.io\/kubeflow-images-public\/tensorflow-1.15.2-notebook-cpu/g" ${dir}/jupyter-web-app/base/config-map.yaml -sed -i "s/gcr.io\/kubeflow-images-public\/tensorflow-1.15.2-notebook-gpu/${registry}\/gcr.io\/kubeflow-images-public\/tensorflow-1.15.2-notebook-gpu/g" ${dir}/jupyter-web-app/base/config-map.yaml -sed -i "s/gcr.io\/kubeflow-images-public\/tensorflow-2.1.0-notebook-cpu/${registry}\/gcr.io\/kubeflow-images-public\/tensorflow-2.1.0-notebook-cpu/g" ${dir}/jupyter-web-app/base/config-map.yaml -sed -i "s/gcr.io\/kubeflow-images-public\/tensorflow-2.1.0-notebook-gpu/${registry}\/gcr.io\/kubeflow-images-public\/tensorflow-2.1.0-notebook-gpu/g" ${dir}/jupyter-web-app/base/config-map.yaml -sed -i "s/\"image\": \"gcr.io\/kubeflow-images-public\/katib\/v1alpha3\/file-metrics-collector/\"image\": \"${registry}\/gcr.io\/kubeflow-images-public\/katib\/v1alpha3\/file-metrics-collector/g" ${dir}/katib-controller\/base\/katib-configmap.yaml -sed -i "s/\"image\": \"gcr.io\/kubeflow-images-public\/katib\/v1alpha3\/file-metrics-collector/\"image\": \"${registry}\/gcr.io\/kubeflow-images-public\/katib\/v1alpha3\/file-metrics-collector/g" ${dir}/katib-controller\/base\/katib-configmap.yaml -sed -i "s/\"image\": \"gcr.io\/kubeflow-images-public\/katib\/v1alpha3\/tfevent-metrics-collector/\"image\": \"${registry}\/gcr.io\/kubeflow-images-public\/katib\/v1alpha3\/tfevent-metrics-collector/g" ${dir}/katib-controller\/base\/katib-configmap.yaml -sed -i "s/\"image\": \"gcr.io\/kubeflow-images-public\/katib\/v1alpha3\/suggestion-hyperopt/\"image\": \"${registry}\/gcr.io\/kubeflow-images-public\/katib\/v1alpha3\/suggestion-hyperopt/g" ${dir}/katib-controller\/base\/katib-configmap.yaml -sed -i "s/\"image\": \"gcr.io\/kubeflow-images-public\/katib\/v1alpha3\/suggestion-chocolate/\"image\": \"${registry}\/gcr.io\/kubeflow-images-public\/katib\/v1alpha3\/suggestion-chocolate/g" ${dir}/katib-controller\/base\/katib-configmap.yaml -sed -i "s/\"image\": \"gcr.io\/kubeflow-images-public\/katib\/v1alpha3\/suggestion-hyperband/\"image\": \"${registry}\/gcr.io\/kubeflow-images-public\/katib\/v1alpha3\/suggestion-hyperband/g" ${dir}/katib-controller\/base\/katib-configmap.yaml -sed -i "s/\"image\": \"gcr.io\/kubeflow-images-public\/katib\/v1alpha3\/suggestion-skopt/\"image\": \"${registry}\/gcr.io\/kubeflow-images-public\/katib\/v1alpha3\/suggestion-skopt/g" ${dir}/katib-controller\/base\/katib-configmap.yaml -sed -i "s/\"image\": \"gcr.io\/kubeflow-images-public\/katib\/v1alpha3\/suggestion-hyperopt/\"image\": \"${registry}\/gcr.io\/kubeflow-images-public\/katib\/v1alpha3\/suggestion-hyperopt/g" ${dir}/katib-controller\/base\/katib-configmap.yaml -sed -i "s/\"image\": \"gcr.io\/kubeflow-images-public\/katib\/v1alpha3\/suggestion-nasrl/\"image\": \"${registry}\/gcr.io\/kubeflow-images-public\/katib\/v1alpha3\/suggestion-nasrl/g" ${dir}/katib-controller\/base\/katib-configmap.yaml -sed -i "s/image: docker.io\/kubeflowkatib\/mxnet-mnist/image: ${registry}\/docker.io\/kubeflowkatib\/mxnet-mnist/g" ${dir}/katib-controller\/base\/trial-template-configmap.yaml -sed -i "s/image: gcr.io\/kubeflow-images-public\/katib\/v1alpha3\/katib-controller/image: ${registry}\/gcr.io\/kubeflow-images-public\/katib\/v1alpha3\/katib-controller/g" ${dir}/katib-controller\/base\/katib-controller-deployment.yaml -sed -i "s/image: gcr.io\/kubeflow-images-public\/katib\/v1alpha3\/katib-db-manager/image: ${registry}\/gcr.io\/kubeflow-images-public\/katib\/v1alpha3\/katib-db-manager/g" ${dir}/katib-controller\/base\/katib-db-manager-deployment.yaml -sed -i "s/image: mysql/image: ${registry}\/mysql/g" ${dir}/katib-controller\/base\/katib-mysql-deployment.yaml -sed -i "s/image: mysql/image: ${registry}\/mysql/g" ${dir}/mysql\/base\/deployment.yaml -sed -i "s/image: mysql/image: ${registry}\/mysql/g" ${dir}/metadata\/overlays\/db\/metadata-db-deployment.yaml -sed -i "s/image: gcr.io\/kubeflow-images-public\/katib\/v1alpha3\/katib-ui/image: ${registry}\/gcr.io\/kubeflow-images-public\/katib\/v1alpha3\/katib-ui/g" ${dir}/katib-controller\/base\/katib-ui-deployment.yaml -sed -i "s/image: \"docker.io\/istio\/proxyv2/image: \"${registry}\/docker.io\/istio\/proxyv2/g" ${dir}/kfserving-gateway\/base\/deployment.yaml -sed -i "s/image: \"docker.io\/istio\/proxyv2/image: \"${registry}\/docker.io\/istio\/proxyv2/g" ${dir}/cluster-local-gateway\/base\/deployment.yaml -sed -i "s/\"image\" : \"gcr.io\/kfserving\/batcher/\"image\" : \"${registry}\/gcr.io\/kfserving\/batcher/g" ${dir}/kfserving-install\/base\/config-map.yaml -sed -i "s/\"image\" : \"gcr.io\/kfserving\/alibi-explainer/\"image\" : \"${registry}\/gcr.io\/kfserving\/alibi-explainer/g" ${dir}/kfserving-install\/base\/config-map.yaml -sed -i "s/\"image\" : \"gcr.io\/kfserving\/logger/\"image\" : \"${registry}\/gcr.io\/kfserving\/logger/g" ${dir}/kfserving-install\/base\/config-map.yaml -sed -i "s/\"image\": \"tensorflow\/serving/\"image\": \"${registry}\/tensorflow\/serving/g" ${dir}/kfserving-install\/base\/config-map.yaml -sed -i "s/\"image\": \"mcr.microsoft.com\/onnxruntime\/server/\"image\": \"${registry}\/mcr.microsoft.com\/onnxruntime\/server/g" ${dir}/kfserving-install\/base\/config-map.yaml -sed -i "s/\"image\": \"gcr.io\/kfserving\/sklearnserver/\"image\": \"${registry}\/gcr.io\/kfserving\/sklearnserver/g" ${dir}/kfserving-install\/base\/config-map.yaml -sed -i "s/\"image\": \"gcr.io\/kfserving\/xgbserver/\"image\": \"${registry}\/gcr.io\/kfserving\/xgbserver/g" ${dir}/kfserving-install\/base\/config-map.yaml -sed -i "s/\"image\": \"gcr.io\/kfserving\/pytorchserver/\"image\": \"${registry}\/gcr.io\/kfserving\/pytorchserver/g" ${dir}/kfserving-install\/base\/config-map.yaml -sed -i "s/\"image\": \"nvcr.io\/nvidia\/tensorrtserver/\"image\": \"${registry}\/nvcr.io\/nvidia\/tensorrtserver/g" ${dir}/kfserving-install\/base\/config-map.yaml -sed -i "s/\"image\" : \"gcr.io\/kfserving\/storage-initializer/\"image\" : \"${registry}\/gcr.io\/kfserving\/storage-initializer/g" ${dir}/kfserving-install\/base\/config-map.yaml -sed -i "s/image: gcr.io\/kubebuilder\/kube-rbac-proxy/image: ${registry}\/gcr.io\/kubebuilder\/kube-rbac-proxy/g" ${dir}/kfserving-install\/base\/statefulset.yaml -sed -i "s/image: tmaxcloudck\/hypercloud-kfserving/image: ${registry}\/tmaxcloudck\/hypercloud-kfserving/g" ${dir}/kfserving-install\/base\/statefulset.yaml -sed -i "s/image: gcr.io\/knative-releases\/knative.dev\/serving\/cmd/image: ${registry}\/gcr.io\/knative-releases\/knative.dev\/serving\/cmd/g" ${dir}/knative-install/base/deployment.yaml -sed -i "s/image: gcr.io\/knative-releases\/knative.dev\/serving\/cmd/image: ${registry}\/gcr.io\/knative-releases\/knative.dev\/serving\/cmd/g" ${dir}/knative-install/base/image.yaml -sed -i "s/image: metacontroller\/metacontroller/image: ${registry}\/metacontroller\/metacontroller/g" ${dir}/metacontroller\/base\/stateful-set.yaml -sed -i "s/image: gcr.io\/kubeflow-images-public\/metadata-frontend/image: ${registry}\/gcr.io\/kubeflow-images-public\/metadata-frontend/g" ${dir}/metadata\/base\/metadata-ui-deployment.yaml -sed -i "s/image: gcr.io\/kubeflow-images-public\/metadata/image: ${registry}\/gcr.io\/kubeflow-images-public\/metadata/g" ${dir}/metadata\/base\/metadata-deployment.yaml -sed -i "s/image: gcr.io\/ml-pipeline\/envoy:metadata-grpc/image: ${registry}\/gcr.io\/ml-pipeline\/envoy:metadata-grpc/g" ${dir}/metadata\/base\/metadata-envoy-deployment.yaml -sed -i "s/image: gcr.io\/tfx-oss-public\/ml_metadata_store_server/image: ${registry}\/gcr.io\/tfx-oss-public\/ml_metadata_store_server/g" ${dir}/metadata\/base\/metadata-deployment.yaml -sed -i "s/image: gcr.io\/kubeflow-images-public\/metadata-frontend/image: ${registry}\/gcr.io\/kubeflow-images-public\/metadata-frontend/g" ${dir}/metadata\/base\/metadata-ui-deployment.yaml -sed -i "s/image: minio\/minio/image: ${registry}\/minio\/minio/g" ${dir}/minio\/base\/deployment.yaml -sed -i "s/image: tmaxcloudck\/notebook-controller-go:b0.0.2/image: ${registry}\/tmaxcloudck\/notebook-controller-go:b0.0.2/g" ${dir}/notebook-controller\/base\/deployment.yaml -sed -i "s/image: gcr.io\/ml-pipeline\/persistenceagent/image: ${registry}\/gcr.io\/ml-pipeline\/persistenceagent/g" ${dir}/persistent-agent\/base\/deployment.yaml -sed -i "s/image: gcr.io\/ml-pipeline\/frontend/image: ${registry}\/gcr.io\/ml-pipeline\/frontend/g" ${dir}/pipelines-ui\/base\/deployment.yaml -sed -i "s/image: gcr.io\/ml-pipeline\/viewer-crd-controller/image: ${registry}\/gcr.io\/ml-pipeline\/viewer-crd-controller/g" ${dir}/pipelines-viewer\/base\/deployment.yaml -sed -i "s/image: gcr.io\/ml-pipeline\/visualization-server/image: ${registry}\/gcr.io\/ml-pipeline\/visualization-server/g" ${dir}/pipeline-visualization-service\/base\/deployment.yaml -sed -i "s/image: gcr.io\/kubeflow-images-public\/profile-controller/image: ${registry}\/gcr.io\/kubeflow-images-public\/profile-controller/g" ${dir}/profiles\/base\/deployment.yaml -sed -i "s/image: gcr.io\/kubeflow-images-public\/kfam/image: ${registry}\/gcr.io\/kubeflow-images-public\/kfam/g" ${dir}/profiles\/base\/deployment.yaml -sed -i "s/image: gcr.io\/kubeflow-images-public\/pytorch-operator/image: ${registry}\/gcr.io\/kubeflow-images-public\/pytorch-operator/g" ${dir}/pytorch-operator\/base\/deployment.yaml -sed -i "s/image: gcr.io\/ml-pipeline\/scheduledworkflow/image: ${registry}\/gcr.io\/ml-pipeline\/scheduledworkflow/g" ${dir}/scheduledworkflow\/base\/deployment.yaml -sed -i "s/image: 'docker.io\/seldonio\/seldon-core-operator/image: '${registry}\/docker.io\/seldonio\/seldon-core-operator/g" ${dir}/seldon-core-operator\/base\/resources.yaml -sed -i "s/image: gcr.io\/spark-operator\/spark-operator/image: ${registry}\/gcr.io\/spark-operator\/spark-operator/g" ${dir}/spark-operator\/base\/deploy.yaml -sed -i "s/image: gcr.io\/spark-operator\/spark-operator/image: ${registry}\/gcr.io\/spark-operator\/spark-operator/g" ${dir}/spark-operator\/base\/crd-cleanup-job.yaml -sed -i "s/image: gcr.io\/google_containers\/spartakus-amd64/image: ${registry}\/gcr.io\/google_containers\/spartakus-amd64/g" ${dir}/spartakus\/base\/deployment.yaml -sed -i "s/image: tensorflow\/tensorflow/image: ${registry}\/tensorflow\/tensorflow/g" ${dir}/tensorboard\/base\/deployment.yaml -sed -i "s/image: gcr.io\/kubeflow-images-public\/tf_operator/image: ${registry}\/gcr.io\/kubeflow-images-public\/tf_operator/g" ${dir}/tf-job-operator\/base\/deployment.yaml -sed -i "s/image: gcr.io\/kubeflow-images-public\/admission-webhook/image: ${registry}\/gcr.io\/kubeflow-images-public\/admission-webhook/g" ${dir}/webhook\/base\/deployment.yaml - -echo "[$0] Done" From 98d5c91ccc195298c25344a7ad4bbf83a6153c6c Mon Sep 17 00:00:00 2001 From: wooyoungmin <47769117+minwy23@users.noreply.github.com> Date: Wed, 21 Oct 2020 10:39:01 +0900 Subject: [PATCH 040/106] Add files via upload --- Kubeflow/image-load.sh | 26 ++ Kubeflow/image-push.sh | 29 ++ Kubeflow/image-save.sh | 17 + Kubeflow/imagelist | 73 ++++ ...fctl_hypercloud_kubeflow.v1.0.2_local.yaml | 350 ++++++++++++++++++ Kubeflow/kustomize_local.tar.gz | Bin 0 -> 194117 bytes Kubeflow/sed.sh | 90 +++++ 7 files changed, 585 insertions(+) create mode 100644 Kubeflow/image-load.sh create mode 100644 Kubeflow/image-push.sh create mode 100644 Kubeflow/image-save.sh create mode 100644 Kubeflow/imagelist create mode 100644 Kubeflow/kfctl_hypercloud_kubeflow.v1.0.2_local.yaml create mode 100644 Kubeflow/kustomize_local.tar.gz create mode 100644 Kubeflow/sed.sh diff --git a/Kubeflow/image-load.sh b/Kubeflow/image-load.sh new file mode 100644 index 00000000..e497b687 --- /dev/null +++ b/Kubeflow/image-load.sh @@ -0,0 +1,26 @@ +#!/bin/bash + +registry="" + +if [ $# -eq 1 ]; then + registry=$1 +else + echo "[$0] ERROR!! Invalid argument count" + echo "[$0] [Usage] $0 192.168.6.110:5000" + exit 1 +fi + +image_num=$(cat imagelist | wc -l) +echo "[$0] Load ${image_num} images & Push to ${registry}" + +i=1 +cat imagelist | while read line +do + echo "[$0] [ ${i} / ${image_num} ] $line" + sudo docker load < ./images/${i}.tar + sudo docker tag $line ${registry}/$line + sudo docker push ${registry}/$line + let i+=1 +done + +echo "[$0] Done" diff --git a/Kubeflow/image-push.sh b/Kubeflow/image-push.sh new file mode 100644 index 00000000..76158a13 --- /dev/null +++ b/Kubeflow/image-push.sh @@ -0,0 +1,29 @@ +#!/bin/bash + +registry="" + +if [ $# -eq 1 ]; then + registry=$1 +else + echo "[$0] ERROR!! Invalid argument count" + echo "[$0] [Usage] $0 192.168.6.110:5000" + exit 1 +fi + +image_num=$(cat imagelist | wc -l) +echo "[$0] Pull ${image_num} images & Save as tar files & Push to ${registry}" + +mkdir ./images + +i=1 +cat imagelist | while read line +do + echo "[$0] [ ${i} / ${image_num} ] $line" + sudo docker pull $line + sudo docker tag $line ${registry}/$line + sudo docker save $line > ./images/${i}.tar + sudo docker push ${registry}/$line + let i+=1 +done + +echo "[$0] Done" diff --git a/Kubeflow/image-save.sh b/Kubeflow/image-save.sh new file mode 100644 index 00000000..7553cd69 --- /dev/null +++ b/Kubeflow/image-save.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +image_num=$(cat imagelist | wc -l) +echo "[$0] Pull ${image_num} images & Save as tar files" + +mkdir ./images + +i=1 +cat imagelist | while read line +do + echo "[$0] [ ${i} / ${image_num} ] $line" + sudo docker pull $line + sudo docker save $line > ./images/${i}.tar + let i+=1 +done + +echo "[$0] Done" diff --git a/Kubeflow/imagelist b/Kubeflow/imagelist new file mode 100644 index 00000000..b942c677 --- /dev/null +++ b/Kubeflow/imagelist @@ -0,0 +1,73 @@ +gcr.io/ml-pipeline/api-server:0.2.5 +gcr.io/kubeflow-images-public/kubernetes-sigs/application:1.0-beta +argoproj/argocli:v2.8.0 +argoproj/workflow-controller:v2.8.0 +gcr.io/kubeflow-images-public/ingress-setup:latest +gcr.io/kubeflow-images-public/centraldashboard:v1.0.0-g3ec0de71 +quay.io/jetstack/cert-manager-cainjector:v0.11.0 +quay.io/jetstack/cert-manager-webhook:v0.11.0 +quay.io/jetstack/cert-manager-controller:v0.11.0 +docker.io/istio/proxyv2:1.5.1 +gcr.io/kubeflow-images-public/jupyter-web-app:v1.0.0-g2bd63238 +gcr.io/kubeflow-images-public/tensorflow-1.14.0-notebook-cpu:v-base-ef41372-1177829795472347138 +gcr.io/kubeflow-images-public/tensorflow-1.15.2-notebook-cpu:1.0.0 +gcr.io/kubeflow-images-public/tensorflow-1.15.2-notebook-gpu:1.0.0 +gcr.io/kubeflow-images-public/tensorflow-2.1.0-notebook-cpu:1.0.0 +gcr.io/kubeflow-images-public/tensorflow-2.1.0-notebook-gpu:1.0.0 +gcr.io/kubeflow-images-public/katib/v1alpha3/file-metrics-collector:v0.8.0 +gcr.io/kubeflow-images-public/katib/v1alpha3/file-metrics-collector:v0.8.0 +gcr.io/kubeflow-images-public/katib/v1alpha3/tfevent-metrics-collector:v0.8.0 +gcr.io/kubeflow-images-public/katib/v1alpha3/suggestion-hyperopt:v0.8.0 +gcr.io/kubeflow-images-public/katib/v1alpha3/suggestion-chocolate:v0.8.0 +gcr.io/kubeflow-images-public/katib/v1alpha3/suggestion-hyperband:v0.8.0 +gcr.io/kubeflow-images-public/katib/v1alpha3/suggestion-skopt:v0.8.0 +gcr.io/kubeflow-images-public/katib/v1alpha3/suggestion-hyperopt:v0.8.0 +gcr.io/kubeflow-images-public/katib/v1alpha3/suggestion-nasrl:v0.8.0 +docker.io/kubeflowkatib/mxnet-mnist +gcr.io/kubeflow-images-public/katib/v1alpha3/katib-controller:v0.8.0 +gcr.io/kubeflow-images-public/katib/v1alpha3/katib-db-manager:v0.8.0 +mysql:8 +gcr.io/kubeflow-images-public/katib/v1alpha3/katib-ui:v0.8.0 +docker.io/istio/proxyv2:1.5.1 +gcr.io/kfserving/batcher:v0.4.0 +gcr.io/kfserving/alibi-explainer +gcr.io/kfserving/logger:0.4.0 +tensorflow/serving +mcr.microsoft.com/onnxruntime/server +gcr.io/kfserving/sklearnserver +gcr.io/kfserving/xgbserver +gcr.io/kfserving/pytorchserver +nvcr.io/nvidia/tritonserver +gcr.io/kfserving/storage-initializer:v0.4.0 +gcr.io/kubebuilder/kube-rbac-proxy:v0.4.0 +gcr.io/kfserving/kfserving-controller:v0.4.0 +gcr.io/knative-releases/knative.dev/serving/cmd/activator:v0.11.1 +gcr.io/knative-releases/knative.dev/serving/cmd/autoscaler-hpa:v0.11.1 +gcr.io/knative-releases/knative.dev/serving/cmd/autoscaler:v0.11.1 +gcr.io/knative-releases/knative.dev/serving/cmd/controller:v0.11.1 +gcr.io/knative-releases/knative.dev/serving/cmd/networking/istio:v0.11.1 +gcr.io/knative-releases/knative.dev/serving/cmd/webhook:v0.11.1 +gcr.io/knative-releases/knative.dev/serving/cmd/queue:v0.11.1 +metacontroller/metacontroller:v0.3.0 +gcr.io/kubeflow-images-public/metadata:v0.1.11 +gcr.io/ml-pipeline/envoy:metadata-grpc +gcr.io/tfx-oss-public/ml_metadata_store_server:v0.21.1 +gcr.io/kubeflow-images-public/metadata-frontend:v0.1.8 +mysql:8.0.3 +minio/minio:RELEASE.2018-02-09T22-40-05Z +mysql:5.6 +tmaxcloudck/notebook-controller-go:b0.0.2 +gcr.io/ml-pipeline/persistenceagent:0.2.5 +gcr.io/ml-pipeline/frontend:0.2.5 +gcr.io/ml-pipeline/viewer-crd-controller:0.2.5 +gcr.io/ml-pipeline/visualization-server:0.2.5 +gcr.io/kubeflow-images-public/profile-controller:v1.0.0-ge50a8531 +gcr.io/kubeflow-images-public/kfam:v1.0.0-gf3e09203 +gcr.io/kubeflow-images-public/pytorch-operator:v1.0.0-g047cf0f +gcr.io/ml-pipeline/scheduledworkflow:0.2.5 +docker.io/seldonio/seldon-core-operator:1.0.1 +gcr.io/spark-operator/spark-operator:v1beta2-1.0.0-2.4.4 +gcr.io/google_containers/spartakus-amd64:v1.1.0 +tensorflow/tensorflow:1.8.0 +gcr.io/kubeflow-images-public/tf_operator:v1.0.0-g92389064 +gcr.io/kubeflow-images-public/admission-webhook:v1.0.0-gaf96e4e3 diff --git a/Kubeflow/kfctl_hypercloud_kubeflow.v1.0.2_local.yaml b/Kubeflow/kfctl_hypercloud_kubeflow.v1.0.2_local.yaml new file mode 100644 index 00000000..42f9a026 --- /dev/null +++ b/Kubeflow/kfctl_hypercloud_kubeflow.v1.0.2_local.yaml @@ -0,0 +1,350 @@ +apiVersion: kfdef.apps.kubeflow.org/v1 +kind: KfDef +metadata: + clusterName: kubernetes + creationTimestamp: null + name: kubeflow + namespace: kubeflow +spec: + applications: + - kustomizeConfig: + parameters: + - name: namespace + value: istio-system + repoRef: + name: manifests + path: istio/cluster-local-gateway + name: cluster-local-gateway + - kustomizeConfig: + parameters: + - name: namespace + value: istio-system + repoRef: + name: manifests + path: istio/kfserving-gateway + name: kfserving-gateway + - kustomizeConfig: + parameters: + - name: clusterRbacConfig + value: "OFF" + repoRef: + name: manifests + path: istio/istio + name: istio + - kustomizeConfig: + parameters: + - name: namespace + value: istio-system + repoRef: + name: manifests + path: istio/add-anonymous-user-filter + name: add-anonymous-user-filter + - kustomizeConfig: + repoRef: + name: manifests + path: application/application-crds + name: application-crds + - kustomizeConfig: + overlays: + - application + repoRef: + name: manifests + path: application/application + name: application + - kustomizeConfig: + parameters: + - name: namespace + value: cert-manager + repoRef: + name: manifests + path: cert-manager/cert-manager-crds + name: cert-manager-crds + - kustomizeConfig: + parameters: + - name: namespace + value: kube-system + repoRef: + name: manifests + path: cert-manager/cert-manager-kube-system-resources + name: cert-manager-kube-system-resources + - kustomizeConfig: + overlays: + - self-signed + - application + parameters: + - name: namespace + value: cert-manager + repoRef: + name: manifests + path: cert-manager/cert-manager + name: cert-manager + - kustomizeConfig: + repoRef: + name: manifests + path: metacontroller + name: metacontroller + - kustomizeConfig: + overlays: + - istio + - application + repoRef: + name: manifests + path: argo + name: argo + - kustomizeConfig: + repoRef: + name: manifests + path: kubeflow-roles + name: kubeflow-roles + - kustomizeConfig: + overlays: + - istio + - application + repoRef: + name: manifests + path: common/centraldashboard + name: centraldashboard + - kustomizeConfig: + overlays: + - application + repoRef: + name: manifests + path: admission-webhook/bootstrap + name: bootstrap + - kustomizeConfig: + overlays: + - application + repoRef: + name: manifests + path: admission-webhook/webhook + name: webhook + - kustomizeConfig: + overlays: + - istio + - application + parameters: + - name: userid-header + value: kubeflow-userid + repoRef: + name: manifests + path: jupyter/jupyter-web-app + name: jupyter-web-app + - kustomizeConfig: + overlays: + - application + repoRef: + name: manifests + path: spark/spark-operator + name: spark-operator + - kustomizeConfig: + overlays: + - istio + - application + - db + repoRef: + name: manifests + path: metadata + name: metadata + - kustomizeConfig: + overlays: + - istio + - application + - hypercloud + repoRef: + name: manifests + path: jupyter/notebook-controller + name: notebook-controller + - kustomizeConfig: + overlays: + - application + repoRef: + name: manifests + path: pytorch-job/pytorch-job-crds + name: pytorch-job-crds + - kustomizeConfig: + overlays: + - application + repoRef: + name: manifests + path: pytorch-job/pytorch-operator + name: pytorch-operator + - kustomizeConfig: + overlays: + - application + parameters: + - name: namespace + value: knative-serving + repoRef: + name: manifests + path: knative/knative-serving-crds + name: knative-crds + - kustomizeConfig: + overlays: + - application + parameters: + - name: namespace + value: knative-serving + repoRef: + name: manifests + path: knative/knative-serving-install + name: knative-install + - kustomizeConfig: + overlays: + - application + repoRef: + name: manifests + path: kfserving/kfserving-crds + name: kfserving-crds + - kustomizeConfig: + overlays: + - application + repoRef: + name: manifests + path: kfserving/kfserving-install + name: kfserving-install + - kustomizeConfig: + overlays: + - application + parameters: + - name: usageId + value: + - name: reportUsage + value: "true" + repoRef: + name: manifests + path: common/spartakus + name: spartakus + - kustomizeConfig: + overlays: + - istio + repoRef: + name: manifests + path: tensorboard + name: tensorboard + - kustomizeConfig: + overlays: + - application + repoRef: + name: manifests + path: tf-training/tf-job-crds + name: tf-job-crds + - kustomizeConfig: + overlays: + - application + repoRef: + name: manifests + path: tf-training/tf-job-operator + name: tf-job-operator + - kustomizeConfig: + overlays: + - application + repoRef: + name: manifests + path: katib/katib-crds + name: katib-crds + - kustomizeConfig: + overlays: + - application + - istio + repoRef: + name: manifests + path: katib/katib-controller + name: katib-controller + - kustomizeConfig: + overlays: + - application + repoRef: + name: manifests + path: pipeline/api-service + name: api-service + - kustomizeConfig: + overlays: + - application + parameters: + - name: minioPvcName + value: minio-pv-claim + repoRef: + name: manifests + path: pipeline/minio + name: minio + - kustomizeConfig: + overlays: + - application + parameters: + - name: mysqlPvcName + value: mysql-pv-claim + repoRef: + name: manifests + path: pipeline/mysql + name: mysql + - kustomizeConfig: + overlays: + - application + repoRef: + name: manifests + path: pipeline/persistent-agent + name: persistent-agent + - kustomizeConfig: + overlays: + - application + repoRef: + name: manifests + path: pipeline/pipelines-runner + name: pipelines-runner + - kustomizeConfig: + overlays: + - istio + - application + repoRef: + name: manifests + path: pipeline/pipelines-ui + name: pipelines-ui + - kustomizeConfig: + overlays: + - application + repoRef: + name: manifests + path: pipeline/pipelines-viewer + name: pipelines-viewer + - kustomizeConfig: + overlays: + - application + repoRef: + name: manifests + path: pipeline/scheduledworkflow + name: scheduledworkflow + - kustomizeConfig: + overlays: + - application + repoRef: + name: manifests + path: pipeline/pipeline-visualization-service + name: pipeline-visualization-service + - kustomizeConfig: + overlays: + - application + - istio + parameters: + - name: admin + value: johnDoe@acme.com + repoRef: + name: manifests + path: profiles + name: profiles + - kustomizeConfig: + overlays: + - application + repoRef: + name: manifests + path: seldon/seldon-core-operator + name: seldon-core-operator + - kustomizeConfig: + parameters: + - name: namespace + value: monitoring + repoRef: + name: manifests + path: monitoring-resource + name: monitoring-resource + version: v1.0.2 +status: {} diff --git a/Kubeflow/kustomize_local.tar.gz b/Kubeflow/kustomize_local.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..6f459b9d85d2f0ba6296892ae54d19a8a09cd646 GIT binary patch literal 194117 zcmXV$Q*_=ZEV|WPHfw@n>1*H6WdN>Cv9xow(X>8+&Jg+e1HG-+|0$Sxfs0H zYxe9t=QO+8X#4s^PdnSNi#bzWdm=y{$x!PnFu!?ikyaE53x4T za!Mu{kr6pQ{RM-y{S&7ZQ)Nbda0$>7*1T7jwf$R!y}y3?&irOtb$=u^2cH=$^Uf{? zVF$K}mBK@At++lXx*((`eW zS<8oneC^$w14z^qfY0a&mFQk&K#4GsC%qW3U%_v82F9o;>s5vAK-nbjaL1^EMHV5$ zU_J+tJ$T%K^1i*P$~`fBsR{xKeysAeS$hz0tXeImi~A9=meV|Btw*g*c-svLy-z-D zMQ*U64yd$BhDfiSHzTz-8apb~WM2DZ<9if;D10I@8aUgheZaVqzTPu=Xn8mgd8kbX zGuuxT3Khse-ah2n>46kZDgHY!LP5_5w!r-37Gq%#xz|d!P7uB>OA$fb8Q$|!DKj4} zqeoL>IVV*h#b(KVYJnVM`sgPKEuzrW5A8^3^WXSk3f52vo)m#>dWmp_C1=QNu>w{> z&Yu-!SP6{m)OSTDrM|FF9wR!rfElN0iyGRmy7y*oE3DTDzHP+wt>>UF@=N@*sn?x* zWYo_T-+UAsvT?fdc|yR%KnLYP|4Qxp9GTSTK|-Lk`r&f@cGdROU4KR7|J<0V4;!

Wmc5g`)1dC}Mv`(a^U2&aB0_FsAU(nl6!N)C{oyuunSwH8 zXI?3Kfl2Mg(DOi%#=e4;39m+)1M$)-H+O`MDB`P=Z)tPA2@luG9V5YBqh-9=e(dL} zh_EB!z6<0rqLjD3vXr6)F3#DP3q0LxaXa_n<;mt_b|KNv+~^5lp9(U-wU)hh$GBB@ zrQdUD9r(DVaRml@ZQenM?+sRLj2Kc9^@(c{=K1>UV4D$`d zRig*G17;xC-m-B3m~8GZF!TTs+%}0DUW7Rw z9Bg$njzZ&PSrSeHcjx9Wc~h0yZ&*qv$Oc9YmEG|lncZuM$%XtnuPJUJfw zvT5ZI%;Wg`%l1Eg)fb~?@2lbPp1wa2AMTqbx?UCO6CB ztAt453^^?OW9w2TOQbzM!33eC%%|A^TbrS(X0E9yzq8hmD^dBG#-`wgmJdp9?md}b$Y8T_-x26WGt z)B&zr**te(g0UK4^HOoh=pAJ;7g){FcPU*2!#hB&zKQT#!e>GsTE5KkeLBT9?iafr ziPvXtxIEpROpo>>dW`F6RsS?# z;ep*eJ=emGBu%y(kCc-?G3f(oTO#36dq^hE29McnG_=T2I^*+d&bF>$B_U7+(kW>% z+>WuFvDR*6OA0j6nH3C3p2%3>$eJ#P(JV=uqB#BH<1a11!eQ%PtEX|M8gu=DO870D zNpQ%Mq6+89FI2ruY7-u=b4eU;*kH#s*+XTwa<8&vLT`^)& z#nxOln*M7rJ;KQ5O}AFiml$exBw+$W?sC{?E+1jztI1~FmBrAST?h0SJ~{9nTa$`5 zg>9|^Pj8qW4PDy0l!vC11s2u*)tE6B{ZYphezwq>%zGl9_xk!+By{v4 zvoCp`o=M6Ki79Y@gd=_({edkRzxhJb0DClzv`QOP>}jmVYM;aR#D>}+-mU;vk=8Al zp{-&1OnK{v!r87MR`6Y-;ekZ)8%l8K1+GS{6aAC3fz+$m-((A9XjWy*hJk*_-C^kU6%oM8P z$)2rEOPZn&s<&=CcxWBlFfGztC+eoEVkIeP+Nu|Zx7~(Xplriq=Wpa*o{U@z(_=vP znlAbQKI?|J06S~a5yFc<;$yUgV#J$&_;a-TtiVlqownMqv^n*uU=$HI>u-TUYWh`N z#AG&1T6n$$uokvIj-A8&MsT{-aT$y3u;wo33L~Er)?&^gk{!6windC@77i5fabw+o z1tOg<-o)^GVo-MfjJC{Je3I;4X>^58rg%(7+SO-WV3wH0GK-d!pmZW@K6<)oEX>r~uTJbWv1Y^k zx1I1gND%83f2v1fmbOoha2Y1v{g*{4^+KsF!G#Tsm_<7 zYO+euzbH2s@bIdMIJ9?r(4{4l=+j#gE@O~3S2#_cL^$O{54uzrG7~!yUAG92x(WC5 z|FHK-1Wqz@+)+k?b)HBHWtN%tropD>Rk{!4#+tg^+wjH$w_!EuEHpB?Or4ze72c`w zNK#kxF^ameZAKitAxv5rx)O0eF#^8@V#9u9Y6LgGtff| zYjkb6EEH}~EA_91Ey*x3r&YEPL3cK_??f{Uo2XP~5Th8P1-V;Rn~}JUi@}P1c87;W znG}!xZC5SOu%>a`6$bCV-8P-sYc$RPN}Dh_7S;}W_{%pdskH3CrIT3ax1p}|v8pU` zr}de9J9~d8IAZ$CK@@{96SpaoT%$h)Jcw$@!xq!M6y;-AkU3!obhu-pCm(J!C)5b5 z6fmw*$(rKm>7$(JjAHbO*&wXI`?zevA_ozlCKx=RKV}@2+oCff9g%We(g|_H?_c}$^MmUjAe7O z*#4G5HX^ZyZ*BABL90#MXk0+Bqm@QRi5-!^wbn#TQ`A(GHj{O?qRMmZhKUEvCkuRYgUj(M^Ato(4s10h6`ic3(Eqn$bzHy^;V)SD2b4fK27_Xa-0Sr~OZ} zAPDSy^uBFB8wPMzcRK7X{CWRkhEt1Fn%_uH z^mXquf8&zIa^Xr3U;8bJP|rR!)T{U7Q|4y(R`pI(N4}mTiO1@zb5qpkY{P|<&R__U z&+mbY-Zq9~*3GS7zDgR2rKN;rR>jwAWqP`gJL|4_i-CY1=-PzdFjE6mfG5P16Ub9z zALBdN^pgLrz>BhHP&sljIc9gF)`WTfTZR6=m^A{X57mGM(}@O2A&+OiKFnJ`7w`)) zdWOb%1?u=6lYTFk!=$ISeyL%b;jg0uCQ!Gc;&RJJbY=9P!b|;42t1dV%5lotSblyi$Nck-m)=;Qa&qOr^&ScoX<&0oV1yyJB(go0M2DoGakb z>9^X`AmcOe>%ZNukJa4R?3dogzVv^lTgYq3T>=BGVnNtL%h}QrwWkLStgfFJ3RK%EHu=VJHL-hav3>L9F0$2(*!E7-%S(;s^`M4%)0ZX?T-{zRo zo_@jxqt*d8f(o~Z3U^JBXyIZ@v|Nvy*Ee@$OM(Z6MuNG|jtj_3HPX#o{D^*>Cnj#H zurZZ?D$7e!oLo+9v6g!N2-Gd+WHsfcS6qnJ6(6B-)6Gg1%Pc**F%M^^M|Cgo(OIlK z^3Nv6zi-CdYS24lu+=zhyB{vc!r!G$YtDfQUqJs}O?yof0rNv37g41L zXmz@Iz87u1TkiLI8I>Lw#DoU*0mK-@z%@%9><4B5Qr!wb{B-}?yW0hLkO_oAz(1X4 z12fCtk;Yud@bqKw1d`DxCIdMo$Zq|L&vDNcaR-eH z&(Ujf-{7(LPURfp%A!F=foHS6*W2_jWR`zx1=l71p#754XgqKM`+(Ty>-1Lwb}#vn z)v5=SWyQSnO16Ir-+d!euD@Jv>3j2_opls@mM-%BCpZ>sxMW8YNXxm;Jm(~b z4c#if%MxDZ>P;*)ondmB|14XJH(R|(Q69frs`h$h!B{u7v&;4YcXhZ$NA!qav$m%* z2`17h*xA=+i}2y{-Po!90ur7cxFdw#T)8rjo&Yq&>9<+iApgtWp_M}&lMlfiW6Y(z z1CDD9+emV+_*MZ=^=<glZ6`Igj3 zNc;4X_64s(m7?-43;Vmwfc5+NIb-|YXtN~w>Ae0x9v_ERkA026ufiaSFG_o=GPWy-F8w@#NO-09bviKIDiosm^}GFT)QgQ z>&Bh3l~xLmu#(4QO;{=AI2)xq^{t{inQJilbNK_(OG||c(%tkg zx!*|?wBD?L6QW7Kle%Dl2&|cB(X~AmxtYSQF}(1GZfdZS9*v6V7**a@ZbK3Vr!48^ z%MfYKRl*|#?&>gZ(G)RAje7Tjz90(dl;VYgw0&*3r1QSQ&VFoXBg2i8mpj0`!Ep7F zYYXy*KrOuB##1$JxliUdHt7dhx74Y{q2-~dAM8(SEZeP{W8J?A*wi3nZ@M0s&zanc{=BucZQBPv6VM=A#-5yAH~&{hX}fApSNS5xCo{5O^+$^H z26hzMlQ0^7c|f)Bo^;f(gxtVNyY?U6#^!*vxa_sdMqEUiz9>rhwq&`O{Xx;4vZyDG zljb;Mgp~xUz>f0viQ|ql#VjJZSW-m%_Hq&;uWd%5q5qlBWb7ZrX0!aHx96!8QmbV4 zFXR1^em(u23GbZ;ZnNUuA_o*qS6}k3BQIXdL>}QTsRz?vfXzRXzr9!grg_?t^8Nu2 z_Lt-v0;ErG({CW#pz@>WY5Pm5qw10#mz?lw0&tX`bAT4{=f&2c+i6Y3^a5L@m>6-n z@h#LL?#kyT6kB$(5_*&+VNP>mCTq%+^P7HWZiL3ZxE%CCb31k;n|;Nd%&6Yk8m?s9 zVa4m`m?Iy!>-Hb@;s1M1@cWIEkmuXs`|>02h9Mh==C>%CNQOasj^U$ca3>(>bS}SM zbraTKmmP8M`aI~j(8YwcM#W7Fi;4cG+L`E z?;hVJxeVh2{9FEprGLw~n7XwYw^83(+uV1CIGexrt}mS`exEH=RLxKB6)#Pq&#%Xi zQ>k&r|F#iGr9xcsSNb)7g|}z#cNk6W{>C%YWA|?lc=j03%OtaYL!hP5Z|{vG!g$g< z`PuJTY=R}9#;%qcL~upiJTr~I$b^ukP6B`~qVcbp#i6eaX!1lR*B)U$6$aO;;lH7k zxg%8+5|^4_{Ya4!Xm$^K#G;wkOBD&x@H_4b>G>cD;h_woMn9f1LqK!!uC3Wi!$K!} zBYGs#ni6Vg`UWsfAv>HIQ?RbmqPKrd&*M)_^P@h@4uEKBqk{L-*?iS@lK$VIb%mkB zDlvP1q5FgQiWj>{-*)Su!$WGz{UlYw3lYIyR$<;tiW6ZnE!T2??R%cmCBcmYa~q6P zt!JrQ*L^oSS!$AhW(;`Mvei@nnrec@m-m$-qOO1HR@iVhr5oUAbOv87v^Lz`(zgeO zzLW0C!fGU`>RNCpL~C5{-v+@(eEalhx;e@!0X(9?V5<_rW)&S7Q z9pv?K5c{HH6Idn1M0o?zPebw>p^z*CiN{MDp0~}P_yAABwf%)sg3MelF_FMFJGj#X zIKv~rt~~JK2{?HNcLAO2fG>g1^Gm+*Y>S8&Ch;0V$NQq$*JtYl+B)DR0aCJ?0|=tx zoq?M)L5!EGK)=u2|2k3^P0zrVw5Q0JRmC>%*Kr*w@9#i`;D7h&*cY1=FkHF7c@V18 zmYh=gTAY<*q*59`v=%becIrEMKFJF|K<=$Pl0?{r?V9F)&w_jN4zHTJMFA%6OzO5+ z`=>)KvL;>=;{?*2JB~zS8XG^h_j$+N8ZL~IS*doC)YIPF@@J@0 zsxA+xho^pRynSn}Pl8U6!^0NC3mmiZ@|4FN=Sj`#5nE6zs~lNSBX?7V&5|Lqcawb$ zVm5_9k*Io8U`5iLJGy#VLt%hxj~!V}F-?BS>#{G9ul{v7x%bn>Tmat!AK$XJEM75T z%!pI-gOwn}aq$hW`Qu3|z&Ds*C|^TJ(P@9VtqDmvt4)@0aN^FM{eJqwY>I(*2()1D zE>a8w;~bN~egqNF8F=t~9k`{0Brs+xQ^iDUg?=zB(0pc?ce-eJU6)Y5Ww75(V9@#;6g1t>7d~fCSi`_g5c*uXFZ*@{K&MKdBOv z#^v0>MWCM5;pkN#&@Vw6Lgsx|^)HGF=lX9VUN4XaihkhS>ZdTk2|f3`3m>Sh^p_;C zC<+x4xPLw(f9U)!{2Sw-Uwk!4HMT9EdeVy&)4Xu=>GEc+?~)vwpyK7No|C4x!f@9csSm2M9CGr!|%_mnClYEn$ zd=X)MEjk*yKQVo#QSz*M@t58rmR>OJOB?M8Gny>c>^mmyY`NXvfy?Ct!i@6khHXJU zvS9n=!7ci7SCt-L&sWIl;`I*5_wD51@9!-+1<=RU(ZR#V)3u7}QSaGk0?Ds~(6G>^ z$DYNE zcbacWmEY#I-<9fU-&p6pq#5+;dFX372PA+oA+g}Go|}b|c&AeGdgyL9Bbp|=bu$i< zJVXdSjyK%ew{9u*A1P{CMfm|bJbYb?r>jUKPans}g1+Xyl-F?FD!%)0l=;h0Zk&-m zQMiQ3t0XjO>%@fcu6i(97Jr>b625cJ^$5+Arl(UqaN^i-D&78%%f0@Zb!`LRdeCm- zL9#)Io1D`mm>3&{$M7f+remPH=yv$yjpy9|R&VUjj9qV5$Hu;@wXWFs>O0#g4Ue)< zT2YW1lOh~tN7eEA=<;*`SGh*|17WOnwq=2XLr2-!Q|yq!*>A3|+x*2n)C}psnp4(P zc7P(KS^$vJ4dj!azngB0rQ1fXhsFLV)mu-o6uj^^VWYb8HR$=oFamhtLXACu4sUs4 zfRxG^U>*6A1>$<~N^#E?kj}>)LLW2@Owq+8P`8z+lpb-;vSiLEP{cFN$cV`i?$^q- z;s)b2mZWkNZt@@3vQ^WTd8gV=E~`^995b=7(yxe~^1HHsH>oaJmF^N~@0P|!e}~TD zoUMrjL?b;sx{XJ1LjQ(R9Ek0*@x_GQ-}*9l*+f~oREcGlq<$rUEcCw8?xA@+{;W&> zqU_xeI7;W|X~h4Mwk7nq@Uhp;%niS3DXZ9->Xc=H+W6(My-D%dKc02#O1m}1B<(53 zaDDrC{Ae!IH9!ADr|w6*u=dV1jOBnYZ)g#OF#!SinvV#(%}lNs^!KQnNJ$+?mG#)w zDJ$^xV<~#HGbL4d#mcWv1^Zsrvf#{{yCORLA{R<}NLM=m)JMkn9VAZx&QHf5pk_dp zKT&&6YaJ>|qX288aEz>CPJ*IZ$ia@BCj3ZlS$9^VLhtX=u@m09Vv`8Hnsv2(5awey zHSag%w8!1CPWxi?EC{(>02`3~2%N!LFg^3o1v73>EG}eka7~YBD&=t83Nb8Fi5Ry# z+Q#*LDkxB5X#gEx4+Lu%i3W7Ii;N~{n%q&6fMdM1`)!Rx{1tc%6&mvA3{&_!&pOf6Pr5^KxD5|9U-$Lk+F$FhQ7wMcDkrThhwBh<^>T5Fi&6*_ z&xUcPv_F%Uf&UT4+qQo?ZnXbGG*dXYZ1ZtAqG^7+_zis6S#nT2X|h84@c0s@fxnvl zDKab1q-!aqg;34D>Z=26n3ZvL3G#l(e(q(C7IspVeROR4m{etglgDe8f>2@0_lry1 ze`Ndx#-EL5i{%CF?f$K;J+*HWq~3rpiF$JRXx?}2geG5r1jG%X7FTXFMp&LN4#z-& zZ&EnCl1A>gv}K5Gv12n+>-welrUm zX_Wb4xNz14<5M)a_u;=WF277E|LfAroD9TdeG+jK>H0AnIQ;nOAFw#Q$^RcLWm6&^ z+#)19;+*hiU?b}2M@QhlqnamC%G^~8gf$Toiaa4bp&%6p+MF;tgz1S=ztK#zKHT%( zX~gYWGVrV+mOKw&>gY(Z^(P{~5)=~CPqpMd29X*#_!hgFjy(=_Z^AocWhneAQc$rF zD&iAT)bgTGU)-^ANtyDr({csP$#eQprLWQ}lCOG~CM;K>ai{+lJ zpBH3JKU;8Tdaz_348Dq^prUp~{v1eApGZDci+y_^VdP-ebI>tHyKarXi|c+@?|eSg zbDh|Zn)lLLnNL1P>N0w=xq|l?k+lQQcEoaUXZpiV7ZU#V#TAA{nt+B;Axl?ndf4y` zSuaQ(F=v}A(BT0r3>M3J=bwHB;$*lMj*-yt2*6eY ze-NS%0T}*WM3>TptO2A0@q=lx!QzKne|L40G0ZDp9-@n2G{E%?CVO)WY3!vJ?SmZM zmijNSh#dKD8g#a5tE+t&BH_o5`3GmWTOT_ZOI7PCjvK9E^qDdd_wjL`oT82@k@Pj& z4ztaw899fBO*iNjB-R>~0{1QCfJK3V(mXhDgi&9E^r7&1rGRi}>NX^m(=!<-v;sIZ z^+Dldp2A2*4f3!3%`|q?8z;xX^-dl~r~jTGAO1f*m^%rUMvU~@?B-7#1iU0c*opgq zQ|dI}$3yD)p-Mj|0{k{gC@#{oH_W1*C*@r{JQ~+-Pp!%!$!Z*!^FTHZGLa>sZ8 z`YNy~4zu>-HJ|#w$eiTj4N#%zh5V%ttnP*2A|V&9_QEpg13I{Y<1c`|%|}8ww?D)i z2LBc0@@Ip-w<5)2O?8U^Or@F^v}utqz}^t4ekWy?r+3p;G2pK{NeD~(yz2l%fegWn zkkx-Le>5cmyfK^arPUC!ozjNR=+n%Cj%CH_Q;dapgIN%R)}VB&x*}Pm6qb^|oVHd8ObaE-#h5KWB_`K1(JOh6hUH0%9J?2sMHtPNQwsTRp zoSv|}d*19hPViG!h%37+wFegm;v$f`K(Ax%N@>n|FoN9dr~Dp2?5cAUig-_G8&+$4 zV&2wnagG|g&+U+JoVHXRMjupx5r+vc*P`SA>di_?oiZ5qFf9m$wElumUI6+z6oG_r zA;6Hnt{T!RhC0M3uh6fKH%+`Xgc{-#)6c1-5UnJkB=z^}SCLDlhaA%I0RrTWAP14D zUsuZ*VObaAd^zoI&m=V1!?dGnBn3wA2F!mzmJBHX^G&T6vBnF?8UVvRfm5=2fNMCE z4**5_4u+9pa(Vb_mF8^SardNNWQTGR^10@8_s5Wf2>u0Z0Hj0Qd|*W4k$*ru0fF69 zY$8_z8G;&d|L81t3l^9;2jY2vRb;Ch(BtE=Ich@O@BHn!fA{>VQ688vY@a|M&#xJ) zs+P6pK87VM3~}~y+VHNc1S8nkOa^7RTnWqNJN45o(!AvdE>cdk@suA@~hi3~JPI13XoR>kQ1pYgK_Ap~e2kNuFg0I5+U%)fFE~${m6! zTU;CqaplRfd+EisqlCzA5Kxf!nUzy=G~Ci_Kz||=Wr;jCLm}LrmK3b}g-<1~Mk>2t zBQ6(2SN#Gtu|+&Lw20f}fSOnoNk+wQOEt4R52{-*PwuHu?d~>a)Jvj2VwriyGMuDpt&o#`+V2a=z7A6KJYK1rq&GDKlgy_ zVP*V(`^!)Ttn@%}y<$%E@O+RfH3MLNHFKahr+5f!uN^nwtoARzcKRDH`p06mI(N#% zYvpGNSl3|HK#Xftyc@8ip<32EDChVHObT>TueAf26!wbKKyGkcFf9|y zZus#jen*Q7i4l=zTp*3&S{Q3Zw<@=quw!P2cc<0@w6n;MUhyzsbA>=_1c*b>e+7NE zgVYkQMSa)~Od?y`C9SpLu6_=08r$FRvE849_k5{sXU#+d5M}k>T*r{BZhKM9V&0d$ zB<}|Ytj0bY+9e~NiHYr(zs^B&3dUb{TOeQ&5}V`Rb-hC{eZe<~F6qa43fQH(T9AfY zXzcAP!*ke?mP!-ZFK-2+W_zR&X&?D3o%vC_qDl?!|2ytIt7mZPJ@Dlxy65|-N4Wi*MCx!Gvn< z5LW4+lw4p?eFZ>m1PuP$f4p5_#QV3z%4z`L{vT7lk<}0j@!a0`Cfx!T9%w(W+|amfd4auHRz;0(^Tm@Lp-OEFa^ zc2v*kj0m3d{hsz{;5W*gFditCQ+66lMO7#)(xS|x46BaAVK?sCLdd)w;J@} zz3F3A*ln{SQj3AZBEMnzXT)^YIJaMw6Dd?Lv+L`W0hr=68oQ|03e15qlA;~9sZ@En z#2MqOL(VBB1i+$=e}t*zz?GjTpMf4Re@B-Ptj4%w6&BPp;X#l@7&P@=oU$H=_2kQ| zexQ>`C5F{b2!)|lTNNiJDt6`Vp=P%91xmXX)Ug}yh)50n(BGVQze3#}i{oM114`A$ z2H1hyO2qUrzS@8wLafgqQ)-cmzCPoB?~(q_MzJwWc0I0aBU#Rx8c)cWpHJ671)Ue^ zbGiFISu(?Xw=;ND&AlLBlO2|iT>%qgX5~h+Yl*7o;1gAsL2tV#^4k`^!tXJ(79L2N z1c|!RyC0v5u8ZwRM+|A#QdwzB23T^wPTdH`bjHl3X}L>I%>RfLgehig^OK@n->qxt zIW;#zIH~p7{EzjwR69xnSHs1Z`pkc>+iskZsyc2DJ9SGIgr{B)-RbJCGk*_t5_lXm zrTd}UVXv&Mm$Rds;nxJO=cm_vx6rUq^CbxR)FhG1ckZD-3>x;TD)nqc`HCsO<^K#z zR_otcH?k@s0RAN*vL#k^_%k+bIX6;I)e@O`cnD#3 zwu{92-`U!8#JF}H9l%^_9S^$Lb@OL%Ug>kcBBCA^S9tku zU2|rsxt34ol8YbX0UficD`ND9Xk;nR4M+SAO}5jVu<8H($9P^HdOpsR=1X9L{#e6^ zfg7b35&16k>M6?C#UTcJr8GkjLBvcowh(o{6-w1W5 zyIWjkt>3I5QEjy$peS@`!g=fl{DWtD1Wc5`3+y6C=Cnr?8G`yEyDyWp%e}$rojolh zh+)rpPpFIs-!pVVU2aW^oY)C1lpjBV;F1S+MBicIR$vz-!6{}wA~d^nZa5wx5^}VwY&QNmwyZp0qcCqpE7D`w1+oO-DfZi2Y||9Z(PG; z{(s0D1+Edi$be#wwC;G6ucrT7{{u|QJ|MvSALNMu;b7c`Y~=m^td{_AQP5dI`o>$_c=av+z4)c!vOQGgC$ z)l}3Sc zxQi38meql~jfz__^(P_hm5`kSE!s${;bw*I@4IsiOehQVKA=Qe?e*^Gu%sqpy%&<})6k7|-00f^~B^ z&UtQ7RXEKG_kA}M$sK+Vfa^Q}A~Z>XM%*>85ACZE>jyB;#06kWtqgPqZ9Mha3$Rx(;znR_hn@@YZ zOZ~tI-9FcQKDq~lyfLZ;xPTLy019b)eSa!Q4FQ;YP~IU*T=zAb1{jGOcjW01gbkn< zx55BuaSvqpPg-$g#g5iN8na9Q6|oLT&ICfwCJ$Ds76kOu`VbV0XaKo}8@dOzHJk{} zUdJlW33s8RJU|~YYi==L;)7P!R;XyZtdsG~4)2Ttd5ARqvSdj6Ex(9gyac6_Y``!= zGv*C3=Te_CjRu?o1t zx%1wWhSs``EIUJUblY=D^0ch3cb$qaWgKFZVdx1KQ0IO;LWOInq;3)M2VV7~m&uWou&NIl!U^C|kU5c(1j%mU-ix zg?#T}Wv;2=PO^&DFY<0H{lr@g^C(oIr&!iJR}GYq31wiH^H^aaiRj{ z7_wd6vF?P*;B6&E7Ea|1Wzted4b|0fVBo~3D&tGn`ct2mI!^8u;%{JV9>l|dhf#rTo#pv{R!<3 zUr)qr)iH}ez@+-qrt&Rfbrt0{GH-5XNAC*3djZ`)SmY0bRWmD03^flU?!bY_0JqRP zGlY4dB6e5A{fEz2gzl_c;AIzb9k;%>JDS_xwG&DMK0_hI<%4#14XY=ovyBoC`5oN7 z_j!=4hBSdPOQgrGB-L5(Q~zPWeE0z)Zx|!*`3`rAO+wt@`kvZQ#zC`LcKT@g$h`+@ zXOr3Kkg?)*zG2t42JZorT%b|R0qznMv?FIWfq(}N->QZ7up(LvVH88|XU@SpD3g;q$XvAO3o*ng9DN&D`>xK1^PTrGqpYkP zH44_|nu<(Vg%e@Jo=;YaQIjIr7n3Yje`%F8oz9?q?>gX=Hx12tGy;Fq8CSmF#dA$g z3jJtCc6;)vd6+sUu+Slyfif7wPUN!SMLs3jgx)v)WL`61x)>|){63=H5R%wUeNS8< zI6xwrAC}Aw@5gm>da(Lm_VKxG89lhYE%?)g`rc-?Am(Ze^Wf0m@TM6(*cD|Q4J;M0 z0fahOl$bDR1)D&G#S=vOm_bZLoRg@t4eZciL>0LCalQUV=?hN3z8U30?sp#Mi`0bG z{AKAD7S_HN0WCBSNsK;m>1@CP4e403c^nez_t72q4Y74L8^?R0L(;;Sxs>XJRd z!iD!MDRWC|R(MSOtjhh+P=`Eop~Lr(9%}V;BZ#g+1u`@zCB+2XF7x(!Q|yI8P(g!c z=PtA9_}HosrmE ziRoqdnN2KLz&yp&0}vev?`00URPMvItYXDnBv_#5C z^1jNfp{Nf~9S|vn$4SulS@xAmT6p#B|0cDB?mC!!iIs{eKO&AVHmw&yLgkAcx5G?& zF*D+IF<&B1EYo)(d=G7cm*tW(6qQ*nb?pi=ka6|dtRt1|GT*|(4LzOdFaCi?6)Q3G z9x~nz8C8wsaTT9sG1||zI^TJpjZoc7#QAlL)eto`OW!%_bOHK#6xFVu&9R*t$818` z)njtV+n`>}t57ZVBWdXPccV=ANz6kT=$8pCT(d@=N{?B+&v?ePkL3gb+KCC4dz^4= zV`%fAr?|=1*zc6KEQ&+lea4L_FNb0Mf;Y6|z33=tt`KlF4=+vd4BKTW%g*aR$)Iw>)5}NFjmct0#Sa_>!#Kjo zalP%p_7h?KlyBwB$c_<~p7VA?GF1`(Xz9NcB}Ym$ZtgG99)u4GI-ZGsvDSVX`fFSW z!Bth&H`WVy;G_=JeT`x;MRg!usFsxtfxdn?Ji4sR?4suTJ}B<>c#v@NN4d+SQh$)W zjsoetcuX{0IlSKboHjdt6+8HHR%nx3qxja3Pxj!ahkP6(LX2$o`X>o~%Fi!mbyTp# z4|IKQdLxbZ{VU1g{rsOB|+@8+MSJnr(T>qtnyG*(iDszSiY>O$J*rZHT0K6uJ zLDV;R7FNQw9IWR&j+%i4stops7^+vN#?bab$(yTW$Vkfg9hQ5ktKL`6pmMi5$C<3Z z3u-~GD=dvRSx3) zkVcb6Tv+!$iJz)?CViSlHwy+mhvep3FMEqQxvCrp^Sw}xNKtKW{|n3;wRqIySfSbtoZ86baz$C?{8c0U287) z(Lh-nX=Gm4TcQiCXjLAP)DL9w`dufS-9-X0?w zov7o|{n!lxp>t-)Uc%kXLs>l@b4L?m8@baM;1)Rz#p2Z9X(6ZlIg*H&g(7IHFL72U z3Y3S^i=)7t1Y>+A&U0Wsmv`S!=BQ!M|I#$946iVRW$F0Id}LXY&jm8ED@Ls=#&Yuv z>yjnej2m>_Vb!*u%b!sD5Du$U#3%mTW@n}pgFI1S&sDZ+=F52D7Ds!BHOVcNwVh6cxf{jzpp#&e1kR3cm|)LimvhJ)K$`yC^g$z zmI}_G@)QX~jGrYS<`#iuWk0*u&~eI^HACwotXDzr=dOj$Nupjoxy6xNR~Y!2=DYbI zDi|F#$dsLhUuwWm1pANjHy7zu%7C}i!T6!R-+{gxqJ^ zhwi~k;RCL~w**ug(oy!H^!LE4y-o(ao`YhG>oX+HTIkgmLoUhl)y$8p?RCv&Rgn{M-9WD~H#9Demho33~WB7vCmb zY1&+2RPAAFFZm7N?wr(XMTTj1h_hE5k@809ggZis1;yAWPw99CJ0{-5Yv%cO8?TAp z@vrg&c_h7=8wgalZRE>YMmgjtBX@DCf=JY9u~l%^pz;i1)Z0c0V%wagXTtBN(ZgQQ z(hJFkJiL|kA3T*HmcR~QyUs5+UxOJcb2ckRYQ23|`UA?TQV19y^u0l|LKhjN8qIE) z9&cA8GS4*7>2spOVA-!C{;i%~E^rTmSy|i_17_NhKj|!35SAFf2w%@_!2e<6nt9$~ zuf)^DEW$7sf^q1L_=V^~nVOkLmtM^@ohdFFSQexa13(6YQlwP_lfk%})nTY-p zB485Kd{x4KhWQ=pB!U7a?z6J+h^Cw;o!`@VC9+u z=6%b4m?c)2w`UHv$*0`~#2WHzxJ>!m;x&^{e>DS+mD;3jsL*X#Zl%Ze2s5x@e{N7D zLX6OON^zheBEiJy3YOQyC5f?1{z9Acs>T1T{$fgV=`QkeF-uxJ|YxN8V4+u z@<>K_dme)Dv1+zeyJ=%@=O@Wk$Ok)Od9A!^LCf zR=|dLnE5IhPx8^Ti+=`$!Au!7vn3UbCKF+X2&Gf3kWUn@*Q9^{v+?!WrL*rC$VY7XL08macK~x2Q;b9_mdtk#mp&)#A@kxE%cp2c zQH?~%AY)=r@s7ClgAW-FH11Wp`t(^HTNBYT1}T$baHw@QFl4qfkBDFK)g8NwNOVv+ z3J4#>hCfdzF@xF&y&&|BcPsTJxP>!wNnlO5SI(K(Jz|e1Xu?QeM8*OarDHO{X9uod zK-UNt6n;SNF)-~DY`?FFC8;m^<;7~U*aTDXtiog+i$u5+>>PSRSSq5sTheGmkyrQe4#>Jq(TK zZ!U;v+9Q5yX?wqzD>{s==X&ffBFWO9&q;rO|NXFMoDi#_Z#_$PRAM^qEU(FRZNlHiPPcfX0*k6rfb0tVIJ*(JF$eb*rg{kbp&@)>X5|LH;Yt5n1_omM)Syy z*Mr@h11n5tat`J=$V4(ui{R~>Iq<7a}2n3H$GW)g%=gz*7xkzkhM&Jh1EJ}Gf+G360=3(%Cr zrI$&p#>0vgHb6n}(GbUH9EO{#!}R(;WL1Kg09y+aHR4w#TsZwkK07{K`2OMV%!!;# zL5wPK-*5R%-*2Q_=5I-#die9+Z>(9;XqvnoE7BHD93yMF8_LM(AX)!I+)Q{Vy47-d zjEL1?vay+c3Cv^45Sg1&Btj%K`3uu>#VU_tlFv+hvmzMADA)M$-K*F-8~2hs#xK(o zdTA|_-62fhGpc)q2p@( zCeS$2c^DC16msCv_Tmsi9CL;}EL{N6w~whGBOxoe7bcWvu8zF$sAoK595f5=AK;LVm7O(^pzsfWQQw*1`5Z zuVCCW-XR+g7E|G>Dng)smN6cTaBZ|azd;kEH!+~p6HLuNaD<$@4!PW5ye#zOf_w*G zoyWOd582G@T9MDVH?7Fmiu`-4$Y+;LJ?09IIcd0mGUssFM$a8lFGKE_6GudFCEwsK z;kmUC+8;eRLUK^>*=;PY^xc0;=lMEHy(TOQ)OunR@!bnHDa+n=PY^bsc z+{9gpX*yHxN`fQln#T?jj#pM8IXn3dalBs$0pt2vVp|h!h)fDmH8L@oQm&djLRP|* zbNN_2B=8&(GksW5^coGUCfGSe;|1PD($->X#7oto3a8A|L9 zfKnd!`^3N!%M#J?H-o{jkLgqYX4sF(SZwQWCOzh{nejW)D}ImJC!K)!@a)A`eS8AX z;g0%0zPFw}`gMbXyW>a1e)#y25UrjP;2tBCCT|hb-hV%O!H4nV+4Eyo#lx?Edw2TN z*##zI@A2c`A3h+;Z^@DR{C+goNLUZz-$l$JIdnl z0Wya+o0`~BJxP4~7I!CHLpCaY@j>MXW-9~7>@$eZV}J@UVyA1rPn%&R1`I&boxi=k z?Kv2oNcX9&IGk=F8G=baGvTv>C%uo?(aL=sH-7<9-m=Y~c;t6#@MM52Bph93IN6^Ht9&MEKaBX=qqIpLOfJ=8N(e0aD$PNpzCHJCVVuIZq)^c`U zG*$SiS{>rrBqt3)5OQ=U2hGFZ4q-bo3jfTD?dVK>!Lxxn-kj(SicA<;U#-9dqLKVSGGU_H4V$wMPATS49T*+ zXSn+N?;#XgGXW_xUqo)g)xcB`1GzJ{MoewQ%YBb5P%$3|eF)z@6wY1X z@f42S)ZxKcv@0PVX?y?+$KNL8XDV#{lv}!Zf`jK1gp#V-rG;E5>4GT~&oQAiZfDqo zh{0Hp#heP@3$p_)h#bv4_t|HLP+S-mcZWBSL$oir8<3j-Z6H`uqJDo&tS!KZ(GHyC z{9*Bwe$im2 zfO#m|E<|sUxVy)F;My7*-ZN3OBWAS`9+ytzll&ys7+KZC2=&5V0#U-m3|-;I5EhCR zHO`**h&;h+rJrFmq5`GmG7USAVufe<<+IZ#sbIDI3UD4Eo2u1gJrKXNV$OY05{`ih z>)co*Jtf6s!ie!7h`C46I2`+5atK4b7)-G;s!8Wl4H{~uYvf8udV5DcWL7G$5qSAH zkluyR1A6&!NNs=)4W819B)F#`Q%R#d{4ROyh_NJi?ZAhU8_#%GVb<@E$tUmm$(U)O z7spr-{4j{<3-%5q4C^KAJo8ug%?g3@HJFw zq!Op$wta>n@l_R30X|8I-xpNWr0r6VL~bc1_L2mm#={~y*@$UP$weL(mcJ2YKCVwC zHw=)ogCAzBI_iMy8GRdFZLkmmZ~80*XJ&en`QNS5lE!Vcs5huqU24_k{Zn10`|HF# zI{dq{#>jC9tk9uA$qt{SZJI*k5MmHf!!brYkNGoJFVXw?2Cb26JV@jXFpwmCFg*xB zmQCsVxW*>7hoQHJtR2!i>nHh&{%!JmBis+Bf}<~bESD8w6?=If=x--Ork)%1F`9Z| zDu(dOXXnYm3pyAYI7B>``Ju+uw!nf%F`3MDU7S`LtZL&4mOqSIGDd*k`-LQGDYXiK zE^&&*A`*)%%Xu8`x|p$8-SOY?K4|fi1t0-w?7syLm%@b}XOQSO~mfrW6 zap7%B(pd+PuXo(znQYR2o4{Kp9_fE$4I~CZ?7@34Wq%?*{rz{QC?P#$kCF<+=e&X( zg+Kfo?OtJf34!He;6GEEN;&VM*q-d3-3stIfCnjX+snkbfD=VR1?hK*Ez;jIG~{oj z4n94Zm+@~lSd*25cvB00wUb^#$&nY6-jmpYg+>eE{fFI1+~Nrv&pjTP9up7Zn(o(m z;^V^fwiIcZc@EGEA_7p6jfJ=KVml6lCf`65W4Y48XJ%2crkAuwj7DSm%X=8xe%Ms* zq^4vv>UYL=@x+S}bHgnA=v`uL@pj9ud*C(q5CMC-2u#vA%1~ohy|aA zA;Tqnq|ofmk0B-?3F1KVX$dL2oZOVAhU$3CiWhhE2_T>tPA1Nu$+-*S%7SA0A_RfS zekm+2+=j)JQb&C-F?atc(S@VP1pxTM>j7}GL;LUA(!a(TW{*u)dKigJ@N z0e_h8!yjT_K&Dtot|#F|e6KEk1I->2@AD*r$O|FtKI~tnF5$*qq&{xzMhC%;#8{C@ zG<#qrW(dY=M0v0YJd%IvNx7|9Z0VJ<&_m!JGfxarhdrX37i{SY`?t*WY}BJRA)-~C z!iQy@t*_)L_KN89(}t-n1C|qb3vQZ!U%^Z7JA3M<57PX<*K4bB;$H@`{NG38Q9A$c za5k9^b^hNjAgfRmQj7F&Mpu{y@C4xB$GQ2=eLKmz(v}Dv$9$;9c%C?XWqkzqbWB^r zV`DTph}G&mPdL8{NFvlR;tl#R&PoxBCNL)y1!VC*xU%LD+=XP~q-ul@--O__d&3FAJG>*lqZ^_W`2{kPA^;Rg1tuYV z<<*E=NYwxddaliYSVm+h$>s_%{`LSiHN#ar_?KAJTvrVJfa5KUJZ={lEsxlB;wq>< zlQa(Zy!85)cO%@8Q2AtPOjZ>WfKTQmua`gulE6Fh!(B2zQv6SXIW%Sis_}m`9?hl{ z|7U~A=x7Z1KbQ_Q{&xYn^Pe47xr1sy$9y`@EU{RAB{a^$&We>1VaInfO{HyC#j%h| z5KM+?Q;@GBlXgtmOU>5e|4OBVNgq!m>Vj12hs12 zt?TV~7pL!jI{EJG)!F60$!pA-C*<7X$8lU!o|xLhzW{REGJ*9t%W^)CmF7ZgrdKp~Y__LZk|l!bV3m16GfEvB zM}xs@C-sislNVMsuBs_jQHbW708@i!)Xpkh8@UOB*iw#*mgp3YP9{{71M+}ZA@aX( zidbJGc1^}#zl2-;a}regg6F)$9nKj<)#hKyB$edY7o?Tzwbh8}N$R3CC~!VOTF0Qq z2W8u7!1k20Eh+w{m~Y9pFRb;>nG}6u@9xBI@1QQ;A*G1ILFJ(9^vG$GPQ$x8gnC$6 zRmYUNa{*E@0dqTa^gfG@MjZ2@pgaw<>5&L|=LC814*zEGL_iV=3EvI*wt{62k4=+o zQ)B{`KmBGh8RrU+cwM#=Jncs;O#%gd8hjq7!F`h3iaG_L#Lj;s9zg{ZODr#!+`cJ3 z&~DLH2!Vs6ogRo;JS0&vE@Q*Ct2*ygT| zG`0Nnsb%|i0tMTo#O{v5Cr>;-YkpR{e{2s@`%i*t+j)S;EyBX#cNHAT5MA0a`jF@J7nIX`2*3-`hKgY~UPYwGdP zYRqqglZqvE@F*_CUSo#D2bKj=-mNw(?gEB!f!s}Bd~nv6uP*RhISb72z&-py%%rfZ zilW=T3POf?-XsDHo#OZr?+xw74ylwB|Je{ti!x$Oh=2_LN8@1@|KUFx|2u$!fO3Tn zN*(JVzW8&wE0E$pe@%~sMl65?|3}kt;{P?A5dW{Efj<8`0TK7(ozP=hfD0LbAH)rD zP=UjOw!(~q6~P9=Klx<~TyzvYOL-jQcl;C*%Ztyl<%^y%JrzXqVox%@jY6H`X_q|a zKQlZrev(MZ_y-S}fd6FrcrzWCi@b!?bH118QN`I`t$hzcXhJrp2c&*7k(7>Z;~?Xq z+c#}ga%nA(4K7GE?pV$=zH#pgYHGQQ?R2ljt`*$XH|}6@U9EIexD0OEyHpjebSlk? zH0@WmmQ>gFP23egdj5-qyI~uW^B*7m+4v8G@novc|1Lm0|Ha(L{0@$({Ko9?XHlc} z862u8w3wR4Fnx_ldQe^;jpz`ElYvYusT;wEe|X4#5&O^hP2yXbJld?TV9bJn=sHe~ z2m#CUalQAk6wFw*IC^B08KzgWWkDxtk@)Sgk$WvHL23b#$rqV1;V@X0O{7R}6L+?k9gZLUuyEEEgS6ze4Ft<-fK`_5eZwppR$7lKUfc+qN3 zd}d3Di(uI+$7^%$vu)7^c7+@JCZV4+NYDRr4VH2nvh#m7Jj$H^;JkAu2}I z5dM_k1i#*Z38%OGneLEOQq7j#2zmvd9k6$dp2Qu8oQ>#~4Ja1bOyQ2zU}@`Vk9mpI zU2Z~%vKG~q7rKVAupD<2pmX1K=6A=&3;gpSS6Sh3wpfXuAW`wo*W!k?f_w3qEsNsF z?)?g}Yn#t(breRGYU3iUgrN57ryn5;a%yyh3qiQOidl|}8iv0{0r2?8#_31A+F?;H zHqO+{1Jt%B6$yb5N^Z^T)BjrX|4!on4oCR^vi2Y2q1OL)0^7+brF-1o%s-^VY1ua5 zAIqzlgfZDtiV>?%*EdJ`2Vz0o ztt+A8WgNP}G+azf;vcs_s|r$twX`hz3(K67zpEFi%v7&%nYcDMGs*CHOBuX$BFn3> zmdgN?LBv&*2)=FZ_n7$GTxxH$*NIP#aK%ty>>ZaA_e^EMD%0@>OSj*ZgA8yxS~#fs zGhH{#_u%=9e{R;c_;XE&8~+7LQ~Ywj%M4uaj+Pm!{!Euy<@n;$48jGT1o(KKtQ+Ui z;~TvKr_$oZNECzdy6s^5Y|WM=wAuLcUw5_173Zgg0nPmYNjCH0Vc9N%tbobB<`^O} zOdu~Mzp22tvewBXo~*Zm?Ls%G;5{?stH*^^lQBlPimBQy`&Dy_;_=}{34!N{kX=b& z3+o3j^0F2ZTgR~IS%2Ypki4B|R^0bgRq0mBhPYx1NhUF;G}g(WZ(>zUdAYrhe(l8R zMP%GBWtI608{vg??$Jn+ka*6v@@v{pf$y5v_dms+{E&r!W1RiIb^E3DVX( zr)$j?{mBxt^R&w~r?Cn1L2aJ9-37ZksdM@eI1|@s-nKqOsFoY+w5JX!A*iX7II~g( z++lk9cQoHE*&*(RnWAl0FH3;|VA-4GhDpcZy2u|YD7T)ULAmo$W5rVWfBSNk#H zq4qt;_Zd|2e~11bquDrX|1%it{D0km%>TRmDk-0+t|nU)f6Vb%jYbGDxwz|>VD!&} zar2+C$^Ydup6HEc{mmrD5~~`e>l&)pHO|$Q36s9gh76Nc%8I5PD{^yBlN2+?_^iO6 zq~5Y-j4yW_Yp`TNcQ)4AdY5tmqE5V0O(46DVYtPTJw3<;<>woc>px|2`HPT`WNMw>)Fuke^Mb zrTjnqojU)AN3+S%17o^nyGrndpZ`khkGGY}a#}ap3$@oD^1l!D`gZ}f*I)QsRVI+| z|HH{JyZ)HAO*H@C1!RIym&ANa*1SOI=*_NkS_I}>WZy5h30$a}AVY2aU)JTOC9 z4J*sDmdG}*?!a$(9+kJ1kI|ys&9xOoroW)hVhh*5EiIYEhl~3ixBG(wIZ%nFgNL_+ zJ9?;ysmY19{>=Qp zf1CRG0o~pDfz3CCSv{?0dh%Sy`w%mOsScc6`5Ug?-UKe|k!9O&p?T0X(O7=_#>0I< zZTjCJ9+*u3do<3{|LI_=>3=7%ZTv6L5t6u6yt(Txwu#LssDDAUybTF zr1)yoUV+kgwf)){?De__)o);#{W)0 z)%ISb0Foee#VkUL;pMVbCw8BuVdXU2QUdkxe>eF*hT|;$52r(&|F09+68}{YpZd9E zyj++wY|5QQ^aPImRj99u($^`!;YjWQqEzP^CI^q!i*9^(vm)*_`KNQ&a#opE zNeqi@6QPHDckM?#jB^2`42j8Ird`$=E1s!Z@B)rKa!TgO3YPvl@P8?61U!s@V=I|2 z<`^VSTMJAg>(nRd-Y#NEHY`*EV+p`%bw$AOc z!j?Eo+w%jVmtfSGevxUEI&R7;zhbkR`S=(AN~LQn;!z3qlz|653XyALge_WT`YJsW zvg(Wd&$62|=XsW{cHhKJgA^*y|CS6u>+64K!^uGFf4cy+_213_wD$UshLg!yuYVU% zfBowlfJ*rP;W%giGda@oe>c#A{bzRD#D<@FE4xnZ7gKhC4<8m-8JhXNZ)aS{T2U}} zq{fwn%@7zVYf)f%^2n{(X>4 z|2v&!^S@6=N810l6KG`rCD?k_vH~kW`$j})JF73HUeq-AqCG3RAgeZp-S_e<;{PT@ z=7)s|Ar-pe|Hs8U;&Kea*k` zY4~EHKK|FY2aw_aWR%7KqtQs)|91kN-Tx<-^j{ef!YpB61&(`Xgtrb*3)_f%gKe=V z#ub`d_^)gwh7)=ZBLhp_9w`qu6s~XChGS#?(uwYjt2->AFRYCl$!q~wTL-!HeT3QD z_p)>bmH6M11CR{=k0x3FpW$#Y()iy6bmaf@B}#rpbft6u9vP(YKelQx@sxVeUj2V` z{Etqca{asZ|CtRYN3#j|{|smP{3-B?ozK+69gW&MAKBOU*v8_3-Mhe?=y;ci_4yZN0z zi1w}(v5c_%DF8&>WOw5136F}na?M!K&sA(NK;F%9{DXga{`UF%Hz%)8FV0V%oyKns z$nmm4F9LscEIc%fg@ar>jxU{ger`qAxG!v|y_kEC%aVK)$HsCV5V<4ibicII+;mLXNxy}bdIHfq*Rz9R&V4p((3xl@xKfI->m*`G@R=5zY}Qa|Eo{Z&jjT7zkC1R z=_GsqI~u_Kug3q~LmU3T>i{jBkLgpZ*a^7uTr2Vju5btz{ed$)YMF;H%_s%cQ!=J@ zlzZs*(pqv&ANl=8`SX3RuMBF*|2xV5J{U}<+59iV$yne2bpku^|I6WZi34DZu4yvI zt*k>7TsY!h+4Wl4_gd`&D)E1h{y%{KTK~IyP+R{!`2T4Ae7+_>RY1{utwMW|jXU9;V{&(a5Gu856C(y0`Paf?X z5uq)uz*KtiMf(3_@qd5zpM#mc|LFv}vj6-7G5?dZ|NOAvf$&-C_?8Sn>&gF9u>YKl zwf$!&P`&=`7=YGa|D&;v|I!U8tpC;qVAbdU5M%pMdi_Vk$xz?_b^;CUzmlzj|KUR| zWIN`dATMx5StEIQY-HZnNgpU_q^g;$$(lG;qWwv=rPf+?d!!c6^CNP|3sr}XjpkMm z2i(I95g4`}8;1)BvUiv>sVg!aBOhnFWoB-}OD*ye%Q{-kI`BUxgNjYy4sCz_0g=mZ zQm#+R-HeWhy(!J|NL3NRDB=3{-$|VKH!^uEW2Xy0G zX_2wKmhn(tWF#vh9TBeO+jL)wb4zm&vR@mk)tlrTB|vWxfBODQR$HT>OKW3ql?+fXF+j=nkmb}}4hCjl1r1Z?bKE2Ul@;%zk; z9A>+TN!lhXEIi5;hJ70N?zwAu=wuUJQwotP^yclG)9k7`;T+_qyP}~mqUE@Lbd1{^ ziu*o5mJP0d;d$U+p^ROy<+z&wU0&lFuYDIEei`%yba;uPtljXMm<;!?k>y6$fA2#R zciAE(q{|>i2!LweUtXqh(D9tevE1hf%Z3*SPm>+u8d62DAnW*c{4z}?!p$5Dn4vJ5 z^v4n1Vue+w3?&k9ot2ZN&-naUZ}8WH!7B57g;sumY5j2Y&1)z1E0Nd!ZN#4R?d;9P<;k08r|-|s zyXzUH5WTf;r&{HG`u^?3xmPzIk!>vc0`l zdov|ndH43m%hPx7U%!1`&&}K(WnOn3scw$Yq5Y+AFmaGxVY!r=!CyZ z9n-&VoB-LF+r&*?P;*B7*V)qZbzhw^(6{cIkAg~*ry-YFp{)@ z%1eAexTkO@kWq?T0SRcI1|Ksk7Rc|$nU{M>h(fLfVja4&k0u4r*X#Mw#6<;f!tu9* zkD^Q&palvV&5~){B4>FWWmzj)C78BmyL>+3`YE;vLYx8Homf-^W|v+_z8S z4Ukd{x25-$s+hS3bY*>f$FjK`8*n*{dlNWwW>m-}S&oz}a=?1Se&bbNqUhuXK^mSP zBgbXewy_eCTIjuF)j;)*m$XN$@?a7!Nj)(WU8GMZa@g{2xuG z8T=m&r#k*~C(vU4Ps##^cVUE9X+wv+dtUXKlKAi46Dz6D7ZmVcT#80*Nbr9&7>_gf zKR7zl_Me?VmH+>K?|td{`^vZM?<^P0!r?FijM43ro&&7)74&FP+Ew1XD!BO$}kMcdTy)gg%bX@fLbex|*^Mivq z+T3b>Te6zp=2w&4fTHLcZF2K5F4+|0f=z*E!dh6Km8+v#H>|Y;eVUhe-9x4pSJ(qJyflKOW}X(#Qz-)$0Jz(*>I%SzYCDAKRpV} zm9^f{`9B;DQu#lq{IBExb^{stpG*7r5C?zt_Z#Ou;{{;xkBxs2Y2hp8oX>0>jfLYP zW8nt|7LtrV(OqQxc-EtZ*(ayg{91U)F2XUNV9Z%%$cFqK(X9_RbK$Y^kX)-hG%U|H z9&&Srhpal&xWtX|BKQMt_!^R4FvC!KGnf7(u8DkQBix@ASOyx-f_%z4cI&vVafJ-) z#&TTi3Xd@I4M-UhriOJ!Kg!gKN42I#&ZPGtis0*qaOMB-3HboOU88yA-0%ijeY{!Q z387J&%qwY@)Z}}RGX+-%Gli=mA&`5zrDCTeGWZ< zPfpIyV5pYiA+Qs)f;(#N10_8_iaU<24P7r3+@X0V(bw5$_8N&*VTZFq}kDRVkW5!fnNB*>Ny)Gzlowo z^zmKsS7cYlR@=rIypFL6#`Z9b@rJLe@HL)im}1x%FnM@_=}N6IWg~M1W|UX>TRIXF z)CxaOVkyL?SuCC%cUClMxIA;cxpJL(KSEyU2js=DH=OharpG#Cg8Al+3CD$r786X$ zN9J%in|(9-cJ}RbG8>I2v*Gxg%!o-paG#R31n*DV3heA;Bt|%NGh~d!>U4YB8>PEF z>eZ)ugMdY z`tcmTbR_jdP&pz5Q)(eL^fQ0OC<#m!plB3XJO@@;2iO6cs{!M?jpnWer{}E`U1ydA zR~&$}2c=!h0;uG@W=|@l?c*}>WFW4&JGQwk`+brk@3{SBi$uU6) zDE@ydIUQ)L_>90ul4H4r#y(#ezs0x){rMd%2k_@}aaBB_LwtREq^tN;^)T|mL-haE1JHC@eVaJy%uLX#QUOXT4BGGO{?+9@r;+w)RlD^k!7X9P$c$S!KHe~nN4{xAN`oh2GT1Urg}9tkO6^t??X}jM=h0H5FK>GLp^$a?utDjTP$bj=X*)e2=+C1AVkG{lTAFlv5&&k5c0m zo6JyWpdDt>Lx42lPRL9Fb>%P9G&c9i!welUZ+zDrKFocPrYZSq(j?z4O9Xv9 zF=?uA7#oKY@)!xM=sYQutH=s=f2IA0W#8!k2rHVUz^m) zB=eFT$|mSL{Ompw547yavXM3O20nDu`oiu@0jd6fi@5(BWcUAI?3cd(n@wlh{;v~g z692y>@IT)^F)IOEr!@LMA={a_{A=G1<3IYYza&2>2@Kia#4<4xum9m69+os<@`%AE zW~f0u2DCiiaAKfL%LdHOpEfINsXEyJd?K&oiewnbef*1mRnUVL*I$bNYb&r;;Z_tt zhX0f4D0}}m91b=9cL6sRgy-fSbS4XF0k;E?#&UF0$PN3=eU!M54kPYBFsA(49RQlgyMngFbaQ5>rTG)}||MuyBrTIUO z###HH;b5rozY}N}|1sGWvA<4`@{O&R2e>e~@4L4@yuUbo_U`mD8+WH9pv|1?HGV*M z1yOBS3~1nIK`|C)UXy45Wo`04{dm?%H-u*5mM>1v4(UL56Z1-wb+F!PX!b1@h}hYw}mpOqw*a zdg8a4@Q}G6hY*Y|QG*qR6EgGRf;iKe?gKM;yb^-=omb6r}jyf(w`g|3^pTZ2X7ebgJXObOPJP ze<(`YY*u7#HpR5f8Q+4!ND)PKiFFhvdd|d;0HSryl2m6lxmlQ|qcC}Oo;eXGEKYTj zEmo3rT8)!B$fujG^C8JweM1aC&E@FIJ_1MdgP0|Gi98n6>VWXzTn$fEzWBjG0lT{7 zAH7YCahb6?^z&k~!1MgQ6<)Jj)*CAzqbD}z0q2K>0FxxR+hl7bZS$X9w9U}sIS-D_n83`_9rvU##3!vle4^9~uDeb85XRcv>ZwQx zFmVU6PrF!@lqi(#Nvqo-9Yp6Uvlu*GW?3AjEu3Rb<$+Cn$Xa89VZ`0J2*5tXkBeNU|PrF-F)n9LoRrg?DC>Nbwgrr5w> z?w|of0*oO0`f%vN?94jAN6mz z(FSeSc#U^m65W(iB)l2%)Ay^?t2MjK>3{u**{k#qQkEL|dmg@zzkU=mo80=uvhDXQ zGu?YCo(gs&AI*gy+**N+xO9q}TcWfUoSQ<$CM{xsS5i$XKyW@)rx>V} z*}c$E$&9j}o!60`tMEV0Prv0JBRF0!|M$^M=l|{ml-3{r0MkA|{w8~&_WFbU_mN)z zE}-`M3xBti|7SFrW!E1v#uJE~#i4g@vHo9v%J;0$xbPz58->&X72 z6$H+Q$Or2qQpUe+v$hZD4o|nu(bePwx!zo5o){a4KZys)vRJx~_aW|4YD!P8l04^| zz-1W@j{E(k6X7OEKnadQ$sbXG5XN6%bQ9zZ3#^}V?LGJBVNr9px3_8Cg^dgLlW`mn z0pTr7E!}G#ctc4g9~MYi-uP5t8Bm zY>>_WI2nvJ|JMnK{9l25jd?%IU0++{gF<{)R|c_+VwpQ$Gs(sXWF-|b3CIuqow<`? zS2f8M4HnNt=UT~)4O2yNnRF94$;a8^^j0ZAw-8YBIF=qAT!Ov<>L^IJoJb}$!m!jX zqk7@Z96v~zP$vG--l53)^*1rb+H}(XS;r}Sd|Ba7^I{#ZI(5nAm(Fw7C z7Z(i`P=){PWPenN|Co#acBJk9yMgBUA59~DJ}4-5YU)&WsNGRlF*Q@{NRng5b*0Fs z(tT^o6jQ{1+_~U`>947KZ)@ov8`ytLW|OJb|8xNr>)%%T$0qqdiT|fw|J{RZ{pW$n zB$DP1K$7!+c$CloJRR!uzY}QHdYo?^a~?E_`>YhvIqNZ!1cc`CL{`?C2aD!`ql=wh zxGlKg{IXfwg-$=I;L)b2DJgSh!SC>soEJ-Z^JGgyT0732}%ik9NV3cqX;93UG#c)0lzaKqyO|-XzkMee=y7C{~c-jziyym z{5Q5MwEE^#2O0jyNBR~dK!*RrK~DcO)A-*FG{b*kS7;LONrMdkX+Xa15&%i?A4_{# z`EM|o==cwvK*RXoDaN-X1bAcn|8(VLWiv+GBa?3A7Hv0b1UPw%_ki%;u-# zlZyi+t!14Z>E*DG%Uz=l(+iV8()dZ>%)_!m#7plGA8^yjVM&>A9$3&h!Fk;=`LATADrz7!atOS25K4rqPxd~jjyvKVb^%@!q zeAh*R8C^q8yYT67AQr$M-+6OfO@vP_%Y8ady>zKN!Pr>eFnMy*EZ)avb@dO{Kda�bdF|8YV5=b=9T zI|1?hCpqX62H;QrRZ)zmWJ9oL>`s%1k>e*sy$m35d2D&MNN4(2j@J*bQwM?Y!=*&f~1zdJD9%1xj_w_joU4`z&k<{2ivw z5wGm6_rh}AO;DAVMY9{VKz{x=JM%@5>Ho%A`>)|_to{GGfnCIZPLUdn%~x#(e-`hU zm193^qEH4h{BOesRA&D%o#gWWK}cAQ{~f@#_TNQDjb9m5&j%3^EZZjkaoyxr+`wF3 ztQ`z{Im6Myv?}S%c~EUHs!+H{<$-&CMv|%+E8lh&cO;yd z%MxWGCV|vm0#{p>>!p&PIuJ9pb$~!2h{y!vp5l^Z zHK1f_z7O(AWU6~4=F7>vg2i>h2-@KF;~u#P;$UFzI$k=1sOg^2iF9xuz9OrRR!)T1 zAL3~I+sW%!prs|r0Yo#{l*s{P3Cf$Gk*8P5pLrccoJ)xR%3fq16xd}HGReS>#$VLq zuai&rjpn7GWdET)(84w<>Hl~z9F2z=`ac_h{ja9~yNC4sPr1;^`9HE*-Z6B29*dr3 zT%dI4Bo2a6VjB4P&O?3&cQNCboUJ6kdt#WSEO=0hVknLZR&ni zxEcWXAgk4V+rRZ(-?A^A6~dfKQ8(x%+p*zz(RftweueRRwOP@N+~P67W!n-3x%Y${ zC~C80UnDh_%w_rhh?{%PM*Q5#?GkDAzgR(s-G$b+>Fvt;c!5{O#f&aq+qkO2j_z=g z*LN?vT;_7r2%MWdWvD_9YeCMeyP_UeeFp&6*C!RnFJQ6R@QMU>QRi6Us~YiR0Q4Vo?4X+s(@K25}^QMp>RDpP0XPfY2VU)e=z zk+pAs*1C>lcrcr7a~8yF;3DM#({2L*&Da-!+LWXTwFan3u>l&AtY(yZs|M>+aDWC> z9H4P8n^1Frx)dFt4ppb+Yf^TA+SEPysLmV|c&y36vTbr9YPsi)Fs9KeH$3i?KSq&R8To79^_O=)s1l-D{ZYpeQ|!qXsrpDCxSy&1qg5WICKI7`ABvzwJVT3k z)lmEJ-{# zQ_wPd4z$cJme(?SK{vI`F8x5u>g!75iNQNa&Qp?vNp;U+fjA z*a0;rsd|eiy_AwT!jiO5ld@S*`Mib53Lw_OzE-Ys2*|s+AW^+Ag@1<@TM|zBB3JUg z3PatJ2FgfS87Egk+_pKf@a+Fo;!D}hX|-H$n$n}PRgkX1uN%vYD%9-)5k8t!Hc~FP zSFLmDTAFd!>P{o1tbIch+>{?iSH2GsH*)W3Ai26{*e}+NRpO^D{Wco{Ie~6=-3qPz zpm6;wYo(vP#it;oH?IA;Xbrl*v9Eo*%sn16Nf8RXW8>kUE%WaK^V`2Z`m@RY`U8LT z_&+}S%U^nx1s?z5VcogmQCfmVuKO%53vu}tJ`K2{tJ04m(L zi*Arx#X>7F&=7!X>q??Z1XQeKQ!)37l}M$5aI;>!2x7cgZj$w^2qav;%4SfzzL1J1 zci}uLSO0yUVx3(7RY8{NYtoh7$&Hm2q@(!OKd&7d&FjZ-k*{?+l|_xJ6*`?RRHZ}A zMaAA%N3eLeMJJT~f~Ck+Louv?V0CMI5%^NOqdHe;v4)kZEL3#!b#Lfu+|Jd$)KFQj z#+6eYomF{k=NqVEThdVHZcO!Ftkx|L3FWz?RWFVoR|U1#hjjnEQYzW1g?j4~_onSt z;=xH@>~OW>lo(|qYZ265Fx$CtLiH>3+V%69x)=L_cc$&_5DFS*O|Av_%*nN4QAKC& zDt274EhUz%nqO&+ZHw6$1*E8h5ULxt)@H4YqTo8 z;}9#ToRMsroNelIodufT&8rksYU{rC!{`Fi?NqOh`X)jj(~*R?tq(vd4vTPqY?^DF zGmswYB~maBt~YUTtEV;Lo*w@YDF^}W%YjcXN6`q?g@GO zR5#E)XEqcHxy}vpP#B&E{?*o+6ge-VzTcF2kp230DK6N8=5M~d4p4aQyOLq4yFaUL zS0#Q&eR0$XL5&Ho#os8ecwN3`r`JTac$uBv5GwL7>by%WzD1p9QR7!?OqJR(qj<#B zJYMP@EvkHpau?JiA4pCq#kD5+5iR#Qa;>`yH1|DOEcNzj9!7n~xA)X|xS7xKvAQ>c zugC-Lk>r0W$k;XJL^ONhUiPg*7q@rk!1J_?eQAxWd1_j8uCUSS1e{UdI)F20=dIm$ zLv{NbOsf{Eco8Fi?n^Jk6)RLTK1uC}DvZ5VKpSz_^^0q9hoXhz?o!;{CAho0Lvbix zpg?hVcZcHc?pE9#l9N8~_q^XZcjqD@%;aK1m|6eXYwzFsWOv;DnJt(f&`d{PXx2vLhVvP0AN!D7MSYAcPHRA$_4U4qW2dN)Ru2*Cm{m2`W*Gzws*A$fw$-mH) zwrx{0jw>;wkYS<>sp2S`Xo;yHvx?+NVjJnSBGx6#dVN9urqUs*+Bk`1PEKp1xw00F zy{b6qoL4U*gX7pmHw^C4rNFNI9RJy{hIJd2iEKUmp0?D*H$JIU;CK3(up_wdOLQ6| z)cvpMpnY&%Z#5PWJ_a4&3tZkg0sm?+fkfef-ZM-~Q; z&4mJ>7YbJ(P-HaO$GS8^9%y-lq3KX(TGJFtd4=_(QI#Xg=WjV_`GxIIv;EX9QEe;_ zU{}7YOsj)t>EczB zqh{LCBxWeG^CUWLO8uW5U9Y(Xpln~T=y0lCXRg+fbC>$I+KF;cjkngwizsV+6AR2A zB{jghob^3*)iu}L1Kh!~iriji?r{PSu&@MgU~E{f!Ut8J5_ejS;q&F=esE!KP z?I$Hx%kkRm6lV7080jvwV)AqaKb1>oC}Pdv`G;LazDE%WkMOy&lNtt`lIXs=-UDUi zg;s=af}3z`UsA^@U6NE-sgEotZ6E)f}*h2}NavvNaqx1>Grl}%Z>mmIL z{#bOFE0pNo;ua8@|xy#n*LhSy*G30rGuwHV_b@-EFE>D z7&6k?==J-qA~GM=B)VjO7oWO+q1E$|nhhu%yYEH?v!<09%X2w%3sh=w1 zZHFcAFlUV_u$GZhagb>je=ebCRH%o}F`(+Z!^j!wx{0n{v`iwH$s$6ZEw=loNG{7`gDTLhgQ*9@pgYCZ;0wdfTA>R(-PMJ`|)vWTeFd&q0_ zg>uS#>qxyU*S1jea$%MZ0728g_2_Xm?iVj94QMP@%U@Es=C4(_Bq3=}$wE)VtD1Dq z>=yVk)xFt+UpnvVIETQM*l%~ya0I#q8Yi5g+9HQP5(uZbtJg&ZT$gonUp6~s8w#5* zZH0a?QOKpLN&91sCKD`Gpb7Jqk@tSE>Qp;V(NGb>lyW=Utd=Bo(ufps^8LKNA^ckx( z6;BO9^c)S&N+atf?ZKD44SC8V?hXkN{nrB5HO)(fBin5x zTe9y{Bx*j(dyYS~I++X`=56xfK~uQHq9kGu%eegDI1PO~=WH|4AptKk1CY083|rp-v~lf21>p_`lN0O7;IoI)@JaE1i44 z{wtlcv1+3OO~rf7GIDg;BV!#k5{xw&s$2wO=5-FA;ZLBF)M{fMbVbCfm`JNIxE&dB zRt7)LV?ueAE0hOum^Sp9c;dk+6$V|twa(<#WF+&hC3}=fsNK##*hb09+evquP{s;) z9dSnB7;#(0bcqqy;l8B6A8YZZ?eQkjF|8pJP^py3b#x78C#dXJafLxmYG`A+^HnIX zE@_>*_>}*-7`6Jl1XGw{a{0aYXTS&($~L(`#=Aw?+(*in=_d0xAfbtu<(b;Nk;a7M z2~QH24E}e!q9P64R~M}`rlnMTy7Oa*5>%%Naxc zOh{H}r9{h_tzL&nhel}4*i$K(9T4h^jr~4KcPLf3sJ_Wiw(+a7GM=OQ{$PE#k*1l0 z78^c?QJ;E)AN9QP0CZ)ZEXne#-64W6k>IFCFZ9bgi^;uN0;WEs;HOgQ1g) zW8_gYj{-zt#H-7lKWPJEJXnIPJ4Lv|8V5NPH+0XKVw&$4bp@Av;1y^eVKvk=IrR@4 zFsiF|#9I7pHq5?prTA%zddmuZ*9FRfaEkk>Ze1F5=+}e>7p|0+VpDv*6iclxZ(ujh zkFvYfi0M;OGziXY90uD_lvtUGc<-+C0)e|wq-<1rF?tgQp=l{k3`nYs2CpM!xYdhx z9O?_i7m+h=U;xFHa`=$~c6aK?=+ZW;j?ZOi7_GFrrn|#rjq|V}UL^UdqB>Jm?3*(2 zjapq2nB#4)A%(ntAEIV1vzhoP*=+k9s?|B9w(6ynGR}SbZ87OKng+jlOKrCaCzsJS zu}WfYu^y@uOJT`0ZfSW?rhTEYKzyeM{${&HaeeNnyF6)o@i9d}-MmBx8@oEIe3B3_ z13RC!WEF3kq`TCnsGZF9v_#!Rd&wKZ&Wy!EGh#U}iEO(sx%f%ZSFa=#+*@dsi>})d z9woB4p}Z0cpC3IfTfzOlSl39;<{IU{`sxsPb|&I|Z_L}2^keYRu}hb}R%uG^`Gy(y zLETk<;ijY_Z9hMp)^u_M*L{Kqr|a*+oeqsLUazG{?P z2D+-Jcy!rvDZOUP9P4#ER~x@})-}z-7_BUIz6k+aQ=mlImJUB>LAw%5j>I&#F}y5P z_bxpyAukMSz+G4rq`0$i)qD(f;6EXKa%^ruKyyM9EeW$>QR>Rtt+UHd&gROnvk6*x zr-Sl-T=S$OcK*romqhQ&hy@>s&1x$1{tK0@FjRPoVvrwVb9N_NGSMJXVPWoWC(o{c z8{u}aq3&6-f*aWIX^WqpXKedqunCK#aoyHlj~n-yP!G=ZV<{r|?##mh!z?9ocfLQV zBXtZO|gKc#?|ZCYm^f7LI3O`J$ft!q+zNfwW z&{%vs>Ps#`Y566OWLVu{RT!MdoVHZ8{0CJY_nm#E??UmuYgSX$A0tnf@$cqW_vJ+8 zjvR8oA~#<9Qe_K$P2ruVW09`q`!nmut~Mu&Il{HyR^!(@V^mSQ)xQjCe86aN)+a7^ zHs$BK(54G#osHVHEF_admL5mS0!mr0eMXzr8`9}FVyJTc92s!6s&3PaC9DUbg!9bY>AI#XeKkaz)z-S9GGh^=y@qj0O5J*u`BOcEaW z&>tu?J8M4um2S7Hjis*2Av*e43HNpJTjNt8Hoca-hF;EgUGb{c11`tg*v_4qp-AxY z#O$aa>TCql2b%QQ_r?0b%@x%0Pl@Rl4SRp`;%%i^Pqm;XJODi5>HcY1Z-H{6tneefAS9T~|gdw^ zT7~P=FpV`Odg_&6ZM0boLhH#NQE57Dl>(LqXf)TO*7OUu@vjo|Cnd!KZXJlI)uh{k zrnW9IVE?6MR9*a~rd%7?AJF^bO8R~Agi%kmlrPoiZ??};itbTjK=o!uYUSc9Az!8*vCO zRS1u{xeVI5A5n64f|rpr@G20O*H@inU;VJEYgB?B9nit_C-hbq`j}LCeMZK?IA}lW z*agEsx9xIJAzBNX^6)VLn(JsbnQHUMsSF=&^sjsm2A?#3`9Nl2kYKy!w!Pmiv^{|^fwjw6q za~_xp59Mb^wWe8a>Oj2K5e@vFG?zybJd^|S5w?|hRO)2Ez77s&%3TK4_BHgl0OMZG zzyoy{5}+|86;Q+^4x2qVSd}ZNTVY75VfEbV z)rf_V1SJCPM;{a1?=X}`g&1h@|EzC)$7&zfz{S9mH#xj-VEm;2B>;ov)UU()D8jMd zYnfQ@O*jOp{5i;Tum8dEjegt}HvyTW!5EEY+wTnC>7&o;9MTUf{&=@XfcUYyPmDl7 z00L711w-08G|+SphW2~n@|zLt(owve7aSugi$`=9&`CHj5qGcIbd9g~j^o*_H0=|J z9Jaa3IZ?p?Fj|KDsERc+5VPXy=Ss4|OQ;eBo?gDU5|G^odoY<+?^iJ5@56xw@ff!w z^@nF#hKcbwYj1OIR@996#Z1u4qwXJV`lPV z4<$sj!=v5jGX~FQwQ03VM@!IN@f-$Ke~@9Wd}aqhGDhg^$J)Z;;6NR-KLtz0z>>ZN zQL4Mxkw-u??PmSX`QQj=tz?*b1IJVh4uynm_;3;08{JZr$%pq>Zu?=u zjAU*vPM|}3dnJ50?E7Cqba-juFBIwUk#q}>`5Sv5;t_drf2{7DObjD2Et82`H4P2h zI6!D5RpKzz!DtFOr;6WKs50p5%)V!QG1*m6GCw?-roWvXgL!t}d8UNsKG-iyN-HwC ztRYg*ev`K@mNnBOsv<%`kq1{g>Y1&9ud1-&vQVkzFi4{iuGtK;;Omfx>2~p(0 z5LNV90Qy#`I(cROa2TZ^b&`+zS^nV+)b7A?KzHzoNg+1Kz4`wAnRSwBswpg++lu7rPTbVTwdO2yX@XM1FwQ;anmJWNL`TvBT7DXcl`=)OJTm1xO^e`@HWcNl4^PS8#D>X;0N$Y?Nt zh^5h(Pln3vvxcmNwYCeevDtM z&kVzF2>GqFEyF#T{HJGIpW@2ibJauQFe8b_=rUJE*lPvx|1o3EIZ`Dz6EH<<8l$5^ z(#>JI$-d1iK9|FNieF+?naOt|w^I2fmd01y{$s3JehgR2H5Re#MMS^2a0#{MpQ)ph ziCDIn!$)mLJXG)?rltehm55skrU_aKZk$&^0>J0P0N^R!B+rDgJ1X7Dz`whbQCJa2 zf_HE5f_EoDS3zTp+Y(EI4I5PP*Wjh#!szB)=tSH)f$8|lvBrys=AQZjO^K2{4poJ& zLB81RB1}HTGK!ZWdPKjUoz*`GN;(b4xVJvvnS_zdoFLJ`A#t9s#SIO-xaz&_1D*p~owQ5ANuG({<3T=r^#;;jY!T}y{=Jbz0Sm?fL zH@V23J)RBSQj9Lf+C(Gce2cNmQ3v-dUOLRv_J9lTDBsnqsbn0yi8XE{=%F9vEI;th zhRP$`^3)@AX^q@_lC`W3(@L@unuUb|W0YQP%~BjttU2?koO&@he9D# zJX(&wzxBR9*2Dwt>U)5_q~Cz?@xa?O1M}eFK(7_IEw7dAF*BE2z=+JVIU=^-LYne3 zaGbh$W>X)DwKWAL3i)8aVaK$Lrl9^P=GxrdCCek8x)YA*%8c2*`=-mY+t3@4LMUTz zEuc~!a_$jAl%c^VGd{@_MOfq3c@`zff<+Bi6-tQoXQi`wBKE4Sx@J~+k*2w9l6I?3 zjXuoH7(?3mt$h*W!@FhqvXgB7o<2`}xyFQHDt>jbTFPhAMuZapH(O6*z8hWNQD>BC zf%n~tsm~C{Lqx_vd2{WvtyoGlZoIt#dO`r8>-Bs636=dSl4-Ozyh522~pELCAB}bZ;1uh>zXb# zwgb<-N*;vaj*3cwS8Oi{n@W*n#~4G|?_--R#@JO>37Co)J$Eku3lu}ohULw_O z)pIlH)_(e^s7Cy14{-on3!duUFGWHL^q%uGiL0%$4m)-qO~qap6*G#csbE`1XJwaw z+LoCQB)`ZW1+}rX+!ws2UvWkRr`CZiN;tWU2Yer(mX{SuQ}7h>5RdKGMsJOLA0zTJ zP-d4yBDJy5NXB)`B09)p5kPydSZV~= zysLM00b=6Yg#=qTaq%!)9iZI2iF46at;gRCnaw1#7;7ea7InqlP1IafZ0>BEJfyJ% ztCHzQ*E)5mxtBSg>wG%3?FB1I(2A!57k^7We5oC}S>E|u5qQ41+hF5fV!%NXmfSeB zMaH}Of9;u+4c3l=reBRb-Tr8N{q-K(G0>%O+rCP1xk@;rPf<}All@&!T{SC*j~ffu z0?o#12J@f8GOn`d9TwUlS5NKvdj}fsmhAa**WOrrv$Tu$VdLN1YRsNh3QXMhs}`7& zj6FMw$sv!fh#4zvbU2{_nm8ikRTppW_5he`P`Z&E+vIwZ0rD^Z(0nc_{m}4Uu|@&&$hGSr(*Z_h`kA?7?)L}NDZc! zjlkKL^uz887VRWAe=1(e5RJl(;pvv_A)ZQ>o6etB!d101_}&n%e!QHOOJlCu;51SE zk4NJ-jl6O3&!gFLm|pD1R8dA7O}ZDoFw;O$r(DuA^{da7!1mx4cwmvlwz1$=Mzp5% z01%*Q^b>KG|H9su7^E|fCsf~f%_CTiJD^e9JSZ%0$({(-YidV;r62wxbz#e}9fYi_ zOMZb=?l8^HRF2A7E(pop-Jz3rjL;A5?k{1Itf}!uW?`+5zZFGUYmIt83HM@)H4}_2?YcU}A zQPe8mLTUew*+BGlHbS|YX(Q$@6mYF6x$3i_y@bBjczdBw@z7mqp_`46NkM-~?3^-S zMUAdRoIX?bMqXL3-{&~Uq^K%AuXNVeTv0o0s73P60k;2gXmvf5IOZh|7SyU_Bc*j( zN)o~|*X!OKcd{Tw8N*Vg2Sk=B3oPHT(P0VrDdckqWm4XM7XfQ|XF%%A242Ar9Hc;| zlMLIiQQWz|!kV^J6IH=`8Cm(cWdYv zXOxKno=hFM`@-3$$ZUjVy<;z2`c_IOdw`1&%4*67k|SSTK?x}ct^~Fhx3KP|tj>L4 zQV}gEoEo85^P7WD5(EdY0>o)H&3z_Z36gL@GSy4%WheT%pGNwpX8eo{mg9~MBWgS6 z_odfJ$^=7Q)i*MXOG|Z$)_wiA>YmQGJk;Qd&6f7MickY<94vVDaRfgRpW>`*4HSHm zD%1R2iCxi|e3l3%cX@Y$6#Mj_jB!V6z?Cu51#{WUc#tCWS2N4Yd3XHyB{T)|j|eVbddAjAs!^$E4`S*c;OQ z<8(6y8rjXxdb!>~ z6n_0(VlktnEvb+a3 zWKbbeQWMAM(lU6&tNinJ=DHZ{g9CuLuAi4j=r;4`Y{V-b-`Kgy7YXxs6ks()+V0&UiKbBX%h?4L&PKrr$0!~oZ)FTz>go5_g%x+GDwml6r8fbF2SDaB&<7tcoqG!hk!_}dC zR7-Qxvod+Dq~I&C&|TM9cQ9 z!!c(JGw%*e^SI?#DNUr3c!@T;+0JqAI5(Jsi#l68s625{6pm+*&-#P@)66R%xN@bI-+oIX-joDC>7i9a&~l&M*{g{4w=Pi5MZUu_lYd`Jv~2;2N1 z2@mdYgw&KaP?V{?xrHyP7u`XsvZTN7#q~>-m2gp<&}2@I|3`XN@R6bL5@iFlCmCq{ z3)740;W!%pi2RdhRj^!xRl8O$XSBG3ls~_?T>&ujzcvqG-lptE?cvdeQScPly11mh z5%xa=^YApCkNRPGOEJ+ZmgDqyjt{shSt|>AKiA#?Rm5|lN@oYM^<0iiqm%9^0hJ`o znwe-7!y#pNhMXlT9|)Ds@0>iZr=-5_&y`?f3eQPum$Isko6IfVv~4=kc9ZrH2X2M9 zYOrwd=E8R-(TP3BRCCARvoPoLmahwpf4OwGlKhX~IJexhTTk64Y3p~)19vOo3f>B? z*f!ms)vYRLLwXf07Z7OEQ@SlDK{i*z5S}I}ad-l^$K6T0QnAsCu`Q|{(&3vI8R5d! z9#a3*c@nJ35;OJXsT#ALMr=TBZazX=<*%sFJ0TSF=yhY^lB-A8=C+d zs9(k_!O`wSy&os;jBnqX^RQEkrv&@?O@V9MUPuuD#;Qnj@T5I|WXBzpCx0jMO<~Kr zYm=8K_JU~{WtTF)j>eZyQJl;8ISgy)VVfvQ-+<_08Hk_MO)#ReG>61eTE%1Oz7Be- z)X8?{!{M|9SV=a2;T==w<}Ev|qIM-sxY`WN80hzJB*3ru<8A zxl(WJm4oJA-gf80PTMmrN-k>+&Lr_F;?9tD2=^j?HYV%Y%dCcz@5%EWXAcG<1^hY= z0QSr1CUvvSr=A?laH%d6jkG-{*QO9}&EX)gqAPMJVR>VLrQ^7R1NDqwRi>eIpA@+& z5w4W>8;YB6oq{&a*=JUFT^;GyvM{k68aD`4{eG{I15>b(OzgF)bh|;DS zeX6-^Cc9MN@;pNdoUb}!?FsJ?W0amIYAzJVk)U9y+fb$O}8sz~sEjUkL0$iCwwaRiOVWKBsmr`L6@mVBHMW|qQG{AsA_b3%LB z3T0kpYxK%`|MHFW!g2+&Z_+6?Z{`m-_g^+J@^_Rpsd|dlv(6}sziy+J znDg>U_wghS8#TUd(4DN7Z>Sbg+i1{RV5n;R9N&@KOqNTvD#*NZ^~ckHGXVE_x+Hn= z@G%4kGWi&+jzWZ?2bI5bq~!4mh8Iqt3Rm58gp7UDY|2vGY~vrG3dy{cwx$zRL*{j@ zMQCXQ@KU~9f6J`ukK0W1u4pf%89;@Y_X=^4J;}2E-P*FGkFlCtvwhoU<>94i;!l=o zu)3f*4QOrtj`o&Lg z>es?Ea#ndh(%R3@bgHFkvd!p)vlVs)$Gm&+j z_9V5|Ip<(@+*bW@zoS9()W&%|(8(;D+II%E{9K@$CyByqtYs^6@wRkr%TC8z_NPkK z#pLxGlCoS=S*8BmN4aRH+Ir>o=c<}Hi6qK;RL z&}n-(H5(gcgKwzqrY-%%ejMuVt**HCc)s_^+v+)F1Kc&3k2Ix|?XkE^L$L>+4BzxR zpz0hqA!Jy&WfkVXtZt~RR6TW+2kt3W`X9U~Q>Hr&b~jlZ&#yIg0UqHw%gb0K!JW?z zRlS0|H3{w$WHkW&yGO#UwFj3nT2rQ8OF5Rzq6pgr_xb=p z>zZ$!1z+ph!?FT&%Y2o=mj~V0tm=RO4}UH?^>EFzztwZ%nkv^)&1wPmlpaz{1AKu} zHNCXWVQbhHMk*M^#jbsmn|^zMhY_Syn%9?O?k8nfH{Y`nJO7TW)G<`|+2Nc>jyBF5 z=?US>Op8se8&bPH@vUY!kqQl$TsKG&k4+DJ2xsAD!9qLw`hHwTXl;KX;7YWrj4?^7 zs~c*+3_dwCn8HgT%T zn)9u)&d~K1_@}wHcrTz1v57F3Zi0C~a*@FYDnnwK!AHm2d=5jH;|QETO@VLlN}7O4ud^;>WXdm1 zm?{vwmK-fuokch+gH?)mY{k_1#?N`A`KOW4w^U=@mg>r(9C2Ne{P}FCr#+^5 zX_o0Qo$WC{A7y5)PoddVY9UFBRqL~-MVxqvaJkNw1re;4uI@(uK?3ehQb6NPV}VWcrVT>Bw1>vGSI^IpucyuF5gv$gig|7(P2 z1$Bb9eyhWl0QduSv*)qpc*#Uf83>)Z0>*IszK4@5%ui1tjPK;Ri<70#;A%~bCIe3ozx$T)<^ zkT+1uzy9c}lFJhOGWBvh^4oedYcETt;%FeN8AuLD5@(rwGi%4i-+ve`B{i@MZMrrD zVO|^jju3uBcKuOW{`>rc8j0@Ak*YC&)}XWtSg`BFGkdlTyPzMqd$pC-Ui7VxyRG?#9!`} z6~|=ndKDhD-|n4gG*TYF4A{rW2i07>*b9}Ohwo1$PKgFwoX^PH@DO81xNF6Kv`G!z z+J#itVd#I^XTE1Qh6f$a{K87YTc3VFUBz|(mG@;m|2OITmZ$vzfsl4^lQD9%lkvoa zelmBU9{;$LgE#V1HFt?$Y2dmnC+W;)73qqzgxgkbN2+~K7?&`-u+FT-vtb(WZq8j1 z0`Y@X-jWwQcx3&$jTm_^w1xQXv{>B_|DEhID1@FK#(9{-r%MnR`0U+#6D=^!_6h#i zRFxkyFOqtE@K>oI!k4rJ;HN{af>)R5o~x7+SUb09~y#dRRd;NJHk5Na+e zaJW^mRxfV&q1MWCrBYTYW7io&m)FACPYjUdkR(u9Y6l0Z51jwt7Pc z1$zB*W`uBOkn!$o0uWnujDZ;=G#QoZE7&~Z+QP}LB)2hasZKxcy=>ihxfUil3O6hn zoc^*GVU-qwy51pYkR6xZ*Gr2*`<*~b4uK47FioSC@ZIfk?YUU$=r!RuC$N#(~0#>PLG^ZJ1on`1YxuFGhN_9oxm&)`Yr^WWV!f3>>zrdZ8f z7xf8!!#CX`1iqeLZxet9K?lSBp3)(3D1;nVGr1z*7sR5Cz-f~An(IK2>*HJC81OB} z99Z#h&;Py!{NmZIubx!kIS}|nDxm#75A6b)J_LbY1E0Z%M+`o|y+DxE`&D2F$oqNQ z_x%d~-7y^Wf%m)}_$K6az0=bN0vbMVgP=igLi>Rr>h~*0@UAG(hv!WX=riaIwEGI` z0dI)~eQaO%fRKStfxRH$^0VQ+QltO9(%Wyu|Ifi#L91q?ps@v@q0#wKk|1K7za}@>V`^z9T!%13w1u$gWQB za(lo04gO9&8v=z^2oIYri#9hUj~1<;O``54^Nr@Z+$VuYAN+H)e1Bf!0;IB40U)~r z5g+db#)cQ9KZ5>3{prHg)49uTimLty^40p&5ylJp21bJuZ=r9`ekkt{>owY=?!Y5! z$FKXzgdn6g<4fV86EakS$TkxGPW|z(q_oI;)M0{8c_tO+Z-FELqJV#1c`d6tg{N7=@;SBflTZ&<#8C5Vw(Xfug{{7Z8JC!+#1Q1Osf5N z?<3Ls&&mkkX`!mzh*gx~lHEuVCO$4yyi_8J4Dz6OEV8JGUxoSkYGNUn)YdIz%Jqkc zw6*dDN)*Os$aA6lx`QtmbbQ;bOp^;9cK^AbN~$5iE)aFBXAR=n(7uH0d49$4efZUd ztcH}z9kzy(y>yXo%UdDW{9XTR^IR^B`F&5*fgu{qRbulYSHf!&Rz7`ibg7s>8c` z&bt$HQo|)aFv;XL^fw?pL7jdvO}>2ISTH9wXhPD>ULw3n56%kFj__b9x&jM1d@-sX z7z)+c&Tf#WOP#fIiiaokxY=U`}IqqtLJ`v z45reqYkVtG>6)E?Tr@VQU)#Gh>JN zK(5retw7yDy_8wd4MQf#UI5H)%~3SMyU*E}&cCKWVqtG{JE~Esr5rWCP27-!Dx#(v z4k)AJw*6iHj8f-JH70Ej^(agLYH3GI8U+uyKj??g)-M%Ywy_z+>V8;%A4R&&CW#+Pwmu!?thd7p+f}1Lj&{7J`}M=v zj}LPzH{L4STIkc!|Ma^ECsnnhj%_jzrag3adofLqZu*xGkY_kTQMdbskLSj#+!9n% zJ2`yDGmd-Rif$sr&iesuAuux>0%Pi^bv{5&xeq;A!cs4R{CGz=ZU}}Z?c1LtpM|8n zL|5{R`-La2QAy3|*-7NszX{vF1cu6dp8~BTF6e~{N^rUXPlY7NG)UZ?Dul)=ElwKarw2%EG7=APn_*@TaELjAGlY$**oHua9- zm{|WNoq3DF-d)J@^p)jD%@0yBGa_W6k%#xwsmSWY#JOibbG>eVAZ|P)V{NY37Wgmk z(x0&5`#MA#(8s@nb|BF#I0joKeZ)UI-1~gDyK5-JoGeBn6cZD1&gjn8>zGQz=V$VH z3OZCm{yBz^z1L7&D}0<33~Q;a(9ue_$$PdGT78pj_k~gT8@Snc&GzD$und}p1AxgB zKMw*e6&F9W>!XP4C6=%JJq-qyW`2Syuuw(6g9>z}K(1_=|Mcp4OdBp0uV@N1k*AP@ z6yX7!;QCxkE(Y)Iz(!7{;GG%GgH^?nI=QD>2(4P`F8)a)vC-WNUkiZQmS5=em`$7A z9RM?EFt6(Pd^h}~?p-gnjf;By_Vm(3=B(z~@iLc@ z)ksXM!)$A(N2E+iAQ7QrXw0sSw8%65<myBg+%>a!Y}Y=ej2RE zx(RgtJ4x|ec{+?gKN)JmhV3_0XSW1oa!+Lfm&+iSDLKyH5)&ajrzA~0O2Y?Vrcdwr zh(4}_5m2QKEJF}*A8E1tugP#Sm1Eot@$K?JDyYa`7eVs%H=v>U|0GaIQ0`eruU&RT z5PBeT-t;8ufN{+c$(2A)HUjGpCF+?CUy?NN4J-zzAPk&aVE$@52G@e|8XQ#r z0pABIfDhSq%e@e44=#UjG&@&=7&{Xp`ixRystqCt0HYhB6RLY+m#PC>L=El`jMzS= zDPuqdedkuW;4}`1#<4>|vg!RnX60FnX1Q}%Ofr*YLJ}geG9_s)A1&v}iFp%C;1_RF z)c2~Z*YOdwFGR4x&zDChEE;ZyzNnXl`-}=swO+3%p~45SNMG!`fGtnQjyXMnuD7rE zd+!IUWjg>7QHL&s_msbmec1e0tr^sJ@4spMo+rSmoo{m<>yGt*E{Z9mbsD{CR+Hw<`J zjwWJhGVkgMd}C24{sVKAs;=MJ-}6u|<51({>1~5oAT3XI-?%Q=ux$RK9jw}J-%vcB z!OaRCifK16?*$*|%KxeSPItyzKvx8Z^|P~~j=xT2wzeVjKRbXc;wM=>L3mMeQEnNE4T59KM}&uXW=_ZMQc+$<6nldgz{JLwOK+ z09t0E8-Xujd?c1vAStX1&@AEzlbPy0y(e@Js^2@1&|X`Zu@&cXpE{Tw4H+r)uJ^k< zZ2w78S@0infl&JU0sCL0-|s^iB+Xvyvps@22o2ZwFM>|i+n!mnX7bO+(k+aQ8bRmp z^JEd=d;v{Vn%*0q$3Q75wJcB>mNEdu=qkJjUQ9UgEWYIM1+SfLlfnNy0HbE9SKqcr zy~-~@;IHIXD22E?c3wE;7f9m|%A{Xia-p&~2_55#gJdZW>B0tDskwdzt(@f#q%h3y zgT;**2V3+^zYBu}o{>K^y|5V^Eh zf<~a^O@`l#8N-X7$H`BI4N=p9jJO8A5q2>t2jJ$OiJGcjE(2boW(EdU>?1XO%jC&V z8b5W*EpSc_RKLn&WakYWXj#<%ZJ_Dx8t$a^U!sK7_{zq^VBV8kr*1#};jOK`dU0V7 zxG>sJ`Ur}MIZb9YR-J|CEFeu75=`mTBBWUm1QD%-$Q*(S&OfHjzqzZI2L7p6Q;1%VJ$~(vfdyO2aVm^_X8z(3dv>DV87qmT_ z*bF*_0sP?UahYstkgVP(XKzW7y}+n6IuWyI7Uic0x(@+`S^k!?ycywswr)VRfKZ)h zpy2+!#NSx+p!Ek7o=u8v_AE4d0|KwOyS}UhUqxVYT1`)e5Yec`h?-N!p8_v@b@-rR z-?#aoB0qtH-6}t(o%m)Rg}|_$71G5Owclu(tTDFclW-yZt%O-{i_#Ho=ssCe1^3)w z+wYP0UxROR8PD{XK$XvQ~&}usNNtiSl;>ZScxa1=9@Q z))PzHK_#LTfQhA&Zy94>HLworA2JvP?%IXT*?ZdEfZu=Ov5odeU+*l@Lw$j9IV7o1 zSK;suTE)zl+DJ=x;{>+sLrS~7H=PSvJf}5-Z^y8g1L@Iv*UqN*K&KDe-#D~EYa~Hn zgcJ{n6?VH0ULdCq{r0xnQJ`HhOxu*vTs1xJW^J2lc$Rao8LRhK)9em* zrMfunt~&#YLBATl2};v}z{w-8Lc~_!dJo4f2;HyC#yc3>*pD5lF-tBIAY{WAHdBqW znW*tLaN+q;annPL#zG5Js(;Pd^~wh;!QT!!+ZD>!J)xc!)XCU+!0j-+!o5&( z)D&nLhC$&HijF__E!;5s(|!GHR*-z* zD^Iu}5&(2Oe3b#8-O0v}Kueaz8`6&8;^Q9GIc5p2+;nEEF+>hE^DoTG@0;CP1-_+2 zAl#%Lp@eM^>JWHcZY1#UA5+*KG#xH&Kuu#OlJ!tOg10>T2Rg+cpWhL;-J1bQ5AXKe zO(iPFG79Z%v_i`2Vzk%hDDUdBj`yUqe;9{mLCZ5tX_bl4^a3Uh3d zjKV67rhB-X*}i~W(^v=A5cHLY>K^LM$b(il&Wgp|RAiIgDr^vOp&fq7wtcjh9HJr&4rh6ea%mH!dQ5Bc)ynErkzf(6>{bNja;*axh$FUQcZ zpzV#1($2=BxPMj{v2QEf_H^=SLL_SQon;)TL6O z%uV>w`@s1EyZ0xsLjSu!sDZXW(UvMCG~azBHv=Vj-YvlCB#Mz8-6{XMNj8R4z60q8 zoxVEmBT^KA27Z4$Iq}VcwM+RN1gYmoIv4cB`u{L>)=^QnU$m#YySqUN=`IQB5CLgP z=@O&{1nEY)6=`Xt8M;$ChYsnkVZL{Ke|Oz=|7Tc}&vVW``|QsVZ3r#jIttw`VpZVQ zgW}=3mL`ES&pZF1fbxQ9K*XzXoJ~Yt-~p5z0|@2e2*P`!Az3?w!+D?Bth)?Hp@7eVw(QcLi^NrdpKL3(yY}SjmN3@zuYG*JTjd zA&TynE8+H3OKNtwK;kyw(Ybz!*Bkrx>6GHqTh^L(&) zi)0|kJ?QcH`C)kX&L%F&{m$Wl+Vf9xXh6`E{j(kO3H)-`uLMbSgXl~9fbk>18(QL0&;yI{JPo|$)(O8w59Brs zf8LY};U4H5{831!zXAVa8G4R$VCgAAqm5S=>&Qr7to>X6ElM)0nQ;-gcv9U(&|3U&a&mVCwHtQWLDBTnU{n}2MHu*kAV)KxI)vC+Rn zD>b>~g;Z@9Nc<)?e)sarx~UTx_Wt&rf$z8zmB2I`=YmH8)lzMdp0_;3ABu!ZQ|FZj zPC3+P-u}H-=b?M>F#HP>p}bvN44BHMKzVtriae+?xX5ZPFUbqBQB%1}K+~1wCP16b z`2srDg*ki6y?K2hoDvqCyQ~E$SbY8s_Bc}?2xM6CItD#hU2Lf#_FsXxacgjZ!4@dJ z1>(O_a`6%h+1jX1g3etze^VXK8tH94Q-y{VQULF9U=Ibu&j5+;mxCt&Pqq%Wg8tvJ zyH5ZGUq7DFeXIo4Z{*{XK!Jg!d)MvS31AtwfdJ4;Y;$D!%p*8ULK(j05tUo&MkslV zyEXd98OeaGJY^J11jC5Z$15U9dz5R$LAH)j&%yf7bu)HPvaMAG9bKJJnv%3egn9q- zn7aGbK}8Y%Lva0*(l0Hfk5j1s@eP$R0er)oj19tFSQt^;@DCjnLj7z_WlFoI1bf!i0%0_On;jrkXxZp1YY7Gh`Ey~)QNC|Y$Br#`&b$_;jUUg1MZ%LNYa zC*hQ%4BSQluCMR`5x#OR?b@iwZ>l&|Jb}TY%U1Gx()+dJIB-pSB@Y z$JDSG4DzS#g|f)e zeWeKF=0Hgl}oT1c}p`Akx zn5`ud_Tz}IcK6kx?eqJe%bCQ3B*L&Z?sJ!=c$WLjSYz> z`+Ar8=1~5o&r$-|%$Fi&><4 z`O-%VPcZj7FsI@aj-331J{S5_ejU5s6Hm-;af-6uT6g1{QnBVdvELq* z43E(HnmisA!v>m8sC#9qoxM!ACPMh9MkMhsP$zE`D!j7~(gZ}Z4&bP;0!i2)>iY+5 zmMDb8^l#WZhsg*GTxnLQFZc{{u}=G-C2}lDCh*nb{f8vdwl!T0T6N=J462*8U2MzuWS#6moQ^C|bx zH)9N9cseu95F1l-&zveA|DkwECD60eea(};dU37ReM`Q$^geJ?;3_@QmXp+#H80sy zrOP@Nu2e&XZB8e9%-l*sER2 zsCcEZq3Gl0@u66ua=^nBxRv}TQNNgW5N$Ha`pHGxO83X2R^Zd$w>qn70+zFUodQ9( zq4;Ebl9DTi_aWWLlRUWxex9i1H9;Qc&fyaRB=)Vu;l5Ol8Fh5$2(U?$Q6p1kc*lP22-p z^-d($VP|o{o=?zvxHmYxL9@1XeR%bJnn{6FuJjZ4NDuIW)CU3uB*4G_K>*y@r*#0? z_D=vj85cHa?ZdGX#PcWoC-T<7=fSd@czD=z%S1aq`6J`?xb^$1ds{(@Ac>54w7u~z zns~5Kx@Xt`Wci)v%%?906Euqu9=5C4c&>L^&`zG8mcqXnl;gy(zH3jNPdzTZCtfes z*GA>URU@(_GtkM!(1Ws6YQL}<`&D2lkD+z}Zae^EUBbV5G89KwU}}3?AbW}C(d5~> zkOXKO1%#-^Y>lAwnvL*WaW{BhSw(T@G7ynH1V_I{&U~)5irGfe>bJ@(nCcWYC$Qi6 z985Mb_@xQ{5X-l8`waBq&FdwSR2KyzeChLBE6jp&+wyZx?v+;XDRd%Rj>t9kXSj5UcLdk|BI?!yJMlLuOX1aCW48 zfe%Y7CyXM7(e7~lp6*$0jtcEsNciJ*<1XBUA7iQd2RllKXInIl=^_rocX?E;!$3uq zIZ*FY!k%7&uJ4^#7ul`2(Bwl@)cW5iUsV9)+nfOrKj0_s5z41cU?vreuW!UW-!^YV z5_}AEeL6V9x`5QfK#4H9CphBpqVQgy`Zyq}zzcRJ4D8#B53d2Vw1@ZAx&Mp1Pe=2e zyqr4JKEtFoBRYR33qZl!nmRilw2f;E8OpyxxR6h1KmzrWFQefVKXYdhva$hbc~>6sa=H^ywKdoLpOWxh%lXV$@^WG!zkhu!+# z84wuyERC3>z&`rm7MbdhmUI24b!>Z2>0kSs8bL&rUAD~BVZf7dEhLH5S$DT@PI%2V<% z5to2g@7tyZPtCVk1TIPqF=MXpd<(np9ZZcyC#aZ?YTj%$RmbjkZaxrZ3-?~0Ha})^ z@g6JQsYJgoBs6`W|Y&Ms%L)%mPf8Z*dT&TD0=t$tK0mP!hg5-sVhvxGJQb|(|G9FVD5513&{Z&lz@rSE%^_gVH+um{glyf@ca7X}76vh+E%>4>s9`hg zbC}NG%6s&)@v0&b$!8zd(7xVnDV-+&;z4&HO8@JNI7|c|gQ*u7W=ID<2v0o%nil34 zGS(qtl@^&;LzY=d)JRFbo6QFf(rn7~;M4K1iAvklp5Ng?5$AZQO+{v8%pl$S4|A@nU_4nt?c*b zJ=-$vdp*5xBFAna09VgSS0fo`Bc*t$v9UGvmv%GFX73_Ns)E$p=x4MY7A_(F0;STce;o2vpJ(tcT+OCGh^g>Eb_l3&A9C zoJp;Q`gxNH)R(S;ZGyiOHmSKKS{h|5M&0z2J@2UF9F3{PV@*KlRcd;A+9Cf_bl%bA zi*&E}!y>&c+815}s9h{vI4@xL1xz$Yo#}5WqtC(pQwb>lyjnDH(G-3MD~L=<0x?iJ z^NTlu=;;q0*k5e#?#snob+H6lJx2l^3SUDL$o6<)sbcuY^Xgzsg!l>wKraVN*t94< z1KNV?Zd_lXt3Ti5TM=sip_D&Gb zK$iMW9|jVR7zCY!0Kp8 -9!T84Oy#B%P=To$?SZZ_$7d#lWjtY#Z|JpIvzCY=2$ zr0_w-j(HM9QUx^^`6B`GUgqW1F__bvfm2HB+J6lR79XFVfGUP6{7FLV;QJ%egf%v={Z zRUTtKx;bwD)KW7B^EWA4$i>P{rj5A74J*hBNF=d86}wPbYkz_@9U`yG!m>3Q;SIz; z!$&}uV>SHemh};Ui#_v?BG-uNmq73FV*>k!arlMv;vR&(V(U-uR$Et>Jp468+mF3- zBj+veOGB>+Z4=#o!uIes?*V6t)E?y}_7xsN$GSi2wP&}5d^Zsez)5fRrsewQC-@va z*dHaBT|xlnp_27DTFB2{#Bu90Nb2?gN0we~+2SpDt+adYEf`o(SLfiqN8!N}GepA9 zX*qI&HN!hvwLgA3Er*|uxU5{=4Tc$)xFd#nQ`qj$kuQu$Hr79=CQ4UqiUk?&iknRt zmjB*|N%B-4-`)z-^34sfJ|X&G9KmNYR#WJ|g5fh6Jp5?r#GS^VpkS!+KB)HzArl4? z&$XTahBs99LB}Yk)c`1qxO5z~fdD-?AC~V)5)AKWX3$jNlbK#4C0PEr7i{09fcYuk zLw}i&s$!bJ8I@%Vc*J{^cy%-%7ff{k|CJg4Qwpj;YD%&<3xItj{o&0S!p;#`ik(3M zxVn|;U6LIH9ilWmPp0E~Kq2cGDqnzJqY)tC9GHQhh0B=7d;s>EhItm@)WaGpj)Ws7 z%b3yt4aa9sSLZK=I`5W!i!RAY5_GBZiHaNde>4KU=AeG(_@A(Td{^=)uT%X*LDb4=`( z#}~Y8q3JJTDoI#RFzT=((G{YK#AAWd%4XTrl90?hL#EgV;5T1zV~kUxb{@H;Ub3Rz+<*+B3wQ8ReD~4E8Q`amjYs=n z1r*+Z*8V}t6P8{`0LpL?9vbmY7G4b^L|*}kl@i}DMTa8Vs<~K8^UD9+U#H)1Vx3h_ z)dgY*KcqXoHW_U^!+ac*iw7?B+QqpY*MbR#uHmewA2_fC6{tuYJU3rmI+~|^zwvqN zljugZTWwcn#C@&WTbS*^qCMUoF2EOcc`i~cFWDY>+?0KAE*kVDUyOTfWLr66R18y+ zTKNYXuRI(X*i*^B7A47b(hPPpvEDP5?xei#JjBH_IswaU;wn%TND2C@O75F&eAIH~ zd+YQAeHuyb?QX7bas$CAZCUsQ_JWa^&Mjw9r#!bzbEq_~xp+iR8w9@&G!4Ks)%DYw z+w{$IOwYS6oj`K~%_#}rP5m+wg!H+?bjPFt++>2hw-(X~UQN;;bqsq#PF#=`J}8_^8I zTrn4vLc1MbJ2|GqD)N9^(gYlry2a&_2T=S!p3H?;@g)4PIfw4I`z#&iJE1{)NUN@Y z-DIUQ%AleaoU7*WC7MuP@g42o4=>|?zc(WeqM=rhm&oh@0 z^F;nxb?kq8hc9#wx}EJ~pKc$Af>I6zxq$@b4}owcxyXaI{mRsfK^LWNcAl;E7C8u; z1cIqQjOJ89gF>ASK@#WfZVsdTP1B>3F7Qz}&aek(SnJb>;jAR8MtE%Fed&=^!1C=m-Bw7~=(mT*v%_*aM@Qf#Ta(#xOAMpFlvB#{gKrTx5MY=X7oCR z^WgUUzt!4}Tq6Yb1r*muizJ>)7`e@KeNWqs21WA{;|bio51i5Wd46=9b{JuvLMj+PHz%L5 zxEy>Tp`}Z*I^fTE!#=}0T^XwwIw`$e8AU&PntlNXZ~fw7*7pLj1wmrXFiS6iinjB2 z3u8qt22Kh+K*B#K4@gq%4=g`db^s=$o@mfK%q`I~T&!(?IQ7TmF@bg`5&Vg0Fg!rvo>o$T*IXwIqYlVrmUeytCv0r%-aXHbtsz1y=L={~^TX9g$ z_K1!;i@kX7p_2+tN3qU@29)9@Zip4ghdUEixT47*c?74NK)kCSceaCmBd};DfLL;U zpIym;n0IH8jzIqh7<6ZAYrp9%5Bq22(;-?%a87&Kprpt;{=uoKj{f~B#<*ghS}(d6 z`_b#xYW8Zgj^~Hx!=tNFP{o1A-(cSIJ-Es~?88o8@-;s>o*jY}&0Wj%6#cPSv`;Ni z)9d~A#Rf-E%%t_$yC46eFSuDWDIPO!|NML)-V|oIA*cu7mO@H+^2 zl?%7+P8Ki2Dv0g90A>zVtmXnCTQqI2IN{mKEE?|!2u`QvyXM0MMwGHH(oj94&7&@3 zb~~Z{?5(Rbb7Bp)4>0e&c#P_oX+sAgPq@5kP1~z*jd@5jNzSThL?w zK$|H9z!5t{;E7k|Hv0w$zjvhqeDL27gE+;tc~FY=YgeL!4$&(5J3MM%nqq%mFicF* z<9pcc_sXv7Q0R* znH-b6z&qH|iciTIB&S`vLsaH7TXZt3)m4vNl_>*X%Kkp5=U=mc8O~G!MNS6eUr&kO zrA3y<6cUvoey6zv2BrEYDuHiyeccg+jSZEAoy-g@pGTtnBp#^fg5ojPvS+M%$8-%tB+f>fx(OQ3g0 z`;TwU5ck%A1f~#R;=ygA&tl6EZH86;b88`LS{2$k#UXa}Dex7qpUEr@NN*~6 z17u7(WeK(R6grH2X>ZXykPlulfI*d%O%Qg(eHup5*?BaN+&MDjg7YCKY&I{57lT zzOyQbj1JdXB;$wT`8oNk;-GK7Xy5#KaRrOiweI9qrMQu24e`UrDw=PIVT!9DRn}>H zXQGe$Q2l$29vxoxN{;q}sNfPlysR36RcEeiajq*=)^R4>5*!75%-A9Ia)i7B$rP+V z)7usQZDi~P0-%G_8*p~pC#0|UAT#T~ycb9@^^fDV8w6i|X~iy`CE5TqqJ(}&Nms%t zu4VCPd!)Iaac7OzhrZ@CXlc8Ts#s=(HCDU|Do?mV$ z0v}hr`4y^5UH6nf%|{Lwhqh(BksG(c#Z3xM=e45JFN?sMT42+haqZ?5*?PEm2Q)vp?{wtJ?MH3ZLVr zePLGWoHG9Fy^$X}41K?&pY;}erW?=VJgZ6rL9|h+H^ac~yw7JDgOssyN-L8fKS5P6 za3V6(?ET&G$DLH)oMgh>i%cE4maa?qQDn2eLAIy}z@GG=3tDdDz|+}-ZK55yepVor z?EEgn)-8_fRGcvT8nR#{u+$2Wv-pqSgW@8x;G*B}I^ZKao_)-%MHyb%%GaOL$fb7l zX;1ChT?{R@O|?SY73v>74Jd?B=pQG+%mbEXp25nK3{;`thp6v=_)}RIEjPT(?7%`7 z<~MNGbsn+Si2Ss|!xVX8M|EIDS-F2!owTd8aJF#%ut_||VECI>QYu^tWl+*#Djuy{ zWcg^IhRJ0h>E6Xs?37J5eZd!G_Ed$-yeQ)Sj8aequavnN4xcA=Gy#e1gM0H_*&k2& z&Rap8Ye<+$Nh4<=zVH|+33}T2Vg#-WnF+mSQ|jRDn@eCkybCyjy0)P=-uP4*u(hRG zVs(kX{|?7G0{IibBBr1jKxHZSb06UGge6=AP5*PZU|+~=r%187ir~9Hq+ZbONzjKo zbceov@jGs6@NySjW%!7S0|Uw+7%+JrFewT0cfYMh+u6rD101T0AHp zV#?&5Ld8#LX)oEo)Bf$WyO=>0f|6f-TX6j$4T$96*ug(7q`%c5VXcmKT=@DLz9$SI zRza>h1fjzZ(P&keYTXW(T!@vP>`IV-OpEl?_!Wm$t@Iu`x>s}9DsP#{_A0)1VPKHS zm!EIBhJ;Mt;zrppIkR7Uj>WcZS9?G&seNB2zZoN{5hibGWh)!Y+4Fg$@l&~O&2hZ!lmfbN^&<8!pf}-+04khmkndg39SYy+F-5z_+)0EZU6q#w3NeI}sGSjSL1 zpKSA-JbJSa^Y-WN?KMDi*nZ0yfJ^SL_9kf%_A8I|fk#KktFGIHh*h+M{B3(QTae4h&D&o_M`BN1Y{3Xt^SFN^NsvXUMa2fY+yu?(8ZVNio9CkNNoP=;?zvq7*CxxBEJv*7;ZvcJ#%)Ja1&H%i3NBQ<4 zW#%ddg^0WbmV<5hiMT&m?)0@yqAxVRkEV>_W4jy1pN&&Th$ieH)bZox=uJ1z>&VAW zYcjc)aTAtQO$-jD{S{g!k*`Qk{W+;aXn@QiWb3Z>?}R7sZ-Ja5s0;!y2w(glob3a? z9HTkwgx(U-?EE#*^wR!gI`AXrF<6UufHss0fShmGG4ultX~3XW!310%7u*2O2D_`ZpayUQR@_X`07Eyx$nrF?0oa$H zfZ+aW805Xhqc9=_%eXB5%z&cjR{>c|Nvp1QV^0?1?Dx{tfkmX-L)JH@FR5ay4`;fJ zL0aIgB?6_M?Vcgy?dT!no;F>9%!c%6k2I|w&f6l6EG^ZvX?ouOAG z+TgrpRHJj=eEf9fQ^Gp|YuxhpOU(gb(6tqEyJ}6|b>Mt!=f>Y;Ny~0h69NKmw*<^7 z>Bul8EP@OTE6fH$zH>a-yGY-C1w0-nTV0JC0Er=hk7i8Z8YDP-2VRq{Z%@Coefqda zv~v%Bf+qAj7yz%RaJ->lO^f$Wliyn8m)^=fl7hZXh8tcN-oKvK`6gK`6XV2HSIo5~ z`++!>Mx!EqvnCSPV6^WYlvU%e$T6-TvZt8RRY;s|Z!$|l2FU78TV7sSv*PQRpSP#v z<#iBh*%=qn?|1Bw(cL-j$-(sOjOaX)BE;B=G8Hw$KP?iE z?ArPh$vFRDUru`>4l}+3$@Cb(_>Ll%J`C#$~gGYV2$G82bdEJp=sj%9?7? zDW1kVz+31}kUg>ZZ|3hLM2s(9sIbL(!&;eB>ixd8A#fkbMapM@iFv;JYobuXVJKm{ zPSRhqj?AL~|0qC)^#WiQhxxM?{D#r?gHQo{9_%mBhy;`l7_IE{jjI&w=)fK>&1KOz zJitfAj4;Q;vPFgsaN*5#3|(yYG8f*ABNtqwQn^-4Wr#bbId!@kBff%9u;Fp zipUZ!e-}1pqJz?vS5qSpUPkIL1SImaOep{PxvIMRo^CoQSoUnPYPrAC+G=h+qm zX74Xz!ypw7y-vro_X`Th;legHub zmtH6E+?7`03moflR2>eO4gf`u0CO(zgSfOFw$=x*+?uDr{Y<&R@xX(P0xh(f@|G8k z5~jsIQwg)HyaK$Cod*GKc(T1H-bRQoI?1SmCRB<4)_m7=dY=Nh1`l?|13Tl004#{$ zj%eh?7U%-Q@mb(N`Xnyb1-Sk`-w3GQ{I>~1e82(QUr!Yi@_I9VElP`q{9=C~RUv%f z-vLazzQvfA@BKbRh7vv+!eQ?N)Q&)(@cWM-x*J+(xbq<4KM(NJB>JX=1b6K8H#Wd2 z23+XCx$Y<6E*8anfEF&oq+nlNAy{@ppI85eyxNe7G<=!^ADN5M9mgFZUot2rSu#D| zvGqlq{}>!_two7Vpx%~&M$9zv4iWEFN1hYXC{7^ZFc+Vb?P7yG+kDo`E7wrBrj%7c}jsB#iIH1^K|2Q@&|}Zks%etS1uJM`$t7 zf#HWt!iR7hp3im%QeNe1_r%uJ?|if~FOG|f5^QL#ujIuk;q?&mYI~@b2S#13M14C)EZP?cU&#aBN`A!i5SGja;H@z7yuqJ!kA52Gkf|<( z_-w<5leF9HtA4P(+$gz$XrKN2qzivkDEIXAm2ycCA`6b1u$-q2n>1)y*xh2jsXt{@dl84iX`UyZW@m!&JNfPpJH;6 z^zN)`Tt=4VMYax~lLu_Q%I_Z|0bR2Nx%tPrd1m6iwhhBW2#7!byZ0!!9`($CuOedM zSd+Q=6gjWVrtP~rm=g8cl)a$Qa|c0|K6j`t+iud)E4?MIj~?(xhEiiHUOUp zOopFeQ-n8d!=DsLB+}fmyFp4*itKi8rng!-;vs!uf@wtRc^@?K7EghA-Ed$YtaI}PW@PK38Upj&R&AVfvJEw5b5OALc*eED6X%j z!g$!15>F_6O2fDM zuB*E%73M-&u}Lb_#75}Kh?cQeeHo@Vur0nD1*#M&{q&hZX zrn@N|95tUE$(HCt4jm#cBd5U_stf6iPC)icl;&qRCKJQG;3q2nh$xIXBmYr;U=I-# z&Q547EaipG!iVu|d)neM&T`AVSwi*QlQ!i!t@apCkkBA{qQeKu1qyl%_uP#~hYW(t z$pabxWpH!AGU%oOAOnB|t*6O#$$oY_YpiX)%m*tkOm%!rj4#um~l*%aVcdd#NC$D5S`}b&u_^g`ps=iSUx0P-sl^{1+dPO|zP#@PXEt zkC?6Pyu0uE(oeyJ zCv@oC_nTi1?)FLNS6!)_Qc zUFMktPA8o2zm@!~cnjmCSAe~TvE9|uu4Z-*^rlz^3yxVcxw90fOFPINhO>KHW(1Tk ziXp3F;@~r8Myw6G}}}rejS#!SBYmsyWG3K zwuFEp68y*w^Zt~_g8DGxz+uZ{#G4$zqlg(MG2*=2MIhlOrI~c#{XT@x&fV9EMjoo( zE*qg0tH8Gqq8upf6=^5sL))(O4gKf}tB?=Vz}Gk6e#LcCa~*WIoxNYJ2?Cza@4(Vy zjW;*U^YojHW^TxM(B5R-k$BIJ;^XU4k#Qe&gY{=51ZfCyW8(J_upE**|L<{u|g&rzyoXEz%PnN zlDrFt0RdyP@K9WC6&DI-m}$2n$z`%N8m6Zm<+~zGCg)43{H$=ZYM+cBZ;HN*ELG%H z^3bB-N0;DR!sw{>s79^IUhkc}+9RvSdD$aqEvjN&TzU2;1Xs1vcUGjkEgb9l>^6#? zV(1j)c_9;C-wjWyI6{d&kx@NG*Fg_Ryc1jTnG|Y3B)ta*ZkWT_TAglsEGNbFa+*J0*7c?JDw zvAN%^czb#hJJZHb-*0D!`^FG^R(RSeaAxIaOC? zi{0~wtgl0(dBLpHRF5dr_nnmL@`^|uxoqmQ7Nzilv%&xnXD9Xq`4P1Th$GJ3S8ri5 zs3K)Wx8^QO{bG9{`TI`m?kD8}&d`m_dz2s>h6TX-L?*#j0UjWM6ve7ChP9(PQSuq4 z!aQMz6ul1^7+d@+gC6ejnFC=yNbmE2N+c zfW@kH2Feb?z1uz1+UB@ACd*!@fcT3W{RGCb)-+ZU4?zRq$XZ}~H#o4_q=7ofyr<__3DZ~FQ_Z@R?hhu?V6 zT$`wJD@B%fUTqjRFV2Raqb^=}{1y7{LOwX4iElzj@+4s<%~Cuk79M}T6>`?fVbR7I z6^F}1A^D-U_+e7?)2r0N*WQTLso+KB>%H$2$J_x|^KhA7@-LCXYq*vyalQ3 z;h`J_OfVqYPq^d^T3spjR<&rjdN<$*=f4op;h!2#T42j!6w-?l$6P>N!(@Ec;P3X^$hBX3-jHYz%>x?u z>mvk()vv0bzENIv?@01j{Yot5q>N%Xkq-#Uv**kG5ZoR_X^1^`ow9KJP)3gG!_ulE z_gV2J1b6I?muv!RhP8f&^5z_DeUjD4*bQ93ZEDVZ)Bm6NJcA0EzoNyIIK;0=rLnkZ#nAJ<_ zpwXS-(D{b=-A5+fumqza8xMc~l^?rqwTZhWB$xeHwHj>Oq1RIfq*{K~q>NM|!k9wHNTbfv39?!0+?p>G*I38*>_)FX2D{F&Dn5M+;|3#>m%7cS({^is-0;?5=}!!X4`MVL%UCf@fCF%(~>p%uma<$RcSyM;as!<+Zu0; ze>@J9ms&lIzs9MpC(dr{)MTlJu3nbr1qjQ1L;fx?8T4d$rDQG)U&?bfLr}d3Gjcq^ z%__wIPK;lVK)MPpC49lw?4ZH+dxl~&m*{M{)TC$Msq7r2t)Oh#4Dv9)jez7Z(KKUb zvr>geQgb$5X1T8|4_w{1zNRL6l%cXd0fpBesvN zZMAoN2roW{2F_iD+CYq7BBKoN|^O>qWSW9?SD4dCU?wHX|2b8%p4AeA`R{A z8#xNSRpP(f7y~ir68Rd|5<1)|n56y8i~RvbP!8NWER*krTOZBBBnj4d;$+~lL>&z*h zdF9<{R0uZU&)oqlgD`}|H2^oh?h-OByAM19^>@XiNz|%e+<-m3u2SI-Z+Tx0@03;1 zjpOulsnX1KztH`od3VdMV2hTb%@{&MW340Q{2RYkt6A&vt3M6KDj|Zva5+}fp$;LY zugNJL-6`E^cE}(8-E1F7VAESswt!yOdaN1P2cP903++9?@+=6+D-!sU+$9WiM4qaF z9f%X0woA`ibizsoOKxHNO0xdX{)#BS&w&0XnUtAcy*9uVi3+}iZ1s423s8m#19y=a zAGd*&XDitLkI>-q4Q3hin8 zA@!6b+3t3$BCxHVB!f_!oTCl$;Tg${TIZgNxFL`YDN{B91;Wlw30<~<-mM2<E6%Q)&pD>|AdQT>@+cPtTyW_vZ;x^4J;$mohYOlz3X?1+!jX6`COI z-9olQXOJC%H59>WfUgB%YysG@0EVgnHrWr){@f_Po&Y(1;0}?M;@^7`{tF-*KS6w& zLBfTRS1h;0vBC0bXy|C^)1YAXTiBT`Lq0IaOixVIW$vzVh|iLCmvd;IOwD`##=(-G zEJeEgHZ9R1sKsv+rR+@YUH9?)O&}4EisUCdH7;k8*3fgsO)9~Qwu&Q`Sp;c0Y;75b}2KQljY#Sm_CH!{epFr>c>6LQRo z7sW%~y}DZpeY^8DDP6Lr9Ao^TPcUB1GctcKIV+Fc+`WC#Jy#J%nM6uD$r3zY23q2VbGGU~jdJKjCL?LT(I-Hk#!YkFJQvAyJ~3wOX@=!a zQ;aog5hdYHl%RIaCik~62ttQ{w?>8<8&44%i?Vu|eZXSx_29bT*HH|APY-2i$Kw0g zRr^mztR((aNm9*Ev9$OUAfA15RgXm-KjTCioJ4pkKCMcc4#HFH4VZ^&9o*WQrnA|M z@*rmSM=prWju@Z#^*-Vb7SE~%$xA|J%)N@l2_6`~Lil81ks$aw*>H-k5}y>u5I{x2 zi5W*{B$+Bv+sfB7wLY1_dqtCA@n(g+)3BAzKWW@xK=zGImN=cf^qZ6w2*?i*2O4U= z+d)|k^)rm_*-M-@jG?AxoQd4VT^It8T_&G2a*{-%l)A;{^VhpL7W<16ON;yIuGJf~ z(>AVnuY$H2hxI>&V%?cW#FF=$iQ+w|_z2TiNILouI(93b_2&*{X_`eg9TZ&zbL8Ng z@BrO}FJE&ZTYOjM&{JhVP}3Fn6cDd4mQd zXH)eJ6A>2QUrwojWRlUl8HR=^6{dLkE8ga5d6miF1#*>8XLt6zyUgs^D+RU|WF5pJ z#6P@OTK`$5KSZ1TvaX3h^~1iY?9yK?(DxM}ABNKQi04?OUhH)&;Y1}89%0p%Z zZS{S*@q~Wo;AD(#GcJ=m_H-Rz<^GReN;*^M9)nu$CB)qC`|*+7(kEUBB+|SQmmT_0 z|54hNnv$B9EU&qzHHNfjk%V3rRg08S#Brf1HoJ#9i0(@#!_V&kbt-xJha%MH8Z3^r zW_5mYdycKkpwtMZ;Uf9mZ{@U0crG;oCIQH5TysAIT#i1A#>g3ECA}s3aExxkzq;)n z%q&U}o52^u|Kn5p9Vx8DJE#iM5uiNmrI{K1i4!T)E#;Ai5pj;L{#EbGkqcAyn?1n5 z_F41l9ed5&Qj+!E-&`mySQ$8_q^chxR>UQ^+%->Prn0l>-z#qixs`RDvHBAzC{H5` z6w5>TzFiLjcOclA`JvKgdkK53J)SD};c%dlq+Y44R?c$~>0E79FFs2R(de7XNoA|r z6wx0JYD;N#G9n|tnO2By?UWYVVV9pN`VN!1Onn6)Ve>|Rf&n zJ+tUK`aFO}v#ao_!z7u?ZH-t;x6YE0^ONIMlEEgRu3IF+?JG)d`~cHJHvG`-O(nGb}T^W_h7c(QD1f zPBu`=$DnBARKl?l_t1ZA>V)AmFPkS2eE^al?)fw0beT&KZ`d#lC4JOfLhlZ5tbVg@`<@>5G4R)NWP*yjs&uSD3GTMN5VEBo4* zC$o3gZg25jIh?_g#T}mq)PkiTy9w1nqS;Qa+#p(-{HePhzh_1TRfu#Rjgu>W{qF$3 zhIa-pc@&3`B=oDfQDmB8fBJ30-B8|(yYDDu5$ds3avmcneut?26okqywcHyRPib0w zp;G2`F<2vsYS_R3MQ3%BNOyJTb)D$+j*kqe`aZ2R^P-DF1r16P|9T;K{D z9fL$^nl8YxZQHhO+qP}nxMSP4ZQC<p$@AK{MkE+Z{MMrdWN8{AVr*fFrxR-Xm#k6<3@SfLS5lslH+yf!tg9`f z;rM=Y!POP-dCvD%ppAc=OqzOAaNU@2Rt3f+EBj5W*=;8EIvEAMM0FSaW#pA#%_F@L z6eX6b2Qnl4h3D~jpUniL*H@y2!7nmzU#5rDu>ee#Yv>yIK1)iIMr$q zSs)uY{cjtW`B_O+>-OXX0}^%L`4n^ObMAIZg82ZglAUN6}boU{RetG9*X2|{NlXH84=P#?DVS9WxNazBcj7RoIWM^?~LfOFub4#eoT72&%VI>xE2X?jzZ7kjk}xYK(9$_CD3_M zVxb96C76Nh-ZxR3xsL7>0TxaCGnhJz*Lh>r4O1AM_{>a9rAwjNhF9KiGj8|8l<^Iy zjS)YUOM<%C<|kN2KDHVUsQh2#uF7il=wroi=dnn?qmLXK9rLo&ua?__=$CoP4xnwf zzoU7A_LZ~93V;1ch3iFN6{bS$vY2#*{niW%E9{II!URmr5F#3VL7$k`iL&uaFc3{s z&b`=cnWXqQG-k`$nS%R<9+wXH zh|4dr3l!3qN=m)hwpZ=!x-oh7A&IFRYX?2Mo2KS^>Qj`Gsi~@Yy=;cJ!@gsqA~LnZ zCo*%aNKwg@$(SpNcGy;e;bo<%yLx9zff89}rL8GF@ZXv=hs!VdeaBOyW`~%vn;ubl zry53!DQZU~C%~8b_wk~^Bs2CQOWn-vedNzPk==`VB|I4uuW!HW{(V{ZRKi7T;q1WG zk`g2R(pY-(6k)`OPCTrZCnBXO38lUSAGZs0kxBLhmAEsG)#xh+{B<3n@3=aF%Gbc^ z#fn{IYqM+&ojpz2UjkdlW}Z3U7K%ht3Nw1>j-JA(&Z5Po zjY!xD5q$rbslXQ+^m{Y9w;P$WeljNC*Eg5!JTeouEOTT*O%_~3BTZzPN39(=!g>hvy9nSUE3{IdUXnu0hT!{AgO;J)?=}7bI=HGAdgZpb+8Idpqj@yX!X4dr z!=dDt2m+T3gFlK6nl?;{Qmf(M7tj`Zk+!vtT1g1$g9!ZU zkA~&+I%$!2F_}kb)}uD4b=*n^+98e!3n3EY5Hdq>MiI$uP_oZribEI3oF4L>1GWP0 zICe5)0!QK)51|P&dr1ghg$@E>`(nt&_%(p`43o(7_B=_@4EznZ63miu!X8PRHNpv- zFCTPyO$RBPhx$~&ljOwGw7sw(L(u8P0Fr@em9XLxEPKbkpsz=iM>g$tTRSL*o6<2f zh&8(jDdUHTeTpV#3`0?xy2g&LXq!FFuj~r$Qrw;rVU*?zrj@pS_|71V0J^C~0XX2J zSiL8W1|7wqiS`C!-yzsr3(8Ym%&-pJ4y|?*N2o9fOi7N4s zp7FXm4^r@ECjAhDHd26{^3(!~2rdJPnI`2f0E-Ol8#xH*t!d}L2gTKcv(6_?p!0&Q zCi5clxQZuW6Ts}BMkr$TX6}gOYUo0Ood`U@TZ=$?;lxKBYs5yiA;;d6MEU?7JB;mc zAC5r4vF$lz6qMHzWwYU_cg<{jk~gRm$F*m*OUA2+*6XgN_tx7H1!M@tEbG~QY0soy zvan2(a?=smM+Y@+OuSYpjzY~isL_Q0<8uf_E6^qBd}bgW5N`X4sNeGR#dY}-0H|p6 z!br+4Z|3+yj@h@!sm9-~^gO``I9Zl$3zXe5FY7@u1q+6>2n0Lt+`(z@z zBqu@Fh4C#vQbt4r0}x4%!*ah5pswbS|Kj^QQB032HhW$udJUP5NAN~&YoQ39FuN~X0E)P5CbzNo{x%?w%l&eAIM2O|YlzDZV^@yi} z>Y9X3PzDFjRg045s2k)3(_vifaRJM3l5B`ZxDpH374N4Dv(&HX=aZK&?h)FFo*JhaxMx>Uf%g+|ABh|pIf^W!rnb))ti*MAqZ}dbgLW31$rIASD1uzT( zwOr+gjSOg@(;{xIjl{mj^uClv>h9`V`VkUYqi#s` zEIb-KMM|O996h!R$3~~xW6*}FpVA&W#KO24%D}jpE3jq69oRa0?dR{`16fBc?XM!_ z?3R&NK`Yz)RW$qmO}lWbXtzEWtsdA#ra&(`7IUG`zh}$rcf9D7L;o87&-kB5w?7w} z`ORrAlo#uE)h4Y3D@FHf)R9L_nB~U=brxL88f*dWyD9U2`elC{-aOs`DOd}DHI6lU zGYY=~AgM2UBu#^i6rl}cbI|EPv3c&`^e?BL%?nEw?~Ivz)5cP++e@=HyID6i6S8qY z5~JmDaA=Ay5L-hZ#%p7`dktG!CgQ62M3-BvDSrHdfhaQ=Y{%%@yhA9LxyY2f_}rc#E1Qz43Rihey5cqSWLy}V zK|vwhp@Co(6YA{(aH-~vM|V7$WCnz(e*L52+WWMK=?f(&{3*0 z0vb?6@sJ`1EVw|1GZ$8FWu<|`7_q>_`#Lu9qXJ}`tiC1)LpHp#K+w%?FvxhqBfu;! z0DKPVU=ioA2H=C<%)Un5-p186)654~vNe4E%HVF zsjZgu<&03{hgeCOd$vjcZuUl}S{%rIhvz6SSpOtH)}X&|#o#&wMB}WcE&0v_v`wDO zFIZFg0DM(=Qi;6|#;(hA9^#!AU9egd7w+x@Jw?XJOn1z4^UC^Z*#n`MeMJTw$WIE@)=IWW|EG9@M|5xQl zM&>sNZs$z~JxLQVn0V@c9>MH?iyxaLeE^nB?6n@G8OzBDyqPoqw5aZNi~jwx5K@Nr z)=))Rxrch_h}9V4qmJDJ@tw{+7m{|uS?!15mh!`yEO-#h)Q$T{1$YNT?8rBW4 zq-zo)GFqnln&eHhTOkudKDFg;>f%Kq84M6@08VrjWELM~_44aOK#A|I4Ic?Dr zH%bAd*>8(oKgA^{EBWlUm$DEHj)@;w1y{Q^ziv<6pVY+VrdQB@$?rlxD#KZO8~&>M zx~SJ!`FU=>Z2cCOGkWa@Y`Fzx=ae-f3obTd$^7-V)TyartM^UCE+XQ336*m@M#1cT zH`A#z<320#AMMon$(NI~!e7C36_e5;8fE@_H9xe^v9QY~X`U;thKH{7@Li#$e@5#Bmi{3l2F7aNwm{HC*CJa3JAo z2cI`|(de(W%Ax>5IlteAFaSDio)GazRuRjWZ1&s4N?u?;Eg;{nQPAbEZ;edM`R8ADqY1@0;RVs*&V-_;0EKdGjHJvL zI>jrX|EPv-vI~?q(VSuREU;2o7z<+LEIKG6GMZ4)sUAGdj2-WU;*s{U>_<8{adtE_ z3f<6UC0#}y9Ze>P>l)Dw#X}=DFD9l>K~zZ`tfc@gL?l*_Y zhJ#z3Zu)jgZlPtTqTaL9CYR3kS5WnzoHzb&Rm-%_qswLR=(5413;Lh`_h>vjoBz)b zGw}b0(PfoY!LZ4v%`A=l|Cz8pHvgslnt|Bl)!}|i|3;zy)`Y7A*39s*?Yuk|fEli7Kk zyrbX$^j$<+Ig3MIR`sgP(oRr+r7L}IWliwF*)U=1Ax~g8Y9bjn$Y`I?Kr7NhX%T19 zjsjAKOuhDAwM%5T5yBS|lYzZU%Va0}MuRW35khwpf9PJ-mtk=ZIZ3}1x%l2=s&1=` zO_5?MII5?t%>tOVPBzPL_}bo74+SsVp%(=*d@_AL>3hTrwr6_*Vgp>(CM;1DNehbY z1wQ+(KD*NObcoZn{oGFev`OJ-VxCGpLcgYvnT0#{d%8{J!yYsF1Q{pI42Ac1)kXwup`HWZCZAmoh(`ONd2gV90;P(4Otk{ zI;Sw+qZUeu?+COc=%YoycX_-jKdcY&l-9h+?<8%yCVy4M|dpOm*?lynQdnH)j39&wP%5GXN`BT%^9 z;1RjPF!}Vk`brTg*biL_pkWA7g5Zm35$nmxhYZO5e9bX0RqWnzl00z;9rX8@Ei4pu zY2ZVqP)Cvb1EV>1Wd#J+L)`ZjQyQ~{HeHRK^QvFb7*>KqZpM^2p*nJ2i7`F=LcKl; zaBbfoPKOE&9UrVCRioJI%9U`5^UjKB-Gi1C(FoBI=8o-v`eNtSj*f3E-5&Z)A)oGo z{kX}*^f0F#KF@JV`%C7-X;*J~Bt}yMbp=f-@pZge)n?FTQf7aUJ=Aat7Dt$Zo7xen zIcY7q#-Z!%sRBH6muhzaQY+O^QC+y)>b%Mm(ctbXorQg5jkiV_P9i+%311u|dl<${ zr)quo?0Azui=tdxHz=FL0K11k(zTA)7*<1m0}fPSWNsn{#1%_(gI@o|3WGwk-r3Ht zDF4kt=h&SDWlP2Oq0(j3*#zUes z+Ptr`e$q)QvojofCP-m58BbW7VDVZwqE$Fk{`??IQ$ShM=z1$%wPv)!F)|Cldh&8Q zoS^7bT z_vj$m0(koKb0ubY0ZmRHZe`zf7tbuedQJKFRYrHPKF|%}CgGYK#JVVvI>)j_YlpQiO2pam_Rx^78#}ROqPV&Jl|a1~ zYKFY{Vb3$@&<}KuS#UY+GPi!@(8*uptz|pR^>E5ayyWei_VK z`=~J!XtVz=aN%Ywxox0kYbQ$IrxL9!xTMj-DyoHH6WdWOuMc7c@j9i7A&Sa@uKc;0 zfh$|)pAilsOXug@K{C}G>Bx>!rNXeExB{LZhT3x5EAU5uo76?vDbs%aGykJZ*o0iR zRFWoOOd2Buo&S(Ds|`|$P_iT~^bgnLe$g{*&1YY>a^Xro`P({3=eTzBhalWzkfYp_~PzRap7n!5LOmRc+p+y~Q zFC|ix?`uc^r!Q<)Bs@4E&DR>$83{EEjf{`@WT3Pm^lHj+KrR4Sud{;`mPWSKu1siCBB^w}VONk)t*q$< zvYb|RGhC>3GHWpLL>T}_NLQ9cp>iIe-pDYu=_1Jv_OZW}^D%7;$HtQ{7E@}NM9rSt z*d8k?foyKcX8*SfxOaQ~kXi?P!?2|S_sdKCDq%8J-LXOFugeIXxYRD8FbICoT`$Wy ziG(z$k{E%3)LNn#N7e``E+@5;YO_gkz3n+UeYstLkIq1;iXWb+;k)O|mbwkm$hIAb zBm;#h2~lR(9c;GSI%q-UWu4u2@D-*VCvlA3)c3TFelsKr$Q9tqpKZ{6`Bt%_h19MG zKeYDqzKO9AkZPgz@H)njLp!Dt-Ygs6JD{iwo)V7K+YY&qa~OrDU8L>s+4@=qMp?wT z?Ty3>Ko@5m#fP$3ag=j39PEABXM+Gpyjfv>-6+EE|DjdV?3_LaF`H=7{|$xxaxNzN zqnGmiW3;uUK@D*vZ~+fH1oH0(ccF(OE+;>e`J2#)$0(Se@14iXAV_{<&jY**l#^&p z1#O8feUdYMf9`pYiWZSP&R?QLYs3_flqNZ9N6;gkmgXE*!zV!6meLTzj&BQx4GKU=Wx-kH4L8z)u_-@*7&7JqCxP zk!o8t0V)b-N_r+Le33pEG;P;Lvs=mQD}#V<;G!%bvy1X z57Npny8lzx=uap+UY+0R+ysS;K--=eK|XqZM+8AbSzwUtmQPKDnYKq{e6Wh7Rw=?s zclh5>cG-dBK6Y~V;oaz-k?~lwHa(#RWmBg(xjhJOJcdF2*}lZfS}KDSZZIXo>uzA) zhjHO!EAx!g-Cw+knl2!yX;hQ1+s`Z+9$D0Eu!0=p8p7%i^a;%|lHKw6geNSp>W@aU zh>2dOGyC2~g$5UCJRP8KC&^C-wmLW>9OpH|&^<(Hv+u!*EX_Zodyw&0dO+7x{xe^U z01yk6?%8AOLA(Jzk%bUc{Sw3Ut^mDWFZncMv{`DHxl{F9MgLi2QOhiN%kKL^4#ZlF z64?2SDmem=AV*Db<|E@%8prY=n9&CSR^AfBW&#LvdClh&MQ9iF@f@>ch*hUVffp$a zU1{|U^lWh5V-K`69G7?0Ntj@`keaBVe1!?e4}e~YPSlCf`v4u!W3^|DJ-O*W0z0=s z){c)9@?g6j)DPZf_^5tJgh2DW+m_{z$Hz$;kh{8c%FrCRLDMB^p13^*CuOQGP|sZ3 z6o}@)t@5Va`3h^=mK{z~nHJjNsnQbK7TUq7)SsI2o3_n5#vAtaxoesaC01MQSLg?{ z;KqUj=OCAJzuUR;HIx)4FbbFoDb}d!4f0~dLTp1Q^KCXg$2bDTJsCv)FleMOAi0I} zaUV>i{DH`U-g0wFAHI$cuwrWNGOdE}wnwMW7_^iZO&0@nXE#r#_S5TJ057g-ydHf1 zYAh?A=$l1ZTRcR=msIqh|DY&eFV^C#>^dEUD@qwwcd}H;@~z;Q{nj<{5$07Z`!(Ga3e zs}&OWP;a4LmWciGI0tYtUd3_(y}mOhAC?7whdf0`xEP}a(+yln@rE6XL7q)lIO{S^ z({aX-He0NQbef<9emK6evmfXV)gs@f7f@IY1#@t&6rwXwMQ?3vkEuO-tQm;53SAfP z&>}RCF`rYCy*1TW$2HpFV@C$CU8Ed&^ayQIwAoD=$J$<8NvfG{sbU#AO`kJ^6%)@f zJz0Yq26J9@WW(7%!#3c0vTIV|^0y|ZJB2XI-NjjwM3ycgr(Cn!!JTNv9w{Q6oGx+( z7`)sJo@zj@#SibuWdW743Kdg(FS{f!A5_n&Sxer-B@@$~Q8%5Jhc#bY_%T6u`R%FF zOI&fMy9QT08JDBq5FLVSeaO-10Xd(36JeB_B5pk5uX|gmP++Bf)iG=PYCYw*Gg#-D zXa6(S{jY7SDNJMSL?UBax3*zKXFP3WQVMc*y57h?JK9)9whWZ<$Za=lXHCwBR`4Q3 zW!dhVwI>xyFfDgAR8YmGjT3{YuEAr4&K*oMJw%7%d}tUlQiMWF46Ja0%c+R|A0$&c z+fQbd4ymE+&OsU6|C()O6)8^y?YUN#KBqgu96N~#$2tvAZi1-dPZ3nQ37cr7-) zkK#w>Ux0#`3U)a*g~K#NXFji1FNKN>TO6A=y*VXymEk_htOZqrYC3_)6@C_8dj>pu zL$U(~okt68*+&8bVc()4WujG=yNcLdx&|vsPz5^Ou<&vg7d|_hP^1Nd&8EYRhzR4b zFrhdTVaL!RlpBMHHMnJgMc~KR0l^ay6Lka*D4`e@!E*$))>W~#>qU|seR7EbWNPiT zwPiiE7$hX)CW;4%)^v9*Ob^U# z5E(dGzoXvmN=&h6WS!O^*JHP>Qgs9(Ef>V=_*wh&??~*ZRrT+-ENz(K2TRWcT=2RNEoh;|`G$n2G#sl7XXye}!Ue&+2GyKxOVk~pT7h{r9 zH?)3QK`SK)fl zVIQg1QrLs{r9CElH}F&o$cj&sgFq1tgPut1ZzR;QMl)qlOQyI% zeXPK(duc|70M*iSQw2#LWE|L= zHO4{Guk)QLrf&Z+nb@qAIL3;kG2;1 zlGSn;k1e@q8?XD6G#HV#Q7!E_c=d^wfYg4f zTzyS7-DJjkQcG46(5<01pw^RIBq*0)rS&UC>YeT^x)RXeesn;q!vbr4+QY%ynOD`B zrt*WAK$_F>Dy;h0;FxdVTCNti(9Efvx}xT!WzS}c&M3{CY6LRt#E>!6qf~jV(kfZU z6(FCj2%IL=O32VohP1sR7eHUpT*FuAC17XIc7m5So+#DDdtHYskrO3^@QF8+;?{Fa z=K562$eji4osK2UQt+ii)kg1n*DoMS+p+zl{jkl^k=i>*hzfg{G#5(mjeSwG5-T z3Lk+ylGQbZ>mzN4V>sJI#_n_7Uis~ZI&`qZkF&z^0Fk^E_{Bwnjr-pIpqrcD$~PJm zI`xP;lzh_B;EE-xS-uu?AVqRH?ryBU1?|!53`>Zh!ut(pSA4rH8guya>xs zzWNtHY?h5hQ5PokC*pebds6$FN%Wb~_1L2G;mPEjJoh?Zy3lSfw#NeMLxG3s9iM8b zn=2$320Ja^F<$Y5g0S9B{L&3)`8q5v#J+!4AdHW@SLH}VnX zEAQR|fbZw1i*D6t@c_ssIRSlRkEB0$dv7Fp(MMvIOzili#q(xxD?bZssO^PFWIZy` zPhE@5S7|r3BAY%VO?%CXAs%&61ZE3ERFLQiU7fxHbU9rMJZ`zVKOTOnFK_A#{c_pD z<1g&{5D!5-k;!EpI^6c&&xUC7t&X5~yZZJ`xdlxTF907eD!}$Lr(;_!XEe0DyQTZcPGd`p5BBW6RT+^%Wbo(naFz$u zw@HiQW6>#kK0R$9WrdP22er!MbE$vLyPOo!f>&kr%)rT)&^1;YlhS(ohLdA^m;uk( z>}A06d=dfAiOCIYmKAPm@MNZbJLPMTZWEMbwj;1xw0ix$Bf-vH=ApsPEe?W}|2P^< z3YhJ!f>*rA&L@FLVjh>9FOLe=ROPfY#0X6{Wz|Ca!|!a#KO3a(1luW{FgB-56|xWq z<;cL+T|wC$xiOjHrij01g7Buu)Jt7}e_?;T7pJ4Xu4Ceedl9G2)EI2Mg+*081ZK1@ z0D~P7$RI-icIX;2fB=S}H?xX*k@rLwg`k!S$k!+I#GqY1LH2E1$cK{z%e9Z9uud8?bUEoqdE|;MCPocm|V92wGdR>c= zmx+n(nBOjf-rEC|0UP@tj!mHJhp)ELA{V|*#VNNvsxhPc4|z)AL2$Jz{Gt)wtPuhV zbEDJ&Z~1`FX~JjECqp5S0V5FqTSS9XclhSpj=G@fHZ0)UtzK_YH)G!8;DXD!ol+j> zc*XGa%Y<(7-!8d}nSV7lcT1UhrNuQVbf+-pvXiQ2Z&swPWUtPsjvW&;`symyIQQW8 zuHPR~a?$R}lBJ%SoI1GJ0@Yzg8aj{Ug#1H1cg=_qUwwOs%hVJ^6HLT%{k z1V~?Nz+A9e>J3b0h(F$RE6~h>oyE|2@cBzYWUFP;MDPMuiz)0}zT5Bh*+Yo$0oG=i z-P~5ii_=pOBc-$R!1dI4k2-_cg|9<(2OeJ@QI;kEI-yCZf@$<|`0tbd-)r3y$8OLQ zFItY5iv}KYL@b^EKdieh zYr`V>X`9|2mhU}pWU8IP(}cYGE^yC&{4*bmh73bR0%v-9)M`<-4vRaAtn73_t$CFft4xGj*jZkkdXh;0)v7QP6(pshu9_KMbdKm0K0 zJdX9j04pe8WHWOOIYX(VjOX%}fE8t}feT76uc+GY)2~{07#gQLgTa?k_bGMF$9!5l z#5F7syD%S$zST+VXo<@xtp2DWt@?v{P(E(Qbp#)+P)CVPz1%77ol!kFA~nOGS|o|W z4vPff_vmo@xt(sLT}es_BQLow^g%~|qD9H&?I$Dx=WLEGnHs$a;y?D1xszfXMzP9BT;P``Vva1dax z<`Ff*n^FkgSHsrXW4yslPf&D%c@i{NWGi_;4NcR5e*l{Tpp#*w0vLr^?Ok( z8bf4^*!NlLh3sJeb~$our>C))xjK}clLI^?MyTZO3sLEWvpOm`1v($d`6bo zKX`ULUE7}7477IW`Z99E|MDU9l~UnDY+l<=rw-kSFRpYL)l5l;b8!%E&Q8ZpMA(gi z)J^UtoYGrx^LH0~JwBwj-p8D>diPG@>wi12ZPZHise--#4BSt!Og3bwuP4g z@v(-n5J&>hne59}BZ2mRT-dasv%5;e&WE&{ zbhj^K5X$wAH~T9SJswP38YElFKAX>8gvJ^?3ss@NSbG*zum+!n7-q&F4gtCdg_Wnt zMR4Fm6%+kEO)E$iLYoo=E&B7>T78mjnm08l=5fvy%2Ni}7hcmb6G=t+e@J+cl{kUK zl6Vs!Ak1=&r~_T{-V&{_SvK*KH5{+~k9yXRco^i;*$xPTiOZOA?5AeUMBPPDL8_?9s=a;LX2j95UOn{>8+_uC$MGt(<} zr~`K}jd_P|IE#EhN+1D2wPTveP!xtJ2BJI=#HFK%k_r|%+teV63e&k}=Y{iec{)n* zn;P~Za@xa#gVu)!tNji`cyJqXyaNLV`O-F(z;l0ww@|`KC84%FNT|*}YA)qF+na}G znQLir)+C6ebp770PPbXn!Z_*I0r>3>7$2K^TdXb8e#Uev)kXtzLpX*E$j4=?c@|U+ z>PpM{Co%%$;Uh(}g9$AK#i_*{3oOp_J45O^$G^4}1h5Rp#7;d!y`KZfoSilhS@fPMK~@&)!R(kcu38v$!^Ig;*?XFTt-0p6C9fG(BB64iDnM}L%^RtpE8Xi zsS>f60d;_bK$hD+Hx~E%aiNf5Br|KQGHW(Qp;s*JGMBf zIf@J~n@XTl)@*PUSFzi%ou|0=QJwY&H@yXG;I%YufQ2@ikwX`3VLG_Ex(0>XarEg_ z{d@$EO6S|N9rse5qb06rz}4f|*3nlm<)7%xy-bH8GB`qYMfSLj@K_0eZEWkfH79EH{Mjp5@(dQ%e=HGYZ>o9g-txHP#EkHV@t= z(ZiFQUr@jM-wORsdaWqLWGURp4g4{Ze|fT?M^q86pUy4D}}?v&;qgZv9hnf4dgD)sD95hE)Xby5J3Od`JHOe6_p+9C@&5FUMfMpWe zOTl_@I&37tVc@2`QasZha}fzQ1q8@>WK8xRAu7gfW&56DLf~-$b8puNao~qmovM(! z1gYG_Al9j_WHjY`?FB2um$8 zxjAQGXA)EqO!$@-=yqjiE zTsQ8mneG@-5iGh9iD?|L)%UChoG&Ys%s}xHzJ~zDZ_HAizA6|d&w3PXfKDeqN$!YCRAF*f@;fxscS)qPVOU{r}_fE=ojRI;LkThNj;By{)W$sWhk|tJ8sFu^wQUVSRC9#C7u}iRuPM4T?pA}~4c+W{?=`1-WeDMSXz{{$nb+Xy_G|I}-*Wm_ z`_KMi+^hy~{amjWhc{lmQUoABda=+&Ok-pkPmrUpQLT!myX0xcKm|U-so82yI$g@F z_nbMv8U}P~7^)|Hy>Q)@H{u$S99M3W{=ca&4Y4%tOBn247|n6Dps@{}r~$8{c{XeO9# zwuVUH%^vp;6z^uxT9%n}>lo1de^_}9Gv_7KjJ?Jms$v*g6!i9V2@qM={_(`sY2_=d zm5s%fY^k$To1BC2bSivZwA~Szz&m`6`d_sC)6t(tAtXpI$t}l~ z&kVBYE>ZF8YJ(pn&#w&gf};M@pNQ!)fWVq7E{Qc-5QKajkJnyl8%_aw)YdcJ00Qgw zCqVKkJ#0U}M3Hh=_+%oHtnFUR;jE$B7aGT(xt(4U%Ekz1+*%=i9iDQP^$yte`^IF} zGZD$M>B$XT^6R5bpse+?Q?vSox$S`uz#4o7Ylk`wEn&h%evI<@ACO+59dL-T z08qZ|AO}i=92U(2J=&#-r;Ffa1w(e*3x7@=>}DRX?Q{-RcGVw%ZeV|3MM zmOek>-PDhdyFl$?Oo6C)yr7sDnV9gK@yv~ex-LNDl+I*{UEJL-6AW@o{g&OO>t{${ zveszyW){Pg?x!rZ0h^cQfPta-677!5MLY5X7pve&`2;b(Wb;GQTtxB)b1M}{aBD1t zAsOCod=nU;1C)~J)}9GazW#0w{_v#AW$~5$2BmHyK;=3%SvToC(u|-<8TAy_V5(B< zkKy!HtrKPCCSpDWa5y4BHEA+HK874aythwzJW#;?Ae6^#n1C|D(~lqq(A&8qMK7Sj zAu5;Kx%pc^6aZO>kspAP_Q>%C|Yr3|}21t?(`+xH-htN3B2S-noN- z7VT!&dVe^hEA2Mw8S+1XB7mqf{}+DKEYp`#UoLZ zQRa;jk3i*|o;xK1ZeSfa`qL>5BzE#^v@_F4La!B?mNBpkL zk?1@gJ-c;%uuJ{;iIlEDDiV+RF5Mhb`)plR*0h%7=n#<<1S zOalDEV#>VA&_M+HKto1AuA-P_fb0;y$x@6Cjm>jmAgs>OfKmd<)vd0&g&1pP#Pp~8 zoBjvB|9(mUEVkceezXX%^pvXTz0LEfycKdtnt7VZH!r>233O%Kc1N`7w9mTno;mMD z#9eY1*}0|rB4-X&KmEQ5V46bFOM2}BmLtJ9P16o~z#DY`eJ8HS^QgMAvLx?8ZxK5g z?A%{d`nXYzr^US?M**RJ!KAMmEiZFDr`5^m_lBcsYP%C?;AYu54E5_9eiY0WO?F!q z%o|`F1$P61HkJz?&&lB;G;hFn7ttZmnD+%XKY-rfpe^s$O(g^t4mu|zZ2z6Q|@k!N?_M(_ZK5B0k^ zKLLaGR};!>%0C9Yi#qek@|Y#d)z&`X%<`-TU!OLQLeXk&9|PYua2cX}#@M_YX7p^D(5VfY&^NC}Mt{Ytd)MEq z5jJl}^!knH-}pcO=gR3fqc{6Mm3P35zI7uSH>+p;KjnW#e?6B)jT_OjzhP>hzZHqs z|5xPxu(093DtHvXQBc1Xf8qDPRgM13wFAiNX>V2jJqXC(Xnm2F13Y)qWIlAI=aZsU z?)+oPxJxArcTMHonpVD0NAY5saN8A^T596v|A(`CjE-yx;6)$X#>BR5PwdRZwmq?} z$;7s8+qUgwVmtl%oOADccdfhb{qR0?s&?1z+UaC>t?u5x`q!xOCTP*5w@%hbE4XCZ zYb$4*BXl9@y`vA|0b^81TAcMgj(aaPD-qWT%N1)G>3!XlvCTcs2LCW;9I#pm4=hMl z|Jiahul0zwB{Y`*uMqpUIM6fr|90jdyaBfB0vpcffDe)XUz#>S{_74J*bl?M-TikQ zuAnL7&f+-##Hr6sA4S`&Qj(U>i%xZ3z3*2hy}8a#w@2 zW}jtj%doOz!j8BiaqY>M8E}4F(mHbBaE@9C@TCVX)&Xn={mvlntM3L*)PB|8`yWw_ z)EEEweLbMxcf_8ODwn&%_+Z-C2Uv;L>u!xzJ{Nm^w_DRAfg5LXwx=Yxs*UX4`dgC{AaDwg$nrge5;^Zx~bL8)k zKlmrW_w?#6Fl3|geQ`MKzZrbpQ-tzISB3a=PEPx97wc zyrw%}ueJ?@{O@!0k6WVwK8C20!`<7{E-4XlbfQZQZFPCHHK`bNG>NOy?aFxfzrt%; z$RPvFqi@sl6&2?UdY_fsB2up%f3_cP2W8N&En&SO$8EWJW?O1(4f4&7t-d~iUQqQC zbtrKKA!rrT=nTjL_`RkshQu8_E+ZD5Ed& zb?IPGniVkd_oD`Wjj5orsV(>C+N?w2hiYB;!>T&YBiF89N@OwQsE%=>+_>F$(dXKu zQ~cOyJeFTPl&GevPKf%A`wSMWlj7t`1{JLY0P0J4Jh3P-BBxtt@^rCOt6-)H2m6?I>^)vEBpF@0L}17 zg}UF;APT{WHj;Qy8hRJbwHb?^loqB+O9{!f2XG*0js4i|CyeAv1*RT`=kO%eVr864 z!W&i3?3){HbK}uBk|Hup_QS+de4=30X~LI4JP8sLF1rT>3M-|`+F)5xtrw^A#f9U~ zkySsq3ZjddvV`SPMP=|`y_vkL`5)%p@q(dYt5c%jb6GBF<} z4(xi~(2T3?85`=zkcGq5#PAd1uKuw0rV_r&!fyvAxl$9;%3x+ON6!pUEQMvhzrQ=? z4K;Ud`-`m^u@c&liB9ApCa}?mSxJ$*-RfCBH{C|!Cx9dZAZ4Yv5Ae!4S5VE;6lx2` z6ZW@bCzb-y=wkuEQhgu45Gj;tuyBCrSTwQVs2ck*VRys_Ac} zq-g`aH)>>^`f62$MM>^`#E+peL@;*N6QPfEX%BnU(sunO=9_(P^?FC0-kc;nUGTl- z8Cy=yt+oOTUuOv~y{k&cjN%qT{|*BE0%uaOfr z78;3D?d7vLiNVX$w|2rNRGTXe095am16Rmr>U*oG*H}KsS3MGjFU_xMFwnci?)jv| zP+Kgi);AQD$l|P|n(sAGB~B;F3@X{9;XpnwrpcbYo(&%Yo*W_8r^8u%I>YuXy!0XQ zsPISHe4puZq6w@aeoQ?+pYNFsbmq(mcqm(;=tutD zL9J$rO;48Us0?Fj-g8cPMonDMb zfu~hhqd$#6JDuYK|Aa(NnaQPLckD8Q`B1t)iPEE_<@t)zYxaTA$9e`CTd#JD{?}<8 zDIy#y+h$nb#^$tzsrETHya1kw?3`Xd+n61xB`%qIJbi>Ef^g$hqytPE(E>$42j};F zRpd_NYNKiT*XskISwBO%x$e`iZIN3vlVNnH(aksKUE11@SO;1RkF5ZUq={v3!L+w8P0_e}JuNR_uQ6JYLuh8x ze!)Pm%Jwk%RGW*EN(u?qY%kN!<-~j%LkPlCY#)>%`4+T6rmVTs%E}Yko!N2YVRc-; z4jGu$m%fH#`2GQ$SaApZYz%9jCv^N=zZtF|rDA+DMXK!}r1xsT3eAs(=wL5g5)>P~ zmaLg8QJ#1Hu5z3Osojd5O49fk^(cCG*wP5 z$-_Hy{*xDUW0hT72Qh(|k%9|4|EgvZI<<6<@?PnQU#V>zYVi(rVbRD_3ha59t~n*g z)H`I2>Xk_qjqTm^@X!u@Hs>sPFKDJ&t`#B98JLJB-C@1XZFVDa?nJCr#ENLARVg8^ zbV_{$Ijd{^;Bu(#prIV#RH`q+b;E?ddmH{VIu0|$NqTq>I^Hk z#L^+WQgKL3_`d0eXO3#y*1~1B9;nZg%ZN0YeiYk_8C(=|$hXoPu8T<8G_I#SH{g6J z{3IaEV&H{SjiJ!2(i$T8UL?1wD}^HGF8%D={jT$72ex6a_gDS;Llmw0$6t;z!=kyY zoVt{>=nn5kNh{M**IGnE%y<--u0AwruGY~G4<)zbpQo_Q;@>@XRV2S*GbXdRmiBpK zQaUoe3$an%;d$3`1e!^ye@9);<JS3T0HJ{0PBkw4NME5@F!w^15Q&{n33df|1 zkBq3LsFzFxVJqf|Nw(W%Bz`FHfpbbX%DS+f1FH+O&6ljhIJ-(YX;Z`@al{okkbt~9 z*(|mNr3|Zf2v*Sld6a}dqNX?Fd_KX>gta~JTxhz$IgIc2=N+Y{?ShvtKc2wGREoV} z!Q8poD?M1zS5bA53o&Be+H2x|Q^^Y-BEQMb4keo+bVkYx*6k7c2_F5;Tae!ot;{T* zjrPJI6QY`&VXKWktoOEhP?BblRG@M0wOD(Qatm*pYS1RLb9vQ9gOQ73dOImGr*pgUQ#! zYH3=(T%PmLZ>^+f5~?8X+dpD*i30shFndfe^pDn!{@RZAF*xu5b3OIuSaPu;5*}0? z7iKCmXDr;$ZW6R3L6g(8}Wwi!IE!B8?QYcSLp0SNY=X(n-i23$O z5>(q`++K^wTh*n~y5GKb5~<_u8-)%T#VC*gN@Gw5J2R8RDnu)gkCwCxP>aDd8Ys_g zz43D`;u&O)4-V>QWIId|IPFJn4?pLp+O1RFDD&)K2zE)VQ=t+FS4=3zTG)DOE{udvWWAH|3s;}Vy9XjrNZibQVK`M1P2+S zsx!4~N=wT7BCc@EsPj{=E;A(eMdibB3phR~y{H-gyuOv-ET=KW8+C)}8~BGBes9Sa zRx#M}WYx{C!Z{`yi>X?m9@iF|qJDYmEm3zf{*j5Bb2;lwy_RQn;jZR8>$iwtbW*Y_ zhO!OKH&gL08|b3Bl@;HBD6e+nUm#@E;o5Vj(IKa-;^j{3M;&&qd~}vpglaMO;P7b^ zrqchB_m4X)U0Ig&hNbfbi8g%~?F!T&7}mZO*_$I+7|`c-M_a*VO#a)izN$5!Qi?JFVz`W5%sFiQxG0Ni*B6hsttD>Q?zxBIcigtN%33R#8D26kBIhRcvKR9KB2J&yqZ67Bz2o87;R1>ccC5sg-HLykvGXTQ12!}G}-kF6xOKi zhopvMAxt1}T**NuDHu_a6#sFlGJd#h8OrA$*)?E~?GOg-C8-{OlM#;}*=eoE$zyoO zp}=l@B^)sn!!^$Qpg7xQwnuv7o0589gAIN}ABHMB*@r0Mn**mXWl$9f(Z* zOt~$2YJ*lR^@w*(>SoIP0U8|UxHF~>m!LbiA>4pxltU3ku42ldPzlv)lOo@w1Aicm zZO$)sEcQ`u4fcl1NpXGD_O#aNBRB$y?1Y!wS$H#FUZ$S{#7nB%JV_EAw`6{=!PZXe z!058Qj7V_GGVMpl5ZgPDqm04XSugRODYcSr=6l?sc1X#QPBr zz9)oMNNL^H*Sbz_ps_7qP%!Q2T`DrBh0*dBgzwJRDe0+fHsa6mN|0pipcsOlxWA&qC)=|z8ytCa4tR_q-0~>fMb{H*yA>XD&7dA z)XGXVhmy1|%!zE{fYY+orNf=F#jytRU&7dJB}ocKdk+H7wU@}_@GWFU%op(QYJ&^1 zxq*k3DCGz&pSOU|9KicZeN-9D^_e4YI-mXQx4;ms8AhhighBGyN6~}!UFh2RR;)^P zyMP%bJhlU*1I`KOCIgRZO!}F$+sv)w^uBr>x}V8xll~rrP!8{Wo)P~i47QLk&a6Sv z+X&TwmKy>-D_nxZ`HIa1P0mzNvL-)Zhd0IiQ7jV3#{>t??9|AmPgI|HO)ir$;quq3 zq1a2hNO9V}tC!<#-wTaltM@b^r@9;3bAaUB$D%gXK!wbinPrJ$^E_G$LdY8#lrP9Q zZlTQND`3b|6wH0MOY{dO>c%48V%)q_;~8NateuCZ+!{(d>^3~1IG2dsSw)7LwnY!J zSSjo@<33_Z@hq3$LV2NSKTTVrh=yVrWJO71;F9XY1BR~0%&YD-&dohS#z!i zCiHG*!gzg{ExYaWmC?`pabV5FOWVBe=pA~53IqKJ{q^vdQ*D<3KjuvtOChKKj;_`+Z6gERZjBBF4d$QV=CWof{q(8wsdZj0?2ecm5qJA4#=+dLorA5J zebJLqY$XB8bW{q2m3pf%8cdCzhCRtrkt%HA3OL2EJc8eZsZ7E>&w|4T^1jpN`}pF@ z(3sTes4@R-wV$w>)_iKKr2I)=rJOQDfh^;64P4o#wOc4%)QEQSPpCR)5Fc%F{;!n? z`?BP`hAEo19qO>xK||FOof~iGJ17C$WRnyZ5s2t5ueY9}cfQL{dY!AGdt@@++Bq;* z*V^|F=Ai<}BmR0S4H$9=A7}3j`p=qrxID5Z@zLM!wpcL+o!-Bx6UjTQ6cqHJk||(C z5LJz1m9KjdoYbmNO_0-z{qyLQM z!XXrLSICAGivG*L#OUwloxjQPm={(!L=o zlXJmY&+9`r<6WA7!*35FL$u@Ugw7_Jpd2&4EnKSy{SMy4oQ zx-u9@_V=#8cL>EU=HHKYE~D-o6K(0qu|fBk zWBmxJ6ZbWVNfW*T6$wltwKA0s_;jI`W2QE*tu!wk-vwS)^#4C1Ft*X_etrk*W~8&f zF&Xl_nTsws&xS{Rnja$caqDX~L86)s2_Z_$%R!@tgq*#WdHB;zE9E_3xwmMi8S-s4 zGVLKI9LeAa<;TjV!c(x@D$G*5kpDXa>+0`NLk*C-H6EpyqzPK#?)}D@xY+rE#d)ON z{w+#-)qfL<=?*D9XrF+%f?MYp-Ll}~410pNY%V#wAJUpEL3^sXj$o^%|L>v(vCzY z@($4;)&7K*7L0Jtj@t9)DnVfe$ld3BN?6s14G$F%{e=%V{VX{YN_B9uhd_!arb_wl z?iD1rjByBpBHOSe@_8EYWauCUy&0Ri);6z@vBfM_+%Bzj*Gyh|G=EZzzn3U5=d<%z zr!t<>vGCT-FvYB=5=16&;B<6R<|RAx!i!Hbc8I2}AUp5G<_?Xis3dJ9{E3&*)odOt zd44q-o{a(&V*+^>AT%2+QqM!C(VTDlyiJ)Ypa?J#GP&0E!R>;@4-dc`)G3UR1cz^| zLnWK!99hhmiG%J#lOQ^zAptQt>JinhRNzU~To?i1$L-;?`I@4tyl}ecT8tuAkY@!- zV3~Z~d=$KPf>1w+5S?QSiX|m*`97p+B!0&8hpMB~m~|ynJMMOOpxJPw7iTlsfVOjr zPbSS&LR$#*%j-{4V{7vaQc4X6b4B{-K`_F(q9(7v~?V1_#s6 zgQ^j?{+C2z6?6)nb>u$XL;5>~UI3*qc7%jnHl?0slX0}fV5(u-0s2t?FI2lO3N~Y1 z5Ej<0XFC2RO=;Qb7BwHJfocB7$HG>S+IJ;}96PA?$wkva5MfC3VKV5^n6IKrHAI*r z9XEUd;lwu&)Y5Yhqgh+l)s)~@ef@m!OBtlyz<46BkH2JTMVgo>=+u_#-m$?WX|BCE z4B4mdlXe5O zd6PB*t-rd3=y->$L%IV+Hkaa`;2mXS9 zeB5_|CFuDl{WQXzz+P^$H7tN1)2yMLJebfz_xJ2n3;tiPG-(J!1aND;3x0GsE9lOT z(k{9wYl-bkQ8`SAp7Y-(oW9eM=|xSLZuoQif0g#1(KfkRB4agEe$S>ls_OqW|Lsh$ zdv!5ASKcrMBSN*@4YNrMq5FhGMa*Cj>7$We3O=txBM^G7&NcPD%`EQfSt#bp)(K()MWxyOIYzHjGvK& zKMC5R+vHoYCELS9YHArNGv7L@L4?g|()zS4QUX{_`PF=JI{OI*>3z+TV|g7&7Gsi* zgZ}!_DY1s0S%{~KX4P7Bb$=opOH!ut;spBPT8uDqikvxwbgO=M?E2yR#^@6W`nR2HbwPi=b+kaco#*dQZ67$n0RHpziV zO9GP@HL-4B4yqIT$H|gZyZR%RKFB{gsD=34-C6R!N+4ZDIYdMzD7u4otWq0H%V$dBsj+LGwY(ID0%-W78A|MyZNP z@HsDy^)yB3tV&!%iM(3A`(V^ z4prbZo0(whrO|K0d!Sx}t7A-!(z8y`)|cM_k`qn&{;o^WD~~f5-wi_J`D-=`uJzlM ze*v<4Y~s%vg&a1xiyKR(_3LR*SH~{vh_MseVg!&YOTI}boBAzRWi-Vav~(i?t#`kF(cj%;>|AC~7|8%ORfCSEx18c1s#eZo(48s^_MKj)@eMD#n=`%Doy33v1VGB>LklZjon{t0s5gPj zIGs$Pi3rfg=cWu2{OHQDtZ&tJS)7JDW{Mxl@xbDR^S+83^@c-P9j^{@*%Ac-9S?B7 z?ifr4e^4=u+6ITI50xcysK031JE4*WE`KddBigujnIY22b73`ub^-v#r6!X`aj)#r zJ`4;6$%JHW_!BV6Y6dAJx{Oz5ZaK~?bTiaO#Q54l;eT!t{42gV{^eh_RR4;vbpQXM zzO;l4fP@SA^rw)4Vy$nlBtlLK(X6D9c10M=zr+jYVOmR|-M`6`_}|UcfPeW{ljp;T z#Xsr`NWTPrYgR~sW=Ag-xJ$jc##g$dkBt3YFtqsHR z2N>QzF{%ydRz_+PE;KE(6L^*w&T~10YfA{)4`iixj3n3I< z(3)LbMJpfg`&r?3%!!d9fs3`0SB~KOB5C)at{K$Z6pki1_Xz((*M~Gh8fXn&AV)M@`p1Qg(BgAsyQ&rsw_5T!smsQyt3B=}k! zm=c5q9Fr0=CAcLV7^d%AI)lTiCdGM13?NRG?5TX%y<%aT4*?~lCb{E{g z4-5qaYFi)_UK|965(hNbPZ(@~HMJC%nwdmw$!~b>;vR2-^&!i_A+)#p`Yi=K8wt8_ zslF=;(Hlo~WnMQx@D`aFE;szk9H82KF2Ryo?y?TFT548&1DFnf%iePITc+%zsbZ4(Z^^?mxN2*hHPyWN~NAFvf#}LCqpSuN#NWN~2|~T#Wcq z?get?jBE_G82)``6P1_78s&1&h81$a2K<6b93~brL~{K7tH7{Uc7`>yGNQ2w+}WW- zX_((+Oo)wV!QQW@heFw|i<)2(HfteU`P}Y8+!DoqiyA>(=^HIt*X({XO`v3|SEsRy zJk+WA=&y2jPZ5v@ZQ-ACz17?U zg+IsQBX#(B)$hlu`pb3u8i~3=ZjZyGhi_Lr(9ySzg8G`oJLSth?Jc5ZygJ!!-b>lq zgs~Fem!ard4{~jO&sS8W)+pz;-YVKtD`mSs3AXd3m(>d%8KXn&KtS*GS(cw@P*dE} zoZtcXo3XcnR4wzdOZetm8M+hJyQ9<~WFX|H`)`8GUBMqzo&1zE?grCDo*h#m{NvSU zweX(nSG&;NZ$X57m9C;%yt{iOm--lpANqWIQ`O!G9{k4hnuL?&veZ%)NWb2Pk&)06 z^@x7QiX3G%-9#F=pek+SnqLb)P-S)d&hFkj?Y=U@<~fO+47_nd-C85$klXc+HE8bJ zBy-zRhdLso3nkjNlfHNo7h1z~ezDF^A>s^_KxsDIoQnK516|%y_$~3`!nT4K;C`cY zT9R#NS9@bl@xTMGMF>(8KHU;=Vzb}YM3LQ)Hsa|&#lMWidH)j^3hshHu+*KHS4Wol znitGt1#?gvX*VSMnZOsTGXuH%5_?AtwUtk}Ga9e40%Ggw+$wp49lrIFfUfAOW?o~i zCMN(;TP(aG60HpWy?>kf4SIPQV#zF^ZtFk>4zvlpEd-=K@lgzFa2ax--hWxpky#9) z|7r0L)M~=p)fzZNcQwUn6XR~vjKCNNWQPWH`_npFd7zG0h&i(on2xOA#PoMIee*f{ zHRHUyuj$O|`W;?Gf>d5_B`aNFDo+w1eW7cmQnM3Wh+nGbOYiol;oQ}6C@vW_~ ze?8hNr^_bo!Xu+sE5NH9p7Z6^7{U^W>fZofmrQ%-; z<_`KV&bos6w`mjB=E(@^zbZPg3T*pVbp0o|u0Vh-g0#RpA%Ja7Gn`&5f&X?Q#EAD_ zF9GvrOw~Z=#SQ-NHqea$As7@8fm!pJHehG?Pw9O~0F|2K579Gc5_Nk)t1fV@?1xsy z5XTgbqcy8@RUCKmai>)c`IB~5(J2050;TcEktL64K7+*noR=^yE71zjdDZ_+{SSgg z10k3*5P~HD8~!Kx`cHqg1MwDq;J+5k9V%mF^_XQD;@^Vvzv2q=U(og6&SD5Vz;?)t zkygT(DdSCu|D_4>KLq9pELQ&O?%(4$vH=m8^&8ChwauBW=f&j+Jg1GBY3-tekVA!H z8=6UJX>p2KM6)m>P|wr{<}pz=xo`mO3jQ+GIB~3XSUE-aSw#J8o9HHSf^so|54ut9 zlKe}5oBSX343spu($skMKtSs)mSu2klt4;$GZrwl6?#GZ z>asFHBVm@RQWxBaPBMLb%Js+Op+cq6at^O?R&62zMhfafsr6cS*^PU`;1GK*O36^I zKd(Xy7B@I0KeR(w7cyno-N`uBbkFywe#W-8yz|Ez1w8jT@4|6%#XbP(*JBMO`NmS# zq^Es**kSS|W`6Dm>$BPXT&${XCr9meZ~tCrxIjjh=S@6|Otkx;tNExgA#6IT4|Zbh zwK*l!ekY=bF!!1(BTJF>)8IEh<`Ni9>Ndye^Jy)KFy_E-xF6vn;A{Kt?yqE#(VqQuwn{n)0wf-CO z%$hB^BhyIYUSdTAl~h)0(?pVZ<{!OpZ*1w~PJg9ZHozda#GqcnL{*tj$cMUy$Y1T6 z&s{h$qrS)KhA8`if4P@gX!%ca0N1s<2qkwx){gDo8!bf*N-;)L=A>A;k)YcSq#TeF z2ZL;m+_;UK@6KgudFi=%JWt=dTMjK>xQ?aMx$=9>CrCVW93?e3|t`x4_{jI|_M& ztakp0Ep5HKI%WU(PFOukPdetMLeI!7T2v?g*yNMeHl&e`k%yxlveh2x2FDA$#+kWJ zEKKJ7HBgh5_>2`${;m!W&J?Rkfji2b8W`CJ=(Mc71fQcwgoCm!jgZt5M!JxS?h44(h+W<_M6qg%>M$CcJ;2 z#;XXuOv8NpvIr7-5063XYK@95{mD%^nJ<}Wtrn+?{Q|waLjPa@A`z`xGQxt0Y-5s2T${Z z4a*Fag3Qib@jLan6G;+T5J}};M&m4uc;Uo0Kda|D);ngNyEE;~WjPC;z)>efah1); zs>ae7dkU#;ML+qh8MI!Ehz){N>UgEy+DnwYb@8+}y+_s!;VA@2GY;<2dD8 zy47b>^mvp*`U0mCXW7m83D3Z7-hlf($5WT|1EeiVRNbwPbi!t&)EJXsS*p$5l2oRq z=$4g_K^bXy3eW1GUAaH4BpyupW?$-gH}1y}YvMs-(1s~R=2~5m=0LY2VL!&BC>MP8 zW;d)@Ho1=FA9qi$YrA@A`Rlosrw@lc$c?GMFhaWdTojf8ADqsq%V>?}rr3tr0+D8n zOA7vk3(7yqEGn2|e^Q4*#5XEo!hXN9=%Te+2ayXt_VOLm9#4YBv`}d!4GS$tsGoYV z)x2&$Ib@hd%pUPO4l~H7R9Lq&Ob+;cI8A*=E$xVW(dIxLd8Ltr+i^@$MfUD*409Gf zc)N{tDJ}wrD>P*)RK*&&2LH3#o=Y&$p(Ex(>QA({Ni>8H}@_Bu#YY`0F7>>I# z7qYNfp{n4c3+h6B%Y0=&uE@g0!%>)cQMCh6{b zEO#rG%SBE&YlKV0T#;xsQBhp%?f{M6A|F@vf%$$@@?4XKh}t~!&n)d4f7d?_SZ~I@ zOcODuF610gJM{IC&j(4!l+L|mb0E)9F1)9sskUj5<%{KQ{7hCD{X=v^E+K|S{k0V4 zprKBmZ!)%pU=`uhse)>6LiiEI(^@KqG=XE{>S-e*G+Q<3wK4JyLrcuC`zlV(#DBlW zz5OHb>{yXaXTXyxY=jwzSmYUs-N_y7JB_?vHHUws`uqW~Qm{1WODbG(f_|pi;R?Rk zOaxEdaG&_5CO38z#~4EqH8MiytJ5y*77uBOLxjYt=z(lCNh(TpLz-h^uCAn{I8-F< zg$4Ji9{K7oom_@WU$1+c3wCsl`cYI*hJVsKE33(OgP3ZqhEwY`S3UD2Z3t{#ong+J zE4pX0-!*Xu*%#NssE!7}`3+Q;{_!v-vKm=s?^aF&uH~0sz`XSH&r-SiW`Npw@Rln? zpG%6%^-0G}(KTi5=W&tV<1`cbo@bF>0-grm)+?@8+F0wv5BoxmP%Y?0kin@ z@h(A8of*)k=CL8!AY#FZ(2S;oj(bM9s$qDQKMc`M>H%!dq&0oe+GG}PY9Sbgh*rjr z!}5e^F+NY5Ws3FITFia!gmR$l*=H`7&w)RIzA6<)o77qymf1Lc!Qu?+3QSaJy@a@g zW_fHIivh)JmC_1BHvY=jBl|rV6)k0sO;3&3Z`yVp%fRUrPU`d_L|w1VQSRuGzolF5 z-e^z2TTzSC*0|GS91&h3}RD@ z2(i}rG1Q)>(TjIuiop**gC6F*nUeu@s(33bo`Qa)Vd-6&`T48~Czx;7GB$~#^z&l) zSxj{-Qz>*fWjt?~U5X`5F&xumiXDR&}X)SBc6{xuoqnu#5lHJ%;wIu9uue?bH-(?y=>yclk<6+(SzUdc~yqL5hbaSN$PJm=l^XkxWBG zD>2=!;30|}p^t?6CI#s##Q`>9DExBubMbL5ba3R5%T-hhM{ALWU-6r(yfOKm9E;I` z_Q>8^rd)1AX}4=g0%3m$%7=ZWj-WrKrik5q;RGS}d}{AI+k42rrz~yZ@@&kCy8t@Dbw7<@mW&<@H-YY}`o8`O4hRBB!UfQs6=aO_G>uH9^Rml(|@n zWc|MAnQu*1akfB{J?_YUbnO7z{mk9cIH!MX4)rTV^tR_cp&&s>4oNW%Nl`&jQ85-! z>&Lt%B=8y3AoO5R;U7C2^X&xL0L{X)=JHt)qu%%wUP`4u6?c1>sC)R}cFRPjrF;zQ z+cC9R^o?2zWY{wHbR2Dn&DfwHlhbjkVkmw$ztXGUD+(Z`hsztk_n>5Cr0D}0F#Q5J zM1D^g7@O-O$~@TXPzhzq1WcSGPYTeZrq%%FzHZ}n0rJ9AZ^jT(n;s)GVjEw64h~vB z0SQ4tWdAHBf3~59i}?zK4*9~ zy8*n0Fcjl-lG6!!_iny{o&T{yeW1R&g8Unmq7FmkrPYm7x(8^}=>jzoh6gA<#YKMj z@$zuje)Pa9J^HyfMV8g~s2dsdwL0LKNg0wSF`yvaME}6vH)OwX`6ToXr*{uWA-^!c zMFrt9n@0+#D$oJnM^Fsxm~$wMt2~?kh(Bm&f&WH>xC9hULtx`)romq7EI^}N^LaLmyhrsIxxffu%ius%Oi^v zDv<5P^1>`Uty{#!wLL<#`I4;dSe6;vkgOK}T?nD1M}jmvOn$2E^jL#(GNb*3`|ra- z){3FvuLvxF(Ky>h&w&oI13H}>vYUmI-zB3SH=m2~hM`}Ny51<{(vaLqN|*rMX%BNL zAArlDz!AUd1W*vv`5~10jVSZyYY!|nOl~Nd#}G|!DFxipc9wD(Q4j1%@cT@!v@&!!9%R!Gwv!4ym4+A@E#^5@xJpFe*}o}AMf39 zz&whD^{RmP1_e$QD0kZKh~fOo`SuO#HRsFp)el{%4RHT}TjeHX$$-Bn)aG$f7iQ82 zGX8Slr|5;!k2T&RO_2zymY#!#8^LEP=P)x{+PPty*eDL*x0})jGs<1|wp zL=#Mr+HUV4NofX9Msj15@;6Bie30$vXiL!38(R628e5+ldMN?a!+^ zw@3cPAJ<37HhcgABCI38-eK=JAV#?4<@)wl+!v8#z>gQeIz>`<;(UUV?Yy)iYm-b7 zEx>$wOmp#%ASlmrFJO|L``QnQeFdNxi=GejfLVd$Iz$@QwT6$z@crmrY%oB6tjg@*v2Cj0zB(^gGho_Qoo z_xo?%QSvx|$d37f?`Q3yeNYo9zg;TeID9L^2{&&u^>KN#Cw zTR=|Yz7Um^)H0w0_4FJtcKIvOCVQ~hOay=ZMW5a>hZFA=@bdDKn+Z5@*!c^<5AgnI zk&2rq?;RXjn)Hhuyvt_$lyy3Q)T5!_L=0qhEW%GJ@`x1Op_;Q00aI%#DLa{wPF!fZ zei{iofXxJXLZ&wS<}JX({dM1$BQ?_SxfUUdR6-@Sz))Fo5IK04D)$wFUf9hfkFM8y zp!q^E{A+T|lm6ks5r<*X-}PJIxxS>{Z{cbm;OYvKGXTfOD+bwhb~BIik$gKC>kHr; z{3L4ow9odx1C>a}h^mngnQPk(0Mm2#ILf^CDt_gV!>gVx9@?;eju@A2B{S6<-(db=&*v zr0_>^x6LB2Co6W+P zW%OBobw9Hu#!fX>crd`fi%=e^)mDRSR+os`EeIQE4Ere#zS1e{F9Ii6uFp__GpJ?)a}hMh z#RY-3oYQfKm|Yya%h{dfy~&-+qj;YTh9*efGTp+68!MN$Q7?uHygCk;9uDZ6-eiGD z$BFk1Bh2{2C(GQ;D4jj2@ni2|z?^u3!E~ixm6WGoD@@H#uE_`9vCoM=3F%0`R)D z%O8@mz6YMZc=6{O;e#!CH5{iI%v$ZR_3L{9ZecFC3&LI;xGi zvaY)_r_-3CrV(Qs=o;cs_v=vB)|WZUS2e942e9wNaI5J5MuX^TyW&cXOTI_Hh>*Z4 zYKMlER#4-n$?Q$7E+Qj}7Cbkv8zcBTOaqGL{OkL4n`79jL2~DpFoF03$cd(L2!wT| z1(bDVDY$i|aP2T0!RC{aVGJfDuxedN?a!gn2)yxU*NM_GVEMx?ofnOOohI|a_AF8z zGZtUozT3@;T&)evg| zvkXfEmm!|TnRjThw)+?34bgU(;T^%H?+40)1dcC+GG6A;j`6$}8^PJ3g+mk3`yD5O z!K5|bnWCffGzaK8frXr&m<k&B_K;asC*UyZHNl6HAYz;k)|&^yqDnD~Te6Bl z&yogqnMw_OnaadRG~K{Ql;g&7&8|wZ6t7b8RM`u7C&f$S;rIdD7u8?%$b_~PD}tq# z5Mtg^O@VLY!Q!$^!gN5F!9g66HY`~sABuSzHWimlp5E$08MKt= zcrNtLKt8^fvafs%hC|P{GB_t1WtRVg+od+RctsKlf$#En$L!M%Kc?2i#X05ZBf9GF znTzfHv}4a(>wKe0bqqX(kANX%CvpL@%O+FT^4NSPWfrUzLG`fk#yQB?@8@(bE&SVo zp?q_OT!-zJ?f8R2<$@AXaH;d}DOV%U5K${DNX5FY1-#$=$mzJ8d~#m&bj~NOrTQz_ zv!~2@1LVzalEk(U7q)~HTlHe4(*`lHFV*BR zwX=sXuyY7oH_u`~1NS@A*0zuVx5=Xc))mF{AMEVBqx!MZ%Ykjm85`XFA4JKGCP{#_+IU{Be=J=KRz z;pLlhePzU&LW;+?YD0?4`>@i-gE%zUfw#o~4h`a;#vw>{UZu6ekzl|ohXzJ39-S8O z_RsS(JiRYxHi4JdWM%eP!b+b90Y2k0I>n()V|aOvX5bI?0N`H;qIp*B^1OLA5qLas zU;(EnD_tv?hgT~|a*jR^agJUdpg7@X?IXGbJm=!p$TLjbJohmS%E!oNN@D}R{hHuIDUJ#mjdV6(^Gf2j%<32O@4urUWhpd`UdvpC* z5R%0D{H=044JnGx=uL6QcIN%V2EJEQ*nET${PgPfrmJyPF;V{P>8JuKOP%L%*JH}>vl>IWft>W=$n?uT+!l`t=r%aG&v_0}< zSpiPSsi(WUaMEsI!QmGc-yWYb88@e3IGCV$wzb?iXv=*3Gy$=0N+bM+bMM{I)27ge z;a8mvq)kby$xWo?gjy?6Miw01w0-bv7qTX4!rZ>8PBFVK*FBcng)Aq@qdo`B!6Zb> zm$;gkuon$8_A)_R;RcfW5?@+)erTR$6u3rwHt2cj@}j%;%PiHB6`wj`N#K(SqMC_T zwp&j+rp~3jH!GD~zEdj+CX_?)x0iLduTl_8NJ519pDvg0VHn(dbM8l zea@zBF`}tV{V-X;hq`ZpYjBkM7k|dTr8{YyHtzbIXe_4XOzvZ z@I}vh5BE~FeWT6S{nj&z+XPGE=x%}fMpw#ijjuBQKmv(x*b>72&wQbw@fg?8677sS>(3^W>PVgD#_BBe}mNIEvz5rIeiUA^`q(NzHzEkw4Z6R8(~iO|A2vE{;%eCv;2te%%J6YPP1& ztegY4X3i@7{eJgOKAATa9O!z2Bm3f|y=Cnla<+4}_;lgJwlIEOXT9gSxX~&7$?twLli5auJn_{n8M2EA zu>rr**UL4$k-?YZYC5})1|pK*js2U0A8%bcku?nd|DS zG4w5b-+o}Nr3hdS9{omGXB5-V8PmG4Dv@7yUhSqR5HI_$;Z#bz$M%iul2MPq%uFSz zwY#+AR^?*JwomiM=Tdn!;Tv@#mRNzfi>?~XEZt+G*JENO)?CTdq3;r91 zGeib`=Q|ACuVqPSbLw?@E)nwtf&PqJ9LB2Zr1~9oM;$2xo$QBQ6CcRRRf}=URsYFJ*azqB(nfLSGVG-txA77qpCz*G*Le+-iO*- zSC~j>66XGPaT)UcL@HWp%n5d(%c|&-=E_p+_KODFu1bLE_44OsE4$w$lu=pr0bNb9 zL^;V~%6YP?p}4Wr@!U&s$NiCeg!YHV^BN+h!54Bh&WtmNh~u96kydvmz6fJLJbgF- zJAG({D{+R`$?XC!h4s&3IW!*4;5Zwfjz{p;9Fm(oh+T>nr^Y_3horjvIKkd*z@vcvJR#I^drl z80ahw4@GN}zyDuwz}Bk1fYNS@rj2-RNQn98_s_!Qd?o@jg3lVMS*T`*gfxr=W+ZIl zY`4Rw5U#c#kqz13ro6a;C+^ndUDSADv{T}Oc`F}{c_-=rP z!}ZQMhCJAcCUthKG-;*H%x7j7QnE(B&J8nbDRo^}O_g9zVTBx|h*9gAEm$Zok zf56F3*7x%51>X3{{P)DH6nWT<|GQv6Qt&`i|Fca9p6+=9PwB;v#3b!_0R} zKX;UdyEASYYy6ghmPZz28a*_JFem8s3Hj++vEyB3`3ubY+`1Vb?=pg)FMl2S>4I<# z1H@zhgV132K*R=Kee@s*_oPwZzSs~bC$*S>Ul)kEF!@7~R`bdD ztdvWz0293Xk6KxgO?}`|ZNaxvEbtuowz(zqGj{($Rb22Hk!K|*`~&{rYnnCxzi1#k z`EdF+q!hFrIG2FoL6E9qrG(Tv^oP{5{~&BlXyIcJH-ZOh54X!LvH5SC4HrBeY5&8} z!mg*q!<6L$>$;dS%?lxh#%hgL4~G+@cd2_%F3v*oAl~#PgfascSkME0XxCu*rS6-? z&)zuGFAVa8Zk)(uFF3D0Zd|^ZYM(M!c3Z;4Wjkr~&OxP4mAW;H7ebF(oEEp*CUvn} z=(NQGjT^D=wO^YzEJzPt<8e$Wy!Shapq(1Y*4X3n(PPW4cDHGPnC8ic=qrx z*pAVeqnpcxQJcE5gAz8R`9&lacDl{v984t>R~GCtAF?~CY|$vW?!6cX$4cfn_8?*~ zrzLrBTeTE|11{X*{mYZk1LScw#1wbQW||}2w$#2@5>@jxkDC@#eZUqgr2SOn_3`5L z<-4F3xrhz}z3b9W=5Fp(Sk#_1gk&p)kIiV&GYZUS$eraFEVt`@#9#=wh^`8Voskl8 zhY9NQ6%;F)-I5LwHZSrOJgP*whjHYI(4TJ8=Foaf z=H_gtWI-x_U~li?@^PN;wqwKMui29Dk8MJ_DKCS2rm2P%!(X;It$Hcww7W9shIBf= zDru26o!T59sOL_@2Er01DpN)%n>~9^M zcG-Qc_?)~ZD;~C?{dFeWl+!;c^GM^Ds6zfwK6KBf?pij+;IS=F<|_A5VSI6(DZQ>;o3i=o|t2MRzjon#FBnD z)Erx)ewp@5j?0G$T~2`qd5;CUpI6=%*DE)c#mx|p&O&OwJ;w2SY%uO(a+_;-i><7dE~FBu(g{ zR)jcXAIWs6#FRcj{3j;lZyV)M_nl|VL@aAsh7&N0i#&C!}v@5q?L&T zj=0h5>|)gyDqDtSZt8G~pq=G=ht~3!?^&31y)kv2;A$n9@vs3w1iaw`%#NJKyB^5He*n!J>?&Axr`ce7ito!fQt0Zp; z?kcJ6I||{>8(O~m(mK;RJ|E7&O(FRiGt?!9<`tJqnruwg1EMDtj3E6CPb8nBUYzf& zE3;R}+l~9Q38L*s@Tkw3UWe~Y$vV*b5UGOj#W>|#1?)kb77tEK1{uO#B1G;YOSg}x#xmAMi$Ypqu=iLz_N#7$jq zlWoYIGFc|itd)-Lzgcv>`}Lb;K6|=Fj}}r6&ysBwA%|edx&(1JoauY|mK;#1m|#CW zKgM4|a=0BAo`ib)D=AU`k_nh5Y%t{n#U!mc3IAJ<&>d>}Qsc<7f%F5-kdj*K)pKY< zb*OlHyoSuyPpvbzBAaI@XCGQX`-W{P{|0@_3i;0^U-# z!TXoPXeXgTJysOM>up~@L>x=~_VHVoEpqhsjRp$TkUVG~XHRcePiJp$Z|AcxRDb{J zE*ex5Jj0#EWqU&+I>PXSS1E1z^BwBZz06Awt>O&qb@w0l)-NHc2if%VmvEfaO4!-) zX>iMh+kC)1DY2KOdO-iGv=b_hI93(Ca!}=Sf?;%h%Rx>_*W9p9V$^5Gv)GcZB)_K8 zFl*?a%ym1RAeG$`LEt0#@yXezT5?d?nR<;wT&u*UEn~hubM)={gZS^Q{Br``ir-p@ z8p^RGYzM{F;PEB&wQH-<-BLnU3B@O=G^vi1+TT@vE)?8aCa;3tw5W23D9El7`DIJB zpLXBPiwIOGU1&C3<@IG+FcTQis1{<_Xa z#fB*_QMIX3WaXb}2KvaVQ@qM)E`zv*KOyXL_1kxg+2Cq?epK=vE5**layQ@4+E%au z<8KZKTbe?d&U=Tcpwv!jS-MPZIKsLxZdf&&CUpRM+R#rt_8dTvAV{Ll0Gul*2QWiY zicI;&YhivEnU49p;)^uP?_s9G!e5qa`*KM`4c`XS8HL;c~!U)B$ zSb->#DY88y*C#xMT$61b(F%H09M10B-jAzP(=)B+zo*UH+22&pST5xZ0`?o+>#<=0 znkeA9xC2PUzGWB$XamG4qb-@9Q#DGNQg%M+T=9`ujEx9tl!-|>?qT!(zAjm^I+!v_ z&DTcacgE$1VYuH%Ulz)5bq46CC5rzEus~-k5f_i7Yy-jl5to21s0GMQJwod-lXRIK zA|4X;tjjo+ss3@^oDjLzth#uRiPvOcWCnNG#qJ}+F0LrjT)^R1V59`Zpi(`PL*iQ_t)=+2G%OnNC9to|$k6jk|MO!xxv*iL zCn~X5dX7r5B|BF8z4GD-!H~vw=h@iJp9LHz1Je5(&=HaRjh`NsqdWw#>Z!0g3`VlW zP?A?zikoyIx*OB@wYA$;pEll@q-~gv%8pnGl61DE_+0l{rW_lhZ?6u9%gP38&$UMT zPM2(l@I9k(^gC9=qKw#%G}4ffY%cAjxuJ%Rk0=(RtXz0LQaGjD*=_HLE<3fCLQMpJ zq_Gu@mMsW=4?_rPvkdyZ$~)b&dPB*aQ|>!lDM)ehH0_IsY>;2mRpMQ>&g1G)C_+>H zHmmyU{-VP{$|*y(yvF`b6og?@6r%_``Px<`PCnEZ#b}vMHj75PS9enlXx*Gi@0#b# zzPRA=6M1TB?L7GA?NLGF@p3zRWfkRUhbB@@h?~1j0-|&ljE&Zu%Vk4A*#^Tu8qcNW zGblwZwJ=v^FQVJ=lpi~^mFH)?IAehgA0r+8GA)NoeNI#ir8XQ2#J&2}ni&nRe>pA* zBR(rDS`v>?@DOwaTCo9kK({hVBIEX)k8#T{SeA8UT4q_xuBLZ;0TS_WM- z(zc5Pc;yG7;Z!1NNyo^p3K~kn#gVr+k%E!gkpv=)eFh^O{I-8zci6Z)Z=_Ta#AIBb zjNUO!B^u%+cdFD1Iv@R8ASSYu=(Rk1!Y7Gg`8)N#_l6s)ZcOjK#o006`AScqIi?c1 zxpRbpQMC0qT3k#rP5bVcB`1fMl1|cmu*zGukv>zEUhoE%QMH3on}#rCKDb98|jxDe*7QO2o)?S!STKBMEdn=X&5 ze+r}qe*VoES^f2T;=qQRv)U2K6azb4+U5ggV#Wbp3MzZz}Okc+q3DLR??T< zl>hkjq03}3i!tZ3+|kZg?}EffY9)Sul>)nJUXy9(hz?i{nD);OS0NqNbe?HONLeqp zd3w~YbA>cc^@>k0lzm%0;Jb6#ABkDBWl=x(7e#TAk>&a3HtO^Y3>$>DU>gvSiKBab zGw!jz-sR42zB(f|s=vRbII^_O7e(`JHTO#CT0XE4S+yyhDGVxg))RlAwyogvP+{y+ zoQT3BTcuFONX3SUK|13y;ZiMx>z`Pg^2N0F=KDB(mmKpNnyMA;d0^bq$Ff9rI`njc zT{Wi=&v6JU$_##)nD20>!g2~CD8qu-CiWb)qH-R%L`lc`S<-`NNaEK zD#CK6%3thGmHr$9UXyPAuG$RZmSi+bc{b8OIfnj_nK{)!wzI3<-$yy(L3vzNndG38 zA$yf@d~f3k`=uDbbl<`w+9 z>SYXsvQuMT>>zNZB!C`3)MC1d0@<_Iqr(A`0CXPWk_4eMSvO9y-y)tb<# zkN(>ozNom^r$C+oaQPZ_8wK-pZlb4OX+QyvA0h$q`b&r~wpW-#C+(tVn{EpgE$DnAyL1>H(kTacQ-TMmuLtoNe2TT9VR(Y4lStToKztD3>E_{ z-FF=V(!G_R2PQuq&;Lb)k*Lg^#F2I&XEO*I$&zCUhc&*km;#EDUl0O+6R zBmpFf2uNJ49Xc%Ll^mMq?;B~FZw)tlzRMLgxe5ln1DJ+^IR;cGY9gnKS#1ShwQuv1 z8lSIV8&_6SCYU|VDa`^G*o$J!?Kp&LPDsZ&KRT8Pf`8!wS|Q`#a6tVc$JL{p7(i74 z0bHqGf%-)p+)1Eb2al<9(m;_=Td|wN=teFC99sq z70(%%zK;6rA>D$9+tr^x`^ov->2dE|7`ke0!KfrB`cKsv;d|Tp9mVlb?D;TLN`S?I2_n*;O=`=4+P(!HGFHf^3g6%wNJ# z!5`4auYG{e0%POoGP9e_gkspPh(NJxJxYP_H8oW4_Xxo=L{dAaLFyFDE)JpXa1Cwn zAQ!I;I2^xUnSp*#x*=lxY>oQyn1Z^Us%H6X>Z}ivzpD_98>5%^rr660PIay8FrC

He#!)Oz!JlT-cD(KDuq}1_@kV+dd>?6M04!EGEJJ7o*N>M1$JrFeP=H&i*jw&Nbo7qb1{0>+_Bj!XzXK z&T0$E=_|3PW4|rG0jt+L#_%oZERJ9mOvE6zgIwVr7NXnz89vC%lmM9lXo+?k#((DVi57gAnDquj1^AmO*(#QwHc>SJLd)}h;CTnWM=rppV=Od#9aBt z)sR1(%jyg(#5w9_jw^1*fg;)eDH2&JMP423B?;(8$Q{GmTF{qg2YY)d z9>+#68P^W<+q_YG$ocOF#n#fnPdzHVJs1G(6}r8{{D9mf1&-7RY2j z{Mv91M?3KW*o7e=MS>d;@jJWHuno98oJ-e&ckni{Z)}L*M?m^cp}WTUfCnMA^*Yck z&jt*Rm$ZQf;*AD)r|#-MJY{1y^LxOQ>ps0@_@hGV>XUzv@o%84W$xt}jQ$DvK15l? z7CkfkiWxA{%p^(6#}uc%U+7^e;Jx94J=K3N4_1WNY4n`u*)f*V+E;?EubXijH=%b= zb~>#AA6kqC6{}4E^Y5$r6JX<{cnA2Np?wDjR}=c4Ra$eYzWpgk#LJm!dpgE}j>kQS z7xSLUrcA*vv8B7b@KP)^_Oi2^S%Q30#a64lGJcWGp>+?qXrS?8(6ic-)$IY3=D#jr z!vnSjFM>E)XJ+!r%L?*YeRU(II&+568P>hO=1|EV#x^21}kzv=N;wq&80whv(wdhO9Q)&6$@_QebIsA#?0Tw#a{WM1V zr*@|t*p*yDvt6|hzQFWqJ06ae0z{73t;1-MIi4+OE>Mq##k?|P|0xcisEA&NNv})X z-5p%+d%%#ld&8TTP*)tc>8afJA4?krlcos1CwfwNad=gdLDw(z<-p3rPv|06d+)Ue zi}#SvWJ$!RQjQLi>0O^>|9X!B`CxE`P1R)fuI4)LSNM?kEBaRxN%Z{8UZRqrUY&S1 zij|Ley1$G5%#R1K1WJ0r)sK#jkNftNx7)=0oK#1=TN^LdI3b7h5FziIj|+dET~PP1 zAGxFNo)c0^&7Zl9T*J=bnMNyTtP&*09Am#=O(ao{oA>OU_i^3+jO^%*AkOOBB~6~; zHSKHPFxK}ZDF$>l2@=|THYfw(T?1m-jcEafOt5Na zJa8DOqxO86M9&~}G9vo&sCvfk#lJlg$Gd>Ai(gtRzFpaW}JG2ODCHqCIj!X=NyY{O)-U0hm1k>*5^vC;9x+hQOknr?C zr4e673fi}0(@z6U;v`=Z*o`Fs0)=77Wj2hMLm=^yBfc)^mR?z+nr4mkP+|S~|7w6( zh0&iG9k*ptDI)HB8aB$d4hUG?`Z%gDMs*23^Kp^Ee`f52@k>1Xera~w3wZ;h-?oxh zR-CCp!~nedEd`~jY*UvpjVVY@s}e_n@SUU_a1h9$5ynb*)$xOpv-j7@&{Z6tOPF2~ za``J6j@9cl{*^AYB=ZXj1e*+(ERxUfzDy|4d|s5vrTHui6;nt|s+}rp=>E>=?MCn2 zb=P|i|MfW1rZ9cRHRbE#HRi9j3eg1*9jX0yCJE%4eBY8ttp>M3h0yD@leGQcaR0HJ z(UR#U%x>A1s8CzE0n8MQJ^xjt7ckl?Orb~{5n8=Ae1C!%=}>;Z?hGP%K#l_X{yl-8 z!e}jp&WiNA1sxbIoMdFj2tt!S1KuS<8FR81z$>^NeTV^aGmn18-jXz_{V5&JL;jK} z+UUfx-Z-m!#V98hKA+ditJV)-Zy-P9h62wPEKkw!)rch!S!AxkV2gi_?J-q8I`1!g zUBFdn0zPakd4A%SNi5}ANFgt6#jE3dvLEA~#5SFFmghEv)ToE3oBNg#HT>-tPl6i= zs<2l$XdFroh$wp)f4<8YoGsK*DOep|^kiRy*WoM01b;sJ8pUK!E;h|QC^l`QreW^G zVeT}ch=G_jJ*&Ov1{8f})U?YPh$E~+L5fldiT7YCDz>P;m{&`;X80$8^SnC1dfuaA zKpx(>55u?8hZcSURd%H_&vM=ZMP(IPfNBRI7l)w)3Qt_Z+SzJII9oS_GlOJXS?gLQZ+4d_NlIR>2NgvBojSnA z-|}%1#P(k2D{F0d0dYrCeC(;td2yd(T`Lwj;IvK^NpE5_SCq<}%1+`U_ja=w+UAI+ zb&G~N-Ys4YI_Q*!A5xxCOT02;{DG%{H^Lin8@GWu?iol~%B7#1rRi_!>{#4>Wv5^%KE6Bjc7?f) z67!HW^X#)lZb+O;GTG`CSZr13@7!PAs=9mkUMd3D_qi_h+iRICRQe3e&``hK+wb&h zstRJHk8-`bU8}O3p*&ue`Lc7F2hj&#(%KZDqKIrp{f((E#~Nc)5B z(5>s4?B*x6V??@}fR#cMnSR$2B2XBBua29%2O7~ZqQLLSQKpN=X!dy=A-_a;8EIEZ zE;Y4AxZW%BcG0())aFp-2aRWPagsf%G&DER9Pv@GLNz$=IiRXijs`)jE}&2}uMn9+*fjBD&DkhZ0J}}&%)s#2 zhc9aECe_WO>PO4g`Z&UyN{4X~a|t!k2Aoq)-L4_4hIl=4)pE~S;w?g=;k7aABmlefv1+s#I*n^nVZ zRZY3^ZTYS$Ts}*pm`?Vzo_hIQSAUb|$%75w71?KnND(By%0p5Te@IdOJfobW45V+Y zL8Q^DS9Zugi<}a4nObRD4`3G8A;Vy`0R*mf%wGdL7uvT#Y^>@WipK{qW8`&3vzET5 zhz+p$rP7)EOUQYEkC!Y*0F+hYVr@}~m;h@OBGM&Wg89BZcGXF;DC9*^h_jQ&%S(cU4dO?P%=-%T{U!7X z6QhA#BDiiyo?u)&D{N1F01deXuHx*FGqO2uD7+V#pIXt2Xondn%D4_qr-)HM2PIL7 z+6KDU89##r5}_I(_bfe70YhW@$eJB%QoGU8GR#l&#jiZ~bjkiHg%X}l7h$50Cc`~6 z60Ml^8L|KBX$1@^GVD+3TQ?qwhcs*Qp&8XrS#_t0TycO)j!l+5UBLelPRo8^te>>Z3G z`0D85af$@A<}B9pVsTlZ8lgnkp^o#urz0o!4<-f)p&4 z#)_VXt^0Kd-$1p`06O{%ka~>iVD$u!H_MJk{Js6Sq8*N*-iiQ2V?$U@^T64j&uC6cE!;xAKbhwg6;k9zw!O~@~ z=RRegOITn{={)g?dWD^+WEz6c>&Y+g-&y#z;X_kWmtu#QiUh%G zOQXzqpkdFhV9KWisZKs{W;<0?A*|jbX-#--&NGpl-%eYC)6IQ*YrSzR_OfeRKvexp zyj)GXM7xn&a2OgNYdDKPJx3l*;)eULI$TNN1|CcD-)OuXl98%>w-Goj%Z~ZgF0Y(s ztVo@^$^WWDkY>GldrdKf1wG1RiTIbw=|`Ke0e!oHn}Bl1?FA%1YgFsSDgge=fj#xE32uOIbRXc z);_^)^B16zqJx|(v0y6a7P#%qFUFzKiWW{pZM<(UV2IQjcLRg8?{-@{-qQ6sqcaUK= zZsar1FqCS1#A_GE)8)9D_}B8dZLWfLcraTsALg~r+kTmRgzoE3zk%_rcl&ULB|ys3}2-Zdz3$6oar#UVaJ_>{|v?k_e|iknXbOG#b% ze=?~x{sFjM;x*ntj7c0AE*u z!&4wJ0YGeY^n&EG@M8ebaX}YRA$VSG0#n#i5tfa4jy+xOUmjo_8v~Mc2$%?V%sym{ z3*+z-Qc$|Gia800&Ng1bV_x0eB6zSCYry6Lk*7v@AkaAi$960Nh{}J?1taY=;PPL! zO5!W-)Kp^0amN_`D#k=)HGlr_Tj^x`j=pE* zUKHu$n%k}Yyu8;pGUndFBEZeQEXNbAI&t5`vwB}i^IYy2?auab_RJ4^Y{Nhlm|*Dl zgbLnx*NL)(u^ye4jQrI~xyRjhJIi@pJjM;&QDWMQ1Ml6co&qGqSO2mL;G}1yab{XE z`e3BYq`!~8H1vVhHh?b7(Y#ab2cSQpR+nHv4@dG;G{k++mRSSdYv>qVHr@txyu1gE z>V4t%;_rQpgm*&bK|=Kj70#K)c|6r?Crh7NRfW=f(Br!Y7J$XNOid>6nNsavy9)^W zHjwdT?)n&PhyjdGX2yUW+6uPGxsS?%JE-5b7U7(7<%Q*{x_?$I zq#AiS=_sRIO^jRPqZ}|sS^TT+9GVgh^Rk)(1`!ZqmLia~#Pl8Z>PaG)ZD_~;0EZ7; zt#bStJ|TkRe%n6t#=cvrmNU&INIe9WI6JtI&|grsa)7rQ0TafNL;#(_=t;`JN45*w zm|dZs^NU2K@vqMHL}Q|$$NfHS9!zOx2oH4KNBbXp(|S!M)Xou}qA8ScSKZm=${lY} zOTVo?sw+JFt+FvQtzSDv9!O!W>cDZU&x#(ay3^4<13gV|zjwxq8+l8c=#=SxNVXa^ z;Cx==_=sPjEB<$6s-ft@L;UtO=H*-lSkWMHxTVf<<*&hjxW+Eau?muc_AEB0af>81838-iN+>f2MKF~-kIoj_f(Ct3EkHu2K_VJd3~g*=)8d#sw_ytm z*L(X6g-XtsNG0}d_qmYY7+x!-?7H8;egbvSLOvONPRVWmr>#7UpG_Y<#zg7TI{#{! zdbBwZm0<6sK&Z}SSW0p(O?XL4;CUM2z(ARzm;Hs%4n%MEf!J~BJwPTHZJ}pk0+w$P zE%)qO(Rd&kt_S!rf}KpZ8awo^fZ*T>Q2TK(RX<_tL)0im1j8jWA`!Zz{mx>8-tSD|X&R9v_w~0zT>KryIFmt;6!Q zuJ~siOc`@*4k;vpu1vWk94QQdB9Yeuc zDE4~0SttYR-$bms886qXqNE(#(b)%`IT{^92arBT0I@PQ4H7(pl|bP!FmMU^{zT^v zL}Pxa87N@p?3iE#io$l|FG1ILy9eB~(Em6aG>aPu;;uUfn)hK!D#R)*_imuxH4c|R zOvlSJAccP)=Ey6fFG~3MWmMny3F%uR{ycYzSe=2ms#~V9xY6^KvOkTbA5Y;;?IL|5 zR5G`+|4(lT^MpVRobAvz7GstTzG4PvIwi{(*asF1iaoz^=c1l1YsSY-3F5kCb`!II z`MXGhbu38ew}yKYx0cFTgznztGQZv%eSpG!;lrtZLRP~mSx%jCn@Ici==D*`587Nm zvdO9kic>Gy5AKv?o2-aRD|iS^+0FL-Kkq)2dpPXv7gyyfhvCNE7Cuz=K03!I2`0$t zb>-qUhk2IuRYI`*?VwtkuKE+^`QdsVKLS3ROB#$twk6nc^+RS79eQtNVwW$M-zgR~ zrTV>yy7IkEX=pXtqP>0+j5|Hs`($R8?qRO+YQ1IN(7RK)xG6@M#{$K_^RAbh!89%B z$SC;{A-+}7{P%FP>v#!uD@m4Oj8Y+qbrbwQWY38LV~)bQSJ-w6Gf9O6TAw|)5MaPc z|EWOOlu#n_`&)hZ3yfQ_LnyLo;>?bUH91x2XT_JaQ`IyMQ~s!Trsl2Y1jN~*LT1LB zma2oHP1( zy-xP3DR~TQuc`WG;V3c-hht~YvhCw!lFp&&-R=>&g|h=2|M@_g8ik(V^0?#PesImq zYSvcvsqTl*O=A%QlFa*+SH?PKkX6);kjR@&N5ZCn7GGLYk;+8v{U5<2)A8OdH-F-V z%FpB0%ah%js2M*H7UkG{y+JSq%r-s{tFq-}l}pkd)RWI;R8V{3LSd13FkFdqH z55PVhjqc&iu`ZHI_+bh>sjK7Q9>FNKpP2!8du36N71iR1vLTvXb0DIIp)Fv4;@b9qk4*@=Lmc56YWKb-%!ci1tC=ikowAL zVZfL_10Dwjg0aDN$272TU$6=?ifY@stqKd11M}c{*m_`W3X+M%yn`@|gm0TpkDAU9 zlg=jf{lKOc2mivO(1oj$s`9n@ELyI$ibz7{wa=sv+WPiGt0~P_+}p{IAZ0u7xy{gb zU(aS;?$}-l0EjBo{jn~fujo$hE$aBBV;LOWuH`^+!hn^m7*fO)YNxSbr|y5K%~TWK zTlezQjgPOcl2wUebus%BZHPsHvt2(Yw%V>ah9SPw9qa=F^I{eLPDbA8%A~50?nRL3 z_h>|8lqgvC0VCWEk!p41wqO3z&pZ{QbHpl!t$tPN4lP#lLJUia9z)bRVe0MuNmWC#dRlEY&!%fDGxF_;24!eA2+^mbk(^_6yR8Yorr()isEj+ct7urWXD~RxJQdAgvAV0VO#N&y?r9x zbwb3O!1=v1;=^h_L~5|Q?>vk1K7288*N)16%;AkMuZtXK=~4Qkk~w6?H%yV5lLn%K z{I#|3^{}>5)Bl&=r6aNrq_##E;8cAcd&*4TaYgrI^7)f@C|_JnBz#`^$l@f1HfvBQ znVd7Cpy%o5kA9)SK;L@$e0^OeQ_A( z-^}C?z`0hMwf@Ql&a-MTjm)~`=+2*{tCH!!DV=}l^FcM?h2`B2FuVr->uS zS~P|*1B+`LhA)XAAA!pC6-@&$(m!_C=LMAA5XPF5H71)En3uIo(MD7T8D*dNI@;eq ztI>GO=|J@)TGkbZY7NJdSqBo3*KZC`mSU}tT7B}zWPhmLM&6m-RLVgOccAo+$KSPO zA;?}-)`z<7TgapqJmY|QqR~@xmt~82+1y5@U^~9)`H~oHu>Bgt=W93tG%BJVTV#}jOYhDC?ZMO zh5@9Ju!QU9>Zym~>aSl$?wRozt6FUVCeJ%`ud|P?-U9GX!0Z+je*a<^C??NJ(qhz+ zAB@-4a#W;O{5f=CHSnCE)c?`wgG%e$Pv2SW3M09697Gxm%;S2pb-%=Yc$M)oa4OKz zsxQ&ytZV#IC&2SL!a>~E<&eAh+Kl4uu!TTL(VWFmFfq}V`@gjT2devQE!noO5;R(g6EDcdaIz(!Jt$Yhv4t%J0#Ok zr_xs)Ge`WiO=!gj`$<_n<>s+4 z=MB;!ov%#2rGsO@c*gaoz=AZB9JL?cAtta1m<4^-_Z`*8M80^NMFPIGx>BU>-;Z4< zPF*`f%}AGe8m5v4bUU8N3xzh(j?TI5H@{~Yza*=S;rQnBE+$%ymn;4Bx7q%AVU8P+ zg5%*gZxsWGiE=H2S=gE@FdTBXW@@CAaBt+ay?=2C*&hIebCrw+0B2vDeV84Nw>`T1 z@U{!5Dh-|qOR_zJ!Ut%(Z#dSFgV3UZ^~caWn%%3)+Cv{cG=koqW>q}YqV%Mug);aD zlgHP(MqI|^VaAiH$LCdDFip4FbYCG2E=x=zeXgOFkX)|SgEIgBi>q&n&MexxjBT@G z+qPY?ZM$OIs@VBbv2EM7ZJV8YyZ;_N`sIwZvChNZFXzlT*IYv87Z1iv ztsfcBr6#cX5YibgkABio(tK;UH(URz4#7L;Nk5m1P?m*$p*hARMo9`fq$8(=0;zCu zYzxfnm6zt&U1@zz)NYuJsH>w@SMio2t_tXYu@mO@Cu@)RP{j~0P(p_$G(vFB^E=!i zht5vy?DQ7y@!*VlCZ6s2Wr7g5kBp?}|NZ^U7oka%=YCB?8%8M*tzKtNx?Jx&UMqnP zQYP}L$21ND3RmNY9ffiq z%B(K4ELSy;u;pyLh;RORBF$^^PahKIjP&EzqwHqhv!s@XY~^qdB2Dn5`jo;?Iq1q? z^IH!m{<=1z&sRzcmNjs+KXwS6{e$Hv8;qNC>JCAY(Z4#WUt*Kspu;=2d5OooaOp zOHzA`Qd@|Uo0Mp0vXUcih#cNKe6ii-z3XwpyP9HHx$b&Jd)`1pk8n8AUQ%;BTo;Km z!|5G9ts58~nb%x|AFN_hkRRSAIjk#BoB9!bOm<8ke_6i?Z)fay0)JC+Hzf)BF9(zL23I zjg6x4IVJqX$Lemiui_kV1FhHZLXGds2b1ls|9sSuN#Rfv@RwuIg5c0MJ5jYt#EbGn zpZHbaf*a7x+rjl3%Ub=s1wV{8lr%n@NnO>u{!o$x+g_`Lld|8|0Z zYc{0+p`V|A49B;@8mhas#2U46ht3t${px-w2~>loug$Z7rpxbP3dq3^1`3L%uVeAN zwl8y6x~ckTl*mQSRS#2z(t~>SvX_tU=MI1QKaBG|l;z=LIWKP-G?7tH=Vmm*_@oN; z)TP+pnB^AdjX%_V(mufGGqr!-C-eJ9t3e5>W_+)@(lAI)3P;S1-n9nXx7qFLJ_+%>XtECpMrX{ zAOc!h`BT(Zp92x^mUX(PiVUgi5Q`ENc&IZp-A8S?Lkg!CMJ(8!^u;74e~F!}rNV3haAGZ562V~%DD z7$!fuWR5-695{T{37it9<+X} z@4$QAG_E*jM-&q5$N#eVV}Dl13kE&s%JwtZhWAZnS^<2ZNl*VZ)a1t zY_bRpgGnusQ;O0(8$RLF;tIz`9u;iQiYdYQCYZ(fAo;gkL;e-DPy6nJZ@#8ieGX8i z-`@3us}Hz_i=o{TZtsxBV^_u@Fhhn7E16!%Z*IS6w|(bkroOG<^qSeZSH5FyK9

pepj?qA+rki+L8OQ|X$ddxHplh# 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 literal 0 HcmV?d00001 diff --git a/Kubeflow/sed.sh b/Kubeflow/sed.sh new file mode 100644 index 00000000..c2310f89 --- /dev/null +++ b/Kubeflow/sed.sh @@ -0,0 +1,90 @@ +#!/bin/bash + +registry="" +dir="" + +if [ $# -eq 2 ]; then + registry=$1 + dir=$2 +else + echo "[$0] ERROR!! Invalid argument count" + echo "[$0] [Usage] $0 192.168.6.110:5000 ${KF_DIR}/kustomize" + exit 1 +fi + +echo "[$0] Modify images in Kustomize manifest files" + +sed -i "s/newName: gcr.io\/ml-pipeline\/api-server/newName: ${registry}\/gcr.io\/ml-pipeline\/api-server/g" ${dir}/api-service/base/kustomization.yaml +sed -i "s/newName: gcr.io\/kubeflow-images-public\/kubernetes-sigs\/application/newName: ${registry}\/gcr.io\/kubeflow-images-public\/kubernetes-sigs\/application/g" ${dir}/application/base/kustomization.yaml +sed -i "s/image: argoproj\/argocli/image: ${registry}\/argoproj\/argocli/g" ${dir}/argo/base/deployment.yaml +sed -i "s/image: argoproj\/workflow-controller/image: ${registry}\/argoproj\/workflow-controller/g" ${dir}/argo/base/deployment.yaml +sed -i "s/image: gcr.io\/kubeflow-images-public\/ingress-setup/image: ${registry}\/gcr.io\/kubeflow-images-public\/ingress-setup/g" ${dir}/bootstrap/base/stateful-set.yaml +sed -i "s/newName: gcr.io\/kubeflow-images-public\/centraldashboard/newName: ${registry}\/gcr.io\/kubeflow-images-public\/centraldashboard/g" ${dir}/centraldashboard/base/kustomization.yaml +sed -i "s/image: \"quay.io\/jetstack\/cert-manager-cainjector/image: \"${registry}\/quay.io\/jetstack\/cert-manager-cainjector/g" ${dir}/cert-manager/base/deployment.yaml +sed -i "s/image: \"quay.io\/jetstack\/cert-manager-webhook/image: \"${registry}\/quay.io\/jetstack\/cert-manager-webhook/g" ${dir}/cert-manager/base/deployment.yaml +sed -i "s/image: \"quay.io\/jetstack\/cert-manager-controller/image: \"${registry}\/quay.io\/jetstack\/cert-manager-controller/g" ${dir}/cert-manager/base/deployment.yaml +sed -i "s/image: \"docker.io\/istio\/proxyv2/image: \"${registry}\/docker.io\/istio\/proxyv2/g" ${dir}/kfserving-gateway\/base\/deployment.yaml +sed -i "s/image: \"docker.io\/istio\/proxyv2/image: \"${registry}\/docker.io\/istio\/proxyv2/g" ${dir}/cluster-local-gateway\/base\/deployment.yaml +sed -i "s/newName: gcr.io\/kubeflow-images-public\/jupyter-web-app/newName: ${registry}\/gcr.io\/kubeflow-images-public\/jupyter-web-app/g" ${dir}/jupyter-web-app\/base\/kustomization.yaml +sed -i "s/gcr.io\/kubeflow-images-public\/tensorflow-1.14.0-notebook-cpu/${registry}\/gcr.io\/kubeflow-images-public\/tensorflow-1.14.0-notebook-cpu/g" ${dir}/jupyter-web-app/base/config-map.yaml +sed -i "s/gcr.io\/kubeflow-images-public\/tensorflow-1.15.2-notebook-cpu/${registry}\/gcr.io\/kubeflow-images-public\/tensorflow-1.15.2-notebook-cpu/g" ${dir}/jupyter-web-app/base/config-map.yaml +sed -i "s/gcr.io\/kubeflow-images-public\/tensorflow-1.15.2-notebook-gpu/${registry}\/gcr.io\/kubeflow-images-public\/tensorflow-1.15.2-notebook-gpu/g" ${dir}/jupyter-web-app/base/config-map.yaml +sed -i "s/gcr.io\/kubeflow-images-public\/tensorflow-2.1.0-notebook-cpu/${registry}\/gcr.io\/kubeflow-images-public\/tensorflow-2.1.0-notebook-cpu/g" ${dir}/jupyter-web-app/base/config-map.yaml +sed -i "s/gcr.io\/kubeflow-images-public\/tensorflow-2.1.0-notebook-gpu/${registry}\/gcr.io\/kubeflow-images-public\/tensorflow-2.1.0-notebook-gpu/g" ${dir}/jupyter-web-app/base/config-map.yaml +sed -i "s/\"image\": \"gcr.io\/kubeflow-images-public\/katib\/v1alpha3\/file-metrics-collector/\"image\": \"${registry}\/gcr.io\/kubeflow-images-public\/katib\/v1alpha3\/file-metrics-collector/g" ${dir}/katib-controller\/base\/katib-configmap.yaml +sed -i "s/\"image\": \"gcr.io\/kubeflow-images-public\/katib\/v1alpha3\/file-metrics-collector/\"image\": \"${registry}\/gcr.io\/kubeflow-images-public\/katib\/v1alpha3\/file-metrics-collector/g" ${dir}/katib-controller\/base\/katib-configmap.yaml +sed -i "s/\"image\": \"gcr.io\/kubeflow-images-public\/katib\/v1alpha3\/tfevent-metrics-collector/\"image\": \"${registry}\/gcr.io\/kubeflow-images-public\/katib\/v1alpha3\/tfevent-metrics-collector/g" ${dir}/katib-controller\/base\/katib-configmap.yaml +sed -i "s/\"image\": \"gcr.io\/kubeflow-images-public\/katib\/v1alpha3\/suggestion-hyperopt/\"image\": \"${registry}\/gcr.io\/kubeflow-images-public\/katib\/v1alpha3\/suggestion-hyperopt/g" ${dir}/katib-controller\/base\/katib-configmap.yaml +sed -i "s/\"image\": \"gcr.io\/kubeflow-images-public\/katib\/v1alpha3\/suggestion-chocolate/\"image\": \"${registry}\/gcr.io\/kubeflow-images-public\/katib\/v1alpha3\/suggestion-chocolate/g" ${dir}/katib-controller\/base\/katib-configmap.yaml +sed -i "s/\"image\": \"gcr.io\/kubeflow-images-public\/katib\/v1alpha3\/suggestion-hyperband/\"image\": \"${registry}\/gcr.io\/kubeflow-images-public\/katib\/v1alpha3\/suggestion-hyperband/g" ${dir}/katib-controller\/base\/katib-configmap.yaml +sed -i "s/\"image\": \"gcr.io\/kubeflow-images-public\/katib\/v1alpha3\/suggestion-skopt/\"image\": \"${registry}\/gcr.io\/kubeflow-images-public\/katib\/v1alpha3\/suggestion-skopt/g" ${dir}/katib-controller\/base\/katib-configmap.yaml +sed -i "s/\"image\": \"gcr.io\/kubeflow-images-public\/katib\/v1alpha3\/suggestion-hyperopt/\"image\": \"${registry}\/gcr.io\/kubeflow-images-public\/katib\/v1alpha3\/suggestion-hyperopt/g" ${dir}/katib-controller\/base\/katib-configmap.yaml +sed -i "s/\"image\": \"gcr.io\/kubeflow-images-public\/katib\/v1alpha3\/suggestion-nasrl/\"image\": \"${registry}\/gcr.io\/kubeflow-images-public\/katib\/v1alpha3\/suggestion-nasrl/g" ${dir}/katib-controller\/base\/katib-configmap.yaml +sed -i "s/image: docker.io\/kubeflowkatib\/mxnet-mnist/image: ${registry}\/docker.io\/kubeflowkatib\/mxnet-mnist/g" ${dir}/katib-controller\/base\/trial-template-configmap.yaml +sed -i "s/newName: gcr.io\/kubeflow-images-public\/katib\/v1alpha3\/katib-controller/newName: ${registry}\/gcr.io\/kubeflow-images-public\/katib\/v1alpha3\/katib-controller/g" ${dir}/katib-controller/base/kustomization.yaml +sed -i "s/newName: gcr.io\/kubeflow-images-public\/katib\/v1alpha3\/katib-db-manager/newName: ${registry}\/gcr.io\/kubeflow-images-public\/katib\/v1alpha3\/katib-db-manager/g" ${dir}/katib-controller/base/kustomization.yaml +sed -i "s/newName: gcr.io\/kubeflow-images-public\/katib\/v1alpha3\/katib-ui/newName: ${registry}\/gcr.io\/kubeflow-images-public\/katib\/v1alpha3\/katib-ui/g" ${dir}/katib-controller/base/kustomization.yaml +sed -i "s/image: mysql/image: ${registry}\/mysql/g" ${dir}/katib-controller\/base\/katib-mysql-deployment.yaml +sed -i "s/image: mysql/image: ${registry}\/mysql/g" ${dir}/mysql\/base\/deployment.yaml +sed -i "s/image: mysql/image: ${registry}\/mysql/g" ${dir}/metadata\/overlays\/db\/metadata-db-deployment.yaml +sed -i "s/image: \"docker.io\/istio\/proxyv2/image: \"${registry}\/docker.io\/istio\/proxyv2/g" ${dir}/kfserving-gateway\/base\/deployment.yaml +sed -i "s/image: \"docker.io\/istio\/proxyv2/image: \"${registry}\/docker.io\/istio\/proxyv2/g" ${dir}/cluster-local-gateway\/base\/deployment.yaml +sed -i "s/\"image\" : \"gcr.io\/kfserving\/batcher/\"image\" : \"${registry}\/gcr.io\/kfserving\/batcher/g" ${dir}/kfserving-install\/base\/config-map.yaml +sed -i "s/\"image\" : \"gcr.io\/kfserving\/alibi-explainer/\"image\" : \"${registry}\/gcr.io\/kfserving\/alibi-explainer/g" ${dir}/kfserving-install\/base\/config-map.yaml +sed -i "s/\"image\" : \"gcr.io\/kfserving\/logger/\"image\" : \"${registry}\/gcr.io\/kfserving\/logger/g" ${dir}/kfserving-install\/base\/config-map.yaml +sed -i "s/\"image\": \"tensorflow\/serving/\"image\": \"${registry}\/tensorflow\/serving/g" ${dir}/kfserving-install\/base\/config-map.yaml +sed -i "s/\"image\": \"mcr.microsoft.com\/onnxruntime\/server/\"image\": \"${registry}\/mcr.microsoft.com\/onnxruntime\/server/g" ${dir}/kfserving-install\/base\/config-map.yaml +sed -i "s/\"image\": \"gcr.io\/kfserving\/sklearnserver/\"image\": \"${registry}\/gcr.io\/kfserving\/sklearnserver/g" ${dir}/kfserving-install\/base\/config-map.yaml +sed -i "s/\"image\": \"gcr.io\/kfserving\/xgbserver/\"image\": \"${registry}\/gcr.io\/kfserving\/xgbserver/g" ${dir}/kfserving-install\/base\/config-map.yaml +sed -i "s/\"image\": \"gcr.io\/kfserving\/pytorchserver/\"image\": \"${registry}\/gcr.io\/kfserving\/pytorchserver/g" ${dir}/kfserving-install\/base\/config-map.yaml +sed -i "s/\"image\": \"nvcr.io\/nvidia\/tensorrtserver/\"image\": \"${registry}\/nvcr.io\/nvidia\/tensorrtserver/g" ${dir}/kfserving-install\/base\/config-map.yaml +sed -i "s/\"image\" : \"gcr.io\/kfserving\/storage-initializer/\"image\" : \"${registry}\/gcr.io\/kfserving\/storage-initializer/g" ${dir}/kfserving-install\/base\/config-map.yaml +sed -i "s/image: gcr.io\/kfserving\/kfserving-controller/image: ${registry}\/gcr.io\/kfserving\/kfserving-controller/g" ${dir}/kfserving-install\/base\/statefulset.yaml +sed -i "s/image: gcr.io\/kubebuilder\/kube-rbac-proxy/image: ${registry}\/gcr.io\/kubebuilder\/kube-rbac-proxy/g" ${dir}/kfserving-install\/base\/statefulset.yaml +sed -i "s/image: tmaxcloudck\/hypercloud-kfserving/image: ${registry}\/tmaxcloudck\/hypercloud-kfserving/g" ${dir}/kfserving-install\/base\/statefulset.yaml +sed -i "s/newName: gcr.io\/knative-releases\/knative.dev\/serving\/cmd/newName: ${registry}\/gcr.io\/knative-releases\/knative.dev\/serving\/cmd/g" ${dir}/knative-install/base/kustomization.yaml +sed -i "s/image: gcr.io\/knative-releases\/knative.dev\/serving\/cmd/image: ${registry}\/gcr.io\/knative-releases\/knative.dev\/serving\/cmd/g" ${dir}/knative-install/base/image.yaml +sed -i "s/image: metacontroller\/metacontroller/image: ${registry}\/metacontroller\/metacontroller/g" ${dir}/metacontroller\/base\/stateful-set.yaml +sed -i "s/image: gcr.io\/kubeflow-images-public\/metadata-frontend/image: ${registry}\/gcr.io\/kubeflow-images-public\/metadata-frontend/g" ${dir}/metadata\/base\/metadata-ui-deployment.yaml +sed -i "s/image: gcr.io\/kubeflow-images-public\/metadata/image: ${registry}\/gcr.io\/kubeflow-images-public\/metadata/g" ${dir}/metadata\/base\/metadata-deployment.yaml +sed -i "s/image: gcr.io\/ml-pipeline\/envoy:metadata-grpc/image: ${registry}\/gcr.io\/ml-pipeline\/envoy:metadata-grpc/g" ${dir}/metadata\/base\/metadata-envoy-deployment.yaml +sed -i "s/image: gcr.io\/tfx-oss-public\/ml_metadata_store_server/image: ${registry}\/gcr.io\/tfx-oss-public\/ml_metadata_store_server/g" ${dir}/metadata\/base\/metadata-deployment.yaml +sed -i "s/image: gcr.io\/kubeflow-images-public\/metadata-frontend/image: ${registry}\/gcr.io\/kubeflow-images-public\/metadata-frontend/g" ${dir}/metadata\/base\/metadata-ui-deployment.yaml +sed -i "s/image: minio\/minio/image: ${registry}\/minio\/minio/g" ${dir}/minio\/base\/deployment.yaml +sed -i "s/image: tmaxcloudck\/notebook-controller-go:b0.0.2/image: ${registry}\/tmaxcloudck\/notebook-controller-go:b0.0.2/g" ${dir}/notebook-controller\/base\/deployment.yaml +sed -i "s/newName: gcr.io\/ml-pipeline\/persistenceagent/newName: ${registry}\/gcr.io\/ml-pipeline\/persistenceagent/g" ${dir}/persistent-agent/base/kustomization.yaml +sed -i "s/newName: gcr.io\/ml-pipeline\/frontend/newName: ${registry}\/gcr.io\/ml-pipeline\/frontend/g" ${dir}/pipelines-ui/base/kustomization.yaml +sed -i "s/newName: gcr.io\/ml-pipeline\/viewer-crd-controller/newName: ${registry}\/gcr.io\/ml-pipeline\/viewer-crd-controller/g" ${dir}/pipelines-viewer/base/kustomization.yaml +sed -i "s/newName: gcr.io\/ml-pipeline\/visualization-server/newName: ${registry}\/gcr.io\/ml-pipeline\/visualization-server/g" ${dir}/pipeline-visualization-service/base/kustomization.yaml +sed -i "s/newName: gcr.io\/kubeflow-images-public/newName: ${registry}\/gcr.io\/kubeflow-images-public/g" ${dir}/profiles/base/kustomization.yaml +sed -i "s/newName: gcr.io\/kubeflow-images-public\/pytorch-operator/newName: ${registry}\/gcr.io\/kubeflow-images-public\/pytorch-operator/g" ${dir}/pytorch-operator/base/kustomization.yaml +sed -i "s/newName: gcr.io\/ml-pipeline\/scheduledworkflow/newName: ${registry}\/gcr.io\/ml-pipeline\/scheduledworkflow/g" ${dir}/scheduledworkflow/base/kustomization.yaml +sed -i "s/image: 'docker.io\/seldonio\/seldon-core-operator/image: '${registry}\/docker.io\/seldonio\/seldon-core-operator/g" ${dir}/seldon-core-operator\/base\/resources.yaml +sed -i "s/image: gcr.io\/spark-operator\/spark-operator/image: ${registry}\/gcr.io\/spark-operator\/spark-operator/g" ${dir}/spark-operator\/base\/deploy.yaml +sed -i "s/image: gcr.io\/spark-operator\/spark-operator/image: ${registry}\/gcr.io\/spark-operator\/spark-operator/g" ${dir}/spark-operator\/base\/crd-cleanup-job.yaml +sed -i "s/image: gcr.io\/google_containers\/spartakus-amd64/image: ${registry}\/gcr.io\/google_containers\/spartakus-amd64/g" ${dir}/spartakus\/base\/deployment.yaml +sed -i "s/image: tensorflow\/tensorflow/image: ${registry}\/tensorflow\/tensorflow/g" ${dir}/tensorboard\/base\/deployment.yaml +sed -i "s/newName: gcr.io\/kubeflow-images-public\/tf_operator/newName: ${registry}\/gcr.io\/kubeflow-images-public\/tf_operator/g" ${dir}/tf-job-operator/base/kustomization.yaml +sed -i "s/newName: gcr.io\/kubeflow-images-public\/admission-webhook/newName: ${registry}\/gcr.io\/kubeflow-images-public\/admission-webhook/g" ${dir}/webhook/base/kustomization.yaml + +echo "[$0] Done" From 99785890c93196f7ea5e59df018623894ed95b2a Mon Sep 17 00:00:00 2001 From: wooyoungmin <47769117+minwy23@users.noreply.github.com> Date: Wed, 21 Oct 2020 11:05:54 +0900 Subject: [PATCH 041/106] Update README.md --- Kubeflow/README.md | 48 ++++++++++++++++++++++++++++++++++------------ 1 file changed, 36 insertions(+), 12 deletions(-) diff --git a/Kubeflow/README.md b/Kubeflow/README.md index c802fc64..2de0af2e 100644 --- a/Kubeflow/README.md +++ b/Kubeflow/README.md @@ -39,28 +39,46 @@ 설치를 진행하기 전 아래의 과정을 통해 필요한 이미지 및 yaml 파일을 준비한다. 1. 이미지 준비 * 아래 링크를 참고하여 폐쇄망에서 사용할 registry를 구축한다. - * 폐쇄망 registry 구축 링크 - * 아래 명령어를 수행하여 Kubeflow 설치 시 필요한 이미지들을 위에서 구축한 registry에 push한다. + * https://github.com/tmax-cloud/hypercloud-install-guide/blob/4.1/Image_Registry/README.md + * 자신이 사용할 registry의 IP와 port를 입력한다. + ```bash + $ export REGISTRY_ADDRESS=1.1.1.1:5000 + ``` + * 아래 명령어를 수행하여 Kubeflow 설치 시 필요한 이미지들을 위에서 구축한 registry에 push하고 이미지들을 tar 파일로 저장한다. tar 파일은 images 디렉토리에 저장된다. ```bash $ wget https://raw.githubusercontent.com/tmax-cloud/hypercloud-install-guide/4.1/Kubeflow/image-push.sh $ wget https://raw.githubusercontent.com/tmax-cloud/hypercloud-install-guide/4.1/Kubeflow/imagelist $ chmod +x ./image-push.sh - $ ./image-push.sh <> + $ ./image-push.sh ${REGISTRY_ADDRESS} + ``` + * 아래 명령어를 수행하여 registry에 이미지들이 잘 push되었는지, 그리고 필요한 이미지들이 tar 파일로 저장되었는지 확인한다. + ```bash + $ curl -X GET ${REGISTRY_ADDRESS}/v2/_catalog + $ ls ./images + ``` + * (Optional) 만약 필요한 이미지들을 pull받아서 tar 파일로 저장하는 작업과 로드하여 push하는 작업을 따로 수행하고자 한다면 image-push.sh이 아니라 image-save.sh, image-load.sh를 각각 실행하면 된다. image-load.sh은 images 디렉토리와 같은 경로에서 실행해야만 한다. + ```bash + $ wget https://raw.githubusercontent.com/tmax-cloud/hypercloud-install-guide/4.1/Kubeflow/image-save.sh + $ chmod +x ./image-save.sh + $ ./image-save.sh + $ ls ./images ``` - * 아래 명령어를 수행하여 registry에 이미지들이 잘 push되었는지 확인한다. ```bash - $ curl -X GET <>/v2/_catalog + $ wget https://raw.githubusercontent.com/tmax-cloud/hypercloud-install-guide/4.1/Kubeflow/image-load.sh + $ chmod +x ./image-load.sh + $ ./image-load.sh ${REGISTRY_ADDRESS} + $ curl -X GET ${REGISTRY_ADDRESS}/v2/_catalog ``` 2. Yaml 파일 및 script 파일 준비 * 아래 명령어를 수행하여 Kubeflow 설치에 필요한 yaml 파일들과 script 파일들을 다운로드 받는다. ```bash $ wget https://raw.githubusercontent.com/tmax-cloud/hypercloud-install-guide/4.1/Kubeflow/sed.sh - $ wget https://raw.githubusercontent.com/tmax-cloud/hypercloud-install-guide/4.1/Kubeflow/kustomize.tar.gz - $ wget https://raw.githubusercontent.com/tmax-cloud/hypercloud-install-guide/4.1/Kubeflow/kfctl_hypercloud_kubeflow.v1.0.2.yaml + $ wget https://raw.githubusercontent.com/tmax-cloud/hypercloud-install-guide/4.1/Kubeflow/kustomize_local.tar.gz + $ wget https://raw.githubusercontent.com/tmax-cloud/hypercloud-install-guide/4.1/Kubeflow/kfctl_hypercloud_kubeflow.v1.0.2_local.yaml $ wget https://github.com/kubeflow/kfctl/releases/download/v1.0.2/kfctl_v1.0.2-0-ga476281_linux.tar.gz ``` 3. 앞으로의 진행 - * Step 0 ~ 4 중 Step 0, 2 비고를 참고하여 진행한다. 나머지는 그대로 진행하면 된다. + * Step 0 ~ 4 중 Step 0, 2, 3은 비고를 참고하여 진행한다. 나머지는 그대로 진행하면 된다. ## Install Steps 0. [kfctl 설치](https://github.com/tmax-cloud/hypercloud-install-guide/blob/4.1/Kubeflow/README.md#step-0-kfctl-%EC%84%A4%EC%B9%98) @@ -78,7 +96,7 @@ $ sudo mv kfctl /usr/bin ``` * 비고 : - * 폐쇄망 환경일 경우 첫 번째 명령어로 github에 있는 kfctl을 다운로드받는 대신 미리 준비한 kfctl을 다운받으면 된다. + * 폐쇄망 환경일 경우 kfctl_v1.0.2-0-ga476281_linux.tar.gz을 github에서 받는 것이 아니라 미리 다운로드 해둔 것을 사용하면 된다. ## Step 1. 설치 디렉토리 생성 * 목적 : `Kubeflow의 설치 yaml이 저장될 설치 디렉토리를 생성하고 해당 경로로 이동한다.` @@ -103,12 +121,12 @@ ``` * 정상적으로 완료되면 kustomize라는 디렉토리가 생성된다. * 비고 : - * 폐쇄망 환경일 경우 설치 디렉토리에 미리 다운로드받은 sed.sh, kustomize.tar.gz, kfctl_hypercloud_kubeflow.v1.0.2.yaml 파일을 옮긴다. + * 폐쇄망 환경일 경우 설치 디렉토리에 미리 다운로드받은 sed.sh, kustomize_local.tar.gz 파일을 옮긴다. * 아래 명령어를 통해 Kustomize 리소스의 압축을 풀고 yaml 파일들에서 이미지들을 pull 받을 registry를 바꿔준다. ```bash - $ tar xvfz kustomize.tar.gz + $ tar xvfz kustomize_local.tar.gz $ chmod +x ./sed.sh - $ ./sed.sh <> ${KF_DIR}/kustomize + $ ./sed.sh ${REGISTRY_ADDRESS} ${KF_DIR}/kustomize ``` ## Step 3. Kubeflow 배포 @@ -124,6 +142,12 @@ ![pasted image 0](https://user-images.githubusercontent.com/63379907/90479302-6aedb380-e169-11ea-8c6c-9c1b4e15517a.png) * 설치에는 약 10분 정도가 소요된다. * 비고 : + * 폐쇄망 환경일 경우 설치 디렉토리에 미리 다운로드받은 kfctl_hypercloud_kubeflow.v1.0.2_local.yaml 파일을 옮긴다. + * 아래 명령어를 수행하여 Kubeflow를 배포한다. + ```bash + $ export CONFIG_FILE=${KF_DIR}/kfctl_hypercloud_kubeflow.v1.0.2_local.yaml + $ kfctl apply -V -f ${CONFIG_FILE} + ``` * 기존 Kubeflow에서 수정된 점 * Istio 1.5.1 호환을 위해 KFServing의 controller 수정 * Workflow template을 사용하기 위한 argo controller 버전 업 From 1a8b5bce95c67d48b3bca7c2eab6e8684587b0e8 Mon Sep 17 00:00:00 2001 From: wooyoungmin <47769117+minwy23@users.noreply.github.com> Date: Wed, 21 Oct 2020 11:14:24 +0900 Subject: [PATCH 042/106] Update README.md --- Kubeflow/README.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/Kubeflow/README.md b/Kubeflow/README.md index 2de0af2e..c32cc9e9 100644 --- a/Kubeflow/README.md +++ b/Kubeflow/README.md @@ -56,15 +56,16 @@ $ curl -X GET ${REGISTRY_ADDRESS}/v2/_catalog $ ls ./images ``` - * (Optional) 만약 필요한 이미지들을 pull받아서 tar 파일로 저장하는 작업과 로드하여 push하는 작업을 따로 수행하고자 한다면 image-push.sh이 아니라 image-save.sh, image-load.sh를 각각 실행하면 된다. image-load.sh은 images 디렉토리와 같은 경로에서 실행해야만 한다. + * (Optional) 만약 설치에 필요한 이미지들을 pull받아서 tar 파일로 저장하는 작업과 로드하여 push하는 작업을 따로 수행하고자 한다면 image-push.sh이 아니라 image-save.sh, image-load.sh를 각각 실행하면 된다. + * image-save.sh을 실행하면 설치에 필요한 이미지들을 pull 받아서 images 디렉토리에 tar 파일로 저장한다. ```bash $ wget https://raw.githubusercontent.com/tmax-cloud/hypercloud-install-guide/4.1/Kubeflow/image-save.sh $ chmod +x ./image-save.sh $ ./image-save.sh $ ls ./images ``` + * 위에서 저장한 images 디렉토리와 image-load.sh을 폐쇄망 환경으로 옮긴 후 실행하면 폐쇄망 내 구축한 registry에 이미지들을 push할 수 있다. image-load.sh은 images 디렉토리와 같은 경로에서 실행해야만 한다. ```bash - $ wget https://raw.githubusercontent.com/tmax-cloud/hypercloud-install-guide/4.1/Kubeflow/image-load.sh $ chmod +x ./image-load.sh $ ./image-load.sh ${REGISTRY_ADDRESS} $ curl -X GET ${REGISTRY_ADDRESS}/v2/_catalog @@ -121,7 +122,7 @@ ``` * 정상적으로 완료되면 kustomize라는 디렉토리가 생성된다. * 비고 : - * 폐쇄망 환경일 경우 설치 디렉토리에 미리 다운로드받은 sed.sh, kustomize_local.tar.gz 파일을 옮긴다. + * 폐쇄망 환경일 경우 설치 디렉토리 ${KF_DIR}에 미리 다운로드받은 sed.sh, kustomize_local.tar.gz 파일을 옮긴다. * 아래 명령어를 통해 Kustomize 리소스의 압축을 풀고 yaml 파일들에서 이미지들을 pull 받을 registry를 바꿔준다. ```bash $ tar xvfz kustomize_local.tar.gz @@ -142,7 +143,7 @@ ![pasted image 0](https://user-images.githubusercontent.com/63379907/90479302-6aedb380-e169-11ea-8c6c-9c1b4e15517a.png) * 설치에는 약 10분 정도가 소요된다. * 비고 : - * 폐쇄망 환경일 경우 설치 디렉토리에 미리 다운로드받은 kfctl_hypercloud_kubeflow.v1.0.2_local.yaml 파일을 옮긴다. + * 폐쇄망 환경일 경우 설치 디렉토리 ${KF_DIR}에 미리 다운로드받은 kfctl_hypercloud_kubeflow.v1.0.2_local.yaml 파일을 옮긴다. * 아래 명령어를 수행하여 Kubeflow를 배포한다. ```bash $ export CONFIG_FILE=${KF_DIR}/kfctl_hypercloud_kubeflow.v1.0.2_local.yaml From 834372f20acec9b73eb818023897aa85142a8cb4 Mon Sep 17 00:00:00 2001 From: wooyoungmin <47769117+minwy23@users.noreply.github.com> Date: Wed, 21 Oct 2020 11:14:58 +0900 Subject: [PATCH 043/106] Update README.md --- Kubeflow/README.md | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/Kubeflow/README.md b/Kubeflow/README.md index c32cc9e9..74ce17dd 100644 --- a/Kubeflow/README.md +++ b/Kubeflow/README.md @@ -57,19 +57,19 @@ $ ls ./images ``` * (Optional) 만약 설치에 필요한 이미지들을 pull받아서 tar 파일로 저장하는 작업과 로드하여 push하는 작업을 따로 수행하고자 한다면 image-push.sh이 아니라 image-save.sh, image-load.sh를 각각 실행하면 된다. - * image-save.sh을 실행하면 설치에 필요한 이미지들을 pull 받아서 images 디렉토리에 tar 파일로 저장한다. - ```bash - $ wget https://raw.githubusercontent.com/tmax-cloud/hypercloud-install-guide/4.1/Kubeflow/image-save.sh - $ chmod +x ./image-save.sh - $ ./image-save.sh - $ ls ./images - ``` - * 위에서 저장한 images 디렉토리와 image-load.sh을 폐쇄망 환경으로 옮긴 후 실행하면 폐쇄망 내 구축한 registry에 이미지들을 push할 수 있다. image-load.sh은 images 디렉토리와 같은 경로에서 실행해야만 한다. - ```bash - $ chmod +x ./image-load.sh - $ ./image-load.sh ${REGISTRY_ADDRESS} - $ curl -X GET ${REGISTRY_ADDRESS}/v2/_catalog - ``` + * image-save.sh을 실행하면 설치에 필요한 이미지들을 pull 받아서 images 디렉토리에 tar 파일로 저장한다. + ```bash + $ wget https://raw.githubusercontent.com/tmax-cloud/hypercloud-install-guide/4.1/Kubeflow/image-save.sh + $ chmod +x ./image-save.sh + $ ./image-save.sh + $ ls ./images + ``` + * 위에서 저장한 images 디렉토리와 image-load.sh을 폐쇄망 환경으로 옮긴 후 실행하면 폐쇄망 내 구축한 registry에 이미지들을 push할 수 있다. image-load.sh은 images 디렉토리와 같은 경로에서 실행해야만 한다. + ```bash + $ chmod +x ./image-load.sh + $ ./image-load.sh ${REGISTRY_ADDRESS} + $ curl -X GET ${REGISTRY_ADDRESS}/v2/_catalog + ``` 2. Yaml 파일 및 script 파일 준비 * 아래 명령어를 수행하여 Kubeflow 설치에 필요한 yaml 파일들과 script 파일들을 다운로드 받는다. ```bash From 11e1874e6b0e787305f401e9aba560ae9b948983 Mon Sep 17 00:00:00 2001 From: wooyoungmin <47769117+minwy23@users.noreply.github.com> Date: Wed, 21 Oct 2020 11:16:04 +0900 Subject: [PATCH 044/106] Update README.md --- Kubeflow/README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Kubeflow/README.md b/Kubeflow/README.md index 74ce17dd..c653332b 100644 --- a/Kubeflow/README.md +++ b/Kubeflow/README.md @@ -29,9 +29,9 @@ * v1.5.1 * https://github.com/tmax-cloud/hypercloud-install-guide/tree/4.1/Istio 3. Prometheus - * kubeflow의 모니터링 정보를 제공하기 위해 필요하다. - * http://192.168.1.150:10080/hypercloud/hypercloud/wikis/Prometheus-InstallerGuide -4. GPU plug-in (Optional) + * Kubeflow의 모니터링 정보를 제공하기 위해 필요하다. + * https://github.com/tmax-cloud/hypercloud-install-guide/blob/4.1/Prometheus/README.md +4. (Optional) GPU plug-in * Kubernetes cluster 내 node에 GPU가 탑재되어 있으며 AI DevOps 기능을 사용할 때 GPU가 요구될 경우에 필요하다. * https://github.com/tmax-cloud/hypercloud-install-guide/tree/4.1/Pod_GPU%20plugin From 938e9e80c547f71f9291e49b4f77bdd8c3c64e89 Mon Sep 17 00:00:00 2001 From: seonghoon_jeong <66111041+seonghoon-jeong@users.noreply.github.com> Date: Wed, 21 Oct 2020 11:36:43 +0900 Subject: [PATCH 045/106] =?UTF-8?q?podSubnet=20=EB=B3=80=EC=88=98=20?= =?UTF-8?q?=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- K8S_Master/installer/yaml/kubeadm-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/K8S_Master/installer/yaml/kubeadm-config.yaml b/K8S_Master/installer/yaml/kubeadm-config.yaml index 3e709734..43eef9a2 100644 --- a/K8S_Master/installer/yaml/kubeadm-config.yaml +++ b/K8S_Master/installer/yaml/kubeadm-config.yaml @@ -13,7 +13,7 @@ controlPlaneEndpoint: {apiServer}:6443 imageRepository: {imageRegistry}/k8s.gcr.io networking: serviceSubnet: 10.96.0.0/16 - podSubnet: 10.244.0.0/16 + podSubnet: {podSubnet} --- apiVersion: kubelet.config.k8s.io/v1beta1 kind: KubeletConfiguration From c3952cad1a8d0b2a631790a96a5311a72db42c6c Mon Sep 17 00:00:00 2001 From: jinho0928 Date: Wed, 21 Oct 2020 13:18:18 +0900 Subject: [PATCH 046/106] Update KUBE_VERSION_UPGRADE_README.md --- K8S_Master/KUBE_VERSION_UPGRADE_README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/K8S_Master/KUBE_VERSION_UPGRADE_README.md b/K8S_Master/KUBE_VERSION_UPGRADE_README.md index 3181ae18..8d9129ff 100644 --- a/K8S_Master/KUBE_VERSION_UPGRADE_README.md +++ b/K8S_Master/KUBE_VERSION_UPGRADE_README.md @@ -344,7 +344,7 @@ sudo vi /var/lib/kubelet/kubeadm-flags.env에 옵션 변경 기존 (docker) : KUBELET_KUBEADM_ARGS="--cgroup-driver=cgroupfs --network-plugin=cni --pod-infra-container-image=k8s.gcr.io/pause:3.1 - 변경 (cri-o) : KUBELET_KUBEADM_ARGS="--container-runtime=remote --container-runtime-endpoint=/var/run/crio/crio.sock" + 변경 (cri-o) : KUBELET_KUBEADM_ARGS="--container-runtime=remote --cgroup-driver=systemd --container-runtime-endpoint=/var/run/crio/crio.sock" systemctl restart kubelet systemctl restart docker ( #docker image registry node는 systemctl restart docker 명령어를 실행한다. ) @@ -429,7 +429,7 @@ sudo vi /var/lib/kubelet/kubeadm-flags.env에 옵션 변경 기존 (docker) : KUBELET_KUBEADM_ARGS="--cgroup-driver=cgroupfs --network-plugin=cni --pod-infra-container-image=k8s.gcr.io/pause:3.1 - 변경 (cri-o) : KUBELET_KUBEADM_ARGS="--container-runtime=remote --container-runtime-endpoint=/var/run/crio/crio.sock" + 변경 (cri-o) : KUBELET_KUBEADM_ARGS="--container-runtime=remote --cgroup-driver=systemd --container-runtime-endpoint=/var/run/crio/crio.sock" systemctl restart kubelet systemctl stop docker ( #docker image registry node는 systemctl restart docker 명령어를 실행한다. ) From 9fbefa73911140a58162bb6240f62c8a1a185a8a Mon Sep 17 00:00:00 2001 From: hyunchaeShin <45585638+hyunchaeShin@users.noreply.github.com> Date: Wed, 21 Oct 2020 13:33:30 +0900 Subject: [PATCH 047/106] Update README.md --- Package/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Package/README.md b/Package/README.md index 3ffbd36e..925fa192 100644 --- a/Package/README.md +++ b/Package/README.md @@ -2,7 +2,7 @@ # OS 설치 & package repo 구축 가이드 ## 구성 요소 및 버전 -* HyperCloud 패키지(ck-ftp@192.168.1.150:/home/ck-ftp/k8s_pl/install/offline/archive_20.07.27) +* HyperCloud 패키지(ck-ftp@192.168.1.150:/home/ck-ftp/k8s_pl/install/offline/archive_20.08.03) * ISO 파일(CentOS 7.7 :http://vault.centos.org/7.7.1908/isos/x86_64/ 또는 http://192.168.2.136/ISOs/CentOS-7-x86_64-DVD-1908.iso) ## Prerequisites @@ -46,7 +46,7 @@ * 목적 : `폐쇄망일 때 yum repository 구축` * 생성 순서 : * 패키지 가져오기 - * scp -r ck-ftp@192.168.1.150:/home/ck-ftp/k8s_pl/install/offline/archive_20.07.10 . + * scp -r ck-ftp@192.168.1.150:/home/ck-ftp/k8s_pl/install/offline/archive_20.08.03 . * cp -rT ./archive_20.07.10 /tmp/localrepo * CentOS Repository 비활성화 * sudo vi /etc/yum.repos.d/CentOS-Base.repo From eaa7b395087dfcf23befff3b5fb387bee2249f46 Mon Sep 17 00:00:00 2001 From: hyunchaeShin <45585638+hyunchaeShin@users.noreply.github.com> Date: Wed, 21 Oct 2020 13:35:16 +0900 Subject: [PATCH 048/106] Update README.md --- Package/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Package/README.md b/Package/README.md index 925fa192..fe1b002f 100644 --- a/Package/README.md +++ b/Package/README.md @@ -47,7 +47,7 @@ * 생성 순서 : * 패키지 가져오기 * scp -r ck-ftp@192.168.1.150:/home/ck-ftp/k8s_pl/install/offline/archive_20.08.03 . - * cp -rT ./archive_20.07.10 /tmp/localrepo + * cp -rT ./archive_20.08.03 /tmp/localrepo * CentOS Repository 비활성화 * sudo vi /etc/yum.repos.d/CentOS-Base.repo * [base], [updates], [extra] repo config 에 enabled=0 추가 From 20283f8f4e02fcd4495e7a38a9eacbeee656089f Mon Sep 17 00:00:00 2001 From: wooyoungmin <47769117+minwy23@users.noreply.github.com> Date: Wed, 21 Oct 2020 13:38:50 +0900 Subject: [PATCH 049/106] Add files via upload --- Kubeflow/image-load.sh | 3 ++- Kubeflow/image-push.sh | 3 ++- Kubeflow/image-save.sh | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/Kubeflow/image-load.sh b/Kubeflow/image-load.sh index e497b687..e4c7fdbc 100644 --- a/Kubeflow/image-load.sh +++ b/Kubeflow/image-load.sh @@ -17,7 +17,8 @@ i=1 cat imagelist | while read line do echo "[$0] [ ${i} / ${image_num} ] $line" - sudo docker load < ./images/${i}.tar + name=`echo $line |tr '/' '-'` + sudo docker load < ./images/${name}.tar sudo docker tag $line ${registry}/$line sudo docker push ${registry}/$line let i+=1 diff --git a/Kubeflow/image-push.sh b/Kubeflow/image-push.sh index 76158a13..acc63259 100644 --- a/Kubeflow/image-push.sh +++ b/Kubeflow/image-push.sh @@ -21,7 +21,8 @@ do echo "[$0] [ ${i} / ${image_num} ] $line" sudo docker pull $line sudo docker tag $line ${registry}/$line - sudo docker save $line > ./images/${i}.tar + name=`echo $line |tr '/' '-'` + sudo docker save $line > ./images/${name}.tar sudo docker push ${registry}/$line let i+=1 done diff --git a/Kubeflow/image-save.sh b/Kubeflow/image-save.sh index 7553cd69..6555cc6d 100644 --- a/Kubeflow/image-save.sh +++ b/Kubeflow/image-save.sh @@ -10,7 +10,8 @@ cat imagelist | while read line do echo "[$0] [ ${i} / ${image_num} ] $line" sudo docker pull $line - sudo docker save $line > ./images/${i}.tar + name=`echo $line |tr '/' '-'` + sudo docker save $line > ./images/${name}.tar let i+=1 done From b73531a9947d926ee5e2bf3da873ccebe108283b Mon Sep 17 00:00:00 2001 From: minjae-song <60685496+minjae-song@users.noreply.github.com> Date: Wed, 21 Oct 2020 16:29:07 +0900 Subject: [PATCH 050/106] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c6cfad56..a903705d 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,7 @@ | EFK | E(7.2.0), F(v1.4.2), K(7.2.0) | https://github.com/tmax-cloud/hypercloud-install-guide/blob/master/EFK/README.md | O | | Multicloud-console | | | X | | Capi provider | | https://github.com/tmax-cloud/hypercloud-install-guide/blob/4.1/Capi/README.md | O | -| NGINX Ingress Controller | 0.33.0 | https://github.com/tmax-cloud/hypercloud-install-guide/blob/4.1/IngressNginx/README.md | O | +| NGINX Ingress Controller | 0.33.0 | https://github.com/tmax-cloud/hypercloud-install-guide/tree/master/IngressNginx/system | O | | kubefed | | https://github.com/tmax-cloud/hypercloud-install-guide/blob/4.1/Fed/README.md | O | | Grafana | | https://github.com/tmax-cloud/hypercloud-install-guide/blob/4.1/Grafana/README.md | O | | Helm | | https://github.com/tmax-cloud/hypercloud-install-guide/blob/4.1/Helm/README.md | O | From 1ae7789b416fea003dc1d95ae126cf86a8f263fc Mon Sep 17 00:00:00 2001 From: minjae-song <60685496+minjae-song@users.noreply.github.com> Date: Wed, 21 Oct 2020 16:52:31 +0900 Subject: [PATCH 051/106] Update 2.hyperauth_deployment.yaml --- HyperAuth/manifest/2.hyperauth_deployment.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/HyperAuth/manifest/2.hyperauth_deployment.yaml b/HyperAuth/manifest/2.hyperauth_deployment.yaml index 59496f95..204d8465 100644 --- a/HyperAuth/manifest/2.hyperauth_deployment.yaml +++ b/HyperAuth/manifest/2.hyperauth_deployment.yaml @@ -21,7 +21,7 @@ spec: secretName: hyperauth-https-secret containers: - name: hyperauth - image: tmaxcloudck/hyperauth:b1.0.9.7 + image: tmaxcloudck/hyperauth:b1.0.9.12 env: - name: KEYCLOAK_USER value: "admin" From 446782c252004b9462a7f822e8e39eb30253737c Mon Sep 17 00:00:00 2001 From: sukhee_yun Date: Wed, 21 Oct 2020 16:55:51 +0900 Subject: [PATCH 052/106] change Install Steps link url --- IngressNginx/shared/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/IngressNginx/shared/README.md b/IngressNginx/shared/README.md index 6e445f52..77f2bea7 100644 --- a/IngressNginx/shared/README.md +++ b/IngressNginx/shared/README.md @@ -47,8 +47,8 @@ ## Install Steps -0. [deploy yaml 수정](https://github.com/tmax-cloud/hypercloud-install-guide/tree/master/IngressNginx#step0-deploy-yaml-%EC%88%98%EC%A0%95) -1. [Nginx Ingress Controller 배포](https://github.com/tmax-cloud/hypercloud-install-guide/tree/master/IngressNginx#step-1-nginx-ingress-controller-%EB%B0%B0%ED%8F%AC) +0. [deploy yaml 수정](https://github.com/tmax-cloud/hypercloud-install-guide/tree/4.1/IngressNginx/shared#step0-deploy-yaml-%EC%88%98%EC%A0%95) +1. [Nginx Ingress Controller 배포](https://github.com/tmax-cloud/hypercloud-install-guide/tree/4.1/IngressNginx/shared#step-1-nginx-ingress-controller-%EB%B0%B0%ED%8F%AC) ## Step0. deploy yaml 수정 From 05ba849f0defd5ad15f32448932559191a202988 Mon Sep 17 00:00:00 2001 From: yshcoffee <47413947+yshcoffee@users.noreply.github.com> Date: Wed, 21 Oct 2020 17:04:39 +0900 Subject: [PATCH 053/106] change Install Steps link url --- IngressNginx/shared/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/IngressNginx/shared/README.md b/IngressNginx/shared/README.md index 6e445f52..77f2bea7 100644 --- a/IngressNginx/shared/README.md +++ b/IngressNginx/shared/README.md @@ -47,8 +47,8 @@ ## Install Steps -0. [deploy yaml 수정](https://github.com/tmax-cloud/hypercloud-install-guide/tree/master/IngressNginx#step0-deploy-yaml-%EC%88%98%EC%A0%95) -1. [Nginx Ingress Controller 배포](https://github.com/tmax-cloud/hypercloud-install-guide/tree/master/IngressNginx#step-1-nginx-ingress-controller-%EB%B0%B0%ED%8F%AC) +0. [deploy yaml 수정](https://github.com/tmax-cloud/hypercloud-install-guide/tree/4.1/IngressNginx/shared#step0-deploy-yaml-%EC%88%98%EC%A0%95) +1. [Nginx Ingress Controller 배포](https://github.com/tmax-cloud/hypercloud-install-guide/tree/4.1/IngressNginx/shared#step-1-nginx-ingress-controller-%EB%B0%B0%ED%8F%AC) ## Step0. deploy yaml 수정 From b7ee16ced9eecbd91c0bc309cb6b77f4c82560b7 Mon Sep 17 00:00:00 2001 From: minjae-song <60685496+minjae-song@users.noreply.github.com> Date: Wed, 21 Oct 2020 17:11:38 +0900 Subject: [PATCH 054/106] Update 3.tmax-realm-export.json --- HyperAuth/manifest/3.tmax-realm-export.json | 585 ++++++++++++++++++-- 1 file changed, 552 insertions(+), 33 deletions(-) diff --git a/HyperAuth/manifest/3.tmax-realm-export.json b/HyperAuth/manifest/3.tmax-realm-export.json index 929e62c4..d124f15f 100644 --- a/HyperAuth/manifest/3.tmax-realm-export.json +++ b/HyperAuth/manifest/3.tmax-realm-export.json @@ -2,12 +2,12 @@ "id": "tmax", "realm": "tmax", "displayName": "tmax", - "notBefore": 1597835890, + "notBefore": 1602720991, "revokeRefreshToken": false, "refreshTokenMaxReuse": 0, "accessTokenLifespan": 300, "accessTokenLifespanForImplicitFlow": 900, - "ssoSessionIdleTimeout": 3600, + "ssoSessionIdleTimeout": 1800, "ssoSessionMaxLifespan": 36000, "ssoSessionIdleTimeoutRememberMe": 0, "ssoSessionMaxLifespanRememberMe": 0, @@ -24,23 +24,40 @@ "enabled": true, "sslRequired": "external", "registrationAllowed": true, - "registrationEmailAsUsername": false, + "registrationEmailAsUsername": true, "rememberMe": true, - "verifyEmail": false, - "loginWithEmailAllowed": false, - "duplicateEmailsAllowed": true, + "verifyEmail": true, + "loginWithEmailAllowed": true, + "duplicateEmailsAllowed": false, "resetPasswordAllowed": true, "editUsernameAllowed": false, - "bruteForceProtected": false, + "bruteForceProtected": true, "permanentLockout": false, "maxFailureWaitSeconds": 900, "minimumQuickLoginWaitSeconds": 60, "waitIncrementSeconds": 60, - "quickLoginCheckMilliSeconds": 1000, - "maxDeltaTimeSeconds": 43200, - "failureFactor": 30, + "quickLoginCheckMilliSeconds": 500, + "maxDeltaTimeSeconds": 86400, + "failureFactor": 10, "roles": { "realm": [ + { + "id": "f9b355c3-6676-4fc8-9947-374d8773ffce", + "name": "teespace middle admin", + "composite": true, + "composites": { + "client": { + "realm-management": [ + "query-groups", + "view-users", + "query-users" + ] + } + }, + "clientRole": false, + "containerId": "tmax", + "attributes": {} + }, { "id": "d449e9d4-b460-4ff4-b557-265f02683320", "name": "uma_authorization", @@ -50,6 +67,14 @@ "containerId": "tmax", "attributes": {} }, + { + "id": "21b13295-61d1-436a-9ccf-9ec1c0bfdd3f", + "name": "test", + "composite": false, + "clientRole": false, + "containerId": "tmax", + "attributes": {} + }, { "id": "4d951274-8c75-42d0-add0-832133fc574f", "name": "tmax realm user, group all role", @@ -141,6 +166,17 @@ } ], "client": { + "gatekeeper": [ + { + "id": "74fd8dc5-c7ba-48cf-a38c-e09bf9d1509e", + "name": "uma_protection", + "composite": false, + "clientRole": true, + "containerId": "fe8716c3-728c-4d78-9a91-cc31176a01bf", + "attributes": {} + } + ], + "console": [], "realm-management": [ { "id": "38840ce8-dced-4916-bf86-c4c3b7e84c20", @@ -356,7 +392,16 @@ "kiali": [], "security-admin-console": [], "admin-cli": [], - "hypercloud4": [], + "hypercloud4": [ + { + "id": "f243fe37-24ad-4a5c-b42a-e3e7c67a8baf", + "name": "uma_protection", + "composite": false, + "clientRole": true, + "containerId": "8e0f17ee-fd09-4da2-9b4f-270e49dc0e6c", + "attributes": {} + } + ], "notebook-gatekeeper": [], "account-console": [], "broker": [ @@ -439,7 +484,8 @@ "containerId": "b48941f1-5c5e-4eae-854c-6057385d8772", "attributes": {} } - ] + ], + "tmaxcloud": [] } }, "groups": [ @@ -465,6 +511,15 @@ "clientRoles": {}, "subGroups": [] }, + { + "id": "20be74a8-e8fd-43df-bb35-c3b3c42ad91d", + "name": "nodejs", + "path": "/nodejs", + "attributes": {}, + "realmRoles": [], + "clientRoles": {}, + "subGroups": [] + }, { "id": "fd8e1606-6daf-46a7-84b0-2e5e2320fcbf", "name": "tmaxcloud", @@ -482,7 +537,7 @@ "requiredCredentials": [ "password" ], - "passwordPolicy": "notUsername(undefined) and length(5)", + "passwordPolicy": "specialChars(1) and upperCase(1) and lowerCase(1) and length(9) and digits(1)", "otpPolicyType": "totp", "otpPolicyAlgorithm": "HmacSHA1", "otpPolicyInitialCounter": 0, @@ -517,6 +572,34 @@ "webAuthnPolicyPasswordlessCreateTimeout": 0, "webAuthnPolicyPasswordlessAvoidSameAuthenticatorRegister": false, "webAuthnPolicyPasswordlessAcceptableAaguids": [], + "users": [ + { + "id": "a1618fd7-00c1-4504-9b7f-85195f04d762", + "createdTimestamp": 1600060522980, + "username": "service-account-gatekeeper", + "enabled": true, + "totp": false, + "emailVerified": false, + "serviceAccountClientId": "gatekeeper", + "disableableCredentialTypes": [], + "requiredActions": [], + "realmRoles": [ + "uma_authorization", + "offline_access" + ], + "clientRoles": { + "gatekeeper": [ + "uma_protection" + ], + "account": [ + "view-profile", + "manage-account" + ] + }, + "notBefore": 0, + "groups": [] + } + ], "scopeMappings": [ { "clientScope": "offline_access", @@ -763,6 +846,171 @@ "microprofile-jwt" ] }, + { + "id": "3542dc09-b2be-4ec6-bd95-6c95516ed6df", + "clientId": "console", + "surrogateAuthRequired": false, + "enabled": true, + "alwaysDisplayInConsole": false, + "clientAuthenticatorType": "client-secret", + "secret": "**********", + "redirectUris": [ + "*" + ], + "webOrigins": [], + "notBefore": 0, + "bearerOnly": false, + "consentRequired": false, + "standardFlowEnabled": true, + "implicitFlowEnabled": false, + "directAccessGrantsEnabled": true, + "serviceAccountsEnabled": false, + "publicClient": false, + "frontchannelLogout": false, + "protocol": "openid-connect", + "attributes": { + "saml.assertion.signature": "false", + "saml.multivalued.roles": "false", + "saml.force.post.binding": "false", + "saml.encrypt": "false", + "saml.server.signature": "false", + "saml.server.signature.keyinfo.ext": "false", + "exclude.session.state.from.auth.response": "false", + "saml_force_name_id_format": "false", + "saml.client.signature": "false", + "tls.client.certificate.bound.access.tokens": "false", + "saml.authnstatement": "false", + "display.on.consent.screen": "false", + "saml.onetimeuse.condition": "false" + }, + "authenticationFlowBindingOverrides": {}, + "fullScopeAllowed": true, + "nodeReRegistrationTimeout": -1, + "defaultClientScopes": [ + "web-origins", + "role_list", + "profile", + "roles", + "email" + ], + "optionalClientScopes": [ + "address", + "phone", + "offline_access", + "microprofile-jwt" + ] + }, + { + "id": "fe8716c3-728c-4d78-9a91-cc31176a01bf", + "clientId": "gatekeeper", + "surrogateAuthRequired": false, + "enabled": true, + "alwaysDisplayInConsole": false, + "clientAuthenticatorType": "client-secret", + "secret": "**********", + "redirectUris": [ + "*" + ], + "webOrigins": [], + "notBefore": 0, + "bearerOnly": false, + "consentRequired": false, + "standardFlowEnabled": true, + "implicitFlowEnabled": false, + "directAccessGrantsEnabled": true, + "serviceAccountsEnabled": true, + "publicClient": false, + "frontchannelLogout": false, + "protocol": "openid-connect", + "attributes": { + "saml.assertion.signature": "false", + "access.token.lifespan": "259200", + "saml.multivalued.roles": "false", + "saml.force.post.binding": "false", + "saml.encrypt": "false", + "saml.server.signature": "false", + "saml.server.signature.keyinfo.ext": "false", + "exclude.session.state.from.auth.response": "false", + "saml_force_name_id_format": "false", + "saml.client.signature": "false", + "tls.client.certificate.bound.access.tokens": "false", + "saml.authnstatement": "false", + "display.on.consent.screen": "false", + "saml.onetimeuse.condition": "false" + }, + "authenticationFlowBindingOverrides": {}, + "fullScopeAllowed": true, + "nodeReRegistrationTimeout": -1, + "protocolMappers": [ + { + "id": "c142e9e1-d54c-4e37-91d1-126338475149", + "name": "Client Host", + "protocol": "openid-connect", + "protocolMapper": "oidc-usersessionmodel-note-mapper", + "consentRequired": false, + "config": { + "user.session.note": "clientHost", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "clientHost", + "jsonType.label": "String" + } + }, + { + "id": "fc566909-329c-436d-a290-596cddf92383", + "name": "Client ID", + "protocol": "openid-connect", + "protocolMapper": "oidc-usersessionmodel-note-mapper", + "consentRequired": false, + "config": { + "user.session.note": "clientId", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "clientId", + "jsonType.label": "String" + } + }, + { + "id": "41194a05-26f3-402a-8424-c2022493fd52", + "name": "test", + "protocol": "openid-connect", + "protocolMapper": "oidc-role-name-mapper", + "consentRequired": false, + "config": { + "role": "test", + "new.role.name": "test" + } + }, + { + "id": "2016e5b4-c63c-4997-8827-89152028b3eb", + "name": "Client IP Address", + "protocol": "openid-connect", + "protocolMapper": "oidc-usersessionmodel-note-mapper", + "consentRequired": false, + "config": { + "user.session.note": "clientAddress", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "clientAddress", + "jsonType.label": "String" + } + } + ], + "defaultClientScopes": [ + "web-origins", + "gatekeeper", + "role_list", + "profile", + "roles", + "email" + ], + "optionalClientScopes": [ + "address", + "phone", + "offline_access", + "microprofile-jwt" + ] + }, { "id": "8e0f17ee-fd09-4da2-9b4f-270e49dc0e6c", "clientId": "hypercloud4", @@ -778,11 +1026,12 @@ "secret": "**********", "redirectUris": [ "https://172.22.6.14/*", - "https://17.17.17.*", + "https://172.22.6.14/kiali/*", "https://192.168.6.125:9000/*", - "*", + "http://192.168.8.*", "https://192.168.8.*", "https://172.22.1.12/*", + "http://192.168.8.25/complete.html", "https://172.22.6.2:31304/*" ], "webOrigins": [ @@ -792,7 +1041,7 @@ "bearerOnly": false, "consentRequired": false, "standardFlowEnabled": true, - "implicitFlowEnabled": false, + "implicitFlowEnabled": true, "directAccessGrantsEnabled": true, "serviceAccountsEnabled": false, "publicClient": true, @@ -820,6 +1069,34 @@ "fullScopeAllowed": true, "nodeReRegistrationTimeout": -1, "protocolMappers": [ + { + "id": "bf6c53a4-d685-4d3f-a598-9911a85c603e", + "name": "Client ID", + "protocol": "openid-connect", + "protocolMapper": "oidc-usersessionmodel-note-mapper", + "consentRequired": false, + "config": { + "user.session.note": "clientId", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "clientId", + "jsonType.label": "String" + } + }, + { + "id": "c17dad3c-0400-49a7-9530-a63ba38491ad", + "name": "Client IP Address", + "protocol": "openid-connect", + "protocolMapper": "oidc-usersessionmodel-note-mapper", + "consentRequired": false, + "config": { + "user.session.note": "clientAddress", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "clientAddress", + "jsonType.label": "String" + } + }, { "id": "999a7393-6ce5-4e80-8123-f28f8d5198f3", "name": "phone", @@ -835,6 +1112,20 @@ "jsonType.label": "String" } }, + { + "id": "0c9d3439-ef66-4b9f-95af-26eaad41ebc7", + "name": "Client Host", + "protocol": "openid-connect", + "protocolMapper": "oidc-usersessionmodel-note-mapper", + "consentRequired": false, + "config": { + "user.session.note": "clientHost", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "clientHost", + "jsonType.label": "String" + } + }, { "id": "eb050e3a-dd58-4d3d-9a8e-6d90537f6759", "name": "banlist", @@ -871,19 +1162,19 @@ "clientId": "kiali", "name": "kiali", "description": "kiali", - "rootUrl": "http://172.22.6.3:32587/kiali/", - "adminUrl": "http://172.22.6.3:32587/kiali/", - "baseUrl": "/", + "rootUrl": "http://172.22.6.3:32588/kiali/", + "adminUrl": "http://172.22.6.3:32588/kiali/", + "baseUrl": "", "surrogateAuthRequired": false, "enabled": true, "alwaysDisplayInConsole": false, "clientAuthenticatorType": "client-secret", "secret": "**********", "redirectUris": [ - "http://172.22.6.3:32587/kiali/*" + "http://172.22.6.3:32588/kiali/*" ], "webOrigins": [ - "http://172.22.6.3:32587" + "http://172.22.6.3:32588" ], "notBefore": 0, "bearerOnly": false, @@ -1082,6 +1373,70 @@ "offline_access", "microprofile-jwt" ] + }, + { + "id": "af4f2785-a6fa-4bd5-9a28-469f1e513bd3", + "clientId": "tmaxcloud", + "name": "tmaxcloud", + "description": "tmaxcloud portal test", + "rootUrl": "", + "adminUrl": "", + "baseUrl": "", + "surrogateAuthRequired": false, + "enabled": true, + "alwaysDisplayInConsole": false, + "clientAuthenticatorType": "client-secret", + "secret": "**********", + "redirectUris": [ + "http://192.168.8.*", + "https://192.168.8.*" + ], + "webOrigins": [ + "*" + ], + "notBefore": 0, + "bearerOnly": false, + "consentRequired": false, + "standardFlowEnabled": true, + "implicitFlowEnabled": true, + "directAccessGrantsEnabled": true, + "serviceAccountsEnabled": false, + "publicClient": true, + "frontchannelLogout": false, + "protocol": "openid-connect", + "attributes": { + "saml.assertion.signature": "false", + "access.token.lifespan": "60", + "saml.multivalued.roles": "false", + "saml.force.post.binding": "false", + "saml.encrypt": "false", + "login_theme": "tmax", + "saml.server.signature": "false", + "saml.server.signature.keyinfo.ext": "false", + "exclude.session.state.from.auth.response": "false", + "saml_force_name_id_format": "false", + "saml.client.signature": "false", + "tls.client.certificate.bound.access.tokens": "false", + "saml.authnstatement": "false", + "display.on.consent.screen": "false", + "saml.onetimeuse.condition": "false" + }, + "authenticationFlowBindingOverrides": {}, + "fullScopeAllowed": true, + "nodeReRegistrationTimeout": -1, + "defaultClientScopes": [ + "web-origins", + "role_list", + "profile", + "roles", + "email" + ], + "optionalClientScopes": [ + "address", + "phone", + "offline_access", + "microprofile-jwt" + ] } ], "clientScopes": [ @@ -1355,6 +1710,29 @@ } ] }, + { + "id": "6dd51ae7-2b85-461f-ad48-03b798c15b08", + "name": "gatekeeper", + "protocol": "openid-connect", + "attributes": { + "include.in.token.scope": "true", + "display.on.consent.screen": "true" + }, + "protocolMappers": [ + { + "id": "1fd5a122-0cc7-44ab-82ed-385362042b33", + "name": "gatekeeper", + "protocol": "openid-connect", + "protocolMapper": "oidc-audience-mapper", + "consentRequired": false, + "config": { + "included.client.audience": "gatekeeper", + "id.token.claim": "false", + "access.token.claim": "true" + } + } + ] + }, { "id": "4c7107dc-6fca-4dbf-8af1-8767533b0e40", "name": "email", @@ -1632,15 +2010,7 @@ "phone", "microprofile-jwt" ], - "browserSecurityHeaders": { - "contentSecurityPolicyReportOnly": "", - "xContentTypeOptions": "nosniff", - "xRobotsTag": "none", - "xFrameOptions": "SAMEORIGIN", - "contentSecurityPolicy": "frame-src 'self'; frame-ancestors 'self'; object-src 'none';", - "xXSSProtection": "1; mode=block", - "strictTransportSecurity": "max-age=31536000; includeSubDomains" - }, + "browserSecurityHeaders": {}, "smtpServer": { "host": "mail.tmax.co.kr", "from": "taegeon_woo@tmax.co.kr", @@ -1880,7 +2250,7 @@ "ko", "en" ], - "defaultLocale": "ko", + "defaultLocale": "en", "authenticationFlows": [ { "id": "b6231713-264b-4596-a39b-a5c3070c8efa", @@ -2033,6 +2403,69 @@ } ] }, + { + "id": "0f96b55a-06c0-4228-a821-e8c5dc574db0", + "alias": "Registration with SMS", + "description": "registration flow", + "providerId": "basic-flow", + "topLevel": true, + "builtIn": false, + "authenticationExecutions": [ + { + "authenticator": "registration-page-form", + "requirement": "REQUIRED", + "priority": 10, + "flowAlias": "Registration with SMS registration form", + "userSetupAllowed": false, + "autheticatorFlow": true + } + ] + }, + { + "id": "06410df8-4a19-4020-a38c-7bbe9ed101c3", + "alias": "Registration with SMS registration form", + "description": "registration form", + "providerId": "form-flow", + "topLevel": false, + "builtIn": false, + "authenticationExecutions": [ + { + "authenticator": "registration-user-creation", + "requirement": "REQUIRED", + "priority": 20, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "registration-profile-action", + "requirement": "DISABLED", + "priority": 40, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "tmax-phone-validation", + "requirement": "REQUIRED", + "priority": 50, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "registration-password-action", + "requirement": "REQUIRED", + "priority": 60, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "registration-recaptcha-action", + "requirement": "DISABLED", + "priority": 61, + "userSetupAllowed": false, + "autheticatorFlow": false + } + ] + }, { "id": "e0b012d1-ff3e-4d7c-9030-d612350ae884", "alias": "Reset - Conditional OTP", @@ -2144,6 +2577,92 @@ } ] }, + { + "id": "6c31c695-f95a-4345-96c8-b0102d7d7bca", + "alias": "browser with SMS", + "description": "browser based authentication", + "providerId": "basic-flow", + "topLevel": true, + "builtIn": false, + "authenticationExecutions": [ + { + "authenticator": "auth-cookie", + "requirement": "ALTERNATIVE", + "priority": 10, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "auth-spnego", + "requirement": "DISABLED", + "priority": 20, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "identity-provider-redirector", + "requirement": "ALTERNATIVE", + "priority": 25, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "requirement": "ALTERNATIVE", + "priority": 30, + "flowAlias": "browser with SMS forms", + "userSetupAllowed": false, + "autheticatorFlow": true + } + ] + }, + { + "id": "6ee192fc-c4ad-4b2f-b20a-6a46bad8b136", + "alias": "browser with SMS Browser - Conditional OTP", + "description": "Flow to determine if the OTP is required for the authentication", + "providerId": "basic-flow", + "topLevel": false, + "builtIn": false, + "authenticationExecutions": [ + { + "authenticator": "conditional-user-configured", + "requirement": "REQUIRED", + "priority": 10, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "authenticator": "auth-otp-form", + "requirement": "REQUIRED", + "priority": 20, + "userSetupAllowed": false, + "autheticatorFlow": false + } + ] + }, + { + "id": "c2b0c6b0-a777-401f-bc9e-111a005303ad", + "alias": "browser with SMS forms", + "description": "Username, password, otp and other auth forms.", + "providerId": "basic-flow", + "topLevel": false, + "builtIn": false, + "authenticationExecutions": [ + { + "authenticator": "auth-username-password-form", + "requirement": "REQUIRED", + "priority": 10, + "userSetupAllowed": false, + "autheticatorFlow": false + }, + { + "requirement": "DISABLED", + "priority": 20, + "flowAlias": "browser with SMS Browser - Conditional OTP", + "userSetupAllowed": false, + "autheticatorFlow": true + } + ] + }, { "id": "ce345a5f-5342-490e-8d44-c4c17afc4da5", "alias": "clients", @@ -2338,7 +2857,7 @@ }, { "authenticator": "registration-profile-action", - "requirement": "REQUIRED", + "requirement": "DISABLED", "priority": 40, "userSetupAllowed": false, "autheticatorFlow": false @@ -2472,7 +2991,7 @@ "alias": "VERIFY_EMAIL", "name": "Verify Email", "providerId": "VERIFY_EMAIL", - "enabled": true, + "enabled": false, "defaultAction": false, "priority": 50, "config": {} From 94b5ec57932217ffb54184589721a286e9b3490c Mon Sep 17 00:00:00 2001 From: taegeon woo <61040426+dnxorjs1@users.noreply.github.com> Date: Thu, 22 Oct 2020 11:17:59 +0900 Subject: [PATCH 055/106] Update tmaxRealmImport.sh --- HyperAuth/manifest/tmaxRealmImport.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/HyperAuth/manifest/tmaxRealmImport.sh b/HyperAuth/manifest/tmaxRealmImport.sh index 9fd150c2..b703ff40 100644 --- a/HyperAuth/manifest/tmaxRealmImport.sh +++ b/HyperAuth/manifest/tmaxRealmImport.sh @@ -37,7 +37,7 @@ curl -g -i -X POST \ "department": "tmaxCloud", "description": "hypercloud admin" }, - "username": "admin-tmax.co.kr", + "username": "admin@tmax.co.kr", "emailVerified": "", "email": "hc-admin@tmax.co.kr" }' \ @@ -55,4 +55,4 @@ curl 'http://'$hyperauthserver':8080/auth/admin/realms/tmax/users/'$userid'/rese -X 'PUT' \ -H "authorization: Bearer $token" \ -H "content-type: application/json;charset=UTF-8" \ - --data-binary '{"type":"password","value":"admin","temporary":false}' + --data-binary '{"type":"password","value":"Tmaxadmin1!","temporary":false}' From fc15efc19e0c0b91310133fae57461cc355bdf0a Mon Sep 17 00:00:00 2001 From: sukhee_yun Date: Fri, 23 Oct 2020 10:13:42 +0900 Subject: [PATCH 056/106] =?UTF-8?q?change=20Nginx=20Ingress=20Controller?= =?UTF-8?q?=20=EC=84=A4=EC=B9=98=20url?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- HyperCloud Operator/v4.1.0.41/README.md | 21 +++++++++++---------- HyperCloud Operator/v4.1.1.0/README.md | 2 +- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/HyperCloud Operator/v4.1.0.41/README.md b/HyperCloud Operator/v4.1.0.41/README.md index 8714a254..36468b44 100644 --- a/HyperCloud Operator/v4.1.0.41/README.md +++ b/HyperCloud Operator/v4.1.0.41/README.md @@ -73,22 +73,23 @@ $ sudo docker push ${REGISTRY}/tmaxcloudck/hypercloud-operator:b${HPCD_VERSION} ``` -3. [Nginx Ingress Controller 설치 가이드]([https://github.com/tmax-cloud/hypercloud-install-guide/blob/master/IngressNginx/README.md](https://github.com/tmax-cloud/hypercloud-install-guide/blob/master/IngressNginx/README.md)를 참고하여 Nginx Ingress Controller 설치에 필요한 이미지 준비 +3. [Nginx Ingress Controller 설치 가이드]([https://github.com/tmax-cloud/hypercloud-install-guide/blob/4.1/IngressNginx/shared/README.md](https://github.com/tmax-cloud/hypercloud-install-guide/blob/4.1/IngressNginx/shared/README.md)를 참고하여 Nginx Ingress Controller 설치에 필요한 이미지 준비 * 비고: - * [폐쇄망 설치 가이드]([https://github.com/tmax-cloud/hypercloud-install-guide/blob/master/IngressNginx/README.md#%ED%8F%90%EC%87%84%EB%A7%9D-%EC%84%A4%EC%B9%98-%EA%B0%80%EC%9D%B4%EB%93%9C](https://github.com/tmax-cloud/hypercloud-install-guide/blob/master/IngressNginx/README.md#%ED%8F%90%EC%87%84%EB%A7%9D-%EC%84%A4%EC%B9%98-%EA%B0%80%EC%9D%B4%EB%93%9C)에서 아래의 부분 수행 + * [폐쇄망 설치 가이드]([https://github.com/tmax-cloud/hypercloud-install-guide/blob/4.1/IngressNginx/shared/README.md#%ED%8F%90%EC%87%84%EB%A7%9D-%EC%84%A4%EC%B9%98-%EA%B0%80%EC%9D%B4%EB%93%9C](https://github.com/tmax-cloud/hypercloud-install-guide/blob/4.1/IngressNginx/shared/README.md#%ED%8F%90%EC%87%84%EB%A7%9D-%EC%84%A4%EC%B9%98-%EA%B0%80%EC%9D%B4%EB%93%9C)에서 아래의 부분 수행 * 1-1. 작업 디렉토리 생성 및 환경 설정 * 1-2. 외부 네트워크 통신이 가능한 환경에서 필요한 이미지를 다운받는다. * 2-1. 위의 과정에서 생성한 tar 파일들을 폐쇄망 환경으로 이동시킨 뒤 사용하려는 registry에 이미지를 push한다. ## Install Steps -1. [1.initialization.yaml 실행](https://github.com/tmax-cloud/hypercloud-install-guide/blob/master/HyperCloud%20Operator/v4.1.0.41/README.md#step-1-1initializationyaml-%EC%8B%A4%ED%96%89) -2. [CRD 적용](https://github.com/tmax-cloud/hypercloud-install-guide/blob/master/HyperCloud%20Operator/v4.1.0.41/README.md#step-2-crd-%EC%A0%81%EC%9A%A9) -3. [2.mysql-settings.yaml 실행](https://github.com/tmax-cloud/hypercloud-install-guide/blob/master/HyperCloud%20Operator/v4.1.0.41/README.md#step-3-2mysql-settingsyaml-%EC%8B%A4%ED%96%89) -4. [3.mysql-create.yaml 실행](https://github.com/tmax-cloud/hypercloud-install-guide/blob/master/HyperCloud%20Operator/v4.1.0.41/README.md#step-4-3mysql-createyaml-%EC%8B%A4%ED%96%89) -5. [6.hypercloud4-operator.yaml 실행](https://github.com/tmax-cloud/hypercloud-install-guide/blob/master/HyperCloud%20Operator/v4.1.0.41/README.md#step-5-6hypercloud4-operatoryaml-%EC%8B%A4%ED%96%89) -6. [8.default-auth-object-init.yaml 실행](https://github.com/tmax-cloud/hypercloud-install-guide/blob/master/HyperCloud%20Operator/v4.1.0.41/README.md#step-6-8default-auth-object-inityaml-%EC%8B%A4%ED%96%89) -7. [webhook-config 설정](https://github.com/tmax-cloud/hypercloud-install-guide/blob/master/HyperCloud%20Operator/v4.1.0.41/README.md#step-7-webhook-config-%EC%84%A4%EC%A0%95) -8. [7.nginx-controller.yaml 실행](https://github.com/tmax-cloud/hypercloud-install-guide/blob/master/HyperCloud%20Operator/v4.1.0.41/README.md#step-8-9nginx-controlleryaml-%EC%8B%A4%ED%96%89) +0. [install yaml 수정](https://github.com/tmax-cloud/hypercloud-install-guide/blob/4.1/HyperCloud%20Operator/v4.1.0.41/README.md#step-0-install--yaml-%EC%88%98%EC%A0%95) +1. [1.initialization.yaml 실행](https://github.com/tmax-cloud/hypercloud-install-guide/blob/4.1/HyperCloud%20Operator/v4.1.0.41/README.md#step-1-1initializationyaml-%EC%8B%A4%ED%96%89) +2. [CRD 적용](https://github.com/tmax-cloud/hypercloud-install-guide/blob/4.1/HyperCloud%20Operator/v4.1.0.41/README.md#step-2-crd-%EC%A0%81%EC%9A%A9) +3. [2.mysql-settings.yaml 실행](https://github.com/tmax-cloud/hypercloud-install-guide/blob/4.1/HyperCloud%20Operator/v4.1.0.41/README.md#step-3-2mysql-settingsyaml-%EC%8B%A4%ED%96%89) +4. [3.mysql-create.yaml 실행](https://github.com/tmax-cloud/hypercloud-install-guide/blob/4.1/HyperCloud%20Operator/v4.1.0.41/README.md#step-4-3mysql-createyaml-%EC%8B%A4%ED%96%89) +5. [6.hypercloud4-operator.yaml 실행](https://github.com/tmax-cloud/hypercloud-install-guide/blob/4.1/HyperCloud%20Operator/v4.1.0.41/README.md#step-5-6hypercloud4-operatoryaml-%EC%8B%A4%ED%96%89) +6. [8.default-auth-object-init.yaml 실행](https://github.com/tmax-cloud/hypercloud-install-guide/blob/4.1/HyperCloud%20Operator/v4.1.0.41/README.md#step-6-8default-auth-object-inityaml-%EC%8B%A4%ED%96%89) +7. [webhook-config 설정](https://github.com/tmax-cloud/hypercloud-install-guide/blob/4.1/HyperCloud%20Operator/v4.1.0.41/README.md#step-7-webhook-config-%EC%84%A4%EC%A0%95) +8. [7.nginx-controller.yaml 실행](https://github.com/tmax-cloud/hypercloud-install-guide/blob/4.1/HyperCloud%20Operator/v4.1.0.41/README.md#step-8-7nginx-controlleryaml-%EC%8B%A4%ED%96%89) ## Step 0. install yaml 수정 diff --git a/HyperCloud Operator/v4.1.1.0/README.md b/HyperCloud Operator/v4.1.1.0/README.md index 5762a5a1..7fa38668 100644 --- a/HyperCloud Operator/v4.1.1.0/README.md +++ b/HyperCloud Operator/v4.1.1.0/README.md @@ -75,7 +75,7 @@ 1. Nginx Ingress Controller 설치 * 목적: Hypercloud Operator 내 기능(Reigstry Operator) 사용 * [Nginx Ingress Controller 설치 가이드] - * [https://github.com/tmax-cloud/hypercloud-install-guide/blob/4.1/IngressNginx/README.md](https://github.com/tmax-cloud/hypercloud-install-guide/blob/4.1/IngressNginx/README.md) + * [https://github.com/tmax-cloud/hypercloud-install-guide/blob/4.1/IngressNginx/shared/README.md](https://github.com/tmax-cloud/hypercloud-install-guide/blob/4.1/IngressNginx/shared/README.md) 2. Secret Watcher 설치 * 목적: Hypercloud Operator 내 기능(Reigstry Operator) 사용 * [secret-watcher 설치 가이드] From e74fce3d0ef8fc40f18d5104e8995f4c5f3412bc Mon Sep 17 00:00:00 2001 From: wooyoungmin <47769117+minwy23@users.noreply.github.com> Date: Fri, 23 Oct 2020 13:42:24 +0900 Subject: [PATCH 057/106] Update imagelist --- Kubeflow/imagelist | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/Kubeflow/imagelist b/Kubeflow/imagelist index b942c677..523a2ade 100644 --- a/Kubeflow/imagelist +++ b/Kubeflow/imagelist @@ -29,15 +29,17 @@ gcr.io/kubeflow-images-public/katib/v1alpha3/katib-db-manager:v0.8.0 mysql:8 gcr.io/kubeflow-images-public/katib/v1alpha3/katib-ui:v0.8.0 docker.io/istio/proxyv2:1.5.1 -gcr.io/kfserving/batcher:v0.4.0 +kfserving/batcher:v0.4.0 gcr.io/kfserving/alibi-explainer -gcr.io/kfserving/logger:0.4.0 -tensorflow/serving -mcr.microsoft.com/onnxruntime/server -gcr.io/kfserving/sklearnserver -gcr.io/kfserving/xgbserver -gcr.io/kfserving/pytorchserver -nvcr.io/nvidia/tritonserver +gcr.io/kfserving/logger:v0.4.1 +tensorflow/serving:1.14.0 +tensorflow/serving:1.14.0-gpu +mcr.microsoft.com/onnxruntime/server:v1.0.0 +gcr.io/kfserving/sklearnserver:v0.4.0 +gcr.io/kfserving/xgbserver:v0.4.0 +gcr.io/kfserving/pytorchserver:v0.4.0 +gcr.io/kfserving/pytorchserver:v0.4.0-gpu +nvcr.io/nvidia/tritonserver:20.03-py3 gcr.io/kfserving/storage-initializer:v0.4.0 gcr.io/kubebuilder/kube-rbac-proxy:v0.4.0 gcr.io/kfserving/kfserving-controller:v0.4.0 From 05b13c7572588146feb54716f4e5a7243c33d4e5 Mon Sep 17 00:00:00 2001 From: wooyoungmin <47769117+minwy23@users.noreply.github.com> Date: Fri, 23 Oct 2020 19:53:24 +0900 Subject: [PATCH 058/106] Add files via upload --- Kubeflow/kustomize_local.tar.gz | Bin 194117 -> 194135 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Kubeflow/kustomize_local.tar.gz b/Kubeflow/kustomize_local.tar.gz index 6f459b9d85d2f0ba6296892ae54d19a8a09cd646..c72a6d6a82f90e5b4bb3df228814a4b387da8c6c 100644 GIT binary patch delta 181800 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

J@9^%ULQJ{#vPRh7pbN(7%=djZCMuSq+yWRv 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�M>NWv*#D723*Q!)m6QOTN4$JA$ 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

L@ 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 Date: Fri, 23 Oct 2020 19:54:45 +0900 Subject: [PATCH 059/106] Add files via upload --- Kubeflow/sed.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Kubeflow/sed.sh b/Kubeflow/sed.sh index c2310f89..fc2382b5 100644 --- a/Kubeflow/sed.sh +++ b/Kubeflow/sed.sh @@ -57,7 +57,7 @@ sed -i "s/\"image\": \"mcr.microsoft.com\/onnxruntime\/server/\"image\": \"${reg sed -i "s/\"image\": \"gcr.io\/kfserving\/sklearnserver/\"image\": \"${registry}\/gcr.io\/kfserving\/sklearnserver/g" ${dir}/kfserving-install\/base\/config-map.yaml sed -i "s/\"image\": \"gcr.io\/kfserving\/xgbserver/\"image\": \"${registry}\/gcr.io\/kfserving\/xgbserver/g" ${dir}/kfserving-install\/base\/config-map.yaml sed -i "s/\"image\": \"gcr.io\/kfserving\/pytorchserver/\"image\": \"${registry}\/gcr.io\/kfserving\/pytorchserver/g" ${dir}/kfserving-install\/base\/config-map.yaml -sed -i "s/\"image\": \"nvcr.io\/nvidia\/tensorrtserver/\"image\": \"${registry}\/nvcr.io\/nvidia\/tensorrtserver/g" ${dir}/kfserving-install\/base\/config-map.yaml +sed -i "s/\"image\": \"nvcr.io\/nvidia\/tritonserver/\"image\": \"${registry}\/nvcr.io\/nvidia\/tritonserver/g" ${dir}/kfserving-install\/base\/config-map.yaml sed -i "s/\"image\" : \"gcr.io\/kfserving\/storage-initializer/\"image\" : \"${registry}\/gcr.io\/kfserving\/storage-initializer/g" ${dir}/kfserving-install\/base\/config-map.yaml sed -i "s/image: gcr.io\/kfserving\/kfserving-controller/image: ${registry}\/gcr.io\/kfserving\/kfserving-controller/g" ${dir}/kfserving-install\/base\/statefulset.yaml sed -i "s/image: gcr.io\/kubebuilder\/kube-rbac-proxy/image: ${registry}\/gcr.io\/kubebuilder\/kube-rbac-proxy/g" ${dir}/kfserving-install\/base\/statefulset.yaml From a781c99e03714e32ddedf2af2b8cbff18133ad4c Mon Sep 17 00:00:00 2001 From: sukhee_yun Date: Mon, 26 Oct 2020 10:04:10 +0900 Subject: [PATCH 060/106] [mod] install CRD --- HyperCloud Operator/v4.1.0.41/README.md | 1 + HyperCloud Operator/v4.1.1.0/README.md | 1 + 2 files changed, 2 insertions(+) diff --git a/HyperCloud Operator/v4.1.0.41/README.md b/HyperCloud Operator/v4.1.0.41/README.md index 36468b44..9c21b28f 100644 --- a/HyperCloud Operator/v4.1.0.41/README.md +++ b/HyperCloud Operator/v4.1.0.41/README.md @@ -122,6 +122,7 @@ $ kubectl apply -f ${HPCD_HOME}/hypercloud-operator-${HPCD_VERSION}/_yaml_CRD/${HPCD_VERSION}/Auth/UsergroupCRD.yaml $ kubectl apply -f ${HPCD_HOME}/hypercloud-operator-${HPCD_VERSION}/_yaml_CRD/${HPCD_VERSION}/Auth/TokenCRD.yaml $ kubectl apply -f ${HPCD_HOME}/hypercloud-operator-${HPCD_VERSION}/_yaml_CRD/${HPCD_VERSION}/Auth/ClientCRD.yaml + $ kubectl apply -f ${HPCD_HOME}/hypercloud-operator-${HPCD_VERSION}/_yaml_CRD/${HPCD_VERSION}/Auth/clusterMenuPolicyCRD.yaml $ kubectl apply -f ${HPCD_HOME}/hypercloud-operator-${HPCD_VERSION}/_yaml_CRD/${HPCD_VERSION}/Auth/UserSecurityPolicyCRD.yaml $ kubectl apply -f ${HPCD_HOME}/hypercloud-operator-${HPCD_VERSION}/_yaml_CRD/${HPCD_VERSION}/Claim/NamespaceClaimCRD.yaml $ kubectl apply -f ${HPCD_HOME}/hypercloud-operator-${HPCD_VERSION}/_yaml_CRD/${HPCD_VERSION}/Claim/ResourceQuotaClaimCRD.yaml diff --git a/HyperCloud Operator/v4.1.1.0/README.md b/HyperCloud Operator/v4.1.1.0/README.md index 7fa38668..5b024f58 100644 --- a/HyperCloud Operator/v4.1.1.0/README.md +++ b/HyperCloud Operator/v4.1.1.0/README.md @@ -115,6 +115,7 @@ * 목적 : `hypercloud crd 생성` * 실행 : *CRD.yaml실행 ```bash + $ kubectl apply -f ${HPCD_HOME}/hypercloud-operator-${HPCD_VERSION}/_yaml_CRD/${HPCD_VERSION}/Auth/clusterMenuPolicyCRD.yaml $ kubectl apply -f ${HPCD_HOME}/hypercloud-operator-${HPCD_VERSION}/_yaml_CRD/${HPCD_VERSION}/Auth/UserSecurityPolicyCRD.yaml $ kubectl apply -f ${HPCD_HOME}/hypercloud-operator-${HPCD_VERSION}/_yaml_CRD/${HPCD_VERSION}/Claim/NamespaceClaimCRD.yaml $ kubectl apply -f ${HPCD_HOME}/hypercloud-operator-${HPCD_VERSION}/_yaml_CRD/${HPCD_VERSION}/Claim/ResourceQuotaClaimCRD.yaml From 2129d3f2528eb2353cab56f6b501cd5fd84570e3 Mon Sep 17 00:00:00 2001 From: sukhee_yun Date: Mon, 26 Oct 2020 14:16:00 +0900 Subject: [PATCH 061/106] =?UTF-8?q?registry=20=EC=A3=BC=EC=86=8C=20?= =?UTF-8?q?=ED=99=98=EA=B2=BD=20=EC=84=A4=EC=A0=95=EC=9C=BC=EB=A1=9C=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- IngressNginx/shared/README.md | 4 ++++ IngressNginx/system/README.md | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/IngressNginx/shared/README.md b/IngressNginx/shared/README.md index 77f2bea7..e9a859f2 100644 --- a/IngressNginx/shared/README.md +++ b/IngressNginx/shared/README.md @@ -19,6 +19,10 @@ $ export INGRESS_CLASS=nginx-shd $ export NGINX_INGRESS_VERSION=0.33.0 $ export KUBE_WEBHOOK_CERTGEN_VERSION=v1.2.2 + + # image를 push할 폐쇄망 Registry 주소 입력(예:192.168.6.150:5000) + $ export REGISTRY= + $ cd $NGINX_INGRESS_HOME ``` * 외부 네트워크 통신이 가능한 환경에서 필요한 이미지를 다운받는다. diff --git a/IngressNginx/system/README.md b/IngressNginx/system/README.md index e1df3129..046263d4 100644 --- a/IngressNginx/system/README.md +++ b/IngressNginx/system/README.md @@ -17,6 +17,10 @@ $ export NGINX_INGRESS_HOME=~/install-ingress-nginx-system $ export NGINX_INGRESS_VERSION=0.33.0 $ export KUBE_WEBHOOK_CERTGEN_VERSION=v1.2.2 + + # image를 push할 폐쇄망 Registry 주소 입력(예:192.168.6.150:5000) + $ export REGISTRY= + $ cd $NGINX_INGRESS_HOME ``` * 외부 네트워크 통신이 가능한 환경에서 필요한 이미지를 다운받는다. From 00d2b660dfaea293dc15cbb97068f7073d5f2dbf Mon Sep 17 00:00:00 2001 From: Hyeongbin Kim Date: Mon, 26 Oct 2020 19:43:09 +0900 Subject: [PATCH 062/106] Update README.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - rook-ceph documentation master 브랜치가 아니라 4.1 브랜치에 반영된 파일을 참조 하도록 수정 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a903705d..b69ddf74 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ | K8s Worker | v1.17.6 | https://github.com/tmax-cloud/hypercloud-install-guide/blob/master/K8S_Worker/README.md | O | | CNI | | https://github.com/tmax-cloud/hypercloud-install-guide/tree/master/CNI | O | | MetalLB | v0.8.2 | https://github.com/tmax-cloud/hypercloud-install-guide/tree/master/MetalLB | O | -| Rook Ceph | v1.3.6 | https://github.com/tmax-cloud/hypercloud-install-guide/blob/master/rook-ceph/README.md | O | +| Rook Ceph | v1.3.6 | https://github.com/tmax-cloud/hypercloud-install-guide/blob/4.1/rook-ceph/README.md | O | | HyperCloud Operator | v4.1.0.13 ~ v4.1.0.40 | https://github.com/tmax-cloud/hypercloud-install-guide/blob/master/HyperCloud%20Operator/v4.1.0.13/README.md | O | | HyperCloud Webhook | | https://github.com/tmax-cloud/hypercloud-install-guide/blob/master/HyperCloud%20Webhook/README.md | O | | Prometheus | v2.11.0 | https://github.com/tmax-cloud/hypercloud-install-guide/blob/master/Prometheus/README.md | O | From 56a97a946e052cc83d1c68840f760bf8b6c53565 Mon Sep 17 00:00:00 2001 From: taegeon woo <61040426+dnxorjs1@users.noreply.github.com> Date: Tue, 27 Oct 2020 18:34:49 +0900 Subject: [PATCH 063/106] Update 1.initialization.yaml --- HyperAuth/manifest/1.initialization.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/HyperAuth/manifest/1.initialization.yaml b/HyperAuth/manifest/1.initialization.yaml index 754dba9e..70514d70 100644 --- a/HyperAuth/manifest/1.initialization.yaml +++ b/HyperAuth/manifest/1.initialization.yaml @@ -98,7 +98,6 @@ metadata: labels: app: keycloak spec: - externalTrafficPolicy: Local ports: - name: http port: 8080 From 766921aa25e794924a40b762afe10e03083b6868 Mon Sep 17 00:00:00 2001 From: seonghoon_jeong <66111041+seonghoon-jeong@users.noreply.github.com> Date: Wed, 28 Oct 2020 17:17:16 +0900 Subject: [PATCH 064/106] Update install.sh MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 마스터 다중화 시, 마스터 모든 곳에서 kubeconfig 적용 --- installer/install.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/installer/install.sh b/installer/install.sh index ab874791..147dbe8e 100644 --- a/installer/install.sh +++ b/installer/install.sh @@ -187,6 +187,9 @@ function install_kube() { sudo chown $(id -u):$(id -g) $HOME/.kube/config echo "mainMaster" elif [ "${type}" == "master" ]; then + mkdir -p $HOME/.kube + sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config + sudo chown $(id -u):$(id -g) $HOME/.kube/config # master type echo "master" elif [ "${type}" == "worker" ]; then From c54243de85b94ad3b289a4b7b286ef2adb4e3010 Mon Sep 17 00:00:00 2001 From: taegeon woo <61040426+dnxorjs1@users.noreply.github.com> Date: Thu, 29 Oct 2020 12:56:20 +0900 Subject: [PATCH 065/106] Update 2.hyperauth_deployment.yaml --- HyperAuth/manifest/2.hyperauth_deployment.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/HyperAuth/manifest/2.hyperauth_deployment.yaml b/HyperAuth/manifest/2.hyperauth_deployment.yaml index 204d8465..a89e23d0 100644 --- a/HyperAuth/manifest/2.hyperauth_deployment.yaml +++ b/HyperAuth/manifest/2.hyperauth_deployment.yaml @@ -21,7 +21,7 @@ spec: secretName: hyperauth-https-secret containers: - name: hyperauth - image: tmaxcloudck/hyperauth:b1.0.9.12 + image: tmaxcloudck/hyperauth:b1.0.10.0 env: - name: KEYCLOAK_USER value: "admin" From 5d511ff359e3c48a0384c301295194fb84fed9a3 Mon Sep 17 00:00:00 2001 From: wooyoungmin <47769117+minwy23@users.noreply.github.com> Date: Thu, 29 Oct 2020 18:33:49 +0900 Subject: [PATCH 066/106] Update imagelist --- Kubeflow/imagelist | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Kubeflow/imagelist b/Kubeflow/imagelist index 523a2ade..b8812fd3 100644 --- a/Kubeflow/imagelist +++ b/Kubeflow/imagelist @@ -73,3 +73,7 @@ gcr.io/google_containers/spartakus-amd64:v1.1.0 tensorflow/tensorflow:1.8.0 gcr.io/kubeflow-images-public/tf_operator:v1.0.0-g92389064 gcr.io/kubeflow-images-public/admission-webhook:v1.0.0-gaf96e4e3 +gcr.io/kaniko-project/executor:v0.22.0 +brightfly/kubeflow-jupyter-lab:tf2.0-cpu +brightfly/kubeflow-jupyter-lab:tf2.0-gpu +tmaxcloudck/kubeflow-jupyter-lab:v0.1 From 8249adff1e803ad25ba20c2aea065809bf1bcd07 Mon Sep 17 00:00:00 2001 From: wooyoungmin <47769117+minwy23@users.noreply.github.com> Date: Fri, 30 Oct 2020 12:43:20 +0900 Subject: [PATCH 067/106] Add files via upload --- Kubeflow/demo/1.notebook_closednw.yaml | 42 ++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 Kubeflow/demo/1.notebook_closednw.yaml diff --git a/Kubeflow/demo/1.notebook_closednw.yaml b/Kubeflow/demo/1.notebook_closednw.yaml new file mode 100644 index 00000000..db50b3c1 --- /dev/null +++ b/Kubeflow/demo/1.notebook_closednw.yaml @@ -0,0 +1,42 @@ +apiVersion: hyperflow.tmax.io/v1 +kind: Notebook +metadata: + labels: + app: demo-notebook + name: demo-notebook + namespace: demo +spec: + template: + spec: + containers: + - env: + ## 폐쇄망 registry 주소 (수정 필요) + - name: REGISTRY + value: "192.168.6.181:5000" + ## notebook image 정의 (수정 필요) + image: '192.168.6.181:5000/tmaxcloudck/kubeflow-jupyter-lab:v0.1' + name: demo + resources: + ## notebook 사양 정의 + requests: + cpu: "0.5" + memory: 1.0Gi + volumeMounts: + - mountPath: /home/jovyan + name: demo-pvc + - mountPath: /dev/shm + name: dshm + serviceAccountName: default-editor + ttlSecondsAfterFinished: 300 + ## 사용할 volume 정의 + volumes: + - name: demo-pvc + persistentVolumeClaim: + claimName: demo-pvc + - emptyDir: + medium: Memory + name: dshm + ## 사용할 volumeClaim 정의 : 없으면 새로 pvc를 생성 + volumeClaim: + - name: demo-pvc + size: 10Gi \ No newline at end of file From 386edb5449c20faaa34deb42ed0386cd919a2222 Mon Sep 17 00:00:00 2001 From: wooyoungmin <47769117+minwy23@users.noreply.github.com> Date: Fri, 30 Oct 2020 13:13:12 +0900 Subject: [PATCH 068/106] Update readMe.md --- Kubeflow/demo/readMe.md | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/Kubeflow/demo/readMe.md b/Kubeflow/demo/readMe.md index 46674029..e164568d 100644 --- a/Kubeflow/demo/readMe.md +++ b/Kubeflow/demo/readMe.md @@ -1,5 +1,5 @@ # Hyperflow를 사용한 AI 개발 시나리오 가이드 -가이드 문의 CK2-4팀 +가이드 문의 CK1-4팀 주의 사항 : - notebook-controller-go image b0.0.2 이상 버전, hypercloud-console image 4.1.2.3.0 이상 버전에서 notebook이 UI에 정상 표기 @@ -55,8 +55,10 @@ Fashion-MNIST 데이터를 활용하여 Image가 어떤 Fashion Item인지 추 ![1.notebook.PNG](./img/1.notebook.PNG) - 참고 : [1.notebook.yaml](./1.notebook.yaml) + - 폐쇄망 환경의 경우 : [1.notebook_closednw.yaml](./1.notebook_closednw.yaml) *시나리오에서는 여러 커스텀 패키지가 포함된 custom jupyterNotebook image를 사용하였다. (brightfly/kubeflow-jupyter-lab:tf2.0-gpu) +*폐쇄망 환경의 경우 시나리오에서 사용되는 파이썬 패키지가 포함되어 있고 fairing 코드가 수정된 custom jupyterNotebook image를 사용하였다. (tmaxcloudck/kubeflow-jupyter-lab:v0.1) - 정상적인 배포를 확인하기 위해, action->connect 버튼을 눌러 jupyter진입을 확인하자. @@ -65,8 +67,12 @@ Fashion-MNIST 데이터를 활용하여 Image가 어떤 Fashion Item인지 추 ## Step 2. ML model을 코딩하고, 클라우드 작업을 위한 image 생성하기 - tensorflow 모듈을 활용하여 ML 코드를 작성하고, kubeflow 모듈을 활용하여 ML image를 배포한다. - - 정상적으로 image를 배포하기 위해, jupyterNotebook container에 docker registry 인증정보를 넣어야한다. - - 시나리오에서는 public registry인 docker hub를 활용하였고, 인증이 적용된 private registry 또한 사용 가능하다. + - 정상적으로 image를 배포하기 위해, jupyterNotebook container에 docker registry 인증정보를 넣어야 한다. + - 시나리오에서는 public registry인 docker hub를 활용하였고, 인증이 적용된 private registry 또한 사용 가능하다. + - 폐쇄망 환경일 경우 아래 인증 방법을 수행할 필요 없이 아래 명령어만 수행한다. + ```bash + $ kubectl -n demo create configmap docker-config + ``` ### 인증 방법 1) 로컬 개발 환경의 docker registry 인증정보 사용 - docker에 로그인 되어있는 로컬 개발환경에서 config.json을 복사하여, jupyterNotebook container에 붙여넣는다. @@ -99,7 +105,9 @@ ls home/jovyan/.docker/ cp $HOME/.docker/config.json /home/jovyan/.docker/config.json ``` - - 위의 작업이 끝났다면, code run을 하여 이미지를 배포하자. (UI는 jupyter 버전에 따라 다를 수 있음) + - 위의 작업이 끝났다면, 코드 내 DOCKER_REGISTRY를 자신이 사용할 registry로 변경한다. + - 폐쇄망 환경의 경우 fairing에서 사용할 base_image 또한 폐쇄망 내 registry에서 받아오도록 변경한다. + - Run을 하여 이미지를 배포하자. (UI는 jupyter 버전에 따라 다를 수 있음) ![2.fmnist-save-model-renew.PNG](./img/2.fmnist-save-model-renew.PNG) - 참고 : [fmnist-save-model-renew.ipynb](./fmnist-save-model-renew.ipynb) @@ -109,9 +117,9 @@ cp $HOME/.docker/config.json /home/jovyan/.docker/config.json pip install kubeflow-fairing --upgrade ``` -*실행이 잘 되지 않는다면, pythonNotebook의 kerner을 리셋 후 다시 code run을 진행하자. (code run 옆에 커널새로고침 버튼 클릭) +*실행이 잘 되지 않는다면, pythonNotebook의 kernel을 리셋 후 다시 code run을 진행하자. (code run 옆에 커널 새로고침 버튼 클릭) - - 아래와 같이 docker hub에 rhojw/sample-job:3C8CE2EE 의 image가 배포된 것을 확인할 수 있다. 이후 Step에 사용할 image이다. + - 아래와 같이 docker hub에 rhojw/sample-job:3C8CE2EE 의 image가 배포된 것을 확인할 수 있다. 이후 Step에서 사용할 image이다. ![2.docker-image.PNG](./img/2.docker-image.PNG) From 28e5665cbfe2f3d75d629be942f188359d766b76 Mon Sep 17 00:00:00 2001 From: wooyoungmin <47769117+minwy23@users.noreply.github.com> Date: Fri, 30 Oct 2020 13:18:02 +0900 Subject: [PATCH 069/106] Update readMe.md --- Kubeflow/demo/readMe.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Kubeflow/demo/readMe.md b/Kubeflow/demo/readMe.md index e164568d..910bac3c 100644 --- a/Kubeflow/demo/readMe.md +++ b/Kubeflow/demo/readMe.md @@ -58,7 +58,7 @@ Fashion-MNIST 데이터를 활용하여 Image가 어떤 Fashion Item인지 추 - 폐쇄망 환경의 경우 : [1.notebook_closednw.yaml](./1.notebook_closednw.yaml) *시나리오에서는 여러 커스텀 패키지가 포함된 custom jupyterNotebook image를 사용하였다. (brightfly/kubeflow-jupyter-lab:tf2.0-gpu) -*폐쇄망 환경의 경우 시나리오에서 사용되는 파이썬 패키지가 포함되어 있고 fairing 코드가 수정된 custom jupyterNotebook image를 사용하였다. (tmaxcloudck/kubeflow-jupyter-lab:v0.1) +*폐쇄망 환경의 경우 시나리오에서 사용되는 파이썬 패키지가 포함되어 있고 fairing 코드가 수정된 custom jupyterNotebook image를 사용하였다. (tmaxcloudck/kubeflow-jupyter-lab:v0.1) - 정상적인 배포를 확인하기 위해, action->connect 버튼을 눌러 jupyter진입을 확인하자. From 038a9c9f34af7fd261fbeee1ddd4ace0e421ae70 Mon Sep 17 00:00:00 2001 From: wooyoungmin <47769117+minwy23@users.noreply.github.com> Date: Fri, 30 Oct 2020 13:18:33 +0900 Subject: [PATCH 070/106] Update readMe.md --- Kubeflow/demo/readMe.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Kubeflow/demo/readMe.md b/Kubeflow/demo/readMe.md index 910bac3c..cc7f9080 100644 --- a/Kubeflow/demo/readMe.md +++ b/Kubeflow/demo/readMe.md @@ -58,7 +58,8 @@ Fashion-MNIST 데이터를 활용하여 Image가 어떤 Fashion Item인지 추 - 폐쇄망 환경의 경우 : [1.notebook_closednw.yaml](./1.notebook_closednw.yaml) *시나리오에서는 여러 커스텀 패키지가 포함된 custom jupyterNotebook image를 사용하였다. (brightfly/kubeflow-jupyter-lab:tf2.0-gpu) -*폐쇄망 환경의 경우 시나리오에서 사용되는 파이썬 패키지가 포함되어 있고 fairing 코드가 수정된 custom jupyterNotebook image를 사용하였다. (tmaxcloudck/kubeflow-jupyter-lab:v0.1) + +*폐쇄망 환경의 경우 시나리오에서 사용되는 파이썬 패키지가 포함되어 있고 fairing 코드가 수정된 custom jupyterNotebook image를 사용하였다. (tmaxcloudck/kubeflow-jupyter-lab:v0.1) - 정상적인 배포를 확인하기 위해, action->connect 버튼을 눌러 jupyter진입을 확인하자. From 6ac4dfc4ba838557bcb9e0a7d0898d0730f0272b Mon Sep 17 00:00:00 2001 From: wooyoungmin <47769117+minwy23@users.noreply.github.com> Date: Fri, 30 Oct 2020 13:19:02 +0900 Subject: [PATCH 071/106] Update imagelist --- Kubeflow/imagelist | 1 + 1 file changed, 1 insertion(+) diff --git a/Kubeflow/imagelist b/Kubeflow/imagelist index b8812fd3..afe189f8 100644 --- a/Kubeflow/imagelist +++ b/Kubeflow/imagelist @@ -77,3 +77,4 @@ gcr.io/kaniko-project/executor:v0.22.0 brightfly/kubeflow-jupyter-lab:tf2.0-cpu brightfly/kubeflow-jupyter-lab:tf2.0-gpu tmaxcloudck/kubeflow-jupyter-lab:v0.1 +brightfly/fminst-webui:latest From b652ccb4cd9d28d230da9ca594cedf16adb0e2c4 Mon Sep 17 00:00:00 2001 From: wooyoungmin <47769117+minwy23@users.noreply.github.com> Date: Fri, 30 Oct 2020 13:22:59 +0900 Subject: [PATCH 072/106] Add files via upload --- Kubeflow/demo/Dockerfile | 153 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 153 insertions(+) create mode 100644 Kubeflow/demo/Dockerfile diff --git a/Kubeflow/demo/Dockerfile b/Kubeflow/demo/Dockerfile new file mode 100644 index 00000000..efd71a81 --- /dev/null +++ b/Kubeflow/demo/Dockerfile @@ -0,0 +1,153 @@ +# Copyright (c) Jupyter Development Team. +# Distributed under the terms of the Modified BSD License. + +ARG BASE_IMAGE=tensorflow/tensorflow:2.1.0-py3-jupyter + +FROM $BASE_IMAGE + +ARG TF_SERVING_VERSION=0.0.0 +ARG NB_USER=jovyan + +# TODO: User should be refactored instead of hard coded jovyan + +USER root + +ENV DEBIAN_FRONTEND noninteractive + +ENV NB_USER $NB_USER + +ENV NB_UID 1000 +ENV HOME /home/$NB_USER +ENV NB_PREFIX / + + +# Use bash instead of sh +SHELL ["/bin/bash", "-c"] + +RUN apt-get update && apt-get install -yq --no-install-recommends \ + apt-transport-https \ + build-essential \ + bzip2 \ + ca-certificates \ + curl \ + g++ \ + git \ + gnupg \ + graphviz \ + locales \ + lsb-release \ + openssh-client \ + sudo \ + unzip \ + vim \ + wget \ + zip \ + emacs \ + python3-pip \ + python3-dev \ + python3-setuptools \ + npm \ + && apt-get clean && \ + rm -rf /var/lib/apt/lists/* + +# Install Nodejs for jupyterlab-manager +RUN curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash - +RUN apt-get update && apt-get install -yq --no-install-recommends \ + nodejs \ + && apt-get clean && \ + rm -rf /var/lib/apt/lists/* + +ENV DOCKER_CREDENTIAL_GCR_VERSION=1.4.3 +RUN curl -LO https://github.com/GoogleCloudPlatform/docker-credential-gcr/releases/download/v${DOCKER_CREDENTIAL_GCR_VERSION}/docker-credential-gcr_linux_amd64-${DOCKER_CREDENTIAL_GCR_VERSION}.tar.gz && \ + tar -zxvf docker-credential-gcr_linux_amd64-${DOCKER_CREDENTIAL_GCR_VERSION}.tar.gz && \ + mv docker-credential-gcr /usr/local/bin/docker-credential-gcr && \ + rm docker-credential-gcr_linux_amd64-${DOCKER_CREDENTIAL_GCR_VERSION}.tar.gz && \ + chmod +x /usr/local/bin/docker-credential-gcr + +# Install AWS CLI +RUN curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "/tmp/awscli-bundle.zip" && \ + unzip /tmp/awscli-bundle.zip && ./awscli-bundle/install -i /usr/local/aws -b /usr/local/bin/aws && \ + rm -rf ./awscli-bundle + +# Install Azure CLI +RUN curl -sL https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor | tee /etc/apt/trusted.gpg.d/microsoft.asc.gpg > /dev/null && \ + AZ_REPO=$(lsb_release -cs) && \ + echo "deb [arch=amd64] https://packages.microsoft.com/repos/azure-cli/ $AZ_REPO main" | tee /etc/apt/sources.list.d/azure-cli.list && \ + apt-get update && \ + apt-get install azure-cli + + +RUN echo "en_US.UTF-8 UTF-8" > /etc/locale.gen && \ + locale-gen + +ENV LC_ALL en_US.UTF-8 +ENV LANG en_US.UTF-8 +ENV LANGUAGE en_US.UTF-8 + +# Create NB_USER user with UID=1000 and in the 'users' group +# but allow for non-initial launches of the notebook to have +# $HOME provided by the contents of a PV +RUN useradd -M -s /bin/bash -N -u $NB_UID $NB_USER && \ + chown -R ${NB_USER}:users /usr/local/bin && \ + mkdir -p $HOME + +RUN export CLOUD_SDK_REPO="cloud-sdk-$(lsb_release -c -s)" && \ + echo "deb https://packages.cloud.google.com/apt $CLOUD_SDK_REPO main" > /etc/apt/sources.list.d/google-cloud-sdk.list && \ + curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add - && \ + apt-get update && \ + apt-get install -y google-cloud-sdk kubectl + +# Install Tini - used as entrypoint for container +RUN cd /tmp && \ + wget --quiet https://github.com/krallin/tini/releases/download/v0.18.0/tini && \ + echo "12d20136605531b09a2c2dac02ccee85e1b874eb322ef6baf7561cd93f93c855 *tini" | sha256sum -c - && \ + mv tini /usr/local/bin/tini && \ + chmod +x /usr/local/bin/tini + +# Install docker +RUN apt-get install software-properties-common -y && \ + curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \ + apt-key add - && \ + add-apt-repository \ + "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" && \ + apt-get update && \ + apt-cache policy docker-ce && \ + apt-get install -y docker-ce + +# NOTE: Beyond this point be careful of breaking out +# or otherwise adding new layers with RUN, chown, etc. +# The image size can grow significantly. + +# Install base python3 packages +RUN pip3 --no-cache-dir install \ + jupyter-console==6.0.0 \ + jupyterlab \ + xgboost \ + kubeflow-fairing==1.0.1 \ + pandas \ + numpy \ + matplotlib \ + sklearn \ + google-auth==1.21.1 \ + six==1.15 \ + urllib3==1.25.4 \ + msrestazure \ + easydict + +RUN pip3 uninstall -y enum34 +#RUN pip3 install urllib3==1.25.4 + +RUN rm -rf /usr/local/lib/python3.6/dist-packages/kubeflow/fairing/constants/constants.py +ADD ./constants.py /usr/local/lib/python3.6/dist-packages/kubeflow/fairing/constants +ADD ./setup.py /usr/local/lib/python3.6/dist-packages +ADD ./requirements.txt /usr/local/lib/python3.6/dist-packages +WORKDIR /usr/local/lib/python3.6/dist-packages +RUN python3 setup.py install + +RUN docker-credential-gcr configure-docker && chown ${NB_USER}:users $HOME/.docker/config.json + +# Configure container startup +EXPOSE 8888 +#USER jovyan +ENTRYPOINT ["tini", "--"] +CMD ["sh","-c", "jupyter lab --notebook-dir=/home/${NB_USER} --ip=0.0.0.0 --no-browser --allow-root --port=8888 --NotebookApp.token='' --NotebookApp.password='' --NotebookApp.allow_origin='*' --NotebookApp.base_url=${NB_PREFIX}"] From 0e435aae8908eb63f5be7cb7cfae461c9dbd280a Mon Sep 17 00:00:00 2001 From: seonghoon_jeong <66111041+seonghoon-jeong@users.noreply.github.com> Date: Thu, 5 Nov 2020 13:22:14 +0900 Subject: [PATCH 073/106] Update install.sh MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit master 이중화 경우, master join 이후에 kube config 설정 해줘야 함 install.sh수행 하지 않고, 코드상에서 master join 후 진행하는 걸로 수정 --- installer/install.sh | 3 --- 1 file changed, 3 deletions(-) diff --git a/installer/install.sh b/installer/install.sh index 147dbe8e..ab874791 100644 --- a/installer/install.sh +++ b/installer/install.sh @@ -187,9 +187,6 @@ function install_kube() { sudo chown $(id -u):$(id -g) $HOME/.kube/config echo "mainMaster" elif [ "${type}" == "master" ]; then - mkdir -p $HOME/.kube - sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config - sudo chown $(id -u):$(id -g) $HOME/.kube/config # master type echo "master" elif [ "${type}" == "worker" ]; then From 4b165e5523ec674ca08fcb4703aeca1a87aa7831 Mon Sep 17 00:00:00 2001 From: wooyoungmin <47769117+minwy23@users.noreply.github.com> Date: Thu, 12 Nov 2020 09:40:39 +0900 Subject: [PATCH 074/106] Add files via upload --- Kubeflow/demo/7.wf-template.yaml | 206 +++++++++++++++++++++++++++++++ Kubeflow/demo/7.workflow.yaml | 8 ++ 2 files changed, 214 insertions(+) create mode 100644 Kubeflow/demo/7.wf-template.yaml create mode 100644 Kubeflow/demo/7.workflow.yaml diff --git a/Kubeflow/demo/7.wf-template.yaml b/Kubeflow/demo/7.wf-template.yaml new file mode 100644 index 00000000..05f263a6 --- /dev/null +++ b/Kubeflow/demo/7.wf-template.yaml @@ -0,0 +1,206 @@ +apiVersion: argoproj.io/v1alpha1 +kind: WorkflowTemplate +metadata: + name: demo-workflowtemplate + namespace: demo +spec: + ## 공통 arg 정의 + arguments: + parameters: + - name: pvc_name + value: demo-pvc + ## 시작 task(template) 설정 + entrypoint: step + serviceAccountName: default-editor + templates: + ## 수행 flow를 정의 + - name: step + steps: + - - name: tunning + template: katib + - - name: training + template: tfjob + arguments: + parameters: + - name: tfjob-arg-lrrate + value: '{{steps.tunning.outputs.parameters.learning_rate}}' + - name: tfjob-arg-dorate + value: '{{steps.tunning.outputs.parameters.dropout_rate}}' + - - name: serving + template: kfserving + + ## Katib를 수행하는 task를 정의 + - name: katib + metadata: + annotations: + sidecar.istio.io/inject: "false" + resource: + action: create + successCondition: status.trialsSucceeded==5 + manifest: | + apiVersion: "kubeflow.org/v1alpha3" + kind: Experiment + metadata: + namespace: demo + labels: + controller-tools.k8s.io: "1.0" + name: demo-experiment + spec: + ## 목표 정의 : validation-accuracy를 maxmize + objective: + type: maximize + goal: 0.99 + objectiveMetricName: Validation-accuracy + additionalMetricNames: + - accuracy + - loss + - Validation-loss + ## 메트릭 수집 방식 정의 : /result/mnist.log의 File을 통해 수집 + metricsCollectorSpec: + source: + fileSystemPath: + path: "/result/mnist.log" + kind: File + collector: + kind: File + ## hyperParameter 탐색 algorithm 정의 + algorithm: + algorithmName: random + ## 분산 학습 설정 : 최대 5 학습, 동시에 3 학습씩 진행 + parallelTrialCount: 3 + maxTrialCount: 5 + maxFailedTrialCount: 3 + ## 살펴볼 hyperParameter들과 그 범위 정의 : learning_rate와 dropout_rate를 살펴봄 + parameters: + - name: --learning_rate + parameterType: double + feasibleSpace: + min: "0.01" + max: "0.03" + - name: --dropout_rate + parameterType: double + feasibleSpace: + min: "0.1" + max: "0.9" + ## ML Model을 학습시킬 Job 정의 + trialTemplate: + goTemplate: + rawTemplate: |- + apiVersion: batch/v1 + kind: Job + metadata: + name: {{.Trial}} + namespace: {{.NameSpace}} + spec: + template: + spec: + containers: + - name: {{.Trial}} + image: docker.io/rhojw/sample-job:3C8CE2EE + command: + - "python" + - "/app/fmnist-save-model-renew.py" + {{- with .HyperParameters}} + {{- range .}} + - "{{.Name}}={{.Value}}" + {{- end}} + {{- end}} + resources: + limits: + nvidia.com/gpu: 1 + restartPolicy: Never + outputs: + parameters: + - name: learning_rate + valueFrom: + jsonPath: "{.status.currentOptimalTrial.parameterAssignments[?(@.name=='--learning_rate')].value}" + - name: dropout_rate + valueFrom: + jsonPath: "{.status.currentOptimalTrial.parameterAssignments[?(@.name=='--dropout_rate')].value}" + + ## TFJob을 수행하는 task를 정의 + - name: tfjob + metadata: + annotations: + sidecar.istio.io/inject: "false" + inputs: + parameters: + - name: tfjob-arg-lrrate + - name: tfjob-arg-dorate + resource: + action: create + successCondition: status.replicaStatuses.Worker.succeeded==1 + manifest: | + apiVersion: kubeflow.org/v1 + kind: TFJob + metadata: + name: demo-tfjob + namespace: demo + spec: + tfReplicaSpecs: + Worker: + replicas: 1 + template: + metadata: + annotations: + sidecar.istio.io/inject: "false" + name: fairing-deployer + spec: + ## hyperparameter값을 설정 : learningRate, dropoutRate + containers: + - command: + - python + - /app/fmnist-save-model-renew.py + - "--learning_rate={{inputs.parameters.tfjob-arg-lrrate}}" + - "--dropout_rate={{inputs.parameters.tfjob-arg-dorate}}" + env: + - name: FAIRING_RUNTIME + value: "1" + image: rhojw/sample-job:3C8CE2EE + name: tensorflow + resources: + limits: + cpu: 1 + memory: 1.86Gi + securityContext: + runAsUser: 0 + volumeMounts: + - mountPath: /result + name: fairing-volume-demo-pvc + workingDir: /app/ + restartPolicy: Never + ## Model이 저장될 storage 정의 + volumes: + - name: fairing-volume-demo-pvc + persistentVolumeClaim: + claimName: '{{workflow.parameters.pvc_name}}' + + ## KFServing을 수행하는 task를 정의 + - name: kfserving + metadata: + annotations: + sidecar.istio.io/inject: "false" + resource: + action: create + successCondition: status.traffic==100 + manifest: | + apiVersion: serving.kubeflow.org/v1alpha2 + kind: InferenceService + metadata: + name: demo-inferenceservice + namespace: demo + spec: + default: + predictor: + ## inference server 정의 + tensorflow: + resources: + limits: + cpu: 100m + memory: 1Gi + requests: + cpu: 100m + memory: 1Gi + runtimeVersion: 1.14.0 + ## Model 위치 설정 + storageUri: pvc://{{workflow.parameters.pvc_name}}/saved_model \ No newline at end of file diff --git a/Kubeflow/demo/7.workflow.yaml b/Kubeflow/demo/7.workflow.yaml new file mode 100644 index 00000000..1d6596e9 --- /dev/null +++ b/Kubeflow/demo/7.workflow.yaml @@ -0,0 +1,8 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Workflow +metadata: + name: demo-workflow + namespace: demo +spec: + workflowTemplateRef: + name: demo-workflowtemplate \ No newline at end of file From abf8d120fd07b8b7fdb4a0a916362122e691dc69 Mon Sep 17 00:00:00 2001 From: jinho0928 Date: Tue, 1 Dec 2020 11:12:15 +0900 Subject: [PATCH 075/106] Create KUBE_CERTIFICATE_UPDATE_README.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 인증서 갱신 README 생성 --- K8S_Master/KUBE_CERTIFICATE_UPDATE_README.md | 39 ++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 K8S_Master/KUBE_CERTIFICATE_UPDATE_README.md diff --git a/K8S_Master/KUBE_CERTIFICATE_UPDATE_README.md b/K8S_Master/KUBE_CERTIFICATE_UPDATE_README.md new file mode 100644 index 00000000..5ab24e66 --- /dev/null +++ b/K8S_Master/KUBE_CERTIFICATE_UPDATE_README.md @@ -0,0 +1,39 @@ +# kubeadm을 이용한 인증서 갱신 + +## Prerequisites + * kubeadm + +## Step0. 인증서 만료 확인 +* 목적 : `인증서가 만료되는 시기를 확인한다.` +* 순서 : + ```bash + kubeadm alpha certs check-expiration + ``` + ```bash + CERTIFICATE EXPIRES RESIDUAL TIME CERTIFICATE AUTHORITY EXTERNALLY MANAGED + admin.conf Nov 30, 2021 07:23 UTC 364d no + apiserver Nov 30, 2021 07:23 UTC 364d ca no + apiserver-etcd-client Nov 30, 2021 07:23 UTC 364d etcd-ca no + apiserver-kubelet-client Nov 30, 2021 07:23 UTC 364d ca no + controller-manager.conf Nov 30, 2021 07:23 UTC 364d no + etcd-healthcheck-client Nov 30, 2021 07:23 UTC 364d etcd-ca no + etcd-peer Nov 30, 2021 07:23 UTC 364d etcd-ca no + etcd-server Nov 30, 2021 07:23 UTC 364d etcd-ca no + front-proxy-client Nov 30, 2021 07:23 UTC 364d front-proxy-ca no + scheduler.conf Nov 30, 2021 07:23 UTC 364d no + + CERTIFICATE AUTHORITY EXPIRES RESIDUAL TIME EXTERNALLY MANAGED + ca Nov 21, 2030 06:29 UTC 9y no + etcd-ca Nov 21, 2030 06:29 UTC 9y no + front-proxy-ca Nov 21, 2030 06:29 UTC 9y no + ``` + +## Step1. 인증서 갱신 +* 목적 : `인증서를 수동으로 갱신한다.` +* 순서 : + * 아래 명령어는 /etc/kubernetes/pki 에 저장된 CA(또는 프론트 프록시 CA) 인증서와 키를 사용하여 갱신을 수행한다. + ```bash + kubeadm alpha certs renew all + ``` +* 비고 : + * warning : 다중화 클러스터 구성의 경우, 모든 컨트롤 플레인 노드에서 이 명령을 실행해야 한다. From 7604855854c93235d11181347209ef3c6be53645 Mon Sep 17 00:00:00 2001 From: jinho0928 Date: Wed, 2 Dec 2020 16:51:21 +0900 Subject: [PATCH 076/106] Update KUBE_CERTIFICATE_UPDATE_README.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 인증서 만료 시 가이드 수정 --- K8S_Master/KUBE_CERTIFICATE_UPDATE_README.md | 25 +++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/K8S_Master/KUBE_CERTIFICATE_UPDATE_README.md b/K8S_Master/KUBE_CERTIFICATE_UPDATE_README.md index 5ab24e66..2ab90f5b 100644 --- a/K8S_Master/KUBE_CERTIFICATE_UPDATE_README.md +++ b/K8S_Master/KUBE_CERTIFICATE_UPDATE_README.md @@ -32,8 +32,31 @@ * 목적 : `인증서를 수동으로 갱신한다.` * 순서 : * 아래 명령어는 /etc/kubernetes/pki 에 저장된 CA(또는 프론트 프록시 CA) 인증서와 키를 사용하여 갱신을 수행한다. + * kubeadm으로 생성된 클라이언트 인증서는 1년 기준이다. ```bash kubeadm alpha certs renew all - ``` + ``` * 비고 : * warning : 다중화 클러스터 구성의 경우, 모든 컨트롤 플레인 노드에서 이 명령을 실행해야 한다. + * 이미 인증서가 만료된 경우 아래 가이드를 참조하여 인증서를 갱신한다. + * 기존 인증서 및 config 백업 (권장사항) + ```bash + mkdir ~/cert_temp + + cd /etc/kubernetes/pki/ + mv {apiserver.crt,apiserver-etcd-client.key,apiserver-kubelet-client.crt,front-proxy-ca.crt,front-proxy-client.crt,front-proxy-client.key,front-proxy-ca.key,apiserver-kubelet-client.key,apiserver.key,apiserver-etcd-client.crt} ~/cert_temp + + cd /etc/kubernetes/ + mv {admin.conf,controller-manager.conf,mv kubelet.conf,scheduler.conf} ~/cert_temp + ``` + * 새 인증서 생성 및 config 변경 적용 + ```bash + kubeadm init phase certs all --apiserver-advertise-address + + kubeadm init phase kubeconfig all + ``` + * reboot + * kube config 복사 + ```bash + cp -i /etc/kubernetes/admin.conf $HOME/.kube/config + ``` From 2d909a3d02f4cc864c69da7c599541469768a06d Mon Sep 17 00:00:00 2001 From: yshcoffee <47413947+yshcoffee@users.noreply.github.com> Date: Thu, 3 Dec 2020 10:00:19 +0900 Subject: [PATCH 077/106] add auth init install step --- HyperCloud Operator/v4.1.1.0/README.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/HyperCloud Operator/v4.1.1.0/README.md b/HyperCloud Operator/v4.1.1.0/README.md index 5b024f58..db2093a7 100644 --- a/HyperCloud Operator/v4.1.1.0/README.md +++ b/HyperCloud Operator/v4.1.1.0/README.md @@ -87,6 +87,7 @@ 3. [2.mysql-settings.yaml 실행](https://github.com/tmax-cloud/hypercloud-install-guide/blob/4.1/HyperCloud%20Operator/v4.1.1.0/README.md#step-3-2mysql-settingsyaml-%EC%8B%A4%ED%96%89) 4. [3.mysql-create.yaml 실행](https://github.com/tmax-cloud/hypercloud-install-guide/blob/4.1/HyperCloud%20Operator/v4.1.1.0/README.md#step-4-3mysql-createyaml-%EC%8B%A4%ED%96%89) 5. [4.hypercloud4-operator.yaml 실행](https://github.com/tmax-cloud/hypercloud-install-guide/blob/4.1/HyperCloud%20Operator/v4.1.1.0/README.md#step-5-4hypercloud4-operatoryaml-%EC%8B%A4%ED%96%89) +6. [6.default-auth-object-init.yaml 실행](https://github.com/tmax-cloud/hypercloud-install-guide/blob/4.1/HyperCloud%20Operator/v4.1.1.0/README.md#step-6-6default-auth-object-inityaml-%EC%8B%A4%ED%96%89) ## Step 0. install yaml 수정 @@ -150,3 +151,10 @@ ```bash $ kubectl apply -f ${HPCD_HOME}/hypercloud-operator-${HPCD_VERSION}/_yaml_Install/4.hypercloud4-operator.yaml ``` + +## Step 6. 6.default-auth-object-init.yaml 실행 +* 목적: `admin ClusterRoleBinding 및 namespace-owner, namespace-user, clusterrole-trial, clusterrole-new-user, namespace-listget ClusterRole 생성` +* 실행: + ```bash + $ kubectl apply -f ${HPCD_HOME}/hypercloud-operator-${HPCD_VERSION}/_yaml_Install/6.default-auth-object-init.yaml + ``` From a720956f04fc82408f117e9371382f0d42e89624 Mon Sep 17 00:00:00 2001 From: taegeon woo <61040426+dnxorjs1@users.noreply.github.com> Date: Fri, 4 Dec 2020 13:47:56 +0900 Subject: [PATCH 078/106] Update README.md --- HyperAuth/README.md | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/HyperAuth/README.md b/HyperAuth/README.md index e48331e1..f9039fe5 100644 --- a/HyperAuth/README.md +++ b/HyperAuth/README.md @@ -87,16 +87,31 @@ LoadBalancer, NodePort type의 service 생성 가능 ## Step 2. SSL 인증서 생성 * 목적 : `HTTPS 인증을 위한 openssl 인증서를 생성하고 secret으로 변환` -* 생성 순서 : 아래 명령어를 실행하여 인증서 생성 및 secret을 생성 (Master Node의 특정 directory 내부에서 실행 권장) +* 생성 순서 : 아래 명령어를 실행하여 인증서 생성 및 secret을 생성 (Master Node의 특정 directory 내부에서 실행 권장) (인증서 기한 10년 2020-12-04 이후부터 적용, 이전은 1년) ```bash - $ openssl req -newkey rsa:4096 -nodes -sha256 -keyout hyperauth.key -x509 -subj "/C=KR/ST=Seoul/O=tmax/CN=$(kubectl describe service hyperauth -n hyperauth | grep 'LoadBalancer Ingress' | cut -d ' ' -f7)" -days 365 -config <(cat /etc/ssl/openssl.cnf <(printf "[v3_ca]\nsubjectAltName=IP:$(kubectl describe service hyperauth -n hyperauth | grep 'LoadBalancer Ingress' | cut -d ' ' -f7)")) -out hyperauth.crt - $ CentOS의 경우 : openssl req -newkey rsa:4096 -nodes -sha256 -keyout hyperauth.key -x509 -subj "/C=KR/ST=Seoul/O=tmax/CN=(kubectl describe service hyperauth -n hyperauth | grep 'LoadBalancer Ingress' | cut -d ' ' -f7)" -days 365 -config <(cat /etc/pki/tls/openssl.cnf <(printf "[v3_ca]\nsubjectAltName=IP:$(kubectl describe service hyperauth -n hyperauth | grep 'LoadBalancer Ingress' | cut -d ' ' -f7)")) -out hyperauth.crt + $ openssl req -newkey rsa:4096 -nodes -sha256 -keyout hyperauth.key -x509 -subj "/C=KR/ST=Seoul/O=tmax/CN=$(kubectl describe service hyperauth -n hyperauth | grep 'LoadBalancer Ingress' | cut -d ' ' -f7)" -days 3650 -config <(cat /etc/ssl/openssl.cnf <(printf "[v3_ca]\nsubjectAltName=IP:$(kubectl describe service hyperauth -n hyperauth | grep 'LoadBalancer Ingress' | cut -d ' ' -f7)")) -out hyperauth.crt + $ CentOS의 경우 : openssl req -newkey rsa:4096 -nodes -sha256 -keyout hyperauth.key -x509 -subj "/C=KR/ST=Seoul/O=tmax/CN=(kubectl describe service hyperauth -n hyperauth | grep 'LoadBalancer Ingress' | cut -d ' ' -f7)" -days 3650 -config <(cat /etc/pki/tls/openssl.cnf <(printf "[v3_ca]\nsubjectAltName=IP:$(kubectl describe service hyperauth -n hyperauth | grep 'LoadBalancer Ingress' | cut -d ' ' -f7)")) -out hyperauth.crt $ kubectl create secret tls hyperauth-https-secret --cert=./hyperauth.crt --key=./hyperauth.key -n hyperauth $ cp hyperauth.crt /etc/kubernetes/pki/hyperauth.crt ``` * 비고 : * Kubernetes Master가 다중화 된 경우, hyperauth.crt를 각 Master 노드들의 /etc/kubernetes/pki/hyperauth.crt 로 cp - +* 인증서 만료 됐을때 + * 인증서 만료 확인 : openssl x509 -in hyperauth.crt -noout -dates + * 인증서 재발급 및 secret 생성 적용 +```bash + + // 10년 짜리 인증서 재발급 + $ openssl req -newkey rsa:4096 -nodes -sha256 -keyout hyperauth.key -x509 -subj "/C=KR/ST=Seoul/O=tmax/CN=$(kubectl describe service hyperauth -n hyperauth | grep 'LoadBalancer Ingress' | cut -d ' ' -f7)" -days 3650 -config <(cat /etc/ssl/openssl.cnf <(printf "[v3_ca]\nsubjectAltName=IP:$(kubectl describe service hyperauth -n hyperauth | grep 'LoadBalancer Ingress' | cut -d ' ' -f7)")) -out hyperauth.crt + $ CentOS의 경우 : openssl req -newkey rsa:4096 -nodes -sha256 -keyout hyperauth.key -x509 -subj "/C=KR/ST=Seoul/O=tmax/CN=(kubectl describe service hyperauth -n hyperauth | grep 'LoadBalancer Ingress' | cut -d ' ' -f7)" -days 3650 -config <(cat /etc/pki/tls/openssl.cnf <(printf "[v3_ca]\nsubjectAltName=IP:$(kubectl describe service hyperauth -n hyperauth | grep 'LoadBalancer Ingress' | cut -d ' ' -f7)")) -out hyperauth.crt + + // hyperauth-https-secret-renewed 라는 이름으로 secret을 새롭게 만든다. + $ kubectl create secret tls hyperauth-https-secret-renewed --cert=./hyperauth.crt --key=./hyperauth.key -n hyperauth + $ cp hyperauth.crt /etc/kubernetes/pki/hyperauth.crt + + // hyperauth deploy의 mount secret 이름을 바꾼다. + $ kubectl patch deployment hyperauth -n hyperauth --patch '{"spec":{"template":{"spec":{"volumes":[{"name":"ssl","secret":{"secretName":"hyperauth-https-secret-renewed"}}]}}}}' +``` ## Step 3. HyperAuth Deployment 배포 * 목적 : `HyperAuth 설치` From fdf9d91d8a2abf6391349d70641881a449c79410 Mon Sep 17 00:00:00 2001 From: taegeon woo <61040426+dnxorjs1@users.noreply.github.com> Date: Fri, 4 Dec 2020 13:51:18 +0900 Subject: [PATCH 079/106] Update README.md --- HyperAuth/README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/HyperAuth/README.md b/HyperAuth/README.md index f9039fe5..4b9fdcd9 100644 --- a/HyperAuth/README.md +++ b/HyperAuth/README.md @@ -100,7 +100,6 @@ LoadBalancer, NodePort type의 service 생성 가능 * 인증서 만료 확인 : openssl x509 -in hyperauth.crt -noout -dates * 인증서 재발급 및 secret 생성 적용 ```bash - // 10년 짜리 인증서 재발급 $ openssl req -newkey rsa:4096 -nodes -sha256 -keyout hyperauth.key -x509 -subj "/C=KR/ST=Seoul/O=tmax/CN=$(kubectl describe service hyperauth -n hyperauth | grep 'LoadBalancer Ingress' | cut -d ' ' -f7)" -days 3650 -config <(cat /etc/ssl/openssl.cnf <(printf "[v3_ca]\nsubjectAltName=IP:$(kubectl describe service hyperauth -n hyperauth | grep 'LoadBalancer Ingress' | cut -d ' ' -f7)")) -out hyperauth.crt $ CentOS의 경우 : openssl req -newkey rsa:4096 -nodes -sha256 -keyout hyperauth.key -x509 -subj "/C=KR/ST=Seoul/O=tmax/CN=(kubectl describe service hyperauth -n hyperauth | grep 'LoadBalancer Ingress' | cut -d ' ' -f7)" -days 3650 -config <(cat /etc/pki/tls/openssl.cnf <(printf "[v3_ca]\nsubjectAltName=IP:$(kubectl describe service hyperauth -n hyperauth | grep 'LoadBalancer Ingress' | cut -d ' ' -f7)")) -out hyperauth.crt From 5376b14e6ee746842e86a1fc26a9c15d2dc6f098 Mon Sep 17 00:00:00 2001 From: taegeon woo <61040426+dnxorjs1@users.noreply.github.com> Date: Mon, 7 Dec 2020 13:52:34 +0900 Subject: [PATCH 080/106] =?UTF-8?q?1.0.10.0=20-->=201.0.5.6=20=EB=B2=84?= =?UTF-8?q?=EC=A0=84=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- HyperAuth/manifest/2.hyperauth_deployment.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/HyperAuth/manifest/2.hyperauth_deployment.yaml b/HyperAuth/manifest/2.hyperauth_deployment.yaml index a89e23d0..ca16e8bf 100644 --- a/HyperAuth/manifest/2.hyperauth_deployment.yaml +++ b/HyperAuth/manifest/2.hyperauth_deployment.yaml @@ -21,7 +21,7 @@ spec: secretName: hyperauth-https-secret containers: - name: hyperauth - image: tmaxcloudck/hyperauth:b1.0.10.0 + image: tmaxcloudck/hyperauth:b1.0.5.6 env: - name: KEYCLOAK_USER value: "admin" From 8bf7520880f131e2e5fd251d503326792f2e7178 Mon Sep 17 00:00:00 2001 From: jinho0928 Date: Tue, 8 Dec 2020 14:45:54 +0900 Subject: [PATCH 081/106] add cert update --- K8S_Master/KUBE_CERTIFICATE_UPDATE_README.md | 28 ++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/K8S_Master/KUBE_CERTIFICATE_UPDATE_README.md b/K8S_Master/KUBE_CERTIFICATE_UPDATE_README.md index 2ab90f5b..c2c2a846 100644 --- a/K8S_Master/KUBE_CERTIFICATE_UPDATE_README.md +++ b/K8S_Master/KUBE_CERTIFICATE_UPDATE_README.md @@ -35,7 +35,32 @@ * kubeadm으로 생성된 클라이언트 인증서는 1년 기준이다. ```bash kubeadm alpha certs renew all + + + [renew] Reading configuration from the cluster... + [renew] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -oyaml' + + certificate embedded in the kubeconfig file for the admin to use and for kubeadm itself renewed + certificate for serving the Kubernetes API renewed + certificate the apiserver uses to access etcd renewed + certificate for the API server to connect to kubelet renewed + certificate embedded in the kubeconfig file for the controller manager to use renewed + certificate for liveness probes to healthcheck etcd renewed + certificate for etcd nodes to communicate with each other renewed + certificate for serving etcd renewed + certificate for the front proxy client renewed + certificate embedded in the kubeconfig file for the scheduler manager to use renewed + ``` + * kube-system pod (kube scheduler, api server, controller, etcd) 재기동 + ```bash + kubectl get pod -n kube-system -o yaml | kubectl replace --force -f- + + ex) kubectl get pod kube-apiserver-k8s-master -n kube-system -o yaml | kubectl replace --force -f- ``` + * config 복사 + ```bash + cp -i /etc/kubernetes/admin.conf /root/.kube/config + ``` * 비고 : * warning : 다중화 클러스터 구성의 경우, 모든 컨트롤 플레인 노드에서 이 명령을 실행해야 한다. * 이미 인증서가 만료된 경우 아래 가이드를 참조하여 인증서를 갱신한다. @@ -46,6 +71,9 @@ cd /etc/kubernetes/pki/ mv {apiserver.crt,apiserver-etcd-client.key,apiserver-kubelet-client.crt,front-proxy-ca.crt,front-proxy-client.crt,front-proxy-client.key,front-proxy-ca.key,apiserver-kubelet-client.key,apiserver.key,apiserver-etcd-client.crt} ~/cert_temp + cd /etc/kubernetes/pki/etcd + mv {ca.crt,ca.key,healthcheck-client.crt,healthcheck-client.key,peer.crt,peer.key,server.crt,server.key} ~/cert_temp + cd /etc/kubernetes/ mv {admin.conf,controller-manager.conf,mv kubelet.conf,scheduler.conf} ~/cert_temp ``` From 2ad7c0fcf46807d6b0be67fbcf8a7bfb219ee17d Mon Sep 17 00:00:00 2001 From: taegeon woo <61040426+dnxorjs1@users.noreply.github.com> Date: Thu, 10 Dec 2020 13:58:09 +0900 Subject: [PATCH 082/106] Update README.md --- HyperAuth/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/HyperAuth/README.md b/HyperAuth/README.md index 4b9fdcd9..a9aaf36f 100644 --- a/HyperAuth/README.md +++ b/HyperAuth/README.md @@ -90,7 +90,7 @@ LoadBalancer, NodePort type의 service 생성 가능 * 생성 순서 : 아래 명령어를 실행하여 인증서 생성 및 secret을 생성 (Master Node의 특정 directory 내부에서 실행 권장) (인증서 기한 10년 2020-12-04 이후부터 적용, 이전은 1년) ```bash $ openssl req -newkey rsa:4096 -nodes -sha256 -keyout hyperauth.key -x509 -subj "/C=KR/ST=Seoul/O=tmax/CN=$(kubectl describe service hyperauth -n hyperauth | grep 'LoadBalancer Ingress' | cut -d ' ' -f7)" -days 3650 -config <(cat /etc/ssl/openssl.cnf <(printf "[v3_ca]\nsubjectAltName=IP:$(kubectl describe service hyperauth -n hyperauth | grep 'LoadBalancer Ingress' | cut -d ' ' -f7)")) -out hyperauth.crt - $ CentOS의 경우 : openssl req -newkey rsa:4096 -nodes -sha256 -keyout hyperauth.key -x509 -subj "/C=KR/ST=Seoul/O=tmax/CN=(kubectl describe service hyperauth -n hyperauth | grep 'LoadBalancer Ingress' | cut -d ' ' -f7)" -days 3650 -config <(cat /etc/pki/tls/openssl.cnf <(printf "[v3_ca]\nsubjectAltName=IP:$(kubectl describe service hyperauth -n hyperauth | grep 'LoadBalancer Ingress' | cut -d ' ' -f7)")) -out hyperauth.crt + $ CentOS의 경우 : openssl req -newkey rsa:4096 -nodes -sha256 -keyout hyperauth.key -x509 -subj "/C=KR/ST=Seoul/O=tmax/CN=$(kubectl describe service hyperauth -n hyperauth | grep 'LoadBalancer Ingress' | cut -d ' ' -f7)" -days 3650 -config <(cat /etc/pki/tls/openssl.cnf <(printf "[v3_ca]\nsubjectAltName=IP:$(kubectl describe service hyperauth -n hyperauth | grep 'LoadBalancer Ingress' | cut -d ' ' -f7)")) -out hyperauth.crt $ kubectl create secret tls hyperauth-https-secret --cert=./hyperauth.crt --key=./hyperauth.key -n hyperauth $ cp hyperauth.crt /etc/kubernetes/pki/hyperauth.crt ``` From c30a1ee5e4921ae0c7a0bf283eea01c208db3936 Mon Sep 17 00:00:00 2001 From: taegeon woo <61040426+dnxorjs1@users.noreply.github.com> Date: Thu, 17 Dec 2020 10:24:50 +0900 Subject: [PATCH 083/106] =?UTF-8?q?=EB=A9=94=EC=9D=BC=20=ED=95=84=EC=88=98?= =?UTF-8?q?=20=EC=9E=85=EB=A0=A5=20=EC=A0=95=EB=B3=B4=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- HyperAuth/README.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/HyperAuth/README.md b/HyperAuth/README.md index a9aaf36f..b949cfac 100644 --- a/HyperAuth/README.md +++ b/HyperAuth/README.md @@ -129,6 +129,11 @@ LoadBalancer, NodePort type의 service 생성 가능 * {HYPERCLOUD-CONSOLE_IP} = $(kubectl describe service console-lb -n console-system | grep 'LoadBalancer Ingress' | cut -d ' ' -f7) * 실행 : ./tmaxRealmImport.sh {HYPERAUTH_SERVICE_IP} {HYPERCLOUD-CONSOLE_IP} + * 메일 정보 입력 + * Realm Settings - Email에 필수 입력 란을 채워야 메일 전송이 이루어진다. + * Host, From 을 입력한다. ex) mail.tmax.co.kr, tmaxcloud_ck@tmax.co.kr + * Enable Authentication을 ON 으로 바꾼다. + * Username, Password를 입력한다. (mail.tmax.co.kr에 로그인 할 수 있는 관리자 계정) ## Step 4. Kubernetes OIDC 연동 * 목적 : `Kubernetes의 RBAC 시스템과 HyperAuth 인증 연동` @@ -147,7 +152,7 @@ LoadBalancer, NodePort type의 service 생성 가능 ``` * 비고 : - * 자동으로 kube-apiserver 가 재기동 됨 + * 자동으로 kube-apiserver 가 재기동 됨 #HyperAuth 유저 Migration Guide ## Hypercloud 4.0 User (CRD) Hyperauth 로 Migration From 8eabac922c313444ed6940f3cb16dd3cf51918fd Mon Sep 17 00:00:00 2001 From: taegeon woo <61040426+dnxorjs1@users.noreply.github.com> Date: Thu, 17 Dec 2020 10:39:45 +0900 Subject: [PATCH 084/106] Update README.md --- HyperAuth/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/HyperAuth/README.md b/HyperAuth/README.md index b949cfac..721fa5aa 100644 --- a/HyperAuth/README.md +++ b/HyperAuth/README.md @@ -134,7 +134,8 @@ LoadBalancer, NodePort type의 service 생성 가능 * Host, From 을 입력한다. ex) mail.tmax.co.kr, tmaxcloud_ck@tmax.co.kr * Enable Authentication을 ON 으로 바꾼다. * Username, Password를 입력한다. (mail.tmax.co.kr에 로그인 할 수 있는 관리자 계정) - + * Manage account - Account 의 Username, Email, First name, Last name을 입력한다. + ## Step 4. Kubernetes OIDC 연동 * 목적 : `Kubernetes의 RBAC 시스템과 HyperAuth 인증 연동` * 생성 순서 : From 1202bad51b988527b3b0ff9e90fbf4ea199f235d Mon Sep 17 00:00:00 2001 From: taegeon woo <61040426+dnxorjs1@users.noreply.github.com> Date: Thu, 24 Dec 2020 17:03:34 +0900 Subject: [PATCH 085/106] =?UTF-8?q?externalTrafficPolicy:=20Local=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- HyperAuth/manifest/1.initialization.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/HyperAuth/manifest/1.initialization.yaml b/HyperAuth/manifest/1.initialization.yaml index 70514d70..754dba9e 100644 --- a/HyperAuth/manifest/1.initialization.yaml +++ b/HyperAuth/manifest/1.initialization.yaml @@ -98,6 +98,7 @@ metadata: labels: app: keycloak spec: + externalTrafficPolicy: Local ports: - name: http port: 8080 From 860213dabcaf4f38f63026f16e9b1ea4049c8bed Mon Sep 17 00:00:00 2001 From: yshcoffee <47413947+yshcoffee@users.noreply.github.com> Date: Wed, 30 Dec 2020 16:36:01 +0900 Subject: [PATCH 086/106] [fix] sed command: image tag --- HyperCloud Operator/v4.1.1.0/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/HyperCloud Operator/v4.1.1.0/README.md b/HyperCloud Operator/v4.1.1.0/README.md index db2093a7..0786dd6b 100644 --- a/HyperCloud Operator/v4.1.1.0/README.md +++ b/HyperCloud Operator/v4.1.1.0/README.md @@ -101,7 +101,7 @@ $ sed -i 's/mysql:5.6/'${REGISTRY}'\/mysql:5.6/g' ${HPCD_HOME}/hypercloud-operator-${HPCD_VERSION}/_yaml_Install/3.mysql-create.yaml $ sed -i 's/tmaxcloudck\/hypercloud-operator/'${REGISTRY}'\/tmaxcloudck\/hypercloud-operator/g' ${HPCD_HOME}/hypercloud-operator-${HPCD_VERSION}/_yaml_Install/4.hypercloud4-operator.yaml - $ sed -i 's/{HPCD_VERSION}/'${HPCD_VERSION}'/g' ${HPCD_HOME}/hypercloud-operator-${HPCD_VERSION}/_yaml_Install/4.hypercloud4-operator.yaml + $ sed -i 's/{HPCD_VERSION}/'b${HPCD_VERSION}'/g' ${HPCD_HOME}/hypercloud-operator-${HPCD_VERSION}/_yaml_Install/4.hypercloud4-operator.yaml ``` From a136094165c7298ee2b8f1912002de82437cecb5 Mon Sep 17 00:00:00 2001 From: yshcoffee <47413947+yshcoffee@users.noreply.github.com> Date: Wed, 30 Dec 2020 17:29:42 +0900 Subject: [PATCH 087/106] [fix] sed command: image tag --- SecretWatcher/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SecretWatcher/README.md b/SecretWatcher/README.md index efab0587..e953416f 100644 --- a/SecretWatcher/README.md +++ b/SecretWatcher/README.md @@ -81,7 +81,7 @@ ``` * image version 수정 ```bash - $ sed -i 's/tmaxcloudck\/hypercloud4-secret-watcher:latest/tmaxcloudck\/hypercloud4-secret-watcher:'${HPCD_SW_VERSION}'/g' ${HPCD_SW_HOME}/secret-watcher-${HPCD_SW_VERSION}/k8s-install/hypercloud-secret-watcher-daemonset.yaml + $ sed -i 's/tmaxcloudck\/hypercloud4-secret-watcher:latest/tmaxcloudck\/hypercloud4-secret-watcher:'b${HPCD_SW_VERSION}'/g' ${HPCD_SW_HOME}/secret-watcher-${HPCD_SW_VERSION}/k8s-install/hypercloud-secret-watcher-daemonset.yaml ``` * 비고 * 폐쇄망의 경우 From 15db29c2fcb9b69394a05464d3a5556f71300289 Mon Sep 17 00:00:00 2001 From: chosangwon93 <66065293+chosangwon93@users.noreply.github.com> Date: Wed, 30 Dec 2020 17:58:44 +0900 Subject: [PATCH 088/106] Update README.md --- HyperCloud Webhook/README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/HyperCloud Webhook/README.md b/HyperCloud Webhook/README.md index dd44369f..55e5f1db 100644 --- a/HyperCloud Webhook/README.md +++ b/HyperCloud Webhook/README.md @@ -53,7 +53,6 @@ * 생성 순서 : 아래의 command를 실행하여 사용하고자 하는 image 버전을 수정한다. ([02_webhook-deployment.yaml](manifests/02_webhook-deployment.yaml)) ```bash $ sed -i 's/{webhook_version}/'${WEBHOOK_VERSION}'/g' 02_webhook-deployment.yaml - $ sed -i 's/{hostname}/'${HOSTNAME}'/g' 02_webhook-deployment.yaml ``` * 비고 : * 폐쇄망에서 설치를 진행하여 별도의 image registry를 사용하는 경우 registry 정보를 추가로 설정해준다. From 4106d7f71cab211b1879723aaa1d751abaa5bc84 Mon Sep 17 00:00:00 2001 From: chosangwon93 <66065293+chosangwon93@users.noreply.github.com> Date: Wed, 30 Dec 2020 18:01:43 +0900 Subject: [PATCH 089/106] Update 02_webhook-deployment.yaml --- HyperCloud Webhook/manifests/02_webhook-deployment.yaml | 2 -- 1 file changed, 2 deletions(-) diff --git a/HyperCloud Webhook/manifests/02_webhook-deployment.yaml b/HyperCloud Webhook/manifests/02_webhook-deployment.yaml index cd0695f3..92d7bdb0 100644 --- a/HyperCloud Webhook/manifests/02_webhook-deployment.yaml +++ b/HyperCloud Webhook/manifests/02_webhook-deployment.yaml @@ -15,8 +15,6 @@ spec: labels: hypercloud4: webhook spec: - nodeSelector: - kubernetes.io/hostname: {hostname} containers: - name: hypercloud4-webhook image: tmaxcloudck/hypercloud-webhook:{webhook_version} From affaecc057d5290b021b32d774d42659787d99e3 Mon Sep 17 00:00:00 2001 From: Rho Date: Fri, 15 Jan 2021 18:50:46 +0900 Subject: [PATCH 090/106] =?UTF-8?q?[feat]=20demo=EC=8B=9C=EB=82=98?= =?UTF-8?q?=EB=A6=AC=EC=98=A4=20guide=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Kubeflow/demo/readMe.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Kubeflow/demo/readMe.md b/Kubeflow/demo/readMe.md index cc7f9080..17a2c078 100644 --- a/Kubeflow/demo/readMe.md +++ b/Kubeflow/demo/readMe.md @@ -68,7 +68,9 @@ Fashion-MNIST 데이터를 활용하여 Image가 어떤 Fashion Item인지 추 ## Step 2. ML model을 코딩하고, 클라우드 작업을 위한 image 생성하기 - tensorflow 모듈을 활용하여 ML 코드를 작성하고, kubeflow 모듈을 활용하여 ML image를 배포한다. - - 정상적으로 image를 배포하기 위해, jupyterNotebook container에 docker registry 인증정보를 넣어야 한다. + - 정상적으로 image를 배포하기 다음 두가지 선행 작업이 필요하다. + - pod이 떠있는 node에 docker를 설치한다. (kubernetes container-runtime이 crio라면 설치되어있지 않은 경우가 있음) + - jupyterNotebook container에 docker registry 인증정보를 넣어야 한다. - 시나리오에서는 public registry인 docker hub를 활용하였고, 인증이 적용된 private registry 또한 사용 가능하다. - 폐쇄망 환경일 경우 아래 인증 방법을 수행할 필요 없이 아래 명령어만 수행한다. ```bash From 9c00f8aaf5c8c935cbb70ed55fc23e6991c9bef3 Mon Sep 17 00:00:00 2001 From: Rho Date: Fri, 15 Jan 2021 18:58:26 +0900 Subject: [PATCH 091/106] =?UTF-8?q?[feat]=20kubeflow=20=EC=82=AD=EC=A0=9C?= =?UTF-8?q?=20=EA=B0=80=EC=9D=B4=EB=93=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Kubeflow/README.md | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/Kubeflow/README.md b/Kubeflow/README.md index c653332b..d0abf707 100644 --- a/Kubeflow/README.md +++ b/Kubeflow/README.md @@ -92,8 +92,8 @@ * 목적 : `Kubeflow component를 배포 및 관리하기 위한 커맨드 라인툴인 kfctl을 설치한다.` * 생성 순서 : 아래 명령어를 수행하여 kfctl을 설치한다. (Kubeflow v1.0.2 기준) ```bash - $ wget https://github.com/kubeflow/kfctl/releases/download/v1.0.2/kfctl_v1.0.2-0-ga476281_linux.tar.gz - $ tar xzvf kfctl_v1.0.2-0-ga476281_linux.tar.gz + $ wget https://github.com/kubeflow/kfctl/releases/download/v1.2.0/kfctl_v1.2.0-0-gbc038f9_linux.tar.gz + $ tar xzvf kfctl_v1.2.0-0-gbc038f9_linux.tar.gz $ sudo mv kfctl /usr/bin ``` * 비고 : @@ -198,3 +198,16 @@ $ echo '{"apiVersion":"security.istio.io/v1beta1","kind":"PeerAuthentication","metadata":{"annotations":{},"name":"default","namespace":"istio-system"},"spec":{"mtls":{"mode":"DISABLE"}}}' |cat > disable-mtls.json $ kubectl apply -f disable-mtls.json ``` +## 기타 : kubeflow 삭제 +* 목적 : `kubeflow 설치 시에 배포된 모든 리소스를 삭제 한다.` +* 생성 순서 : + * 아래 명령어를 수행하여 kubeflow 모듈을 삭제한다. + ```bash + $ export CONFIG_URI="https://raw.githubusercontent.com/tmax-cloud/kubeflow-manifests/kubeflow-manifests-v1.0.2/kfctl_hypercloud_kubeflow.v1.0.2.yaml" + $ kfctl delete -V -f ${CONFIG_URI} + ``` +* 비고 : + * kfctl 1.1버전 이상부터 리소스의 삭제가 정상적으로 이루어진다. kfctl 버전은 다음명령어를 통해 확인할 수 있다. + ```bash + $ kfctl version + ``` \ No newline at end of file From ac44dd101278513d4b71ef6ce802e72340d2d9d0 Mon Sep 17 00:00:00 2001 From: jinho0928 Date: Mon, 18 Jan 2021 10:29:56 +0900 Subject: [PATCH 092/106] Update KUBE_VERSION_UPGRADE_README.md --- K8S_Master/KUBE_VERSION_UPGRADE_README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/K8S_Master/KUBE_VERSION_UPGRADE_README.md b/K8S_Master/KUBE_VERSION_UPGRADE_README.md index 8d9129ff..cd641be9 100644 --- a/K8S_Master/KUBE_VERSION_UPGRADE_README.md +++ b/K8S_Master/KUBE_VERSION_UPGRADE_README.md @@ -428,7 +428,7 @@ sudo vi /var/lib/kubelet/kubeadm-flags.env에 옵션 변경 - 기존 (docker) : KUBELET_KUBEADM_ARGS="--cgroup-driver=cgroupfs --network-plugin=cni --pod-infra-container-image=k8s.gcr.io/pause:3.1 + 기존 (docker) : KUBELET_KUBEADM_ARGS="--cgroup-driver=cgroupfs --network-plugin=cni --pod-infra-container-image=k8s.gcr.io/pause:3.1" 변경 (cri-o) : KUBELET_KUBEADM_ARGS="--container-runtime=remote --cgroup-driver=systemd --container-runtime-endpoint=/var/run/crio/crio.sock" systemctl restart kubelet From cf56309a3b29ef5c0ab6275ac4e5176b42dcb963 Mon Sep 17 00:00:00 2001 From: jinho0928 Date: Mon, 18 Jan 2021 10:32:37 +0900 Subject: [PATCH 093/106] Update README.md --- K8S_Master/README.md | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/K8S_Master/README.md b/K8S_Master/README.md index 56b2f60d..70c4cadb 100644 --- a/K8S_Master/README.md +++ b/K8S_Master/README.md @@ -172,15 +172,11 @@ sudo rm -rf /etc/cni/net.d/100-crio-bridge.conf sudo rm -rf /etc/cni/net.d/200-loopback.conf ``` - * 폐쇄망 환경에서 private registry 접근을 위해 crio.conf 내용을 수정한다. - * insecure_registry, registries, plugin_dirs 내용을 수정한다. - * sudo vi /etc/crio/crio.conf - * registries = ["{registry}:{port}" , "docker.io"] - * insecure_registries = ["{registry}:{port}"] - * plugin_dirs : "/opt/cni/bin" 추가 - * (폐쇄망) pause_image : "k8s.gcr.io/pause:3.1" 을 "{registry}:{port}/k8s.gcr.io/pause:3.1" 로 변경 + * crio.conf 내용을 수정한다. ( sudo vi /etc/crio/crio.conf ) + * plugin_dirs : "/opt/cni/bin" 추가 + * (폐쇄망) insecure_registries = ["{registry}:{port}"] + * (폐쇄망) pause_image : "k8s.gcr.io/pause:3.1" 을 "{registry}:{port}/k8s.gcr.io/pause:3.1" 로 변경 ![image](figure/crio_config.PNG) - * registries.conf 내용을 수정한다. * sudo vi /etc/containers/registries.conf ```bash From 30262eb3ad39f927fae25238e03aabd95f4903f6 Mon Sep 17 00:00:00 2001 From: RhoJeongwan <63379907+RhoJeongwan@users.noreply.github.com> Date: Wed, 20 Jan 2021 17:25:40 +0900 Subject: [PATCH 094/106] =?UTF-8?q?[feat]=20kfctl=20=EC=97=85=EB=8D=B0?= =?UTF-8?q?=EC=9D=B4=ED=8A=B8=20=EB=82=B4=EC=9A=A9=20=ED=8F=90=EC=87=84?= =?UTF-8?q?=EB=A7=9D=20=ED=99=98=EA=B2=BD=20=EA=B0=80=EC=9D=B4=EB=93=9C=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Kubeflow/README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Kubeflow/README.md b/Kubeflow/README.md index d0abf707..699037d0 100644 --- a/Kubeflow/README.md +++ b/Kubeflow/README.md @@ -76,7 +76,7 @@ $ wget https://raw.githubusercontent.com/tmax-cloud/hypercloud-install-guide/4.1/Kubeflow/sed.sh $ wget https://raw.githubusercontent.com/tmax-cloud/hypercloud-install-guide/4.1/Kubeflow/kustomize_local.tar.gz $ wget https://raw.githubusercontent.com/tmax-cloud/hypercloud-install-guide/4.1/Kubeflow/kfctl_hypercloud_kubeflow.v1.0.2_local.yaml - $ wget https://github.com/kubeflow/kfctl/releases/download/v1.0.2/kfctl_v1.0.2-0-ga476281_linux.tar.gz + $ wget https://github.com/kubeflow/kfctl/releases/download/v1.2.0/kfctl_v1.2.0-0-gbc038f9_linux.tar.gz ``` 3. 앞으로의 진행 * Step 0 ~ 4 중 Step 0, 2, 3은 비고를 참고하여 진행한다. 나머지는 그대로 진행하면 된다. @@ -97,7 +97,7 @@ $ sudo mv kfctl /usr/bin ``` * 비고 : - * 폐쇄망 환경일 경우 kfctl_v1.0.2-0-ga476281_linux.tar.gz을 github에서 받는 것이 아니라 미리 다운로드 해둔 것을 사용하면 된다. + * 폐쇄망 환경일 경우 kfctl_v1.2.0-0-gbc038f9_linux.tar.gz을 github에서 받는 것이 아니라 미리 다운로드 해둔 것을 사용하면 된다. ## Step 1. 설치 디렉토리 생성 * 목적 : `Kubeflow의 설치 yaml이 저장될 설치 디렉토리를 생성하고 해당 경로로 이동한다.` @@ -210,4 +210,4 @@ * kfctl 1.1버전 이상부터 리소스의 삭제가 정상적으로 이루어진다. kfctl 버전은 다음명령어를 통해 확인할 수 있다. ```bash $ kfctl version - ``` \ No newline at end of file + ``` From 98b7d16725095ba181c555cca17d7cdd3c8687e6 Mon Sep 17 00:00:00 2001 From: younghun_park Date: Tue, 26 Jan 2021 14:48:51 +0900 Subject: [PATCH 095/106] add a method to change installation yaml file for private registry to the readme.md --- VM_KubeVirt/README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/VM_KubeVirt/README.md b/VM_KubeVirt/README.md index e79bae18..9694cf9a 100644 --- a/VM_KubeVirt/README.md +++ b/VM_KubeVirt/README.md @@ -45,6 +45,9 @@ ```bash $ make upload ``` +4. docker 또는 crio의 search registries에 $REGISTRY_ENDPOINT 가 등록되어 있지 않은 경우 아래의 명령어를 통해 yaml을 수정합니다.\ + ```sed -i 's/tmaxcloudck/'$REGISTRY_ENDPOINT'\/tmaxcloudck/g' yamls/kubevirt-operator.yaml```\ + ```sed -i 's/tmaxcloudck/'$REGISTRY_ENDPOINT'\/tmaxcloudck/g' yamls/virtvnc.yaml``` ## Install Steps 1. 아래의 명령어를 수행하여 설치를 진행합니다 From 6144798903bcad07b4f12be13b68f92c02ab800e Mon Sep 17 00:00:00 2001 From: RhoJeongwan <63379907+RhoJeongwan@users.noreply.github.com> Date: Wed, 27 Jan 2021 15:43:45 +0900 Subject: [PATCH 096/106] =?UTF-8?q?[feat]=20kubeflow=20readme=20file=20uri?= =?UTF-8?q?=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b69ddf74..389ae32d 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ | NetworkAgent | | https://github.com/tmax-cloud/hypercloud-install-guide/tree/master/NetworkAgent | O | | Pod_GPU plugin | |

| O | | Istio | 1.5.1 | [installation guide](https://github.com/tmax-cloud/hypercloud-install-guide/blob/master/Istio/README.md) | O | -| Kubeflow | | https://github.com/tmax-cloud/hypercloud-install-guide/blob/master/Kubeflow/README.md | O | +| Kubeflow | | https://github.com/tmax-cloud/ai-dev-ops/tree/4.1/README.md | O | | EFK | E(7.2.0), F(v1.4.2), K(7.2.0) | https://github.com/tmax-cloud/hypercloud-install-guide/blob/master/EFK/README.md | O | | Multicloud-console | | | X | | Capi provider | | https://github.com/tmax-cloud/hypercloud-install-guide/blob/4.1/Capi/README.md | O | From e0da71f47a98489d64257de6a2471689cf78e6f2 Mon Sep 17 00:00:00 2001 From: taesun_lee Date: Fri, 29 Jan 2021 11:09:26 +0900 Subject: [PATCH 097/106] update nvidia-device-plugin - add nvidia driver version requirements - 361.93 --- Pod_GPU plugin/nvidia-device-plugin/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Pod_GPU plugin/nvidia-device-plugin/README.md b/Pod_GPU plugin/nvidia-device-plugin/README.md index b5c79161..e37efe52 100644 --- a/Pod_GPU plugin/nvidia-device-plugin/README.md +++ b/Pod_GPU plugin/nvidia-device-plugin/README.md @@ -47,6 +47,7 @@ ## Step 0. NVIDIA driver 설치 * 목적 : `GPU device에 적절한 nvidia driver를 설치` +* 버전 요구사항: `361.93 이상` * 생성 순서 : * nouveau 비활성화 ```bash From 3d6bb28a33b71a67be2daffd265878dc1831bb95 Mon Sep 17 00:00:00 2001 From: taesun_lee Date: Fri, 29 Jan 2021 17:23:35 +0900 Subject: [PATCH 098/106] update nvidia device infra installer - add how to upgrade nvidia driver --- Pod_GPU plugin/nvidia-device-plugin/README.md | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/Pod_GPU plugin/nvidia-device-plugin/README.md b/Pod_GPU plugin/nvidia-device-plugin/README.md index e37efe52..6f460dee 100644 --- a/Pod_GPU plugin/nvidia-device-plugin/README.md +++ b/Pod_GPU plugin/nvidia-device-plugin/README.md @@ -74,6 +74,29 @@ ```bash $ nvidia-smi ``` +### 참고용) Nvidia Driver Upgrade 방법 +- Step 1: nvidia-device-plugin 삭제 + ```bash + $ cd ${INSTALLER_HOME} + $ kubectl delete -f ./nvidia-device-plugin-daemonset.yml + ``` +- Step 2: Nvidia GPU Driver 삭제 후 재부팅 + ```bash + $ # Nvidia GPU Driver install 파일 준비 (run파일) + $ chmod +x ./{your-nvidia-file.run} + $ ./{your-nvidia-file.run} --uninstall + $ reboot + ``` +- Step 3: Nvidia GPU Driver 재설치 후 확인 + ```bash + $ chmod +x ./{your-nvidia-file.run} + $ ./{your-nvidia-file.run} --dkms -s + ``` +- Step 4: Nvidia Device Plugin 재 설치 + ```bash + $ cd ${INSTALLER_HOME} + $ kubectl create -f ./nvidia-device-plugin-daemonset.yml + ``` ## Step 1. 필요한 패키지 설치 및 설정 ### Docker를 사용하는 경우 From c8f36cae979d38e6831a20f7e53d17142629cf59 Mon Sep 17 00:00:00 2001 From: moohyoung_jo Date: Tue, 2 Feb 2021 19:36:28 +0900 Subject: [PATCH 099/106] =?UTF-8?q?[mod]=20README=20and=20script=20modify.?= =?UTF-8?q?=20-=20separate=20PORT=20var,=20script=20error=20solve.=20HA=20?= =?UTF-8?q?=EB=85=B8=EB=93=9C=EB=A5=BC=20=EB=B3=84=EB=8F=84=EB=A1=9C=20?= =?UTF-8?q?=EB=91=90=EC=A7=80=20=EC=95=8A=EA=B3=A0=20MASTER=EC=99=80=20?= =?UTF-8?q?=EA=B0=99=EC=9D=80=20=EB=85=B8=EB=93=9C=EC=97=90=EC=84=9C=20hap?= =?UTF-8?q?roxy=EB=A5=BC=20=EC=84=A4=EC=B9=98=ED=95=B4=20=EC=82=AC?= =?UTF-8?q?=EC=9A=A9=ED=95=A0=20=EC=88=98=20=EC=9E=88=EB=8F=84=EB=A1=9D=20?= =?UTF-8?q?=EA=B0=80=EC=9D=B4=EB=93=9C=EB=A5=BC=20=EC=88=98=EC=A0=95?= =?UTF-8?q?=ED=95=98=EC=98=80=EC=9C=BC=EB=A9=B0,=20port=EB=B2=88=ED=98=B8?= =?UTF-8?q?=20=EB=B3=80=EC=88=98=EB=A5=BC=20=EC=83=88=EB=A1=9C=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80=ED=95=98=EC=97=AC=206443=20=EB=85=B8=EB=93=9C?= =?UTF-8?q?=EC=99=80=20=EA=B2=B9=EC=B9=98=EC=A7=80=20=EC=95=8A=EB=8F=84?= =?UTF-8?q?=EB=A1=9D=20=EC=84=A4=EC=A0=95=ED=95=A0=20=EC=88=98=20=EC=9E=88?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=ED=95=A8.=20=EA=B7=B8=EC=99=B8=EC=97=90?= =?UTF-8?q?=20=EC=8A=A4=ED=81=AC=EB=A6=BD=ED=8A=B8=20=EB=82=B4=EC=9A=A9=20?= =?UTF-8?q?=EC=B6=9C=EB=A0=A5=EB=90=98=EB=8F=84=EB=A1=9D=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD=ED=95=98=EC=98=80=EC=9C=BC=EB=A9=B0=20=EC=9D=BC?= =?UTF-8?q?=EB=B6=80=20=EA=B0=80=EC=9D=B4=EB=93=9C=20=EB=82=B4=EC=9A=A9=20?= =?UTF-8?q?=EB=B3=B4=EC=B6=A9/=EC=88=98=EC=A0=95=20=ED=95=98=EC=98=80?= =?UTF-8?q?=EC=9D=8C.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- K8S_Master_LBNode/README.md | 178 +++++++++++++++++++++++++++++ K8S_Master_LBNode/haproxy.cfg | 28 +++++ K8S_Master_LBNode/keepalived.conf | 46 ++++++++ K8S_Master_LBNode/lb_set_script.sh | 52 +++++++++ K8S_Master_LBNode/notify_action.sh | 35 ++++++ 5 files changed, 339 insertions(+) create mode 100644 K8S_Master_LBNode/README.md create mode 100644 K8S_Master_LBNode/haproxy.cfg create mode 100644 K8S_Master_LBNode/keepalived.conf create mode 100644 K8S_Master_LBNode/lb_set_script.sh create mode 100644 K8S_Master_LBNode/notify_action.sh diff --git a/K8S_Master_LBNode/README.md b/K8S_Master_LBNode/README.md new file mode 100644 index 00000000..9d24130c --- /dev/null +++ b/K8S_Master_LBNode/README.md @@ -0,0 +1,178 @@ +# K8S Master 클러스터의 LBNode 설치 가이드(HAProxy + Keepalived) +* 본 가이드는 별도의 LBNode를 갖는 K8S 다중화 클러스터 구축을 위해 작성되었음. +* 구축하려는 LBNode에 해당 파일들이 같은 디렉터리 내에 존재해야 함. +* LBNode 각각에서 아래의 작업들을 동일하게 수행해야 함. +## 구성 요소 및 버전 +* Keepalived v1.3.5 # LBNode에 설치 +* HA-Proxy v1.5.18 # LBNode에 설치 +## Install Steps +0. 변수 설정 및 준비 +1. HAProxy + Keepalived 설치 +2. 설치한 서비스 재시작 +3. K8S 클러스터 구축 + +## Step 0. 변수 설정 및 준비 +* 목적 : `LB Node 구축을 위한 변수 설정 및 준비과정` +* 순서 : + * Keepalived 와 HAProxy를 설치 및 동작시키기 위한 변수를 설정한다. + * 클러스터 구성에 사용할 각 Master Node의 IP, VIP, LBNode에 대한 정보를 입력한다. + ```bash + export MASTER1NAME=master1hostname # 클러스터로 구성할 Master Node의 host명을 각각 입력. + export MASTER2NAME=master2hostname + export MASTER3NAME=master3hostname + + export MASTER1IP=192.168.56.222 # Master Node의 IP를 각각 입력. + export MASTER2IP=192.168.56.223 + export MASTER3IP=192.168.56.224 + + export MASTERPORT=6443 # 기본적으로 Master Port는 6443을 사용. + export HAPROXYLBPORT=16443 # Master 와 동일한 Node에 설치시 반드시 MASTERPORT와 다른 Port를 사용해야 하며, 이경우 Master Join시에 이 변수로 설정한 Port를 사용해야 함. + + export LB1=192.168.56.250 # 현재 LB Node의 IP를 입력. + export LB2=192.168.56.249 # 다른 LB Node의 IP를 입력. + + export VIP=192.168.56.240 # K8S Master Join시VIP로 사용할 IP를 입력. + ``` + + * LB Node 구축을 위해 필요한 파일들을 동일한 위치에 다운로드 받는다. + ```bash + wget https://raw.githubusercontent.com/tmax-cloud/hypercloud-install-guide/master/K8S_Master_LBNode/haproxy.cfg + wget https://raw.githubusercontent.com/tmax-cloud/hypercloud-install-guide/master/K8S_Master_LBNode/keepalived.conf + wget https://raw.githubusercontent.com/tmax-cloud/hypercloud-install-guide/master/K8S_Master_LBNode/lb_set_script.sh + wget https://raw.githubusercontent.com/tmax-cloud/hypercloud-install-guide/master/K8S_Master_LBNode/notify_action.sh + ``` + + * SELinux 관련 플래그를 설정한다. + ```bash + sudo setsebool -P haproxy_connect_any=1 + ``` + + * LBNode에서 동작 중인 firewalld를 중지 및 비활성화 한다. + ```bash + sudo systemctl stop firewalld && sudo systemctl disable firewalld + ``` + + +## Step.1 HAProxy + Keepalived 설치 +* 목적 : `설치 스크립트를 실행하여 HAProxy와 Keepalived를 LBNode에 설치` +* 순서 : + * 설치 스크립트에 실행 권한을 주고, 실행한다. + ```bash + sudo chmod +x lb_set_script.sh + sudo ./lb_set_script.sh + ``` + + +## Step.2 설치한 서비스 기동 +* 목적 : `HAProxy와 Keepalived 기동` +* 순서 : + * 각 서비스의 설정파일에 Step0 에서 입력한 값들이 올바르게 설정되었는지 확인한다. + ```bash + sudo vi /etc/keepalived/keepalived.conf + sudo vi /etc/haproxy/haproxy.cfg + ``` + + * Keepalived 설정파일의 세부내용을 확인/수정한다. + * state 필드는 MASTER or BACKUP을 반드시 수정하며, priority 또한 수정한다. + * interface도 수정해줘야한다. + * unicast_src_ip 는 현재 설치 진행 중인 LB 서버(앞서 설정한 LB1 변수)이다. + * unicast_peer 는 다른 LB 서버(앞서 설정한 LB2 변수)이다. + ```bash + global_defs { + script_user root root + enable_script_security off + } + + vrrp_script chk_haproxy { + script "/usr/sbin/pidof haproxy" + interval 2 + weight 2 + } + + vrrp_instance VI_1 { + state MASTER # MASTER는 메인 LB, 백업 LB는 BACKUP 으로 설정 + interface enp0s8 # 사용할 interface + virtual_router_id 51 + priority 100 # MASTER의 우선순위를 가장 높게(ex. 100), BACKUP의 경우 그보다 낮게(ex. 99, 98) 설정. + advert_int 1 + authentication { # 인증에 사용될 password(동일하게 맞춰주기만 하면 됨) + auth_type PASS + auth_pass 1111 + } + + unicast_src_ip LB1 # LB 서버 local ip + + unicast_peer { + LB2 # 다른 LB 서버 local ip + } + + virtual_ipaddress { + VIP # 클러스터 구성에 사용될 VIP! + } + + notify_master "/bin/sh /etc/keepalived/notify_action.sh MASTER" + notify_backup "/bin/sh /etc/keepalived/notify_action.sh BACKUP" + notify_fault "/bin/sh /etc/keepalived/notify_action.sh FAULT" + notify_stop "/bin/sh /etc/keepalived/notify_action.sh STOP" + + track_script { + chk_haproxy + } + + track_interface { + enp0s8 # 사용할 interface + } + } + ``` + + * HA Proxy 설정파일의 세부내용을 확인/수정한다. + ```bash + global + log 127.0.0.1 local2 + maxconn 2000 + uid 0 + gid 0 + daemon # background process + + defaults + log global # global 설정 사용 + mode tcp # SSL 통신을 위해서는 TCP모드로 (http모드는 SSL 안됨) + option tcplog + option dontlognull # 데이터가 전송되지 않은 연결 로깅 제외 + retries 3 # 연결요청 재시도 횟수 + maxconn 2000 #option redispatch + timeout connect 10s + timeout client 1m + timeout server 1m + + frontend k8s-api + bind 0.0.0.0:HAPROXYLBPORT # Master Node와 동일 Node에 설치시, Master Join을 해당 port로 해야함. + default_backend k8s-api + + backend k8s-api + option tcp-check + balance roundrobin + server MASTER1NAME MASTER1IP:MASTERPORT check # Master 다중화 서버들 정보 기재 + server MASTER2NAME MASTER2IP:MASTERPORT check + server MASTER3NAME MASTER3IP:MASTERPORT check + ``` + + * 각 서비스를 활성화시켜주며 재시작하고, 동작을 확인한다. + ```bash + sudo systemctl enable keepalived + sudo systemctl enable haproxy + + sudo systemctl daemon-reload + + sudo systemctl start keepalived + sudo systemctl start haproxy + + sudo systemctl status keepalived + sudo systemctl status haproxy + ``` + +## Step.3 K8S 클러스터 구축 +* 목적 : `LB Node 설정을 완료한 이후, K8S 클러스터 구축을 계속한다` +* 순서 : + * 아래의 GUIDE에서, 3-1번을 제외하고 클러스터 구축을 수행한다. + * [K8S MASTER INSTALL GUIDE](https://github.com/tmax-cloud/hypercloud-install-guide/blob/master/K8S_Master/README.md#k8s-master-%EC%84%A4%EC%B9%98-%EA%B0%80%EC%9D%B4%EB%93%9C) diff --git a/K8S_Master_LBNode/haproxy.cfg b/K8S_Master_LBNode/haproxy.cfg new file mode 100644 index 00000000..e68587be --- /dev/null +++ b/K8S_Master_LBNode/haproxy.cfg @@ -0,0 +1,28 @@ +global + log 127.0.0.1 local2 + maxconn 2000 + uid 0 + gid 0 + daemon # background process + +defaults + log global # global 설정 사용 + mode tcp # SSL 통신을 위해서는 TCP모드로 (http모드는 SSL 안됨) + option tcplog + option dontlognull # 데이터가 전송되지 않은 연결 로깅 제외 + retries 3 # 연결요청 재시도 횟수 + maxconn 2000 #option redispatch + timeout connect 10s + timeout client 1m + timeout server 1m + +frontend k8s-api + bind 0.0.0.0:HAPROXYLBPORT + default_backend k8s-api + +backend k8s-api + option tcp-check + balance roundrobin + server MASTER1NAME MASTER1IP:MASTERPORT check # Master 다중화 서버들 정보 기재 + server MASTER2NAME MASTER2IP:MASTERPORT check + server MASTER3NAME MASTER3IP:MASTERPORT check diff --git a/K8S_Master_LBNode/keepalived.conf b/K8S_Master_LBNode/keepalived.conf new file mode 100644 index 00000000..9dc47c74 --- /dev/null +++ b/K8S_Master_LBNode/keepalived.conf @@ -0,0 +1,46 @@ +global_defs { + script_user root root + enable_script_security off +} + +vrrp_script chk_haproxy { + script "/usr/sbin/pidof haproxy" + interval 2 + weight 2 +} + +vrrp_instance VI_1 { + state MASTER # MASTER는 메인 LB, 백업 LB는 BACKUP 으로 설정 + interface enp0s8 # 사용할 interface + virtual_router_id 51 + priority 100 # MASTER의 우선순위가 적어도 1이상 높아야 함 + advert_int 1 + authentication { # 인증에 사용될 password(동일하게 맞춰주기만 하면 됨) + auth_type PASS + auth_pass 1111 + } + + unicast_src_ip LB1 # LB 서버 local ip + + unicast_peer { + LB2 # 다른 LB 서버 local ip + } + + virtual_ipaddress { + VIP # 클러스터 구성에 사용될 VIP! + } + + notify_master "/bin/sh /etc/keepalived/notify_action.sh MASTER" + notify_backup "/bin/sh /etc/keepalived/notify_action.sh BACKUP" + notify_fault "/bin/sh /etc/keepalived/notify_action.sh FAULT" + notify_stop "/bin/sh /etc/keepalived/notify_action.sh STOP" + + track_script { + chk_haproxy + } + + track_interface { + enp0s8 # 사용할 interface + } + +} diff --git a/K8S_Master_LBNode/lb_set_script.sh b/K8S_Master_LBNode/lb_set_script.sh new file mode 100644 index 00000000..4d8bc9d4 --- /dev/null +++ b/K8S_Master_LBNode/lb_set_script.sh @@ -0,0 +1,52 @@ +#!/bin/bash + +rpm_pkg_list=("keepalived" "haproxy") + +for pkgname in ${rpm_pkg_list[@]}; +do + echo " " + echo "*** ${pkgname} install... ***" + echo " " + rpm_need_install="sudo yum install -y ${pkgname}" + ${rpm_need_install} +done + +echo " " +echo "*** Finish pkg installation ***" +echo " " +echo "*** File copying and modifying started ***" +echo " " + +SCRIPTPATH=$(dirname `which $0`) + +THISPATH=`echo $SCRIPTPATH` + +sudo cp ${THISPATH}/notify_action.sh /etc/keepalived/notify_action.sh +sudo chmod +x /etc/keepalived/notify_action.sh + +sudo mv /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf_back +sudo cp -f ${THISPATH}/keepalived.conf /etc/keepalived/keepalived.conf + +sudo sed -i 's/LB1/'"$LB1"'/' /etc/keepalived/keepalived.conf +sudo sed -i 's/LB2/'"$LB2"'/' /etc/keepalived/keepalived.conf + +sudo sed -i 's/VIP/'"$VIP"'/' /etc/keepalived/keepalived.conf + +sudo mv /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg_back +sudo cp -f ${THISPATH}/haproxy.cfg /etc/haproxy/haproxy.cfg + +sudo sed -i 's/MASTER1NAME/'"$MASTER1NAME"'/' /etc/haproxy/haproxy.cfg +sudo sed -i 's/MASTER2NAME/'"$MASTER2NAME"'/' /etc/haproxy/haproxy.cfg +sudo sed -i 's/MASTER3NAME/'"$MASTER3NAME"'/' /etc/haproxy/haproxy.cfg + +sudo sed -i 's/MASTER1IP/'"$MASTER1IP"'/' /etc/haproxy/haproxy.cfg +sudo sed -i 's/MASTER2IP/'"$MASTER2IP"'/' /etc/haproxy/haproxy.cfg +sudo sed -i 's/MASTER3IP/'"$MASTER3IP"'/' /etc/haproxy/haproxy.cfg + +sudo sed -i 's/MASTERPORT/'"$MASTERPORT"'/' /etc/haproxy/haproxy.cfg + +echo " " +echo "*** Finish file copying and modifying ***" +echo " " +echo "*** Finish all task in this script ***" +echo " " diff --git a/K8S_Master_LBNode/notify_action.sh b/K8S_Master_LBNode/notify_action.sh new file mode 100644 index 00000000..a6a4c3e5 --- /dev/null +++ b/K8S_Master_LBNode/notify_action.sh @@ -0,0 +1,35 @@ +#!/bin/bash +#/etc/keepalived/notify_action.sh +log_file=/var/log/keepalived.log +log_write() +{ + echo "[`date '+%Y-%m-%d %T'`] $1" >> $log_file +} + +[ ! -d /var/keepalived/ ] && mkdir -p /var/keepalived/ + +case "$1" in + "MASTER" ) + echo -n "$1" > /var/keepalived/state + log_write " notify_master" + echo -n "0" > /var/keepalived/vip_check_failed_count + ;; + + "BACKUP" ) + echo -n "$1" > /var/keepalived/state + log_write " notify_backup" + ;; + + "FAULT" ) + echo -n "$1" > /var/keepalived/state + log_write " notify_fault" + ;; + + "STOP" ) + echo -n "$1" > /var/keepalived/state + log_write " notify_stop" + ;; + *) + log_write "notify_action.sh: STATE ERROR!!!" + ;; +esac From 8e1f3c1c25c800e2f8504304308197b45e247ba6 Mon Sep 17 00:00:00 2001 From: RhoJeongwan <63379907+RhoJeongwan@users.noreply.github.com> Date: Mon, 8 Feb 2021 18:22:08 +0900 Subject: [PATCH 100/106] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 389ae32d..77a0cc3f 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ | NetworkAgent | | https://github.com/tmax-cloud/hypercloud-install-guide/tree/master/NetworkAgent | O | | Pod_GPU plugin | |
  • https://github.com/tmax-cloud/hypercloud-install-guide/tree/master/Pod_GPU%20plugin
  • NVIDIA Device Plugin : https://github.com/tmax-cloud/hypercloud-install-guide/blob/master/Pod_GPU%20plugin/nvidia-device-plugin/README.md
  • NVIDIA Pod GPU Metrics Exporter : https://github.com/tmax-cloud/hypercloud-install-guide/blob/master/Pod_GPU%20plugin/nvidia-pod-gpu-metrics-exporter/README.md
| O | | Istio | 1.5.1 | [installation guide](https://github.com/tmax-cloud/hypercloud-install-guide/blob/master/Istio/README.md) | O | -| Kubeflow | | https://github.com/tmax-cloud/ai-dev-ops/tree/4.1/README.md | O | +| Kubeflow | | https://github.com/tmax-cloud/install-ai-devops/tree/4.1 | O | | EFK | E(7.2.0), F(v1.4.2), K(7.2.0) | https://github.com/tmax-cloud/hypercloud-install-guide/blob/master/EFK/README.md | O | | Multicloud-console | | | X | | Capi provider | | https://github.com/tmax-cloud/hypercloud-install-guide/blob/4.1/Capi/README.md | O | From 64ab9a67291a2edb59045fab4557e47ede832366 Mon Sep 17 00:00:00 2001 From: moohyoung_jo Date: Tue, 9 Feb 2021 18:30:49 +0900 Subject: [PATCH 101/106] =?UTF-8?q?[mod]=20separate=20guide=20A,=20B=20-?= =?UTF-8?q?=20A=20is=20old=20one(separate=20LB=20Node),=20B=20is=20new=20o?= =?UTF-8?q?ne(not=20separate=20LB=20Node)=20=EA=B0=80=EC=9D=B4=EB=93=9C?= =?UTF-8?q?=EB=A5=BC=20A=EC=99=80=20B=EB=A1=9C=20=EB=B6=84=EB=A6=AC.=20A?= =?UTF-8?q?=EB=8A=94=20=EA=B8=B0=EC=A1=B4=EC=9D=98=20=EB=B6=84=EB=A6=AC?= =?UTF-8?q?=EB=90=9C=20LB=20=EB=85=B8=EB=93=9C=EB=A5=BC=20=EC=9C=84?= =?UTF-8?q?=ED=95=9C=20=EA=B0=80=EC=9D=B4=EB=93=9C.=20B=EB=8A=94=20LB=20?= =?UTF-8?q?=EB=85=B8=EB=93=9C=EB=A5=BC=20=EB=B6=84=EB=A6=AC=ED=95=98?= =?UTF-8?q?=EC=A7=80=20=EC=95=8A=EA=B3=A0=20=ED=81=B4=EB=9F=AC=EC=8A=A4?= =?UTF-8?q?=ED=84=B0=20=EB=82=B4=EC=97=90=20=EC=84=A4=EC=B9=98=ED=95=98?= =?UTF-8?q?=EB=8A=94=20=EA=B2=BD=EC=9A=B0=EB=A5=BC=20=EC=9C=84=ED=95=9C=20?= =?UTF-8?q?=EA=B0=80=EC=9D=B4=EB=93=9C.=20B=EB=A5=BC=20=EC=9C=84=ED=95=9C?= =?UTF-8?q?=20=EC=84=A4=EC=A0=95=ED=8C=8C=EC=9D=BC=20=EB=B3=84=EB=8F=84?= =?UTF-8?q?=EB=A1=9C=20=EC=B6=94=EA=B0=80=ED=95=98=EC=98=80=EC=9D=8C.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- K8S_Master_LBNode/README.md | 190 +++++++++++++++++++++++- K8S_Master_LBNode/haproxy_nolb.cfg | 28 ++++ K8S_Master_LBNode/keepalived_nolb.conf | 47 ++++++ K8S_Master_LBNode/lb_set_script.sh | 1 + K8S_Master_LBNode/lb_set_script_nolb.sh | 54 +++++++ 5 files changed, 315 insertions(+), 5 deletions(-) create mode 100644 K8S_Master_LBNode/haproxy_nolb.cfg create mode 100644 K8S_Master_LBNode/keepalived_nolb.conf create mode 100644 K8S_Master_LBNode/lb_set_script_nolb.sh diff --git a/K8S_Master_LBNode/README.md b/K8S_Master_LBNode/README.md index 9d24130c..cdba9e63 100644 --- a/K8S_Master_LBNode/README.md +++ b/K8S_Master_LBNode/README.md @@ -1,14 +1,19 @@ # K8S Master 클러스터의 LBNode 설치 가이드(HAProxy + Keepalived) -* 본 가이드는 별도의 LBNode를 갖는 K8S 다중화 클러스터 구축을 위해 작성되었음. -* 구축하려는 LBNode에 해당 파일들이 같은 디렉터리 내에 존재해야 함. -* LBNode 각각에서 아래의 작업들을 동일하게 수행해야 함. +* 본 가이드는 A, B로 구성. +* A는 별도의 LBNode를 갖는 K8S 다중화 클러스터 구축을 위해 작성되었음. + * 구축하려는 LBNode에 해당 파일들이 같은 디렉터리 내에 존재해야 함. + * LBNode 각각에서 아래의 작업들을 동일하게 수행해야 함. +* B는 별도의 LBNode 없이, K8S 다중화 클러스터 내에서 HAProxy가 동작하도록 작성되었음. + * 구축하려는 MasterNode에 해당 파일들이 같은 디렉터리 내에 존재해야 함. + * MasterNode 각각에서 아래의 작업들을 동일하게 수행해야 함. +# A. 별도의 LBNode를 갖는 경우 ## 구성 요소 및 버전 * Keepalived v1.3.5 # LBNode에 설치 * HA-Proxy v1.5.18 # LBNode에 설치 ## Install Steps 0. 변수 설정 및 준비 1. HAProxy + Keepalived 설치 -2. 설치한 서비스 재시작 +2. 설치한 서비스 기동 3. K8S 클러스터 구축 ## Step 0. 변수 설정 및 준비 @@ -157,7 +162,7 @@ server MASTER3NAME MASTER3IP:MASTERPORT check ``` - * 각 서비스를 활성화시켜주며 재시작하고, 동작을 확인한다. + * 각 서비스를 활성화시켜주며 기동하고, 동작을 확인한다. ```bash sudo systemctl enable keepalived sudo systemctl enable haproxy @@ -176,3 +181,178 @@ * 순서 : * 아래의 GUIDE에서, 3-1번을 제외하고 클러스터 구축을 수행한다. * [K8S MASTER INSTALL GUIDE](https://github.com/tmax-cloud/hypercloud-install-guide/blob/master/K8S_Master/README.md#k8s-master-%EC%84%A4%EC%B9%98-%EA%B0%80%EC%9D%B4%EB%93%9C) + + +# B. 별도의 LBNode를 갖지 않고, 클러스터 내에서 HAProxy를 동작시킬 경우 +## 구성 요소 및 버전 +* Keepalived v1.3.5 # MasterNode에 설치 +* HA-Proxy v1.5.18 # MasterNode에 설치 +## Install Steps +0. 변수 설정 및 준비 +1. HAProxy + Keepalived 설치 +2. 설치한 서비스 기동 +3. K8S 클러스터 구축 + +## Step 0. 변수 설정 및 준비 +* 목적 : `HAProxy Node 구축을 위한 변수 설정 및 준비과정` +* 순서 : + * Keepalived 와 HAProxy를 설치 및 동작시키기 위한 변수를 설정한다. + * 클러스터 구성에 사용할 각 Master Node의 IP, VIP에 대한 정보를 입력한다. + ```bash + export MASTER1NAME=master1hostname # 클러스터로 구성할 Master Node의 host명을 각각 입력. + export MASTER2NAME=master2hostname + export MASTER3NAME=master3hostname + + export MASTER1IP=192.168.56.222 # 현재 Node의 IP를 입력. + export MASTER2IP=192.168.56.223 # 다른 Node의 IP를 입력. + export MASTER3IP=192.168.56.224 # 다른 Node의 IP를 입력. + + export MASTERPORT=6443 # 기본적으로 Master Port는 6443을 사용. + export HAPROXYLBPORT=16443 # 반드시 MASTERPORT와 다른 Port를 사용해야 하며, 이경우 Master Join시에 이 변수로 설정한 Port를 사용해야 함. + + export VIP=192.168.56.240 # K8S Master Join시VIP로 사용할 IP를 입력. + ``` + + * LB Node 구축을 위해 필요한 파일들을 동일한 위치에 다운로드 받는다. + ```bash + wget https://raw.githubusercontent.com/tmax-cloud/hypercloud-install-guide/master/K8S_Master_LBNode/haproxy_nolb.cfg + wget https://raw.githubusercontent.com/tmax-cloud/hypercloud-install-guide/master/K8S_Master_LBNode/keepalived_nolb.conf + wget https://raw.githubusercontent.com/tmax-cloud/hypercloud-install-guide/master/K8S_Master_LBNode/lb_set_script_nolb.sh + wget https://raw.githubusercontent.com/tmax-cloud/hypercloud-install-guide/master/K8S_Master_LBNode/notify_action.sh + ``` + + * SELinux 관련 플래그를 설정한다. + ```bash + sudo setsebool -P haproxy_connect_any=1 + ``` + + * LBNode에서 동작 중인 firewalld를 중지 및 비활성화 한다. + ```bash + sudo systemctl stop firewalld && sudo systemctl disable firewalld + ``` + + +## Step.1 HAProxy + Keepalived 설치 +* 목적 : `설치 스크립트를 실행하여 HAProxy와 Keepalived를MasterNode에 설치` +* 순서 : + * 설치 스크립트에 실행 권한을 주고, 실행한다. + ```bash + sudo chmod +x lb_set_script_nolb.sh + sudo ./lb_set_script_nolb.sh + ``` + + +## Step.2 설치한 서비스 기동 +* 목적 : `HAProxy와 Keepalived 기동` +* 순서 : + * 각 서비스의 설정파일에 Step0 에서 입력한 값들이 올바르게 설정되었는지 확인한다. + ```bash + sudo vi /etc/keepalived/keepalived_nolb.conf + sudo vi /etc/haproxy/haproxy_nolb.cfg + ``` + + * Keepalived 설정파일의 세부내용을 확인/수정한다. + * state 필드는 MASTER or BACKUP을 반드시 수정하며, priority 또한 수정한다. + * interface도 수정해줘야한다. + * unicast_src_ip 는 현재 설치 진행 중인 서버(앞서 설정한 LB1 변수)이다. + * unicast_peer 는 다른 LB 서버(앞서 설정한 LB2, LB3 변수)이다. + ```bash + global_defs { + script_user root root + enable_script_security off + } + + vrrp_script chk_haproxy { + script "/usr/sbin/pidof haproxy" + interval 2 + weight 2 + } + + vrrp_instance VI_1 { + state MASTER # MASTER는 메인 Node, 백업 Node는 BACKUP 으로 설정 + interface enp0s8 # 사용할 interface + virtual_router_id 51 + priority 100 # MASTER의 우선순위를 가장 높게(ex. 100), BACKUP의 경우 그보다 낮게(ex. 99, 98) 설정. + advert_int 1 + authentication { # 인증에 사용될 password(동일하게 맞춰주기만 하면 됨) + auth_type PASS + auth_pass 1111 + } + + unicast_src_ip MASTER1IP # 현재 설치 중인 Node의 local ip + + unicast_peer { + MASTER2IP # 다른 Node의 local ip + MASTER3IP + } + + virtual_ipaddress { + VIP # 클러스터 구성에 사용될 VIP! + } + + notify_master "/bin/sh /etc/keepalived/notify_action.sh MASTER" + notify_backup "/bin/sh /etc/keepalived/notify_action.sh BACKUP" + notify_fault "/bin/sh /etc/keepalived/notify_action.sh FAULT" + notify_stop "/bin/sh /etc/keepalived/notify_action.sh STOP" + + track_script { + chk_haproxy + } + + track_interface { + enp0s8 # 사용할 interface + } + } + ``` + + * HA Proxy 설정파일의 세부내용을 확인/수정한다. + ```bash + global + log 127.0.0.1 local2 + maxconn 2000 + uid 0 + gid 0 + daemon # background process + + defaults + log global # global 설정 사용 + mode tcp # SSL 통신을 위해서는 TCP모드로 (http모드는 SSL 안됨) + option tcplog + option dontlognull # 데이터가 전송되지 않은 연결 로깅 제외 + retries 3 # 연결요청 재시도 횟수 + maxconn 2000 #option redispatch + timeout connect 10s + timeout client 1m + timeout server 1m + + frontend k8s-api + bind 0.0.0.0:HAPROXYLBPORT # Master Node와 동일 Node에 설치시, Master Join을 해당 port로 해야함. + default_backend k8s-api + + backend k8s-api + option tcp-check + balance roundrobin + server MASTER1NAME MASTER1IP:MASTERPORT check # Master 다중화 서버들 정보 기재 + server MASTER2NAME MASTER2IP:MASTERPORT check + server MASTER3NAME MASTER3IP:MASTERPORT check + ``` + + * 각 서비스를 활성화시켜주며 기동하고, 동작을 확인한다. + ```bash + sudo systemctl enable keepalived + sudo systemctl enable haproxy + + sudo systemctl daemon-reload + + sudo systemctl start keepalived + sudo systemctl start haproxy + + sudo systemctl status keepalived + sudo systemctl status haproxy + ``` + +## Step.3 K8S 클러스터 구축 +* 목적 : `이후, K8S 클러스터 구축을 계속한다` +* 순서 : + * 아래의 GUIDE에서, 3-1번을 제외하고 클러스터 구축을 수행한다. + * [K8S MASTER INSTALL GUIDE](https://github.com/tmax-cloud/hypercloud-install-guide/blob/master/K8S_Master/README.md#k8s-master-%EC%84%A4%EC%B9%98-%EA%B0%80%EC%9D%B4%EB%93%9C) diff --git a/K8S_Master_LBNode/haproxy_nolb.cfg b/K8S_Master_LBNode/haproxy_nolb.cfg new file mode 100644 index 00000000..a340f399 --- /dev/null +++ b/K8S_Master_LBNode/haproxy_nolb.cfg @@ -0,0 +1,28 @@ +global + log 127.0.0.1 local2 + maxconn 2000 + uid 0 + gid 0 + daemon # background process + +defaults + log global # global 설정 사용 + mode tcp # SSL 통신을 위해서는 TCP모드로 (http모드는 SSL 안됨) + option tcplog + option dontlognull # 데이터가 전송되지 않은 연결 로깅 제외 + retries 3 # 연결요청 재시도 횟수 + maxconn 2000 #option redispatch + timeout connect 10s + timeout client 1m + timeout server 1m + +frontend k8s-api + bind 0.0.0.0:HAPROXYLBPORT # Master Node와 동일 Node에 설치시, Master Join을 해당 port로 해야함. + default_backend k8s-api + +backend k8s-api + option tcp-check + balance roundrobin + server MASTER1NAME MASTER1IP:MASTERPORT check # Master 다중화 서버들 정보 기재 + server MASTER2NAME MASTER2IP:MASTERPORT check + server MASTER3NAME MASTER3IP:MASTERPORT check diff --git a/K8S_Master_LBNode/keepalived_nolb.conf b/K8S_Master_LBNode/keepalived_nolb.conf new file mode 100644 index 00000000..e64a7d28 --- /dev/null +++ b/K8S_Master_LBNode/keepalived_nolb.conf @@ -0,0 +1,47 @@ +global_defs { + script_user root root + enable_script_security off +} + +vrrp_script chk_haproxy { + script "/usr/sbin/pidof haproxy" + interval 2 + weight 2 +} + +vrrp_instance VI_1 { + state MASTER # MASTER는 메인 LB, 백업 Node는 BACKUP 으로 설정 + interface enp0s8 # 사용할 interface + virtual_router_id 51 + priority 100 # MASTER의 우선순위를 가장 높게(ex. 100), BACKUP의 경우 그보다 낮게(ex. 99, 98) 설정. + advert_int 1 + authentication { # 인증에 사용될 password(동일하게 맞춰주기만 하면 됨) + auth_type PASS + auth_pass 1111 + } + + unicast_src_ip MASTER1IP # 현재 설치 중인 Node의 local ip + + unicast_peer { + MASTER2IP # 다른 Node의 local ip + MASTER3IP + } + + virtual_ipaddress { + VIP # 클러스터 구성에 사용될 VIP! + } + + notify_master "/bin/sh /etc/keepalived/notify_action.sh MASTER" + notify_backup "/bin/sh /etc/keepalived/notify_action.sh BACKUP" + notify_fault "/bin/sh /etc/keepalived/notify_action.sh FAULT" + notify_stop "/bin/sh /etc/keepalived/notify_action.sh STOP" + + track_script { + chk_haproxy + } + + track_interface { + enp0s8 # 사용할 interface + } + +} diff --git a/K8S_Master_LBNode/lb_set_script.sh b/K8S_Master_LBNode/lb_set_script.sh index 4d8bc9d4..d2042952 100644 --- a/K8S_Master_LBNode/lb_set_script.sh +++ b/K8S_Master_LBNode/lb_set_script.sh @@ -44,6 +44,7 @@ sudo sed -i 's/MASTER2IP/'"$MASTER2IP"'/' /etc/haproxy/haproxy.cfg sudo sed -i 's/MASTER3IP/'"$MASTER3IP"'/' /etc/haproxy/haproxy.cfg sudo sed -i 's/MASTERPORT/'"$MASTERPORT"'/' /etc/haproxy/haproxy.cfg +sudo sed -i 's/HAPROXYLBPORT/'"$HAPROXYLBPORT"'/' /etc/haproxy/haproxy.cfg echo " " echo "*** Finish file copying and modifying ***" diff --git a/K8S_Master_LBNode/lb_set_script_nolb.sh b/K8S_Master_LBNode/lb_set_script_nolb.sh new file mode 100644 index 00000000..565aad60 --- /dev/null +++ b/K8S_Master_LBNode/lb_set_script_nolb.sh @@ -0,0 +1,54 @@ +#!/bin/bash + +rpm_pkg_list=("keepalived" "haproxy") + +for pkgname in ${rpm_pkg_list[@]}; +do + echo " " + echo "*** ${pkgname} install... ***" + echo " " + rpm_need_install="sudo yum install -y ${pkgname}" + ${rpm_need_install} +done + +echo " " +echo "*** Finish pkg installation ***" +echo " " +echo "*** File copying and modifying started ***" +echo " " + +SCRIPTPATH=$(dirname `which $0`) + +THISPATH=`echo $SCRIPTPATH` + +sudo cp ${THISPATH}/notify_action.sh /etc/keepalived/notify_action.sh +sudo chmod +x /etc/keepalived/notify_action.sh + +sudo mv /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf_back +sudo cp -f ${THISPATH}/keepalived.conf /etc/keepalived/keepalived.conf + +sudo sed -i 's/MASTER1IP/'"$MASTER1IP"'/' /etc/keepalived/keepalived.conf +sudo sed -i 's/MASTER2IP/'"$MASTER2IP"'/' /etc/keepalived/keepalived.conf +sudo sed -i 's/MASTER3IP/'"$MASTER3IP"'/' /etc/keepalived/keepalived.conf + +sudo sed -i 's/VIP/'"$VIP"'/' /etc/keepalived/keepalived.conf + +sudo mv /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg_back +sudo cp -f ${THISPATH}/haproxy.cfg /etc/haproxy/haproxy.cfg + +sudo sed -i 's/MASTER1NAME/'"$MASTER1NAME"'/' /etc/haproxy/haproxy.cfg +sudo sed -i 's/MASTER2NAME/'"$MASTER2NAME"'/' /etc/haproxy/haproxy.cfg +sudo sed -i 's/MASTER3NAME/'"$MASTER3NAME"'/' /etc/haproxy/haproxy.cfg + +sudo sed -i 's/MASTER1IP/'"$MASTER1IP"'/' /etc/haproxy/haproxy.cfg +sudo sed -i 's/MASTER2IP/'"$MASTER2IP"'/' /etc/haproxy/haproxy.cfg +sudo sed -i 's/MASTER3IP/'"$MASTER3IP"'/' /etc/haproxy/haproxy.cfg + +sudo sed -i 's/MASTERPORT/'"$MASTERPORT"'/' /etc/haproxy/haproxy.cfg +sudo sed -i 's/HAPROXYLBPORT/'"$HAPROXYLBPORT"'/' /etc/haproxy/haproxy.cfg + +echo " " +echo "*** Finish file copying and modifying ***" +echo " " +echo "*** Finish all task in this script ***" +echo " " From e09351e5ca252d2b21ff8a6a8df457714bbfcf61 Mon Sep 17 00:00:00 2001 From: moohyoung_jo Date: Tue, 9 Feb 2021 18:37:41 +0900 Subject: [PATCH 102/106] =?UTF-8?q?[mod]=20modify=20some=20words.=20-=20mo?= =?UTF-8?q?dify=20some=20words.=20=EC=9D=BC=EB=B6=80=20=EB=8B=A8=EC=96=B4?= =?UTF-8?q?=20=EB=B0=8F=20=EC=84=A4=EB=AA=85=EB=93=A4=20=EC=88=98=EC=A0=95?= =?UTF-8?q?.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- K8S_Master_LBNode/README.md | 14 +++++++------- K8S_Master_LBNode/keepalived.conf | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/K8S_Master_LBNode/README.md b/K8S_Master_LBNode/README.md index cdba9e63..2a382027 100644 --- a/K8S_Master_LBNode/README.md +++ b/K8S_Master_LBNode/README.md @@ -1,9 +1,9 @@ # K8S Master 클러스터의 LBNode 설치 가이드(HAProxy + Keepalived) * 본 가이드는 A, B로 구성. -* A는 별도의 LBNode를 갖는 K8S 다중화 클러스터 구축을 위해 작성되었음. +* [A는 별도의 LBNode를 갖는 K8S 다중화 클러스터 구축을 위해 작성](https://github.com/for2cho/hypercloud-install-guide/tree/master/K8S_Master_LBNode#a-%EB%B3%84%EB%8F%84%EC%9D%98-lbnode%EB%A5%BC-%EA%B0%96%EB%8A%94-%EA%B2%BD%EC%9A%B0)되었음. * 구축하려는 LBNode에 해당 파일들이 같은 디렉터리 내에 존재해야 함. * LBNode 각각에서 아래의 작업들을 동일하게 수행해야 함. -* B는 별도의 LBNode 없이, K8S 다중화 클러스터 내에서 HAProxy가 동작하도록 작성되었음. +* [B는 별도의 LBNode 없이, K8S 다중화 클러스터 내에서 HAProxy가 동작하도록 작성](https://github.com/for2cho/hypercloud-install-guide/tree/master/K8S_Master_LBNode#b-%EB%B3%84%EB%8F%84%EC%9D%98-lbnode%EB%A5%BC-%EA%B0%96%EC%A7%80-%EC%95%8A%EA%B3%A0-%ED%81%B4%EB%9F%AC%EC%8A%A4%ED%84%B0-%EB%82%B4%EC%97%90%EC%84%9C-haproxy%EB%A5%BC-%EB%8F%99%EC%9E%91%EC%8B%9C%ED%82%AC-%EA%B2%BD%EC%9A%B0)되었음. * 구축하려는 MasterNode에 해당 파일들이 같은 디렉터리 내에 존재해야 함. * MasterNode 각각에서 아래의 작업들을 동일하게 수행해야 함. # A. 별도의 LBNode를 갖는 경우 @@ -213,7 +213,7 @@ export VIP=192.168.56.240 # K8S Master Join시VIP로 사용할 IP를 입력. ``` - * LB Node 구축을 위해 필요한 파일들을 동일한 위치에 다운로드 받는다. + * Node 구축을 위해 필요한 파일들을 동일한 위치에 다운로드 받는다. ```bash wget https://raw.githubusercontent.com/tmax-cloud/hypercloud-install-guide/master/K8S_Master_LBNode/haproxy_nolb.cfg wget https://raw.githubusercontent.com/tmax-cloud/hypercloud-install-guide/master/K8S_Master_LBNode/keepalived_nolb.conf @@ -226,14 +226,14 @@ sudo setsebool -P haproxy_connect_any=1 ``` - * LBNode에서 동작 중인 firewalld를 중지 및 비활성화 한다. + * Node에서 동작 중인 firewalld를 중지 및 비활성화 한다. ```bash sudo systemctl stop firewalld && sudo systemctl disable firewalld ``` ## Step.1 HAProxy + Keepalived 설치 -* 목적 : `설치 스크립트를 실행하여 HAProxy와 Keepalived를MasterNode에 설치` +* 목적 : `설치 스크립트를 실행하여 HAProxy와 Keepalived를 MasterNode에 설치` * 순서 : * 설치 스크립트에 실행 권한을 주고, 실행한다. ```bash @@ -254,8 +254,8 @@ * Keepalived 설정파일의 세부내용을 확인/수정한다. * state 필드는 MASTER or BACKUP을 반드시 수정하며, priority 또한 수정한다. * interface도 수정해줘야한다. - * unicast_src_ip 는 현재 설치 진행 중인 서버(앞서 설정한 LB1 변수)이다. - * unicast_peer 는 다른 LB 서버(앞서 설정한 LB2, LB3 변수)이다. + * unicast_src_ip 는 현재 설치 진행 중인 서버(앞서 설정한 MASTER1IP 변수)이다. + * unicast_peer 는 다른 LB 서버(앞서 설정한 MASTER2IP, MASTER3IP 변수)이다. ```bash global_defs { script_user root root diff --git a/K8S_Master_LBNode/keepalived.conf b/K8S_Master_LBNode/keepalived.conf index 9dc47c74..6e1e3075 100644 --- a/K8S_Master_LBNode/keepalived.conf +++ b/K8S_Master_LBNode/keepalived.conf @@ -13,7 +13,7 @@ vrrp_instance VI_1 { state MASTER # MASTER는 메인 LB, 백업 LB는 BACKUP 으로 설정 interface enp0s8 # 사용할 interface virtual_router_id 51 - priority 100 # MASTER의 우선순위가 적어도 1이상 높아야 함 + priority 100 # MASTER의 우선순위를 가장 높게(ex. 100), BACKUP의 경우 그보다 낮게(ex. 99, 98) 설정. advert_int 1 authentication { # 인증에 사용될 password(동일하게 맞춰주기만 하면 됨) auth_type PASS From 6366809b943421c54af6f8fa8a7073c7c9e6e2ee Mon Sep 17 00:00:00 2001 From: moohyoung_jo Date: Tue, 9 Feb 2021 18:44:27 +0900 Subject: [PATCH 103/106] =?UTF-8?q?[mod]=20modify=20some=20link=20-=20modi?= =?UTF-8?q?fy=20some=20link=20=EA=B0=80=EC=9D=B4=EB=93=9C=20=EB=82=B4?= =?UTF-8?q?=EC=9D=98=20=EB=A7=81=ED=81=AC=20=EC=88=98=EC=A0=95.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- K8S_Master_LBNode/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/K8S_Master_LBNode/README.md b/K8S_Master_LBNode/README.md index 2a382027..978f0fd7 100644 --- a/K8S_Master_LBNode/README.md +++ b/K8S_Master_LBNode/README.md @@ -1,9 +1,9 @@ # K8S Master 클러스터의 LBNode 설치 가이드(HAProxy + Keepalived) * 본 가이드는 A, B로 구성. -* [A는 별도의 LBNode를 갖는 K8S 다중화 클러스터 구축을 위해 작성](https://github.com/for2cho/hypercloud-install-guide/tree/master/K8S_Master_LBNode#a-%EB%B3%84%EB%8F%84%EC%9D%98-lbnode%EB%A5%BC-%EA%B0%96%EB%8A%94-%EA%B2%BD%EC%9A%B0)되었음. +* [A는 별도의 LBNode를 갖는 K8S 다중화 클러스터 구축을 위해 작성](#a-%EB%B3%84%EB%8F%84%EC%9D%98-lbnode%EB%A5%BC-%EA%B0%96%EB%8A%94-%EA%B2%BD%EC%9A%B0)되었음. * 구축하려는 LBNode에 해당 파일들이 같은 디렉터리 내에 존재해야 함. * LBNode 각각에서 아래의 작업들을 동일하게 수행해야 함. -* [B는 별도의 LBNode 없이, K8S 다중화 클러스터 내에서 HAProxy가 동작하도록 작성](https://github.com/for2cho/hypercloud-install-guide/tree/master/K8S_Master_LBNode#b-%EB%B3%84%EB%8F%84%EC%9D%98-lbnode%EB%A5%BC-%EA%B0%96%EC%A7%80-%EC%95%8A%EA%B3%A0-%ED%81%B4%EB%9F%AC%EC%8A%A4%ED%84%B0-%EB%82%B4%EC%97%90%EC%84%9C-haproxy%EB%A5%BC-%EB%8F%99%EC%9E%91%EC%8B%9C%ED%82%AC-%EA%B2%BD%EC%9A%B0)되었음. +* [B는 별도의 LBNode 없이, K8S 다중화 클러스터 내에서 HAProxy가 동작하도록 작성](b-%EB%B3%84%EB%8F%84%EC%9D%98-lbnode%EB%A5%BC-%EA%B0%96%EC%A7%80-%EC%95%8A%EA%B3%A0-%ED%81%B4%EB%9F%AC%EC%8A%A4%ED%84%B0-%EB%82%B4%EC%97%90%EC%84%9C-haproxy%EB%A5%BC-%EB%8F%99%EC%9E%91%EC%8B%9C%ED%82%AC-%EA%B2%BD%EC%9A%B0)되었음. * 구축하려는 MasterNode에 해당 파일들이 같은 디렉터리 내에 존재해야 함. * MasterNode 각각에서 아래의 작업들을 동일하게 수행해야 함. # A. 별도의 LBNode를 갖는 경우 From 32b2df3263ae22995198eeb33f0d47507dde52a8 Mon Sep 17 00:00:00 2001 From: moohyoung_jo Date: Tue, 9 Feb 2021 19:13:25 +0900 Subject: [PATCH 104/106] =?UTF-8?q?[mod]=20modify=20filename=20in=20nolb?= =?UTF-8?q?=20script=20-=20modify=20filename=20in=20nolb=20script=20?= =?UTF-8?q?=EC=8A=A4=ED=81=AC=EB=A6=BD=ED=8A=B8=20=EB=82=B4=EC=9D=98=20?= =?UTF-8?q?=ED=8C=8C=EC=9D=BC=EB=AA=85=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- K8S_Master_LBNode/README.md | 2 +- K8S_Master_LBNode/lb_set_script_nolb.sh | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/K8S_Master_LBNode/README.md b/K8S_Master_LBNode/README.md index 978f0fd7..c4057d9a 100644 --- a/K8S_Master_LBNode/README.md +++ b/K8S_Master_LBNode/README.md @@ -3,7 +3,7 @@ * [A는 별도의 LBNode를 갖는 K8S 다중화 클러스터 구축을 위해 작성](#a-%EB%B3%84%EB%8F%84%EC%9D%98-lbnode%EB%A5%BC-%EA%B0%96%EB%8A%94-%EA%B2%BD%EC%9A%B0)되었음. * 구축하려는 LBNode에 해당 파일들이 같은 디렉터리 내에 존재해야 함. * LBNode 각각에서 아래의 작업들을 동일하게 수행해야 함. -* [B는 별도의 LBNode 없이, K8S 다중화 클러스터 내에서 HAProxy가 동작하도록 작성](b-%EB%B3%84%EB%8F%84%EC%9D%98-lbnode%EB%A5%BC-%EA%B0%96%EC%A7%80-%EC%95%8A%EA%B3%A0-%ED%81%B4%EB%9F%AC%EC%8A%A4%ED%84%B0-%EB%82%B4%EC%97%90%EC%84%9C-haproxy%EB%A5%BC-%EB%8F%99%EC%9E%91%EC%8B%9C%ED%82%AC-%EA%B2%BD%EC%9A%B0)되었음. +* [B는 별도의 LBNode 없이, K8S 다중화 클러스터 내에서 HAProxy가 동작하도록 작성](#b-%EB%B3%84%EB%8F%84%EC%9D%98-lbnode%EB%A5%BC-%EA%B0%96%EC%A7%80-%EC%95%8A%EA%B3%A0-%ED%81%B4%EB%9F%AC%EC%8A%A4%ED%84%B0-%EB%82%B4%EC%97%90%EC%84%9C-haproxy%EB%A5%BC-%EB%8F%99%EC%9E%91%EC%8B%9C%ED%82%AC-%EA%B2%BD%EC%9A%B0)되었음. * 구축하려는 MasterNode에 해당 파일들이 같은 디렉터리 내에 존재해야 함. * MasterNode 각각에서 아래의 작업들을 동일하게 수행해야 함. # A. 별도의 LBNode를 갖는 경우 diff --git a/K8S_Master_LBNode/lb_set_script_nolb.sh b/K8S_Master_LBNode/lb_set_script_nolb.sh index 565aad60..515e3b37 100644 --- a/K8S_Master_LBNode/lb_set_script_nolb.sh +++ b/K8S_Master_LBNode/lb_set_script_nolb.sh @@ -25,7 +25,7 @@ sudo cp ${THISPATH}/notify_action.sh /etc/keepalived/notify_action.sh sudo chmod +x /etc/keepalived/notify_action.sh sudo mv /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf_back -sudo cp -f ${THISPATH}/keepalived.conf /etc/keepalived/keepalived.conf +sudo cp -f ${THISPATH}/keepalived_nolb.conf /etc/keepalived/keepalived.conf sudo sed -i 's/MASTER1IP/'"$MASTER1IP"'/' /etc/keepalived/keepalived.conf sudo sed -i 's/MASTER2IP/'"$MASTER2IP"'/' /etc/keepalived/keepalived.conf @@ -34,7 +34,7 @@ sudo sed -i 's/MASTER3IP/'"$MASTER3IP"'/' /etc/keepalived/keepalived.conf sudo sed -i 's/VIP/'"$VIP"'/' /etc/keepalived/keepalived.conf sudo mv /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg_back -sudo cp -f ${THISPATH}/haproxy.cfg /etc/haproxy/haproxy.cfg +sudo cp -f ${THISPATH}/haproxy_nolb.cfg /etc/haproxy/haproxy.cfg sudo sed -i 's/MASTER1NAME/'"$MASTER1NAME"'/' /etc/haproxy/haproxy.cfg sudo sed -i 's/MASTER2NAME/'"$MASTER2NAME"'/' /etc/haproxy/haproxy.cfg From 175111067610fe9302e714e603efa592c354fde2 Mon Sep 17 00:00:00 2001 From: moohyoung_jo Date: Mon, 22 Feb 2021 11:41:22 +0900 Subject: [PATCH 105/106] =?UTF-8?q?[mod]=20modify=20k8s=20master=20guide?= =?UTF-8?q?=20link=20-=20k8s=20=EB=A7=88=EC=8A=A4=ED=84=B0=20=EA=B0=80?= =?UTF-8?q?=EC=9D=B4=EB=93=9C=EB=A1=9C=EC=9D=98=20=EB=A7=81=ED=81=AC=20?= =?UTF-8?q?=EC=88=98=EC=A0=95=20=EA=B8=B0=EC=A1=B4=20=EB=A7=88=EC=8A=A4?= =?UTF-8?q?=ED=84=B0=20=EA=B0=80=EC=9D=B4=EB=93=9C=EA=B0=80=204.1=20?= =?UTF-8?q?=EB=A1=9C=20=EB=B8=8C=EB=9E=9C=EC=B9=98=20=EC=9D=B4=EB=8F=99?= =?UTF-8?q?=EB=90=98=EB=A9=B0=20=EB=A7=81=ED=81=AC=EA=B0=80=20=EA=B9=A8?= =?UTF-8?q?=EC=A0=B8=EC=9E=88=EB=8D=98=20=EB=B6=80=EB=B6=84=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- K8S_Master_LBNode/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/K8S_Master_LBNode/README.md b/K8S_Master_LBNode/README.md index c4057d9a..4484f413 100644 --- a/K8S_Master_LBNode/README.md +++ b/K8S_Master_LBNode/README.md @@ -180,7 +180,7 @@ * 목적 : `LB Node 설정을 완료한 이후, K8S 클러스터 구축을 계속한다` * 순서 : * 아래의 GUIDE에서, 3-1번을 제외하고 클러스터 구축을 수행한다. - * [K8S MASTER INSTALL GUIDE](https://github.com/tmax-cloud/hypercloud-install-guide/blob/master/K8S_Master/README.md#k8s-master-%EC%84%A4%EC%B9%98-%EA%B0%80%EC%9D%B4%EB%93%9C) + * [K8S MASTER INSTALL GUIDE](https://github.com/tmax-cloud/hypercloud-install-guide/tree/4.1/K8S_Master#k8s-master-%EC%84%A4%EC%B9%98-%EA%B0%80%EC%9D%B4%EB%93%9C) # B. 별도의 LBNode를 갖지 않고, 클러스터 내에서 HAProxy를 동작시킬 경우 @@ -355,4 +355,4 @@ * 목적 : `이후, K8S 클러스터 구축을 계속한다` * 순서 : * 아래의 GUIDE에서, 3-1번을 제외하고 클러스터 구축을 수행한다. - * [K8S MASTER INSTALL GUIDE](https://github.com/tmax-cloud/hypercloud-install-guide/blob/master/K8S_Master/README.md#k8s-master-%EC%84%A4%EC%B9%98-%EA%B0%80%EC%9D%B4%EB%93%9C) + * [K8S MASTER INSTALL GUIDE](https://github.com/tmax-cloud/hypercloud-install-guide/tree/4.1/K8S_Master#k8s-master-%EC%84%A4%EC%B9%98-%EA%B0%80%EC%9D%B4%EB%93%9C) From 0b125e945c7a6420aa2c9726983c196781e014dd Mon Sep 17 00:00:00 2001 From: joonyoung_moon Date: Thu, 20 May 2021 16:55:47 +0900 Subject: [PATCH 106/106] [fix] fix invalid istio install guide path --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 77a0cc3f..5bd6bc82 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ | ------ | ------ | ------ | ------ | | NetworkAgent | | https://github.com/tmax-cloud/hypercloud-install-guide/tree/master/NetworkAgent | O | | Pod_GPU plugin | |
  • https://github.com/tmax-cloud/hypercloud-install-guide/tree/master/Pod_GPU%20plugin
  • NVIDIA Device Plugin : https://github.com/tmax-cloud/hypercloud-install-guide/blob/master/Pod_GPU%20plugin/nvidia-device-plugin/README.md
  • NVIDIA Pod GPU Metrics Exporter : https://github.com/tmax-cloud/hypercloud-install-guide/blob/master/Pod_GPU%20plugin/nvidia-pod-gpu-metrics-exporter/README.md
| O | -| Istio | 1.5.1 | [installation guide](https://github.com/tmax-cloud/hypercloud-install-guide/blob/master/Istio/README.md) | O | +| Istio | 1.5.1 | https://github.com/tmax-cloud/hypercloud-install-guide/blob/4.1/Istio/README.md | O | | Kubeflow | | https://github.com/tmax-cloud/install-ai-devops/tree/4.1 | O | | EFK | E(7.2.0), F(v1.4.2), K(7.2.0) | https://github.com/tmax-cloud/hypercloud-install-guide/blob/master/EFK/README.md | O | | Multicloud-console | | | X |

szf1Rjk7p9JL>qo({fq+dlYF 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%0Ar3t1=p?|>bZKA?y6WG$g-(X3^=8^X2t{ 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ⅇ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 QV3@?s1WZ)|&|C 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