From 298f038a0d42a9732e0197828a62f6e25dcca1c6 Mon Sep 17 00:00:00 2001 From: Inaki Fernandez Date: Sat, 2 Apr 2022 19:58:46 +0200 Subject: [PATCH] Apr 2nd --- docs/GoogleCloudPlatform.md | 2 + docs/about.md | 2 +- docs/ansible.md | 7 +- docs/api.md | 13 ++- docs/argocd.md | 5 +- docs/aws-iac.md | 2 + docs/aws-miscellaneous.md | 1 + docs/aws-newfeatures.md | 3 +- docs/aws-security.md | 7 ++ docs/aws-serverless.md | 2 + docs/aws-storage.md | 1 + docs/aws-training.md | 1 + docs/aws.md | 9 -- docs/azure.md | 64 ++++++++++- docs/chaos-engineering.md | 3 + docs/cheatsheets.md | 26 +++-- docs/cicd.md | 1 + docs/container-managers.md | 1 + docs/crossplane.md | 1 + docs/crunchydata.md | 2 + docs/databases.md | 9 +- docs/demos.md | 1 + docs/devel-sites.md | 22 ++++ docs/devops.md | 21 ++-- docs/devsecops.md | 10 ++ docs/docker.md | 9 ++ docs/edge-computing.md | 3 +- docs/finops.md | 6 + docs/freelancing.md | 5 + docs/git.md | 13 ++- docs/gitops.md | 8 ++ docs/golang.md | 2 + docs/grafana.md | 3 +- docs/helm.md | 3 + docs/iac.md | 1 + docs/images/la_gestion_de_uno_mismo.jpg | Bin 0 -> 515352 bytes docs/index.md | 5 +- docs/interview-questions.md | 107 ++++++++++++++++++ docs/introduction.md | 20 +++- docs/istio.md | 2 + .../java-and-java-performance-optimization.md | 2 - docs/java_frameworks.md | 9 +- docs/jenkins-alternatives.md | 6 + docs/jenkins.md | 7 +- docs/kubernetes-autoscaling.md | 9 +- docs/kubernetes-backup-migrations.md | 1 + docs/kubernetes-based-devel.md | 9 ++ docs/kubernetes-monitoring.md | 5 + docs/kubernetes-networking.md | 21 +++- docs/kubernetes-on-premise.md | 9 +- docs/kubernetes-operators-controllers.md | 11 +- docs/kubernetes-security.md | 58 ++++++---- docs/kubernetes-storage.md | 1 + docs/kubernetes-tools.md | 59 +++++++++- docs/kubernetes-troubleshooting.md | 2 + docs/kubernetes.md | 36 +++--- docs/kustomize.md | 1 + docs/linux.md | 1 + docs/managed-kubernetes-in-public-cloud.md | 13 +++ docs/matrix-table.md | 1 + docs/maven-gradle.md | 1 + docs/message-queue.md | 19 +++- docs/mkdocs.md | 1 + docs/mlops.md | 6 + docs/monitoring.md | 7 +- docs/newsfeeds.md | 1 + docs/nosql.md | 2 + docs/other-awesome-lists.md | 9 +- ...ormance-testing-with-jenkins-and-jmeter.md | 4 + docs/postman.md | 1 - docs/private-cloud-solutions.md | 3 + docs/project-management-methodology.md | 10 +- docs/project-management-tools.md | 1 + docs/prometheus.md | 3 +- docs/public-cloud-solutions.md | 1 + docs/pulumi.md | 3 +- docs/python.md | 16 ++- docs/qa.md | 7 +- docs/recruitment.md | 14 +++ docs/remote-tech-jobs.md | 1 + docs/serverless.md | 1 + docs/servicemesh.md | 2 + docs/sre.md | 5 +- docs/tekton.md | 2 + docs/terraform.md | 101 ++++++++++------- docs/test-automation-frameworks.md | 1 - docs/visual-studio.md | 6 + docs/yaml.md | 8 +- mkdocs.yml | 2 + 89 files changed, 716 insertions(+), 186 deletions(-) create mode 100644 docs/images/la_gestion_de_uno_mismo.jpg create mode 100644 docs/interview-questions.md create mode 100644 docs/private-cloud-solutions.md diff --git a/docs/GoogleCloudPlatform.md b/docs/GoogleCloudPlatform.md index cab178cf..0f802782 100644 --- a/docs/GoogleCloudPlatform.md +++ b/docs/GoogleCloudPlatform.md @@ -155,6 +155,8 @@

🎟 You want to get a ticket to @googlecloud networking, it's really cool!
🤓 I take an example company and walk trough the different networking services, take look 👉 https://t.co/tTwLp7DXH4#cloudnetworking #cloudcomputing pic.twitter.com/yFVEUpLy1g

— Priyanka Vergadia (@pvergadia) November 1, 2021

Our new managed continuous service delivery, @googlecloud Deploy, just became generally available.

I'm supposed to be working on something else, but I want to check it out. Let's procrastinate on real-work together, shall we?

Quick 🧵 as I deploy a #dotnet app to GKE. pic.twitter.com/Ve07Gnog7q

— Richard Seroter (@rseroter) January 21, 2022
+ +

Creating a GCP service account for each running k8s deployment is ugly. Thankfully, good folks working on Workload Identity @googlecloud have conjured up some dark magic that allows you to bind RBAC directly to Kubernetes service accounts!

Checkout a short demo 🧵 showing how…

— Nick Eberts (@nicholas_eberts) March 18, 2022
diff --git a/docs/about.md b/docs/about.md index 858e99e2..912b446e 100644 --- a/docs/about.md +++ b/docs/about.md @@ -83,7 +83,7 @@ Tips: ask the hiring manager what experience they have with Cloud Automation, Cl [^4]: Automation with [Jenkins Configuration as Code](https://www.jenkins.io/projects/jcasc/) replaces what was previously done via [Jenkins CLI](https://www.jenkins.io/doc/book/managing/cli/) and [jenkins remote REST API](https://www.jenkins.io/doc/book/using/remote-access-api/) calls (requiring backend development with tools like [swagger](https://swagger.io/) and API Testing tools like [postman](https://www.postman.com/)). Similar scenario applies to other technologies. -Let's improve the IT sector and the opportunities in large, medium and small companies, and give us a star on GitHub if you like this blog!! +Let's improve both the private & public IT sector and the opportunities in large, medium and small companies, and give us a star on GitHub if you like this blog!!
· The Seatbelts - Tank!
diff --git a/docs/ansible.md b/docs/ansible.md index a9b89262..86ef936b 100644 --- a/docs/ansible.md +++ b/docs/ansible.md @@ -4,7 +4,6 @@ - [Writing an Ansible module](#writing-an-ansible-module) - [Interacting with REST API](#interacting-with-rest-api) - [Writing an Ansible module for a REST API](#writing-an-ansible-module-for-a-rest-api) -- [Interview Questions](#interview-questions) - [Ansible Videos](#ansible-videos) - [Ansible Playbooks](#ansible-playbooks) - [Ansible Collections](#ansible-collections) @@ -117,6 +116,7 @@ * [middlewareinventory.com: Ansible List Examples – How to create and append items to List 🌟](https://www.middlewareinventory.com/blog/ansible-list-examples-how-to-create-and-append-items-to-list/) * [middlewareinventory.com: Ansible Dictionary – How to create and add items to dict](https://www.middlewareinventory.com/blog/ansible-dict/) * [middlewareinventory.com: How to use ansible with S3 – Ansible aws_s3 examples | Devops Junction](https://www.middlewareinventory.com/blog/ansible-aws_s3-example/) +* [techbeatly.com: Ansible for Infrastructure Provisioning in AWS | Ansible Real Life Series - youtube](https://www.techbeatly.com/ansible-for-infrastructure-provisioning-in-aws-ansible-real-life-series/) ## Deploying custom files with Jinja2 templates - [infraxpertzz.com: Deploying Custom Files with Jinja2 Template 🌟](https://infraxpertzz.com/deploying-custom-files-with-jinja2-template/) - [video](https://www.youtube.com/watch?app=desktop&v=jokfVGdhBow&feature=youtu.be&ab_channel=InfraXpertzz) - [jinja 🌟](https://github.com/pallets/jinja/) Jinja is a fast, expressive, extensible templating engine. Special placeholders in the template allow writing code similar to Python syntax. Then the template is passed data to render the final document. @@ -136,11 +136,6 @@ - [ansible.com: Automating your business application's REST API with Ansible](https://www.ansible.com/automating-business-applications-rest-api) You will learn how you can use Ansible to talk to your business application's REST API - and to develop your own Ansible modules doing just that. - [liquidat.wordpress.com: [Howto] Writing an Ansible module for a REST API](https://liquidat.wordpress.com/2016/06/27/howto-writing-an-ansible-module-for-a-rest-api/) -## Interview Questions -- [interviewbit.com: Ansible Interview Questions](https://www.interviewbit.com/ansible-interview-questions/) -- [guru99.com: Top 19 Ansible Interview Questions and Answers for 2022](https://www.guru99.com/ansible-interview-questions.html) -- [devsecops.co.in: 100+ Ansible Interview Questions and Answers](https://devsecops.co.in/2021/05/18/ansible-interview-questions/) - ## Ansible Videos * [youtube playlist: Ansible Tutorial - by Thetips4you 🌟](https://www.youtube.com/playlist?list=PLVx1qovxj-al0Knm1A0eEXfGyd5kCi16p) * [youtube playlist: Ansible Tutorial - by Infra Xpertzz 🌟](https://www.youtube.com/playlist?list=PLOwxB_PX3s3WSfhzVtwhxXwy7QpkmtnzR) diff --git a/docs/api.md b/docs/api.md index 2d8276b5..3bbe08bb 100644 --- a/docs/api.md +++ b/docs/api.md @@ -2,7 +2,6 @@ - [APIs](#apis) - [Python FastAPI](#python-fastapi) - [Motivation](#motivation) -- [API Testing Interview Questions](#api-testing-interview-questions) - [State of the API Report](#state-of-the-api-report) - [Postman State of the API Report](#postman-state-of-the-api-report) - [Smartbear State of the API Report](#smartbear-state-of-the-api-report) @@ -26,6 +25,7 @@ - [Free Web Services (Public APIs)](#free-web-services-public-apis) - [Open Banking](#open-banking) - [RPA](#rpa) +- [API Ops](#api-ops) - [Related](#related) - [Video APIs](#video-apis) - [API Business Models](#api-business-models) @@ -56,6 +56,9 @@ - [abdulrwahab.medium.com: API Architecture — Design Best Practices for REST APIs](https://abdulrwahab.medium.com/api-architecture-best-practices-for-designing-rest-apis-bf907025f5f) - [blog.bitsrc.io: API vs Microservices — Are you using 2 terms for the same concept?](https://blog.bitsrc.io/api-vs-microservices-are-you-using-2-terms-for-the-same-concept-b51f13f5974e) No, you’re not, but let me explain - [blog.devgenius.io: Principles & Best practices of REST API Design](https://blog.devgenius.io/best-practice-and-cheat-sheet-for-rest-api-design-6a6e12dfa89f) +- [troyhunt.com: Your API versioning is wrong, which is why I decided to do it 3 different wrong ways](https://www.troyhunt.com/your-api-versioning-is-wrong-which-is/) +- [infoq.com: A Standardized, Specification-Driven API Lifecycle](https://www.infoq.com/articles/Standardized-Specification-Driven-API-Lifecycle/) +- [levelup.gitconnected.com: What’s Wrong With Your CRUD APIs— Besides Everything?](https://levelup.gitconnected.com/whats-wrong-with-your-crudy-interfaces-besides-everything-bde4f4c8cb8a) So… I heard you worship CRUDy REST interfaces. ## Python FastAPI - [writersbyte.com: Introduction to APIs with Python FastAPI](https://writersbyte.com/introduction-to-apis-with-python-fastapi/) @@ -64,10 +67,6 @@ - [APIs published, APIs consumed: mainstream enterprises increasingly behave like software vendors](https://www.zdnet.com/article/apis-published-apis-consumed-mainstream-enterprises-increasingly-behave-like-software-vendors/) Mainstream enterprises increasingly reach out to customers with APIs, digital services. Unlike software providers though, many still have mostly on-premises infrastructure. - [You Bet That APIs Power DevOps Tools](http://seguridad-informacion.blogspot.com/2020/07/you-bet-that-apis-power-devops-tools.html) -## API Testing Interview Questions -- [automationreinvented.blogspot.com: Top 30 API Testing Interview Questions & Answers for SDET/API Automation-Rest Assured? SET-03](https://automationreinvented.blogspot.com/2020/11/top-30-api-testing-interview-questions.html) -- [automationqahub.com: Latest API Testing Interview Questions And Answers](https://automationqahub.com/latest-api-testing-interview-questions-and-answers-2/) - ## State of the API Report ### Postman State of the API Report - [postman.com: 2019 Postman State of the API Report 🌟](https://www.postman.com/resources/infographics/api-survey-2019/) @@ -116,6 +115,7 @@ - [nordicapis.com: Using gRPC to Connect a Microservices Ecosystem](https://nordicapis.com/using-grpc-to-connect-a-microservices-ecosystem/) - [cncf.io: Think gRPC, when you are architecting modern microservices!](https://www.cncf.io/blog/2021/07/19/think-grpc-when-you-are-architecting-modern-microservices/) - [itnext.io: A minimalist guide to gRPC](https://itnext.io/a-minimalist-guide-to-grpc-e4d556293422) REST API is good but is it really the best option that we have? +- [==gendocu.com: RPC API Developer Portal==](https://gendocu.com/) ### Asynchronous APIs #### AsyncAPI @@ -193,6 +193,9 @@ ## RPA - [thenewstack.io: True Success in Process Automation Requires Microservices](https://thenewstack.io/true-success-in-process-automation-requires-microservices/) +## API Ops +- [thenewstack.io: How Platform Ops Teams Should Think About API Strategy](https://thenewstack.io/how-platform-ops-teams-should-think-about-api-strategy/) **Platform Ops Is API Ops** + ## Related - [medium: Do I Need an API Gateway if I Use a Service Mesh? 🌟](https://blog.christianposta.com/microservices/do-i-need-an-api-gateway-if-i-have-a-service-mesh/) * [Dzone: How to Create a REST API With Spring Boot](https://dzone.com/articles/how-to-create-rest-api-with-spring-boot) diff --git a/docs/argocd.md b/docs/argocd.md index 85b7c286..e5c62f56 100644 --- a/docs/argocd.md +++ b/docs/argocd.md @@ -51,11 +51,13 @@ - [blog.argoproj.io: Best Practices for Multi-tenancy in Argo CD](https://blog.argoproj.io/best-practices-for-multi-tenancy-in-argo-cd-273e25a047b0) - [argoproj.github.io: Argo Events - The Event-driven Workflow Automation Framework](https://argoproj.github.io/argo-events/) Argo Events is an event-driven workflow automation framework for Kubernetes which helps you trigger K8s objects, Argo Workflows, Serverless workloads, etc. on events from a variety of sources like webhooks, S3, schedules, messaging queues, etc. -- [jijujacob27.medium.com: Sharded applications on Kubernetes using Helm, ArgoCD, and Argo-Rollouts](https://jijujacob27.medium.com/sharded-saas-applications-on-kubernetes-using-helm-argocd-and-argo-rollouts-a683c66f8646) +- [jijujacob27.medium.com: Sharded applications on Kubernetes using Helm, ArgoCD, and Argo-Rollouts](https://jijujacob27.medium.com/sharded-saas-applications-on-kubernetes-using-helm-argocd-and-argo-rollouts-a683c66f8646) You will use Argo-Rollouts for deploying the app using the Blue/Green strategy. - [medium.com/@ScrumPokerPro: Cloud native architecture with Kubernetes and ArgoCD](https://medium.com/@ScrumPokerPro/cloud-native-architecture-with-kubernetes-and-argocd-ebecda7784b8) - [faun.pub: Deploying Argo CD and Sealed Secrets with Helm](https://faun.pub/deploying-argo-cd-and-sealed-secrets-with-helm-8de12f53051b?gi=14810144eed0) Let’s get stuff deployed! - [dev.to: The three meanings of "template" in Argo Workflows](https://dev.to/crenshaw_dev/the-three-meanings-of-template-in-argo-workflows-2paf) - [amralaayassen.medium.com: How to create ArgoCD Applications Automatically using ApplicationSet? “Automation of GitOps”](https://amralaayassen.medium.com/how-to-create-argocd-applications-automatically-using-applicationset-automation-of-the-gitops-59455eaf4f72) +- [==argoproj.github.io: Argo Rollouts - Kubernetes Progressive Delivery Controller==](https://argoproj.github.io/argo-rollouts/) **Argo Rollouts is a Kubernetes controller and set of CRDs which provide advanced deployment capabilities such as blue-green, canary, canary analysis, experimentation, and progressive delivery features to Kubernetes** +- [blog.getambassador.io: GitOps in Kubernetes with ArgoCD](https://blog.getambassador.io/gitops-in-kubernetes-with-argocd-c6ea0e510741) ## Argo CD Vulnerabilities - [threatpost.com: Argo CD Security Bug Opens Kubernetes Cloud Apps to Attackers](https://threatpost.com/argo-cd-security-bug-kubernetes-cloud-apps/178239/) @@ -68,6 +70,7 @@ - [argoproj-labs/argocd-autopilot: Argo-CD Autopilot](https://github.com/argoproj-labs/argocd-autopilot) The Argo-CD Autopilot is a tool which offers an opinionated way of installing Argo-CD and managing GitOps epositories. New users to GitOps and Argo CD are not often sure how they should structure their repos, add applications, promote apps across environments, and manage the Argo CD installation itself using GitOps. Argo Autopilot is a project that solves that - [argoproj-labs/applicationset: Argo CD ApplicationSet Controller](https://github.com/argoproj-labs/applicationset) The ApplicationSet controller is a Kubernetes controller that adds support for a new custom ApplicationSet CustomResourceDefinition (CRD). The ApplicationSet controller manages multiple Argo CD Applications as a single ApplicationSet unit, supporting deployments to large numbers of clusters, deployments of large monorepos, and enabling secure Application self-service. - [IBM/argocd-vault-plugin](https://github.com/IBM/argocd-vault-plugin) An ArgoCD plugin to retrieve secrets from Hashicorp Vault and inject them into Kubernetes secrets. +- [==argoproj-labs/argocd-vault-plugin==](https://github.com/argoproj-labs/argocd-vault-plugin) ArgoCD-Vault-plugin is an Argo CD plugin to retrieve secrets from various Secret Management tools (HashiCorp Vault, IBM Cloud Secrets Manager, AWS Secrets Manager, etc.) and inject them into Kubernetes resources - https://argocd-vault-plugin.readthedocs.io ## Videos ??? note "Click to expand!" diff --git a/docs/aws-iac.md b/docs/aws-iac.md index 82fc0868..03ea9d0d 100644 --- a/docs/aws-iac.md +++ b/docs/aws-iac.md @@ -17,6 +17,8 @@ - [cloudkatha.com: How to Create an S3 Bucket using CloudFormation](https://cloudkatha.com/how-to-create-an-s3-bucket-using-cloudformation/) - [cloudkatha.com: How to use CloudFormation to Create SNS Topic and Subscription](https://cloudkatha.com/how-to-use-cloudformation-to-create-sns-topic-and-subscription/) - [cloudkatha.com: How to Create IAM Role using CloudFormation](https://cloudkatha.com/how-to-create-iam-role-using-cloudformation/) +- [luminousmen.com: A very quick introduction to the pain of AWS CloudFormation](https://luminousmen.com/post/a-very-quick-introduction-to-the-pain-of-aws-cloudformation) +- [medium.com/bb-tutorials-and-thoughts: How To Deploy and Run Python APIs on AWS App Runner With CloudFormation](https://medium.com/bb-tutorials-and-thoughts/how-to-deploy-and-run-python-apis-on-aws-app-runner-with-cloudformation-cf9c6fd14cf6) A step by step guide with an example project With GitHub ## Infrastructure Code Template Generators - [aws.amazon.com: Amazon EC2 announces Spot Blueprints, an infrastructure code template generator to get started with EC2 Spot Instances](https://aws.amazon.com/about-aws/whats-new/2020/12/amazon-ec2-announces-spot-blueprints-an-infrastructure-code-template-generator-to-get-started-with-ec2-spot-instances/) diff --git a/docs/aws-miscellaneous.md b/docs/aws-miscellaneous.md index ab894c68..e7eba5a0 100644 --- a/docs/aws-miscellaneous.md +++ b/docs/aws-miscellaneous.md @@ -123,3 +123,4 @@ - [London DevOps - Trainline, A DevOps Journey - Chris Turvil](https://www.youtube.com/watch?v=IUvUmqu1MBQ) - [aws.amazon.com: Trainline Case Study](https://aws.amazon.com/solutions/case-studies/trainline/) - [treblle.com: How does Treblle scale on AWS without breaking the bank?](https://treblle.com/blog/how-does-treblle-scale-on-aws-without-breaking-the-bank) +- [aws.amazon.com: Creating a digital map of COVID-19 virus for discovery of new treatment compounds](https://aws.amazon.com/blogs/hpc/creating-a-digital-map-of-covid-19-virus-for-discovery-of-new-treatment-compounds/) \ No newline at end of file diff --git a/docs/aws-newfeatures.md b/docs/aws-newfeatures.md index 5181b4bf..a245d2f9 100644 --- a/docs/aws-newfeatures.md +++ b/docs/aws-newfeatures.md @@ -74,4 +74,5 @@ - [Announcing General Availability of Amazon Redshift Cross-account Data Sharing](https://aws.amazon.com/about-aws/whats-new/2021/08/announcing-general-availability-amazon-redshift-cross-account-data-sharing/) - [infoq.com: Amazon Introduces Cloudwatch Cross Account Alarms to Consolidate Management](https://www.infoq.com/news/2021/08/aws-cloudwatch-alarms/) - [Monitor, Evaluate, and Demonstrate Backup Compliance with AWS Backup Audit Manager](https://aws.amazon.com/blogs/aws/monitor-evaluate-and-demonstrate-backup-compliance-with-aws-backup-audit-manager/) -- [Amazon Managed Grafana Is Now Generally Available with Many New Features](https://aws.amazon.com/blogs/aws/amazon-managed-grafana-is-now-generally-available-with-many-new-features) \ No newline at end of file +- [Amazon Managed Grafana Is Now Generally Available with Many New Features](https://aws.amazon.com/blogs/aws/amazon-managed-grafana-is-now-generally-available-with-many-new-features) +- [AWS Lambda Now Supports Up to 10 GB Ephemeral Storage](https://aws.amazon.com/blogs/aws/aws-lambda-now-supports-up-to-10-gb-ephemeral-storage/) \ No newline at end of file diff --git a/docs/aws-security.md b/docs/aws-security.md index 5f3a5cbf..1d7bdba1 100644 --- a/docs/aws-security.md +++ b/docs/aws-security.md @@ -36,6 +36,7 @@ - [try.jupiterone.com: The Absolute Minimum Every Developer Must Know about AWS Security](https://try.jupiterone.com/the-absolute-minimum-every-developer-must-know-about-aws-security) - [==How to automate AWS account creation with SSO user assignment==](https://aws.amazon.com/blogs/security/how-to-automate-aws-account-creation-with-sso-user-assignment/) - [Security practices in AWS multi-tenant SaaS environments](https://aws.amazon.com/blogs/security/security-practices-in-aws-multi-tenant-saas-environments/) Many good tips, from identity management to tenant isolation. +- [How to use AWS Security Hub and Amazon OpenSearch Service for SIEM](https://aws.amazon.com/blogs/security/how-to-use-aws-security-hub-and-amazon-opensearch-service-for-siem/) ## Policy as Code with AWS CDK and Open Policy Agent - [Realize Policy-as-Code with AWS Cloud Development Kit through Open Policy Agent 🌟](https://aws.amazon.com/blogs/opensource/realize-policy-as-code-with-aws-cloud-development-kit-through-open-policy-agent/) @@ -59,6 +60,12 @@ - [infoq.com: Incorrect IAM Policy Raised Questions About AWS Access to S3 Data](https://www.infoq.com/news/2022/01/aws-iam-s3-access/) - [==iann0036/iamlive==](https://github.com/iann0036/iamlive) Generate an IAM policy from AWS calls using client-side monitoring (CSM) or embedded proxy - [==awsiam.info: AWS IAM Search==](https://www.awsiam.info) +- [daan.fyi: AWS IAM Demystified](https://www.daan.fyi/writings/iam) +- [willdady/cdk-iam-credentials-rotator: IAM Credentials Rotator](https://github.com/willdady/cdk-iam-credentials-rotator) AWS CDK construct for rotating IAM user credentials and sending to a third party. +- [==Organizing Your AWS Environment Using Multiple Accounts (white paper for best practices)==](https://docs.aws.amazon.com/whitepapers/latest/organizing-your-aws-environment/organizing-your-aws-environment.html) Reasons you should be using multiple accounts in AWS: + - You can constrain access to sensitive data + - You'll promote innovation & agility + - You can more easily manage costs ## AWS Organizations - [Simplifying permissions management at scale using tags in AWS Organizations](https://aws.amazon.com/blogs/mt/simplifying-permissions-management-at-scale-using-tags-in-aws-organizations/) diff --git a/docs/aws-serverless.md b/docs/aws-serverless.md index 445f5ad4..24f175ca 100644 --- a/docs/aws-serverless.md +++ b/docs/aws-serverless.md @@ -38,6 +38,8 @@ - [medium.com/@andrewjr350: Misunderstanding of Serverless (AWS)](https://medium.com/@andrewjr350/misunderstanding-of-serverless-aws-835c7076ea4c) - [freecodecamp.org: How to Setup a Basic Serverless REST API with AWS Lambda and API Gateway](https://www.freecodecamp.org/news/how-to-setup-a-basic-serverless-backend-with-aws-lambda-and-api-gateway/) - [Migrating a monolithic .NET REST API to AWS Lambda](https://aws.amazon.com/blogs/compute/migrating-a-monolithic-net-rest-api-to-aws-lambda/) +- [==medium.com/aws-serverless-microservices-with-patterns-best: Cloud-Native Microservices Evolves to AWS Serverless Event-driven Architectures==](https://medium.com/aws-serverless-microservices-with-patterns-best/cloud-native-microservices-evolves-to-aws-serverless-event-driven-architectures-9a38c473f4f8) In this article, we are going to discuss about How Cloud-Native Microservices Evolves to AWS Serverless Event-driven Architectures when developing Serverless E-Commerce application. +- [betterprogramming.pub: Exploring the Serverless Event-Driven Architecture](https://betterprogramming.pub/exploring-the-serverless-event-driven-architecture-8d6bda93e823) Meet your old friends Terraform, Lambda, SQS, and Python ## AWS Fargate - [Amazon EFS with Amazon ECS and AWS Fargate – Part 1](https://aws.amazon.com/es/blogs/containers/developers-guide-to-using-amazon-efs-with-amazon-ecs-and-aws-fargate-part-1/) diff --git a/docs/aws-storage.md b/docs/aws-storage.md index cc5a9fc2..79a39c26 100644 --- a/docs/aws-storage.md +++ b/docs/aws-storage.md @@ -18,6 +18,7 @@ - [Connect Amazon S3 File Gateway using AWS PrivateLink for Amazon S3](https://aws.amazon.com/es/blogs/architecture/connect-amazon-s3-file-gateway-using-aws-privatelink-for-amazon-s3/) - [blog.min.io: Certificate-based Authentication for S3](https://blog.min.io/certificate-based-authentication-with-s3/) MinIO encrypts data when stored on disk and when transmitted over the network. - [==acloudguru.com: S3 Glacier Instant Retrieval deep dive: Which S3 Storage Class is right for me?==](https://acloudguru.com/blog/engineering/s3-glacier-instant-retrieval-deep-dive-which-s3-storage-class-is-right-for-me) +- [Monitor Amazon S3 activity using S3 server access logs and Pandas in Python](https://aws.amazon.com/blogs/storage/monitor-amazon-s3-activity-using-s3-server-access-logs-and-pandas-in-python/) ## Amazon EFS Elastic File System - [EFS Elastic File System](https://aws.amazon.com/blogs/aws/amazon-elastic-file-system-production-ready-in-three-regions) diff --git a/docs/aws-training.md b/docs/aws-training.md index 10459048..46102629 100644 --- a/docs/aws-training.md +++ b/docs/aws-training.md @@ -16,6 +16,7 @@ - [hashnode.tpschmidt.com: My Top 10 Free Learning Resources for AWS](https://hashnode.tpschmidt.com/my-top-10-free-learning-resources-for-aws) There's probably nothing you can't build on AWS, but starting your Cloud Journey looking at over 200 AWS Services needs guidance. - [==explore.skillbuilder.aws/learn: AWS Skill Builder== 🌟](https://explore.skillbuilder.aws/learn) Your learning center to build in-demand cloud skills - [aws.amazon.com: Exámenes prácticos gratuitos y 100% en español para que obtenga su certificación](https://aws.amazon.com/es/blogs/aws-spanish/examenes-practicos-gratuitos-y-100-en-espanol-para-que-obtenga-su-certificacion/) +- [satyenkumar.medium.com: My Youtube Channel is updated for AWS Certifications (Over 150 Video list)](https://satyenkumar.medium.com/my-youtube-channel-is-updated-for-aws-certifications-over-150-video-list-1ae7aa81e99d) ## eBooks - [gocloudarchitects.com: AWS Certified Solutions Architect Associate Exam Guide](https://www.gocloudarchitects.com/free-csa-a-ebook/) diff --git a/docs/aws.md b/docs/aws.md index 5de015c8..578067ca 100644 --- a/docs/aws.md +++ b/docs/aws.md @@ -25,7 +25,6 @@ - [AWS Systems Manager Incident Manager](#aws-systems-manager-incident-manager) - [AWS Cloud Adoption Framework (AWS CAF)](#aws-cloud-adoption-framework-aws-caf) - [AWS re:Post](#aws-repost) -- [AWS Interview Questions](#aws-interview-questions) - [Bunch of Images](#bunch-of-images) - [Videos](#videos) - [Tweets](#tweets) @@ -176,14 +175,6 @@ You can filter by topic using the toolbar above. - [AWS re:Post – A Reimagined Q&A Experience for the AWS Community](https://aws.amazon.com/blogs/aws/aws-repost-a-reimagined-qa-experience-for-the-aws-community/) - [infoq.com: Amazon Introduces re:Post, a "Stack Overflow" for AWS](https://www.infoq.com/news/2021/12/amazon-repost-questions-answers/) -## AWS Interview Questions -- [intellipaat.com: Top Amazon AWS Interview Questions – Most Asked](https://intellipaat.com/blog/interview-question/amazon-aws-interview-questions/) -- [Frequently Asked AWS Interview Questions](https://www.interviewbit.com/aws-interview-questions/) -- [TGB - AWS Interview Questions and Answers - Frequently asked](https://www.techgeekbuzz.com/top-aws-interview-questions-and-answers/) - - - - --- ## Bunch of Images ??? note "Click to expand!" diff --git a/docs/azure.md b/docs/azure.md index 3af8e7d1..d02ffb76 100644 --- a/docs/azure.md +++ b/docs/azure.md @@ -7,11 +7,16 @@ - [Azure Patterns](#azure-patterns) - [ARM Templates](#arm-templates) - [Azure DevOps](#azure-devops) -- [Azure AD and RBAC](#azure-ad-and-rbac) + - [YAML Schema in DevOps Azure Pipelines](#yaml-schema-in-devops-azure-pipelines) + - [Azure Pipeline Tasks](#azure-pipeline-tasks) +- [Azure AD and RBAC. Service Principal SPN](#azure-ad-and-rbac-service-principal-spn) + - [Register applications in Azure AD. Authenticate apps and services](#register-applications-in-azure-ad-authenticate-apps-and-services) - [Azure Arc. Azure’s Hybrid And Multi-Cloud Platform. GitOps with Azure Arc](#azure-arc-azures-hybrid-and-multi-cloud-platform-gitops-with-azure-arc) - [Secure DevOps Kit for Azure](#secure-devops-kit-for-azure) - [Mobile Apps](#mobile-apps) - [Powershell](#powershell) + - [Microsoft Graph PowerShell SDK](#microsoft-graph-powershell-sdk) + - [Powershell Crescendo](#powershell-crescendo) - [Powershell repos](#powershell-repos) - [Crescendo powershell module](#crescendo-powershell-module) - [Secrets Management with Powershell](#secrets-management-with-powershell) @@ -32,6 +37,7 @@ - [Office 365](#office-365) - [Images](#images) - [Videos](#videos) +- [Tweets](#tweets) ## Azure - [Microsoft Azure](https://azure.microsoft.com/) @@ -60,6 +66,7 @@ - [docs.microsoft.com: Multi-tenant user management scenarios](https://docs.microsoft.com/en-us/azure/active-directory/fundamentals/multi-tenant-user-management-scenarios) - [docs.microsoft.com: Overview: Cross-tenant access with Azure AD External Identities (Preview)](https://docs.microsoft.com/en-us/azure/active-directory/external-identities/cross-tenant-access-overview) Azure AD organizations can use External Identities cross-tenant access settings to manage how they collaborate with other Azure AD organizations through B2B collaboration. Cross-tenant access settings give you granular control over how external Azure AD organizations collaborate with you (inbound access) and how your users collaborate with external Azure AD organizations (outbound access). - [==nubesgen.com==](https://nubesgen.com) - [microsoft/NubesGen](https://github.com/microsoft/NubesGen) Going to production on Azure is only one `git push` away. **Kickstart your project on Azure in minutes! Easily generate Terraform and Bicep templates for your project. Automate your infrastructure using GitOps best practices with GitHub Actions. NubesGen is an Open Source project and we are always looking for feedbacks and contributions.** + - [infoq.com: NubesGen Brings Git Push to Azure Infrastructure](https://www.infoq.com/news/2022/03/nubesgen-azure-infrastructure/) - [charbelnemnom.com: Move Files Between Azure File Share Tiers and optimize storage costs](https://charbelnemnom.com/move-files-between-azure-file-share-tiers/) ## Blogs @@ -71,7 +78,7 @@ - [azurebrains.com: Azurebrains](https://www.azurebrains.com) Blog sobre Tecnologias Cloud, Azure, Inteligencia Artificial, etc. ## Azure Training -- https://github.com/johnthebrit/CertificationMaterials +- [johnthebrit/CertificationMaterials](https://github.com/johnthebrit/CertificationMaterials) A collection of materials related to my certification videos - [==azurecharts.com/learning: Azure Learning Explorer==](https://azurecharts.com/learning) Discover published Azure learning modules, paths, videos, certifications, exams for services of your interest. - [thomasmaurer.ch: How To Learn Microsoft Azure in 2022](https://www.thomasmaurer.ch/2022/01/how-to-learn-microsoft-azure-in-2022/) @@ -96,6 +103,9 @@ ## Azure DevOps - [Azure DevOps 🌟](https://azure.microsoft.com/services/devops/) - [Azure DevOps Labs 🌟](https://www.azuredevopslabs.com/) +- [==docs.microsoft.com: Build applications with Azure DevOps (Learning Path)==](https://docs.microsoft.com/en-gb/learn/paths/build-applications-with-azure-devops/) +- [==docs.microsoft.com: Azure Pipelines documentation==](https://docs.microsoft.com/en-gb/azure/devops/pipelines/) Implement continuous integration and continuous delivery (CI/CD) for the app and platform of your choice. +- [microsoft/azure-pipelines-tasks](https://github.com/microsoft/azure-pipelines-tasks) - [info.acloud.guru: Deploying your first kubernetes app with Azure DevOps](https://info.acloud.guru/resources/deploy-kubernetes-app-with-azure-devops) - [info.acloud.guru: Azure DevOps VS GitHub: Comparing Microsoft's DevOps Twins](https://info.acloud.guru/resources/azure-devops-vs-github-comparing-microsofts-devops-twins) - [techcommunity.microsoft.com: Building a path to success for microservices and .NET Core - Project Tye + GitHub Actions](https://techcommunity.microsoft.com/t5/apps-on-azure/building-a-path-to-success-for-microservices-and-net-core/ba-p/1502270) @@ -116,9 +126,29 @@ - [kevinrchant.com: Introducing my Azure DevOps templates for Data Platform deployments](https://www.kevinrchant.com/2021/09/14/t-sql-tuesday-142-introducing-my-azure-devops-templates-for-data-platform-deployments/) - [dotnetcurry.com: Customization of Work Items in Azure DevOps and Azure DevOps Server 2020](https://www.dotnetcurry.com/devops/workitem-customize-azure-devops-server-2020) - [thomast1906/DevOps-The-Hard-Way-Azure 🌟](https://github.com/thomast1906/DevOps-The-Hard-Way-Azure) This repository contains free labs for setting up an entire workflow and DevOps environment from a real-world perspective in Azure +- [==thinksys.com: Azure DevOps Pipeline Complete Guide 2022==](https://www.thinksys.com/azure/azure-devops-pipeline-complete-guide/) +- [techcommunity.microsoft.com: CICD in Synapse SQL: How to deliver your database objects across multiple environments](https://techcommunity.microsoft.com/t5/azure-synapse-analytics-blog/cicd-in-synapse-sql-how-to-deliver-your-database-objects-across/ba-p/3267507) -## Azure AD and RBAC +### YAML Schema in DevOps Azure Pipelines +- [==DevOps Azure Pipelines: YAML Schema==](https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema/pipeline) + +### Azure Pipeline Tasks +- [==Microsoft/azure-pipelines-tasks==](https://github.com/Microsoft/azure-pipelines-tasks) This repo contains the tasks that are provided out-of-the-box with Azure Pipelines and Team Foundation Server. This provides open examples on how we write tasks which will help you write other tasks which can be uploaded to your account or server. + +## Azure AD and RBAC. Service Principal SPN - [itnext.io: Secure Azure Cosmos DB access by using Azure Managed Identities](https://itnext.io/secure-azure-cosmos-db-access-by-using-azure-managed-identities-55f9fdf48fda) Getting rid of passwords (or connection strings) while accessing Azure services and instead making use of Managed Identities is a way to increase the security of your workloads. Learn how to use Managed Identities in this article. +- [youtube.com: Azure Service Principal - SPN | Houssem Dellai](https://www.youtube.com/watch?v=-F9yzj4Kjeo&ab_channel=HoussemDellai) +- [youtube.com: How to create Service Principals in Azure Portal | Raaviblog](https://www.youtube.com/watch?v=Hg-YsUITnck&ab_channel=Raaviblog) + +### Register applications in Azure AD. Authenticate apps and services +- [==agrenpoint.com: Azure AD & Microsoft Graph permission scopes, with Azure CLI==](https://www.agrenpoint.com/azcli-adscope/) In this small post, we will look at a scenario where we want to register an Azure AD Application using specific scopes. When adding scopes for service principals using the Azure CLI we need to use the internal Ids. And one way would be to manually create one registration, get that app and then print out the scopes and then copy and paste. +- [==medium.com/medialesson: Create Azure Active Directory App Registration with Azure CLI==](https://medium.com/medialesson/create-azure-active-directory-app-registration-with-azure-cli-3241aa3824c5) +- [inkoop.io: How to get Azure API Credentials](https://www.inkoop.io/blog/how-to-get-azure-api-credentials/) How to create an application in Azure active directory and get subscription id, tenant id, client id, client secret and generate management certificates. You will need these keys to access Azure API. +- [docs.microsoft.com: Use the portal to create an Azure AD application and service principal that can access resource](https://docs.microsoft.com/en-us/azure/active-directory/develop/howto-create-service-principal-portal) +- [medium.com/medialesson: Assigning Azure built-in roles vs Azure AD built-in roles with Azure CLI](https://medium.com/medialesson/assigning-azure-built-in-roles-vs-azure-ad-built-in-roles-with-azure-cli-d1cbf56fcdbe) Depending on what action you are trying to perform in Azure you might require either to be member of a certain Azure role or a certain Azure AD role. For example **if we want an identity to create an app registration in Azure AD we need the role Application Administrator which is part of the Azure AD roles.** When we want to create a resource in a certain resource group we need the Contributor role which is part of the Azure AD and typically scoped to a either a subscription, a resource group or a distinct resource. +- [microsoftgraph/msgraph-sdk-powershell/samples: 9-Applications.ps1](https://github.com/microsoftgraph/msgraph-sdk-powershell/blob/dev/samples/9-Applications.ps1) +- [vcloud-lab.com: Get started and configure certificate-based authentication in Azure](http://vcloud-lab.com/entries/microsoft-azure/get-started-and-configure-with-certificate-based-authentication-in-azure) +- [vcloud-lab.com: Create an Azure App registrations in Azure Active Directory using PowerShell & AzureCLI](http://vcloud-lab.com/entries/microsoft-azure/create-an-azure-app-registrations-in-azure-active-directory-using-powershell-azurecli) ## Azure Arc. Azure’s Hybrid And Multi-Cloud Platform. GitOps with Azure Arc - [Azure Arc overview](https://docs.microsoft.com/en-us/azure/azure-arc/overview) Alternative to Google Anthos or RHACM @@ -168,6 +198,20 @@ - [techcommunity.microsoft.com: An example why PowerShell is so important!](https://techcommunity.microsoft.com/t5/windows-powershell/an-example-why-powershell-is-so-important/m-p/3041748) Create 500 training (test) accounts - [networkadm.in: Use Powershell to find windows services configured to run as another user](https://www.networkadm.in/use-powershell-to-find-windows-svcs-configured-to-run-as-another-user/) - [techcommunity.microsoft.com: Use PowerShell to retrieve all assigned Intune policies and applications per Azure AD group!](https://techcommunity.microsoft.com/t5/microsoft-intune/use-powershell-to-retrieve-all-assigned-intune-policies-and/m-p/3217498) +- [softzone.es: Por qué me interesa más usar PowerShell en lugar de CMD](https://www.softzone.es/noticias/windows/por-que-interesa-usar-powershell-lugar-cmd/) +- [==mssqltips.com: PowerShell for the DBA - If Else and Switch statements==](https://www.mssqltips.com/sqlservertip/7188/powershell-if-if-else-switch-examples/) +- [4sysops.com: Use PsExec and PowerShell together](https://4sysops.com/archives/use-psexec-and-powershell-together/) **How to run PowerShell commands remotely with PsExec** + +### Microsoft Graph PowerShell SDK +- [microsoftgraph/msgraph-sdk-powershell](https://github.com/microsoftgraph/msgraph-sdk-powershell) The Microsoft Graph PowerShell SDK is a collection of PowerShell modules that contain commands for calling Microsoft Graph service. +- [==docs.microsoft.com: Get started witth the Microsoft Graph Powershell SDK==](https://docs.microsoft.com/en-us/graph/powershell/get-started) Microsoft Graph Powershell replaces old powershell modules. It is also cross platform. +- [==microsoftgraph/msgraph-sdk-powershell: samples==](https://github.com/microsoftgraph/msgraph-sdk-powershell/tree/dev/samples) + - [Samples: how to create a corresponding service principal from an application](https://github.com/microsoftgraph/msgraph-sdk-powershell/blob/dev/samples/9-Applications.ps1) +- [docs.microsoft.com: Microsoft Graph migration](https://docs.microsoft.com/en-us/cli/azure/microsoft-graph-migration?tabs=powershell) Due to the deprecation of Azure Active Directory (Azure AD) Graph, the underlying Active Directory Graph API will be replaced by Microsoft Graph API in Azure CLI 2.37.0. + +### Powershell Crescendo +- [Microsoft.PowerShell.Crescendo](https://www.powershellgallery.com/packages/Microsoft.PowerShell.Crescendo) Module that improves user experience with native commands +- [visualstudiomagazine.com: PowerShell Crescendo Now Generally Available](https://visualstudiomagazine.com/articles/2022/03/10/powershell-crescendo-ga.aspx?m=1) ### Powershell repos - [Abhisheksinhacoder/collection-of-useful-scripts](https://github.com/Abhisheksinhacoder/collection-of-useful-scripts) @@ -241,6 +285,11 @@ - [Azure-Samples/azure-pipelines-remote-tasks](https://github.com/Azure-Samples/azure-pipelines-remote-tasks) - [Azure-Samples/jenkins-terraform-azure-example](https://github.com/Azure-Samples/jenkins-terraform-azure-example) - etc +- [github.com/azure-devops](https://github.com/azure-devops) +- [Azure Quickstart Templates 🌟](https://azure.microsoft.com/en-us/resources/templates/) Deploy Azure resources through the Azure Resource Manager with community contributed templates to get more done. Deploy, learn, fork and contribute back. + - https://github.com/Azure/azure-quickstart-templates +- [microsoft/azure-pipelines-yaml: Azure Pipelines YAML 🌟](https://github.com/microsoft/azure-pipelines-yaml/) YAML templates, samples, and community interaction for designing Azure Pipelines. + - [microsoft/azure-pipelines-yaml: maven.yml](https://github.com/microsoft/azure-pipelines-yaml/blob/master/templates/maven.yml) ## Office 365 - [o365reports.com: Office 365 Reports](https://o365reports.com) @@ -258,4 +307,11 @@
-
\ No newline at end of file +
+ +## Tweets +??? note "Click to expand!" + +
+ +
diff --git a/docs/chaos-engineering.md b/docs/chaos-engineering.md index 4075623e..dbf89b33 100644 --- a/docs/chaos-engineering.md +++ b/docs/chaos-engineering.md @@ -9,6 +9,7 @@ - [thenewstack.io: Chaos Engineering Is Not Just for Ops](https://thenewstack.io/chaos-engineering-is-not-just-for-ops/) - [==dzone: How to Pinpoint and Fix Distributed Problems Across Microservices==](https://dzone.com/articles/how-to-pinpoint-and-fix-distributed-problems-acros) While logical separation of APIs fosters parallel development of independent functions, complexity and interdependency becomes harder to manage. - [thenewstack.io: Why Chaos Engineering Isn’t Just for Operations](https://thenewstack.io/why-chaos-engineering-isnt-just-for-operations/) +- [medium.com/adidoescode: Chaos Engineering: How simulating adversity can help build eCommerce Resilience](https://medium.com/adidoescode/chaos-engineering-how-simulating-adversity-can-help-build-ecommerce-resilience-4a799c8912dc) ## Chaos Engineering for kubernetes/Openshift * [reddit: Help with Kube Monkey setup](https://www.reddit.com/r/openshift/comments/e1j5qzrbac_for_container_access_to_destroy_other/) @@ -42,6 +43,8 @@ * [thenewstack.io: Use Chaos Engineering to Strengthen Your Incident Response](https://thenewstack.io/use-chaos-engineering-to-strengthen-your-incident-response/) * [thenewstack.io: Operationalizing Chaos Engineering with GitOps](https://thenewstack.io/operationalizing-chaos-engineering-with-gitops/) * [medium.com/better-practices: Learn how your Kubernetes clusters respond to failure using Gremlin and Grafana](https://medium.com/better-practices/chaos-d3ef238ec328) Building resilient APIs with chaos engineering +* [Chaos engineering on Amazon EKS using AWS Fault Injection Simulator](https://aws.amazon.com/blogs/devops/chaos-engineering-on-amazon-eks-using-aws-fault-injection-simulator/) +* [aws.amazon.com: Chaos Engineering with LitmusChaos on Amazon EKS](https://aws.amazon.com/blogs/containers/chaos-engineering-with-litmuschaos-on-amazon-eks/) In this tutorial, you will create an Amazon EKS cluster, install LitmusChaos and deploy a demo application. Then, you will define chaos experiments to be run on it and observe the behaviour ## Chaos Engineering for serverless computing * [thenewstack.io: Breaking Serverless on Purpose with Chaos Engineering](https://thenewstack.io/breaking-serverless-on-purpose-with-chaos-engineering/) diff --git a/docs/cheatsheets.md b/docs/cheatsheets.md index 3613ec90..3e0428a2 100644 --- a/docs/cheatsheets.md +++ b/docs/cheatsheets.md @@ -38,6 +38,7 @@ - [Gradle Cheat Sheets](#gradle-cheat-sheets) - [Eclipse MicroProfile](#eclipse-microprofile) - [Jenkins Cheat Sheets](#jenkins-cheat-sheets) +- [Bitbucket Pipelines](#bitbucket-pipelines) - [JMeter Cheat Sheets](#jmeter-cheat-sheets) - [Quarkus Cheat Sheets](#quarkus-cheat-sheets) - [Markdown Cheat Sheets](#markdown-cheat-sheets) @@ -174,22 +175,22 @@ * `kubectl describe ingress/service` * `kubectl delete` * `kubectl --help` +* [betterprogramming.pub: Kubectl Commands All Beginners Must Know](https://betterprogramming.pub/kubectl-commands-all-beginners-must-know-e504349fcec9) Control Kubernetes Cluster like a Pro ## Kubernetes Kustomize Cheat Sheet - [itnext.io: Kubernetes Kustomize Cheat Sheet](https://itnext.io/kubernetes-kustomize-cheat-sheet-8e2d31b74d8f) ## Docker Cheat Sheets -- [docker.com: Docker Cheat Sheet 🌟](https://www.docker.com/sites/default/files/d8/2019-09/docker-cheat-sheet.pdf) -- [cheatsheetseries.owasp.org: Docker Security Cheat Sheet 🌟🌟](https://cheatsheetseries.owasp.org/cheatsheets/Docker_Security_Cheat_Sheet.html) -- [dockerlabs.collabnix.com: The Ultimate Docker Cheat Sheet 🌟](https://dockerlabs.collabnix.com/docker/cheatsheet/) -- [dockerlux.github.io: Docker Cheat Sheet](http://dockerlux.github.io/pdfcheat-sheet-v2.pdf) +- [docker.com: Docker Cheat Sheet](https://www.docker.com/wp-content/uploads/2022/03/docker-cheat-sheet.pdf) +- [dockerlux.github.io: Docker Cheat Sheet 🌟](https://dockerlux.github.io/pdf/cheat-sheet-v2.pdf) +- [==cheatsheetseries.owasp.org: Docker Security Cheat Sheet== 🌟🌟](https://cheatsheetseries.owasp.org/cheatsheets/Docker_Security_Cheat_Sheet.html) +- [==dockerlabs.collabnix.com: The Ultimate Docker Cheat Sheet== 🌟](https://dockerlabs.collabnix.com/docker/cheatsheet/) - [Dzone: Docker Command Cheatsheet](https://dzone.com/articles/docker-command-cheatsheet) If you're new to Docker or just want to have a list of handy commands, this cheatsheet will help you install, monitor, maintain, and clean up your images and processes. -- [developers.redhat.com: Containers Cheat Sheet](https://developers.redhatcom/cheat-sheets/containers/) -- [github.com: Docker cheat Sheet](https://github.com/wsargentdocker-cheat-sheet) -- [linuxhero.tk: Docker command cheat sheet](https://linuxhero.tkdockercommands/) -- [caylent.com: Docker Commands Cheat Sheet](https://caylent.com/docker-commands-cheat-sheet) +- [developers.redhat.com: Containers Cheat Sheet](https://developers.redhat.com/cheat-sheets/containers/) +- [github.com: Docker cheat Sheet](https://github.com/wsargent/docker-cheat-sheet) +- [caylent.com: Docker Commands Cheat Sheet](https://caylent.com/blog/docker/docker-commands-cheat-sheet) - [intellipaat.com: Docker Cheat Sheet 🌟](https://intellipaat.com/blog/tutorial/devops-tutorial/docker-cheat-sheet) - [2019, pdf](https://intellipaat.com/mediaFiles/2019/03/docker-cheat-sheet.pdf) -- [design.jboss.org/redhatdeveloper: docker CLI & Dockerfile Cheat Sheet 🌟](https://design.jboss.org/redhatdeveloper/marketing/docker_cheatsheet/cheatsheet/images/docker_cheatsheet_r3v2.pdf) +- [developers.redhat.com: Containers Cheat Sheet](https://developers.redhat.com/promotions/docker-cheatsheet) - [blog.gitguardian.com: Docker Security Best Practices & Cheat Sheet 🌟](https://blog.gitguardian.com/how-to-improve-your-docker-containers-security-cheat-sheet/) Containers are no security devices. That's why we've curated a set of easily actionable recommendations to improve your Docker containers security. Check out the one-page cheat sheet. - [myfuturehub.com: Useful commands of Docker](https://myfuturehub.com/useful-commands-of-docker/) - [dev.to: Docker Cheatsheet](https://dev.to/ibmdeveloper/docker-command-cheatsheet-1pe8) @@ -366,6 +367,9 @@ * [medium: Jenkins Cheat Sheet](https://medium.com/edureka/jenkins-cheat-sheet-e0f7e25558a3) * [cheatography.com: Jenkins Cheat Sheet](https://cheatography.com/funthomas424242/cheat-sheets/jenkins/) +## Bitbucket Pipelines +- [balajisblog.com: Cheatsheet for Bitbucket Pipelines](https://balajisblog.com/cheatsheet-for-bitbucket-pipelines/) + ## JMeter Cheat Sheets - [Dzone Refcard: Getting Started with Apache JMeter](https://dzone.com/refcardz/getting-started-with-apache-jmeter?chapter=1) - [Groovy Templates Cheat Sheet for JMeter](https://dzone.com/articles/the-groovy-templates-cheat-sheet-for-jmeter) Need help with your Groovy templates? Check out this cheat sheet to help you get started with scripting in Apache JMeter. @@ -388,6 +392,7 @@ ## Kafka - [codingharbour.com: kafkacat cheatsheet](https://codingharbour.com/kafkacat-cheatsheet/) Kafkacat is a versatile tool for producing and consuming messages, as well as exploring the cluster and topic metadata. Download the 1-page cheatsheet to get the most out of this awesome CLI tool. +- [betterprogramming.pub: 15 Kafka CLI Commands For Everyday Programming](https://betterprogramming.pub/kafka-cli-commands-1a135a4ae1bd) Demonstrating the use of the most commonly used Kafka Command Line Interface Commands ## Machine Learning - [Machine Learning Glossary](https://developers.google.com/machine-learning/glossary) @@ -398,6 +403,7 @@ ## TypeScript - [React+TypeScript Cheatsheets](https://github.com/typescript-cheatsheets/react) - [docs.microsoft.com: Build JavaScript applications using TypeScript](https://docs.microsoft.com/en-us/learn/paths/build-javascript-applications-typescript/) +- [levelup.gitconnected.com: NestJS: Microservices with gRPC, API Gateway, and Authentication — Part 1/2](https://levelup.gitconnected.com/nestjs-microservices-with-grpc-api-gateway-and-authentication-part-1-2-650009c03686) Step-by-Step Guide: NestJS Applications with TypeScript, gRPC, API Gateway, Authentication, and Validation. ## Jupyter - [opensource.com: JupyterLab cheat sheet](https://opensource.com/downloads/jupyterlab-cheat-sheet) @@ -409,6 +415,7 @@ - [github.com/ABZ-Aaron: SQL Cheat Sheet 🌟](https://github.com/ABZ-Aaron/CheatSheets/blob/main/SQL.pdf) - [github.com/enochtangg/quick-SQL-cheatsheet: Quick SQL Cheatsheet 🌟](https://github.com/enochtangg/quick-SQL-cheatsheet) A quick reminder of all SQL queries and examples on how to use them. - [hackr.io: SQL Commands Tutorial: DDL, DML, TCL and DQL Commands](https://hackr.io/blog/sql-commands) +- [==github.com/swapnakpanda: SQL_CheatSheet.png==](https://github.com/swapnakpanda/Infographics/blob/main/Cheat%20Sheet/Database/SQL_CheatSheet.png) ## Postgres - [postgrescheatsheet.com](https://postgrescheatsheet.com/) @@ -425,6 +432,7 @@ - https://blog.finxter.com/python-cheat-sheets - https://www.pythoncheatsheet.org - [python.plainenglish.io: The Ultimate Python Cheat Sheet | Muhammad Umair](https://python.plainenglish.io/ultimate-python-cheat-sheet-f2930e08669c) +- [github.com/ekramasif: Basic Machine Learning - Python Cheatsheet](https://github.com/ekramasif/Basic-Machine-Learning/blob/main/Extraa/PythonCheatSheet.ipynb) ## Go - [devhints.io/go: Go cheatsheet](https://devhints.io/go) diff --git a/docs/cicd.md b/docs/cicd.md index de894929..ec72b37a 100644 --- a/docs/cicd.md +++ b/docs/cicd.md @@ -97,6 +97,7 @@ Here are some important things to consider while building a CI/CD pipeline: * [thenewstack.io: 4 Best Practices to Drive Successful Adoption of CI/CD ](https://thenewstack.io/four-best-practices-to-drive-successful-adoption-of-ci-cd/) * [about.gitlab.com: How to keep up with CI/CD best practices](https://about.gitlab.com/blog/2022/02/03/how-to-keep-up-with-ci-cd-best-practices/) * [harness.io: Modern Software Delivery Best Practices & Software Delivery Management](https://harness.io/blog/software-delivery-best-practices/) +* [linkedin pulse: Enabling CI/CD to Boost DevOps | Pavan Belagatti](https://www.linkedin.com/pulse/enabling-cicd-boost-devops-pavan-belagatti/) ## Observability - [==betanews.com: Overcoming observability challenges in the CI/CD Pipeline==](https://betanews.com/2022/01/26/overcoming-observability-challenges/) diff --git a/docs/container-managers.md b/docs/container-managers.md index 1ebce43c..5a7d5155 100644 --- a/docs/container-managers.md +++ b/docs/container-managers.md @@ -100,6 +100,7 @@ - [redhat.com: 5 Podman features to try now](https://www.redhat.com/sysadmin/podman-features-1) Improve how you use containers with these new Podman features: --latest, --replace, --all, --ignore, and --tz. - Here's how I stop all containers before: 🐳 `docker stop $(docker ps -aq)` - Here's how I stop/remove all containers with podman: `podman stop -a; podman rm -a` +- [medium.com/@raghavendraguttur: Podman Containers — Beginner’s Guide](https://medium.com/@raghavendraguttur/podman-containers-beginners-guide-830b931e66f4) In this article, you will learn about Podman — an open-source tool for managing containers, images, volumes, and pods (group of containers). You will also compare it to buildah and skopeo. #### Containers In High Security Environments with Podman - [Build trusted pipelines/Guards with Podman containers](https://www.redhat.com/en/blog/using-container-technology-make-trusted-pipeline) Container technology makes develoment easier/cheaper & much more secure. SELinux,SECCOMP,Namespaces,Dropped Capabilities. diff --git a/docs/crossplane.md b/docs/crossplane.md index 6e8a7cb8..09eec133 100644 --- a/docs/crossplane.md +++ b/docs/crossplane.md @@ -12,6 +12,7 @@ - [upbound/platform-ref-multi-k8s: Upbound's reference platform for multi-cloud Kubernetes with Crossplane](https://github.com/upbound/platform-ref-multi-k8s) ==Use crossplane and provision new EKS/AKS/GKE clusters declaratively and have them continuously managed for you.== - [codefresh.io: Using GitOps for Infrastructure and Applications With Crossplane and Argo CD](https://codefresh.io/about-gitops/gitops-for-infrastructure-and-applications/) - [itnext.io: GitOpsify Cloud Infrastructure with Crossplane and Flux](https://itnext.io/gitopsify-cloud-infrastructure-with-crossplane-and-flux-d605d3043452) +- [itnext.io: Why do developers find Kubernetes so hard?](https://itnext.io/why-do-developers-find-kubernetes-hard-6532e8d6ce7f) And how can Crossplane Kubernetes Provider help ## Demo. YAML Your Cloud. Managing Cloud-Hosted Resources from Kubernetes - Very cool talk from @askmeegs and @shabirmean with an insightful look into the tools for managing cloud resources from Kubernetes. Great demonstration of @crossplane_io spanning your control plane across multiple clouds. diff --git a/docs/crunchydata.md b/docs/crunchydata.md index 7fc9ae82..5cf4c4e9 100644 --- a/docs/crunchydata.md +++ b/docs/crunchydata.md @@ -85,6 +85,8 @@ * [blog.crunchydata.com: Your Guide to Connection Management in Postgres 🌟](https://blog.crunchydata.com/blog/your-guide-to-connection-management-in-postgres) * [==blog.crunchydata.com: PostgreSQL 14 on Kubernetes (with examples!)==](https://blog.crunchydata.com/blog/postgresql-14-on-kubernetes) * [blog.crunchydata.com: Kubernetes + Postgres Cluster From Scratch on Rocky 8](https://blog.crunchydata.com/blog/kube-cluster-from-scratch-on-rocky-8) +* [blog.crunchydata.com: Kubernetes + Postgres Cluster From Scratch on Rocky 8](https://blog.crunchydata.com/blog/kube-cluster-from-scratch-on-rocky-8) +* [blog.crunchydata.com: Announcing Postgres Container Apps: Easy Deploy Postgres Apps](https://blog.crunchydata.com/blog/announcing-postgres-container-apps-easy-deploy-postgres-apps) With Postgres Container Apps you can, from directly inside Postgres with a simple function call, spin up a container that is running right alongside your Postgres database. ## Crunchy Data Developer Portal - [Announcing the Crunchy Data Developer Portal](https://info.crunchydata.com/blog/announcing-the-crunchy-data-developer-portal) diff --git a/docs/databases.md b/docs/databases.md index 79edd380..44c27d12 100644 --- a/docs/databases.md +++ b/docs/databases.md @@ -3,7 +3,7 @@ - [How to choose the right database for your service](#how-to-choose-the-right-database-for-your-service) - [Database Load Balancer](#database-load-balancer) - [SQL](#sql) - - [SQL Interview Questions](#sql-interview-questions) + - [Alternatives to SQL](#alternatives-to-sql) - [Stored Procedures](#stored-procedures) - [Performance](#performance) - [Stateful and Stateless Applications](#stateful-and-stateless-applications) @@ -73,6 +73,7 @@ * [intellipaat.com: Difference between DBMS and RDBMS](https://intellipaat.com/blog/dbms-vs-rdbms-difference/) DBMS and RDBMS sound very similar, but can be confusing to those who are completely new to the database domain. Both of them are based on the technology of storing data. However, we will dive into this DBMS vs RDBMS blog to learn the difference between them. * [==betterprogramming.pub: Multi-Tenancy Support With Spring Boot, Liquibase, and PostgreSQL==](https://betterprogramming.pub/multi-tenancy-support-with-spring-boot-liquibase-and-postgresql-d41942dc0639) A step-by-step guide on how to implement multi-tenancy. * [==thenewstack.io: How Kubernetes and Database Operators Drive the Data Revolution==](https://thenewstack.io/how-kubernetes-and-database-operators-drive-the-data-revolution/) +* [thenewstack.io: How Radical API Design Changed the Way We Access Databases](https://thenewstack.io/how-radical-api-design-changed-the-way-we-access-databases/) ## How to choose the right database for your service * [medium.com: How to choose the right database for your service 🌟](https://medium.com/wix-engineering/how-to-choose-the-right-database-for-your-service-97b1670c5632) @@ -90,9 +91,10 @@ - [blog.jooq.org](https://blog.jooq.org) JAVA, SQL AND JOOQ. Best Practices and Lessons Learned from Writing Awesome Java and SQL Code. Get some hands-on insight on what's behind developing jOOQ. - [vladmihalcea.com: SQL LEFT JOIN – A Beginner’s Guide](https://vladmihalcea.com/sql-left-join/) - [vladmihalcea.com: SQL JOIN USING – A Beginner’s Guide](https://vladmihalcea.com/sql-join-using/) +- [gcreddy.com: SQL Step by Step Videos](https://www.gcreddy.com/2021/05/sql-step-by-step-videos.html) -### SQL Interview Questions -- [gcreddy.com: SQL Interview Questions and Answers](https://www.gcreddy.com/2022/02/sql-interview-questions-and-answers.html) +### Alternatives to SQL +- [infoworld.com: Beyond SQL: 8 new languages for data querying](https://www.infoworld.com/article/3654909/beyond-sql-8-new-languages-for-data-querying.html) SQL has dominated data querying for decades. Newer query languages offer more elegance, simplicity, and flexibility for modern use cases. ## Stored Procedures - [blog.yugabyte.com: Are Stored Procedures and Triggers Anti-Patterns in the Cloud Native World?](https://blog.yugabyte.com/are-stored-procedures-and-triggers-anti-patterns-in-the-cloud-native-world/) @@ -216,6 +218,7 @@ - [==blog.crunchydata.com: Postgres Indexes for Newbies==](https://blog.crunchydata.com/blog/postgres-indexes-for-newbies) - [dev.to: REST Data Service on YugabyteDB / PostgreSQL](https://dev.to/yugabyte/rest-data-service-on-yugabytedb-postgresql-5f2h) - [==orgrim/pg_back: Simple backup tool for PostgreSQL==](https://github.com/orgrim/pg_back) pg_back dumps databases from PostgreSQL +- [sqlrevisited.blogspot.com: MySQL vs PostgreSQL? Pros and Cons](https://sqlrevisited.blogspot.com/2022/03/mysql-vs-postgresql-pros-and-cons.html) ## Percona MySQL - [Percona.com: Percona Kubernetes Operator for Percona XtraDB Cluster](https://www.percona.com/doc/kubernetes-operator-for-pxc/index.html) diff --git a/docs/demos.md b/docs/demos.md index e9e870b4..6b238c5e 100644 --- a/docs/demos.md +++ b/docs/demos.md @@ -431,6 +431,7 @@ - [wkrzywiec.medium.com: How to deploy application on Kubernetes with Helm](https://wkrzywiec.medium.com/how-to-deploy-application-on-kubernetes-with-helm-39f545ad33b8) In this blog post I present step-by-step how to deploy multiple applications on Kubernetes cluster using Helm. - [dzone.com: Deploy a Java application with JBoss EAP using Helm, Part 1](https://dzone.com/articles/deploy-a-java-application-using-helm-part-1) - [dzone.com: Deploy a Java application with JBoss EAP using Helm, Part 2](https://dzone.com/articles/deploy-a-java-application-using-helm-part-2) +- [josephrodriguezg.medium.com: Deploying a Spring Boot microservice in Kubernetes using Helm charts](https://josephrodriguezg.medium.com/deploying-a-spring-boot-application-in-kubernetes-using-helm-charts-5c04c2d46e16) ### Writing Kubernetes Operators - [developers.redhat.com: ‘Hello, World’ tutorial with Kubernetes Operators](https://developers.redhat.com/blog/2020/08/21/hello-world-tutorial-with-kubernetes-operators/) diff --git a/docs/devel-sites.md b/docs/devel-sites.md index 1866da6e..51d6c84d 100644 --- a/docs/devel-sites.md +++ b/docs/devel-sites.md @@ -2,6 +2,9 @@ - [Introduction](#introduction) - [Design Patterns](#design-patterns) - [Developer Tools](#developer-tools) + - [Firebase](#firebase) + - [Supabase Studio. An alternative to Firebase](#supabase-studio-an-alternative-to-firebase) + - [Ballerina](#ballerina) - [Red Hat Software Collections and Red Hat Developer Toolset](#red-hat-software-collections-and-red-hat-developer-toolset) - [AI Programming](#ai-programming) - [No code tools](#no-code-tools) @@ -32,6 +35,9 @@ - [baeldung.com: Concurrency vs Parallelism](https://www.baeldung.com/cs/concurrency-vs-parallelism) - [readwrite.com: Tech for Programmers in 2022: The Good, The Bad, and The Ugly](https://readwrite.com/tech-for-programmers-in-2022-the-good-the-bad-and-the-ugly/) - [dev.to: 19 Valuable GitHub Repositories for Beginner Developers 📚✨](https://dev.to/madza/19-valuable-github-repositories-for-beginner-developers-3i18) +- [freecodecamp.org: Frontend VS Backend – What's the Difference?](https://www.freecodecamp.org/news/frontend-vs-backend-whats-the-difference/) +- [betterprogramming.pub: How to Refactor a Codebase?](https://betterprogramming.pub/how-to-refactor-a-codebase-982772695078) +- [==freecodecamp.org: What is a Full Stack Developer? 2022 Full Stack Engineer Guide==](https://www.freecodecamp.org/news/what-is-a-full-stack-developer-full-stack-engineer-guide/) ## Design Patterns - [==refactoring.guru: Design Patterns==](https://refactoring.guru/design-patterns/) @@ -41,10 +47,22 @@ - etc - [medium: 7 Best Java Design Pattern Books for Beginners and Experienced Programmers](https://medium.com/javarevisited/7-best-books-to-learn-design-patterns-for-java-programmers-5627b93eefdb) - [shadman-jamil.medium.com: Most Useful Software Architecture Patterns](https://shadman-jamil.medium.com/most-useful-software-architecture-patterns-68e171405292) +- [medium.com/@victor.ronin: Design your code for readability vs. writability](https://medium.com/@victor.ronin/design-your-code-for-readability-vs-writability-d42f04cc6f4d) +- [betterprogramming.pub: How SOLID Remains Solid — Software Principles vs. Patterns](https://betterprogramming.pub/how-solid-remains-solid-software-principles-vs-patterns-c77c623a628b) ## Developer Tools - [dev.to: 15 Developer Tools to Make You Super Productive](https://dev.to/sourcegraph/15-developer-tools-to-make-you-super-productive-2g0a) +### Firebase +- [==firebase.google.com==](https://firebase.google.com) + +### Supabase Studio. An alternative to Firebase +- [==supabase.com==](https://supabase.com/) The Open Source Firebase Alternative. Create a backend in less than 2 minutes. Start your project with a Postgres Database, Authentication, instant APIs, Realtime subscriptions and Storage. +- [blog.logrocket.com: Working with Supabase Studio](https://blog.logrocket.com/working-supabase-studio/) + +### Ballerina +- [infoq.com: Ballerina for Full-Stack Developers: A Guide to Creating Backend APIs](https://www.infoq.com/articles/ballerina-fullstack-rest-api/) + ### Red Hat Software Collections and Red Hat Developer Toolset - [==softwarecollections.org==](https://www.softwarecollections.org) Software Collections give you the power to build, install, and use multiple versions of software on the same system, without affecting system-wide installed packages. - [developers.redhat.com: ==Red Hat Software Collections==](https://developers.redhat.com/products/softwarecollections/overview) @@ -85,5 +103,9 @@

Just learned about the groupBy feature in #javascript. (currently stage 3)

This sure looks handy! pic.twitter.com/msVSNistuN

— Cory House (@housecor) December 28, 2021

This #OpenSource project needs some contribution pic.twitter.com/TJZ0KqBSBK

— Amelia Warner (@facetimeJS) February 14, 2022
+ +

You are never too senior to write code. I only laugh at people who believe they are too good to write any code as a software engineer.

— Jaana Dogan ヤナ ドガン (@rakyll) March 24, 2022
+ +

🧵 The Ultimate TypeScript Thread 🧵

Here's everything I've learned from leading TS dev teams and working on XState's core team.

My goal is to turn you into a TypeScript wizard.

And yes, this thread is EVERGREEN - I'll add at least 3 more tips a week 🚀

Let's get started.

— Matt Pocock (@mpocock1) April 1, 2022
diff --git a/docs/devops.md b/docs/devops.md index 59d8cf7d..a87a4c5c 100644 --- a/docs/devops.md +++ b/docs/devops.md @@ -7,7 +7,6 @@ - [Spanish](#spanish) - [Automation anxiety](#automation-anxiety) - [State of DevOps. Google's DevOps Research and Assessment (DORA)](#state-of-devops-googles-devops-research-and-assessment-dora) -- [Interview Questions](#interview-questions) - [AIOps](#aiops) - [Configuration Drift](#configuration-drift) - [Drift Detection Tools](#drift-detection-tools) @@ -46,6 +45,8 @@ - [enterprisersproject.com: DevOps: 3 skills needed to support its future in the enterprise](https://enterprisersproject.com/article/2021/10/devops-future-operating-model-it) If you're aiming for continuous improvement with your DevOps effort, prioritize these skills. They're critical to helping teams conquer cultural and technology challenges - [devblogs.microsoft.com: DevOps Dojo – Culture and Mindset](https://devblogs.microsoft.com/devops/devops-dojo-culture-and-mindset/) - [devops.com: The DevOps Journey: Continuous Mindset Starts With Cultural Change](https://devops.com/the-evolving-devops-journey-continuous-mindset-starts-with-cultural-change/) +- [==dzone.com/trendreports/devops-3: DevOps==](https://dzone.com/trendreports/devops-3) CI/CD and Application Release Orchestration. With the need for companies to deliver capabilities faster, it has become increasingly clear that DevOps is a practice that many enterprises must adopt (if they haven’t already). A strong CI/CD pipeline leads to a smoother release process, and a smoother release process decreases time to market. In DZone’s "DevOps: CI/CD and Application Release Orchestration" Trend Report, we provide insight into how CI/CD has revolutionized automated testing, offer advice on why an SRE is important to CI/CD, explore the differences between managed and self-hosted CI/CD, and much more. The goal of this Trend Report is to offer guidance to our global audience of DevOps Engineers, Automation Architects, and all those in between on how to best adopt DevOps practices to help scale the productivity of their teams. +- [thenewstack.io: Automation Is No Silver Bullet: 3 Keys for Scaling Success](https://thenewstack.io/automation-is-no-silver-bullet-3-keys-for-scaling-success/) ## Automation Glossary - [Red Hat automation glossary 🌟](https://www.redhat.com/en/blog/red-hat-automation-glossary) @@ -88,15 +89,6 @@ - [cloud.google.com: State of DevOps 2021 🌟](https://cloud.google.com/blog/products/devops-sre/announcing-dora-2021-accelerate-state-of-devops-report) 2021 Accelerate State of DevOps report addresses burnout, team performance - [itprotoday.com: Google DORA Report Details Best Practices to Speed DevOps](https://www.itprotoday.com/devops/google-dora-report-details-best-practices-speed-devops) The 2021 Accelerate State of DevOps report from Google Cloud’s DORA group provides insight into the best practices of elite development teams. [devops.com: summary 1](https://devops.com/google-dora-report-shows-modest-devops-gains/) - [dzone: summary 2](https://dzone.com/articles/googles-state-of-devops-2021-report-what-sres-need) -## Interview Questions -- [automationreinvented.blogspot.com: Top 11 kubernetes interview questions for SDET/DevOps SET-02? Kubernetes deployment commands](https://automationreinvented.blogspot.com/2020/10/top-11-kubernetes-interview-questions.html) -- [denic.hashnode.dev: Resources to crush the technical interview](https://denic.hashnode.dev/resources-to-crush-the-technical-interview) -- [learnsteps.com: DevOps Interview Questions: How will you scale your current CI-CD pipeline](https://www.learnsteps.com/devops-interview-questions-how-will-you-scale-your-current-ci-cd-pipeline/) -- [intellipaat.com: Top DevOps Interview Questions – Most Asked](https://intellipaat.com/blog/interview-question/devops-interview-questions/) -- [vitalflux.com: 15 Tricky DevOps Architect Interview Questions & Answers](https://vitalflux.com/devops-architect-interview-questions) -- [devsecops.co.in: DevOps Interview Questions and Answers](https://devsecops.co.in/2021/05/20/devops-interview-questions/) -- [learnsteps.com: DevOps Interview Questions: What do you know about proc filesystem in Linux.](https://www.learnsteps.com/devops-interview-questions-what-do-you-know-about-proc-filesystem-in-linux/) - ## AIOps - [apmdigest.com: What Can AIOps Do For IT Ops? - Part 1](https://www.apmdigest.com/aiops-itops-1) - [apmdigest.com: What Can AIOps Do For IT Ops? - Part 2](https://www.apmdigest.com/aiops-itops-2) @@ -179,7 +171,6 @@ * [devopscurry.com: DevOps 2021: A Complete Guide To Transition From a SysAdmin to DevOps Role](https://devopscurry.com/devops-2021-a-complete-guide-to-transition-from-a-sysadmin-to-devops-role/) * [infoq.com: Puppet Releases Its 2020 State of DevOps Report 🌟](https://www.infoq.com/news/2020/11/2020-devops-report/) * [informationweek.com: What's Holding DevOps Back?](https://www.informationweek.com/devops/whats-holding-devops-back/a/d-id/1339540) DevOps teams are at different stages of maturity. However, there are some common challenges they face along the way. -* [learnsteps.com: DevOps Interview Questions: How will you design your cloud VPC and subnets?](https://www.learnsteps.com/devops-interview-questions-how-will-you-design-your-cloud-vpc-and-subnets/) * [opensource.com: Create a DevOps culture with open source principles](https://opensource.com/article/20/12/remote-devops) Now that more workforces are remote, DevOps teams can maximize their collaboration and productivity by following open source principles. * [github.blog: How to make DevOps your competitive advantage](https://github.blog/2020-12-18-how-to-make-devops-your-competitive-advantage/) * [opensource.com: 3 critical DevOps concepts we explored in 2020 🌟](https://opensource.com/article/20/12/devops) In 2020, Opensource.com's top DevOps articles focused on testing, software methodologies, and the most important part: the people. @@ -258,6 +249,8 @@ * [==freecodecamp.org: DevOps Engineering Course for Beginners==](https://www.freecodecamp.org/news/devops-engineering-course-for-beginners/) * [bmc.com: DevOps Metrics for Optimizing CI/CD Pipelines](https://www.bmc.com/blogs/devops-ci-cd-metrics/) * [==simform.com: How to Implement DevOps for Enterprise?==](https://www.simform.com/blog/devops-for-enterprise/) This blog focuses on how to implement DevOps for enterprise-level organizations. +* [calcalistech.com: “DevOps is a culture, it's not a job description”](https://www.calcalistech.com/ctechnews/article/s1mlpunf9) +* [reviewnprep.com: DevOps Basics](https://reviewnprep.com/blog/devops-basics/)
@@ -426,6 +419,12 @@ Resolve your software incidents 10x faster + +
+
+ +
+ diff --git a/docs/devsecops.md b/docs/devsecops.md index 41b8c49e..dea3a446 100644 --- a/docs/devsecops.md +++ b/docs/devsecops.md @@ -39,6 +39,7 @@ - [CyberArk and Ansible](#cyberark-and-ansible) - [CyberArk Conjur](#cyberark-conjur) - [SOPS for Kubernetes](#sops-for-kubernetes) + - [AKS Secrets](#aks-secrets) - [Kapitan](#kapitan) - [Alternatives with Kubernetes External Secrets](#alternatives-with-kubernetes-external-secrets) - [Serverless Security Best Practices](#serverless-security-best-practices) @@ -165,6 +166,7 @@ - [==bridgecrew.io: 6 key Kubernetes DevSecOps principles: People, processes, technology==](https://bridgecrew.io/blog/kubernetes-devsecops-principles/) - [==research.nccgroup.com: 10 real-world stories of how we’ve compromised CI/CD pipelines==](https://research.nccgroup.com/2022/01/13/10-real-world-stories-of-how-weve-compromised-ci-cd-pipelines/) - [thenewstack.io: SecOps in a Post-COVID World: 3 Security Trends to Watch](https://thenewstack.io/secops-in-a-post-covid-world-3-security-trends-to-watch/) +- [==medium.com/microservices-learning: How to implement security for microservices==](https://medium.com/microservices-learning/how-to-implement-security-for-microservices-89b140d3e555) ## Kubernetes Security Compliance Frameworks - [==armosec.io: Kubernetes Security Compliance Frameworks== 🌟](https://www.armosec.io/blog/kubernetes-security-frameworks-and-guidance/) @@ -364,6 +366,7 @@ - [medium: AWS Secret Manager: Protect sensitive information and functionality 🌟](https://medium.com/avmconsulting-blog/aws-secret-manager-protect-sensitive-information-and-functionality-f520e15293f4) Protect Your Secrets in ApplicationsSecrets are frequently used to protect sensitive information and functionality. - [blog.opstree.com: AWS Secret Manager](https://blog.opstree.com/2021/11/16/aws-secret-manager/) - [aws/secrets-store-csi-driver-provider-aws: AWS Secrets Manager and Config Provider for Secret Store CSI Driver](https://github.com/aws/secrets-store-csi-driver-provider-aws) AWS offers two services to manage secrets and parameters conveniently in your code. [AWS Secrets Manager](https://aws.amazon.com/secrets-manager/) allows you to easily rotate, manage, and retrieve database credentials, API keys, certificates, and other secrets throughout their lifecycle. [AWS Systems Manager Parameter Store](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html) provides hierarchical storage for configuration data. The AWS provider for the [Secrets Store CSI Driver](https://github.com/kubernetes-sigs/secrets-store-csi-driver) allows you to make secrets stored in Secrets Manager and parameters stored in Parameter Store appear as files mounted in Kubernetes pods. +- [medium.com/@ishana98dadhich: Integrating AWS Secret Manager with EKS and use Secrets inside the Pods: Part-1](https://medium.com/@ishana98dadhich/integrating-aws-secret-manager-with-eks-and-use-secrets-inside-the-pods-part-1-1938b0c3c2fb) This blog provides you enough details on how you can use secrets (managed by AWS Secrets Manager) inside AWS EKS pods. ### Password Hashing - [pyca/bcrypt](https://github.com/pyca/bcrypt) Modern(-ish) password hashing for your software and your servers. @@ -414,6 +417,7 @@ - [piotrminkowski.com: Vault on Kubernetes with Spring Cloud](https://piotrminkowski.com/2021/12/30/vault-on-kubernetes-with-spring-cloud/) - [hashicorp.com: Integrating Azure AD Identity with HashiCorp Vault — Part 1: Azure Application Auth via OIDC](https://www.hashicorp.com/blog/integrating-azure-ad-identity-hashicorp-vault-part-1-application-auth-oidc) - [==medium.com/@pratyush.mathur: Secrets Management Using Vault in K8S==](https://medium.com/@pratyush.mathur/secrets-management-using-vault-in-k8s-272462c37fd8) +- [hashicorp.com: Kubernetes Vault Integration via Sidecar Agent Injector vs. CSI Provider](https://www.hashicorp.com/blog/kubernetes-vault-integration-via-sidecar-agent-injector-vs-csi-provider) In this post, you will explore the different methods of integrating HashiCorp Vault with Kubernetes and learn how to choose the best solution for your use case. #### HashiCorp Vault Agent - [Vault Agent 🌟](https://www.vaultproject.io/docs/agent) @@ -428,6 +432,7 @@ - [Azure Key Vault to Kubernetes](https://github.com/SparebankenVest/azure-key-vault-to-kubernetes) Azure Key Vault to Kubernetes (akv2k8s for short) makes it simple and secure to use Azure Key Vault secrets, keys and certificates in Kubernetes. - [Neoteroi/essentials-configuration-keyvault](https://github.com/Neoteroi/essentials-configuration-keyvault) Azure Key Vault source for essentials-configuration - [==techcommunity.microsoft.com: In preview: Azure Key Vault secrets provider extension for Arc enabled Kubernetes clusters==](https://techcommunity.microsoft.com/t5/azure-arc-blog/in-preview-azure-key-vault-secrets-provider-extension-for-arc/ba-p/3002160) +- [vcloud-lab.com: Create Azure Key Vault Certificates on Azure Portal and Powershell](http://vcloud-lab.com/entries/microsoft-azure/-create-azure-key-vault-certificates-on-azure-portal-and-powershell) ### CyberArk and Ansible - [ansible.com: Simplifying secrets management with CyberArk and Red Hat Ansible Automation Platform](https://www.ansible.com/blog/simplifying-secrets-management-with-cyberark-and-red-hat-ansible-automation-platform) @@ -440,6 +445,9 @@ ### SOPS for Kubernetes - [dev.to: Manage your secrets in Git with SOPS for Kubernetes 🌟](https://dev.to/stack-labs/manage-your-secrets-in-git-with-sops-for-kubernetes-57me) +### AKS Secrets +- [==mehighlow.medium.com: Hardened-AKS/Secrets==](https://mehighlow.medium.com/hardened-aks-secrets-82351c43eac4) Commonly, an application requires access to data and, usually, such access must be restricted. So, you need to provide your pod/deployment/replicaSet/DaemonSet with secrets. Learn how you can do so in AKS + ### Kapitan - [Kapitan: Generic templated configuration management for Kubernetes, Terraform and other things](https://kapitan.dev) - [medium: Declarative secret management for GitOps with Kapitan](https://medium.com/kapitan-blog/declarative-secret-management-for-gitops-with-kapitan-b3c596eab088) @@ -507,6 +515,7 @@ - [medium: Who’s at the Helm?](https://dlorenc.medium.com/whos-at-the-helm-1101c37bf0f1) Or, how to deploy 25+ CVEs to prod in one command! * [itnext.io: Helm 3 — Secrets management, an alternative approach 🌟](https://itnext.io/helm-3-secrets-management-4f23041f05c3) * [==itnext.io: Manage Auto-generated Secrets In Your Helm Charts== 🌟](https://itnext.io/manage-auto-generated-secrets-in-your-helm-charts-5aee48ba6918) +* [dev-vibe.medium.com: Encrypt Helm sensitive data](https://dev-vibe.medium.com/encrypt-helm-sensitive-data-9d7622e41d00) A guide on how to stay safe when pushing helm values files containing Your passwords and other sensitive data to the version control tool. ## Password Recovery - [hashcat](https://hashcat.net/hashcat/) @@ -578,6 +587,7 @@ - [bridgecrew.io: Tutorial: Incorporate IaC Security in your CI/CD pipeline with Bridgecrew, Jenkins, and GitHub](https://bridgecrew.io/blog/tutorial-incorporate-iac-security-in-your-ci-cd-pipeline-with-bridgecrew-jenkins-and-github) - [curiefense/curiefense](https://github.com/curiefense/curiefense) Curiefense extends Envoy proxy to defend against a variety of threats, including SQL and command injection, cross site scripting (XSS), account takeovers (ATOs) and more - [==socket.dev: Introducing Socket==](https://socket.dev/blog/introducing-socket) Socket's mission is to make open source safer. A platform that protects your most critical apps from software supply chain attacks. +- [itbusinessedge.com: Okta vs. Azure AD: IAM Tool Comparison](https://www.itbusinessedge.com/security/okta-vs-azure-ad/) ## Videos ??? note "Click to expand!" diff --git a/docs/docker.md b/docs/docker.md index fd10d3a4..243c3af2 100644 --- a/docs/docker.md +++ b/docs/docker.md @@ -132,6 +132,10 @@ * [acloudguru.com: Docker COPY vs ADD: What’s the difference?](https://acloudguru.com/blog/engineering/docker-copy-vs-add-whats-the-difference) * [thenewstack.io: How to Run Docker in Rootless Mode](https://thenewstack.io/how-to-run-docker-in-rootless-mode/) * [mjovanc.com: Get started with Docker and Docker Compose](https://mjovanc.com/get-started-with-docker-and-docker-compose-cddcb5a3f3b9) +* [dev.to: Docker: Explained to a 5 year old. 👶🏻](https://dev.to/dhravya/docker-explained-to-a-5-year-old-2cbg) +* [nishnit007.medium.com: A Journey from Dockerfile to Application Deployment on Kubernetes For Beginners](https://nishnit007.medium.com/a-journey-from-dockerfile-to-application-deployment-on-kubernetes-for-beginners-fea1eb0f3581) +* [==stevelasker.blog: Docker Tagging: Best practices for tagging and versioning docker images==](https://stevelasker.blog/2018/03/01/docker-tagging-best-practices-for-tagging-and-versioning-docker-images/) +* [freecodecamp.org: Docker Cache – How to Do a Clean Image Rebuild and Clear Docker's Cache](https://www.freecodecamp.org/news/docker-cache-tutorial/) ## Docker CLI * [docs.docker.com: docker buildx imagetools](https://docs.docker.com/engine/reference/commandline/buildx_imagetools/) Commands to work on images in registry @@ -164,6 +168,7 @@ - [cheatsheetseries.owasp.org: Docker Security Cheat Sheet 🌟🌟](https://cheatsheetseries.owasp.org/cheatsheets/Docker_Security_Cheat_Sheet.html) - [==augmentedmind.de: Docker optimization guide: the 12 best tips to optimize Docker image security==](https://www.augmentedmind.de/2022/02/20/optimize-docker-image-security/) - [infoq.com: Is Docker Secure Enough?](https://www.infoq.com/articles/securing-docker/) +- [clickittech.com: The Ultimate Docker Security Best Practices for Your Node.js Application](https://www.clickittech.com/devops/docker-security-best-practices/) ## How To Build a Smaller Docker Image * [developers.redhat.com: Keep it small: a closer look at Docker image sizing](https://developers.redhat.com/blog/2016/03/09/more-about-docker-images-size/) @@ -299,5 +304,9 @@ PHP Docker Image for Cloud Native Deployments (and Kubernetes)

Introduction to Docker🐳@Docker is an open-source platform for deploying and managing containerized applications. It allows developers to easily package their applications into containers that can be deployed on every machine with a valid Docker installation.

Thread 🧵👇

— Gabriel Tanner (@GabrielTanner14) December 13, 2021

How to grasp Containers and Docker (Mega Thread)

When I started using containers back in 2015, I thought they were tiny virtual machines with a subsecond startup time.

It was easy to follow tutorials from the Internet on how to put your Python or Node.js app into a container...

— Ivan Velichko (@iximiuz) August 7, 2021
+ +

Okay @awscloud Lambda folks: when should I use Docker containers as the packaging format for functions vs. using native runtimes? Looking for general guidance here.

— Corey Quinn (@QuinnyPig) March 28, 2022
+ +

Mostly bc of the package size limit.
Standard code zip: max 250 MB
Docker image: max 10 GB

If you do anything in Python with ML libs, you will need Docker...

Why use native runtimes otherwise? Cold start.
Docker: 750-1000 ms
Node/Python: 250-300 ms

— Maciej Radzikowski (@radzikowski_m) March 28, 2022
\ No newline at end of file diff --git a/docs/edge-computing.md b/docs/edge-computing.md index ed933262..c6c2998b 100644 --- a/docs/edge-computing.md +++ b/docs/edge-computing.md @@ -7,4 +7,5 @@ - [opensource.com: Why KubeEdge is my favorite open source project of 2020 🌟](https://opensource.com/article/21/1/kubeedge) KubeEdge is a workload framework for edge computing. - [thenewstack.io: Cloudian CTO: Kubernetes, Standardization Key to Edge](https://thenewstack.io/cloudian-cto-kubernetes-standardization-key-to-edge/) - [cncf.io: Hosted Edge vs Cloud: the battle for latency and security 🌟](https://www.cncf.io/blog/2021/12/08/hosted-edge-vs-cloud-the-battle-for-latency-and-security) -- [==developers.redhat.com: Bring your Kubernetes workloads to the edge==](https://developers.redhat.com/articles/2021/11/22/bring-your-kubernetes-workloads-edge) \ No newline at end of file +- [==developers.redhat.com: Bring your Kubernetes workloads to the edge==](https://developers.redhat.com/articles/2021/11/22/bring-your-kubernetes-workloads-edge) +- [thenewstack.io: A New Kubernetes Edge Architecture](https://thenewstack.io/a-new-kubernetes-edge-architecture/) \ No newline at end of file diff --git a/docs/finops.md b/docs/finops.md index 72606247..3a0d9b84 100644 --- a/docs/finops.md +++ b/docs/finops.md @@ -1,5 +1,6 @@ # Cloud FinOps. Collaborative, Real-Time Cloud Financial Management - [Introduction](#introduction) +- [Licence Managers](#licence-managers) - [EKS](#eks) - [Books](#books) - [Kubernetes Governance and Cost Management for the Cloud-Native Enterprise](#kubernetes-governance-and-cost-management-for-the-cloud-native-enterprise) @@ -23,6 +24,11 @@ - [faun.pub: FinOps – introduction, origins and next steps](https://faun.pub/finops-introduction-origins-and-next-steps-bcdaa8b82417) Financial Operations (FinOps) is a culture that will help you creating cost awareness in your organisation! - [cloud.google.com: 5 key metrics to measure Cloud FinOps impact in your organization in 2022 and beyond](https://cloud.google.com/blog/topics/cloud-first/key-metrics-to-measure-impact-of-cloud-finops) - [thenewstack.io: Cloud Cost Management for DevOps](https://thenewstack.io/cloud-cost-management-for-devops) +- [zdnet.com: As cloud costs spiral upward, enterprises turn to a thing called FinOps](https://www.zdnet.com/article/as-cloud-costs-spiral-upward-enterprises-turn-to-a-thing-called-finops/) Organizations waste 32% of cloud spend, up from 30% a year ago. 'More and more users are swimming in the FinOps side of the pool, even if they may not know it - or call it FinOps yet.' +- [thenewstack.io: Tricks for Cloud Cost Optimization | Pavan Belagatti](https://thenewstack.io/tricks-for-cloud-cost-optimization) + +## Licence Managers +- [marketplace.atlassian.com: License Manager - Easily track your software licenses](https://marketplace.atlassian.com/apps/1227641/license-manager-easily-track-your-software-licenses) Unified view of software usage, SaaS, cloud resources, domains, SSL certificates info across the enterprise from one place in Jira. ## EKS - [dev.to: FinOps EKS: 10 tips to reduce the bill up to 90% on AWS managed Kubernetes clusters](https://dev.to/zenika/eks-10-tips-to-reduce-the-bill-up-to-90-on-aws-managed-kubernetes-clusters-epe) diff --git a/docs/freelancing.md b/docs/freelancing.md index 20061a15..f9994bef 100644 --- a/docs/freelancing.md +++ b/docs/freelancing.md @@ -6,6 +6,11 @@ - [Alternatives. Contractor Management / Umbrella Company solutions](#alternatives-contractor-management--umbrella-company-solutions) - [Umbrella Companies](#umbrella-companies) - [Tweets](#tweets) + +
+
Yarden Saxophone · Esperanza - Yarden Saxophone
+
+ ## Introduction - [linkedin/pulse: Is France the European El Dorado for Freelancing?](https://www.linkedin.com/pulse/france-european-el-dorado-freelancing-quentin-debavelaere/) diff --git a/docs/git.md b/docs/git.md index 52ac1dd8..32fb5965 100644 --- a/docs/git.md +++ b/docs/git.md @@ -4,7 +4,6 @@ - [Git and GitHub Backup](#git-and-github-backup) - [Cherry-picking](#cherry-picking) - [Git Submodules](#git-submodules) -- [Git Interview Questions](#git-interview-questions) - [Shields](#shields) - [Design By Contract](#design-by-contract) - [Git Cheat Sheets](#git-cheat-sheets) @@ -161,10 +160,16 @@ * [dev.to: Git Organized: A Better Git Flow](https://dev.to/render/git-organized-a-better-git-flow-56go) * [css-tricks.com: Git: Switching Unstaged Changes to a New Branch](https://css-tricks.com/git-switching-unstaged-changes-to-a-new-branch/) * [betterprogramming.pub: How to Filter the Git Logs](https://betterprogramming.pub/how-to-filter-the-git-logs-2dcebf3d12) Practical examples of how you can filter the Git logs +* [betterprogramming.pub: Leave Aside Git Checkout. Consider Git Switch for a Change](https://betterprogramming.pub/leave-aside-git-checkout-consider-git-switch-for-a-change-7849df8714b0) Switch between branches without checking out +* [thenewstack.io: Development: Introduction to Git Logging](https://thenewstack.io/development-introduction-to-git-logging/) +* [freecodecamp.org: git config – How to Configure Git Settings to Improve Your Development Workflow](https://www.freecodecamp.org/news/git-config-how-to-configure-git-settings/) +* [freecodecamp.org: Git Undo Merge – How to Revert the Last Merge Commit in Git](https://www.freecodecamp.org/news/git-undo-merge-how-to-revert-the-last-merge-commit-in-git/) +* [devconnected.com: How To Delete File on Git](https://devconnected.com/how-to-delete-file-on-git/) ## Git Aliases * [opensource.com: 8 Git aliases that make me more efficient](https://opensource.com/article/20/11/git-aliases) Use aliases to create shortcuts for your most-used or complex Git commands. * [davidwalsh.name: More Awesome Git Aliases](https://davidwalsh.name/more-awesome-git-aliases) +* [blog.mimacom.com: The Git Commands You Wish You Always Had](https://blog.mimacom.com/git-aliases-you-wished-you-had/) ## Git and GitHub Backup - [backhub.co](https://www.backhub.co/) Reliable GitHub repository backup, set up in minutes @@ -180,11 +185,6 @@ - [git-scm.com: Git Tools - Submodules](https://git-scm.com/book/en/v2/Git-Tools-Submodules) It often happens that while working on one project, you need to use another project from within it. Perhaps it’s a library that a third party developed or that you’re developing separately and using in multiple parent projects. A common issue arises in these scenarios: you want to be able to treat the two projects as separate yet still be able to use one from within the other. - [sitepoint.com: Understanding and Working with Submodules in Git](https://www.sitepoint.com/git-submodules-introduction/) -## Git Interview Questions -- [intellipaat.com: Top Git Interview Questions And Answers 🌟](https://intellipaat.com/blog/interview-question/git-interview-questions-answers/) -- [automationreinvented.blogspot.com: Top GIT Interview question Set-03 for SDET/Testers/Developers/DevOps?](https://automationreinvented.blogspot.com/2021/05/top-git-interview-question-set-03-for.html) -- [automationreinvented.blogspot.com: Top 40 GIT Interview Questions and Answers for SDET - DevOps - Automation QA? Useful GIT commands to refer for daily DevOps Tasks?](https://automationreinvented.blogspot.com/2021/09/top-40-git-interview-questions-and.html) - ## Shields - [shields.io 🌟](https://shields.io/) @@ -350,6 +350,7 @@ git push origin -f * [about.gitlab.com: GitLab Chart works towards Kubernetes 1.22](https://about.gitlab.com/blog/2021/12/17/gitlab-chart-works-towards-kubernetes-1-22/) * [Deploy and Manage Gitlab Runners on Amazon EC2](https://aws.amazon.com/blogs/devops/deploy-and-manage-gitlab-runners-on-amazon-ec2/) * [freecodecamp.org: DevOps with GitLab CI Course 🌟](https://www.freecodecamp.org/news/devops-with-gitlab-ci-course/) +* [testmo.com: GitLab CI/CD Test Automation Pipeline & Reporting](https://www.testmo.com/guides/gitlab-ci-test-automation) ### GitLab Collective - [GitLab Collective 🌟](https://stackoverflow.com/collectives/gitlab) Discover and share knowledge about version control, CI/CD, DevSecOps, and all-remote workflows diff --git a/docs/gitops.md b/docs/gitops.md index c5e704e4..e455a77c 100644 --- a/docs/gitops.md +++ b/docs/gitops.md @@ -21,6 +21,7 @@ - [AWS Kubernetes](#aws-kubernetes) - [Weave Kubernetes Platform](#weave-kubernetes-platform) - [Ubuntu Charmed Kubernetes](#ubuntu-charmed-kubernetes) +- [APIOps](#apiops) - [Images](#images) - [Tweets](#tweets) - [Videos](#videos) @@ -124,6 +125,8 @@ - [thenewstack.io: Trusted Delivery: Policy-Based Compliance the GitOps Way](https://thenewstack.io/trusted-delivery-policy-based-compliance-the-gitops-way/) - [thenewstack.io: Getting Started with GitOps ](https://thenewstack.io/getting-started-with-gitops/) - [==medium: Stop Using Branches for Deploying to Different GitOps Environments | ostis Kapelonis==](https://medium.com/containers-101/stop-using-branches-for-deploying-to-different-gitops-environments-7111d0632402) + - [codefresh.io: Stop Using Branches for Deploying to Different GitOps Environments](https://codefresh.io/about-gitops/branches-gitops-environments) + - **The question of "How do I promote a release to the next environment?" is becoming increasingly popular among organizations that want to adopt GitOps. You should NOT use Git branches for modelling different environments.** - [codefresh.io: The pains of GitOps 1.0](https://codefresh.io/about-gitops/pains-gitops-1-0/) - [==thenewstack.io: Can You GitOps Your APIs?==](https://thenewstack.io/can-you-gitops-your-apis/) - [weave.works: GitOps takes DevOps teams to higher levels of maturity](https://www.weave.works/blog/gitops-takes-devops-teams-to-higher-levels-of-maturity) @@ -134,6 +137,8 @@ - [toolbox.com: Why Are Organizations Adopting GitOps for Continuous Deployment in 2022?](https://www.toolbox.com/tech/devops/articles/more-organizations-adopting-gitops) GitOps extracts best practices of DevOps and utilizes software development methods like version control, code review, and CI/CD pipelines. But is it a sustainable approach? Here’s a look at its pros and cons. - [weave.works: The world’s largest telcos are now embracing GitOps. Deutsche Telekom explains why](https://www.weave.works/blog/deutsche-telekom-explain-why-they-chose-gitops-for-5g) GitOps and 5G - a deep dive into Deutsche Telekom’s experience - [==thenewstack.io: Kubernetes at Scale without GitOps Is a Bad Idea==](https://thenewstack.io/kubernetes-at-scale-without-gitops-is-a-bad-idea/) +- [harness.io: GitOps: The New Kid On The DevOps Block!](https://harness.io/blog/devops/gitops-new-kid-devops-block) GitOps: the single source of truth, the evangelizer of as-code, and the bringer of CI/CD automation. Get an intro view into GitOps here! +- [==Dzone: 3 Steps to Developing a Successful GitOps Model==](https://dzone.com/articles/3-steps-to-developing-a-successful-gitops-model) **In this post, explore how GitOps best serves organizations that develop cloud-native solutions based on containerization and microservices.**
[![gitops in a nutshell](images/GitOps-in-a-nutshell.png)](https://www.unifiedguru.com/gitops-and-the-cloud-operating-model-vmware-cloud-community/) @@ -261,6 +266,9 @@ * [Charmed Kubernetes](https://ubuntu.com/kubernetes/features) * [Kubernetes GitOps with Azure Arc and Charmed Kubernetes](https://ubuntu.com/blog/gitops-with-azure-arc-and-charmed-kubernetes) +## APIOps +- [betterprogramming.pub: Applying DevOps to API Development for APIOps](https://betterprogramming.pub/applying-devops-to-api-development-for-apiops-21e2e605333e) **DevOps + GitOps = APIOps** + ## Images ??? note "Click to expand!" diff --git a/docs/golang.md b/docs/golang.md index 46191357..6e78c007 100644 --- a/docs/golang.md +++ b/docs/golang.md @@ -51,6 +51,7 @@ ## Design Patterns - [aly.arriqaaq.com: Golang Design Patterns in Kubernetes](https://aly.arriqaaq.com/golang-design-patterns/) +- [==github.com/paliimx: Data Structures and Algorithms implementation in Go==](https://github.com/paliimx/Data-Structures-and-Algorithms) **Clean and simple implementation in Go** ## Tutorials - [==dev.to: Create a Restful API with Golang from scratch== 🌟](https://dev.to/pacheco/create-a-restful-api-with-golang-from-scratch-42g2) @@ -61,6 +62,7 @@ - [medium: Using the Go client framework 🌟](https://medium.com/programming-kubernetes/building-stuff-with-the-kubernetes-api-part-4-using-go-b1d0e3c1c899) - [iximiuz.com: How To Call Kubernetes API using Go - Types and Common Machinery](https://iximiuz.com/en/posts/kubernetes-api-go-types-and-common-machinery/) - [itnext.io: Generically working with Kubernetes objects in Go](https://itnext.io/generically-working-with-kubernetes-resources-in-go-53bce678f887) Using the unstructured package from k8s API machinery. In this post you’ll learn how to work with live Kubernetes objects in Go using the typed and dynamic clients available from the API machinery sub-project client-go. +- [medium.com/codex: Explore client-go Informer Patterns](https://medium.com/codex/explore-client-go-informer-patterns-4415bb5f1fbd) Invoke the Kubernetes resources without overloading the cluster. Many popular Kubernetes tools such as K9s are based on client-go. They use the informer pattern to continuously refresh data without posing additional pressure to the API Server. Learn how the informer pattern works in this article. ## Building container images - [ahmet.im: Building container images in Go](https://ahmet.im/blog/building-container-images-in-go/) diff --git a/docs/grafana.md b/docs/grafana.md index cdffc1d5..1b8026ba 100644 --- a/docs/grafana.md +++ b/docs/grafana.md @@ -69,4 +69,5 @@ Message Streams like Kafka/Red Hat AMQ Streams|Other|[9777](https://grafana.com/ - [Grafana Loki](https://grafana.com/oss/loki/) - [itnext.io: Logging in Kubernetes with Loki and the PLG Stack](https://itnext.io/logging-in-kubernetes-with-loki-and-the-plg-stack-93b27c90ec34) Loki is a new log aggregation system from Grafana Labs. It is designed to be cost-effective and easy to operate. In this article, you learn more about Loki and how to use the PLG Stack (Promtail, Loki, Grafana) for logging in Kubernetes. - [medium.com/devopsturkiye: Deploy Grafana Loki and Promtail using ArgoCD](https://medium.com/devopsturkiye/deploy-grafana-loki-and-promtail-using-argocd-416b2fd4539f) -- [faun.pub: Manage Grafana Loki alerting and recording rules using GitOps](https://faun.pub/manage-grafana-lokis-alerting-and-recording-rules-using-gitops-c26d06d772c6) \ No newline at end of file +- [faun.pub: Manage Grafana Loki alerting and recording rules using GitOps](https://faun.pub/manage-grafana-lokis-alerting-and-recording-rules-using-gitops-c26d06d772c6) +- [cleancloud-k8s.com: Handling Multiline Logs with Loki and Fluent Bit on Kubernetes](https://cleancloud-k8s.com/2022/01/19/handling-multiline-logging-with-loki-and-fluent-bit-on-kubernetes/) In this blog post, you will learn how to handle multiline logs such as Java stack traces with Loki and Fluent Bit on Kubernetes. \ No newline at end of file diff --git a/docs/helm.md b/docs/helm.md index e36d48a4..d313c552 100644 --- a/docs/helm.md +++ b/docs/helm.md @@ -85,6 +85,8 @@ * [medium.com/codex: Helm Charts For Kubernetes Developers](https://medium.com/codex/helm-charts-for-kubernetes-developers-dce5719d4c8c) * [==apiiro.com: Malicious Kubernetes Helm Charts can be used to steal sensitive information from Argo CD deployments==](https://apiiro.com/blog/malicious-kubernetes-helm-charts-can-be-used-to-steal-sensitive-information-from-argo-cd-deployments/) * [medium.com/@paolo.gallina: How-to release Helm Charts maintaining your mental health 🌟](https://medium.com/@paolo.gallina/releasing-helm-charts-maintaining-your-mental-health-b382685390c8) Three tips for maintaining and developing Helm charts. +* [devopslearners.com: How to Convert Helm Chart to Kubernetes YAML](https://devopslearners.com/how-to-convert-helm-chart-to-kubernetes-yaml-fbe6d6722f6) +* [mlepeshkin.medium.com: Automated Kubernetes deployment with Helm and additional templating](https://mlepeshkin.medium.com/automated-kubernetes-deployment-with-helm-and-additional-templating-dc960689609f) ## Helm Plugins * [Helm Diff Plugin 🌟](https://github.com/databus23/helm-diff) A helm plugin that shows a diff explaining what a helm upgrade would change @@ -137,6 +139,7 @@ Kubernetes packages * [openshift.com: Introducing the Quarkus Helm Chart](https://www.openshift.com/blog/introducing-the-quarkus-helm-chart) * [artifacthub.io: Official Helm charts for HAProxy and the HAProxy Kubernetes Ingress Controller on Artifact Hub 🌟](https://artifacthub.io/packages/search?repo=haproxytech) * [prometheus-community.github.io: Prometheus Community Kubernetes Helm Charts 🌟](https://prometheus-community.github.io/helm-charts/) +* [boxunix.com: Developer’s Guide to Writing a Good Helm Chart](https://boxunix.com/2022/02/05/developers-guide-to-writing-a-good-helm-chart/) ## Shalm. Scriptable helm charts * [shalm: Scriptable helm charts](https://github.com/wonderix/shalm) This project brings the starlark scripting language to helm charts. diff --git a/docs/iac.md b/docs/iac.md index 32d702f9..4d72a8cb 100644 --- a/docs/iac.md +++ b/docs/iac.md @@ -20,6 +20,7 @@ - [faun.pub: The best Infrastructure as Code tools for 2021](https://faun.pub/the-best-infrastructure-as-code-tools-for-2021-b37c323e89f0) - [==alpacked.io: Infrastructure as Code in DevOps== 🌟](https://alpacked.io/blog/infrastructure-as-code-for-devops/) Key driving force of efficient application delivery. - [devops.com: Updating and Managing Infrastructure-as-Code (IaC)](https://devops.com/updating-and-managing-infrastructure-as-code-iac/) +- [thenewstack.io: GUIs, CLI, APIs: Learn Basic Terms of Infrastructure-as-Code](https://thenewstack.io/guis-cli-apis-learn-basic-terms-of-infrastructure-as-code/) ## Local Environment as Code - [thenewstack.io: Local Environment-as-Code: Is It Possible Yet?](https://thenewstack.io/local-environment-as-code-is-it-possible-yet/) diff --git a/docs/images/la_gestion_de_uno_mismo.jpg b/docs/images/la_gestion_de_uno_mismo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..641256d9b9843373265e22e3e15e67f569a4c543 GIT binary patch literal 515352 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 z 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

W+f?W?Ae>80rT5y- zX(l2s`By3F6#%@AZ*Z5`M8D2Qa=_L`h*HV1DBIhKapJ$q=X&vemyau16U1@66Lc>B zq&+q+u9(8!7wgr5G<6v%6V_-_*!rENT=_cJ!WXR8n7}~z+QqcnEe%NxV0=>uSDcNE z20e%Q`|%ge#A12sBI4M4_sZm0uA8^}^HWskU0fRGcj>i`h|8cn${94zuGE(&cocJn z_`a(3oPp4O4V;2CqqQX7ZEnqw1T33t%RKXtsEF+m4-QR|rn{@{C@{53cSkaW@>KW7 z=34}aOE>J#dcJr}OO^KLs+#TXD0S|hjmrf20=9T8d5m1@I7u$AE(NE41BQ<(1HnuO z5zSD_Sckllg_p19Z>X-~xCA9-!n`LLURev2W8NIPHFXWCXxXqQHRhk4bqZxBBnB2< z2JWieez@$>12I*J7y7>qP!@@l3OrGJZ{CCC?{fU`W52I+nTDqXm(n<~Mv<4?>)i45g(>c&>ulE`g z-AZK`2BJqS2d=ye6teYHr<8%llqI~PBt>#*scxA)*Xso%pAakPc6 z8Ti`f&yt7#Yrn#TaID#Q8Lj~HLJlmHor~nX+JGq9RHM@8$nxS}y_5TQGKU@i1w)YaJX^?hy^k)!wb7Dfm}wH?~j?tj0kN6Ey_Ff~lyCPtwaxr2xzR@DA5$rgqf z9Cp^w;8GyIc-_mDvo7)3WD=XWi9n9ggrn`V+Kr_#Q(1JQyvOD*9<`d<)4qgm9b!0b zXI(RMkXuJ_F-PE1lPULuubgs3#<SEb^nCRbHLi>!$87bRfKB&i2x31Y8G~RN}ld9Q|m70noH45|5S z2v;wPpR8+PMvj)T37)lf=o}Z)hM^L=V%ua9j@Zqod*8y0BMMUPr|i&j!-({C<0NcM z51e5?`bzEMB;N~0e>YRmnIz~-(QHrT`6L%lI5LHoPF!3}ukG_HjUuiW8+}SP3ED;_ ziW5vep1)39H`N$TW5obbyYOO2#S48z`KF zVb}o`K4Ptg=xAxzmk+TWJo`yv@DXp(gPh2_^plDWp(D0=(e2u(08=*=qeHE*OE^F{ zGqY6~&RBRptec$xeqeO}qHY(XzLd`+KpRHFlqtG=lw$UoW$B~}<7ABN7S)U4tXD`% zR;T=oui44soWnAUxxt~?8M+tA46eokOD)g5d3U=m#!wm3m2AV$^U)-pu_jgGO?mjc z8!xYCCg+`)^6mb(!=@YT*BgyhvOo>EuIR|wfNXi_DofS3uQ$@OB{?+3U`RZkie!y% z%XPe4!k7-RwoqmDAEH3%A{%jQ=h#e5e(3w{uwtSCM`Bz15S*W05D5|c=tdAKz2$}Y zqVC8*l%qw4njh+{#@+>)aXX3@^R!~@NjTsyZnXSb=mTxie@VdBz+2%1f<>d@qbw&c zmk=s2Ey_e(m6Q8kbv^LpkV~MdMZJ?Aey=*UJ)#|7ob(*Ly;ZJ3zW3X@zOPOPHV2zg zY9Qa+KwJ**rQzlP?odpmngT~iz#{0X^Y<}~hdQl62ed%N-Ehz~|2NR>Ik8xq^~&ZZ z1SoZhG*kH8(@R1kxzZylZ$!mOA~M_|cjwO7B>M?2vFku4f`t1C8^6=ZI;oLV0gC0vAvSyi~jR$2qs9jwp~v zQ4|8+i3a!vMo^8 zFm8nFioD{=C#f7K)$&^kTyFXb$te{E&Sw&zArgn)7cj~&@(h+n=YW_kO*FCa&*&sN zztvgCnEaDTup1Y-GX>U~+N=4_zc7Vv@{r2K>LTSP$m*^Mz|{PP@9c9(8l53^?^CyP zME6Pjz9n)05qp7`>0Ns+aa z-Tn0~YldqgKh^6i^%Us!MjVDo={muPwaJw$$>0s(W%$Aihj-na(QNctqN^#$97w;L zH9JnC`td-|ycJUdG)x-&QZ-fw{T&L6MC(A_-e18;^HWq#*jW&NG zkbvkdJf!!7xSkMob}YAK(+Q)lpQFA8z1I_|U;>=j5vOgFiw+13?`cu9nemHEYOi*G z=d0(-xb?S|$wO$xL43YxAG;DXc0u?RQCjYbLy7*0f5eH(v#gt17MAMH6LZQ`rr=z$ zgeHC@$rvNEC8?tRGbD-m(p0HRRKfQ%$cybLDu#*@0^HiACo(d3GTzb&I#XqiWr*Z~ z5>Jl$1<8&;tdzPplPgN>MJ0X_WKuJxFcKp4{SToM`-SLs0ULi|UfQzR0zk`-nU05j zo@Co6_#{Tm@(N5o`{sOe=)Zc2m*k1zQaG6qEsyc+@AzRT%*?Hq?y|}p01vk6@H_@| zlCQG^DwsrB@) z`*}hn{(?R6fUJ!WZXp#qycZzusZ3pHk3Rh4>gA~&WNQG`uGd|UwR74yXH6x9($xx# z%OLBJ4=y$xmvqf!7=AdTDd~mND*in!OwllS4d$I0yDbcK=Mr+DHrOIy+%^e!8`Xd% z^xNUD6HWDMUjSJYH?ELZ@;b>kz6Z`htW$a%<8&C{pb^?G0QVkx1U@d9ZF5-B2&=Os zPii%lJzHN3Q-&yE`vpa7wNHcb;ukN`brRw;6>UeGZ`pFSO#I0F-rn3|(eTqx7Obf( zHsf;*HgmV9u<;xAgcOD>c1l@?6&4EhxvcP64LuE`g-jEs;2U^`nF;&C%*inf^A|~# zX5W$rCGZXieqBfJtMDqy$TBA21TAA<(vLQkHJ!{+`sXp6>*>Q8_LD6M6uc5>(4Q?D zRsJ(Tmv6o(Mr<@}X^;#t3x74H_`WYWk!w^;=pZG?)f0?Q`r%G{k}GOZuCiA|2FzA6 zX;>PgJ)dl(Z%el&osV4iCgJVvOF5Ean&;_6#2)=w-q)o}&yO5T7f!G5JXk@$U3w6` zW%Qlo$Ch3>sz=oXtUzJ3%8aoJ!A|+5S72Gh2^NWfmO2a9_zQbmmC8kIep-!otDRsQ zogC&D(2o5oC<+c5XGP!LO3Usjw<1blNN?=t`6Q1vDcOVyhzOCoJg z{z~5Q-744Jv!-xdEcQO4;V*PwrUaIC?N`i#@N?&Tkjh=b1rNiW-p4mVl|*F*K^#CN z$Lh+eljp9C0rmmML5+yG&C{910FS?c?zhS#e^Cv1tW8#hktVrXx6S*JI{XwIfX+hY z)TrLn#W)%2;|bYT%~B3RWXs;?`L|uMwa;)|1nBz~M8Nz4xR+4Vw~{r|dF3zH=t$?e z;V6{Tqnu|koZ*#s2+K&bW0IT3X?wvIbJF_JApbA6=a5*@`Y!$q_idjO#IIh3XkwfMP&T$ zG8j8eclEEoCX0E6VmN9@Jh4EPo|WCnq&qOV0~~pbVn6>xj~q_~-R<3X>0bwr=;5ks z1Sr3mxqy)7C^uV`IvKOXKNC6aX9{~4mT9Jk<|)hw%D9X0GG3T?p5(L~H?5N@pY*}@ z`_?gQE`nkkPy0`RAU7OSSw-@T5RMy7enT}XnNbBZ%7lSUu{}5sD%uC|F56H|QAJL{yV5q#of%)Ynjm*Zq zsz+Q3?|nz-EK0P^9J>)zSoVkph2~yEcRwD`{w)I?99(wJp4f6KW}5JvPH;FPNfY? z#!})?j2q@3uHZ_l?enx7o=%tj}akQA2z1Z*;|6ZmMkS!W zYJvc2vP@5TV3pZ$uLhG1@RQdmBzsg$9q?Vg<{L{~1LLS6W69lvp*P zq}4ii5U&p)XtS|Qp(wuv*cL|{NuH(ttn9-tBh@bk3vo}Z22lb$z8l<_)@h3J_IA-s z<11GfhMtQcQ@2*#Dt!`ehK5E)CwkHB%qpQj#Z#ABw!eC=MrHK8Nw3!vHqec$4cFpC zn7P-3$@-NXqrAff{ndEAKHmq-8Q=54D8-JLiO>Ow?~_wFP(3YXv3VV%)RapT43uZ| z=?JdYIbN{L_!zPB_mgAL(Q(Wj1l??eS7taArk0g0@}p;a)ER6;c?=bcs^WCtjoL(U zwn<$cx-LTnP&qX;$=?-CEv9k9C?&q|sfibfLt2#269m4-==zMcRjqVMr>{#z>3%6I z`W+*_KZ?c#O}$(Me0S&0j9F4U10rxf#kq&efiffKG z8RYVm%X@+D8hTnlc`Pw1+(Nc5bv2qr7}g8BhAH>*O!^3Kg|a5SCYBr`3y3 zW{F3r4ID{4YQb+`z$w{|%-&qpKzRXL+S8!in!~TpY(sgFi}zY!UhQcHIV1g?ZtlZU zDgPE2Nd*btR$i&si=w0QMXRV?HtYR8C4i6fk5nHFa4?!BxZEo-HAgnVrnDqZQ-Prg zN_FKen(y@~)i@2z93KF6ojKofH_>5=)n-@=(`M5M8%8xNdr`NFjs;**S$-b-nuZS>hkahjb&?U2DFjCEcEW~zwzFV| zeMT2~1vbtXuVH1yD-_}CzF)sjDRA*?I&H;z!`*oBRbMd2JEbOghW_1uwu+-Q6E&ug zu-=^bI%o$?0tNMesW7IM#C0_ovgFd*;uEf|BIQTx#i#o968GN z#$6oye9%R;5JZ}zj55#Ot#U3B-R}`C`k@nV@0Pu9p$ zDfbY+d2e%X`~v2Hled7?d!e+8PWVF{%Hq!6>Vhswk<_3IUyojw-0@w|ttb90%FLHs zw5&nR|C!&9F1b!9^S%4$uqz*>aJjP&GATK}57hOzVnC={9q(=ItVN*fsyvJNsy8um zglF0fBe**)I6El35?)yJ@drk|kg!qvJIjE#wJ~tNl1htXpd%$GTc&?oZCJ{2FZcPc zwBdmnq;$&uFU1SB{-Xe!rjxfX^`|lNoyP;Rxx0MwWF(~||D-SG)nWY%nI)PSG1KEI z-{j{r?e-6VTrXVz$ZDD*&DX9&X02u;JA`4b2LfD~@^m3QnqAkf@L*r#57XKnY7301 zdl@vF2g}gN?OBpyyVN2l0&Sb*Xra)W+U@WX|J$K2Xq;^^LoTU+%acxyg3?5zg<>gG z{Xy7BN0o((^>;1R=_U?=wsz*Oxw zZVC*~Psm@5ndos=Ml+}yd9r`duZ1p0^$DfCb?k}!%(+tAbY)hD!LRqLRkbGD!z@Fs zTWZm>k8pPcQc4*kOafgvrkQ9sILify7 z9ZIjFj)X&nsjiQ|EO8dSxc9W|USsV-4{uUCQZnBos%Q95h&wcm(LKB@s=WAF;()b0 zg$-k0v~v)5q?5LhUXdnK)CQx;M?dqUzE@Rd`YDq6hC2KU66O|A?mKr)Of^*}!JYz! z+Il577ano2{051hS+QSE@xWUa6H{zFWy#ma+^U<2Fuinv=&b7)Audz(R#7UUDRPt# zm~+Fs@kNV7?;Xi!9S$F^a*V5>dEvY4~5ytkUi2^1M0QATtSif_w zTA{qORC#n^ghy?Nv~yUJPl4C5EK%8pt#ZGFKg-$s^thj!a755SgD%CCAiY)u<?m8j(Mszu9(%g$Q45AyD-uSskf`QZU-|Pj1;v{N_NJrSKF5nDZY~!lqY<8u&I+71 zC(`7fD;wTx5jE!L^9yXb`Xfz1s#^LVs{PoNG#MI5;Z8{)4eXDRx?B^(XM>XSkE+)Pm`>|!e?LBF60e63i&a@I2MZv_OT^gJk?q#up_iX%euTIg? z=~Uxq9I=$9yXfbNSK_8GiIe*jam2Db>E{2j8;~gJml2lNQSIv5^)!^zaU$DPyy`ci zZWOKcw3GczjZ6FI&4m3vIh9FK=e~YrBAl+A1MagqjG0c0UfY-4q%&q5x4}n7&7F)R znW(G5bwKb{i`BHCPoP_UP=db6Jm0q?({o4d6*R|13z0Y^RzoB_Y?ABH%oJqQgA;&O83W%x^w@!n9mEQwkUfjfn#Q z1vV43l3cAWE?PT7eCssZDvVX(#nqL+E96qcS>EX=kN(}v(8OJ9O`N1iLj_jDlxHPb zClJ~t9e&}58dHVS`z}Y)Cg{RlYaD>q&LBuU7x@us;u;);zq=kd!bZUeDeQ*vK3UtI zeYKZHS(U(FAOu&d)1!CL)IQ>GWot}vqS~m-$_{JWSB=F+=ZC+FFX2i2BcHsM_&)b1E%)R7IDW4Yhv)?=b zPB1e~8>;QI6fGYv-5xQ;B36-${gIpsqqmbz7@vQQ<*y5Lg1T&T!QF!;sbMNvBfD z*jCH83yx)a#u6jMs`$PKRxa{0oy^lo=VD$S?7-K4M9#V}4esn_mrsOsY_w7}uAdR% zY9HoR6L=iILv*;2-D;t*&B@!`-rcGw3LN6|xI&{hTt^%5pB6B}TwNti#;s;uWX&G)y%KkF)I8rftugru`dn0j<{ z03+fh6m8;+r9|f&s+TH7w)luMHYXF#&(bpoXGd&>53>$BS>73ClEB&Ixa0lqT0DQ2 zPf=pN58uV-qTP9dNhH8N`u3=LSEhm36U&O)1moMLMACJj+xb$5n0ndlAn1)H8mET4~%8~+>KVq2G~o`Mft6pv0Hm9r!Tp{1K`2c`VR`0i3jy54s0QCfGKZpFELvak)D%6rWiH0z?XIJ z#q{lOne3iSi4O7}G)OQ7@7T|D(pqby=l$MII=k$%@oLKic?efd{Ol9D_`#U? z%df>Oo!JMOGo1`2I&_J;a2orJ_iTO%R*lai+S<-W=t}r`iutAO+1Lrv%+2S= zNP!ZHcIFHjTV5=gr=bxwp`^Nu0_%?A9&{mB?XUkF_10fHx*|DkAV3IG3M-7IQU@m% zP(zuXT&(_MHDfgg%b_S@Fi^2~gc62P*OB_(*KVh#wG)m?ODCHHQ~8tho2sB2Li{zdUUx z7eP(GuW^L$q?a>GQaGPDqtKML%kaov*SA@XD5wI(J47r7oFQ3zsWP!0^v;T%Ohf|K zE?ciHOIYp3N=VKv*@Bj<0~OTM*Hm8($^|NLoJpSaJ0@aH0gn{%=yR?Io5s`ELqq6A&=7gtC+q+x0dA$G%hWS@ehzd-#||YEv5w{qrtOd zU(D-fV~5IHVMM>2{)p9o9I*$vcYm)s1uSlSN6PW{<M~L(zGJWm7SRE#OvSF?Hf}(9lKi_rCR00MiH<z9NI8Uqm>@Ev7qOQtoA|lhu*> zK-yHZ0T!17tmdGax@O9<3hR?f9ki^A+wWwTOU3hTnbp@PbsVgLxz!tEQw`C+gp_{; zHUp0W4koF~cBt7izr8Wa2-=@*`qCr+(NQx^E^<{`j|%r*h9!6EfmSb|kXuK=hy~if zDCl}Si>PM^0;oSOvnUHy z96b$NS^Re7d&k%9fJ?PEsS9I@&KA}SxUY2Y5LZ+G?e#Gs!-J^!nLb$;ilCg~z%09O zOUARa>^$s;?gU&r?f0h?DK9BcGh&WSb1KC&Bow!bRGW|4(@9i3p9|=Inj&((4aNy$ zMLa5m-WPZq>LvUx~qVr`Za+=l5~y z(g=rWf=Mofd*kD%&+6?8S-%j8IiBB#i~-|pb8BaBC);LeeHeZ=o!wWqB7=C6If#kx zYA--OS*x>sy4c!ur#0g}%H`oR;us%d@^X_$fA(R62bcxg^EC&sRMZWzq|jPtqK#yW z0eS;y%-nmdjg_AEizTX``pC;u9c`}#x;tp+u9TLPh6_{`O^$eNHyvz*7|g3HmN7-V z=X_E==5kcL8q72)L~wjYKBA$$7A1v>bv>KvUO2M017tOpKD`|O3QP<3t`j+fO~?|* zWi|-M`AN)1u$n>1!^(D+r~ejwnIhq);)Nx2GNL-jPWu&?5@`>U?98XXDhSTSt>Xra zGS&EUX>g52y)4d8Bu{<8=)4crR{kUj={?TryD!7jT2-wS5-{~?wN&m_V)>Fc-f4Z+ zKnj&~TcKpPiEd^rPoNfHz_SQgk*ooe8Bh~^<)P)wp9nK)bk6Yfge>#*?QNRz=@gey zY})|fa1t@L%u{!CK8koqf=KI;)9pqig~JL{rUeJ7+bjjK*LGdslv(z--_x1jSl*CY zROHM)+i+>Fc=fx3L^t9GWg3nN=d+PI31HORBU(~%n9rAZ#(I}Nz~u4P zQBT%SDd;t8QO&!l`AI^iN!8!ym2lLc??WSvmUv@gj5_U3|08hElIB2nv~QXH%mY?0 z{I54$5%@?2mgxWP0pziF4MO8~-0KK*XYNggve?0(ndtk~@Ok7h=q3y(4w{J*I$AmH zT0quzO;%Nj2uIC8RuAuUX_`@l8?i==QwYOq~Qoxk-p!E#*c$QL+LNS#MrWX;t`CU9i0N2ss7myMngMBmDHI^8L6Nga!DiWhQRl&Gre1;%{49X>@E=t3)wnif0yens2sG5EmHDaHqwQz1DaItqTQ?KIUh- zvDGsWTkK$yv;UnSo7^6MNFZsNEA4c}-}{7e>4zTCE`NExK3RQ4Ti;m=xkq0vctn$2 zb#i?~3rC%!TdW-pR1Jnm_JfR5Nf;HXgak4E?+5e1EZ}WW4yttFFWG^RWUnB zs}(8^FsYw-M9Xo8z){>V>x=DBsKwYK%N4Wb)#R#c)6}PaTt$0o>rg-?f2v;RqIqDO zvl~vV7d4)Yh=@+-K_FLz^UTUzX*uzbc3WZj>^#0q=bX~IpmU;r0sE9wQlZS*jR%B^ z_tfP>uS}Z+2_(47s%$$@g^=1>*k`jakY+6RW9f%c>GwhcJ;S_ zca)2#Fv<~eZMyVFiLRd>{hsm6s5&}2Mw&_T>6Ogal;ED5HUt#Up6*0EK`dCHW(G&* zNe~in)3)+DVCX7d8Vexm)JU0vDe-;tvTB){ca|i6J6Z0oj9S_!aDaS{T_QK)v{SVH zz2I&|Po~W!d^sR{;Nd;3++e1P8kHTzSnj;J`v#aH)_?`*A05$VtDm&Y+n^W#V(AU;70;+u2aEQQU5+IxGkyk< zTz_a4VSH0F{O8&-giYK{M@o?ta`-O#PGCKZtv*CWjp^pQsTo-78t|q_j zEGx9HSdUt(&&U2@e-L~nu(p8!lPGw^Pc>%DtJS2qkUr3!!zLJ&`++)7cLkE-`Ab>0 z?t{tK)qhnepS#*OW$NU>Iy}TJtXnYcb*uFm1G7BN`T`laCb*?274=GNe!<${=~`*= zdr{R?m3IE(zO%Z+ngX?~VvL@^suS2N!UC+K3#O*Zbu@4i%142RPZdy<5}>RQ|E~u9 zA%ggp=RVY0#!`5w zJW(YQ?r-~2%l)>-`Nd!GH1K`UKdwVKyA7}L`yeNw_Ex3OmpvAKt|FW@G~3_#?lSnN z7dWsmV+DOhRfJeYV1+qSP8)jKrVo*7->8&Hw&ce5N{GKyh;csm_Oklc|l0f(q8I^o{c^)dOE*Njyx zG3*g?CwPl&iS*S?4LKTBhE81wKYM_5my}ws7c`78OV0C;c##b+yFx_uTv`#I#>4~~ z9G8Q~DsgW;5aFW}OIih=8~BgDpG&sa>FIF;l`oCUrfkzwhIu4@o`f1>#HR8_ z)a5kA3_$vqC5Ap8r;BO5fDfr6&wpbm2DK?9?gd_=qgZMI#40Z3sO=F_+M9`L8{W z5tqR;FW@FY99F@@&=%k&RHjkJ;3ZB<>P)(;`VT`~D3m80M$s^9`}<2*ezjBTs#CzS z!tRECb#Xp9rfT#7ohD?+jdwC{OMR}I)G^A~{}NCu(yGL;mulhspUvnyB};MfY9#Ij_v>dNB;1yjV$KMoj~@@3kw0f6`z?*zwyF zQsyfU*X^{jV+jke|N19ZnQ_u9T*%B-EB*{Qqc)VMkzqN*V=ndz%2U#dv0dGnt+bHh z>bB_XiDbN}6ZQW7Ibl(st|0YNnzcriEt5H(eN-TN?xMFdbK8w1bFmgsb0)gKl}L@f zH95$?T2;ptlt?Z12CoG(a|zN5$00t^5_%oNkUi9KDAx%%p-BO-S&5jiGDbxKIUL$< zwjvC#T5Ie{FnB0)N%f8=}lW#s>*~n>abi~0^8O%s1B@`^2 zbF%rA_6rnua`kk1Sx$Gp9q69G(x&|APu%uGEyE??1yBLlamlW$}eo8G7@zH#SaZ0r^XRl3cn6+Z! z94N9ExwBKY_Qlq;%D%s9=R`E>`K96%LmWMHQ|BK#ctEJ#cXrBS;JG(T*f!n+=Q-@h zTztwAL1^FI{7>%3(m6Rk)*@B?&kk!Q}Y%Uo8~F*a=R-_u1y>h>Zpm=dbcm5-Gii%o5Z7I^TM`E+xvS_WGTTCV$AUIqRaYqHo)5w33M; zEVCH}29!o)3{6+vgB1dm@4~FWZ=VURv^$3n`az+d%nSd8$eTGKHTi|c8<-+$alLM2Q9PCiA*!Gs6z~V{& zOcb%$1-@ zbJ{fduxP38&qhA%DfQbYPLe5U;yve&VT#|>t^St1Y5!GANH+^$O0UTHThZKfp52=R z0%}1ET?hM;s2HYZuKTciIPGC&*&F5IF80iSyxK)kfKWvWrT3~L9{A&^VuZzomCMBk ztc#O_dcg|8u|y7-H`!tuJ*eTf6U9IesZ%IU*b)$owHBdTeQ4&_9b@{XcDQw29eq(4 zV?*x87M~99!ap$;l6?Jr*m;749@V(P1?KHJx)Bi!cQz-3N!l265f%Nsdx+$8iUOY}Jgo-I z&i$-8$1B{n&SWFvayNK%>aEc?*Rt;-Z7wF)mZDA$=c;uLu)^E4VIJLm5eTVVlz{5V zwvlC)^uH2nXSdJe3962ySz1|~w$k*#)|*ulTqSuY#*%p1%K$#7XawoX>?r~)^Ez^K z1P8Z-a5-!B7)Gd6My#RmDvLoa!%XeYnfovo$2;S1rf8vIBiC9?B}$Ob6-PymS@di1 zN5=-HjJ~Y7!#7JnsETF1u_0j|I}bCQN9|_|c3szU#K-*`A^Uz!=X>BX%GEHU6pHeX zw2owO5I!V)!R=!5>4ZGzFM2P1_I$sat}5J^UA1lh38$0i>Z^)g9M7?g-<063^n1&hlg>rU zCpdn)MG5P#w&wT)U?THpXXJ%)KM01nb>7I<&%H*Ae+y-F@$NhBR!)SgmfJluLF+T; z_}-SA7RJ^_LSJq?NMqkoY&NqzIhjK~(i`Iy5+12ivF!}Kr|xj)(904O1VQN$%~BMTLf9lE+L9pMp|Yr zBavm2%7)G8lVleuu#zsozc8v z<97dU;&l66r&o&ARyln^FJb?ctRI93YpIOquzris_wN6!d=)b>87@wvXG_7Nth*8CqgX>{+8WvG=Y$ zYVWu}W(bqxN2H5VLA;Y8ORqNAL8X1##9Y`phX&jTAw30OlLg|%los0^8!T8^l9qF2#29@ z)87MMAaYeAr$*g|J;7{LK`Z(5Q1y3fq=f$KAh*RhhkpC)_IG~na$dEW<(CnI9$rf;cCg;=2J zyKidy;N3l?04xtKag5N|Ghc}N7<>ILsY&MN=OV!N?I3;q?vSU_(!eE#iu^kv$piYo zO$~gObBum1vA~+)BLptjo1mx>4XT(bs?l{&^HYF^L_N`sN&{bvGO zBwuO|pr%_zg7W&u0M9Y!_O%=f8+VUxATlQz#kK0eWE63eYPIIHStC?gA@kr4^`Aj_ zfI7o>u*R>{Qw3W-yStt;C4V1wKl;-05L+H=D!WLkoAMKVK{B3_61UL%;`^^D@pIch zcb(zVk+UL{2^bA}m`DVVeBj7P*kMmx?9+d6XuAGjU7vTR*fkfcpkOaxPp}F|Zq(nG z|KRk;yRL6^{k-|?d=+;OqT6$g0mXT|lD<5r9q2f**C%Kwcmuw_3-?O+iT=4?V|m%t zO@}>7)c=lRgFTYW_&+%Bu(Ax+*)4)KlwzMre0Dd7wHEz@a}SC-vxvIy!M;keX>d>I ztYk$EUGQ6B(V&zFrSkw>lUpS)4+I5n&rB}oXq=#VXswOu*%JvTnijNTY zkEW;@DCDLahMib-{ZufkO>HSiiN@M*siKxX#h!%i+dZ36vAlW8Jb~@6@YTNPR;WhD*QuS1J#{b6H)CZ3RMk@kynNY#J6`Ox$Mp5?L|&64Iz}4ikX)m0 zrarAoVCCD2M_b!&@x$oq8GO&v2ubyOMboRh z?^K@$=VxjbDGH_8M+K9%u7BW0*;{d{+rK_O1bc}%V~&f)YBk#qNIA)I+5$q z!fR>=t>%bvt4Q=n->YvCJ@_HsPt~?JiOP?#Fii(?TLfS=nBUT>O)((mAHZlgSP^p7 zbY12{nR7wHrewnCLbcyj#C3iRw?5$9DT85GD0f+W{9y?*lINZJcM534VSL2jLkx_q zidca#sia5fQ8-e{Yg!y@sNVP?J0&zzbT>NWdV_pqytV*C}r7Vf)*VbWKxjm8L zO-*5SM_)Yay(8tO;qI*}P1R-#IO;gg*(@0K0hxc7H{c8sG3$6Yfcd;069*EQz|g6! z$0OG&*zDt{_IuB9c2exi`Pom;Pj;bgKM+g|tup{MlIiN3@DnuKTT>}VfJ|P)JA~5G zhNPXEE4?V2Lh*nYEry7njj1xugI?FSeS28`f^H*D+OD+CSk@Wj+5_W0h(MbDcn#eV zZ+m`zU-KLx$znbnn(dsFTQ88BTXA!C+DEYSK|QS)1MWRa^?i((O&G)oFID~uDh#W6Ttt9C&7-kK_#_o+F z6iKHd;7ADq}Em2k|1PUM{7*><&6*9-VKm(d2A1RZ=M3UB4 zS$D8-Ru~XOpSCnJsQktLd$5DYR0#zg#zg_OEfPr_3-5Yb zgC+Q)smeYi&=E(z%=j@} zLOS#beDn?O&AX9VYDJaN+dkQP4!E_a10OQTfrl%657v-OPL*%PG@PD3r|IF{d=K)Y zhPs%s!M=_y+aIjQl!=nNwQ!v!Vb-Iyr}{Xh;uEnCp|)CmE)-`mZnf@zb-l(PggMYB zW*wHxtgjy=upQR24vdnz;B0wBX$D3Z&W(K35D#7PfYCFFzBXg7V@0s@_;E|!Y>FU2 zZo|Jkl1;Z&6Axos`_wWTk0x*5s7bA6jfg7w3}8>*xt<c7+!TcYbWoVJ(puMa^{(4Gl7%DKTym_agGepBeI0Ey)d!R`b$yV2EegCrNxkvC=nL5|cxB8j<8bl3#98}&%mm%^7eY7{MqQ-A4;*e+{?_1*ldKQS1~9rOJxl+y^cm#+VBoMF`L z?8dJhQ4;|g)V3KZ8?EMn<;l(-?;ZQc(G-I`KLq<5lh|mit+Fg<$oagVtPK1({SpFT zeM%!nH%qBv*VW*(_*bxs2RPAfc@y(_io9XkAU$w6`-A5yaE>Yw(#QRt@AI$O(eeA5 zd&X-!g8c(~*SQd?$Bx98@Hb2A@1fW{Gkh$=te0&=9_&D#RsBKajbjg1c<i9t(`VJOTI#2=YOE~Dha!lHmYk&cy6;ua*+W*=vYff==)oeZSBPBFgmb*Amn zbP6KqGF>9!bbqI1!Qvrrvmz5->+*ik_2I6d)A57Zc|nY{uf$&?w+|#PMbO);#rew_ z^8TjVLyz|Vy@$c4IdVd2!`Eia4u)R-$lbm85hI26cS2V3t2A90Bt>B5d%2AR79aaJ z^+pOwCNkN*M;GUPkDKLP{=rc`d>l1J@02f*o0t8je>a*pVW?&#OEtGs)xuucIk{x5mCo8Tn4!KnXgh21nv%YVtc6>c2rCyE zRwU%;E8uJ#dIp~NeRC}!Bpd;{60!UYwfR)_PQZt$3GWQc=fn3gB76^MkM93GMFi5W z$MPfhJ)dqF{tI)i@%X$f^&pDadx}IDbOM&l1|}|M=o1k=V?1^@o>gV{P=c}OJH&wx zIfFXVts{dsw9VyB^axn<_Ew}&1g)b|tCtd>3_VTmI8w66ganvH^%oqEu%}2KjfpYN ze{iT>@HQfUOt*%SjMeq&YtP|V`)UAA`b;<*EM(%hee9!PJjM-L%Nn-2@U1y|)!>wl zbr=cBi`7C&*6=SLCH8^#zaP(DZ=U=117~$W1A^&!maFT`iniPCj+KdxoTvVJ(kV<6 z%Yr>G^Cg6NqF)Qr>ny&X^@O!=F z^epBz_%=6sF1Wxx@4*J*v zTYERAlvwW4Vza8(yGrmv#|PgOB$K?kVr1lUkfkIJ0-{s=FG)_&uCIs;Sk+?=8$CVj zA|J%uo%A~m+P@7=ns^Hi#1yt*m`lX;P2x8yxpX)WUr9 z9DsqIYsV}q?R<2A){POo*%G~Yd)`k)S*_{7rZ&LNsy0u)dQBb`OKEX7Z&MwsQVx}_ z7KwC~#8OlJPcig4AB4Xyi}XIMxU3I4^la`~ODU{+?o*h=_QJU>xVlH{1f8f@LH0Jl zSAU;B&HidLX>w`;!nnxm^0iNm>XCQE_s6^;_6gAV64qjtvQ(8(dWGB0=DN1E8rej1 z`p?7(<;0poi(-t2So6FqGm8e$s9HlKC^}1WJivRlMMuLPWQahQ_3JyoqJ3GzcLQ5G zTLJ_Roa(zaa!4kb;1BY<{qm*=g-vn(Q7DL9zY+OY8feXXMqY|g$uAyki77TSaPL?` zdvtJu_W?gr|^=%=VmfqU7cVUer%2&TR{0yyVJgK zZrX1QNhLy(tti>SSg^uF?73MyvkC1P=81^^C_M1cWQ5RqI;?J~VmGNyUxV}`HRP4Q z<$Y_%j+EE9XKM~sQWGt?9w_b$y_naXBG=7kl7WegovQJb7J+b8LMo9p_p<3`jC!me zp7dNMM7WinfW(b)@vndrw6u*OG(D|}t{VQ;eZd!Y_y&srdxE;w{4Ng~Je}$bVk53k ze|AiSO=#t)8&65gvwPRVBZKU~SDVp|0_Ie6eD>P=NNdIb3B((vuPu#Yy1ErAGi)zY zo3Y7n*b7KeTB8C6#J5V4hf11@>3v956>OI9396WG@ieufjFTOno;6SMd3iLmB%_^in#h&8g1d2EJBuZ5S5l9e9x5DFN z?=g&4RA}_Eb6x;5%>&b|rb`S-S$XJIWl`P4Yj;#HnYMc;>|Scq%IL*YH6X;J)_n`U z9eG?`r)(l4-Sw`~u)VN=gLt>KUlrUC>V$bxRaWX>qF&~rt{~q5BN9BM z576jlOOjLOo52IPz7$^1kI z#i398PK#mLGo)EvHSRC-GKxr$k_^1H&32MY!?)qGsESz^HrH6loyFJxCunm;07d*LdUQrk~1YMv-+Aa|mY`JO*?*3DWxDB@;~ zNXrOxUZ3qSLZl>8Do0W;+O~-KXsLBya3_e)jyEz7VEaf?%Vu8lvl7NckR}pBhmFF! z-(KutAspZKRL%&Tl6bCfOSb}QC7=~W9c4Y^Upw9dOGIL0gxx(>>ota z*7ADVXM()x9V%yF-MkR;WVy#0Vz#HZCw)9pkVC2qFNz^}kRFGHIo7JjT_Fk-LACjR z1$_JZ_tz?*Eo7a2R-45$sf)oaWq zaUgGX7m4DS+*eKdY=GD$^W~g*iYFagC@2%xccFB4`ES0z{vJP?0?17mJyFz>eQ)#0 zrr#s0CB@1Z!|W8{Ukas-6~cL9A@KY6Hk2W-LX^-f&$OP4>x-Wg&9h|ex6HfRARAgh z40kCfEmi1wsi~`{G9ZTfrulYGx9ID=R7wxPKY^h%urih%Atzb?sjVq?uCGD>zUTX} zemqUgi+uU_R%FyGYzki%g@Wn>H$)1#pGS6IOy2-}%-aJ6wA1x=EFMm%m0DChex_0^ zj0HZ+R|&yxCc#l)OziXOGRPB%Xp+_F^Athri-zDo*LKa(2f589>L8B{ybY2ESuhzn@EdVcIz)u(M3&pkU4{Pkbh&JPO$2eNcru@_2(8YES zEP1$-0vDNBLnfzx@L3kx;9Yjzg>1%8D(jvns*pW|7B>iVUp@A;j^t*2TrX^py&e1u z!ZK{;717MO9WP;7-!Kgp%s1Q1c;I=d=e`trC&-pT^R^A>=lx(i>=}7$vjkDjC^}xz zg{rS>sw`LFZ2rb;gu+0&w9sq&flAu8?t*$;kH+FA^=zz}f)Jg>!hU_)S}micm)9mV zG?<4Y59P|lcfzAVVA!TXhVNzlD1qpUG^!ywUm(_=x^0`$lBr7&R6E=FOE{WWg?c&# z-@=bM>xVwW(&f)X)+}W2-tH(?<2}VtB%mgC$|}g&&TzUW$*!MQ})%6#=88Myy zOb0tbX{5d}|JrLwwB&BMjY1kzP&ZDzM>56vC)zg#-eETf!2-H8XJl&iYl6R-v?XTM zE9if2rD&Vk8QIa1#J7CZl!vfeRnCrnVVimcQLv1j^J)5Xy}3vHC)tD*ENj5^$j_VK zE#M18sa`MZxI!$;G3=B+oS+}1XR2W&@ka8mRs!eNQw+U%vCg8a{oBV5^hG42xu(w; z?V3}KM39B9FZDZcp6WqUc{t#kK&;6gJD6=`IDNGW zzA`4%IbiJ&{9kI=OJfC?kej0#MKI(Eqp!SG9CFF7>@1;}>+A37J|Ol#7$4jO{8vQu z`p86}2_vnG8UdI0D7WrqMzniC2e+r;JRkMGNN1V%S!A-D_Dv%Ur$^KHRD~dZnWfw) z&3gLh3W+1|rsI~>zG;l%7a%QxgA6)+&MJ3f@$8$Newjz+SY^w$2Rb4aC5cvt@=cXdcN8Yl1CJ|5X7!Z$4k_vnOR!sVaGNzbPE1mC^ ziu<=nPBH_x>73W<8S&jKQ$7(beSdFyk$SR5X^vs5dJ!vmX+8tGai}` ztpV{GD@n0fjNS$dcL0K83{cl>qPXQlyGu>K>HbyWiqp+2q8iI0h_*rOd_!l0M>pOO zvNzF8c)oC4^USrY&`hf`;x9h|AuZ?HfZNgf_2alV3Q}l}S8|e02MNAJjj+_}BB zsWWIhfmd%E>O#f46^7r!s=^q%s#5B9<}q-!djOkc&)%Mzv1^E1PRaFx_cKAMnMXEiKZ#|sZOY_Nc&j*6@hA88!z6@^AZxN&rNGQWZ zM(uu7`J+&$R=y!)~Ee-lVU0NrvW4V95oJjFZno2Muj1(GuzBJ6We_ALH7Y$ zbHO6hz>>wkb0-E~91)__w^L^V$X445q$6;3HOoLJm|N5WkI;{WT(bi%X6jqR%zvaj z$7f+G{4_+l4=UAYI`q<3rRa-^tpFW2+vx~Hsm&alXn(da2_3g+)#)-ox*97bS*ncs zt5gT=%xGL=Lez!DO1?R6VNDxL6t(Qd84Xe`VvB3&r#Og!q#@KN$RDw>+>WVmBVG+z z^AGJ^w>u+)$MFcK@Dl<53~du*X7PSVrg7vH9ZZjRS+q04M_SNuM*S$8YDDtrF6v94 zVH5k#)UZ-ZL#&lnWUGJ{XzGX#0=!CxDf#!y!?!}5Qy|-7V`-lj(HJUXHsrY?$O2~E zeCxkNJ)!TWC2BatO9Tr+Zuu|xJkKkx5bCo9^I=$a#G2};Dr8iue6rqkX2T3TTF&XD zMY2i6_W{Ss`c!IP z|EfxkWlR30ZTgCbCswi*7C{Wze4A~1l)5y1_xq>0O6T8VLDmD#MY@l|gN|7RE)8ZK zr3aqKzIw~fdJB=1(WOlOk^hQKEF0<@;^zd7XeEksUgt}qsC`SS^Pp=TR~v{@N>-{G zs1V6?#q@({x)05M09?Xiy~dz}v&Yne@hG-XZ=(1OPWuSV2td>p%W*uQ8loGWZ%}g*`D1+SN@{=o$M&5n z4_*Z8ufoO5N1U=@Nt)DF;xXr2Fy%S}w|iXM5{C*?eMJC*POIqoQr8rvGiZajeLye* zw4Bh_cnCNadCkTPQ0^#mOCq>E5{(grE6+H*L`B+@R|XZQZYu%i&oJ~zJvPB=$NCZ9 z-gK?bkhG@ujrPGk11*};H1Igkz9n}4#|7!k_nGMjSu1a~7lV$21Nzda%E|hC)328pB3`vu0HDT6ny4vrY;?t$O0QyK6JZ4Q|3b0$fakGD*azd`}E;% zQw+#~v})db@G+}otq6Y2AfCcgJ5}$*d3>E{ha{2>P3M0WQh+L3&l7-~vPb=+R{^)Vc82C&$BH^5D9MSkq+O?%v!Sq3Fle z-|KC!#}Z4sZaFX+u4$C7MFqHdmX`X%jrewH| z)yMztPf_X~Jh2E#8u1Zw7C&Fvtd!MBgccQYWj6Ao&(|23iHdX5i|Q|qT^Q>biK6m{ zT0CvIdLQ!HmLjwMKy<0M$yKSM`Lu6L@9>|GQ&mXM4LzW7u5D|+ep|>o%E@l8VU|d= zY%z=hM7lIRkCmM3;BK?}adEOYN1-a_>a5ljpZP2J1Jxu#_NTX{d++&|XuER0hS%bC zV#ZBZr)Paq%^!~Jp%y`}TIR!H&lCJI^74Sll>x`D{`<$3mA_Z zN7ry>6je;URRmNQh9R4GN5TUW&Rlkg0xZtN=yE=?4Ta9}Hf>sKKWF=c_Fd<*M zJ*I293`74WAi`d!`0H53WfY8AznVZnkuY$?U8&6h-(N`4$3yo;lx^QriowNidMdBJ z0FI;uMRJVHz18e9-g8VWWy@M@^5Eya4=q;WcQ}YoQW~$MsgK9(M^xX~CD@eZ1fy(S z-l4o~y$-*YEToSwG#S29`slD3&r(*A%o3QQFS2a*;O6++K32aXUr`U|wL_-w5AczW zg$*&nRV0~0)i%hn+s$j;U7k&T`J0)(lvz#7*my~8J)Xnk3ro`!OMQr_!)G)PVG4_3 zqwll8UGV93==FwcDGH%(_Ov$seXVtqH~(G_NSW@Nu^9tZI_bJk*ym**Izu=@{|o!W z{eG{g-XGJ-Y>0#5qcOgLtETE7c-3CR|63nVNIjE^HUz(}{}Li0V=Yg1(A>gpnqJGe zJ5H$R$E_DXO|8IlRCwY{GM01CEKvisVqDro?Fd(u%ns$|v~s3m!y;8(v9GwFD<#Eh zpI9!DUR`whoQK>}HcYTUO&dzCG@KY0mjW;}CF*_>Rq$wJLVRNqohtC;9TMUz2K@qTiSUvQNFOFv*+dTYA|OGy+gH&fA1Jn~^WdVZD@v z%f}IQ7%qzJLm4Bbh))@VEmGHOUYb4(RAtVIN?_iEw-rZ;v8!9FcbDg1Dnse*%0iXn zghj#x>{dy3-6aw5Edk@=y1mf?tLMGH_>ZHi&oECnsD3jflbsA{6OcGHZ|uzBsYt-7 zzDkl<26)H$AT?2WQ=V3P{cf1ABr=AnjdHY_hfz|COBdJnKY!orqp@cY)O-yyq4Lv@C8sr zzRsg?Z%FZ{U}d3B-&G~C_UMQd{+N$iZij?4 zJtF+kr`G&`>x|GG3FW(isWpN6;=bq=PJmdUxl=J!cHX=C52GgFn1rSKETIvFA;aEx z>Ih!)uC9aVU8p%-t7WAj6e!dPcX)N>6^iwirJkp-z)B@q1V>TTbOB;be-Bf-uwyBp z50S+FdByP4FfBTeaT7|nXI|jOXe^u^R-F#c*&X?MYyV#9IpVd8ixq7-ar5XxIDgcP zEL}~eT$iZ6s*57&x~@E~ABLz{1e_CF&6K5vgv)!(MGef0vZ}wm;^Z#({dn!=Rr7D0 z&V&Z3?gET;&+(McBTGx-!O4mwCl&(Q_^7dtcsmaU|^H}{yX9& zrmxFKS}AcbF0NZ5nxaZGq6CUbE?>`%^8@z?pw;ltjPwl&2PX}|CnmjX7=UyjJq0gy zz9_a6YjNOedmMSaetM|_|5^4yL_zs70Z5q*k!23V(8zpL8xau|*zs{1q;2=u+lw}v zKmBQ-mY^eP?Rtbi(3jL-#h@W&Qu+MMY#(IqJ!Pj|Hx!)3h87~+df-Zy`A@agn6dM@{1yYXUi#`HpP3G z_Atce3m#jt9!tuClbrD=VOv+Hv>=m?1KeedQNaO}H_Ijtn)}@>!7lY(!1I|NvoE{G z3sn8itG|*V5z5WjAT z!)JCuE~|b-yd@v?FLwf)uKHcSzNN3Ha=Ugk;9n@Mo}(VTE*3x>!zU^Dun!QJ&VbuX@F&34D?icax=FhK(uuN`X+@nuZVAsW^<%+sO-JzL2*+EC|rk5}yl#>SfO`2&$ zL_%*m-gVmvRQ>LfiYiLu25w@vtH>x)v2hn&` z(R>>m@w!Q%YB)Jhk!T)UWtuaw!{u2$SaB*nK%m@oC8JaEr?TAc9Ymq{rYZXj32y5F zwrq>ocI-bQ|IWDd`=w=_2%ep?euJgiP*;Cv4=aOfFjl^?z3~#_-s_ZPCj3A@1 zB6Yx8Y+nJn?Zwyn(fC6zg+fB$W4*|^Ib|d}+_^%H4%uvp$*b;};gzc@HOM~twUF{^ zT-qan4IxNWJWg)pj&7gbZ8@VDVIX9psx@~1bm#5^F*M}HCU44rxAx33tgH{-8~s<& zu}kZC#54o_n1z{u!bJwuV+i?NOk)|?PP^Kop-Ls zi|LC#u4H7UTE#tsXc|C%<>QnrH)q)ho8Psi!Ps?ql)Nu#9bkl69}Zf*qxvr~6K(n~ zpN$wnUrL-zF3sAQ+BOhX-{9&zgjv}P_b2#5ov}+6-!~WtNli(3)eA4D!)IIa;^OkT z<8xlMPANyItO%1mSc_E5mra9c9vu_wrsE~LEHkD`zt|w`SBl79A1P&bp5As^!;BAH zR~62rSBJ}2e5<(hIO=|N$H(X;?GsA3J!q?><~RJKFyjhi;2U(>CvrA3{8byEnT%Uv zl(R3)kL@8%o}$p)cYQ6o$xy3-G`C-&_t+rZn|lU1))Q(J)px1OXy6ZU=MURJ!S<_^&8G&{<1r4p~eTJH6Y>1k}^xK#zi>2()t0EYpm9Mk79MI^$AU0%PnaPOQ6 zBf7^SS;G+IW&kkb__UcbgBB~@1I@X%r*fVK@AJp;qXA}04SS*heXbeX^bdC}N2h?g zbGtJ0KtzFpMvgH{^!t3176CyWC83|9ylMr@YQ3GKjCX5N%n_j*70A+8rjRKjORy9C(*qG`oG&0UU=yjaAwN*Dii=w?y^ipdyI zK}Tw$C1fpeCN6bj_kLR9(CgvgNaV>g*ZECBEdvlmzif_6SCSeI%bT;dHGse2@CgBd z+G*P>(V_6oaqN1`XasrDrA(a6Q&m+EFE~HX1iP*t$}ia4DOY<}XXjft%s)N?;Am;Y z*zt4EfE-&_)V9O!s@*m2XY{aKEwBG3>kOtSr?gaJlS{W+u_kZwYIklOs#dx3`R)T^ zZ*^h5uH%_Z=HzujaekrpuyciBdh?ls8!Pf;@xB>DR7fo>BQm9aWOmhUQ5Ceey$$2n z33Pp(FC#s01JS5Y>F|>FmMpA5I_A5i4jy|LH9QN-h>58~uM3UVY2da^ush=Sdko%e z@PJ*k=r>fzdDS!=2(vgmBQMv8>=P6LN9j?yyNG{qCeE6T>wX^{Z$lSRuGxxeb=3{a z&qp6goHh8J_T&1fEmA0Q=a~)RfU9=yo%4B1WA(v={s>wi+GBu3c-oK+ix`3fMw{Jd zTlZkXPeyCCh}(c*-bWNM^yaH!A7xEzpk_No40PF01*r>C}%M52;jXsT7r=CrA+MI31$OYTBJY?RfAPhGJXv4v%0JD z*o6|<R0S#%ipbSh$IQM{%c$(y&jCytq^oG-0^cA8 zCy9U5cJB__|J<4wo@^L&-%;>O=2)YSPm|5wBqEYVwD=04JaV&Wmo{Odz-b2tH#R*q zuN82!M{z1sTECHBBADg z2@Me=GGon&bod+Qr7|E)=)`cOLK6;m9%S(hv&a_5P#5L60H+dY*j0w*Y&&43_p&to zMmXs&`Zbv02)nAeuB|0(K=(S_M-`%H#=E+d#btF@8n*{D3Neg1jm^C`BC3xeZM#0TI773@&l+ zr?c9)2bM~(OJ-cHujk+_&@7mA>d5rKBn&5(;w7S+DvC3C)%b91LKA~8`T=#>X3Xr* zzj^L@&7R%0{})C`hbtDj8)2JTH5Q(a(Ec3AItuki3lx_|sC=`~49cycY?P-M6j7>c5JaRNh=7r776E$VXE}wkvZnFCI z-l9auuq)UmLYp(Tp2utt#o_v%yty#LKFjYBUSTOz%yCftIivqMn!(kyV#IGsuH~!L zbH4mNpwD|mA(DPYW)}Vc_^?Pp#v8;wC~Pr@&2JR&4y~H9)p4wf4Zz>BmuX*Ge!@HZ z2d4%H_98S#g)I?hQ0waUOC(V zz1I}J2f+no)Pis8;-U}H#l{bM$J-{S@l;x+VN#I?bA+D+=*}`vV2LK?ZLIp_z}!s- zZ34ax8d)xXLf8UF8!BrM`?W|?<8U(6%QFtSIq_lx-E6Tr6sN>B1A>7}Pc025vnrGZ zg%wGS+F>YZ0g6(BT_f>_%3UzZGt-WDJXiSWvQi4;vV;_Tt}ru%V>h&6QF#bFBwC9!>MSRsVC2mS>}KDs*eZ*44bsW|kOZBk!;P4`2JA z4^$xe77F0@G~qznUGbX-sWw7ktLVZ9=(jrSMJAg;-M9N<@%EL4}|^ zSmeom03f!*!dvLt;xkNyfl2^doW$EQLP8cJvbJj3A^zD?#M?lb%Ilct6V8U|dMw>p zsn%v|i-NQ&lC@9}G(Ax+hj`PwR3l|sH)TLYACPV2{=%A2db)Om=M?^(GA^w_x#Ico zaq6o$#rVv+FG%nvgJRp>6hk}tzO|Tpw@ie$)31~Lw5)DD-_SoBV)+C+ugAU*zS%zS zCnzf}{`Gxy3c~myJ3(KX>Y@kD@KlQuJ+75X4jUICA9@TH*EQLWc~>w0sdPh_ZX~jK zptUSs%e_4t-_5^Ul>IFN$sYcr9`$A=B4k4@eR_xcDoh2;`Pq`evFKex-e{;j_qCm* zl!!Sz5$Hgxw>?D~M*T9PLA-(SgR7{t2gjUU=ivzX~n$oyC^?oRWj9Z+&`kp^N|Aj4!=-cE&zBx`O0}reYZz(F` zGd-b<0`oaKK2P=X+Rv+oF%f?saNVEXbAjOEwK+)!p7+0!hVL0p37Am`0MHC)pdK~`l20~-uuJ5P2P#i*Aqhj;R z9^*vWzIBYSKn!(RwyVRK8Gw9S2v6=twNuP02s2Tx(O4>yE&43iT(AwTZ%{b&Vt~#4 zFhhC6Y3eK zI)GKqqJy`b*hq*;22@=%Nj5aZuh!m;g=YRZo}1^B>0$}pfPI?SKA-%&{X3ELg7Q3l zpwQ5&LLhE+oAo&5^MY4gJR**17O5lQXpfuIJ0BGf=46X4&H9~yo_4cv{wqtH$%;fH z`)Q95|AD)>8q70Q*G)WQQ&*DQtOZX&CSs9^K`WY!S0%$@&rJ_^ci#YuJf}HbUFDD<4fXPb2^F_#8@oqF#QlT)3VU7#ZVvv8Z{`%3K zibT{cXzffD%H>!rz-|>GJ+`Lb5EfPtz!?Y@;{v42#$VXn$-dcNI~! zb~)a`JzvVqmx%hgnNvd&rom^VTzi5|{D{Y9TaN2akBUaj;p8Q^SRG62$-OR!*?J3M z<}5!UF3K{PJMKe}aKuVBn!4U9cIzvgKR)IDm)z__XHx((DdPPW=8Wgn67(^14JwOP zEfo3Y-B2orT=W4`EY?rZXT=!&8DBTKXQO!iuj z-{*0mAt;+96KftF{}Fh!ly_oELplK#)T+pp2w$#>48r1O7|aSxcZw6kQ?k_@TYuB3 zbGaZCe$yK*S{B*i--g_5Aj&6j-uRxX0Kk= z^BDLWx|x6`q4E`_s5};JcuROIeTlsm;HD8|&@j^GOfnow#lE^BqhCLRh#=hmx#(b%$T7uUz}tzVCY`scm`m2u_ht8KOzR z2D@&Mmwv3dkHUi2GTJxHe-`2uJq;c?4A@<5$&~gkVrMM|$n(|IFIPH@*@3sb@04B8 z-siq0XII0q!=^+5XISHejauG%DjU4B&7pbDyLs6Q3Oz3ySA3MgpFjFVEBj5$=ag8H zFeP)$-KtOS_KoO&N)L~MtYZj~N^^4#Lfbmq-TP?V@NG?;tcgSWixvUpztZ7?>Kyqp zYOea9(v#l!ehm7!2ICsA0J}dVa$Et?S^tA0CgJ~CTE{@?Np%rVO^Lhw@^LM;n%+^P zJ7hnLriC5HOofXLiQ=}(SV-I>n{>jZ7`VIY$9tXnK)s$AdDXClS&t{q&>gg`Jbdy; zRf^=&K1wPaUnO7I zi<@D0f|5B(uSde3SK1Y>%J{tELOwp!PpI!y+I~(Hd}9p|3PD|z6bofafDUH)w%yXx2z$c9a-nW*ZD*VSZlgfdBg=X;S@7ogy zdY@f2HZOfgPCk{p^?aGw#M$P+KoHq$zVaP>W%t6sh^kTdO8Tn%ADY^{TKJ`PL0UACBj8Du=7lu!Mry)xSB64c zPzXXnxy>5w7HWqp+-IfDlU4xaq76IZAGE7LnS#>3vb>V%vjNPV9h=?>9AN#?dCNuW ztUZ)HD>3U7T1S0#2@2PrfnK_T=mXyUJr!iI8iAo~7!gs6u)C_pVj%(wM*QEq+{9LX z@8hs0Yz}#b#IOB>!zU45Kcgr-*+B7?l|i%jt?61mC)9)91`f(eSdHoae%tQbuQ`1| zz*-RlOjVD`?eOvT`o0+l(J~^dEPmI3IQf9!SRxODnSOF{O3}~va2iIEtk~LiuU>My zaqqx56PU#)SZow6M*aILbPS%_A&fJ5`!q_%2Jx|&pg;G@|C%3bWK$tz-KlNM6;r!d zd;3mIJzACMD_QcA*sJ6F<27jZPZWz9DoYwZM($qiW@(B=R#o2}Jxlhx1XE_)Je4_@^7mljB6L==l*liwU+e*NyHHkAgD1&_>? ztCoLo#-KQE+~ZEITsD%=+#afU+Fx%rG{_rhI%MQ?0~gTEUL8--MPc}=avt?NJ-jEW%}feOz?oilF#?!1X~0OHxHU>m$W^<{H|+Ix~@OEJU)s`soYmdPT>I~(RrUy zHpUk}j=gR99d>e1GqT#GRJ#b-RW>1kRznXU+yK6rt& z?1le`48GSzIM}(wNGfai+Rg3mCX5*Mt)q+!i2D491X%bZEi3@q5k_|>)ZonJdicq1 ze0k}2RH=GE99!L~ZL`nce9IFEM@_M}evX^$ud9)^mq#1Sv}}dyT*V|Kor8=5idSAR z7F`Eoo;+)C*AkcYI*dhmk%|F@EFVu>>4hb5W#1Xhxh6R+o z*=dH*sq-a1I0+qbh;^}&^>Eg|3|Db3P1tl! z4ZDkHtKDqt!{eNDZ>~%meHb8ah4brnN%*~`jol8lk?%`qAy*6DmAi4Au9iWxar}KY|46Nr%PXeh9)kJ@z?VgdnSaq z_Otee8Ze1h>iB&m*fO|-#_S}131a`MKJl52=P`s*{w=D;L8OX8NY_xi3cq&3tPF~y+hJ3wz)Tn?duD`%PGXB*#!etKPokea@ppv9uRwWnJZ*Yo@CiMVN|&0zVM_gbb^y4_+lL$+DfxXN8Hu(o z*e@|gKy2|@9uKHQUh)0jcS)x@bu*(x( zdj~TA5W2N*=Ki5woz|$1nNwE7TneOGiqo``PO!ditU!j~g}DXE4;`=HP;9)+lc*`B z{0HrVpG4Mp);HTou#>QeF5gx*>e6D!J9Dm|5%Gk%skemho`b2ub305Bg{!{XBr-ZR zLT}LPoANSNRBRi7J*Z{5+}W?1%A3gU%~9A{YYZ?ab34k@EW_Jm34nBi!JK^goaPV* zMEmQ%pB`3V9GXHQp-^~ZbXA@f6rw1)kL zHre%_EIvIM|8jA54g&AY|H~NK&OJx)Wl_@cN1Bh3D;tViUz=ffF3b=V$oM<&mu^cMr_i)2L~a4(EX9!p}*0ymf?}{6bZ~?jQ_4vuLCQTD zdGo#pz1>q~`PlrWjB7NxoEP=^=Fj_ZR8#%&tv-b3Vi$b<_ButSUE`DUOF&TkVuaT3 zjRZCURpr~^uJ7vnLZpH54Wpja-+1@OYA84mqJV$c1ub78=|Vk?gQvX?m{*!`MOzQP z^Jt1*aq8=KewlJNwK++gw}4qJ4)}plV>S5buH$3h1p5VV?W3gMcP&va6Recg;59xq zS%rat)Tx$nhVc|mQV8E#k4IvP_KSW|zx11ELGi2pLz6G`iWn}b_{HZvPhq2JOn+X# z!VkAYpO^t&~_ zAU7jC4aRW@D<$x>+lOpxSgj@h`vgt$RJp#iNRGu+b4>x_7P;SqFZVxWHmMZvjouAr z-GS8WCP3BHjUQh5<-Z*MFXCe3XSmTMs!b{&auDxcRFS!;IF*%)&dt;s0Mtb81?QF1 zIJ8k|bn_EYoggyx=gS%bIe(PAdl}TH$?+-bou5TNgh{8JOO{8{-@t7t4)EU+2Te3X zx$G>fbkuZ5-7BDc$Az~?l>p!&;eSNTPzmHAU9 zV2f1KO~s)?aY1dwoz`L&IQR5q6x8@P3k2I_X8%ER9qJC(2PQX91SU9ECb~6PvCt!jXB=-9*;tUC!0wKLoOVB!4Z$QzL$^` zUT@PmBb-8t$($?Cv!NKvLBoxa!;~yL5tof^a0F9Hxz*eRZ>i+3^;F{H^Q+&NEnKDr z8AxnGoa3Ob?6?gmgO-tj5ySJ6OoJaIjuqV_QbAbzVYgf9ya!hOkm0{ed}8bijr4i6 z+dnUBBT;y>xGz+9KE?D<-fcrCTAlN1Fwk1N6ts`!)OLKO3$c~@X$~ls9u`LVw!uEj zZ%62)3W75`jQJp-l9X=Gvl2aDlLGGY9i^Myll$p(Lv@- ztL&2ws|mE1FY(RV1MFppg@uRoWfPNYCy)N4%MQVONTre&gpbX%(Y-GQWl|OLDjbz_ zm>(3gzc?L@_2Y^1TPAb5SXMBtAIgsw-LHOQgJ=|NJ+I<{wTOb}{IZlIc_aZ@7p2EluWw+Oh`zq~LtmJ!}1VCY#9yfA8!gVL1SLu@P> zk%Xu0Ko^^8F~vH9M?Z~rcu&Z_*VohgruJ;mdQP`P#7Jdn$NNorj}K7=twTJU*?9oi zXV~yXbC({i6cdrstDfMJBG(5oI~NNbaU&;N(_Xk-nvyZI)Oh4X%ou@C7*OMuWE1l% z(rh9EK^{(58}eh$2FrPz;P4kom4pa984I-0PI}dckgcAK-7phFHBv1DS|Rjt5j=vs zbMXz(i)tqV4L;I=#&_WWdF$>M#OW25t+0lvl|?|pOFYK|kUn!J{GGfC{e`7o@7hCs z-;z-`xX>XP&N0*S!=D4r^@BVvZm!=%e+0;-K<`c(^2`WYxZiv>uYA_q7=7(^H*SXN z;#aGYq&56B_48ZLZgm4t71Zs6Ks1L3M)lXFg}QT z`pqL~(s`%G52*=PDnqw_uFR^C%Y3!)kN>mc?1S@@*70mGEUPF;^I()j;@QCYIrD8O zrS2&~(DAuO_XXkREf?c`}v$P%RgvrQJj<9NyQ%wrIWp~Ya)TQ z%o)C0ly*ZDMCVX&%SUOgfOJb4enQh~yysvFVQIhX2Km#+EEG>!4#ry$si_+62jkwe zuU5-d;NXQFtRjZK?VpYK70f1TpUxSb!3#ho@PL~PaaWqjoFA(7H>oyLK+7?<>S_qq zB5v3$<s8c8}H8Y2UJey{XGS#Q4FqEEm`V#5?_|k zsKOj)G)r%nX7JP-Vd?iY8r7lRc3<`mR{-<=|VqiRO7x_-aPF zcblm$rp+}%m^|HOSwbqUGF<@reji@4kAQQ!oAGAzjxjgK1+Il|6(nk~nQ+ug%`jTe zOA|>GZC*9O1eFc^#=&U)&)m!1pIuC+iuKs(!|mA(zl6nG`H#)qb^Oa8F){uL($JO< zKk|xrnU$|B`Te6te~nQX#$#jw@7*~C?yA*^PArXwtzx@ZIJN==vgDNZ@TR;N=Y+h) zlte~`_daZmvI%>ho5>alV?KpncVJ*N26N#T zL%7Y0E8&K|RNQctQo_VC7bC>N#t$K^@+eQ{ffCcLokhE{9bJ1uQ70k6G`~-M7>`kG zc>`|+oGD-Osu&Sm7E@X!f=o=^VeaUaY%SE@-l+4ULZ+)+{KU1BRH@UmzwZAjzx;sg zB|yyZVxXR87#Wcs@yIdf#2~*>ftSMFfFo{o`L@eFA?vAGr;6yT;mbL}-Qd-b;0n}} zWVU3L01@erbjM$eH}dnir;y|>Wm~w~&c-bP<9YP-*Bpg}-@Yr?OcyI2kL$Gjh820+*T>G6v zblT_yohxjI(XfHD`wt;d?SL|AXj6%?x^;Z^=tNfmG6@DIbLCLD(-^OnEtmRA6mdjX zw~&$wD{_vsvU8O36~)SvzrP2gS}h1`JRQ_z@`m$(LKLT+OMNTu76-#b%M%AT#DE~V3b4A~M=ct7# zRgJ4mz^yn&q{(6R*AWz-0?CaCtp-ohge`eH?r!=nkRM573C@XXDz0=o1JHR9`B9uL zXqoW(W?3t+n~|y*fC#IJPf|A*L`eo(r&8B4fC^Ncv2-=P?kUxy&^v}CYKn~nyO8k|KMM4W+K|^DriGgM&U#7&C zs-!c>i@Xep?(eZZeAe~tH_mAq z`o{WE7*WdZf1KcZ#ouo3<Bz}vzm=W*H84k(+SJaC@A2Hg#ROcs zUn_FnS6m)gm}!nw;|`OW>F2pRd#G2YHy@oa{4Qfq;fxM6uYLsuQElsxs>a=^4i?MA znxA^hWz|AlW{)p+%(zlBMhUmKV`@m8Vh&lFtG1gs(x0IHO;i zEEI+G2Zl{=F6$X0B|)hj@);xS0j{Sm2AjRSrfP;qtm#(-goQQMU;EB)x1g1A2U@cH z4zttE&EzpHa@b%kJ{k0AM-v!QYO-y`W$ZeIC!mLp&1X_?5O9tQ?Y517u!)pJLW)tQ z(sEt=q-;>1Z1sb6s^F?+c05P|3*C~y^h3(=pqR7rS(lMfrCU`XQ^y9#NS(mqwkMi` z@|lHEI1MhXsd(9f8uK{sJmbo&W0HvxkZ$E;<{Tw-h~B$(f1Tk+!?|zt@uL_D1(#Ip z4Go=8Jf%6u{T{HJ5M!+>49iGPIVyX1^>^II!q7?dTsu{i{UuhIo!H%$ngz=k=!`MJ zOl%7BKI?DA>Iz6TZHKza)KZ$G+uwuXrb>&mz3Lew2y&bL?|p{`obu;17V>aZFktpfB?71qs=wD*wrgJhPq$ z+)bMF>e{LEVj|;Vt@Q17{P3t*^tp}S zoBhW{Z_sCqO~|4xvSiS>(1o>}duydSb2z-7PSMo3-?XB1rqpV`{>4AfD9{%`j3eVR7@j zd9v^Eq`eLWh7`KLh;C;UbiRK7^+&Y$Q3C$Q@v|m&Vp4MM&ll2(8}qltDJ>?4(+rLV z+5Y9t4d?arMIaZ1uW|i^@CzVg@93=iTYNv;$Nj-mqg>FHQc8l7{d&yf6cYTS2C0Bf zHG4y_Fxlx@uOe!sLshJpHqh?3c+ow0Q+L)s!)Ky6SY1m8d0+=BgRQo$gRWv3@}}HX z^IZSAX?v*3D#bFe)E$MMtkz>K^ac&T8gNHiG*4*i1Q3BfqE#5)5Wprw6$7Q6R2Nb|Vj{*>8GDcp=wr3CtOfKcn+{cbskr zn+RgzdVo$fs*u^$dx`;Zf%PEYlu4-DX>;)4?HWK_VWq`vq8)XK6(f_KWAMMycUyUY zl|oPSNpzD%h*<3@#&-uCxQ5%f@KJGE-nHkAMEBh%Gae0b&90JI?*RDxtB?)*?GMmU zBqXVUHTx6v+Q^3&vpR~`Sc?_5T$taeLDgc|d1w1)8)ETbquel4q=rx|d-1OX7gT-s zKL&F4Au>vO)EvEt%P4?n?RN`nB{``EZ(5b#Yo6C*Vf0pXkGw*{*T@XB{3c|ql^Q#E zfi?i}c0G?=G7A0iG;eRk%Ij38UIB(IuuZ^sW1BzD39|AC#@FE$6ML>E@*0*WPEFmV z$CL7oih3X6`e7&lqTOQJeQ)QuA8){Y82v@OiADH^@WF32C`Ee9eucYHL%-SLB+~*r z{^X7@Xi$4ZrgjwM)}X;JbB7h+RwRLXW7sJCY;(%e>zg8!A7Z^d~p=KM#43PG*cv zxqU-Bw=X<@%1w7Y20E6F|{;6Qw`eQZ3{Y_qgyP3e#AIa*c<9@qGu_;ZO=Ms1OE#6j^ zKqK6B(Af|Ln3Re9Zm_nmLbs{{5gD2Z6b^tidTVX7^-6WM9&hC7sH;CG!ls!Yn^Bwv zHH)uWGf6tIrM?@#lol6{0!)46B>e{XzDHWr*4OwnLw&(XhPqc7B4gTB5GS6FfA7|- zA#-uCK>RK!yed|O zSzKz?a>v|z+`&C#K6vYcjxV11`+cxcSNz!o=btC41Yy?4Y65cR&_b+9(!`49`n)uy z(ah}rs3I$u+tV0?NS?U$q3R74q*Nj>)@;U**>mF8=t3Wsk|RGfyo^7pF{*O`ELYsU zxT<3%ZYGDlC#WHg;it<&y|T=r#n9+= z4|Vd~6H;L>7%`Xsup@hvn4$-z;8P0BR1!2aGdkX=;r18p&7swD1?`-*uVi%jBxVgy zGX0wL8osECT3g$Jv#gMB1s4Qoc`BLl8dgm+7 zZwvnP&Wft`VJU5!NT*3Xnnr#%mRI88MPdHCE!?{#SMA+f}cyFu2TO7Sk{`kQg5gY6_M(StBr5=1RYO>%*?Y2VdTkGMB}ga{L?jx?YKr6O3w83SkicJ zh?B~?fiiXum)u}OyEFHb+buG{`doD;WQg%@JSFR^3Mp)ozQG2EFjwI=NwJdS;Iw#9 zCvWxGr$~B7RC`eCQ|q_R6*vn-3Rk!QCX&AEBenR~a6@6h~T8o7-CR$yXwm_!#Pggy!?TV!sLCNR4tN`?tB*SlPeB=gA%Bm=# zgRwjm*hDLL*6?q(B?tcd3M<>iF!g>Wh4ti^i-(q#usa81)$24+0}}FOOoawV)dgk1v(|qdPPi#mMP^@?;obz1jbPV+z*)v1J z3YQR>%Cje{`%6*#w@v?|v`2}u!?Z4Pn7nOvZ=AR|m=#v?{f zycN!vK%+fV8r-PdC)s>0z5zBF-rR)Z(rL+nF*Cga_je}=(0JLOF|bq^rQdFKfHH7D zFNstUMj6wdUkpCC%yu8IUzhL=N(~s4KCHJ`EOt^II+lW3(Lon0KI#uO4NWKL7wFNe zh08os&o-7)H6%3JP8jQId3UbmYQ3{N>1B0+ax(QaELjkK4k8TEWBENOvsQ6wE^5GO zNW6iHVhHk1k#S1i8(&&*WpL<1@rU^hiVPaCSvv>j*@Zk#{vRsT03XkI$4VplJ;vlo z5BGrs)a~b0q2P@Awq%kZe`_y4P@Tsn`-L&4RDeNg#l;H8j(puYMjk37tj;LuRfd6&oBGv+MryYVmZ`>T7!$lA_V@dKE6Zj~i6$S7 z(+6Vax>2IV)|XK3-OA|Tx9FVFlbJ89?yG0>BF&Ej1Uqo3;Xq~+A$=11*$0O9S*|7N1|0vl?QgD(E6`Xi6cGknQMSSfB($WG_1pWaaD zbnOn7Dg`bX9FAc_N(Jf7^ZU6e@%t&o;zh8lI!wq(S$GT(1ACU)*z-wH9R?a(I?cNFhx*h2#c4lKFMyjJHtU?$YUS(nqd%SMGUVm^v;=a!P!Tw!z zhuXw*E5aM1>E1)jg@DcHTb_B2yq$OyveM+DZPGAxHu;u!(h_!Y0A(=KBhIdHnRO5E zqrlX>x3(i2;-)r5b+Q!`T#Go)Tt{-krfNHH#gze0TQo|okUVMhM^uHiO3hyi45=wgBh z{v-mmSftI*{yOj|RZs!p?Y_4D@a~5~cSCP;J!pBp4-#xJ4JI1`w`XN^Xl0e_c9seGoMudBQ%? zzP?d?;~0~*$tT8A)GZfY^472zok;e6E5s0LDS`NsG?~4;LAp@GRepH;ra?oqpHH>5 zUR+v`y8X`T`KZp}sCWg1f{f44PQgYp))hzJ*z&*Hi ztZN4Aeqv zRA+B;&!dT!<*WmBEpn>BGK?4qhtPMt`I(d^428Qego(7-8}D*=o9%p5MO^+7}QzsIDD>6dL0sa+NNM$SHLN{_85P4(gQsZuuI zW##uu#2?sguRc4uRKQKFD#oc3=p{dwA;m;L%4ci#OX=O|-kP+FQ?yIGwE4G0`WU~L z(5S{7Yc$JHQ)@vY5nWJl?eb%h=+}KQGJ!<#gSAx4z{=q6S+mEb|ta7npq^BW||`qB))3!ZOg_QtsjjLkHS ztPUSc$i;1r=~ifgLr+QhSVU-@mgd1Uc5Bb|1HYbqv}(6X?q#N!A@)MfYj#z}N8HxC z|21k4XA_gzcMqVrG%)&t=Lc9Pqi;@>?D}!UsBqf)5`;B%P3Cr^h#|Ig>tuc?-Y-rL zUv}C~PQR0QLYm)wFh(UFj4muWGWyG*UsF}G7m7o*tD4TvQ@(C5+&a{hmaa9s-Vp;aRDyHgC z*K0fFxdg+LgbF0)4^5NcBAG0>RL(-`AovUpQ`auUB?^IHiF?cT;)|(>DFaUUG{up7 zJrHW3HBT-_~tGdV6s=&_j9}LzMdSw51oD)5f@C}x^$3Id}3)mJ3V|xXL>?R z(rVl0?mk9F<~tm}irCrn?tcVDfJzv?my}nKoQ_BDlKq30g71q6=ygcgo}qs>=rt<0 z?JYxQ>J;lGdNw|GjYn6z>2D8sN{dUf-Cl*7BYuS^3Vr0H_&qMZLSC<<&UvU`Q#f>2 z=#df<8fvfO2@xgf3OCH?zHB}jTR>qtibHiNzD1NeJS2)(fmgPFuG#Q^M*5?_Y;vFz zzKN;zvI5|iNUq)2d;>|U77RTqi^5jNmnd3z=@633SxabLS}dI?rW=R?V(L#k)mQr* zmqrjiapdc<9j7jOWMgPOo5ANO8d6n5v|LA<-wdH2+RELTnbs@>UvIE5NQe7s;K@sd zd)iLTs-D}*EQh3HTx+y!;G6L1!gw@t9rZ4({PxFC+Yt9T{$`;$z&sb&tpiQU>yW4)+)7Tr~0!8yy+aB{!DQyS-Q5shGwWEL5eR5r8H4%+ESHmPRIK`ti!m4H- zFlm#W^S?@A6TyEFOG=oWB-d;h!{qUq&$ANp5N_@5zNsHb*5pUU0OZt*Y%1c6EP}>R zhm`mkV;LaHKNtpx>->7FXIK4x1Gr<$;Z{2j2Y+qNld{O5J1Zj72^Jj&wQXPNVxM1HJmAA!31YkWDW0ds)OB{Y4a9FUo7t3MO}yfTVlMUp^ME|7Wbux z?M}?E`Ao23iYB2%C}MObZOzS*Tw8f;tGw}4_}YbejO>3Hhoyo3Vwuj+X0&*ETAOD<>TvARS}7bfmAlS7fKwxGy?@zvkt7sWJ}EJLWM1Qx>+CN zIh4f-Iv(8}gPkGHf$UnRqf2Uico2hK2?Vf171_1w|f)Sn;CZ zyy?b=B8Q&OZvcg()|64M>bINtpqz?B-xq3X>L!S3kl5RGXf!}%Yy_K z_h6DwxoU=Q`R-OX3Fy;GCB{m?Wf6ZLHOP$LoDFjHBs_o8tp=sfZ&dpH&=i7YdPOyY zuR&saty0(TI^9ob?=nI~NtLJz%@wUJgEI=-<#xP6gqpwN$WBK8|7%DwS|H+0PnD@@ zr(PD+B8}0^FanvI&li3;; zeyrm(U`n>oAp3##?Di(qJDF(b-UhUEd1=OXzr1?(y0mmIL-aR4hMos824uR59C=9MV)3$e;l z*5Z@5qh4h`YAFlY|E92K3K(2lY^>jlb=VQG8lNfunn*+Ac-CxuX3U-QjvK3W^4Ymz zKg;LQs;OxCgSQ!?XU3l;(2en*+-}>|f2js{Ae6+aJ?v(P)#${8wQ%@oker-E@dx2D z-=_ho->G`q+lfP8-UNk{pp{t)B%KRmGyx%c%ci9xFaRSmj=Si>3ht~7{FE|Os zP&25yrFP9*+X?UIV7XvKsinQXaszjPyTSTBvoJ zhRIUrsf)zUk2eEnC>45h?l(@J-uR#QXhXIoH_zN`&37i`meSL%LujLBYNsqJxQbF_ zWyVwY8ftw5yL)5V)ry*(NUKOxQvxXKC!-o2XUN@uRjYlXlyvIK7{Tz(mv&A zBV0cN-P<3UQjnt^7DxyK?X1=KLW zJ`J;@>8lE1$rXV{ALX{zZF~nf+|3XCOn;8*uX*`BsES_za6An%($d+}EX|g^mv{~@ zEGp(n*%Vuy`4mcY6ik+!6$Dr+U`PKoz#t1>)1H}|hJC%e;Obd<*S$a{ zWZcK{D+q&UgC(ZNXaN<@GFa@u74+=St(DgiQT`bDUY^*;`iHyar5t_-?7rl){;5rQ z?($AkpU0HIt@*#L*7DOsXXn!ixJ*Cgc+tw_&V zWSosWJ0CbLjdpbkRyXT_^#tzzM&WHaB#U`0aV<5TKs1y$e9>ubVfWXhdtw~798~6i|JjP5 zKQDv&0}tMRBBIcO(b>(j^e3&Cb!XS#W797(JouLlPr*Q`jhl*g zG2nj!vz0u_>1zwtX2;J$D4$AuAYurlDZ>T~?2$fLR)W?Q&gZL}Zs0gk%j~W2QJlT5 z`hiV%>xOAeCz||Hg3%SvwiX`kbfKd`We#EGrRq-M4v-zoJnGulGwEE5t*bAps zsI?Z(^%Ft$V4Rk%Yk~VLdL=h5VHZ*|Lp-U+6*D6?IP_zq;Hd+mq`YVvR@5kHQPa22 z)v}Vf4M}iwm@oWbjP{ZC#iwyMc+|AEUHjDl5 z%*pOPl*@!p)Zb{(MhbTB?D6_H#a~He8rOR^8O!$K@PfNFvq|tX*8#=A7?%Y0aKu7y zK=}2;nJPZhW}X3_24V?!x4Gk2teb<0YB|~OmeOzG8Y>>=SGx&7-HdwzB;+K!q;vs{oP;YP%Hx$USx?e1)4h>Il)-9L*vx6U26%lyZ3uP|mO=KxZZAyNH6u->@ zY+OE4=WhAC_$5+{F{$CI*hHBeEeY9Iw45Vj+hKnti;>6CFNE)n#G}5OFJHGD?YGKM zA9Aw5F@!mxYI`MprY*KX^({P1Je1B5&W#X)KDLvH^)SGn#ujF@Q(PWk7uAIv8bzI~ ze7%j16`PbPpC-|X<^&3l!a|laWv|^OoN~h6*@yR!u585)m$*NYpG^Jo%>nQ}CaLIa zHHCdSMAPEZj)sFmVqV3EH=Q%&FDvKQB~1_sj)7_Ef|CHbkVKkelpT%F? zs4Du4{TlP`a^y{yq8guy`zGv+zBwr$>VS)+coCr)R~mx1F3OV=b}1DOV0&^jq_q!E z*FFk!3mn-E-B2Nui>43=Bhu>AJ)A4-bN48xjkpC_-rk}N%^ZI!IJ~1qYCCw`q9~C? zY_JBXafLRg^`3_`?0!f(%H;oZ64*b8X&v!lc$(LfGJ@aBn09#s-$>7Z)lWl@=}m@X z(+6*7_Q%%St|3TXzS2%Jz$TeXmHZ|HK^1NW*_Q;nVV&3vB z)3Xpomn!7;%b|TgOLynsE?MRT)88!vT{NF;L~^-X7P3#59q*EWJ}16!dGJF$&u`+` zH>k3I(>-Q485IVilh%y-{SO+TJ?&lPx^7wA@~3mKwJg$CNOX9%Sa2HZ(1OFzNCTS) zrsRyzz*}R$+k)B7;R+fx%b7&?y-(j*-(MRf7Y%T$){yJ+qiT`69?4N$n#&d%!;JnW z3zy$o=l7D;m$=(Li$hEh`CgC&QFr04gqvVzX|rdSE(xzlyaX8-1}=^p`&ZS6(G62B zb*@L6Z%r;6UF_m{3iyp>{_=)WSe8(`777uU+{?=|czBs>dd^;!6M9|mM+O&GlX6!JcO2~WfaiN|0NnlKnJM@19PgBi>#-C@q^@z`SfW#SLd?9^30RSl_9fAxHb7-Sx!DWg?2M zdmC~O&$c!ZZjpzNIpckMIRD=Z~`DJ*rePS4>55g#1mcQ5n5q zlKgJ_gJiR_vC+ya$2cZ$k@kmr9h-a>adANC-dyArmo(s zZpVv=`f6EVC1#Owo}Cg$e7h~F6eDhS63Q}l>gL+FzPi!yyV8asH6h_f~E}wvMX^ zsal};W^U`Wytfna4_ZG+F|oO9-><9vGGcXT$4ZuMWO{R#{m9T&iKCM@IdudvX$|SxmjzK)q3g zRmj3%VfbTIo+uJ&@Y>A60gm&l^e|AIb%XAHSh+7+bd$+*3x{tTQb$hiZY82dva3)> zi_b?pr)Hp>n5K}}oB2hfyXV;OyM{p?AbCl5Zj>|%FuDl^4pZo7-?!#$sI8vFJXoC% z%A9M*u)O=>dN~;^R@;4jx z%#52gvCDF-bNR9s6A7;O_v1Y(ILx^X@U>aB4}a<$2hmGHUnFe9h%TlMtc=F;`p3ef z*b%!<7UV^axE;urS3TE{Z+lpgq@|yxcnt@p*6+NBH@pF?4j+ETi}du9s_t(Wm=Y#( zIiV}h%@j8|5@>{}z36mW&Q~4k***Qu$7g8GX%o#utiWp8b7>PgIAaX;jVpbmVG)Z6 z5#do=Gx(NF%ecnT{=5DM%gB5yBjtb4if4gKJP4XHW_3Z=FiR0`9<239Mx6~xtC(Wy zh@Ow(C(~W~Y4PBlPJUf1PMsTIeK(dd#V)?Q+UQT`oxt)-NCzJ_#)9INmh=y!JJVp} zg}`PG`5-|SHjU2b^}CR4yh9xW_Tm(e5Hy*$82@`m%ulNyfjrt@i({a3B0s|n+oO5k z<^;5e>L@FEtmsKjL}^n^SU>5HKhMUzU?8&gi6?Pj%ypTCenoMwh5+r-YHb|=%q$9W zxpNe4DAt-=Ui?sP%*!sGlz<(67chYQsQQcY0PU4u=;fCwgjDsU&byYUIx-$yJ28WQ z%>mz_7T_DCMB6B-7gjPMZE}jnNc=T^4`9`6u%H4FAEHN&W-v_~uwEfP;Hr*Ycgy^C zXDNrMW8cmBnC-{8?kCK@46lr)T)<~SNNI*GQPGBOH$vh&)$Vz>CB{IO3a0l>bIYzv zW~(QjWA`XL65|0Dh|IJ+4*$S;+i#59AFLlyw0W8*PbBep&xZEqO??O->ng;Q4W!YH zrQfQ9e!qqS1{2VZ8D?a#J9J6!a~W5ru`_nb8PBsU%>lpR0BoO2SwYrlV}!{4S&RKU z(mBP3MrRx+w2#w^Ft0hRbkB?peG5HB9~!sqczP9}IVNWhTbS4c`{I@(7fh)v`Ugy^ z6gMV8)Bz)q((GmRV_tL2jf{WLtZ0}ES;U5C2nEjj-Z!aK>3j$oa`23_Gf+n|r}ecP z`{>jiU@9BE2>U9550nwCMX$y}IE2Q~$t9@G?=LXW^P5zbi8vbpY3PS{B`Vp2^TPc? zmsD=j*3{&eWA1oZ4{|-`FiCf2g!-Q=wWqZ;qDAEiI~#2^xGVWP{~gL!GS_ptQ?Li0 zjD@XuLb-}7a#;kZB+{ZcJkRoh($ZefJnDH~Y(0Le@~=D!v(Y}gNix`+u^R2jvvy%Y zt6%MX5bj~N%wyiS`Eb1JHesFv_$&p%bwqeQvyuVXBtuX6j|?E&Z>)Uoy=wOK*CZH6 zMcHy_8@S(EW$TXktcgVfztPJJZ)BX&yO*2kyJ!td_vfOlS=W$s95<}96y8b@CD0Uf zL0GwAkHSP|W%p5t%mk#skTLKU@1%b>2{x-jn}bH(Cw)F>?~V*9RBMQDN40FW z?#DS*#LQv2aR1n)(`8BE{t?1Ton|VpMOcJ~VXVyIWk5-t(hqXSEfrSLJv-P#bH?Nk zv0r`>pQ~>JX%nXpw#T2E__#jYx3WMZTgdl+4~Yw0B{{@qB9_@}2FF6D=*9b<@Qxo7 zD-}&jPP22?tp|~9V|>~|E!Ni|X#d(Q{jSU36iXRgVP;)oqi8Bk@KkcxeHmN4GLJr_ zPf~n*sQqMq4`MwvLsxvLij^n32l1B}3+-DUA>{eHBLt&qmfaWy_os}4qyd)ssvA(c zW&bniqq}ixylq+!pxI1Odrs_CuvHN z#MI#IE6m0>z1HffvuYx!#wssdJ8Lp%@Q&|<$rnjc9TSpoXi{45+NFuCT_N$!wVpED zVt<58M=aBuHK<*0tUmtW4c%hTb4nE4XL%A)SCd3-ZY`Yi{(ty~ql!N{kyQ8MTrYtG zPWAD^Wp~QnC|ld0fltybQC!*a&8?G_Ifj2^{2h};zq=>`d6yhofw+PeN!kw%@f_oQ z;8p{V?P$?A(*P%G#wGsi-!b8y!4%ow4YS3u2u)APVq<>ti=f!m+O<2!nAshFGHXK% z`eCoiJOe+e+oT94(cj;eb8~0iQf*9^-u7l(_s0GMj6V|um)-YBTM_ZGma6Ym+Jw@?*LL^KDoyv%XKkln80hJ*m6}cww~be= z(56`Zf(l*-k?M0Q6^?vL)_E&e#Grhka8CsdD{Fhx6&eH#1hs^}|`G5%aWNVS;P9d=!WehOl&obSR!t<+tY; z`Jt*GUu>svCXdMmJ5lQ_+RCDA)pp}Pa?OY;_^){EvoD~iinaty6V2FWG(lVHqi@lq zbhpV3_0>-qT?d*>+_K%Jkr-URuXcTVBuOV;MVGX)WHy3*xxamzHkdTfHRg1{5Rd}* zfVw?XN}f2TA;OcXrkw>=4eD+kpejY!Vv3}!z8_O##2qO8XSSi-ydy008qE7iHRDgP zP#}7!`YyDAW;r0+DIqRQ-+HgPbw8y<)DwibXlhV>3RdEZH{Zy7*M|tKfFMGR)k~nD zdB&UyObyDm0eu5V_E!AR5|yoKk|3-3T`(~~Vl>kOLf6v-x5x7oqx=iKlOQ~8 za_8aBxUF z{uq8{zA7yhq^kcc!!tQ6^jMXf0}`!KqG_5mSU9}IcQ3u-tt~x`-RV;nOEK;Ga6>`& z>+CX0lR8r|z=Eu=UvH_dmDdQTqU3|pU^A-@hxqApI|;s1AjbaQq@(wB(kOJeqycWz z?s$OCN&<(svno$}G_1eG3jt}m85i|FgR`dNq20wAgh$ZE=F)LS}8tRY`F zndM9gjG*17rb9y<+`LM(H7j0Ym)wPHrGH_{i`Ae*AWEgRG}Rr$?tk@KOQy%T6v&sv zU9Et9oLtqD%tnNV%q|Vm*sU)2dO&pHxhTt3Sc%%{uN^Kq8ABL&0Cl)z2AT z6AO5x5Jp8x4l+E4)reJQ3cG&!1mthPez}A727I7umi>4w6(f4*d}nH)s!MN1yM2HI z;i47O7D(l~jwcs+vXC}Nr;U9PT(Lu{;fdIBwzElSkxQzGfvY1~_=UZ4#7<|ZnM+}G z{M@jP1F3(|B>yKYWze{EOiPMIZ(%4lF&W3URdy(?w2J>`NsK{^tN6BUV~zHGZ^@Z? z1_{dKRYyQ2y%C3ON*QpTPGk~%TllTDO+t;tdN{m2=WaXJgjBF7QD6N#yFV>)BeCNj z`>^1xq?w~{urtxzE63LRp?M0bd-dg)CGW^}?fxH4XW`If`@d}vQ4vtOo6!U522r}Z zks6F{q(K4cF<`*xDcvy|r3A)kl!g(~(j}$H^X_?m-}f)rz3slY>$*PYc^vQBU*Xlq z$|vTgfR*_wC*lsvfn3-t=Yfjf@)ItXOF$bHg(bF&cZnyHli#~ic`c?NC*>@Owa{OM(da>;wrO2+x zo-GEhH53}BgZZ^a=db_sADq+0qU22Xs)0KF?UZ8g>EcplS)}L}N+I6bdBu+i^uje|>VAQZ7d=aNSo4hHLjx!rz8LGKUXe8xZX85XXjI z!HM!sK~tKVKk5RyQABY%j?vz!R-o`7u$PmmPhHawem$ND>%iK(!dVL8JfWcG<6>>- zTb6B>^KHA+KBJME22G^|3TO#FE7Vbr;PYK)!)@w7ifp4YEfp_hE7I$^?*Ek#tkS4> z88uddH|QL|{s|9wLaqC!55Pz_!UaD`XdOwP)C=1Uw7u%-ZwL?jQ0d|cM|}VQp;-BQ zOGdGH%s88o(`>~@;ZIT3k!fNxq<}> z`R&!%!#^_*$5^YgPi2DX0(Qzavwu&O6(qgB-{UnsmaG_pu|^pZ#!;>IVtay>&c5>1 zDvrdSdpPgkkzPK0<;ZOHD;R(^uKAj|zv_9B_Pewyjd3#`Y)8}4iWkIq-x&{-`i@qOB6IobKNG5RrBEwFDPZ%~VVu zXk^{DTmLfaLVt=%`Z%U{B>1_!O{TVqW2&5_Z54mU4%Q)-HIo6B(n_IMD-l5R*U1Ia zSY&5@r)gYzWe-$)8Mmb_8wd2M3=r?`CtwS$!y~S3+k%4}>C>ZhNy-`){upCOrX0hj zRUFj$msu?S+^Jqr{%1BTC=Qo;KvwIvuo*S4uEzy!Kv6Wf#2|f6@DA=D@m1lgwv|^q zM{m8EQP0XMlZ+AL^mkR(>v+I0F&c5@^~|dCjGs?v{o)moHYdVFYMHUEy`fdoomRwoag0G}8)*7S3qydk*p?VC1M7o*Qv1erpdC-N|Sn2+p}2;PdK>}geP zG7(`M^PGB5+e3aRS)Xyjb`>nwP1SqR@A&2EMk7=mU#m!sigv{E*9Yh+y$2{-c}c5U zOk|XyraFh#BSL}DE82$R9hRD0PdD)BP(kK5gPx%r$Vge#x5-KQ(E)rp4k4MTR&g~m zyMyl@?LTAOwiZ_iE77EAF7ubRrCAVb-Iu`P%PA?am5MScN0@EVl}T%VRy>+-C zPJXFqL~iJI;a}frvDz$S!Md4sk!7 z)(;~Ck z?Q#N9%5SwThAEci>Yv0DzFg`#{aW~bm?pLW;1thkZ*g_q+PV-^J>`n;EO1G2mS7?! z;PtT}D{E{c(KQ%_D5A9gM6y4Id*_4tWPXS=1Rw(+d*@$YUaLqFP0hNhTESubf;iI3 zb z&!lh^VH3g2UIC8M+fwGwK-xS|Sh{B>(&sa3ek;@&h4igl(T?A4y=u!mQ??}X{65JQ zA(G0b5~g}!<#D|c2y39Jtmcd?o@TtHC%%&v8Yn7$Mh6>;d~Loa;Cbam+>4ncP_JKn znDH8{mpCXfhKn5Nd|kaXj*}&>@4iiw(!Jn%TSZm$WDj9(H}W`Sp7zP zXOa5lT%%H=TH||)_I5sxtBdX@P6&7^YNa}nm92Q~@=BZuOVqmgnb5^;tS$RNZQJin zQ$*cn7J_?ghzDT~(ui(yeuT{idqDviMzY^q45p@6sQF??*S4er;}jE@Q#JLf62FV= z?RNdy7)4@yq6=*V?aUv@`VLeAO&u3wx+Tk_EZ`OIr$+f!sJ1GtqbDh3%}d9cI)nEb zA%zSWFZ!euruNN7jsU~g+r?L!?bD_s5kbLhl@$9tEk;T?Yx4J}BcX^;(1$7`=Tb*@ zwI3`}W)GKb{<`b5JmZ8vO<d|^CMNqgR4OsMiorR%3md> z5P`Zp8}a2NLVEkc;%XOYp?)QkX_6flW!5hFV>a1@W@d~fXzVp+=j3ho!f!=_su@_U z5YUij?oXMUWmYWDstE#-t6{s+NE02Cj+R6=U|Y6(c6GyeQ^1iux)!LLRT#4O!1@!Z zq3~A#n;>qtUGCjUD_?t!-xHL~aJg;Yz&ZQ9&7oIUV|~c_m80q>winj zf^8udQniN|{^S}tRVZ(|Nugb3xJrV}XS(b5TTpY!^z?)gd*=%etg^9h7SQyS`xQOS z)?YU0s~#-V4<_Zxet399Yq|`+jw|C-gFqnToQA7N&Yd*|J+uk<1b^F)}#t&G7De3_{&8fFv8JhE$yF zAEl^eRMrV`5E?{%JSNCZI0R7zVrdNvbx=kvtuW71c)#4%XkWHe^{7W&<@ zi@$qCynk40R$4Qd3MwU&wQKt_<|uL6m|k^>_luVORnQ>?-d1RPI^t}q3G@Nb#IT%Y$K{zAHhFDRNH-bEtxCjrv_%}{IHn7 zw1>$=0&0QvdS`oX^kCzk;%zG_TWv2m#9z^LEaQ&)OjC@x@+!?-4-2Mu^$7YHYF5f8 zD=i(1;H`H3e%ngb)U3rt>Kwgt9q~r_Oq0lWlC~5qI8q~0dJDDc@-Zcag|!GYB4?JR zm&RV6LX2H=z!oJ&*=qCSp4tcTT&{^Zr7`BXaLpYNq8SB3blu!?tGh+Yu<%PWAvHL=L$g z!@phqtAo!v&Y+panKokhf-l69Tyu$+2sXePAV55LZ|y|!lq+|}rsz84Uoqn4e`jYK zeui|B{90Oc2+m`*ZFd5i!b)&1qKx~Yc3LB>$KlS0;pqiuMl#T#dU2DhAZ1{avjp~$ zDzi?9w>;T{L-SGk454i{XN8&{m|{a0Tt4*fnb}7jb!H1iK3B_C*@=E)Q--E#tsexU zHr%k~dgua2h6daB2R|S^0$(;XWSYN8xz)7FU%wpq(O)Zj>Nv!jbHQzmct^jH?*v!d z>rtf7i@$0c?DsfH%oP#c;Z1m3vf^oREzjt)R030H=>Igb=-U_+-OBUlTq9$xP@TBX z!wZV>O2{9@?*7XGt|}(X{2e!-=6=8ojPl9fg7Y}M%)dfPNeqpzVLJh_ni}v&1N4`> ziS4|O6?t(()oHHQ#|&hCcw-TDbktQa# z;IjNW6=$YJbj%sPO7qBRq0%yAa{ZVWwo%ML2+1&>1AD>vvL}@s zl5&Ic@>qIP*tv#%PG(8$CQk!i>D?n<;c*e#{NZ4Fam^e4+vh+Xw%TfKCtqzM>+|!j zvwpER2$u`q7vg@t?}#+m+k-v=;`>lKxba%PGlNlP#}wk99%9uij4u){sMrepv_=Hj znXn!|HS-fz<>w?^VB2S#a5N>wuQOfx$R#Ez%FYm*=~VP{#FH|F^ssQD5w;a?q(bHh zduYyRAreZzv=YpqFG$wrZuM;&l6UkD!AhFIWDc4ob!@`lf3^Jq@o17h*m4FGJ6%o! z!=O{UN(JTRi^Sj&2K(V+2q?{&o3`@8al@V*SM@u(5c1mIYO;*TF z(C7C@XG;ViPDgD^fhLaW(be5E$(&r3p-vUGbP+1qUgI_Ly*SgDU#k*SEZCp{nz2+V zR_+bG!$QLYhLN zvq+2v%}Ndp#Q0Y22~KYqe7?es9;p3+<)y8xttag7xzZ8XjSd^de!=bfdH|^$$ZahU zNH6|?J(qh(iFe1Ko-=Gzk^g4t4*~taI=j`T0b|e#{OfeZEyMr~vz=vWwku})5p)~o z^H3jdC*_!^Cj&9LroLf#0@8piC6jVe;hGUHe0=_YoerZ?UYeiT|f`eM;W4VM4>9u=TSD-zIvZs65YkGr~sI@4h~pj zL~<}9P)P-~o`HLAwyb3A%_>nq2utMj%pHi)`R{5D061Ae~T(dz95_JJ!ka7-LPeOio{7vDpo0BNn| zuGBF`o*0|;1R|$jo*-}K#D<+`tWaU}8_j->FO9epXbN4D?0WYE6X#)q-wMRn%UGR@ z6<9hh#FAFHZ?Jdmoi_3zVfAhAI7O^5=~Xv+nsQc~-|Bl}ndz*7mb=Fa-d7(vNsA9~ z$xEO;OXH<=dy$z#MUAkMwFu|AG}K{j#vYDeUNG=2rxmjN>?98Th|)YMp_zV>>A>R8 zFQ%X<$x%}2CS~lUIPQXC()ktQhfA;=40iD7>RvayVF1i9lf=)X{)Wi#m5YgaeuTKBMXD$l3lYWUx6w@e~}hLQW}PA61BgLfit87PQq|>)!~P zAHo4V!iMa?a^XOMj)?hnC|^H{yt!`LMbN(~&i)lPSER1L2*{-yDtZXk>>X`^-nDgO zGwB6;6Qxu&zKS`X#{b}$YadNB=zKO7qHEJalKU2#U@!wG*S4p10}ep|ttP$-b0al+ zkCV{1w;NwfS+(qTTIk_`r8Z`#&F=+K4n0Dkp@%rmUxcPHK zjHs=IDzAq*a53|bbr2lMA||N&V9c-m_y+(BrWW7T{+0;z!8Y{)z(^-x%5e&iRqxTe|}pTJDV6$KcEiT0c@BWJ?YILE`(*XWufh zdIX1OdMBZtp`D!}8((x1X16!!ZZ*-_0|Pb!SL1C^NqDVn8d^4qS4NHglEUmH^e8dQ z@+qxaMFR$7$@8b}5Y|o%s917o-Xk86J)70oNOo{&1rT`n$)&O5g zENp~mSU6R{tvYiQECpqjAp&tv;W>_>lkCl5Q8zefzXp_soK#e?i3_{AxtdgV!?pSW zl-^v72sKr(k?mSG;d@S7Lk$`wHa6^cILdqhSEo}NCQ^jeW~ZO;`1JGgI+x5v1>T zlVP9&nJlXww}>xxlH^J%ri4q8w8D?a^9oM92>q~N$#1oMIxVs0cKOngYc~GNSTNJ3 zJBJq-rVLMG4Vujob?>1!TdU)%$mugOZiZd7zaG5m)0KEEXslFr=wRsQ(dV_f>+Wq4 z@s%eRUh0shh;FQWId_42Ng9P`5=9lImhrxq?1^3Ib0R$-{4x%GCLY$Yjv2A!Tg+wP z8l_<^UuTP0!(>rio03-Nv4>yAIm+17KBISLn6ANLB?H;kwF`YNn^BK|Q9D0Q0@|I zyRF!KyH*gFj6`!D8tl!yP9U8q*eHy{s>bA@?0TaiuUx*IU5DrBw)DvS20?ly!#=l& zg&-kk$6ad&?@Ui{PMXeolory1C)LU`V?3N-yOY8hGDf8pK} z!B_bYPWtv-F0#~UlKHbEHnvvA1GAvzg5D-1_l*(;k$ByJqGyFQtz95L_ustrefh;# z?O_t(W`eS5Ke3V+<)C{t+ZwC>s-aIiJEeNT4(!k+#_*9Xe}ld3$>{*)rGH&&Ed^4y zo;S62Mdp3@N{{I_l=`l)-<7oZl_o`Q`~j`_DgBM#8i~HK_likbXsPvEZUqVAiS=$~ z2A>hTSKPUEMe1w@XU8=E;M8s>RzZi(zgnf;e~u>PZpn+V&O$#f3z3*kHs^hyR)}7d z=n)8OLve7}5NBsI*>goXlBuAMOLaVznA<%Pd7qYu5q%dC)3NgbHL!n6{=Hu1@*_8~ z+T2f@AzH=x>)*FMGFHCW=B}vElxP=n)vR=)P{-i`*8PiBRk{Y%>uU;67P8{WMdEu6 zF`glw(z1sub$Slx*Z!GX<3F0&++!cs1^5`TNsA0Ir|N^cPOgJD;5CLVA_gTLCcZKg zeZ7I|n2#%ow7fjv6Plk|YEP8H8q<$7(JT-B6O zoAyX}q=Rcn4Gi#1-i?7!u`1Ucn%$}2{kL+zHFTYBkyn2z0Ddf;GKawv!S$uEslOF- z9VQ!`xyW{}&t}@s!^*!?0B-+ZH0d$XPo~Vs<4>|nF0!a;vvP3O%HulXl2iN~c8x_n z05FJ$Co~BcpDBs6iRw&0_8+K|?5NOYq>x^IQ(`lPmc0?aZ8OY3n4I6+|7*iF*4FY# zu%H>sF>hSOTp$O8)7*d3trpY!4K%8gBy8ra^VVhuYIppD^U~k8Z`)Hk8gx0M@{MK_ z0)de?=XrT)y;8A%BV`}_FsJP}a|xS4x2fVW;K;NvO0Ju01rtVCUfjW<%FmLU_z0r} zKRbtZAA|X`rtZ3#GsS3Q@IRR=71o(qB{6nIbTey~)G`_h=ZJWg@OYY>A6(LfWWFHS ziA-FZTQIWRe)DC_>~8XZqlVgw_o2=k;5YSNvWA*VfdUmnRCU;r0=zEEZTaM|TsymK`1B%?N8Jvr$x;Y4U0kGR2e z0TVP;QIu^mj?stCV>&^D+q-Knzo~^}CbO*y(#r6c=xK(xjy07rcDX+{3J0^A3?stB zr0jV1fgFcI>Sa@+O7L#*f?rpcP+z5MHAf%}?vS&$?fA@;Bc<+U!@p@rACcCRy_mR@`Aa!M`2{RWvH+3bHJt=_};Y+uZi=n@-Ey*o3G6ACMuZ(?C$pMNsT z>+0fA#YgEVi&*F4PM-d>eR_~+F$gnM7Z!caR5$|IDS1{l5Qgl(2@YGYTve=TVIjL%Rp{Dx?os&T4QkcdH@QhGAm&eyP0acCp2*>?FbbE^xkuZl^>WeZwA zaj1%?q@+q&#rg6r8+#X6C#&^7yQp>^$|H86rB&O#MKiM0Ke`STx?g(t*9FRNNinUe zkMA%}YfgiE6yp1mL6fO?kBRZ4RtI06T)lfZO$pE-*TN(K*&6T^*b^+dsUKJxg|M+V zTRwiD*^_qX^J*Z*s&U3aSdz?xJ?%5;H|FO+@2X!2)jGIYQ(#InaAm7ad$JVyEB`7n zZLzCFykJnVgudQ}$Z*<7Y9uH`H-p|)Bow{gHp#$(0wzADaK1{t&KSG278U*sE;>jkFhGWoQ= zbS;)LXA5dmw`xIJ_&xjRB!fy2lerc9Sdr5Ud+OAlGWp~gAog#r`!+TIez*5MBWfE2@o`=)D*?Q~E2UBS z5vIV7E@Lf98+o+|srrP`Z?aeoU}6gTAzIK_rR0>!I5v1JEVQ~%vu?LoTwV@&4X$tm zKe`T$?C8ddpz&odYvq*u@wZ6Dm3w|`CZ8bD-@7yt{=tzd@vwq5?i};<)a_!GtI7y{ zicCTx82qH+sTzLg5Y1*ozi1K7Px#wWo-2dE4rapl;wZq3?TK-@NX=)Y~t(gpfd zfHLjiw8BbSV`Z!vB#R1X9r9sFzY@0D$3cgV*S<_-~nX`WVlfkCS>*)CcB#8sN<$=e-s zmyh~&(HZaQk38Qo_#`@Sk*ec8+2EIX6z@P4`Ybek@*~iPS2|%ygo3mtggdC>Q|^v_WTI|Ca}Rhdf(!U#_yM6VQ;aE`+q%M<6Eqv4~CGs@GgjqUu& zyhT4qwpPcj$myzvvz@ih%hRl9lFW>AmXkQQ&>k|%%v*Kg*PfzYx|qOd%hO*s612L- zvPn@7Mc|RqX=HB(HbAXbrqmm#8H2-oEGrrAq^k&i2t@fBpn5;2{ZKv@0$M=r4|#7z z$O@a%LPK!>Pgs3`9LN>bQ>|>;hImTbleyS&G8RdLu(Cn?Pyh?{%#xtYn%n#&9hspr zKw`XX=t+;2%GCF-tPrfNPn=PR!z0T$Rq2VPdD!pGcw^&NI(>!xJVa&-+*E9ck5bx z-6MY@Tp|HkRrdFpf~wMZ-T+Gsq0TR)DBm zhiK&qaEcc8z?Ej^@Y}xQaGsXU3tcV18w5uJ@vJe<)3DDVfHP_EqH@D5>C`|va#dO3 znHbrV*^}J$Fs!Q4YrODkt@H}ib1+X*li~fj|FA6fN$<%RxP0XKf@b5x;4l zP(|*zC%CsN#LVK;y8>>Jh&TVzqsnqE%n)F!(hWiO}X@`ArMsqq((`J+jDonsL$w}5*A4!1j9tn&UKfqaQoI(MY*dY+9D*K;_ z3S9Yi@S)MQ(+roE=Zbf=;X}U|39Ez95PSB;!p@h)SO4BVPi95G>kJ>~kkH#p0ZL=G zAdV^y4=a8Ok!qM3p_(03WDo^{piC+y+1Z#uUKcjkkYL_HSk6ZluuPZ^?zhD3m=gzy zr*Z)p#v+K}5FXQ=2@5l`VjN78J$Y+o(dfZyd+tnXvfKV2p|#6{7$Jk#F{a$CkNVLB z)DF=)B01z*=DPX`TY`O`qcK8yBF_)r4v0({P7Cw@DoJ>SSDVsLP^$Vcm|l7tLdevf zk;_exvGOk4unfe}-z(u^ zr;QYklppe0dOv^JYX?TaXiKeieiHP_DFd-l=bE1cG_&85Oa-)V@sFnd3L@!v!#Uj7 zMPnil+(qSb^W-ie!Bp3OOztJ2>a59IDa!$R8o%vQ?90E%7fOQy4q_6NMa6`7gbMNe zHWco>o2At`B>$?sfnIMP#C_^HQrBzh+K3>wwnlHUzI7MCn8;a*J%VJTz(hO`G_g z3YD}{@|LrKBhe|YwPyv;;8r9i({tJ zbDz7ex7R(*HYneIS8ATQkd2slZSiCK=_CEIo3%&DA3}01s!la4N~{O0`>^<1h@Ku` zT&3@Rb@8heCNTIm{3gMfjhs5tl_0Yb|8eS8;KChJk}U znF=`BzM_&hxr(M z>m@dpO(yJ{w99{IvD|qCWd<6ZtyT;9i+Is6{DWf}fhZ@Nni@>kCadl)-qz2(qQ~oA zSl7#s3ceIhVCH>Kvz&f@yDq?Cyhgm8;p}s!qLIb_`{giTBa?pFN21S3Rg8wcQ z@Y<1>C`(Ugw+NK9?)zD;wBB_-Ti6)o2O7W0#8XS+-%L~M9`|BTV4`FBHa(q?-Lz%t zwelu;V%3_4;#c$QQbhKQ>XGj%)>Vl4c(V(AHr7Gkru-HgK;%N+yEl~(9WR>guz>$F zGHzIyk#RXYk`5&cnDg7M5_(#0z~Q+x4yrL*(y+{~L@b5p67|N)XhTE8)FG{D5o!}u z(Ry`xI?&wQj2uyxHd1BR&XBZMUBtj80nMo_ln_5)qa{pe^cazUhcsUPkgMq?(3PG4 zDK%>4IKm9^)PmFi1m!V0a2%`C)yJA9?e&$Wj9#A&`e%QUWU=hGeSzijq_{?cV30C* z7}$V04LiicJUd1@j2~{rS{<-qKAzryqL`Ux*6zzuf+5<{!MmdS6LVpGf3~sF==%73 z`~Sn!bGIz2tufHaDal36zw{h3T%TmnflJ3Li#f#F8Wc%|w@9zSvQx2{~TeQEi`SPCJ-N(k0 zUCfIizSl+@HiwN2@wo0FZ~^+m^iNXnTdhrB&Z3{^YGl({82bw#Q>Va|V9q}u8Tg&Q zCAKSkZ%!+lLbl|@^=EyQRpGRq+NK>zdJyLE56;5gzlKxe*ov5ebl~@ zK+0LjzOu$($K(C&o~zCHDLIX&AvqTQjyk`E-1`SHq|q41@`zk+Wo&9-b6Dq$uo)yI zwB?*OF4ly92k}SGyEZ_lWz8LxXi@Yiqb{zj%hhQ5g3! z=@}(A`94ne^n-B@$Lm1L#h8?jKs_4QBFYREtq+AmLwB=nf6nM;0$ejrT>HLX)0fL& zSzlFVw1n)FcI+fTBW(HViU$5k13BOF+NdVS^Har0wHK)unlj_ENx^mB&Oes>746b; z%*5T9L01_+?cN7ghZLdsg`~QB36z-O=TKgd&g-@CuRZrx1`f8L$!m7*#ZOT>uGvnxTO!jsm%nG5gV`{ z#~&8+EL#@R+pBysD{{@v06nPWu5NJiKa)TaRee8%+6?Z(qJFjhD@Ne${rPpH5xYi_>Zm zFUn(Xp}1U7gkO__Y=_FwKG^RRWgR0`;1ZD4<(3C-ycB0ImsQDd=5&g56*$Ux=xP1f zuV<9vGbvV9f%x7rn$9_%eaqM_S>Q`k7Nspka>EoFO!5lFSs?4juQZA?&SNRmlZJ6O z(wlsiti|0JXer$Ik;MHak-CISJc{Xf{VQQirTXR+3z;VL=e-IBn=x|0eOpAu>stleJ~VngL3o_r<|PgiDeVJ*^0&M^-*RiBmDN zF>m45%m2dERj%B;a~acn$m3XH>#gLwxV2cd-Q<;UEK?DJ!)s^%if!tdB7%~vh%3Nq zq!2Z95Dhd`1t{hfKX{C${gK0|i4k?Dv7esl$89-cj~R$Ie!<)=@~;PvAlG?-D z@N5v7rX)UI8D2YgQx1=<%UhBSBx}9Zjfp$3vkxvdr(ZGX+kIZCPv+3-KJmyB>tjpd z1vsUP;K&C-FIZ--W%|4J=4pRq{`XQ(`kN_z`b|pJAPaEnHujjgT*)TiiC!Dp?KF_J zsh?e3c+fe!W55Kkys$UVM2>t!tN+F1lfE*t8Un)#3A_SiHA5x9#=`>3?XM>Kd8$Of zK|_x~w9g;u{ajtjjpqMtLy#NP>yzWT*~uRYaRVmWw|XdGEdP6b9rI$_eg@T+G3KUO zS-V535uC3#aRy-RorfogqfAM0K9u{Ik^i+;OT+C(+*;pFY#C6GG`UYQ(DH_xnV%1;+m6n$8QdXj$G0I4C;eYeaX*hhu*c%3USt%EYAtVy*rz_xHPD z<{4-!o2NuIK%+m&$-07`}9>Yq9l`5gYuCWQ_aOo6cY#kdz#K1nTB z%tM061hXpRb$`7E#S;yP%CT@5QnY3>U2&4dGD8PM3*LNjIF#5Q#2!lXN(u1pRs9g- z9r0s-d_sP`iIvJ~B-p{re7}FtKVokf&e)bo3JThYG->`e!{e0bLUoph^R%tvB~%jM z(Mo8F+chR_>Q=zZUN$fL5=~`{xtMpez>o;NByz^Ke#`S(lr)YqJ6?QkdbduqF^-SG z-_TdrL!JaFSPiZgzk>o0FFfeI|3W}(tP}lplFAA^#4kWF!AQ%FV}_WNPVZR?sq%z# zp(irqOm^9pQ#Tu8-{!>BT~!jAaL7mgJiDA+ODXc@NoM9DQjWVVlK2NF)XU1-L*4kP z&YQaM?`0din~6PJOOW%qq!uBquNI4bJ3aosyP+6&{b6-IZ4Ed z-xTK0#!G(SXD1`qQ*)4T97Vo-mJKUUkk^2+8sX@5@3HU-%%9S%>*oyU@Y$!PD$fR< zcqI<+y>)Ztnid}Ro&?$^RkW@iUD4E6l~ls(Op2X-9gi=mkD*ucDMoS5KZ_DzE+FmV zbhgMmFMTYK4H_P_y`e7dQoGSF*2=i7rjjYjd8jiY;G?a}+*U(zt1Rug_?hV=LpbB7 zDj`jPw?^ZmHW9by1xFA_(G!kBwIbXAd&V!t69XPlTrp)7gT=^^=b^97XUp}xT`2hi z0Lrh!TEh@!vL%K=Z0tVic&e>wRvupyzTqA^x$^>adXA>8Dz9=at5BlH@YszC^mn<_ z@)ReVSPD7!o_O3++?SvJ?uM1p>MYFcmBJU39Np(G(71=+h^MK?lp8+K->ycnwE0?h+-Guk@4K03RAed2NkAM z1_@*&r9FL23pB%nil`cR449ZYsTlel3Dn3oVi>eJkLhxQng?yBEam!XOh*rQ)(#r9nrx%7M$eesO7p{~PzeTQoN?Nbp8bWtH?<{*e{e?Bd0aqztKGF1Ar_d;c>cGF)6=tk zQ3S$}I=B>kix``-c{3MU`8p9w^C&+UX5a?1Gi62dYOLG|hVmCfFD?uG^ z*kqQ}XyiTmBY*rBemvJE6i+P7=-2(~ClOp{%<2i@4S5fm;dN1_?m1}oD?8xzZQ47v z5n0t2R^<%fI#@6t0G9vg7}B+-Ab~_Zi+@$kkn7io)Ny+|!teVoRz3+W!WmSWW+k-} zS_g~}@8fd1n{|ZXYgVDx7&pCe0@1W8Y38{`sgAEBV{@#r9F5n-WI>~0rOEN>WNqj@Az6<-XJuVA29I+b(6CS4X9x#|*+KQFGMp$`2=6Lvh zo?`)V{(ko(+%il^J~!T965^}DXr8yKU-@p<(zXS-XR6C#J5!VsUgA#NLXtup`3v=& zB1(k4@^FfU>AdGfy5sFe*;7GlALd)6{h#Z5t}t(N=M{}?r(`pM-bMG9SR}HxzP>&) zNlCiQ^!ACXmv3krvSV$MMAyt$Ki57@t^ac)c+8cs2*`NIgn)k zel+9tonz?-!In=_ZP*R?9~JpDCGg>Q>FMkBwzqY!+=3a}Q1%IXbdLTlzWr~rEe9Sk zt{=pZ55Y!%Pb6e8$NUfKJ?gSOp5_sjXm;!|WZ#;h3h*_^B+i|aib2)*;LCt#a&O%~ zBzG*|*gtiznbOXN6g%P#{O!Lj)^OD`ih5LV4fu6%scsDL0=SH+y8YdKl&=a%f70U1 zc0t`Hg3XXbRS6n%D*TX;yDw^E+nA>@+q9~P>a_=(t+G?p5(42}XnEE1Lf7{bpQ|X1 zH3REgj&^TJ068ZjTUHg8?__-M5{QD2=(8sr_}VWAAc2QY3Ys5s_=s}v!8-R#6EMil@m-zo>hzl2 zhElL+)c9$AAA(cam7(Xe(NmlnWzW^_QH}Nf4km3cWR)Lgat1k-2Mbf`k!EIP#vHAl zb#oSJ46{Tx0=rO_)nIme)hsBFvsKnd1AmyavC$B_n>)Q-=*dqk7{%}qT!~Op*D+Yq z=!nF)uhRT}P1gE)#*JKQtkTEFZ#_P|SWK!U*Ceq&*YUh30sX9UlwDbR=c9PGGQQ_i zOYGQM$PhakP*=A&ixDagC7DVB8pJkJ9DM5kCoS~0<5GrS!0 zUiNoZK0^lGY9=|P8;xB4nVcA?&Bje(Wri*zpt%~5KE(o}PaBWy2_&6D4Okg!DsVj~ zZ*6?FhK*`?+trzaMOqGl@ z0$mQjd`e4Qx@XkkzKJsaSyNx|X^7VU`uMVk|MYt^YAZdlg>1y=4f(d)0w_VhRFP4d z+?1%pRG8E!D>EK*hJI{X=>n>a8B5F5qlkHQ&~ktGY=Mn@c}?ZkBOI$Rgm;~|?n|jb z{6Lijsa5E$E5wm76GWI-dU6bnkaRq35xrGD zkqv(J`@fSRpZdviTt*yAjy4E$(|XuDzIQz0AoV<5b-6!(=G%0!Bk%;B4;fQZ(Ee2- zxLlYHkCkzO$%aaHhw_O);Tu$ECx1d|@E@z&^AZ@hB{-D-XbQWY=Hm-BbxmNU1!dw7 zWVN~_d9-5~q_byb_e>aR8Y_55+QwR$p^|Sx=bD;kfx@b3zMpfR{^~j#m%h}-PV_OA_W4Mu22W?v3QrgNTh??oqWyVvHldaHhnvGv?I#(Yh6j!EE z3s)1i#dJQ8DyHN2Dj`fRw zaO^kZHHocr%90(RlIaq4rRX!7C}$2KAq0mw&a%jRmHYM$|AaRH(h_}HM}30Vi=UyE zpq~TD#(+nKfWRrjlZU(QaypW6pjlyqF=9J-{4woeemSoyIST=mK*c;{lIM@Z8mvW?`}hQ#p~mZOKiR zU)uQZyr3i|!A`K2DY?E-x$OKe#8-daHY#1yKCndN4Vg+&Ei-&^_fZ}oR;(J;C%p2e z=73b&jbPuuWWJFbXNV=>m9Qgth`uK;)XM{@4fH>!29_0Z11G9I&euR)$gf(Ijk*-m zqYR(ZVnB}ec!ciC@6mK>nlml3XHRDEiAbuNaDQkgS=IiUA}X zgh-bv69aRS7Tv?V;vL6D8}`m<^_wP#l%Ch&{7A1SCS2C26fIwKw|5S(XuibpXh zBC&&B1n1;&x755?2PIUhdC-;!w~vn}jNh!2S*Ai83F!kfmcwtVv$_x!_!(>25Bdqp zrUt1YexT}lgt00Dv&O>uX3C>9`4THGmqfa1j|=gs-w&-*cqjz6^j*1AkjBvCipyF;pRdH!NA$Zr^s_xn#|wesUfO4%;U=_*w6 zMz<|n+dCHoMBSYifIWe3r z^qgJ}rCq%Q#K@(iDLFuf(u%kRX5(G{wFAg5+YTHcI5I6dPIM-5IV2J(_E{HK+kU5i z@6k&}HG@pOz-*)6`%#mV!q4V+rLHi2bs6U#pTq@qlmH`ujAomrXa4Qe40HmGdzZq{ za9|anuSan>7<``DowOvr#gOo(PALpZR8T0W033Tuf2V{MAdLD=;jX57K2!0mJc0={A{u!txA<%G)!lwkJbG$_)(UcF*#o8ZY zSRu5D9JwG`mzE;d^iJ!-`+UuNSd;-O``2EZc?=ukqDY;WtGJja$J8rn=RBwJ;J}Ut zgc@HM0%M6)>o`{Q9r`}Rh)~O#yZ?CUO=H`0iFK$+X?aC5LB$N0Sfu)p*!y^v&MH=^ zQuxZ{CZeA@KZ=?y7`P6i9u@7`RKU-+XmtI_+( zTt#-vav%GXB*HUi1r34;%#J8~4YUuo?VXv@y02r75QVJ4?d6c8PXS2%h(&^cetqv> z46--|6D!un4mX2dJIWWNjSm;C0XCC~k&hVvZwBVRLrVUk-)!qMKrg!b^>_KamBk#g z@J}y0g~#hSBGqUUI>uT$whT~!6eLr0v6|g0f7Db3*7gy!6REmrTNsJUXAkF`Z4ACi~f|rTE$%pEl<3z&JQ(wlQ)0Cq6?ApPpk^ zPiQ9oj)_BM>q8V~dD{bWH@3DSO8!Xu!wa{@N_Zu9QupVOCcNdS{h4-2%s^R6Ef^;%AY~fMn|4bUTuug zx)9Skv=&is;DB3Hj#-HJ2J`x%L1Yh6IeTK@H?z(in0FU!qrnOq zp!*|URIcf9mmZ?XC-1 zwXVp<}tayqI<1|0X9 zx2}&Y273{tYr#*+4chg>i+#m6?>=?IyW{C?)@}0oVgMX?&F(gEvAt?(*~^xCCDtbHg!A(PdMJT=}iJLX9w7@; zB<#864hjH?$m@LHTQs3LLyk~>P=_5pI@Z{7Y}2O`rwOuyQ5o&R+1i!GRx0)+Ea*Rg z*vd7qmD5zivg7H<841+1N_fbW3ogcA1Zn(MiaUVzO;&zw>^1gQ3GMpucxQ@dW6Tw= zu#72>{pV?Z$2yryRBlIOg@$295^jB0x=~pQD>=wF&=;sy}6_TfUrrDTztY z5YR9|n^vB|jfu)h*>|y4HGmlb6z6cj<22|LsrxPLnKZWd_E6oPd5jN#Rgk!}Djc)% zAKqB9xDGuI75C%t;tU*PIn=Q8IsHSTn=?xFgS6cqSc(r%P? zGbubnNt;l-EKX-BH(%8n-nz;qAHVaBXMecV4rrDMA|=_5y>TzjhA@e*h(v-bQxY%2 zib70@LF9VsGs^Zx;P;_LS*x%j@?%UH5Q5h?kvHd!`RGx!kyUmOfxI;Y`==K7YT{#q z=AX^VmY>B+u>R!kyOgc>L!wgz%R+X4b$lmLqTg4~{&WiAD84dV;Z5RaWJSyJ|0hlG z^P0h*l~%9lX+w)9CGC1-0PYvuj_9Y`z)9LySe8Ssdpo&s@ z_R13WnD4EI)-U-aP984*LyWUbqj+uS4JV|2-WWbItL=!{Iivi-TIAv7@M>g?tG2SOmgebbjqf{6{LH6SwoK~@9QW=O6vui ze=*WR&j;;-&8Fpejzx5)QgS4EE&I2`iHLM?bdQ#H@BzXW_Py(9qxH=2W8v!zaa$I% zNTKx`#_H0i@XRg0Da>jTT@FYE<+Eo1)7ig^n<6N!T&KhUejA#WyTDT@#G!~H?N!y6 zRjJ!3qCtAvZ1IG`?Ba<#BV($*wbfJC?OiC;xZO_1l}LCzoxm_v%mrR=$hn-u zCkhI<4w8Hf6YRHW5->4ZVmsv|AYEcSO2LOi~^vY#TsQ0L`}?tM{zD2c(250=Q`KX9CFmN zjobTVh;)9^G8x^E65oki^HClP?=spT`>8v_GR9(SRLI2jL}wE_tD?EY0)0Q66;jf; zg1m3v6ipX7u6pU4dla);P7}F%(4vn@I+nvFUID%7oKw)=?j0; zg7IfKPjrEnlh}fVRmySKYZw5x{HlV0#9W85p@LFd{@Ix`a(aqR znTMF8?rSn$0~~fqKAHVt*A!Cs~-(K4V|%g%C42Gn87*wVz}&vy1x&UX%hqtp!CP>k#6dPET$Y#5w|2t0#855QDPM1MH=0{-5n6 zAe5cAr~9sNNK|!AN{_&VGo3Fw<@#jWj&@tc*KiX6V3;keNOq+%o@6Q$NstjJB~Zey za*CDJnBKTD7(uVEKZt>zcqr-}V`eUSEDS~vcn&zhoytqTh)Rh!Lv~JxxKCr;kql%K z9f~beHNF2k`N0jK!GbOFD>4xjH^s@`UNzBKFSfq^v63ztxVn|`bCOs(%j5fsH`?tt z!7gZ0tT=)4`1yPtS&qaa}?{9<{%)akuIlJ|CJ$ zo1j&VMTkuF{0e#%dOg?z<~*kOd|erJWNTK&Rg(Byj8PcMM+OLb{wiyKf@d`5?*?5C zQ6H`$0ny-&uweNZlc0Ln;%=XCTjcp5(6LBJW}&Gm#?Wkje@}3jlheM5(L+O%ln$RUT$ZJASx-Nnq{EeR=suSU~Zksp$ zn|giX)q^E?So4pcyx*h_dCyqki&WklF|-d7E-NoXF=kRAS3YUZ=Fv}+Y@W^L5~ltVP6_syTR55Gz)8_`$sbr+SfWdS|Z1i z>hyeOBRc{Yhx{;686F7$f@2=NeM#G%*6Qc9)X#@`#TBx{r*pX6a@)8mUW8Y(@<^7R)^yGBX#rEE?I=}F z&WSG{4qRRvUJU4t0aH)}#?O}{i->t%(w`5ya5=3=4xDSMZ+0R117E#&^`|cS{qs<1 z*TnphQp-Vf0$j1A>#Zmq_xeLQKBS%UVl_ zcZQsNE>~9l&ktKwXi&Oc;++}Y#qQtCj3Dv_8ATFY8fr{{oClq&2l}vv+UOO(mebK- zSAi;9hZLuvOLTv1BH}dQDNb&qpBOqUrKD+gv>5#sNwX&iEM|Eq%icAbnKwBp&enS$p4X4}u}cc;I8m zv)R;Nyb+^zA4TS1*3Zt5?)1}4oJyqK@3XoVOantBvf<(f-{dH5)7SfZrUL3T9?!p( z{76tSQ|${}du1RMvH9fxU-4^5QUVu|Q`h5E?zJ3vcv8!MYkL!`H5NspC92+p!)%3R z$?NT|q676eQB8{pB5>i3MrB&$Wp96((*qMYu?|FEbQu|0(H&!imkCBrKU*Vk#YJMH ze>e<*5?v$zcvG(I-U(}v+GUupuHGaeM3q>Y3(NcefxG6*>MltCi}6O+NS(?iok+U( z`5##eGwA?uk;eiLyrIKabz*CB+(|YEbyg**P7Tsi8`lbl>??+$m_m|*{88S zqT1G_y22qlvA1m*vT@It+ARg$wxFGgE zywc|w6L-EjU2B?M=<1)mO07hsNF)YsVWuY5nVdsC| z^~(1!>k7MuCAV%!hcP+sB~!OUKU*=c1P=G2=`c>wd$hT7`1a{Zg6;c%bv{W8cPHek zinq|JmuT7%(tex_x$ zx)|o|!Y9Ze=y`MX$GN!4Hh;CRBn#*P57$2{F|#kXCwb}iRIs5@Z8sn(kECK{tg?~}48Kx-U%Di20?*F%1=?Phi6xj5Zm;b-#`IPs zZ6)c%o8sy;`TNPW@rS@un6R3j@W}ZtFx_OBxLji4`^^T5ta9{%xhSsdyUD&V{@+1H zrFYH|e|4=3-RCG|^hI4isIZ^gMfh(xaL@&9kSVqhF))b41TPo8NfIQM#j5F+@nQi$ zCuy3Z-DdCp41-n21Q0n8^0=$aUD|%X4V!Hkw;I_vOE^ufauwNEVf^(Qy_Q>^MBkj{>3=8&Ssh_dq>2xZP@)#lUFm=CY2Dz zP)CYd&aUKGnn>{B^nTgK6ULIa=tCosAKjzR#Kyj? zw$-k;p}TB!gADW<qEGRxb0R(ZZ}Ct8x*8VY$xV*mq6e*6OYHx z;b0VyeeM(RtF14%Rn%+t~-d)_JXplRy?7j)QPjoY)I7fH{W{BcC;a{ zEpX{$US{qzSrhYZUTk!9gA#f?a$UezTuqCV-B!QzIJqOxo9j{Z)GyHyhHF~-EDnX! znf};5c)py9iymAEv^E9skY5eOlJr_gT@0Rcpq#!}vi2=u<#nR}f-u7* z3}_Y0qZ$i}d{bg{8B2~~{7&Y@WhI2xca)S(6x?o?^fJ7r$=Ku`q!#Owp;PWf9_ku{ z>dSG20BeSTw_fcID>-I_kAmN<5EYg2a$ITvZ=pD$-3^;5inBfIWCIj=P@I^yKV$0u zg6~@4hDO^u{%9%#2}lE^QL0((MsL0Fpn$`w1dQVjiD7GMD~sDt7=dAa6R9henQA)N zjV=u~`j8i-_%o_#Gdg@&E68|anE5rxG9#3H8KyKdjUFgum0S-+Vvx1ZNoN!Q+$SUF=&yzBI0H?9 z3tWN;<|=ZZOPztVd4%(<)Z;{@^fDAuvCKIls_tH-C^dq3s(%JYUZFXN>BU7Kmrb21 z6X>sx7HG*7=Efl1)iK0l+p3xoF(--P4w!MYp+`^KF zL25dZ|6-^>U}qbnWJ2 z1@zpTE2JPTAWV=H1$zG9+LixXd(d_%RAOU2T^q+k?-P&jPZdtU7k!M=DKfCGiu$EJ zC*UVnY6LNGaCnikd3DeBrzzQNyfrHu{VQwABoWKq*G54II8OQqnpnuE!c7J_mQ(Mv zKX5ec4DGZ8i}J7+duQfPUJgom-W&K!#0k`l9ib@nB1N64shHh7B?zdyu=!G4heZsA zu3DcTf$+ZL=rASNx74`YTSWuN-HO=0!}-0QUW+?b(Z2b*YR*=VA0cy!+P%~NPt;YC z&S?c=TUH^7w3xl!%*a4+*}09zVQ%ckn#HG|7@6kXZM=+%`O0F!b-){a_juOekLSiF zkuGA;f7MFsqd}5ctH3Uo3Hvg@QBZ~#8BMF!g8tAsih@^$N=zB7f9E|YU$2z^^e0H! zpic+(JuR7srU@tG-4=ey1wCTR6B{ta49@x@i5;zrOA&?aATB_2 z$XlUFSH&OSv?vSlv%}_MW3H(NS$^s?a-S5kF}=Os2IrSmWRRr_Y7f6WyBKPe0T2PI zGSG1mJd*V9h_1mMANOVm>q^V(y`zajB${ zZb8oh7{dnLYBe!Z0_}6iWj=a3NAt*_C(npc;m~tlyl;xO?vKeY7eWG4&WCi)o~AGi zFye@l$wu)#AePuR3D0P8-Z96<*U!An{lD#(!0j(C%;of{RLr9308$vt6#(V;B6uJD zXIL6MrvBTMhf`e7=dZRG{iFuI26ZFQhUUwU%?D9w{kt1CG=9`HT;qRA8T4#G`-%G3 zpR6Kd+Bh~|?p+KcqBtaOUU|xuvwGO|`kQBMbRMIpZ82}QIJFQ^8obo6-QzX(ma-w% zszBd_hRzD8%J}bMtUMJ6)k6aVzy%SYoa$p)$-{riN-wV(8D$)pGlb!OV&g&Qz2^nS z&N#EXPHDCCRQZTzGBkUN{9aX6Y`it^_{t2e;9><%$^gsk4Lk8yx;0uEev1@X`SfPN z)QUg#ZwxYy`;l97kzphYq5QvVL@jTGznLE$Bd5JP*bv`$?d?iX*uk>c={ zW7LBen;TFGCNLS8BW`!bx7~Yf)PKr`+g}#V zU(jjMUdnLY0~I~)A>nt;&+VE1&s>Cj{^#qHP8=;9PU}QON(^$6XwC1q3H6+=MbZ?T8-;mR&9hy1Lfv8pC)jP>hFq%Cku0MCl=f@HELA^@>k zFJ1}}!BOvM3TWIzA?A-ZXLjSvrXOCG08vtl?dT*S50}4-Tb?bvCB=K@%1@Hnv^g;(M4(fOVY z=?;+sZNDmFr!Jd{ncW3joNQn^n`k(Pg>mmUFwqI$V?~&$|6&CQJ2pC8$M&SvTkt*^ zRhB@ZV&pR{z~zm~fxDPBA|7??(pjSdVH$vIrQ3bm5p+CKsJc1kJyG=hEgYIfu@eOd z!f%P>9SaJwj(bR3E0;-BFb4mKH253QM2r&g&(?*o5Qaavxu6k;fQ(`m7SDN?f;U~| zg36T*ZO$(^jQMQD+9z8V9$=gN!P7?Vq3evGynS21bEEwx2}{dxvt|gD)P? z0hsont;*!s7n!e=^=3`Uy+EMCbPX1asSUIIoD_FO0qI&3i1lPx<-3UEG*Hx6I>M6rD2!Dt2^bz&*;8KTYM>hs$V0 z^~0YRgd=LnTH9#cba7D=_h#>Q$V=thBQIge%FjmZ!k49c4UZBBX4m_6$Ut7Uusu z`PayId3e3~U9~}K22rKixw;K-?&6BJ=<9d%p5x{^qGqDpA_a!LUsz8MHsfwR5wk+0 zlZ`iX#?mm0^aI*ffJW!!B(zkWw;ziM4FU&&f0kd-#raDvS}m9g=# z<@*T`+(;wDvP8Uy|7^zf6%o(UoHj?gAwR39TX;Jn2{Mc18qM+`P$GP!%i18*Imd(S z!GIG%h4HM6M?O;9s*SZ0Kln_Mlm`EU^(g_ltz}YXYkrCOX)9&gZ}i_M=wnwv6|)P< z0@oRGg%&F|YPs6|E{3(umawBNekbvG-W_r?rySsi)TiWaLe#`9~`Ds4A zw=36!PM#nHrZJV+OL$v|&aa-fathBQnaj$BV+3vxo3Vj=`|HCLMrll?M5|+=OVJ%0 z6eM^hv%$TKi6xD#mh&tR7f83V%4l}DD9kSqq|)+RCHNP*V?&Xs-Bx0#+Zq1kVu3_^ zt}PH;!-mvqBF5QLL|Ea58~A1|BvF>c<1s8g#&ur3tB>b0r1Q$0*HAq+Pg z6yO@6)=m~%To=2(#K*G@gmQ#5g`>&q>ybOqWP9rdkFJ59di~scnvjDmbCZP^5j^0k zxkM0`K`kfgyPu;NRQv5K8ALAGoOEcMAdSvVD#XK-?f`t9ZbKB*@f-P8!6On$Sq7^h zMf4=ZoSUaZBLn()V`EtAR3U?oF98Z9%rP#j0j&>b;yP)sUo(m}-az*z;WrQWq332j z4MO^oz>b10c2i@Ihyai7EzUytg)R=Xbo@R0ukyE-tJbRH!JiY^6K&F8OCviqAR80g z(GcgE<{wqcG=(RfqO~vkk~b)>Yu?WZ6>k)-bdpoZ9MA6V-fly*2yLB24G{NqoaP-C z|1Zw2!r7#JSX42_00wL#xA{KuB)%nTZ@E=nFa}@puKf_O!H|uYiOx+M%m7ZPNMd?q z-0YqW4ioCzf9~*0-0CWs9RCz<_9!S`R+ZGK!L0@d*8XF(y8HHOPjHAU;oGn&x9yl~ zhatbzDT)->!j(LxX~}WE#~p5`aozK@nY7cIC->vW9LcT8Ld!X?8EI+pd9e?Ug0*3) z&*d(}ajp=N#*J%Jo+MU87P=vI40Wd77aUX9Da=fmx7%&g;-T&A*be|VbE-lRfI&nF?qyw0*#Q~NdQbXxWCw~EZ38ggO&@7#>qE1PJ z5$%Qirt~#x+@Q?C?yOH(ndrTYBrZNyyIb9Jz5j4LD%R@3L)#?YP%5(fJWS&>WIJ|x zRu!(Is9&no>RmXld7BqvL?-It4wa+&2krDt&;aRyiG$qMp=5RqeJqPH-4i{dCJfTK zCvrWfyK&rC(THa_2u%aP`pxC=>qHZ1CkPO@BNzbmb}#YRUtr7y!a?XbLG}EweTt^) z&ov7BM#s&zA9MDU&VC*Zb9G;+u}I4-yaJ)7rpPrwk^_Gl$Cz-WN)R{N{OE`#d2t7Q zX#1D&y?=I$Asfh(p+El&h);{cq>&{x(BLsUs7f5QQnAz*ceg35&ttMKgeCed5Q&d1 z_gi?Kal|Oigoe+i7^XQs7rRhZ#cIr8kY8b@O3Te&+iC!0|MP5lWV=h}OHCD1V#B=0 zpgZp&5(TdJ4fA*tg|f%U!;fJx;?d|Fp^|EU|IW44x7{x`4)!63+bO!@2VFvgsmVQe z8{}#Xwhm2WtjTBan%s>HckBIqs8NW?Zdr|}v$`qbk`9d{sez_~z_fb$1YHL?>{??fbe>loyy5@Q=ADH7AqLozX8yrB(9I>`A-K zdT-`2OJL%=d$Vo+DS9yzu6mo`*(eR^YHG6f3pDO=wZy6!;FwH5BrsXOP!rLVe+-Hx{3y?(}(0}GX};5DNYHh6bD!iGAL>ZP;u1a9-v5d zTFkg5vD=+6RyRD%d(WeRl?5qTYLRd(uMmqFbd7^IE37v(nayrE{=WC|-kPIJT^IZ^ zy*NR9LhPIx-4`V(r{8)d9NGZpne&}igx3?1EKwEFU5<1MBLPwmN|q{96xvEgEh1H# zwG=|hiJ70;|4=(_l|w;P*;P@>q#{)x*T(RwnAjluu98a9-jX5X=%qVumctBnyvu(j z3mTw|(pu!%18WU-KDHvsr{}cjjelx7QS(mLMas2HZ4fY(L#?}VVTAR2T$#3`d`o8Z zMHNFj|9fO2&W)I6ehi)sARTh=mgZ$o z@BZuHW45wtrn$}9sHgY+rj1FviL!>04pYa6-b_)JMl8)&dVKlgL~2`()1_|$BY*|p zIFDwYF;~VIa_2txbnmV^i1~@&^nO^Pr?Z*>3j$f!F4`qj5U&edm;{)cQ~@;lce$#Z zRTV6G4BA;n#HEjrJ}C)zi<&fumWaS8gK#n76pRiaH&-cgFo< zuVphA&;eGT{<73_Uk>S_jn;dv4Xs`dGB3oJvDq0tYrRTuf0Y5^t=T*e^dX2QN1exu=w|Sy@je_{sqeAN5BYxPqe;6Xz|0m+G z%UmR)*Bd&Um}44qeC{B~w!DrgV^nr3qfH`*cXyfb+1cFYSiiHiDs^Ti57r^&qt7iI zq{no!No|0za$Y`?Cf8S!^3$>UC+6oS%JoddTs3fVm>bF$m zH%;t2;ar>|o&W z8X1Zgh;a@iZ^r5gsRsm`*~AYDvqdx|C>fIbJB1)S-|wk>F*DHD*2p$xfMbeOQmw#0%a*gGD#)Hl%ecm`T+F09CBG~0bm)Dp?N(AHL%2#Cr1n%|z$^bh+Wg+X^9_Dq_|K zBEGGl=oM9KMYm%$8c7M8EJ8H^%`$~bWa|R0-ZZea0Ge=0B&qKt%j5u5S&=6TGFjgz z+$;V(ZE$&JvFoF2Tyl)wpk%}#DR1o`YAda=eAD?TM~kJV`qxNzzo z{$k7Xcxsu-J6B~g=U9mCcJ_Ad*{#0|w0h96tnBOh9c6m-Uy|V+udja2_py5V#lR#; z`?qRXa25cD1DhUB=E`vmDGF=&qvKm`lj4)md)nl(QHsvq``cJ#Yqw(adwwU>Yv8a# z=-?aOA+WHY*%bR7BRZ-I;`A?u%*(^~rm|)?cDLn^f?!>Tnw(36D7m8l>aE7abEB4^ zz!sruHfJ08n$ru{?u&;N^vmEDvlk`*$NE}5>*2F25rY03UTpHWFwwQf&L=E-pOym2 zd0Pn|XC!>du=cJMoixvEFSwu}pMp}84%#l)3IBDun%KD=qc5#dKz?|IOFfxpCw2S_ zooQXw6qBkOBT&SQ4KtP&8~~KfwmD=8XD(t4v2_a$a_(oe(k_b;SPGhae@5t!-!64~ z8mhs|D;HJb)bCiDBrS^Xe{z4hyFd?a|BNFn?NzU4Pmt};A-TA>GBw4h#9E<%pk^lu zyD;O^jv$H=A4R2@bgcQed;_nBdcf#_KgYS8Tx^8dQv=-iOU1WUBZtlu+w7KFT?fyG zMZA!#s>y>0QHCQ&$gEu@2zb@y=5Xzrqmb5ekMFYT zDknuytl6=qm}tVd=_rAMWC%RpuTP%;&c+0sBsM6xfAC3X#qtMX@>sdhr|H|@XI|9m z(-rtdTwiu4(2~f=+MS7GR)Ueo#Z7Z+NfJ-FcJVUO>evt9Xw{m2YghiO;fe?smZ5z7 z)vq<>m*Jibhv^MB9`2!iIsc2-l#$jalz`;yMm*a_5rEab-*m^~h-5J!MG0`J5jh;@ z!gj7VQ++Yd-Gp$706hFrwEDW(lPk&JB+nz?%51ihUXBPq^lYyG8Peg5Z`@rqvwvE( zcZNjv)aCk&I04W>AT15qZ;h!c>9*X5MR+Bzyjm%pqq4L3T>CM@f-I->e>@9o{yr`} zc~(*L+JDVZpyRP3o6T=Jy}*j8VM1cd8AJn@P&VLnSs~IBfCIOwtmA!-;{STjsn-4+ z5*EwsXr+i{;lHC;HE=4%XUR`>iKI%8r26ZM^(!K)vJ~XZsUe;1ZHGa&w%c>vFyuK@ zz?vvunS}93JSCC|OxRPi}L6A?PN3lmu@mQf;D($%9r zENWoPT0k0;bbUVUGU3LJo}9t|%tZaRwf}v z1m%qBUC;Fegj7~vrhFw1T6MeGzLTf<7DF4SHbadJ^UGwo+X(d{Q%o?)FsI&b-1WwI zBPewmLEwc4Jd73x7Q)}zQWvcsh)0W8IE;aoS%a9z!L|J` z`EB>WUoDOLJU^~ukas1}TU;=2OSBaRTGWdnyOWYo0UMmtmKUVVN;C5cNKu0$Q zme^YOZ_hwBzvAp-6nzm(TW4|1L!GNicAy4uyiS-P|FkFO;SYn?kY$E)rru})04^ie zpdCQT7{hj)#6v+m%mddMBYrk;8o0djcrGUsub}tZ$(@WRz%;50-KMyWsthi1{9Y(x zEx@O+NQY*U{7y}BBd@~4x^GzCTJJs|nQ*2+2NZfrYpPkC48L{yNXfyu83>pRKPPzg zL}%)O7KH9SC11gD`6o;*WwGep+1_RA&C7mOTK--1WBcQR$gqL)c)$+~JB<2PbQLVV zWgczR0?5`u+KvAvC(C|V32}o4!D&>fXz%e}E1JGmK!$|!!>|B;ATWjEG;=Btb70a# zp#>)H$0H0WtU!l&_Pgp6K0O-D`KJka-e*L|WM2Og*q^c4gf2V2{KEUHTad*4?`X>t z^;Xl&+<59tKcjplMx)}&`qsd&V~A6T$-&(F6Pe^|CDn_6F^0FH!495tx`rU21IjHK zan_N?BFE#87qoJvHfA;H(5V}hrsQ1zcPF5@5eY}g>T)^J2QS{8L^ zbn4lLUL=Xk#W1ej#?UiY+L|lBiw{qfNCLoWwx!k+4w57fct-$Mp!nQkW^bhMb(VhY zs(x67Fnyx`eGAE`K9)6*X~oq`H9dEb_Anp9!5jrIz1awPZG?b-m3+yp%uB7SCVG4t z==QnXS(zfAuUgPJ(_v_|wnQb~k15q*o=;sY@hKr;IbUNq+kM7Z^=WpOuS(Oa1MXfANrOfBjU@iSLSw7jF#Q% z#sJ@_&ulOmo$%q^-g(^pA8R%6vNVaEV55}FPeu?YYtNA zZ+Edv@t`7vqg~2#Zy}On-timyyAy#xug`euSwck5AY2+?^%?o<$kAVDVjFB-;q^dp zbkto&j^0vTS<=Auw|E05&KA)SsTB^_rA`aP<2jqY&#Yc^t5C6)U2+oH{(-Ch9IxU4 z=m+zSE5@!{H=k#qanOexb~$h1XNNd%DvT=~%0(uhbxfAOZJj?1<%KaUe+YoTod2nb zF%#Ol;_)G1SU(u9na(#2Y_daRy1ieEk5Pa@aY{vT>qm^G8;NI}QefrGoDY9ddy_f8 z|JIyK4>)Zvm^HBo;Iq$ntb8qL0Fnkn>`OHOdGror*P8RJ=yQ8gNjX?oHQ-~16sfzU zrSi%7u3yRrVe4wbZ$p>Wja`~l+CX<)%!MK59e9bAZc1FWcNFhTSnCE2b7jR(ZACAU zFGhdG&MtegrM*EcI6R`fUOqmfen@8+h|}3E4Ta0F`6KG3ctu$-^wY9dEBq*HxW?T8 zYkILP@u+eq21msR#oJZpvJ|izXCLL{Wa73%Vlojv2a)=vfVad4>gWJmzNr}KZ=qm$ zxkEbqI;@as)o$f{a85-=Nebl#j{DtcTKAV1Vs4-D0(vc&(wEY63YBNek`hVe+U4$Q zxg={#L^sG|Jp_#Phx4ON|;3BbC}W1XvQNr(5L^;bk-UE4s#=TSxO;rQPl zwo2F$4#AKiE&c#8x$sl&z^~{s7EGI!P|utgwn7}V;lUiMAo5-PZ;4s@1U#_5{&Hxt zMgU=8;2ilr{FHfo{-RabMH3**GsV)X$7~)c_SZBp9Q=;*VX>ii@=tcC*CZ`IQI3C4Tmd zFwKw+V*P~sRHTy+J}<}mQE4fle12)@(w^efsV+979cr)yeU#- z8O`DSvwoW)%rot*wfw2Uw7AdF$lAC`qzPp?EmLPT>UKVCjqA)BRVN6?4nMJ(NbEa+ zlo=l~RVYpiEA|W5DK8^&DXSaOEKw|N!Q1n<6O-({(?f zZz&d= zlNztAfZm~3?ODz=hqPd@kl?dOJujDME(~WE(ih#wuQM7@eipnnH`Yn@6$>=yaBQ7%acj@#mNnNnkiX^{yi)`NVjDF%9TWLS?#`ZyJX+qKSjQKaVa2g9{@ z*cWAH9PuI(KXH#~FBC@q#h5{`!1EF{i|xTA`0%2y+b9G}g%dA%hquL5lQ(tsSLu3c z>Y<$hP~vgx+FSH>m=Qcymdsx0GUF7$-_a9&x0ShP#Q;JPM7!2TAo+T!@b&>W%l?QpXO%oN$6 zCR-hRvNbW*FEaJc{2WSY?|%(_OPTsa^vZ^Gx``alag|x$7=08fs+dk%+f1_s;;Sg_ zg1<0-3}_V@02b$``0!2iZ4W*xcCojF;_SwqQK#=ZnA1>lQZchpFE3oIdZ0*kYYR2w zD>976&4c5&LU&R$JNCHRW?l#8@Fe`~!5eekskuz?nn@m3vJ?5C!XWAF)E(5q`+e`h znwI)hbuXuR6xhW(8TIsz$FZ@@?RYI#w5x3&v2l27T?#MxJf1dEDdA>g=_>cokab%_ zVU69Tq?!{IoQtFYYmeB$McOeew$JuI8fsarwEM?RROWZ~&fh5AS-2|b9{^a)Iuw{s zDR*9&$rjjhat$1P@wMNLU=0s#5Kn7-X+tVSA%?ZEi6YeM)GP;#ZXr3(kwhX_{I6Q{ zeSc$CEOiIapPj9Pc4GuC>`ap-(Pk;s$uO_JmdKfg{0SxfwEZa?#DYKpz%y03Cz`~Y zBk(*~Zr9~?;1=14Z4wWuz-kdU$GahGXi5v*iG_wBrQVP^ph5baz$%WkOA(HJLS?$< zv0#(9m_ARw+kdhz%eb8(p6D_=mZr{Z#lgkOGOtZ^zxwDAmm%k#BEMT#dC{vduco%#hxz`e?!u zE>wxJ>#~)#s>J$7A9p+nY?80KiNBZGbmwYV6qHg)Sr(Xq-NpEOC{$B9g((GEn0DIm z+Ndg>h}FHez3JboJkkykZ0@kM z`7-j@VYFrP2gj03$jFSLwJ(E3y%E>07YHRDS^fU>I*^p-%XO!O+xpbC+rqyXp~8)tYl+9Z2cIMNVa8-S&*NQDyMJ@f+0^fvi>O>HO*VM&EL`ZT@!6}@KlbmZ zAp&D2yuS~#z}FU79(z?52A`4Xo3-ci@8{YKIg;JZ_$ zxyMlT?4lN_;-Df{zn;^XHSy}MH1e3~eO+F3G?R1q#s9zA`oXWpZ3UgNPh#kiYYBI- zm|9rthrN*Hg{$Sq2K^Fe>KR5CIF3XpS~R3aGXX0|yL$2e7@bW#Zk&we869_9fU357S0dfK_ddX?SoMs|_A3 z==~9rG-}|{I*MI|RxllWW3FEY0o;T`RsGY_PK52wCeijOs08N(4h(Hw$Hy$w`h9!a ziXI%$IAT$X`rb$Ok05=i#3ZUi#fEKkfJA5xVVXOTBaSQBVu4G{uBXqW2=@OXq@g|GVfjT1|ZCMQb}8WBnrf*2bK?q`U@0 zJuSlb1uz1Xl8(UAzZjM7uDnpr{8(KeyYZxiYe|eQ-bP&rg?v(UxA3gAVwI$WYwfGQ zN8Sux42E`IT1y1V@~9?C!ttBo@D?n?X#)Yz(e17^Jn%$ z?}UiF^Zf7kv&CB0p1o)PuIoIHga02Il)17r@uvn$l1%N~8mc1w_B9m$jFUdHm`&kS z;>yJ2R3sUOX{O=yC){N3U>((rk;0ua%%GuUMJhf{^f5*kBbD zRhduuChwcwACTH6E;^+M{8n701hq)vm_;lr2>lXjiyKsB+OMh(C`)o1%i7rTrqxG~ zBhlQD%$4=E8*2Ma9JhV=nu?qxIn6hn$xxY5{cbF&aGt3U3H;_{cAWf~N>i`KCbBbk z5B~!Qn^lR$dOeN)#sNuZ9Y1j3Ud)@!qLR1BaQMn-*GUKy6x-G~XWoG}& zP*D!B&JmXN+X#&NMAj434MEk*5}-9{Le72Y#2|S#1`t&Um?qV9QdH$iz`u3V``L9V z{3D~~BRoSUZUrO!@YTYF_>;j-hNoxWo>KYN<>AXo>y`fCM=ZvWlDC(idR+hZM^|kV zrJ-xfr|E91A_(p#V&Bf0qrAPt+lgb~ zR9^Pym?LBtNP;>Cpa>f#pdqsDJ+?^4Qc@qjXFz^)**38u<1)pHRKVl%S$nm19O!%Saa;LiO@7NERXTUCoJ!uk9eRjo(elJw zR0y1j2}G`XnG5iE7%C64Emg!JChg)w1A{}uj`ilcS@KKEQnIe>T9HU3K+rByNe8Yc zIkU)|#u*)Vs6Iy0+!FFed@kB+&Iz4zY$P*yW5Zwvm86h)Kula{o93^z`O%(f zmSYOJS5;)**tk7ExM;4_9W}KTvm9g`ow}K&hi-@FAXi+o#>Hy6hbV zgwv@UT;>sij|sdn?v?0h+(%g0`ml=UjF)#_~wHFMLd^JOo6RfaAQdWSQXO<_gSfxb>F928qw zCZnZ;!@C|UNbkOvq)JJDM%tY1-nxOYEg!?__#T@2b1dt+m#9=#h~Cb416lUe`G4dD ztvMYnZ5O<5s7xQR8d+)jp37*R-VS_8p=2V}k8%ld zk5Y~@q->0HBIqB7@O2KyD6JM8DeuJZ3#%Y$;Gow?Ci9RlwS8@u3@~On0&&mY;7dDn z_X6Q0VATiE^(bl2u=CY@sA{>(?Wz#Rc21S94pg@TXRPqQLrI;iyH91WFo_D+4bjgT zyJoFa+WY&HM^^|jUvQqz0B^^#FSYZ|0V#v@atTC)SbS)7kYK8=A3#Pm<*f7wR>H`Q zV?N#Zt3U^#VzY^tjcIk8P}dJhlW8UEyHONG;+4Y+o2Ii^7<1&t1$2+)Z))DScos}j z*+e>GvKKPn$-|rzLn&(rsOKeQjM7Z(SwR!w5XqE&k|VVVZER_lLxU`~w;5IbX* zl%cjNMi3OLIXS@b^3(eDm+~OZchs@+GKdB4_k-C-;3 ziv^kkQ2D|i4#1-DiOs7n<1GXLd3v-1(mGEB-NP;UC&O zM#besNGMG$CmlBA$J32iqH^7I|I;{q96nqwSK8(AUtk^(pKmFrISYw9ij}@Y!a+-G-81W z2_8*+2(eO7oXm%$#=E#D;U9$UbM@^A`aO^RKRnlsFpe_Oca5bM$2Hb0JG(s6%b&|( zoEYOX<2oDb&kO(i)}}1_43GO&Y2}mE*5jrU`0$8$m;NhBTU$In#@zQE)}&U>i4w3b=3G^aQx zyFA{>+XslZI#qx_?=y{*VWL-xT;3F_SKkkSHnbm~hF|7+v@^}#?npu`7}Gy)il8D> zn*cWRwe3!4sC45IcY|csgQhB#5$$ke>{)|Lecu|-byxvuqQ)Et|5u5{6gl3gyF%1j zfQN8`G1W)^M%t!}?XqtNLZ|0k9N%KoeP`};((bStzV(A=;2+v53bOUp9(7?wa<0T9 zCfG*RL!QmK#xIC3Cb~$q^mHbFK{+_GrtF*?_IT_?yotAOj~bBZkfNJ1C#?rE-Q|Wc=^JU<=EY=)vh@c6LXkS)$dea16TI%< z`V^2;h@OkVu0;v3F8&3y`JDwRQ9L*#}FPs zQ14*7!?WG+unFhQft95nDg3eNS~_zzwJb+jd^UQUj|LW1bEOvr40vo(mgLQ9zt$ce zJ+F(6ly9RWpL348EWUjf;$ij$O%bN*l9&Jdcw#ZweILT4Jixyqyp#AX&1+Pu3-A6U z9K~OaRJ2yoSCpD3m!@Z8dwY)nhE_Ud>c-oW5k)=ZO}(l6FMdNKUE-n}{q;+7V}Gi# zuqls4(8G_WnRf$u16eWqbwF$7myQxwaIuZ{W`s6Ul`d@ZGvocerIACC0~6&3UrHV0 z(*c(RQduGX)5tE@*5`~LH5Yjz@~uRK z9HL%~z7@<5tds4zjQoM_7S?5@K4E!V@DHtt=FF^pMq!$9FIBG}g*{OUILNnlcO`KE z6J{N?(q?Fp$Ma=up}p!AWWt1D_md7QNOfLc_sbKAYYuH(GNKXoV^QpsLn$_f1T=IF z0)4;8=*j>xWFz_u#t7DaTEoSVmEXqCWv*De7~UC#cvO>|t6h)EG9@y&g9*(|L?FP#j`2agz zUzCi^$W&Cn+I9*U_{@q+=qkk|i}KJI_BO_M)eo2RL)iCamRXOAO4;%1!Fn0v-I8@x8E-TxutvF3{TqNQx(L z+Va=^&1<+bS~cIg+lhU49aQ*<5(G@5vF##fg6+dV2UR;W`O2nlgn|-p^Bt>f6)XWO z(v}~kR9~iu%=-*}IEplaU;%#$CAtM|l^F#L)HVrAd0+H%^keu`Z`iUwCluF0;(xCw zc)-rJKeCJxj${z|uVJ?GO8%u=kOSH8un8LeF+k68EH-ht8}BW9NLx>HW&z~{zsQoU zHJnRcg`TA01Lb&>iod#MBx4d2zBi!SxuD%H27Al?F3|z=ug8jpJgplFEw!VLnBDEU zJis%rBT!4^=_H)BMXP8tSHS_5#OXCsr07vGM) zlH7-`%MiFQDdT%lOnmQ*%A6%6w@*-m-Yfh4^NMxJM}EXtfR~Vv z4q6@!g?0SnB^&uSMIg`c#cARwj=741pF<*fZ-G?iUPNkzjA>*=1Kod>hP{AS%Dj~v zl!D_yR{T-L5Q2#)18#TAv6UWpTNAl!Y(?(|O|dHQ+fUWR;KD>$|~>3EbB zE;ET+vCC0#sr5a5on1fc-UskEW(oQJCodMY=AYZ*w=!g8KHF>^msdTz9B4-DPT@-} z_1qUIw-s&95- zjK)0A(b!)H3r>b^3(ijX@ouUeOIwc2F|U}T_u?`}?i7|=pBe`FYBX!5$ETHv+^21O zP-M_yUe1Ou5m(uWWw$R-R)YJ|_(x5Hx#-L_rs)#-M z4kN1VreURleLlWPHp95ny!OF3#M7y&5iaat9d5tP_jVIP+rq zN_6I@;CoBwX41{&L-|6O71p}Ha3t<mnS9{Y6m`}r(QaXha2d9KED@3XC zW5i75V?HBaRzuN1N2bJI?nI?AJ>Jj zzS}`v?2I`8--cV!-TEMm@PMy#iM;`J@3~v% zP%-nphTFN1x&T_=iRmqu}HFs&ho`SWn?(xZv|YG&+Ds)s|Xefm$l>Pl@pf z*UoJv86F&~Os3gkuaUG9NV^feuDP;d{+Y!a%ZA_EFko!IHdvLTH1pO1&_`WhW{|Xk zT^I1lGMHzz$EE)aNm1_PP-^5r`mM>8vB4SjVf6g^qr5DF(^k?KbM#|ll$%M7$J~`R z`vqpDkt=^N{3uu8!M0=2M_al;DM04X`mYbmS~pm}U zi#L3Zk{}eh6#YXZKoFq*=~BIvv=JTSaEaknfR*7qmGuDsyw0*R={pG?2_EB*?~ZsY zaTm{TC>$(#oR~V5)fvVZjc(n!T_gj_>W?p?m=!+Eikv2yWKz4wIeZ^TlV#J!FXupo z9~SG&Gygkf4%dA|K&jwvXW**E&g2B4DID}g@b>{;XG+n?QE8&4mWFhFUh(>n~34^(sE;I)g9pRORL3O zb9jcz=LRY* zYlx;7_Fa-_?d072g!aPmEcCQ>k$^J_h{rihk#l%e;OpA&Ehb2{nvbt1NcmD|uMIAy zD$Oy<$ekoGiYCZ=Au9%HM;&`E>*R^LlzO%*qelS;UmBRpwX_5UAVXQJAR}ci5X#@)nFGqPzw68w5 ztC7knd@uXz;V!Lb{m(tVN2Wk(!`21GyH`YcuU@SD!eV{Ak(tn6wMw;YmEUV0cjM7z zHhr(qqVugl1_EwfJMGH#zUXD!s4KEN&K)Awz}$=&32dX(UgejKdtS;B8oIrL$&q3pk7K{HjguEQ5&V z{?p-ZrRI8HkoBYt^JG7u@UF5wO?4{=@a9)r^^nBThfN0G%YHiA?zGe(kT6Y<(e_yO zI$pdyfKVivQrDvYd28u1mR_42oS!VNSMK_5cCJ>TS?oFIx@E417bL63ulCu#!=9dk zKLl0W*@Uh2KH`p6#qP0WSK1^ovg4+OcCA{)=LDq+2vAqcJ-4+RJGB!!zus6XEvRzX zho$F1V;hH8iR^^_dtTmn`avRGKLIt`G4A$XTlx%b!bq*?O$sci_>< zjR81!&1kGWJlF)td}6{erE!0i7I$Qld?gZocfJQmVL^u5%RjCUojjoeDa#$dJ4Y*0*ZG|k~Tk@frHU88;Pt?=wY0g?=(bf43jDAtf@Azc;}hcLi8 zt{=Gdt2(PoKCQRr9kswCO7=WIJ+AALNZ<0f+0*xJY0Cq5INQNy?!~*iTc(q6gCF&7 zY9|KO@4v5Y+%*AKug`aRR1H-%K!=w2`McwFwc|vd-)RGC2n-#WD~u}24DRCJy(rjm zGhnF-*bD!MMiNMV2K@WGtfCSo@)O=`s0XfF#PCmgd%^yCE0q<^)EAhEx>0fsCD^ zuY--Y7sT7{w_E6|l8w07ZrFCZxoCf+hRKs&QVn0te?bT#mR&=U!4F6}xnF~(ZyjPp zUh^kd$VSktZ3rGsQROVuoII~KW?7EhYw4Xd?br?~m?Lia#@L?R8DE>rS>JQl`@1UZ z;815(IF1)(pE~Mg*g6vq!Y+MTnb!SIBr+{b|8fxJ8GTn?`H|OuRxE~Z5_Uf z@#&beXFqwEi7JxpWVPIOvRP3Lvqv2Jy2w&;dR5ZM{9C{iMN*QAUTP!5q}ar0{}i#} zs^g`cSCbPSdhFHw`<#UQH}q$m^`3iCnxraP??i?HwsZh)h)zm*sa{s1?Kjf#`xm%Z48$`Ip z-?`5%ZhNHs)UNfe_YtA0SijPwcW5_~nParjaS&5qz0IpX`l?iRXvf*TPen&V{BJFb zpPdNru@0WM1ow9>&wIyTV|KWRyFP&Kg|&Xx6j=eRkTc@{s-gkjdi&mjoyuh{@P(H8 zcsC~PL9V55~v`q*;JLh>J47eJ}0`N$7Bk*3b2INmADlqBpE?Dwv48P?B|E1kbLXWGNUdtmY7s#Nfxd&PPE-<>8aUno8MceI%=}j;t z^{G6jQlN2jxdHsbL~~wm5+7=IxPs{pwmDnuoQ zi}#@2=oho0-?0ka5RdJSzhlC;a9G&ta39-&h*5znnN8Wj#IZ|t7IhL^4QnXe zTO`FUB*@Up(Hmq+Uv2kdF|$B2^)ozuL_nF}TCr}Y%Sv!Fb>KBpok^~l_l+Mf<`oDp z`~wm_1+|S(R0X@_yu^_2THpMBwih32fQI)hpEJzYnLuEGxsIf8tRpx7xlx=;h zb0JHTrgRK5_>Nef`)#cyyqgA`R?^k@**IK!@{9Wh2e3l$z5?iwEqjHypr~6-RV>!V*w1}jTZZm)X|{Y) z(O3H3o2Dh#ah(*`Wnw%Pq~Rn^4cyu7#Zcu8!O zQ&9v__vnJ$!7=78OD|~El04(uEx#-Iu81_9F`YEr=lKOzAM9j#%cVT$W+ynV;`UM^Qz&}1d5P(@yo(}bv><$y^6W!?1zr|3zu%kU}aB7J;?4Gs>AvzPfk zP)GUp)L$WSw$2-CC8VTT{dU)5zs8#}s6o-K;8JaMq|;F)crjQ%lE-Repbw|H&mO-0 z`M+vjHGwJc0A1ek$4EN0f9SM#TY+Q(2%gE$)fpw*RWKeE+PbmyU^2uilfuMALNC;$ z;d+5GAi=fE)f(+xqJzs^Uhi-1MUnW7XMClwwHe*D@1VXxF%$_NOT?)3qNj_7zp4wM zvvq}B7^OuG9=wZ1^1YY-^O&>oWFG9|+2e3TOcevSfw5&97~jNfU=YHXNwcfbRZ@|< zBxJlM-WH->y$mJwWsC4s!xr9Lxo>O3d%;&u=5JofJwOr5(w=i1aV*UeNjrsv-u{2Qb$<-N;Fh(*B`$yX9G<(skpdapz z^|n974}l9(u zahz3N;+{GlJ?31*lThJp0nf#exG~xdyLp4q{;&5L0QyDy>KaRU-NNl0cqhu)adwNi zHu$CN;IIy4VL27lp*}%%9e}CIZwT$`p|Y-YfvO#LfQC5mP~Zy@?C1Z`{@b&J>Dp32 zWT3eWRtrsbJ+*zA3+XH(eBE-oX)di8=sQ2(0`tmhe~9GC>l2GR?8O+0B=FFo5--GS5c-{Y3(2rYX9ZAgztsJ-x8H;%lIQ4_0y!1lomA?D4s1DIb!oD zl6<1T>%AckHQs3m53>zI5$yTr8;42A)b9Vr{SQ)9{mPmQ{wnicwmgXonEuyDoEqMl zIYmY4pK$2A(NREda?2!gE4DN;!(rYqeUPq`;0%SBkfjp-HdMByy~XO25V#YsJJ;Dq zx?mE$*(=5PC*aB@lp+$L62}a*{IGJAeR5|^rxYdILOg77M!T0_e2zqmF{2}YRhhbH z5G>Wm8n*g(=|LtMwDopm)=X5d+uCyMMeLqLWp?pIXyeHi$oRE=q0cpIvD-YLvr z$aO>9)&^|jIhqBC{zJ3v`}uZ4?>tc8N3+x9QD%2-n8||$$eV$#W})Lg)JZ9uW)|;{B*3*j--<@!G*o#(s{#;I)&nLj;a@Y zS$Hd}sIIBXRf~@Ahxw*xOiI~PFxJ}Bv7)H$8(-OpVKR%)g`5`{jXKI&m?S6mcr7`S zdguVr8X#0w(=PjEmW&*E=Tqyd_kJ%^8Kkx-Qc2&7lq5x(t-bvUH5hRQ){K9v(eA{a z!y(sK+n+)@2U#bKkxIcywD>hY>oUYw2suNHe;d1iotdUrV3bQkm{$_FXXvd_jEVoWp_TO9GSz&QbL=iWm_K3vFlw1d}v%uWCQJdpr$)OE!{!OwT%7iBdp_`Q@6 z{pqBZbSo==&V~~;=4ap92iivdsIauRz<&D{tbhIwZSMs(gJMahDqj&W!K>(^F)TCk`6~GO&5n`G=dI@GeUe#~(wf>;AH22a!54~$%dU2amnOaMPzC!_#L89qj_`|;ONzYF0LpZO*rhXU>LtM%dDzZ=#AC{b{y z#f&}dqpm7YijU_ssmT?U(7^Xd&(T%~wh-dy&xtH@yxNerj9&ugHY;QxW@W+gSd--W zwPQR3EyU`a2FWoa%%!6u+^ZHm-#BPXj9V3{6klqPdMD4X{0U5hpg(nQJ~ct8bLtJ* zZJ{8hB#GDtE8dp+u+u+<08Rc3=77+54x@RWfw1vK4q5g_DTrU`O<@I9aKi7GjD{ZTU6jSs-;Hpd^0l<>TZS+T z@H%QEPf^I_jOC2LryxNvov2)3b?4ozcv|~Zhf}v6qZ}eRvzWW%!f>L0GDz@m8 z1{%4rnP2OoizjF?mRtt@hSp(Gv@2S^ItU9ysckMQu2!%LrDLdQ?Oo_a0UYT*0q1!gz5yN6W%CnWyIJ7j1>j2y z$T-pjH_FHh;7`Dw3WTexP9*BY7-gE+Fil#Gp`5KdBtELz%^k*90Xy-m$zTU1*uykRXkkTNflRNVbAN$z3XrOJ7SX9#slx zsh@X1u4!GDQUB;tKs|d5s(J(zfvPvZWT(7gIUzbwu4E7y`iHjS0qjm21K0_VCwE4D zf5dt`?-s4eDFtQRP~<)ao@^b&vhwLDgV{&%p=lnjh@)YvbMb>$z#6J@)le+5dOl}% zilINYDAmBTX!ryRbgV|`ugh{D&4tFI&k5r!d&|dM6S@J^IPLO5YW8M%BQG5lA z6v6$3o-qW{G;%1&_L2pArECS64_H=3u7nmWvp+W0ez-xVP^aoYwC1g2_FqRUa_;up$LM6N zf+ibh8TE00X4!H~t%|iR?p|=ymSB*l?#wUD+OEhfCX5sGiM1n$J2PDdEbiRErssWw6X3}1sV2L2XDiDI4d=zf(s)1PY0U6*X3#P z@!3ALiEFVrmIUdJ;3I~0GlI;KDTACFT8_D*WWl*h3AtB4Jq@5SzEu{N&qHKuOE(M_Op2~V{WFLtQwiV{h>zZ0Vf}_@kJ*>Ij93q^Y9zvNRW?O% z_T@LEMjErVtQIb+ABGcF{=(P3jjkYhjE+McJ^!}n2$WYAuu%ikhVs97Dgr!JO*vJ9 z5VfLf8Rx>qsK6Fnpi0jIH=#DEjeOAXxstU?j68AjJYaH3VO)Sn<|JKhl=n%vvIL6z zDTg{Z!mzc^=ai}qEHFtQW$W3>v(Vfv?lz9PtFIZx5T5krRHpV6X<8xEELKESaFMJt{|306(m7iH?&c)Z8g`LdGDnrYg#AaeTBB18mVma9z0d#FPIYDEdVLr5|a z$ctuM*p5o`uP;C=3>3*28`zf64QMqbTZ*+={p{#wd-P8Y4Ur0b$1ONSgSx_rKTG z+ETyac&_mfEMX>WmPEm_($FXZzOC>9ONqbanNs#`9(^3X`z`ktvZ?#|>Fx3Kc%*>I zr}hUC!)MGa_J}o8pRCI-o+L9vGg(C6@x+p!dCw8WkCu@9YL1yHVGS^N?sqL*PL;vI zp-paZ=71t|hS#r2|k@efUSsJ5}yOLyzlDfnm*S)WROsK4yxLK7uQQqr){*y3xj7x@%Ii#-` z#We&x%CTFJ-0+T}>DfZW)~HV<*;X~t#`J1Po_vL@{xeiXr<7;Q0s+?`hA%NlvF?9y6X$| zJ?h#GRC5`XP2iV-lh-HQVN9_&xZUt)+~_Qydlu_Ioc}MmapSo?O0@!O-`k|9|Ge#c zs;*tkwuxy)7tB{UIm0OFjzi4eO}lT6U}Bz2?#bgXtC0s^cL1bi{n8b&ZP z-2;9~yK9j=UVIZ~=HyQ@Cqd~%%}@Ryu9J*=oLKjNW%+Ku0ej}`Kov51^oE7n)B@`G zuM`EuwSkU0N1b(d`@ecKkyyDcbBpK}b`{3%Jzp-#ku#!!R(?*%k=MqZ*w(>?vBD4J zBwuQ>=W9aV2%vPpl37pd;iy9_>j3=yb(|`NAT9mcqd&!i`hbJAO-9LlqUdSWq)=N? zudvFD-n`yem4JZW$ZKLjbC_i6pf(0n(HIc-QnuslRFZBv`5#&yD)w{;bu<8KR@zzr z;GXW*mSsyYw66Pg^o7cXdN_FMvD6Bje%{&j&{c2zmFl%uMC(e z`KLzGbCL!+3ue!}-ca(`)T4b{i;t^hZy-<)jZ3294dbjhRHU zE(0&^!!_f|6Jaq1c=aFlAVdTOPH`a3kB*aHWhZ|pBC~h>9h&`KQilF;pT(-Zk|O>& zQ32K)LY@yYe9w9AXxovN<_1G$5eR$A_;WO;+;-a3+qX)2bZQg@6Cu_se8KK<2g^1e zwv%-Z>x|1+C~~}J37kB^cIw`;A^KtPKWDup*tYMc51AUsEUyMlA}RX>LPd!C1>HFx zhn^vfA@ZncOX0H6*3JA(iA|t2JI)d0wWa`8T)E#oRaIaSIrZh{B95$Pzg2~S4KoKG zXKc^cHtwZpEhbJP>0C8aUfS(}0>3tuP&)Y%-(%($HJ`S2y`6AzT;$e?cE45j;STqB zN9eY6w8R;${{A_V4i3rG6a6to(iwr5^=%0fMp0~E1{H=S9qf7>t#f8hjgidFi*qqv zf5xoBFBNFT3~|34xDHLa*{B#M7Y*)QDRhQ!v~SI)pC2l!viOzT<0{y)`|o+83ZcQ2 zj}O_z0&~VOxMS9RHwd|8X|ON1R+X$a#%MkDC4Jt;8Pm>A>>(A87E}w!t5k!TuLxW% z>Sal2P|R;nc0v~q`&kj*GT9H1>JkI;&4BS3Y+EgJQHbhV2o9fCM((F1p--A_Kj2zY zd;7f{zazC@KtB&8sF{GUyO#>gSY5P#%}U6Yy<9ewjksYVnZHg-X)2zV-(m!{OBQc} zJ#}MVerMm*6Pg6q=->(5wQi8F0wi-XK4y>*ki_FOq?donxX^%pb2L+xxMJfU!DsJ9dy`Blil+42PMz~ z17EUT9t_^x)qW&E<^b%KGknB=c}mA-c5raI&3?ehf64Oth9>En78|v?$xWYV*nC(5aOob;Gjd8^V3?ptOL5F$_|5Z- zjBWbw2MRGIBwSZeZ8zNs5abvRHKgBi z^7=vV?(1HN{r1|Ae<I3teqq zwTKMjXQ=Ym4aHVQPl+-@G9>#=p-14Rn?Ym53mBd)x%foKUpeAmW{W(V!9i954rPWu zFZDHA(VucH(7-PuhPH1v!|TSm#Gk6!a7FR4+5!Up`tmzHxYM5^_B`C)?6uPB|2R_B zKxA}wl39h2T;H@xCd)4EPRShFp1~L1_c>3|DcM2uOX7=2OT0$iGv5EE1HZS6Q366l zbbhiMop$&kB-Ga-L{j`ljPVL9icQaJnD#P}q1`Va9POerhyGcEnpLeH=0aQ+s8CPL z)|e@##d|5=ZWVG6)+6dDWM`z3j+mj~O6<^qmRkm|I(rTJnC1;*#9r^&jh0Di$#xr~ zv^N58lz|!}>Qq>EW=;kL@()WNtYgRIG(OE{s(flku;zDMBCVnMT}m?3Huybf-0ou` z9;0b$lhf0hd*WpLG2(Vvyb1BIXFLNj=!-E4zR*4FSbvgQN)il?8n~+?FC~BiuW44!PnN* zYz{qC1imaf3oeUmOJ0uxy1;WB<`2mh&xV2v3jd+KxDxok6Zm}s@_Bi%pyp}R!dh?l z4apEpWxx?e&~ht8;RrhDGWnb!1K_+n49`y0`0239@iOMi6GoW4^T_>>NyinfDfjnV z>*eb!zr-ECzApEj$FX_#RIvm;JF(;{zZ~Yc?ffkUYVOlq??I3PR0ie~Jth$U(}D}L z?O`{CA*Bj7+&z^t;L2}B8NXgakPA8puib^i1-$WWKMI?y-n`Y2-P)1Uuz^}Em^?Xd ztDBGfZ@)j}-~h4;5_QODWX6fd`4Sak>+&=FVSf+RP@wS)>xhf;I;?zuXL$^i5Z6j zJmZ5>m4S2VQ{rB;ryuK)p1t@P{D?srCMMk%JuH^{v-dg0=e0_V-_*hRAWzdBw z;+8tqI`MyK*$JPzU*p(frcRpFybyE0^B!m}#*vDBK68>5o;+_(f&km)xN_~-wT}`! z{X-kZTxA2k8OSB9QpMKel;gUW?+*HF@*c<9V1oYx7D`#DBk=SHmdMKSrnT10a#_4{ zouXnyFJ>B_ef_YwEWdg8|6MFcPW0qC!r7V5I}zf<p(Pf%rd*nTxIY6QRwWKh_wn1Hf^n4{Iv`!2d#vvX7i@FHN#q`~e)hVkf~c&Ak(dyd(NPF3`R(8O!>objGF)~H&Z ztYnWu4ixVCf|PK5^m8)Jg&`Z~iahqh%(zmVTObOk>HDr)ZSp)Lq!HnG+7tG@Z6~?p z=HcoVUX?^SUgHf4ekFSn9hlZUqo@yKuK+g5EsmvT9&hZpcqndFKy3;fW2$=+t1~7K z1seogg?G1|lAMg%rd|C{SKkz{Nm&EC3RMX6Gr5GY5=(vO!Urn)Q+G)5(K_dz+9CKu~N9880k1V(L zKLB`b%ER6ORrV$tPv3D)d13KRiDvE9!)+o3C5P?MRzC|qdZJR|X$ATT2xs1|<{bBe z<>-4?)QP7nc8`<|WK#};fs8J%gKw^``WKybZezCEIP2EF{d`ft{v}5mY$B|nFR7cj zwEST|*S(8q-q88;v1U#zOeIamMXfl%{110V`jE=?pwsi`a>Yr@>iq!e*na-8s$nZe zIkS`bK=ahKM>#U(uCJyz(Hd#CS;4*8(N6|j*V~Ty1b`1sqevc1q5UcEUgF-MICs3s zHkfrLSJ8gBIsi-CS1eLI?0*$y69)|~q{Lfd!a$k`G$CZcK0rW>y+s#1!>64|vu7pl zz8A-m7SaDLO`#&yc6?yX)p_Tm#!w}HD`y$2uj3P%juFJVzsOT-KEn{-Cq4QUXk=VK|YHg-@gnnD=M6(U5;v_^9V5cq@?;faxr`L>_#=a(RDgw2j$Z%#xc$JpbA)Lxk44ji5&YPy$o>Iis9g z_Yyx$1o>>lc)5#J#8X5R34l=-@~SG*a-@YnI|4ACjf95v3k;ubW`{MD4-Y>Z`AoEQ z(z|z2B8W78MPTRdWm*-}bqCocR|VGY)|0Y$*4tcibs_2AI0_T$9G4`o16@pQ9xSk6 zd*ryP8OQ_@LHVU#F26(o znPkY&)jA%-Wcy;$tm?QAo)Gf2{qV@u^%0Ah03FdGzZ;CfcuRnX7MMAFVoAn&ay-ze zTZ`nb`V7HXoTc$0K}wk4*qHnV*1bzR@e8xWEcpUwLg5H2upcQc5p)$0^V)s_59o*R z`_dCplB(jxYS_wBVK5XtVV0#KQpxYdHQe0*i5}s+SVgd8m6eq^DjIk~=c|5e!dMGF zHgtISu|!B3x&KyViEB_Odfkaq#l|Q!*=m0z9PnQZ-E@YrWrMH0N3`S#N++Yx&Y1fyLc-v z{kN;t|Bg^3CwJtVs-3ikq-0M5PF1l%ySth$ib5#1cPrK!jQ^0bLhah+)%+t+fM^x=n3S!)+vmjp0;ABK>=)DVnbMjO%YK6*0wrvkMvS4WpK021^RQcE2rr77 zDHfsu<(vOnSOog1 zR9bQc#&fbiF9%|5KK*axUh@gu$jy>okF8A@@%QP;ZQ9I4hB&^-_k6K zP*1ntN*lN5I=Yx^cQ}0J{vedI$*Y&aA8P;klxfvD6&fU`NtbQ;;^X_?ssr(}fo}Um zfUdW67nHM zvM_Kl;`mWU&!wPQ&Z zZiWCh1hW=SWE=XQvSe|*0u^2@De^3P6wEm`df87-n6~V@;9w4mVEBjpZ-2+xv**i9 zL8`BE_RE7k3CU6wA`XrF`uh7dByy5zPj|YEng0*Zh$h<5HNgnWPY-)v^E90>X8@vD_e73#KzIHJ;yYPLFzHc`da`;vQX)amp0*i!K$+f>iKhE z+gd=xB&hUzX_vOdZxnTev1eXo(ojw)fN9a+`df82b~fj`A5AZLg1gW+n3BQ#!bH$3 zjv1fe$BQ9KNmmrQcQ+V|-4t-Zk}~{NyB}0kfsc^@8|B_QrU$>tP_+y=8 zpMVMqg+(^uTLxq6MG95!`_@s6g|Muh6nWTZ+HY+}4YZ4>64;yMX+1?jwoksy!F^Sq z-hyLx%PkvJ$wAan4NEn`o1&}uEXKSVLpf5~O9dftdXN4)AqT4jo7m3_v$aPi?!;^1 z$~3HL3gv1OHs)c02OcK6rD!$QtKk(~B$0K|l%ZqfAxlEK=7ntCs*4h~Dha}n(tjdA zz-hbNC;0O2L?e!&a+=I>AfqK}=ye{(M$D&TeFRK6d*Sn}T*!}>MtAGsB z5y#y-rR`ID0x5;VI@;jlzXSrZ&7izgF}H%@IiofCg9I=Ykx7S48veqH1uvX)&5Y^1 zoEi@DgtJ(1-oK@zp15J*6YG}VR5M@&;)~kMpS>|1b>5;4w9eGoBnD$-^ZdHO&RAr8 z>-?BmqLzX18%$mu==*#hCbluH2Q6oc#yUti3%cCd_^8P&=SnV8slBb&!lxNcHL0s0 zW^VVI&^_ZnsmR{?KC7*Z^yh2|hh1Ly@8lKauc7j4dqG?4p1uVwelr#UA#DPs1*Vo7q&U;*Ho~bO8VSW z5;O|{2+nA}imspWZ%&R-RX3Z1f~$zn#5R%; zrFP@{maQ%5NVcc1{@|YN@L#3QH2=jTF@3t2*8BgB;d2Xdk6A39_3Y&s3&$vYHsF0# zcd|;yQg~ICr~P%#m656MWji39=f_UDrFqYH3?S}PB0$}xf1y%jX3%%8=qD|!a8A3z zvRI}vR}eFtY$nKf-;VAO#v*3m-PnHr28E6u=yr z2iF0^Rh|EeKr7Qdd^u)7@}92)jM_>?PtN;-RZ@x>YcQgE+1|^rL;#gcwH);F$_u6j zM*-96H)Su*R~Z)M0|Lv9lzRTbK+*|niDF@@zOzLK-dk<;a z5x{o*z(nL?C>Po)ik6!NYESxl($J>ucy=Dvgtl6ObvwxW^O&jgS41%9XG1mN>bzDE|$Bq6e58+r|c-zFzx!Zs=J=ZM-%F)xV75}eAhjM4e zh{-RiD@WvRAN;$*yIL0S-&(1f zE$9u$wk{y2X?7{Nc|_vcHC*ms>nlm6D&6=td(Xph;L(+Jq>e6CIeQF0h;b~ZJqBi!EJ#a63pt?HCGYhZj)5#`(Z_%LyeKKm1&1I?Maw}FWL6j_z+ZM&H zu$ta1deY2!t?4>e#Z!(daVc@fzp;j8Yp|)SGpACtiRg*^Jv&ClRurwf8vw_JTx=49 zzR<1$f;k=UbbSa$4B1RfpG=+ikxY9ya9M1?ka z*|g)IVH)P-nJZemR_0JTT`-FGgG06;qqzayAylHcG=5sA;uVTo*GFVAtNAzW!(5qd zS>v?!p4!@5{qMGBmvdg%Xh;!fSY!H=#{9_#BCF1ptqm9On5u4szhl2(Ec3U)f(#gv zV)C-IGh5)B6if9#7?lMg$X+CZ7!Mv4-=?o;ViNSx9WM4xUw3kdFWTxL_*qDG z`+?(kCj}9xJ^uNAdBuVUN{^haPbIM8*QK&633QYe(X2U5sX|h6GR+D{#kH!QyOB`P z2F&0JoQt`VnWU;mpvZ{7okWm#+9jzo5|PW}sKpw7^`7l8OjF%o|7&e@ic5Aiq9dM-D#YEEM9Ev#zY4&n#qp zMCIYb0O=*3-^=&RYGC(x|D@@G@2pCf4g0E)jG$ug{W|JH=~Nkx--m_dXcfl*Y0-<0Rx_x}#h;RfRm-G2b;{ zDAS$LbvA#|&>v1H2O{(KV<3PeZB<~HT~^rN)gY{~66EuSDTQZl@09RE|M!Kdr@lzW z!}!WBL43Y`30)NJkc-nRm547^!UzWPjVfq0L|#SzPDIn?q~+Je%ZUt=KCVdB>0p$Z z8Qby-7+zs)dyqVW;}&vw-*%TE$<$vB(Qw$gg;~G4FL=>(74Y!zM$AdYX>dE&Jv}&t znE4oKhxjI(eaY+v*;ec&RoBx^M)J0X9IU{RG)Cn!Dpb$-Y1y^fU}(mGZS*(M%p5c+ zDL8iS9}K<)0I7QF%H(_3Xo?F`HU0TWH=5ZkXqJ;R2LTtqf{il{t)JoQN?$TsS*ZG= zE9N&kMk=%qCf5)jptE~P0HW~G>PU9`Q;%sdTg)V18NOnYIi>t8RHFk%hET~&@w>9N zf0Fadsvx^Lo8v{cR5{*2nGdOnNYJ5M3lfmPIa8j^8iP#bz|(M!OO*XYqDj#&eJF}M zm#SZlcV78YD9pB-3ymW@B&CUH>oXc~_G!l9b&PAGKlh6N2Lp&dGa1*Fd0F7QyB{S? zjwaXsdl{8P*_YrA_pd_^O}<(Hr6qLx&WaDoT7g{!&**&K4;}@Vr(hZ{9Y%%kF@dsw zK%STrAQbWGLiY8ZqxLp%H zeNYRy;FT5&^vZ#Gl8}M|ZQg{q+sx|^8s05+9cal45#N7RZXX!WMX|Oc(eqsY-^658 zmI~=Y!*ARsjY5tq4mA*e@D%Y4v1){W|i3^m&^XTbfa1avFx=mSmi@^`$KZ zUeS{Ow)4HK3kdV8z-2&^lIzh*Et(||Si-fdGZRMJt(%TYHD#oUzGi|7$ z!$v~oiNF+BK>OGMdGV3xx=Y;}`MumQE1F+7M)1CkV7vW+| zCr@R?)(+xNL)uFc$4LD=-`$(pM+@F2Z`0lo*>AvD={$sZ(mj;-AilhInvNf23`6GP zVq^qI<=4M@p4mRwURRy;miXtqb}@#g@4$aA{DZNViw>hnY)6j0<5(vkb+6*AV_FV1 zxF=Aa6lozVQ+Lb~RsKGwNSyu;26^aZ7T|z(1l#J=p>7L0y8!u7*!9oft5hGR&mONH zA*r2y9Bdno$j8MpKl=u2Uv-xXVTfqLQcg>$s5pY(c$Qte9`~gsMMP(^b0kG!Bvh@P zBA+EaCaIUOCf?)|_6C^pO6kZSc~=TygJp#^tQ4mP#FjWLS$^^mwwao2MV1aP@ST(-|I}GFJ?!ifyH%K*Fc9d+ zV%K9FELg>Sw2<6r{-FaF%BN>ykjmpef-KW+#DhJ=%bA6B$g(}`$P{&P>W2NOlKZXGPFqQ!fKKCpf1eWo!D{*dtx3aFii*PQ%1SSu@f?QAIkI}oq3{r3;3-$qhT+kBF6-6 zzQOnwbEh^tbtPW&wi}@5YShaj&?6@&bJe`x*&!ZseJd_i!otC0=k*(_>g2rI!4O0~ zuBL}f1ah0FTq0Ie4UjzMhPj`Q-mN}%C>a!X7S7sCpPV;N?OWom>sy`jJOQIEusuKg$R)Q+X)Ef$NLznx0!d3`R9(dXEW%*;-I6NkDDuL z>}KS?wl>UkJib;&6u9mcHV;dLTU`;nAFfQCr~GQ}gYQ|9HkTwp3)#iXBeE$iiX3>C zoQpXhcKtyNR{m^{1uhmJU=9q|U4$&t^AE&Bi;UsIZFCQJiM=lsG_>lGOgoD{mul#* z3|i~>esY=G6VnMr@R0eLSsZ<(dr-i}u5GVbwc>IRrSaH<+jKf{) z{b9ZrFGv2f2v%h-MZH+`iYd_=u4lKTGfV{Eqr2XUUfQ?u#NoBH!B3|_D&yk9tPz9U zX(WY58*4EYO|()Tjj|$5vDlATr;LgQZ1#g~`j-oL=UX>wKU9-=)4ar@tA%YqI6d9` z-J8efDb(~uzJ^OCoFdwRXSHvW1%L@`l~w#>(+OkK?k}s0OMggIl2aM;Wqsij*=)K0 zZy%{xogXc3&(xoAb?u3?JaBLnv?ERNm3AK^IM=PfudQ=Vah(i)()S7kiR-}6ZTldW zV(erXhM;HT|D44gE;s+wmdt5)+dU}#=JzDUC63TA+RQoAj6-Z=KFBgfivB~5l&qm8 zeKGbBU54~{_hl|knFDh`?1;wY>k-dBkbz1n(0nJ_0{+^8eIwD-Hi<}0!UT?^AWYyf zA}+GMlCgE)FHA0fQx3?oS>*Nm@@0z`Urs1Xub522wcWFuYw7fMA%km&G*-~|@51HI z>%s5)Vq85A~dx-F)#YT1b5EQ4V| zezsaocAlz0>1DQShFeDWG7MOu<>OFpt((Dgm451{`N)g!4~gbF;rJr$ScmtKebN;T z6gWbX!Z{b4mpU&zyyZp<(mRrcCe}jeMibrno_j|fKnPltIgKAJ(`X@Vp_eygGzRSbup!omEosB z8&{Ap-!-Rjq3@?lj-9YY^O;^PmT%AK#j>D_f+@-`pSX8e=R~XPWu>Hz0Z;ODUX7-? zuEl8SrhBh<#(rVCli%@bd8?+Q-9lnN!U7!rXw>p|(HVo+`4;l$LQca=cc_H#Iq+dX zTI4F2AD~NuS}7IPhLG-l;#6Ab{4|E5V?uCdM00-DdtY9%topIF--j;U@-i^9z&MM< z&fAhm3uC!u7siLuy=_c)rt=i28qUq3@2>Qq5hWR`0*@9@*Kb|v_m*}SorqKl%F`aIL9DsL1-kDke-R0&U3sCuw|t#$tElaq0|S7t&%pd zaSHHe`ir}S;U#JwT-VQB2omP_q5^Eg+#V)erb1}M9P?_3 z%@()sW2958aIq0f{E)NV@Rs}4{|qpNYxz*c&raAF+jB?ObIFOA6$i=9`Us8RJ8tm1 z6Im9aQ$1DVuN#rHB*f-H8@qZ6@&bR9qZSxFTQ74vJ$lWb2UwVhp`rSeA`nmYZ#Vwy z2%q12^_u)v`31`@I?m`PkR;4Ct|yCSA3J(q*ZU8~Bbwx0*PUBliJw(q{zs}>J?g#% ziNh_GYA*h8XOePS+t2O74|04h9?ntBG$KoPW=hZdtD9ALtVmSQt1tG>7kU2P=(pTSa1)uOTZk;P+0wS~gB?Od!axz=8%M6N;!SF3!q2jsKcgYId0Xi3^`jZ{jkV z`Ew?=e#_ks-ZgvU z-KTmOCDX$RW#Kn($`#BSyl<^;O15eFhxh$KInFT3?)TV;7kw6OtFTqNBrZ2 z?C1&|tIi(k(0=K4O~c7fwfD%P;${Oo`n%hg^fl1gw>duw3AFXn#m(>Ta*xKq) zpdI2?qqv`UEEuGAVh2^4`f$@OeB|jK`XmN!xiZxI)xehV_G2hHG=BFL;5ntjOptI? zjq_Oxj8KcP8bbO)K(u`l!B|3CuYk3u1lPwg38h`_+h`1O*ka^r^!m1g1$U-D(bMzH z*OMpRX7LLS?tH2#rQ4j9yy7-cWCRII(Jk1%+{UB*2sPB1R z82;0l!Sc&X*sJ(H&wifztA(4#anYrtjhJ#4BDMsTXb`o?8(gFZl*TF0ix5Ef4aE$~ zei)#Z*%oz?8jpqioL>-5kD%O#Un23~VnyR6jsz(Kdu?vbbU(4(5^l|0ehj+&gW2K$;`NK>`KG$VB%%{Wb*O*u+i8DA+So^ZnXotjdgXV%kC>Sp~pnDkdvUvhPU z%l9SP)oM{)`MEmTDkf zl9qA{Lgx*3Z;m8Q;EZqu*558CNqvS3D-5k^6cS!<3X|=`&Au(JMZvy;hUcf#q4lC# zNqg^&a?zM6r0P9dnoPoxqRyY1^k{AWm{=gCEHlxo_S5vqAli^RODFN3%fVkNGFHepsaEo6*S-5CC_48K zAu|Ag)om^N;;fnd38nNu82?~ELd97G8T|{jD@*#Uvn^bXG(!Z=+EAfH!L^g}tcik7 zRDGkVqNXj)oOuqh(4vN6VcL!l{wgVjKVu+-xpyT!s|4==M9M@CNp)P*r#EQFB5v|z zx%C;L;t}~6It~0v5bwO&6mg_#O;YYD<4)ny7xVCTV1+6QqR;j8&qr}r>8hrC7()fe ztp9nO{hK2-ZP`NaGD9h5aC@QWNxys>&Be!gn%P=7wn1Q|5K0e$Fe&dNsdIJ$F~i;K{P~z1WH6D4fX_ZMv}c zWg1xT`&@g5{GvC-^&&Y(xW;)24Yw6m(?Jr-w_s`6_zYGIzGRNsVNxzu7-Wf7jNiJG z^tVR1RFz?HQU6@D_yR+(Txdp08Yw2ZGw(XNQKwF!Hmjdzfw!(a+3;bs9cv>Rq^BgL zZU_dnXQ>LTJYF1*0n#EwjX3JJxt-}|o4O3et+M^$V0=}wi1N*arN6ElF1lh+BgbzAh~?R*5Z+qEuxxKNj5toud6lDJgK{ z(tS5Y)4Vwjk)?!7bUc%4QX^6RNjj0qU0d_YQe6+tH0LyFW3o{t;_zVoF2@>}G|EDz zp4WtzSL}L!mi-S6+e0|2j7J1p|}J-x^XGI91g?gvVc z_b(JoMJr)(9eRqd++D|OWjTFLH`dP-s0q+)CG0lI;BH$xIEY@FMX(E9x6@q8O4VKA z)iU!jEt+3fM>*^jrzCNSB^bPSZ(T*r0veu_;ZFz+c|4eWj7(HC&eG1+IO%sT_gPA8 z$8%hR*EVA2vFLZn4bCM)(Mx!Jqe8=Ig)Z%-YJUCHer~$7@x5;&1>SdZ9HLZJ`EZ2t zmjW2cugV2YgU?$elcW^iz)qg~Bh(G;U&%Zf^LCxAW<`%5 z)T!kK<%h8b`og>JTWDde!;YNthg=GD1YeC+@l$wQodee4${Wdrr9d+Jk7gl%?G{a{ z2~F3^3h=Wc3w&-MpCrLU8VlrvAb~5S-&d)Q+x0JPOubt3uS%V5l5X5X4qVYIIG}+h zK{SVT)TTb=HpK;!VA{T{vLe<<%S4bauSEs}NtC3BLWfbIq6x?lV)ZVn3IM6961Tu7 z{~gRNO(r}R(zP+N0yG3{$bG_ig!tXFdnj776PhxrHT*M~!;}1TG)KX~G***R*%MCb z;_q|rb*lrt#QY#@@0`)#FQ$3teyY6u=y;h)vZ)>&E zZrro%=AkFlcqos9VK0!rGIr#mc}*3;Ojmmu#fznkLH1-aD50gUnUe#at+GzOfMhTW z-wN)7eC#9LMyS|wQTTR-y^uU~9e6cikm6`GC0lE$gZ7m!T9a_t2WDvvaztzWCh}`* zi8<*b@70t#K@oM?KF8#}h$D5srPJx)AETQNZ)E0d`v+sDPNXGKiY#fYM0uT>X>Rb- zSjY{`%!8F&R*0O_iBJZ(A7pCyC{_{9US0yv{D0S9hLm=bh*NQy_DP|B8+at=w3*C| zBViARs}$_Na#^=}+{Idf5O>&!6Y-Fki}ODmTZ2)Jf>?KgMq~cblTo?UG z-H6fCBpXQQ094*o>b^Yen_3_pQ=9B4<4fiKC}NGb$K%oeXG6imh$WG(sM$;-;FEOA zMV}kx`S>_1pQpl*POu6~f`vvETWnM1bFPmWyj%-+>&CMsMg&}N7}Iag6j9$Zw1C`G zfhx=Ckjbwq{dDf*RxR?WJWbO09syQx@ipKjIi-lZl;0eITs`U^+`cC`~biJ@&=Q zX6h9rTm&)Ypl^PBqSkJ?=oL1p6IsU9p?rmLyNAkxk-f9K7JbiIPT&X2 zXPqRqs3^(3TTsGlm8#z&JCD zhEE1@+8z*Q!M;dB^b}D-U+2c&r5B+0>xrh`yc!7*E+X1F#{Y9Ju(_lb9y6If`%}*R z{->BOrm#O#$wU_RJkfg$+>Ok+`;+gvJ!qJ8ih{ul@itNz3k1BtWe-(rYu0<$CGFB3 zilm7CjP+w>Cec8>&Cid4?gR&5`+Q0!Wq1}Ox$g(8EO9F#lyMTACY%6ixM^m|y=0KF zpa76-v*6RHq&yKG9L@M(Zdg)Ow$_;98-!DdZB{i@<-ENGU0~0PpVZVWPT8r`m!w=`JKs9qNstdnO zQ*Z$fF3(~-NjpF3_vVn(?A>Ei#fT@emPq37*()p|#S<1RO%-myw{ET$yVxjC;K4Gi z;6^5fcX8}GK#OBS_=u}>LNzb+hAEblqe7qwwZ&g+TKu5cOUI@I!cl9SddN0* ze3`j0QasZ&7s27L%Y@(XO=jL$bYX;O#qZi0`oe8qqpp6?*d?CG?QoEOpJ&B?ZAru- zR4C?yCu#py3+q1^2G#8T;Zaz2stXe#|$Z#2a_N?~qxG9VK zsqOeSZ;tRuf28-eb3f5dSY3nhbsplSdkNMLft8gr`)~hXbcRM#M|>1oQsAQZaw#u# z-M4~f8?I^?V3bK!6ZWI45Ep{lz-M%xNJetg_#b|>0oECjDtRp0JOMxEla1F`MCTyr zu*-A|CC~A(TKhWO@Hc2`9I4JpEs$o@nQ*VTLvlyOlAYabG{Zr&&nfQOk&yGZx9w|m z)M|F0?CY7{Q_g?SVVi>x{8F3&H^ahmAG}HVYMD)*w`}R_hVwS1uoq(?ANgoQ)L?Dt zQ87|6J^cjE1gb+MhQx#EYjMVU+S*d{UJMz1u1t=DXrtpQx^`Bcoyg>%PTu8uX6E|P zt?R8o{!W=jYjL}k^KIhRPqva@y1{k1YYjCEr?-2Y{t1|O&v+?pKW?uKuUPaFqUTtD z4C|-fJqB^;bl&`fA$^}an2nqEvywOaCah)k|6YCUDIu>j8AtRb%~#3z>6N3EwPmQ~ z;ceKa^s)DC#_SiidaRJnhL=x*nI+H?#C@!vN`(g;yaV1IhAD;nL*g^xoFL!=u_7m4r7lsW#t)>veDbkEmAY3qxf+kA3_h zX+ftV0hKSPh|w7wQ&}0x(4G%FesCcaeJV;6G+)!@gQj*5Tdy}CvyP92gc>RD!gto7 ze@TY?_iR)$bMim5b|+K*gAq!usxg~_Xr?+FyyVZx5YH^ZdA}AyihuVdq;m4NH;njv49*9=k=?v%L>Vz7{!h0@l-Z z)U{R)@0B{;Zy}#vl^{0Qsojvw1>o2mLF(ONF>?NpEmnbI}G* z&1r+M>Z7l0QZ^ueM0+J@6^QAy@LbacOK%{Fs`8IhVEN^lPMCe$jWs9Ksa1%9?wb}G zKCorCGd4Dc>j&f96Rl7%O0E)?T;j11?q2smDmJG%_c3?bOO{Q3TkW}nQy)f}uel+u%5h&GsQA2y8s4Qx znSI1}g)%UvyMDHGnRvRQ3OjKtG+Bd@9E*CQr{F(rI#S{|aAicgIQP6a)+v(nW35Nw z4%}TfH>+zffmA&ukRAYJxQq;>z_8(Jt(Ce*TVJ5sTSAs8!<&B9cMo%gMVSL>H5v!m zJ$t97t~*xO8xiu;iiN(&LCZ@mw(fc|Iep2K-c}ZLGnSWcDSU_Vb*<*K1#w zy^^T5EeNy*#+cvb>h@yUi}D>c-3M5wMlUnx|MH9FDL%!5zB&xF#R2LEMC(o> z*x(?^`#~Gbm7QuaA7NFTf@BtF^5qm+XO3&rb$G0uh+@WE}7m=z$Qg4oNNL$*O>8C8dU%Brm7Cs}TI4*45g!+y!>DT&NM2n?O zod%uT&m&*^eS1dOf)>*|>>W5J5`mbFq~~8=bShKc|7s(8 zV)(>?ftFUj0l(rc+jY2$azdZ5xiD(M-KAHQ>*%rSr0+V4tdE8!cf@QfgbEI7o2P*q<+(}W%*NG5qjpqPcu+_n7AWKxwPPn1xn|KchB zJ4yswF0D=&u7~U8IaNGTmB5bQ21P|3!e{*4;VWchAl&^EylOqgY(`oLmF^yTa6_On zq1|)H-WY|3g`MrkWbIn{#yJedlc7r`sj8Y3^(C!;!_v>i%*Qq9)&iXJoP$r8g@M2c z9s{<2yGqor4fT@^I_jS!5%-eB{4Pn!SdGCOu+ZY;SiwU)sg23wI_+~fPm)l$73Pm1 zpDbpuDT!qb{h%O&ADAnps-RH^I?9W6St%d|6h*1MEog+a?M~8w<>)*@BDJ2Po)v+x z18vgKj~}$-BK%ILFSVtUU54uZJtv`*VxDJO-so9hIz@~94yP2r3lbLgkyE9@-J9<=@aP6UkEKK;>v{J@;?&+T-|;OY5bT0M3(Dvp z1)#7-BnNMY?ckG(E=qGs$7Hp(+<~yd%T~^rZGLjSemQ~$jwp_CoWdpg$JtkF&1hLL z;^ag8F3}EbnGbRxv|zK%mEZijn$o5y$`+h%LmC(EZ2XuRU|kFqw^;G{_bD@~h> z&j0K1@CMhjTZO`y?24kYx$uVK{kSKKSy8Ib_u@bfNOXILw4gYeo9|t^j6fn9ojB2t zA?Riss}#B}{^0%J8I_HZ{Yk=ThX<9h7=d*LP zHC|?A3H<^L%9}7hDi$6grS6`vq3-ezPzSOZP}=jyC8NAxLzq9XlFPnQ z;kN*1dUnTuFzAo8F=HZ2k&Xu^zKQ4P>eBxwwsp#KFCoithJ#eoBch zbtZEHSnc=PQ)AH(5-V?&u*bo1ryalfj6CStMWLGjeXxIZzsHtBUKz|Cyu94}=EbAf zPsfmNx-^d1u0E>tE8ELUdQ+GF%Vkbcf?KI}*rg-w=)fNoF-!2ib%a9k=7)*bCjXBa zu^+@Lyj(de(fNUy(L9 zT5b)GLP9SBZY}i&IQG^B3$4~O?DQEekU?mvRB2+YOfq(fF#9i1E+1~cA6Cc!I|PA4 zU%#f((t6{b_HeiUytpv(-Ly19RSm>2$%^y~B>*WfWFo`?Y68vr-XiTa=JxJD8HP+2 zPrc{PlJkR7xdD)bF->)VJXnA56gR1Y1mNyk8}3+enI@wqor{8w1!%0|fr!6rx!JKfz?wPRXaM9i1~R%a25C>C96wj&n8ZtvTG`QFrdk zKl~u&xYb-qdp8xzRl(Li0aZHoCbCS(lb`*n_AJ+NJj?FxQp&bqn!t~h4^0D zqo+|p@OkXKDlo&~iD4o!Ef$QK+YAWql;%{Kl=l*h(DX|>p;|j{;wu-nZq}~)D-pN# zcJaz`x|0Qyy_`@gPYv|Irdor3!Bja)X!uoPSA(drjJHB~udJ(Kh!hT*C$te03wwPx zUW*jxEnt@Nv8*=EM5O1N`}am_foe?$k^U};t*25aAP@oR(1PA@!=Qfu2L}JD6esyZ zUC%<#f%*eELN(fD*D$#|#={KJ@blpK6 z^@4RLWM~YHl~smSnyP%<{x01@(2hp6q)t;sS(>{##+M&9t*f7^i|^V@z9;-a+4`3B zLI-V;yoVPTktqKfuo)h8p0hxRnY~Hbs!aGI;yP8nGIPCN-%_Vgq$DZFM^2ktjO6tL zc&80ko}+hnIc7QUyLstEUzB_jG0c{uNPwgHgh2sxa%zrN_uKz|976SHN0%2NYr#%a zU^y-YLyqEv>^&+_hQMKWI67?Ru^YRQuG`CH>nrDWd$H|%iX_Vff7g%Jt`<(1_pEST z-hq77)T8i_u?(0{@KjHWTQV7=0MuX@JGJOGyPZD0GJIIcIO!<_b3+B4Rb~{JW}ePs z#rEU^a+?&86n+($>Db{ArAE!Ag0LvZij{qE)>nXfeI6uNa1d zHj0T?>)B|FCv+Wk)5DA%q6@i!YW1mqlYon%hLFe^s5fS_O>D;7w#-G>79`EVUiSOK zWHL01$!evg4=ch4M&i;H|cdl#DtAKGQr{4$j=YN^iZ}4w&-|vp9d~l>y zG*G@ea^H6yw2Z1s6m<~}`tF&t`c2XG_MYG3sjEzr9=;YRdXqH6J?OT8kinKrU{S=Z zW;b*LMpQd1u?>H35KA)<7W*Imj>7ey)Z6rTnX{PzL{2B0IOUo$IZIyVUbH^Ys0i4r6(t6ZTCFK0TLZ)>&j$LTC*Wa~02*A(($VTN-o&BSZ)TQ$ayc+p>E@RL2aCBHZ4(ANZ!Azq@@^NchDl#P8d21k z_p0;iSW>^#@r+`9CB7!RgBz@3Fgyp+cG9mvF|pq-sDjS&G^8k_S=w4X7k~B@I6Lg+ zd@)Gvj=a!eK4@S+g_rWgZij(4ciXW0|Doxu9Ls(IpKsK$_98fuwYI zHwa3@fB~ZfrMtV88Y$8-LRz|{(fhai{(gS{FCJ$*=e*DRx~|vr=^7$C2(bO4qZBh) zt3&Ot<}7%6zw#Kk!7r>mricbUSVVKZ-g%(fX{Q6Q1!k)4p4KEa+SJpy1l?Yp4GPX^ z)~R8uL6hvf*KV|17u^;pY9X(iM4*S5O7)BJq_Q}FwA6KG=f1NcQVf*S1tSa$8r@=l zJy`o?f0?EFA!&NKywtJTBV?4tmG$zs)DE{xZO$qxBae&Qx-9XkP-T=y(FO5WA_)=~ zIBGa31!aOCWu?zvVwrdkVm2Gum1Gz^&}Z&2_jlK=PXb6t3vf%CI@NYD=uFT(AE;Em zRW^DO%Fz4tWce%pKNwKUxN@84Z`FcC-yPymS~zX?1h6OQ=}kW8QH=IMe8s=T(3-?I zxEus_urm2CEWMuxUalvfBMCXROA2BMWPcykM1PG(V?;+M%5@-YMM+Nn22Zvz{=*sm zRnt))8WVP*Vd>jk+(?};Bx@#Z@UvhMXC!K#M3)R=wX+8vuWd7XqB}EJ;%x^N^+4xU z%^U^JQ*a@UI*Z=b=ndg%2Nng(S)Yl?tX;8{t?1coG?+vrwvf9ZXsJ4E9+f<(DC3fZ z(!1_jerEMqr2C{0f4LZD1O7PGlhLFm>YR^0`;e6H=a6>~wmq>YesX`Ruc;#n47aRR z7@j4m-1Hkg?4l4H`>bWN#YH~eG&~a-t61y(ZpM~)WffSK!qx&^0quVqPV4V}o~`|; z@}!Dt&R+Ma%Or_D6il8jFk~gDNGZ>H-08OSzi#dPv?R776)?v# zuS63VrCN4fFy1}C*9z;W5E4l`>Fh~#p_raPr z@^{|>{w_KlbF^8&A|v&xUu+DsaUR#vr_kgBC$BF?;v)=wUC5mm@Yk7z5J7qbm38R4 zYt6sjZyGopB##z`uwiFRlIxMR6iu@(b)5c%{L4VDXy2_ZIXb7HaeWe9V--dgOVuKq z&6G9tYB?7V7SV;* zi>nruB`85DJ7GJ6N5SXh-4*l_#yl>c3@2q{i;aej#KTk$enwvP%@!*J;OYi#b!dfO z4*BO=Yrcg9^YB85(_z|Kt?VVhoaX*QGV1^l?DP&ZOe5>K%|E*>i;h_XV`Dx2! z^x%V}iwhX**PPm(v`8i&ckkmYOs?7Eez#~HXPuH}5-EnNk(_HfT%TE!J@vjCNIRcZ zK*ua->v*K8r^$wFc2Zw;KYBoa%;NBTA9cI~hOE&yc#^=A+YPk^K5aA@+9pR>F znn~eIH%Q`pdxoSeAJxxuVf+|x$JN=oCU)_y0D%`(8<(&CMQ-=+x~REJ_xZq}@w~Ez zK}t-*t385t=eMh(pzF&)j#$=o&Z6*R=gD+KxAVF|lM(VE_KgjS1Rg#w8H9BFi%CW} z4a+R8(l6mfk$X31cQF#lA{S0STovPz1!=mieOf$25w>z)MH0H+PRrM)!RSN*#c%Wl zM>(qbm9Dn>rZrC-qL1XaJ4zzmk-OJKHzL~oJd>hCu*mk6hl~QqG{QLyma4a`tj-4Y zEKPK2t>dnjmD|PWorz>X9(IV&xvC%+VDK?*d_?dm3~L|EE9|btXy0VEWczk8buu)^ zqRckp%Q4r(1>*9eT8asREdl8@0E=5)1UvE=XEFiF9!ytIs?gvocl zwjRYHq_J@gJj$4no2G5W0sjo?_NKR0pH(D3j=+a||nQApwsZp-Jq*Bn{ ze`yiiKe-J^4dzCN9R7CmK>y7U`&_a+1F1Zrj;wEs{#!B7ADHRCgu$lGIU+}|k8uCN z2m&xW`Y$SDq!h8@ZR;XNgHK($>UC*zcr_hAwQn{0Wwo1?wTKftf-n2iX_oV}Ec+yb zTGmT7&d##~(CZs_EZ(orUfOiaE7dT8V*CeJT4GUoyU@Q2hi%BI{jZg=nfUhi_32%CEya0Dnn>|kDd*v8;7~t zg0V1Ao>XY4pL?&pduV|Y{UBLmP<-@qRA}51S4}AaSAXm$Kbm7T&7?uFXJ~G7?c5R9 zb4GP>c0LG1&zYp1LA0t!RCs9K;L23D^7A+duXZHJ9~}VWdCGg+w36O+d;ETn#44tB zv}=(+){)!AUqE0hc&PF6cte28=47tSKv z%m;y@puZz;(5kXvZE6;Oq-8c}0~c3Q{mbudk8i)W!ndlT?A71b{u<4Dcxn97cq`%T zjxnn;8*FTE5c|X_f{4#Jm^W^T%eoSVsNwj?#({tIq=O`FaV6CaE~ zL*&IfXrnX4hi_}z<=2DOWHxKdYlx`is4^Q0QI5{nx7DL-<0Y{b^me`}36&|ajPLsT0mQSy zKkO9?af&6&JV!CGhg+F8#y6wj^@oTWgvl;1->$n>kf`ambtIBJTk}%8$M%(;qJslr zY>OMj<$Q5aO4%WatI76R?>IgBaYSX?!@07uFhtpqP#ymjT=b?{|2QY5S2|SuUQ5Lyb3(u_ zfk#~)lN9FL`pP|Bu-OFKFkR&_LN3wJV&%ia$$Uc{fh!`c?dRj`6!2H?U)$(oD)6F8 z0Oq{g|D4>%y$c=`12FBD$yOx;L?|bWHW=72l7tO}c#hD589r5$@w_(^yzHM-1HhH? z&Jvy~Z|hCRY=b#3cKJk|(Gy^1dLaG~@W^u;_T={U{=>>}s}zQ;K52Kcww}f8;;C(w zv`*YR6v=4MVVOl3hsjP=$opi13o$bmo`x>H2wwz$vbp>DTGR#-5q7x{#V9O zw7UxjTfzRk#@3_(pBS1PMnL8~PgS?;-mJq?AYg%zwd7Ix`!e<4XMkaqHACj-%p*s~ z6B@`@ftKK1c1@A-0sPO&eQn*DCML!g`|)EuA$dB2`zT*}S0b~j7Ts$=v`|dNhQ7ge z_lL_pw_V13`|U|Vp~^*@lgr02jxHFB>_p}wfql_0Tju-V>{XYmF)fZR-Et+W79?>| zqnd6C@o2-&t_1!29#(Id%I{+PEbFH?FVj-G8WbuH*&ADSR9G^lS?>PJGT(u;{^X*G zjIt=kM5ZWQqi2Mn=L9dV>6TFeTM2W#9)$ARcR28yG;9fDH?;OU&j2Wps)N_^b=B}I zOPGniZnZ249*H19<%;uw_XTq5pq=YVzphBPzvK&GSktu?H3MM7btDjgW|0iN31DK} ziW@`KvJ>W}Yr-GQF`Q(+qMR&CQcZsODx@pvtXPiAM2VBHRxU%KnZ?&mYxMtMoNUF( z^Q_i?$)?_fD`GsT7Y4U%YcgdUl{?Pamj>5VHph96;)vUkIws0O&!2N%lqr&i$z3D%dZMe620eP-Mwc6^Mv3O?&u;KE`e99RG_Oz2c zd12ZSe6G%17U=1iuWN-lBs*(KOYNUigQm8Zoij0g;7ww>?nQ$1)SC;XxLCLp8O;B| zaDuoVKk_Jv_sz^T1G2S=58~E{7W&Cyj@WcvZl4=#0`Mzs+OV~}9+adLM{P#ApUl50 zm^c~>7NgEcEE>SFwNOjwK)W+kdFvb+kDd@m3XL$8%WH!iC<y5!yye=X>R2>$6ZGx3^#Tlk`P(FZ%F3f<^A7i&&Hmu@`6mjEN@SZUW)o^k3MOkBV{2Mj+>%Y;UrpK%LOVhKV z)^{nufI!zHRe+njB+#TXgGHoDw0rP=D=Dqk{(;OceuV$-h|Ttr${mVKe@6dMrA|0jm)Ng54Bwc% zX#{Esa}-TpB2WHWv*jkEPMfN~P*COXNUy^WbiC$ua&~!iw}$1Hz)Gqe7_~`9!u&6G zam~?VUPXdn>L>wL&@}GYT?Ed$AB?knxvEPfS;ZwqDV5K30lnNMo@>cmgxh7tA7Y=Z z-i+C_qjNW>Fwyiq-e4uV$sX_BGUP35(hbn5u0q)`uSJ`^vM8 zq0kXQuyzH%{m9CTx1ujY#nZVQ^`*E6e2DqV6K_N*>n&U})91?%-lx?zt0%qWJH#g( z5~m`HYzmSaKjmotsxOIujDDmn*RiQU#MysCh?puRMqUHriPZJyt4<9#uc%`oEHyg8 z3A~dpM@i?L`qEB$>b5b1Oswm=+b`Jxv@PKALsOu~$P+xYq)g;rC0C1hu0f4NS;Z=a z_x$%SH508H&VsXQQWWf7s>Lk&AFoL1Ox#+dq*F>A#ER-88*06lcK3VHF76%Q>jqub z!Rk$Ysk2ny5nFggd%2!9bTqPouP${CT$T`}5#iOjz?r&)buNWggXN&?8 z6dP1uy)aGkzW`Ok*fr?AWC89-pl>2r*UJacGKei*UJ5s2t$-VR?Y^d@!txnZ0J9Zc zp8J)|yNkB3R*ybd+qsM3c1Xi&khIkjOie|9UrIhS^&rD~rIRZ!HWV_$BQ7Ta+a zk<|3gj%CHn!2p(Uk1>-6W}HnTM+fzu=8g6mhL7i@_d4S{LE78#RM3!ETJW z3=_>=F3t5KJYLPrvRIy!iO@!&^<&Js7S7!)TNUUS;Bra{P|0l|5+k)5I|$0|D;0M1 zc~ckC{y&Um7H6?7iHcwgWZZl3weS@YfS@KNOZ4QT*F+zZk%rVC+*xtek|Cf4$2ZXV zg*Teeeel@&pi`|q)AX8kS#8x->wJ*>$O94&mWtGw z^bTWU^%Rr@x$i+_yxyODui+=fkLLk@%a6?IwZ z>#9_>+ODXBo9@|LfEt(wZJlTDv4(HMGLJ5WmJhzoHPkV#&?TwMLn?*9q|`&cJxH&x zhta_1vtb})k+Zl(bWZ_<36fu3Q6ujS^Qg|ZMuM)oZ)@t4%;TpXzBVmpMEC?A&r-N8 z(s#OS;e}k{br{Q!*K4=1z;c2s(@&7GF_t9y>iOGJlWCCmdVb>ahG^?X%WYJCQL6B} z1GCN<1Zxf02E3zPYsvFwr@3B7^_?;-=zxl`zE|ova$}NbH_gC?w>z?m-|5z3-;p1r z*={T&bTKHr8<u!Wj$dX!nSlC){;I4Cc=w^L0 z)IWXx7|oD{i;14SO!==6(|kD+_zhu-hh@bV36*utTI7I#{fM?dXB z=#N>}pos=>=yj!I!p(&FGnw~&a|hs>dIvK%znxi2>VB}lwcsG@1Nva@R*v@)?uy6` zVz2uB;-6&fSUGtPv_GHZwhI8M87(}Z=g<>|yVK+4SszA1!w4TeRs(c3T)a43&x4Hi zHk#{&ZG5n{v%LOx54PUAB#IycnDA395$dCbrGIZrsRCF^)^NAQNRC~4=son*-$5wU zqrhTxsgwO=cJR00<4PJ9?!_lFUjX$w(gDe{Y+!w{hMsw>M*)R{i?tL257XNEy;}mU zm(2pI_gNx@DUG%rzt@AoqJDwV8d6ry-vSA%!}|?{)AHpoG=IJ@zO%>=%r5t$kXW-c zKqsm<1wM_5*7*3Qm~lFHg||i{DAUfhH}NrGQ{2)d<;!T{m;Yhn#w4RSX?G)Ye8U6SfQ$f zcTot7wR9LrCCYFfTGF1_63yopv_Q-rLYYsqnSvNS=$gzxk}tf7h1@>}7+RmBeISY> zz)3)0O+AJxdO8fb6YCq`Z8evnZpM7~2wOR4VRM)k|9CQmA1Ocl2Z>-QoyucRF`Uuy zHRo-U1`SEd8h*44{T`Bcuz=1#0QeiTYyxP3ku%%^fMYZoPz`=?E(#`zjQhl$eExNc zX5OzwE&_Gub^bM>sD5}V%SzvLRax>yXJY%7(TuWIk(}Zls9BQMhTN- zq^jeB)O3M?x`!mo%&m0jj$<1V2Tqq{F{ zxHd0d$xFV^DjZl%hD^_r{&65W2yEzQ))3cD*=g||%jxXpO#;d4ICyIC#astfuFcB; z3>nJ=m%hW)MA8;>AI}7VsS+{jI#fRLn_-P(&)vhu69t>H^rBzxc|3YnV=HNe>#P3fdtP1XtiCOu;4pYL> z-vioZh~j0QZ^}Jy%f;1V`B|Y;gJiCIJt((r=_Am^^QTCT2-ys8E7vfA-aHHvO*RKw z;mEDg6R64ZU&=vN#bSXuQH3VEwO_&4;;t+}uOjZ?QLEED4{xJDr2NJ z07tqsDksCiJxZ(Yk-D<@)4iPPRNYWm5{M$c`QN`MjdmGunOaJSa* zaiW$3R~2)9(}GXJh2<;G0WUQc#i|aE)Jzl4y99^|X^6y%5@6tsevh#j(%EAgT^1u9 zqoWt$Pj-mVD!DD?l#;b87G(Z#WXLDE)|mil4VKrw_fS{%LG|x#ED+Chj82bJmng7Z z@5MR>oyQbSdHbA3qdHwXlk$Kijf%Q)fI)Up>448b)lyTwJA71XmTl#))eJ?-KD1MJ zaRkonOnCDfMf|3~>^qgPZsxG^^21AYP&IlGTY|t-#X>aUgX=ZdnAYni?}P6RbaJG7 zUDAIZ>o8-PC&|>a=9gx@TF0IJ2825x!0D2L=yz(fzi&5jAu@Y-lLR0AtTA)zX0st9 z;z>{*kG0Kf)LzV<98y<&i=}pS5V~qQ(6{AqZCCS-ygYuN{8B~;?9!;K=r5?YC z<{CBndAhgZ0h5ptp~K1D6rl7z#eQOpv~pU$t%O_9zE^%} zktSs&8Z-GaNZ111q_6#00TQVw%+6wl(<@Apu|6JKg|-=07*U|(d|13%m>dGcV61n2 zs7(e&j!q*GEh!|LCe>4xst$DIfd`{JvzD7uQ{*b_+dh$ig}nsm&=mUN%gtWQaq~8| zm>vh+z9ew(5Y2!6NxFd4M77--3R(!wb%{%!t!B%GdiEpCDGCWn=6k#AZ+iT<$j4M? zluh&OcfJ=gS+^*ykM-S_mMY9tMOs?W)zw=wE~d;cg00c8B^vvk5>Hb#C4-uWmpr;N zbM8%~)9(u^U#E*wj`xV&61;`*VDA@~aN`5>F@i)cZ$A_9D9czlu;gWn7pd=Ov#H%J ze#q%3mg6*7E|C{h=8CdktjE@PM9Rm_A+l~Z1twlL5tb3eH=hRGZ&u_NIKFihD^6r( zzHznQVRtnP6^F{jPFXei2vk)teB;5(x#-P3rl_iIiE26#nk)zM)%3wpga{AIQ>|tj|iA;pHD@U&q&- zV;F?FJs<&AQPpf;K8>G!2Wpo}O(Z4Ww5m(#Yz(!~mRY?`((zIl3oRLNTOg8~;(3Jz zj{<_z7&5c7^M80ehd%vFkFvR2{s-d}0EUV)q&q6x;3#x5ykF0#t`qrXZCJ{t+EH#Q z=7z0Z<@*g~y`(PBod;vD-V(+NBQ}Htr|xr>@8MfE?4iCa-9J6F z_^nCR)C`4lKWiI7Jy9Rd&s%`1?;`Ws4F*LWl#;@C{RqTXPqG3+Js8!he6C z_&Q-_lH0f+A*oJ&ady|KxSIl`6+(tl^a_I7x8iseL1}$~QR(=CIZ+t?WHaPV&B0uv zfhPHmjhylssYLTQYX<4eQSYb-6-ZeXaNbPWSvY;cLY)i>LeGk$0&T{Yy(%%AYkDN_ zP zp!~sX?%^Epa%9Gd*R@6c{NaC^zRlXj-04~trMpy)6YNH}P_(cd&x4>=jSyeAS;c18 z^VDhm>sGY;2;=n8Bty|%xIR?u!7F@KYJQo`@&bEu3iDeB| zJ;|Hpz~mcPJPNooKbK%}^fq$+p3>aNaBb=P@3q41u)9${zBl2yjJ?wh>+j&HyTN`=zSSw*42Iq zKb@+9fJu>afS35agwcf~6l|zDe%EWz>L2_F68H@dj0HwHI@qYh)zdnb;iVi-qV<7g z=|!cLQn@)yoVGk);)6BOQW!XmLBHSCdSb+_xy2-4d$`aKz>k|0uEwh4@nPOh82?haa~RSizCrH7dNok9X=pUT zHg9~|vggL*{%fzw&UVu%bX0#?R9}L~*aw{?=`b}+AdzceZmRNxM?I_~R_gorryVpK zI)5F&fiy}xvE5NC9b3O1niZDvs`G70TLVH$rF(v@6EG2(DUvhHlW8lQ$Jc)^J^2U2 z51^VSHcUzVTWENAw5s(x#(DeRPD}yZJ3HS>cSlRA`_Nk)B5YdmoC_ce(c)~AI<-BV z$=q)dcX4w_q|?0=NU6E$-eSoRYE?%YFJ=WwYSOi7G80;wlhBcrLv3eA%h>(X%?ey| zX=&q1q0S%=$xxwsnKOPDURiwI5vT-C?rxlPcfuML`kYjboP_6f^b*V>XzefcJv;XV zw{ZP1@H9uNP_*q_+P}!?%Z#G7$v0Ci&ZpY)BDn#H?cV4{%v<}i1;?r9Rzh^;>1pxr zR_cGpXgAdsV+k_)*$o@NvZcD9y0wZxs-H}a!+E~cn~#zcBfnp-PhOP&(b~8Q0qSQL z{3z)1%^iZ2hO{1Tz~~9(>toL5@>ZGwi==_5+YLBrvk`?4UfRsCY#yuVO_#GqE0U;` z+5cB35RRR7V)W)tHFYa3R6Lv=t{=xIkxxcLyCb%IvxaoqG-A=wP5TpR-SGWE)RTX5 z?4^n$8$zM16k$RCsU}(R1hw!v_k8()MTC5bd44JtIGdD4X0bJH_0a}ya5;~gqbb*_ zTRro`Y9By*_1e1v7>(+lN(g9Q4?)7ju}*~&jU*V}osT+KxVgS#r$@A#Xga)P)dTIZ zzM%<14v21r2_+Q@`Nk!x78~roo>;?S4m=)q6&T##KGpS2Bc>R+vZ`rmOJyJ_-I6@dXJiDIBx21I>p9@=CcX&wYTFqYi%{KiaaB(n358H+VAT6f={ws7J}XH zO&!yti~{<@B~P7O&i~dUDOD;;1331#>K#<3%?T6l5aQ)!EX`BQ92s)zsk+HRwq}_1 z&j5_iZ4$teO3R)UZ8KgQzXX0qP&;x-g0ze3bM?DC=~mIf^@f~)%~;A3@3@9)h4Jas z5yCX@c1%DhbxE2$1+#iPkVRATy8kE6Ix3Fvc_}xfj9s4l6*uCpx6;a@xqT~AnN@wr z(9!0J*UBiS^te`JF9B9b3LBhuX%;fc*@Vu%q>82gJ%XxENMR(X)|l+s$FN;Xi=GWy zKLx*WrK@;rfSB|Yav4Um?FtXu;p!D@KW>KN-)$k?1%AV7l1Cl$tJ0~K1xER>k3-Gf zg0=BTFZN15>k6txjb`Xe`_=U(p7%LnLj#@jW)BcTrU5Tsg__iHu$5<(S!XtpWzp`+ zekWahCL?M5b!%T*wKPV_;es;x#%-Ka`uNlhCSFVO-qc}pQZ+(-$&AI;3De1K4DA@l zODC^=qEGUDd#tX}tgKbq|DNA~J*$Ep!BND^O*}g6)_nXEjm-w?%$zzX+{Ny%j-ipK zrPms_p$gf;?#ktjI|&4fFzG=pxRAFglZ~|LE7B6&y*I8{@j(C}sczqoA=mmeN;BD5 zE8%4F3_n_{?&(`|`|@FP@(;u-FXTx^mI`JQ4CxpjBTYCFj z4x*GUxpAL?O20bfMuY2Q z1WT9VldMHud)j6Zc@hjuUV;%WGq_j6b>H_-vWQ6qL~Js2ekci6R~6QpqN}3>)#LZ)4H z)7SPsCN_4%e9CH@f@#oSmN&SuN@kjwa2W1S)kyUTQr4DDs%))wz~cDH*PRDYwvpY59O&74Lt8X_8#Zni?YA@bIJBosD3H zY7G*S(4;m=bTBdIY)D_m-R36bwN+y`NJ~>@f}AGQ;I$4Uu5H$gxyHwgNYYC0XW}-h z3yKy<3DNqG4=n^2?5@;B`7>wccVrO*O2^2=tlww-@0-v`KKvoU(gymeAKv}pT6l_x zaY1~W{r$KAhyDGcQaNvx7(>4nluK+($w!+1y@%Bl_oI5x51Yj#&}#^8Hazr@LdzfX z9}IPB+gP@kzlGI9lHw&XvO)XXl)Wa@wAt(*b268nU|kIejgga#co2A!Q>~j9;&^G1 z*ZwFD)ewKji3kS*0s zav4*%2VFJr$tI-|NqlXox^RPTKd`DDzu~Fs?;)R}NMn~iq8A2V#t6vdu{vrRC8$nP zuC0`v(lx*VkZtxy%QEN|LS?4g8lxuiWf6A zVl*&3N_Yw~$lcM@nh<33Y{lxwhT|Zw6j{u&5WN^%J6)|1yQHz~DL+yT}2|@is$;>FfvufQc_jE6*V9wCfNme*3(3E@=W}pic z@d9xI;=pq4t>}(vWv|-pW@)T4z)eH*2=6p&P9rP)?7Z$`5a3~0Tqz2Btj-XS;R#`> ztmL|vBRd*w^wWsmh%80$44?1K!9<@>hnDx&AcwaSAH*-U6GkSx1Z~#=qT-v;m!no9 zi+P6_y?#NYJrTY!jz-zKw8QP1r|mm#1kk-{UaVcfS>E9hA###j@J(`|ep6g5Gu(=c z`lj`7%^&_)*{Dy-*lMzz1a9W7Z4dQoYCP_RQ0@o7g1@2SkP|84IkuOqR)O7Ax;$XL zcn19njj}NU&mM>lGd$&YcgH3o``l@SB&#TahKxfL%Q*ME|7}B&i|&QO7@tiehm}Vw zi?au1MXZSZuF7fwb_R=$#POv0LMwt`iqz?nU-7i)v(73@Y*O9 z&@gXfF#OC?7TEgL-zrv}^W?X4O8`jOMP3Vmu%BD3U!^v4leD@t<$d?< zukZCA^m<2Yq~e3^XOs1^yOgmvAPfoPDlUCLo_6Wrz~em0nwS~y3<@>aOqQh(+l_;j z$gTdAmFXw(5KVYcnL;pz86I1NLE@TzkW!Z??2G0A{Qy7KkpLbI^4AnoyR_E3kW{h% z6owVmzZhXUT6{5J!i0|`Ibrz00amagsDOw9t+j)nkyG`MrN_XJDm_~SYr2Nm;kyTt zUT#Y;sXdoNRXghkmq%Hu#f!VG$U*g~iZO1S$&h2Zmk9By^jC_3f&M#!a+1?#qU!>! zHKc^Z$3XROa{!>Lj9$|D#SV-F0(^xRI9(=}nq^Qf_8UbCm4A{={#jXr#n$&pL*rA? z!&X@s1)-2qB~Nwm&D!t~n&4M^G(wgwy@eU(#AclQ+N%{tRd1tZp4zC&pCNVB!VnD* z{e-sALN6H~n7{Aj{1g~q$$Mp8G-LUTFu~O&hhO^ShQS~}#5@ml4Kwm;GRt$NjB@eua}ry0ujH zZmW$g*WfzNP5%vFgEe3|w$EHuP-#YD^{i!-xULulDK#vg8Oh0VhOWgm#j{#Jp%=~` zV-{$>*>OVu4`b}MW$nM&3Xeo^On zho}^^sVeYmG8o=r9HDXgneRmtbm{}s_0ma7iScT!(`gGw8nf?cmURq9&<7@ooEf)X zQW^&$QV(-G19(Vp7V7)&ujKS1smCoGIfPlP|HDmT^ zl@a5V{i1sr{lRZ?yTt6uMM(CdZhD+{*S*&ETErt}(eh~@I1LS!BCm&~)K+s8X>O&@ zuPqv@gaOQ*Gwj-)HFZBpe)5}Gys~bo^?W+((=TWBL)l^d0WA?;-3iIp2M{%NtO}aWZ=bE2zi+!a z>mNXQx=SGZjc6dV(qHy3NFu3j`d^J$yg1`U#-TSdAiNi-m-|=E!bGS^C)>jtOBQ-L zK0R(`kRe{B>FU0yl>FnC4I;EVXLnGa?tvG zK`Bv(Ys>}H!kiM>-BvfaQKrInY+AMxzm%H6+pxYhnRi?BQQx=;idW=C`Rix-VcW@_ z1vg_giJn7DNtYq~jTk-Z$WL0l=yS`EqSPo-m?kQ$x$(t2>QcdlL#)XP;jgp6l|W}UnhPmq8|F4?0JHmUw5q7M9UWW z@7%V%BKO}jJieSx;U1yaNHU!XqpY1eJ7VW&$-Oc#(ty&~t)pYjbKID5+J$w|m3n1N z55W1$)3#y(C0`e|nNBy}-Va!fKM+KUfw?Tpu8A|9;>S80sk4=p4g!8)W&*K+iQgLaj>?_s4U1E*l)LJd%MExvMQ6lgT(IP8_j zKm|55ERVT3fxX=&`p~UjT$2jIS5W0djSxsq=-J=(TeJ)exQ$S~P_iQ6JQCYg>Dk*9 z=+kmax_pxH`&n;`S#!&J*x2EJjbKn(dN%ZOq!P$a=_IfVU3Wr@5Eth^QXCYvQ^eUU zhPFI-{iTNIi^sqmm=!GRZVO3y*LJ#N)+r!U<0#8e%@vb_+m{WwF5&y5pW zY(AD*-#XHn7wA1q=7g$}_4*j?=RrkJg6P)ok^R`fO?(Nx27!om%Js0w`hHIR2AOda zajPe%1_q(6Sp%ziovgqH8g*UNe|SrCbe8G)EAQ&KxBHLI2QbR=Z|btpwb!I{ zkg<$eCz+O-5tC{JgMETwxRXJ{Y4cxkcyk5C)TV*=?<(i#V%_)kXM@fpv-{KflAu`l zkx)2kK^TchGQM_Znd+^G{D-<~z&4NrZWJlg2I zJQv;t35oR9Q_L_P2pPIGPvawGfAeC%nD_Dia^PO1(!r5n8%%iWVObg`zcEH$tEI~% z0D>JBuQ)#*@vmO&#c{AyCut(`OV!Uza@MWZ{?_-Ya`9>smzNHUxiyFF{Rc!_5Czk+ zk2)VZCFO}bH6&5^rFjCTbP-ojr^+7+ADeS%|md9F!@eQ%Z$gpA};U;=etr(V~SBFeaX-G#-tjA z>bi>bmmO^ls9JT^V;x!^xf8?cGzNvAWz`>EX~+pBX4DX>LWh1}TCur=@5gF31o2Os zpxA5GUl09ka30%~rjBo%%Pc-7LE6+$_+pgbTA?NZCf(P~wPU0_&F(`}$p9)e_{8iv zUOW+Dy{qT09%o{dG44N2qIUv4n3!LiT2-7Rsag&ERswT z0U+GN2v*q@%;Bw%iiB@HZG+G8ZQNO`f>706?lRIJ{AL(_1g#42IOvgqm@hE4Is}yF zg5|hc^W@@R8|t;nxDPahalCOT{3xX8v9jxxIz2!1i9$ewO_mMn^r;j{8#wY=RL$(F zedp?;f3K$0Br&Cyaq;)VxsHy8q&%}hw6R<7=NevMMKoU!*?o5i=nSZjBPfLP%*kAN znM^|C4gYTMv%c2a}JuQ=ZL7_^llA?z0iqG zXkjwRpl|YX_m5fg{@(kjf>(oH;h8~b8(R&$P}X@lytCynSYlp{dDkgVzP5xdYlmSt zl5=?Ff^w+7JV|w6cjBkSX5w-a-gAedRL^!%PD`SPRrh9+S*0_vPUhxs-?BMV3XE67 z7twniRxb~XSaNvzd%>OOIb5k1-H+!3Y=z|lT2D>Vn!o*$-TCm+HKFW7;42(=x6{i4KRf8?-2q4&TBXNt$hL7)6 zD$lTGkc~S^tVDbSQK_Hz{QX<_Sh6)%(hH?q4*1ibCbfwj_vXOHB4-1>y@3nrSle_K z2V*WA$@*Uc(vF$Yb}iK_L6TSdkr7;FdA2kW&!||iOS7yn%({YK|Kv&6E+n7DXuAo# zw|vTN&Ky#B3cHEkid|?Km_ibFziP3TvHz^jzW026EMrojPWt2RMPI=rjUA9bXpJSe z1BFNbmG>lxY(J)P{!K@r;5*qhdSwKuys0LOmyL^T4}(M{Q=9@#mf_&n0Zk{y=NxRJ zvy@I=EiBouW42*x+cshouD*R^RVAV(8)<8Y=*#`7As36vXw*cG)617yAd2i7>P5EV zEM(^b1SS_`rJt;&%--*rIt7p;}%7CqPlO)kzzpIek-Y1Z1*26aqv0JnHQ#iP6%^=w^iS z(gAJ$fe{oRpLkR?S+=?Ut%z*pQM!i`vp=(KbFH^UTFQ6y^q$W2#|jvQH5AUB#nj4n z{_7c%_dHfKiSyzri!+ z%q)bXbw!mHam#Ip4#VY?{OcceXf^3PmDqk#L2u5)krlI+`Rb&d%QY$(s?v1npgcHV zoIKDE3V1UvdTMZbh9s`AKcEfYC(ZrnC@*QpE(o*Z5HAPsinzb;&=XWlL4EeVYC+v? zzNX=H3~~XTAB5x6Eo-Y`ZiNO}!M;%d3cySzCF0NykdHA#0{%u%|wu&lZht{kSd&O++8GBPoP~_dqk*_$V%`n>yp$ zBC0P*516ldo&qmY8+#$x@gWPBMyr$3%6os3Sc|}b_u|DdoUueTK0H2cTgUzzzo+bS z3#CN3CP*F~eW-3<9D(i<^U3pQBnl&{Oy7Yj^g~bW6_6||cg9a<6VYt+eXY?gD<8GUMB zjK}e#wC9_}y>Y=hV9zEOsVzu4t9(>AwAY1yEO>D z=3D!3L8te%Xy5|`vOs`1(nb%Dgr#WM^$m9QybG|-${Q3>7k0|K@>s5?4*=?EGG#01 zNTffL?%aCec`6AFN0yXzN_zz8DK>H;Znv=EHe>68H=O6AbQ~^^>cuk_(=$*wSWYtQ zlXym{Dyi19o}Wgrqe&83#85N@?)klUVdet-NAIQsZEX6=dift58)}!blI z5@ze!#hzL0DKEEz9cwf(sb#~Mnag7h_Mn|O%7tPx^r64YM zV_r^V$eq*4#uLM6q)!(XgFUin&h#*ko45jbEoWXGZ9fMYG%Gs-n)&;aJB4k(4F{Fi zv3hlJg7x(;_{TFolzmp6kC#t1Vtjc-<5N_EplV1f#LC|4wqo}hJUBDgjmDy*y3jdAsyRDK4NT@$Iz6|&q)0B()nmbT)>(ccy z(!pkwje=_osMweix^+XEXdXh}L2*l`q)HgpuQU`9f~99QIjHMYvIQhl$Q~K#i`;nA ztk;~3&2O&d3)ygxcBzaghSk%Az1ib*f{+!JP8a*9OV*blmPcZN{Db>rWX^f zU{L>E>+Nw2*XJgfQYrtQ9+PKc*6oL<=vpKgS5H=NegpZAZ3CJv*s|l&Dg*wbLsR@& z__RI2o4(uIjI8B0BIeE6hb4*LdF(BxIjng>@Qc^_i&& z>eF2RUnb>S9I2ix>0wnxn{!J6qTo&8ag``j0E~T-NtN~}?-cV~%3Ud(mgS(YBl2gB z;-GW(b#@|><&z@l!9O^oKQfI26KnprpQXsgt*|+@J^Z3Y$13EiJ9?T#vl{Z!HmCZz z*QyydI```N_S;gft?d#0k8FxxK9deQ*uG6J!*Srhh72`D>znFGk$xT$axe z-^HE&gHswst{|rTAob$8u7Pl)A2l!hy`5j@>BW8ElMOw=ju#dEf?M^?cYMF3+-vp@ zXnTT$dD_qK{^f&)$iDfyY0exzqHIQTa;U{MQZ`Rh8@79QsKJqV@Yv8(vM4zSi{5{~ z>8baly&%aX@-Sw>WUIpdhmGLYQMTDPQryr6x%3x7g_$TGW7yj?K?knQ_J^BpuJX?B zIelZBz0aF&+Xc^BxzAQ}IpzC~xY(XWnVG2WU+5}eBz-f5r%_cTSU%bH^X>l@3kF8% z;!%R%e89gnFZiSv%))WZc60jYN~*#+A0u2(DHwBetsn1X{VPw`Y(ZA_O-&mJ?o#T) z@es1uU|lFU-aD47Q^p{kJ*P2k)OWPAwPj9CxjfJykPOS8(^MXLP|tGf(Nnon*Vw5$ zImoCuv|py3Yt)^1f~KieZGr$1F$Fke_V+U@V0gf-A_JgaX;*mZ)AKHqRg;Cp8b|FGX3kq!!l-m^3N#mJ`7&!S?+EI@K`UKo zUz#W?5T%xLeWhQQ5vyF`rI|Fg9kArJFzW0G+=x*CN1!Q%$De(1bS;+U9=>l|vzgv! z(`Z037X$vu!7!{

1|5+a;t_2 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нTDp?$WS~uZJpzf5BUgk6Ruxg31mR|n%^&p$ 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 z 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 +

## Tweets diff --git a/docs/kubernetes-autoscaling.md b/docs/kubernetes-autoscaling.md index 160d57c9..50f0d609 100644 --- a/docs/kubernetes-autoscaling.md +++ b/docs/kubernetes-autoscaling.md @@ -3,6 +3,7 @@ - [Cluster Autoscaler Kubernetes Tool](#cluster-autoscaler-kubernetes-tool) - [HPA and VPA](#hpa-and-vpa) - [Cluster Autoscaler and Helm](#cluster-autoscaler-and-helm) +- [KEDA Kubernetes-based Event-Driven Autoscaler](#keda-kubernetes-based-event-driven-autoscaler) - [Cluster Autoscaler and DockerHub](#cluster-autoscaler-and-dockerhub) - [Cluster Autoscaler in GKE, EKS, AKS and DOKS](#cluster-autoscaler-in-gke-eks-aks-and-doks) - [Cluster Autoscaler in OpenShift](#cluster-autoscaler-in-openshift) @@ -54,8 +55,6 @@ * [HPA: Horizontal Pod Autoscaler](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/) * [VPA: Vertical Pod Autoscaler](https://github.com/kubernetes/autoscaler/tree/master/vertical-pod-autoscaler) * [returngis.net: Escalado vertical de tus pods en Kubernetes con VerticalPodAutoscaler](https://www.returngis.net/2020/07/escalado-vertical-de-tus-pods-en-kubernetes/) -* [partlycloudy.blog: Horizontal Autoscaling in Kubernetes #3 – KEDA](https://partlycloudy.blog/2020/05/29/horizontal-autoscaling-in-kubernetes-3-keda/) - * [thenewstack.io: CNCF KEDA 2.0 Scales up Event-Driven Programming on Kubernetes](https://thenewstack.io/microsoft-keda-2-0-scales-up-event-driven-programming-on-kubernetes/) * [medium: Build Kubernetes Autoscaling for Cluster Nodes and Application Pods](https://medium.com/better-programming/build-kubernetes-autoscaling-for-cluster-nodes-and-application-pods-bb7f2d716b07) Via the Cluster Autoscaler, Horizontal Pod Autoscaler, and Vertical Pod Autoscaler * [itnext.io: Horizontal Pod Autoscaling with Custom Metric from Different Namespace](https://itnext.io/horizontal-pod-autoscaling-with-custom-metric-from-different-namespace-f19f8446143b) * [Kubernetes autoscaling with Istio metrics 🌟](https://medium.com/google-cloud/kubernetes-autoscaling-with-istio-metrics-76442253a45a) Scaling based on traffic is not something new to Kubernetes, an ingress controllers such as NGINX can expose Prometheus metrics for HPA. **The difference in using Istio is that you can autoscale backend services as well, apps that are accessible only from inside the mesh.** @@ -76,6 +75,12 @@ ## Cluster Autoscaler and Helm * [hub.helm.sh: cluster-autoscaler](https://hub.helm.sh/charts/stable/cluster-autoscaler) The cluster autoscaler scales worker nodes within an AWS autoscaling group (ASG) or Spotinst Elastigroup. +## KEDA Kubernetes-based Event-Driven Autoscaler +* [==keda.sh==](https://keda.sh) **KEDA is a Kubernetes-based Event Driven Autoscaler. With KEDA, you can drive the scaling of any container in Kubernetes based on the number of events needing to be processed.** +* [medium.com/backstagewitharchitects: How Autoscaling Works in Kubernetes? Why You Need To Start Using KEDA?](https://medium.com/backstagewitharchitects/how-autoscaling-works-in-kubernetes-why-you-need-to-start-using-keda-b601b483d355) +* [partlycloudy.blog: Horizontal Autoscaling in Kubernetes #3 – KEDA](https://partlycloudy.blog/2020/05/29/horizontal-autoscaling-in-kubernetes-3-keda/) +* [thenewstack.io: CNCF KEDA 2.0 Scales up Event-Driven Programming on Kubernetes](https://thenewstack.io/microsoft-keda-2-0-scales-up-event-driven-programming-on-kubernetes/) + ## Cluster Autoscaler and DockerHub * [bitnami/cluster-autoscaler](https://hub.docker.com/r/bitnami/cluster-autoscaler/) diff --git a/docs/kubernetes-backup-migrations.md b/docs/kubernetes-backup-migrations.md index 4505fda8..b64e2fc5 100644 --- a/docs/kubernetes-backup-migrations.md +++ b/docs/kubernetes-backup-migrations.md @@ -68,6 +68,7 @@ * [medium: Backup,Restore & Migrate Kubernetes cluster with Velero](https://medium.com/@maheshd7878/restore-backup-migrate-kubernetes-cluster-with-velero-434fa151f1e8) * [medium: Velero backup/restore for K8s Stateful Applications managed by Operators](https://medium.com/@Sandeepkallazhi/velero-backup-restore-for-k8s-stateful-applications-managed-by-operators-8fd9c732ffcc?utm_sq=gi0vbpxxa3) * [cloud.redhat.com: Velero Backup and Restore of an Application Using gp2 StorageClass on ROSA](https://cloud.redhat.com/blog/velero-backup-and-restore-of-an-application-using-gp2-storageclass-on-rosa) +* [medium.com/@firat.yasar: Backup & Restore Kubernetes resources with VELERO](https://medium.com/@firat.yasar/backup-restore-kubernetes-resources-with-velero-b7fee14e7664) ## Backup with Portworx PX-Backup * [PX-Backup](https://portworx.com/products/px-backup/) diff --git a/docs/kubernetes-based-devel.md b/docs/kubernetes-based-devel.md index f96cbcd5..c28d5f63 100644 --- a/docs/kubernetes-based-devel.md +++ b/docs/kubernetes-based-devel.md @@ -5,6 +5,7 @@ - [DevSpace](#devspace) - [Telepresence local development for k8s and openshift microservices](#telepresence-local-development-for-k8s-and-openshift-microservices) - [Bridge to Kubernetes](#bridge-to-kubernetes) + - [Garden](#garden) - [Kubernetes Clients and Dashboards](#kubernetes-clients-and-dashboards) - [Octant](#octant) - [Okteto local kubernetes development](#okteto-local-kubernetes-development) @@ -20,6 +21,7 @@ * [itnext.io: How to experiment locally on Kubernetes with minikube and your local Dockerfiles](https://itnext.io/how-to-experiment-locally-on-kubernetes-with-minikube-and-your-local-dockerfiles-48833fcd90c9) * [nfrankel.medium.com: Goodbye minikube](https://nfrankel.medium.com/goodbye-minikube-340070edc5af) I’ve been using minikube as my local cluster since I started to learn Kubernetes. But I’ve decided to let it go in favor of kind. Here’s the story. * [linux.com: Getting Started With Kubernetes Is Easy With Minikube](https://www.linux.com/audience/devops/getting-started-kubernetes-easy-minikube/) + * [faun.pub: Accessing a remote minikube from a local computer](https://faun.pub/accessing-a-remote-minikube-from-a-local-computer-fd6180dd66dd) You are the captain of your own ship; don’t let anyone else take the wheel. — Michael Josephson. * [**kind**](https://github.com/kubernetes-sigs/kind) Kubernetes IN Docker - local clusters for testing Kubernetes. Kind is a tool for running local Kubernetes clusters using Docker container “nodes”. kind was primarily designed for testing Kubernetes itself, but may be used for local development or CI. * [kubernetes-development-environment-in-a-box](https://github.com/ManagedKube/kubernetes-development-environment-in-a-box) This project is geared toward running multiple isolated KinD cluster on a single instance. This project produces an AMI image that can run an instance that has Docker and multiple isolated Kubernetes clusters running in it using KinD. The main use case is to setup one node that can run multiple fully isolated Kubernetes cluster on it for development purposes. * [faun.pub: Creating a Kubernetes Cluster for Development with Kind](https://faun.pub/creating-a-kubernetes-cluster-for-development-with-kind-189df2cb0792) @@ -83,6 +85,10 @@ ### Bridge to Kubernetes - [Bridge to Kubernetes 🌟🌟](https://docs.microsoft.com/en-us/visualstudio/bridge/) +### Garden +- [garden.io: cloud native devops platform](https://garden.io) +- [venturebeat.com: Garden.io, an end-to-end devops platform for Kubernetes and containers, raises $16M](https://venturebeat.com/2022/03/30/garden-io-an-end-to-end-devops-platform-for-kubernetes-and-containers-raises-16m/) + ## Kubernetes Clients and Dashboards - [ordina-jworks.github.io: A comparison of Kubernetes clients and dashboards](https://ordina-jworks.github.io/cloud/2020/08/28/kubernetes-clients-comparison.html) - [kccncna20.sched.com: A Walk Through the Kubernetes UI Landscape](https://kccncna20.sched.com/event/ekAd/a-walk-through-the-kubernetes-ui-landscape-joaquim-rocha-kinvolk-henning-jacobs-zalando-se) Working with Kubernetes clusters and workloads can be overwhelming, both for operators, as well as application developers. While kubectl is the de-facto standard interface to interact with Kubernetes' API, a graphical user interface can provide a better experience for newcomers and advanced users alike. This talk will look at the current landscape of Open Source Kubernetes web and desktop UIs, including Kubernetes Dashboard, Lens, Octant, Kubernetes Web View, and Headlamp. Particularly, how different dashboards are built, for what purpose they can be used, and how they compare in terms of functionality, so attendees can get the most out of the vast landscape of Kubernetes UIs. @@ -98,6 +104,9 @@ - [thenewstack.io: Who Needs a Dashboard? Why the Kubernetes Command Line Is Not Enough](https://thenewstack.io/who-needs-a-dashboard-why-the-kubernetes-command-line-is-not-enough/) - [kui.tools](https://kui.tools) Kui: CLI-driven Graphics for Kubernetes. Tired of working with Kubernetes in cli mode only? Try kui - a hybrid tool that allows you to interact with any Kubernetes cluster easily with more advanced features available only in GUI. - [blog.aquasec.com: RATs (remote access tools) in the Cloud: Kubernetes UI Tools Turn into a Weapon](https://blog.aquasec.com/kubernetes-ui-tools-security-threat) +- [medium.com/@satyakommula: Deploy Kubernetes dashboard with NodePort](https://medium.com/@satyakommula/deploy-kubernetes-dashboard-with-nodeport-382f447d2ff8) +- [rigorousthemes.com: 10 Best Kubernetes Dashboard Alternatives 2022](https://rigorousthemes.com/blog/best-kubernetes-dashboard-alternatives/) +- [blog.flant.com: kubenav as a tool for managing Kubernetes clusters from your smartphone](https://blog.flant.com/kubenav-managing-kubernetes-from-smartphone/) ### Octant - [==octant.dev==](https://octant.dev) Octant is an open source developer-centric web interface for Kubernetes that lets you inspect a Kubernetes cluster and its applications. diff --git a/docs/kubernetes-monitoring.md b/docs/kubernetes-monitoring.md index 5d72de4a..82831912 100644 --- a/docs/kubernetes-monitoring.md +++ b/docs/kubernetes-monitoring.md @@ -50,6 +50,11 @@ * [==devopscube.com: Kubernetes Logging Tutorial For Beginners== 🌟](https://devopscube.com/kubernetes-logging-tutorial) * [aws.plainenglish.io: Kubernetes Deep Dive: Log Management](https://aws.plainenglish.io/kubernetes-deep-dive-log-management-a60b06e2d738) Part 28 of a series of articles about learning k8s! * [medium.com/vmacwrites: Kubernetes Audit Logs: Who created or deleted a namespace?](https://medium.com/vmacwrites/kubernetes-audit-logs-who-created-or-deleted-a-namespace-7d55c20d2730) Learn how to set up log forwarding and collect audit logs that are passed through the Kubernetes API server to IBM Log Analysis to check who initiated a request and when they did so. +* [shivanshu1333.medium.com: Structured logging in Kubernetes](https://shivanshu1333.medium.com/structured-logging-in-kubernetes-58cf35e6d60d) + * Logs are an essential aspect of observability and a critical tool for debugging. But Kubernetes logs have traditionally been unstructured strings, making any automated parsing difficult and any downstream processing, analysis, or querying challenging to do reliably. + * In Kubernetes 1.19, we are adding support for structured logs, which natively support (key, value) pairs and object references. We have also updated many logging calls such that over 99% of logging volume in a typical deployment are now migrated to the structured format. + * To maintain backwards compatibility, structured logs will still be outputted as a string where the string contains representations of those “key”=”value” pairs. Starting in alpha in 1.19, logs can also be outputted in JSON format using the --logging-format=json flag. +* [tealfeed.com: Kubernetes Audit Logs: Who created or deleted a namespace?](https://tealfeed.com/kubernetes-audit-logs-created-deleted-namespace-ho5o3) Learn how to set up log forwarding and collect audit logs that are passed through the Kubernetes API server to IBM Log Analysis to check who initiated a request and when they did so. ## SLOs in Kubernetes - [==thenewstack.io: Service Level Objectives in Kubernetes==](https://thenewstack.io/service-level-objectives-in-kubernetes/) an SLO is simply a metric, a goal for that metric, and a time period. For instance: “the success rate for service A must be at least 99.7% percent over the past 30 days.” The metric is known as the “service level indicator” (SLI) and the goal is the “objective.” diff --git a/docs/kubernetes-networking.md b/docs/kubernetes-networking.md index 0789b767..90b49262 100644 --- a/docs/kubernetes-networking.md +++ b/docs/kubernetes-networking.md @@ -1,7 +1,8 @@ # Kubernetes Networking - [Introduction](#introduction) - [NetworkPolicy](#networkpolicy) -- [Nginx Ingress controller](#nginx-ingress-controller) +- [Nginx Ingress Controller](#nginx-ingress-controller) +- [Contour Ingress Controller](#contour-ingress-controller) - [Gateway API](#gateway-api) - [Kube-proxy](#kube-proxy) - [Multicloud communication for Kubernetes](#multicloud-communication-for-kubernetes) @@ -24,7 +25,7 @@ ## Introduction * [kubernetes.io: The Kubernetes network model. How to implement the Kubernetes networking model](https://kubernetes.io/docs/concepts/cluster-administration/networking/) * [ovh.com - getting external traffic into kubernetes: clusterip, nodeport, loadbalancer and ingress](https://www.ovh.com/blog/getting-external-traffic-into-kubernetes-clusterip-nodeport-loadbalancer-and-ingress/) -* [learnk8s.io: Load balancing and scaling long-lived connections in Kubernetes 🌟](https://learnk8s.io/kubernetes-long-lived-connections) +* [learnk8s.io: Load balancing and scaling long-lived connections in Kubernetes 🌟](https://learnk8s.io/kubernetes-long-lived-connections) **Kubernetes doesn't load balance long-lived connections, and some Pods might receive more requests than others. If you're using HTTP/2, gRPC, etc. or any other long-lived connection, you might want to consider client-side load balancing** * [stackrox.com: Kubernetes Networking Demystified: A Brief Guide](https://www.stackrox.com/post/2020/01/kubernetes-networking-demystified/) * [medium.com: Fighting Service Latency in Microservices With Kubernetes](https://medium.com/@sindhujacynixit/fighting-service-latency-in-microservices-with-kubernetes-f5a584f5af36) * [medium.com: Kubernetes NodePort vs LoadBalancer vs Ingress? When should I use what? 🌟](https://medium.com/google-cloud/kubernetes-nodeport-vs-loadbalancer-vs-ingress-when-should-i-use-what-922f010849e0) @@ -106,11 +107,14 @@ * [medium.com/the-programmer: Working With ClusterIP Service Type In Kubernetes](https://medium.com/the-programmer/working-with-clusterip-service-type-in-kubernetes-45f2c01a89c8) Working with services in Kubernetes Using ClusterIP * [olamiko.medium.com: Technical Series: Kubernetes Networking](https://olamiko.medium.com/technical-series-kubernetes-networking-5a5dc3823163) * [learnk8s.io: Tracing the path of network traffic in Kubernetes 🌟](https://learnk8s.io/kubernetes-network-packets) +* [==devopslearners.com: Kubernetes Ingress Tutorial For Beginners==](https://devopslearners.com/kubernetes-ingress-tutorial-for-beginners-26c2f7727bc) - https://devopscube.com/kubernetes-ingress-tutorial +* [devopscube.com: How To Configure Ingress TLS/SSL Certificates in Kubernetes](https://devopscube.com/configure-ingress-tls-kubernetes/) +* [armosec.io: Getting Started with Kubernetes Ingress | Ben Hirschberg](https://www.armosec.io/blog/kubernetes-ingress-beginners-guide/) ## NetworkPolicy - [opensource.com: What you need to know about Kubernetes NetworkPolicy](https://opensource.com/article/21/10/kubernetes-networkpolicy) Understanding Kubernetes NetworkPolicy is one of the fundamental requirements to learn before deploying an application to Kubernetes. -## Nginx Ingress controller +## Nginx Ingress Controller * [tech2fun.net: K8s Nginx Ingress Handling TLS Traffic and Using Pod Readiness Probes](https://tech2fun.net/k8s-nginx-ingress-handling-tls-traffic-and-using-pod-readiness-probes/) * [blog.teamhephy.info: Learn how to use the Nginx Ingress controller to serve traffic over SSH with TCP load balancing](https://blog.teamhephy.info/blog/posts/tutorials/running-workflow-without-any-loadbalancer.html) * [nginx.com: A Guide to Choosing an Ingress Controller, Part 4: NGINX Ingress Controller Options](https://www.nginx.com/blog/guide-to-choosing-ingress-controller-part-4-nginx-ingress-controller-options/) @@ -118,6 +122,9 @@ * [amy-ma.medium.com: Nginx Ingress Configuration](https://amy-ma.medium.com/ingress-configuration-d9f13c5bcf1a) Configure NGINX basic routing with TLS on HPCC. This tutorial provides steps on how to set up basic routing for ECLWatch with the NGINX Ingress controller and configure certificates using Cert-Manager. * [devopscube.com: How to Setup Nginx Ingress Controller On Kubernetes – Detailed Guide 🌟](https://devopscube.com/setup-ingress-kubernetes-nginx-controller/) +## Contour Ingress Controller +- [trstringer.com: Kubernetes Ingress with Contour](https://trstringer.com/kubernetes-ingress-with-contour/) + ## Gateway API * [gateway-api.sigs.k8s.io 🌟](https://gateway-api.sigs.k8s.io/) Gateway API is an open source project managed by the SIG-NETWORK community. It's is a collection of resources that model service networking in Kubernetes. These resources - GatewayClass,Gateway, HTTPRoute, TCPRoute, Service, etc - aim to evolve Kubernetes service networking through expressive, extensible, and role-oriented interfaces that are implemented by many vendors and have broad industry support. * [kubernetes.io: Evolving Kubernetes networking with the Gateway API](https://kubernetes.io/blog/2021/04/22/evolving-kubernetes-networking-with-the-gateway-api/) @@ -147,7 +154,8 @@ * [loft.sh: Kubernetes Network Policies: A Practitioner's Guide 🌟](https://loft.sh/blog/kubernetes-network-policies-a-practitioners-guide) * [medium: Kubernetes Network Policies: Are They Really Useful? 🌟](https://medium.com/codex/kubernetes-network-polices-are-they-really-useful-c3a153c49316) * [loft.sh: Kubernetes Network Policies for Isolating Namespaces 🌟](https://loft.sh/blog/kubernetes-network-policies-for-isolating-namespaces) - +* [arthurchiao.art: Cracking Kubernetes Network Policy](https://arthurchiao.art/blog/cracking-k8s-network-policy/) This post digs into the Kubernetes NetworkPolicy model, then designs a policy enforcer based on the technical requirements and further implements it with less than 100 lines of eBPF code. Hope that after reading through this post, readers will get a deeper understanding on how network policies are enforced in the underlying. +* [engineering.mercari.com: Managing Network Policies for namespaces isolation on a multi-tenant Kubernetes cluster](https://engineering.mercari.com/en/blog/entry/20220214-managing-network-policies/) This post outlines how to implement an abstraction over network policies in a multi-tenant Kubernetes cluster instead of directly exposing raw YAML-based manifests for better usability and verifiability ### Cilium * [cilium.io 🌟](https://cilium.io/) eBPF-based Networking, Observability, and Security * [cilium.io: NetworkPolicy Editor: Create, Visualize, and Share Kubernetes NetworkPolicies 🌟](https://cilium.io/blog/2021/02/10/network-policy-editor) @@ -155,6 +163,9 @@ * [buoyant.io: Kubernetes network policies with Cilium and Linkerd](https://buoyant.io/2020/12/23/kubernetes-network-policies-with-cilium-and-linkerd) * [itnext.io: Installing Cilium on Kubernetes in a fast and efficient way](https://itnext.io/installing-cilium-on-kubernetes-in-a-fast-and-efficient-way-dbcb79ce9699) * [cilium.io: CNI Benchmark: Understanding Cilium Network Performance](https://cilium.io/blog/2021/05/11/cni-benchmark) +* [cockroachlabs.com: How to use Cluster Mesh for Multi-Region Kubernetes Pod Communication](https://www.cockroachlabs.com/blog/cockroachdb-kubernetes-cilium/) + * Thanks to services provided by AWS, GCP, and Azure it’s become relatively easy to develop applications that span multiple regions. This is great because slow apps kill businesses. There is one common problem with these applications: they are not supported by multi-region database architecture. + * CockroachDB is built to solve that problem and we’re doing it in production for many applications today. But that’s not what this blog is about. In this blog, I will provide a solution for the problem of getting Kubernetes pods to talk to each other in multi-region deployments.
@@ -260,5 +271,7 @@ + +
\ No newline at end of file diff --git a/docs/kubernetes-on-premise.md b/docs/kubernetes-on-premise.md index fc898573..73e849d8 100644 --- a/docs/kubernetes-on-premise.md +++ b/docs/kubernetes-on-premise.md @@ -13,6 +13,7 @@ - [ClusterAPI](#clusterapi) - [Microk8s](#microk8s) - [k8s-tew](#k8s-tew) +- [Zarf. DevSecOps for Air Gap Systems](#zarf-devsecops-for-air-gap-systems) - [Kubernetes Operating Systems](#kubernetes-operating-systems) - [Kubernetes Distributions](#kubernetes-distributions) - [Red Hat OpenShift](#red-hat-openshift) @@ -43,6 +44,7 @@ * For other installs, or if you can't get kops to work, you can use **kubeadm**. * Setup **kops** in your windows with **virtualbox.org** and **vagrantup.com** . Once downloaded, to type a new linux VM, just spin up ubuntu via vagrant in cmd/powershell and run kops installer: * [blog.ivnilv.com: Rotating Kops Etcd Certificates](https://blog.ivnilv.com/posts/rotating-kops-etcd-certificates/) +* [blog.kubecost.com: Kubernetes kOps: Step-By-Step Example & Alternatives](https://blog.kubecost.com/blog/kubernetes-kops/) ``` C:\ubuntu> vagrant init ubuntu/xenial64 @@ -70,6 +72,7 @@ $ sudo mv kops-linux-amd64 /usr/local/bin/kops * [kosyfrances.com: Using kubeadm to create a Kubernetes 1.20 cluster on VirtualBox with Ubuntu](https://kosyfrances.com/kubernetes-cluster/) * [blog.radwell.codes: Provisioning Single-node Kubernetes Cluster using kubeadm on Ubuntu 20.04](https://blog.radwell.codes/2021/05/provisioning-single-node-kubernetes-cluster-using-kubeadm-on-ubuntu-20-04/) * [medium.com/@ZiXianZeroX: Setting Up an On-premise Kubernetes Cluster from Scratch](https://medium.com/@ZiXianZeroX/setting-up-an-on-premise-kubernetes-cluster-from-scratch-8e3a6b415387) +* [thenewstack.io: How to Deploy Kubernetes with Kubeadm and containerd](https://thenewstack.io/how-to-deploy-kubernetes-with-kubeadm-and-containerd/) ## Deploying Kubernetes Cluster with Ansible - [Ansible Role - Kubernetes (Jeff Geerling)](https://github.com/geerlingguy/ansible-role-kubernetes) @@ -110,7 +113,7 @@ $ sudo mv kops-linux-amd64 /usr/local/bin/kops - [linecorp.com: Building Large Kubernetes Clusters with **Caravan**](https://engineering.linecorp.com/en/blog/building-large-kubernetes-clusters/) ## ClusterAPI -- [**ClusterAPI**](https://cluster-api.sigs.k8s.io/) +- [==ClusterAPI==](https://cluster-api.sigs.k8s.io/) Cluster API is a Kubernetes sub-project focused on providing declarative APIs and tooling to simplify provisioning, upgrading, and operating multiple Kubernetes clusters. - [itnext.io: Multi-Cloud and Multi-Cluster Declarative Kubernetes Cluster Creation and Management with Cluster API (CAPI — v1alpha3)](https://itnext.io/multi-cloud-and-multi-cluster-declarative-kubernetes-cluster-creation-and-management-with-cluster-6df8efdc2a89) - [medium: ClusterOps: 1-Line Commit to Upgrade Your Kubernetes Clusters 🌟](https://medium.com/swlh/clusterops-1-line-commit-to-upgrade-your-kubernetes-clusters-de3548124d04) - [cncf.io webinar: Deploying Kubernetes to bare metal using cluster API](https://www.cncf.io/webinars/deploying-kubernetes-to-bare-metal-using-cluster-api/) @@ -133,6 +136,9 @@ $ sudo mv kops-linux-amd64 /usr/local/bin/kops ## k8s-tew - [**k8s-tew**](https://github.com/darxkies/k8s-tew) Kubernetes is a fairly complex project. For a newbie it is hard to understand and also to use. While [Kelsey Hightower’s Kubernetes The Hard Way](https://github.com/kelseyhightower/kubernetes-the-hard-way), on which this project is based, helps a lot to understand Kubernetes, it is optimized for the use with Google Cloud Platform. +## Zarf. DevSecOps for Air Gap Systems +- [defenseunicorns/zarf](https://github.com/defenseunicorns/zarf) DevSecOps for Air Gap & Limited-Connection Systems. Zarf massively simplifies the setup & administration of kubernetes clusters, cyber systems & workloads that support DevSecOps "across the air gap". + ## Kubernetes Operating Systems - [kubedex.com: Kubernetes Operating Systems 🌟](https://kubedex.com/kubernetes-operating-systems/) @@ -167,6 +173,7 @@ $ sudo mv kops-linux-amd64 /usr/local/bin/kops * [vmware-tanzu/octant](https://github.com/vmware-tanzu/octant) Highly extensible platform for developers to better understand the complexity of Kubernetes clusters. Octant is a tool for developers to understand how applications run on a Kubernetes cluster. It aims to be part of the developer's toolkit for gaining insight and approaching complexity found in Kubernetes. Octant offers a combination of introspective tooling, cluster navigation, and object management along with a plugin system to further extend its capabilities. * [zdnet.com: VMware brings Tanzu Application Platform into GA to ease Kubernetes adoption](https://www.zdnet.com/article/vmware-brings-tanzu-application-platform-into-ga-to-ease-kubernetes-adoption/) The platform, introduced in 2019, is designed to help customers quickly build and deploy software on any public cloud or on-premises Kubernetes cluster. * [cabai.pro: Instalando Tanzu Community Edition (TCE)](https://cabai.pro/vmware/kubernetes/instalando-tanzu-community-edition/) +* [dev.to/saintdle: Deploying Nvidia GPU enabled Tanzu Kubernetes Clusters](https://dev.to/saintdle/deploying-nvidia-gpu-enabled-tanzu-kubernetes-clusters-40ma) #### KubeAcademy Pro (free training) * [tanzu.vmware.com: Introducing KubeAcademy Pro: In-Depth Kubernetes Training, Totally Free](https://tanzu.vmware.com/content/blog/introducing-kubeacademy-pro-in-depth-kubernetes-training-totally-free) diff --git a/docs/kubernetes-operators-controllers.md b/docs/kubernetes-operators-controllers.md index 7971e0b8..433ef32f 100644 --- a/docs/kubernetes-operators-controllers.md +++ b/docs/kubernetes-operators-controllers.md @@ -1,6 +1,7 @@ # Kubernetes Operators and Controllers - [Introduction](#introduction) - [operatorhub.io](#operatorhubio) +- [Red Hat Container Community of Practice Operators](#red-hat-container-community-of-practice-operators) - [Operator Capability Levels](#operator-capability-levels) - [Cluster Addons](#cluster-addons) - [K8Spin Operator. Kubernetes multi-tenant operator](#k8spin-operator-kubernetes-multi-tenant-operator) @@ -84,15 +85,23 @@ - Sleep your pods: Suspend your pods when no-one's using them, scale down your cluster and save energy - Reduce CO2 emissions: See how much you save in the Green Dashboard (coming soon) - [krestomatio/keydb-operator](https://github.com/krestomatio/keydb-operator) A KeyDB (Drop-In Alternative to Redis) Operator for Kubernetes -- [Keel 🌟](https://github.com/keel-hq/keel) Kubernetes Operator to automate Helm, DaemonSet, StatefulSet & Deployment updates: +- [==Keel== 🌟](https://github.com/keel-hq/keel) **Kubernetes Operator to automate Helm, DaemonSet, StatefulSet & Deployment updates:** - You can use policies to define when to update an application - Users can specify how many approvals do they need before a resource is updated. + - https://keel.sh - [medium.com/@mjkool: Kubernetes Operator — Simplified!](https://medium.com/@mjkool/kubernetes-operator-simplified-96b8c8f7e627) - [medium.com/geekculture: A New Pattern that Simplifies Operator Building](https://medium.com/geekculture/a-new-pattern-that-simplifies-operator-building-39df5d021cfa) Build Kubernetes Operator with **Kubebuilder** and declarative pattern +- [medium.com/@timebertt: Kubernetes Controllers at Scale: Clients, Caches, Conflicts, Patches Explained](https://medium.com/@timebertt/kubernetes-controllers-at-scale-clients-caches-conflicts-patches-explained-aa0f7a8b4332) A developer guideline to Kubernetes clients in go. As most development in the Kubernetes space is done in Go, available client libraries for interacting with the Kubernetes API have evolved over time to make controllers more scalable. +- [openshift/machine-api-operator](https://github.com/openshift/machine-api-operator) The Machine API Operator manages the lifecycle of specific purpose CRDs, controllers and RBAC objects that extend the Kubernetes API. This allows to convey desired state of machines in a cluster in a declarative fashion +- [rancher/system-upgrade-controller: System Upgrade Controller](https://github.com/rancher/system-upgrade-controller) This project aims to provide a general-purpose, Kubernetes-native upgrade controller (for nodes). It introduces a new CRD, the Plan, for defining any and all of your upgrade policies/requirements. A Plan is an outstanding intent to mutate nodes in your cluster. +- [alenkacz.medium.com: Kubernetes operator best practices: Implementing observedGeneration](https://alenkacz.medium.com/kubernetes-operator-best-practices-implementing-observedgeneration-250728868792) There's a lot of hidden knowledge in core controllers and api conventions doc that is not followed by many controllers in the wild. One of these patterns is observedGeneration. In this article, you will learn what problems it can help solve. ## operatorhub.io * [operatorhub.io](https://operatorhub.io/) OperatorHub.io is a new home for the Kubernetes community to share Operators. Find an existing Operator or list your own today. +## Red Hat Container Community of Practice Operators +- [==cloud.redhat.com: Red Hat Container Community of Practice Operators==](https://cloud.redhat.com/blog/red-hat-container-community-of-practice-operators) + ## Operator Capability Levels - [Operator Capability Levels](https://operatorframework.io/operator-capabilities/) Operators come in different maturity levels in regards to their lifecycle management capabilities for the application or workload they deliver. The capability models aims to provide guidance in terminology to express what features users can expect from an Operator. diff --git a/docs/kubernetes-security.md b/docs/kubernetes-security.md index a962c617..5e6e0e51 100644 --- a/docs/kubernetes-security.md +++ b/docs/kubernetes-security.md @@ -1,9 +1,11 @@ # Kubernetes Security - [Introduction](#introduction) +- [NSA National Security Agent Kubernetes Hardening Guidance](#nsa-national-security-agent-kubernetes-hardening-guidance) - [Service Accounts](#service-accounts) - [Kubernetes Secrets](#kubernetes-secrets) - [Encrypting the certificate for Kubernetes. SSL certificates with Let's Encrypt in Kubernetes Ingress via cert-manager](#encrypting-the-certificate-for-kubernetes-ssl-certificates-with-lets-encrypt-in-kubernetes-ingress-via-cert-manager) - [RBAC and Access Control](#rbac-and-access-control) +- [Kubernetes and LDAP](#kubernetes-and-ldap) - [Admission Control](#admission-control) - [Kubernetes Security Best Practices](#kubernetes-security-best-practices) - [Kubernetes Authentication and Authorization](#kubernetes-authentication-and-authorization) @@ -73,23 +75,6 @@ * [tigera.io: Kubernetes security policy design: 10 critical best practices 🌟](https://www.tigera.io/blog/kubernetes-security-policy-10-critical-best-practices/) * [empresas.blogthinkbig.com: Descubierta una vulnerabilidad en Kubernetes que permite acceso a redes restringidas (CVE-2020-8562)](https://empresas.blogthinkbig.com/descubierta-vulnerabilidad-kubernetes-permite-acceso-redes-restringidas-cve-2020-8562/) * [thenewstack.io: Kubernetes: An Examination of Major Attacks 🌟](https://thenewstack.io/kubernetes-an-examination-of-major-attacks/) Constant vigilance is required to ensure that cloud infrastructure is locked down and that DevSecOps teams have the right tools for the job. -* [nsa.gov: NSA, CISA release Kubernetes Hardening Guidance 🌟🌟](https://www.nsa.gov/News-Features/Feature-Stories/Article-View/Article/2716980/nsa-cisa-release-kubernetes-hardening-guidance/) - * [Kubernetes Hardening Guidance 🌟🌟](https://media.defense.gov/2021/Aug/03/2002820425/-1/-1/1/CTR_KUBERNETES%20HARDENING%20GUIDANCE.PDF) - * [thenewstack.io: The NSA Can Help Secure Your Kubernetes Clusters](https://thenewstack.io/the-nsa-can-help-you-secure-your-kubernetes-clusters/) - * [therecord.media: NSA, CISA publish Kubernetes hardening guide 🌟🌟](https://therecord.media/nsa-cisa-publish-kubernetes-hardening-guide/) - - Scan containers and Pods for vulnerabilities or misconfigurations. - - Run containers and Pods with the least privileges possible. - - Use network separation to control the amount of damage a compromise can cause. - - Use firewalls to limit unneeded network connectivity and encryption to protect confidentiality. - - Use strong authentication and authorization to limit user and administrator access as well as to limit the attack surface. - - Use log auditing so that administrators can monitor activity and be alerted to potential malicious activity. - - Periodically review all Kubernetes settings and use vulnerability scans to help ensure risks are appropriately accounted for and security patches are applied. - * [cloud.redhat.com: OpenShift and the NSA-CISA ‘Kubernetes Hardening Guidance’](https://cloud.redhat.com/blog/openshift-and-the-nsa-cisa-kubernetes-hardening-guidance) Red Hat OpenShift is the quickest path to meeting the NSA’s Kubernetes hardening guidance - * [==Kubescape== 🌟](https://github.com/armosec/kubescape) **kubescape is the first tool for testing if Kubernetes is deployed securely as defined in Kubernetes Hardening Guidance by to NSA and CISA.** Tests are configured with YAML files, making this tool easy to update as test specifications evolve. - * [infoq.com: Armo Releases Kubescape K8s Security Testing Tool: Q&A with VP Jonathan Kaftzan](https://www.infoq.com/news/2021/09/kubescape/) - * [infoq.com](https://www.infoq.com/news/2021/09/kubernetes-hardening-guidance/) NSA and CISA Publish Kubernetes Hardening Guidance - * [csoonline.com: Kubernetes hardening: Drilling down on the NSA/CISA guidance](https://www.csoonline.com/article/3629049/kubernetes-hardening-drilling-down-on-the-nsa-cisa-guidance.html) The new guidance gives a solid foundation for hardening Kubernetes container environments. These are its key components and why they are important. - * [armosec.io: Kubescape - As “left” as it can get – find Kubernetes security issues while coding, not after](https://www.armosec.io/blog/find-kubernetes-security-issues-while-coding/) * [cloud.redhat.com: Top Open Source Kubernetes Security Tools of 2021 🌟🌟](https://cloud.redhat.com/blog/top-open-source-kubernetes-security-tools-of-2021) * [==cncf.io: How to secure your Kubernetes control plane and node components==](https://www.cncf.io/blog/2021/08/20/how-to-secure-your-kubernetes-control-plane-and-node-components/) * [redhat.com: State of Kubernetes Security Report - Spring 2021 (PDF) 🌟](https://www.redhat.com/rhdc/managed-files/cl-state-kubernetes-security-report-ebook-f29117-202106-en.pdf) @@ -113,7 +98,11 @@ * [==blog.gitguardian.com: Hardening Your Kubernetes Cluster - Threat Model (Pt. 1)== 🌟](https://blog.gitguardian.com/hardening-your-k8-pt-1/) The NSA and CISA recently released a guide on Kubernetes hardening. We'll cover this guide in a three part series. First, let's explore the Threat Model and how it maps to K8s components. * [==blog.gitguardian.com: Hardening Your Kubernetes Cluster - Guidelines (Pt. 2)== 🌟](https://blog.gitguardian.com/hardening-your-k8s-pt-2/) In this second episode, we will go through the NSA/CISA security recommendations and explain every piece of the guidelines. * [blog.devgenius.io: How is security managed in Kubernetes clusters?](https://blog.devgenius.io/how-is-security-managed-in-kubernetes-clusters-addefffd2b0) Best practices for managing security in Kubernetes at various layers -* [blog.gitguardian.com: Kubernetes Hardening Tutorial Part 1: Pods](https://blog.gitguardian.com/kubernetes-tutorial-part-1-pods/) Get a deeper understanding of Kubernetes Pods security with this first tutorial. +* [blog.gitguardian.com: Kubernetes Hardening Tutorial Part 1: Pods](https://blog.gitguardian.com/kubernetes-tutorial-part-1-pods/) Get a deeper understanding of Kubernetes Pods security with this first tutorial. After reading this article, you will learn: + * How not to run pods as root + * How to use immutable root fs (lock the root filesystem) + * How to do Docker image scan locally and with your CI pipelines + * How to use PSP * [blog.gitguardian.com: Kubernetes Hardening Tutorial Part 2: Network](https://blog.gitguardian.com/kubernetes-tutorial-part-2-network/) How to achieve Control Plane security, true resource separation with network policies, and use Kubernetes Secrets more securely. * [infoworld.com: 10 steps to automating security in Kubernetes pipelines](https://www.infoworld.com/article/3545337/10-steps-to-automating-security-in-kubernetes-pipelines.html) DevOps teams don’t need to sacrifice the speed of containerized development if they know what can be automated, why it’s important, and how to do it * [==medium.com/@jonathan_37674: Kubernetes Security Best Practices: Definitive Guide==](https://medium.com/@jonathan_37674/kubernetes-security-best-practices-definitive-guide-bcb546e9f529) @@ -125,11 +114,33 @@ * [mattermost.com: The Top 7 Open Source Tools for Securing Your Kubernetes Cluster](https://mattermost.com/blog/the-top-7-open-source-tools-for-securing-your-kubernetes-cluster/) * [==infoworld.com: 10 steps to automating security in Kubernetes pipelines==](https://www.infoworld.com/article/3545337/10-steps-to-automating-security-in-kubernetes-pipelines.html) DevOps teams don’t need to sacrifice the speed of containerized development if they know what can be automated, why it’s important, and how to do it. * [towardsdatascience.com: How to Secure your Kubernetes Deployment 🌟](https://towardsdatascience.com/how-to-secure-your-kubernetes-deployment-5f52c2b67c1) It takes 20 years to build a reputation and few minutes of cyber-incident to ruin it. — Stephane Nappo. Kubernetes deployments are not safe by default and you should go the extra mile and secure the gates. Fortunately, tools like **kube-bench** let us focus our attention on specific areas of the cluster. +* [==blog.flant.com: Kubernetes cluster security assessment with kube-bench and kube-hunter==](https://blog.flant.com/kubernetes-security-with-kube-bench-and-kube-hunter/)
[![kubernetes security mindmap](images/k8s_securitymindmap.jpg)](https://www.blackhat.com/)
+## NSA National Security Agent Kubernetes Hardening Guidance +* [nsa.gov: NSA, CISA release Kubernetes Hardening Guidance 🌟🌟](https://www.nsa.gov/News-Features/Feature-Stories/Article-View/Article/2716980/nsa-cisa-release-kubernetes-hardening-guidance/) +* [Kubernetes Hardening Guidance 🌟🌟](https://media.defense.gov/2021/Aug/03/2002820425/-1/-1/1/CTR_KUBERNETES%20HARDENING%20GUIDANCE.PDF) +* [thenewstack.io: The NSA Can Help Secure Your Kubernetes Clusters](https://thenewstack.io/the-nsa-can-help-you-secure-your-kubernetes-clusters/) +* [therecord.media: NSA, CISA publish Kubernetes hardening guide 🌟🌟](https://therecord.media/nsa-cisa-publish-kubernetes-hardening-guide/) + - Scan containers and Pods for vulnerabilities or misconfigurations. + - Run containers and Pods with the least privileges possible. + - Use network separation to control the amount of damage a compromise can cause. + - Use firewalls to limit unneeded network connectivity and encryption to protect confidentiality. + - Use strong authentication and authorization to limit user and administrator access as well as to limit the attack surface. + - Use log auditing so that administrators can monitor activity and be alerted to potential malicious activity. + - Periodically review all Kubernetes settings and use vulnerability scans to help ensure risks are appropriately accounted for and security patches are applied. +* [cloud.redhat.com: OpenShift and the NSA-CISA ‘Kubernetes Hardening Guidance’](https://cloud.redhat.com/blogopenshift-and-the-nsa-cisa-kubernetes-hardening-guidance) Red Hat OpenShift is the quickest path to meeting the NSA’s Kubernetes hardening guidance +* [==Kubescape== 🌟](https://github.com/armosec/kubescape) **kubescape is the first tool for testing if Kubernetes is deployed securely as defined inKubernetes Hardening Guidance by to NSA and CISA.** Tests are configured with YAML files, making this tool easy to update as test specifications evolve. + * [infoq.com: Armo Releases Kubescape K8s Security Testing Tool: Q&A with VP Jonathan Kaftzan](https://www.infoq.com/news/2021/09/kubescape/) +* [infoq.com](https://www.infoq.com/news/2021/09/kubernetes-hardening-guidance/) NSA and CISA Publish Kubernetes Hardening Guidance +* [csoonline.com: Kubernetes hardening: Drilling down on the NSA/CISA guidance](https://www.csoonline.com/article/3629049kubernetes-hardening-drilling-down-on-the-nsa-cisa-guidance.html) The new guidance gives a solid foundation for hardening Kubernetes container environments.These are its key components and why they are important. +* [armosec.io: Kubescape - As “left” as it can get – find Kubernetes security issues while coding, not after](https://www.armosec.io/blogfind-kubernetes-security-issues-while-coding/) +* [theregister.com: Hardening Kubernetes the NSA way. NSA spies ample opportunities to harden Kubernetes](https://www.theregister.com/2022/03/16hardening_kubernetes_the_nsa_way/) +* [thenewstack.io: NSA on How to Harden Kubernetes](https://thenewstack.io/nsa-on-how-to-harden-kubernetes/) + ## Service Accounts * Service account is an important concept in terms of Kubernetes security. You can relate it to AWS instance roles and google cloud instance service account if you have a cloud background. By default, every pod gets assigned a default service account if you don't specify a custom service account. Service account allows pods to make calls to the API server to manage the cluster resources using ClusterRoles or resources scoped to a namespace using Roles. Also, you can use the Service account token from external applications to make API calls to the kubernetes API server. * [devopscube.com: How To Create Kubernetes Service Account For API Access](https://devopscube.com/kubernetes-api-access-service-account/) @@ -183,16 +194,25 @@ * For recipes, tips and tricks around RBAC see [recipes.rbac.dev 🌟](https://recipes.rbac.dev/) * [github.com/clvx/k8s-rbac-model: Kubernetes RBAC Model](https://github.com/clvx/k8s-rbac-model) This is a implementation of a RBAC model for a multi project multi tenant Kubernetes cluster. * [loft.sh: Kubernetes RBAC: Basics and Advanced Patterns](https://loft.sh/blog/kubernetes-rbac-basics-and-advanced-patterns/) -* [==marcusnoble.co.uk: Restricting cluster-admin Permissions==](https://marcusnoble.co.uk/2022-01-20-restricting-cluster-admin-permissions/) +* [==marcusnoble.co.uk: Restricting cluster-admin Permissions==](https://marcusnoble.co.uk/2022-01-20-restricting-cluster-admin-permissions/) **Generally, operators of the cluster are assigned to the cluster-admin ClusterRole. This gives the user access and permission to do all operations on all resources in the cluster. But what if you need to block an action performed by cluster admins?** * [medium.com/devops-mojo: Kubernetes — Role-Based Access Control (RBAC) Overview](https://medium.com/devops-mojo/kubernetes-role-based-access-control-rbac-overview-introduction-rbac-with-kubernetes-what-is-2004d13195df) RBAC with Kubernetes — Role, ClusterRole, RoleBinding, and ClusterRoleBinding. * [loft-sh.medium.com: 10 Essentials for Kubernetes Access Control](https://loft-sh.medium.com/10-essentials-for-kubernetes-access-control-a67ae72977dd) * [sumanthkumarc.medium.com: Kubernetes RBAC — Update default ClusterRoles without editing them](https://sumanthkumarc.medium.com/kubernetes-rbac-update-default-clusterroles-without-editing-them-ef206254e0) * [faun.pub: Assign permissions to an user in Kubernetes. An overview of RBAC-based AuthZ in k8s 🌟](https://faun.pub/assign-permissions-to-an-user-in-kubernetes-an-overview-of-rbac-based-authz-in-k8s-7d9e5e1099f1) +* [anaisurl.com: RBAC Explained with Examples 🌟](https://anaisurl.com/kubernetes-rbac/) Kubernetes RBAC tutorial with two examples, using ServiceAccounts and openssl to create separate contexts for users +* [medium.com/@badawekoo: Using RBAC in Kubernetes for authorization-Complete Demo-Part 1](https://medium.com/@badawekoo/using-rbac-in-kubernetes-for-authorization-complete-demo-part-1-83f0a1fb8f) +* [thenewstack.io: Securing Access to Kubernetes Environments with Zero Trust](https://thenewstack.io/securing-access-to-kubernetes-environments-with-zero-trust/) +* [==learnk8s.io: Limiting access to Kubernetes resources with RBAC==](https://learnk8s.io/rbac-kubernetes) What happens when you combine a Kubernetes RoleBinding to a ClusterRole? Are you even allowed? In this article, Yanan Zhao explores the K8s RBAC authorization model by rebuilding it from scratch. +* [==medium.com/@15daniel10: YOYO attack on a K8S cluster==](https://medium.com/@15daniel10/yoyo-attack-on-a-k8s-cluster-102bc1d5ca3e) In addition to the performance degradation for the attacked service, the underlying idea behind the attack is to exploit the autoscaling mechanism in order to make the victim deploy excessive resources and pay for them while having as little cost footprint for the attacker as possible. In other words, the attacker harnesses the power of the cloud against the organization that uses it. + +## Kubernetes and LDAP +- [loft.sh: Kubernetes and LDAP: Enterprise Authentication for Kubernetes](https://loft.sh/blog/kubernetes-and-ldap-enterprise-authentication-for-kubernetes) ## Admission Control - [blog.styra.com: Why RBAC is not enough for kubernetes security 🌟🌟](https://blog.styra.com/blog/why-rbac-is-not-enough-for-kubernetes-api-security) - [medium: Single Sign-On in Kubernetes 🌟](https://medium.com/@andriisumko/single-sign-on-in-kubernetes-1ad9528350ed) - [trstringer.com: Create a Basic Kubernetes Validating Webhook](https://trstringer.com/kubernetes-validating-webhook/) +- [box/kube-exec-controller](https://github.com/box/kube-exec-controller) An admission controller service and kubectl plugin to handle container drift in K8s clusters ## Kubernetes Security Best Practices - [Kubernetes Security 101: Risks and 29 Best Practices 🌟](https://www.stackrox.com/post/2020/05/kubernetes-security-101/) Security Best Practices Across Build, Deploy, and Runtime Phases. diff --git a/docs/kubernetes-storage.md b/docs/kubernetes-storage.md index 3422ba1c..9ff1a344 100644 --- a/docs/kubernetes-storage.md +++ b/docs/kubernetes-storage.md @@ -69,6 +69,7 @@ - [==thenewstack.io: The Growth of State in Kubernetes==](https://thenewstack.io/the-growth-of-state-in-kubernetes/) - [itnext.io: Highly Available NFS cluster in Kubernetes, a cloud vendor independent storage solution](https://itnext.io/highly-available-nfs-cluster-in-kubernetes-a-cloud-vendor-independent-storage-solution-f9a314cfdfcc) - [armosec.io: Data Storage in Kubernetes](https://www.armosec.io/blog/kubernetes-data-storage/) Kubernetes in cooperation with cloud vendor infrastructure provides flexible mechanisms for data storage and management. It is up to the users to decide which mechanism best fits their application needs. However, the security side of the data storage falls completely under the user’s responsibility. Most of the default settings are wide open and require significant security expertise to protect your applications from data leakage. +- [==infoq.com: Best Practices for Running Stateful Applications on Kubernetes==](https://www.infoq.com/articles/kubernetes-stateful-applications/) ## DoK Community - [==DoK Community== 🌟](https://dok.community) diff --git a/docs/kubernetes-tools.md b/docs/kubernetes-tools.md index bcd1158c..486c9185 100644 --- a/docs/kubernetes-tools.md +++ b/docs/kubernetes-tools.md @@ -3,6 +3,7 @@ - [K8s Tools](#k8s-tools) - [Penetration Testing Tools](#penetration-testing-tools) - [Deckhouse Kubernetes Platform](#deckhouse-kubernetes-platform) +- [KubeIP (GKE)](#kubeip-gke) - [Porter](#porter) - [Datree. Quality Checks for Kubernetes YAMLs](#datree-quality-checks-for-kubernetes-yamls) - [Kaniko Build Images in Kubernetes without docker](#kaniko-build-images-in-kubernetes-without-docker) @@ -66,7 +67,13 @@ - [Starboard kubernetes-native security toolkit](#starboard-kubernetes-native-security-toolkit) - [Netshoot](#netshoot) - [The Hierarchical Namespace Controller (HNC)](#the-hierarchical-namespace-controller-hnc) +- [Kratix](#kratix) +- [gRPC-Gateway](#grpc-gateway) +- [KubeOrbit. Test your app on kubernetes](#kubeorbit-test-your-app-on-kubernetes) +- [Mizu API Traffic Viewer for Kubernetes](#mizu-api-traffic-viewer-for-kubernetes) +- [vcluster](#vcluster) - [Tweets](#tweets) +- [Videos](#videos) ## Introduction - [collabnix.com: Top 10 Kubernetes Tools You Need for 2021 – Part 1](https://collabnix.com/top-10-kubernetes-tools-you-need-for-2021/) @@ -78,6 +85,10 @@ - [containerjournal.com: 9 Open Source Developer Tools for Kubernetes](https://containerjournal.com/features/9-open-source-developer-tools-for-kubernetes/) - [blog.devgenius.io: 7 Open Source Kubernetes Developer Tools to Follow in 2022](https://blog.devgenius.io/7-open-source-kubernetes-developer-tools-to-follow-in-2022-78a5e5dbd4e3) - [dev.to: Top 200 Kubernetes Tools for DevOps Engineer Like You](https://dev.to/ajeetraina/top-200-kubernetes-tools-for-devops-engineer-like-you-3h7e) +- [devops.cisel.ch: Kubernetes operational tools you must TRY](https://devops.cisel.ch/kubernetes-operational-tools-you-must-try) +- [loft.sh: Kubernetes on Windows: 6 Life-Saving Tools & Tips](https://loft.sh/blog/kubernetes-on-windows-6-life-saving-tools-and-tips) Kubernetes is primarily a Linux technology, so it's fairly straightforward to run it on different Linux distros. But what about the developers working on Windows who need to run Kubernetes locally? +- [infoworld.com: 15 tools that make Kubernetes easier](https://www.infoworld.com/article/3488817/15-tools-that-make-kubernetes-easier.html) Take advantage of these Kubernetes companions to improve monitoring, command-line ops, multi-cluster management, and more. +- [youtube: 10 Must-Have Kubernetes Tools | DevOps Toolkit](https://www.youtube.com/watch?v=CB79eTFbR0w&feature=youtu.be&ab_channel=DevOpsToolkit) ## K8s Tools * [downloadkubernetes.com: Download Kubernetes 🌟](https://www.downloadkubernetes.com/) An easier way to get the binaries you need @@ -96,6 +107,7 @@ * [kubevious: application centric Kubernetes UI 🌟](https://kubevious.io/) is open-source software that provides a usable and highly graphical interface for Kubernetes. Kubevious renders all configurations relevant to the application in one place. * [Kubevious SaaS: portal.kubevious.io](https://portal.kubevious.io/) * [Kubevious SaaS Beta is Live!](https://kubevious.io/blog/post/kubevious-saas-beta-launch) + * [==kubevious.io: Built-in Validators==](https://kubevious.io/docs/built-in-validators/) Kubevious comes with 32 build-in validators to detect misconfigurations and violations to Kubernetes and Cloud-Native best practices. * [Guard](https://github.com/appscode/guard) is a Kubernetes Webhook Authentication server. Using guard, you can log into your Kubernetes cluster using various auth providers. Guard also configures groups of authenticated user appropriately. * [itnext.io: **arkade** by example — Kubernetes apps, the easy way 🌟](https://itnext.io/kubernetes-apps-the-easy-way-f06d9e5cad3c) * [**Kubei**](https://github.com/Portshift/kubei) is a flexible Kubernetes runtime scanner, scanning images of worker and Kubernetes nodes providing accurate vulnerabilities assessment. @@ -105,7 +117,7 @@ * [labs.meanpug.com: Kubernetes Kpt in The Wild: What it is and how to use it](https://labs.meanpug.com/kubernetes-kpt-in-the-wild/) Kubernetes Kpt is tooling by Google that facilitates a structured approach to defining, managing, and distributing kubernetes templates between teams and orgs. * [kubernetes-common-services](https://github.com/ManagedKube/kubernetes-common-services) These services help make it easier to manage your applications environment in Kubernetes * [**k8s-job-notify**](https://github.com/sukeesh/k8s-job-notify) Kubernetes Job/CronJob Notifier. This tool sends an alert to slack whenever there is a Kubernetes cronJob/Job failure/success. -* [**kube-opex-analytics** 🌟](https://github.com/rchakode/kube-opex-analytics) Kubernetes Cost Allocation and Capacity Planning Analytics Tool. Built-in hourly, daily, monthly reports - Prometheus exporter - Grafana dashboard. +* [**kube-opex-analytics** 🌟](https://github.com/rchakode/kube-opex-analytics) Kubernetes **Cost Allocation and Capacity Planning** Analytics Tool. Built-in hourly, daily, monthly reports - Prometheus exporter - Grafana dashboard. * [**kubeletctl**](https://github.com/cyberark/kubeletctl) is a command line tool that implement kubelet's API. Part of kubelet's API is documented but most of it is not. This tool covers all the documented and undocumented APIs. The full list of all kubelet's API can be view through the tool or this [API table](https://github.com/cyberark/kubeletctl/blob/master/API_TABLE.md). What can it do ?: * Run any kubelet API call * Scan for nodes with opened kubelet API @@ -285,7 +297,6 @@ * [k8s-image-swapper 🌟](https://github.com/estahn/k8s-image-swapper) Mirror images into your own registry and swap image references automatically. [estahn.github.io/k8s-image-swapper](https://estahn.github.io/k8s-image-swapper/) * [RBACSync 🌟](https://github.com/cruise-automation/rbacsync) Automatically sync groups into Kubernetes RBAC. RBACSync provides a Kubernetes controller to synchronize RoleBindings and ClusterRoleBindings, used in Kubernetes RBAC, from group membership sources using consolidated configuration objects. * [Saffire](https://github.com/FairwindsOps/saffire) a controller to override image sources in the event that an image cannot be pulled. The intent of saffire is to provide operators with a method of automatically switching image repositories when imagePullErrors occur. -* [vcluster 🌟](https://github.com/loft-sh/vcluster) Create fully functional virtual Kubernetes clusters - Each vcluster runs inside a namespace of the underlying k8s cluster. It's cheaper than creating separate full-blown clusters and it offers better multi-tenancy and isolation than regular namespaces. * [Cluster API Provider for Managed Bare Metal Hardware](https://github.com/metal3-io/cluster-api-provider-metal3) This repository contains a Machine actuator implementation for the Kubernetes Cluster API for managing bare metal hardware - [metal3.io: Bare metal host provisioning for kubernetes](http://metal3.io/) * [enterprisersproject.com: Kubernetes: 6 open source tools to put your cluster to the test](https://enterprisersproject.com/article/2021/5/kubernetes-6-open-source-tools-to-test-clusters) The Kubernetes ecosystem includes an ever-growing number of tools and services you can plug in: Let’s look at six useful tools for putting your Kubernetes cluster and applications to the test. * [kubectl-node-restart 🌟](https://github.com/MnrGreg/kubectl-node-restart) Krew plugin to restart Kubernetes Nodes sequentially and gracefully @@ -321,14 +332,13 @@ * [==SigNoz: Open source Application Performance Monitoring (APM) & Observability tool== 🌟](https://github.com/SigNoz/signoz) SigNoz helps developers monitor their applications & troubleshoot problems, an open-source alternative to DataDog, NewRelic, etc. * [port-map-operator](https://github.com/MOZGIII/port-map-operator) LoadBalancer Service type implementation for home clusters via Port Control Protocol. * [Raspbernetes - Kubernetes Cluster: k8s-gitops](https://github.com/xUnholy/k8s-gitops) Kubernetes cluster managed by GitOps - Git as a single source of truth, automated pipelines, declarative everything, next-generation DevOps. This repo is a declarative implementation of a Kubernetes cluster. It's using the GitOps Toolkit known as Fluxv2. The goal is to demonstrates how to implement enterprise-grade security, observability, and overall cluster config management using GitOps in a Kubernetes cluster. -* [KubeHelper](https://github.com/kubehelper/kubehelper) KubeHelper - simplifies many daily Kubernetes cluster tasks through a web interface. Search, analysis, run commands, cron jobs, reports, filters, git synchronization and many more. * [Kpexec](https://github.com/ssup2/kpexec) kpexec is a kubernetes cli that runs commands in a container with high privileges. * [OpenShiftKubeAudit](https://github.com/AICoE/OpenShiftKubeAudit) An auditing program to detect incompatibilities in Kubernetes manifests brought over to OpenShift. This auditing tool currently only supports Kubernetes manifests, but we plan to expand it to include Helm charts and Go code, as well. The tool is in very early stages, but is looking for community input to help add use cases. * [Kubernetes Kpt in The Wild: What it is and how to use it 🌟](https://labs.meanpug.com/kubernetes-kpt-in-the-wild) Kubernetes Kpt is tooling by Google that facilitates a structured approach to defining, managing, and distributing kubernetes templates between teams and orgs. * [RollingUpgrade](https://github.com/keikoproj/upgrade-manager) Reliable, extensible rolling-upgrades of Autoscaling groups in Kubernetes * [Kerbi 🌟](https://github.com/nmachine-io/kerbi) Kerbi (Kubernetes Emdedded Ruby Interpolator) is yet another templating engine for generating Kubernetes resource manifests. It enables multi-strategy, multi-source templating, giving you the freedom to design highly specialized templating pipelines. * [Kourier](https://github.com/knative-sandbox/net-kourier) Purpose-built Knative Ingress implementation using just Envoy with no additional CRDs. Kourier is an Ingress for Knative Serving. Kourier is a lightweight alternative for the Istio ingress as its deployment consists only of an Envoy proxy and a control plane for it. -* [space-cloud: Develop, Deploy and Secure Serverless Apps on Kubernetes.](https://github.com/spacecloud-io/space-cloud) Open source Firebase + Heroku to develop, scale and secure serverless apps on Kubernetes - [space-cloud.io](https://space-cloud.io/) Space Cloud is a Kubernetes based serverless platform that provides instant, realtime APIs on any database, with event triggers and unified APIs for your custom business logic. +* [space-cloud: Develop, Deploy and Secure Serverless Apps on Kubernetes.](https://github.com/spacecloud-io/space-cloud) Open source **Firebase + Heroku** to develop, scale and secure serverless apps on Kubernetes - [space-cloud.io](https://space-cloud.io/) Space Cloud is a Kubernetes based serverless platform that provides instant, realtime APIs on any database, with event triggers and unified APIs for your custom business logic. * [community.suse.com: Comparing Modern-Day Container Image Builders: Jib, Buildpacks and Docker 🌟](https://community.suse.com/posts/comparing-modern-day-container-image-builders-jib-buildpacks-and-docker) * [Teleport 🌟](https://github.com/gravitational/teleport) Certificate authority and access plane for SSH, Kubernetes, web applications, and databases * [weaveworks: kured - Kubernetes Reboot Daemon 🌟](https://github.com/weaveworks/kured) - [weave.works: One year kured - your Kubernetes Reboot Daemon](https://www.weave.works/blog/one-year-kured-kubernetes-reboot-daemon) Kured (KUbernetes REboot Daemon) is a Kubernetes daemonset that performs safe automatic node reboots when the need to do so is indicated by the package management system of the underlying OS. Many rely on Kured, which helps perform safe automatic node reboots when indicated by the package management of the underlying OS, to help make OS security better. @@ -445,7 +455,6 @@ * [==knight42/kubectl-blame: kubectl-blame: git-like blame for kubectl==](https://github.com/knight42/kubectl-blame) Show who edited resource fields. A useful opensource tool that comes as a plugin to show who modified attributes in kubernetes resource fields. * [curiefense/curiefense](https://github.com/curiefense/curiefense) Curiefense extends Envoy proxy to defend against a variety of threats, including SQL and command injection, cross site scripting (XSS), account takeovers (ATOs) and more * [==kubernetes-sigs/node-feature-discovery: Node feature discovery for Kubernetes==](https://github.com/kubernetes-sigs/node-feature-discovery) Welcome to Node Feature Discovery – a Kubernetes add-on for detecting hardware features and system configuration! -* [grpc-ecosystem/grpc-gateway: gRPC-Gateway](https://github.com/grpc-ecosystem/grpc-gateway) gRPC to JSON proxy generator following the gRPC HTTP spec * [==arttor/helmify==](https://github.com/arttor/helmify) Creates Helm chart from Kubernetes yaml. Helmify reads a list of supported k8s objects from stdin and converts it to a helm chart. Designed to generate charts for k8s operators but not limited to. See examples of charts generated by helmify. * [4ARMED/kubeletmein](https://github.com/4ARMED/kubeletmein) Security testing tool for Kubernetes, abusing kubelet credentials on public cloud providers. This is a simple penetration testing tool which takes advantage of public cloud provider approaches to providing kubelet credentials to nodes in a Kubernetes cluster in order to gain privileged access to the k8s API. This access can then potentially be used to further compromise the applications running in the cluster or, in many cases, access secrets that facilitate complete control of Kubernetes. * [patrickdappollonio/kubectl-slice](https://github.com/patrickdappollonio/kubectl-slice) Split multiple Kubernetes files into smaller files with ease. Split multi-YAML files into individual files. @@ -460,12 +469,15 @@ * [maruina/aws-auth-manager: K8s controller to manage the aws-auth configmap](https://github.com/maruina/aws-auth-manager) A kuberneres controller to manage the aws-auth configmap in EKS using a new AWSAuthItem CRD. * [segmentio/kubectl-curl: Kubectl plugin to run curl commands against kubernetes pods](https://github.com/segmentio/kubectl-curl) * [wallarm/sysbindings](https://github.com/wallarm/sysbindings) sysctl/sysfs settings on a fly for Kubernetes Cluster. No restarts are required for clusters and nodes. -* [atombender/ktail 🌟](https://github.com/atombender/ktail) ktail is a tool to easily tail Kubernetes logs. It's like kubectl logs, but with a bunch of features to make it more convenient: +* [==atombender/ktail== 🌟](https://github.com/atombender/ktail) ktail is a tool to easily tail Kubernetes logs. It's like kubectl logs, but with a bunch of features to make it more convenient: * Detects pods and containers as they come and go * Tails multiple pods and containers * All containers are tailed by default * Recovers from failure * https://pinniped.dev 🌟 - [vmware-tanzu/pinniped](https://github.com/vmware-tanzu/pinniped) **Pinniped is the easy, secure way to log in to your Kubernetes clusters.** +* [keisku/kubectl-explore](https://github.com/keisku/kubectl-explore) A better kubectl explain with the fuzzy finder. This plugin fuzzy-find the field explanation from supported API resources. It implements different explanations for particular API version. kubectl-explore is a kubectl plugin to fuzzy-find and explain the field supported API resources like "pod.spec", "cronJob.spec.jobTemplate", etc. +* [box/kube-exec-controller](https://github.com/box/kube-exec-controller) An admission controller service and kubectl plugin to handle container drift in K8s clusters. kube-exec-controller is an admission controller for handling container drift (caused by kubectl exec, attach, cp, or other interactive requests) inside a Kubernetes cluster. This project also includes a kubectl plugin for checking such Pods. +* [==abahmed/kwatch==](https://github.com/abahmed/kwatch) 👀 monitor & detect crashes in your Kubernetes(K8s) cluster instantly. kwatch helps you monitor all changes in your Kubernetes cluster, detects crashes in your running apps in real-time, and publishes notifications to your channels (Slack, Discord, etc.) instantly. ## Penetration Testing Tools * [intellipaat.com: What is Penetration Testing?](https://intellipaat.com/blog/what-is-penetration-testing) Penetration testing is otherwise referred to as pen testing. This blog on ‘What is Penetration Testing? - Types, Phases, Tools Explained’ discusses in detail what pen testing is and how it works, the numerous tools involved in this field, and so on. This blog aims to give you an insight into pen testing and how Ethical Hackers use it for the purpose of Cyber Security. Let’s dive right in. @@ -475,6 +487,12 @@ ## Deckhouse Kubernetes Platform * [Deckhouse: NoOps Kubernetes platform 🌟](https://github.com/deckhouse/deckhouse) Deckhouse is an Open Source platform for managing Kubernetes clusters in a fully automatic and uniform fashion. It allows you to create homogeneous Kubernetes clusters anywhere and fully manages them. It supplies all the add-ons you need for auto-scaling, observability, security, and service mesh. It comes in Enterprise Edition (EE) and Community Edition (CE). +## KubeIP (GKE) +* [kubeip.com](https://kubeip.com) Many applications need to be whitelisted by users based on a Source IP Address. As of today, Google Kubernetes Engine doesn’t support assigning a static pool of IP addresses to the GKE cluster. Using kubeIP, this problem is solved by assigning GKE nodes external IP addresses from a predefined list. kubeIP monitors the Kubernetes API for new/removed nodes and applies the changes accordingly. +* Many applications need to be whitelisted based on a Source IP Address. +* Using kubeIP, you can assign external IP addresses from a predefined list to GKE nodes. kubeIP monitors the Kubernetes API for new/removed nodes and applies the changes +* [doitintl/kubeIP](https://github.com/doitintl/kubeIP) Assign static external IPs from predefined pool of external IP addresses to Google GKE nodes so your customers could whitelist them + ## Porter - [Porter](https://porter.sh/) Package your application artifact, client tools, configuration and deployment logic together as a versioned bundle that you can distribute, and then install with a single command - [github.com/getporter/porter](https://github.com/getporter/porter) @@ -546,6 +564,7 @@ ## MetalLB - [MetalLB](https://github.com/metallb/metallb) A network load-balancer implementation for Kubernetes using standard routing protocols +- [medium.com/@charled.breteche: Kind, Cilium, MetalLB, and still no kube-proxy](https://medium.com/@charled.breteche/kind-cilium-metallb-and-no-kube-proxy-a9fe66ddfad6) In this article I will show you how to add MetalLB into the mix to enable services of type LoadBalancer to work in your local cluster. ## Kubermatic Kubernetes Platform - [Kubermatic Kubernetes Platform 🌟](https://github.com/Kubermatic/Kubermatic) is an open source project to centrally manage the global automation of thousands of Kubernetes clusters across multicloud, on-prem and edge with unparalleled density and resilience. @@ -694,6 +713,8 @@ ## kubefwd (Kube Forward) - [==txn2/kubefwd==](https://github.com/txn2/kubefwd) Kubernetes port forwarding for local development. +- kubefwd is a tool built to port forward multiple services within one or more namespaces on one or more Kubernetes clusters +- kubefwd uses the same port exposed by the service and forwards it from a loopback IP address on your local workstation ## Kpng. Kubernetes Proxy NG - [kubernetes-sigs/kpng](https://github.com/kubernetes-sigs/kpng) Reworking kube-proxy's architecture @@ -717,6 +738,26 @@ ## The Hierarchical Namespace Controller (HNC) - [kubernetes-sigs/hierarchical-namespaces: The Hierarchical Namespace Controller (HNC)](https://github.com/kubernetes-sigs/hierarchical-namespaces) Home of the Hierarchical Namespace Controller (HNC). Adds hierarchical policies and delegated creation to Kubernetes namespaces for improved in-cluster multitenancy. +## Kratix +- [syntasso/kratix](https://github.com/syntasso/kratix) Kratix is a framework for building Platform-as-a-Product. +- Kratix is a framework that enables co-creation of capabilities by providing a clear contract between application and platform teams through the definition and creation of “Promises”. Using the GitOps workflow and Kubernetes-native constructs, Kratix provides a flexible solution to empower your platform team to curate an API-driven, curated, bespoke platform that can easily be kept secure and up-to-date, as well as evolving as business needs change. +- Kratix enables platform teams to deliver a Kubernetes-native platform API, over fleets of Kubernetes clusters. +- Kratix is deployed to a platform cluster, and uses the GitOps Toolkit to orchestrate a topology of worker clusters. + +## gRPC-Gateway +- [grpc-ecosystem/grpc-gateway: gRPC-Gateway](https://github.com/grpc-ecosystem/grpc-gateway) gRPC to JSON proxy generator following the gRPC HTTP spec +- [blog.logrocket.com: An all-in-one guide to gRPC-Gateway](https://blog.logrocket.com/guide-to-grpc-gateway/) gRPC-Gateway is a plugin that generates a reverse proxy server for gRPC services that convert Restful/JSON into gRPC and vice versa. + +## KubeOrbit. Test your app on kubernetes +- [teamcode-inc/kubeorbit](https://github.com/teamcode-inc/kubeorbit) Test your application on Kubernetes in a brand new simple way + +## Mizu API Traffic Viewer for Kubernetes +- [==up9inc/mizu==](https://github.com/up9inc/mizu) API traffic viewer for Kubernetes enabling you to view all API communication between microservices to help your debug and troubleshoot regressions. Think TCPDump and Wireshark re-invented for Kubernetes. + +## vcluster +* [vcluster.com](https://www.vcluster.com) Virtual Kubernetes Clusters that run inside regular namespaces. Create fully functional virtual Kubernetes clusters - Each vcluster runs inside a namespace of the underlying k8s cluster. It's cheaper than creating separate full-blown clusters and it offers better multi-tenancy and isolation than regular namespaces. +* [thenewstack.io: Locking Down Kubernetes Containers with vcluster](https://thenewstack.io/locking-down-kubernetes-containers-with-vcluster/) + ## Tweets
Click to expand! @@ -732,6 +773,12 @@
+## Videos +??? note "Click to expand!" + +
+ +
diff --git a/docs/kubernetes-troubleshooting.md b/docs/kubernetes-troubleshooting.md index 5fdbba76..f8d08dc4 100644 --- a/docs/kubernetes-troubleshooting.md +++ b/docs/kubernetes-troubleshooting.md @@ -40,6 +40,8 @@ * [==research.nccgroup.com: Detection Engineering for Kubernetes clusters==](https://research.nccgroup.com/2021/11/10/detection-engineering-for-kubernetes-clusters/) In this article you will learn how to detect anomalies in your cluster using Kubernetes Audit logs and Anomalies Detection Engineering. * [pauldally.medium.com: Kubernetes — Debugging NetworkPolicy (Part 1)](https://pauldally.medium.com/debugging-networkpolicy-part-1-249921cdba37) * [pauldally.medium.com: Kubernetes — Debugging NetworkPolicy (Part 2)](https://pauldally.medium.com/debugging-networkpolicy-part-2-2d5c42d8465c) +* [==medium.com/@tina168wong: Kubernetes Ingress and Services troubleshooting==](https://medium.com/@tina168wong/kubernetes-ingress-and-services-troubleshooting-e2bb01007175) In this article, you will find some useful tips for troubleshooting the traffic flow in your cluster: from the Ingress to your Pods. +* [medium.com/geekculture: Common Pod Errors in Kubernetes to Watch Out For](https://medium.com/geekculture/common-pod-errors-in-kubernetes-to-watch-out-for-d808737f4ade) ## Debugging Techniques and Strategies. Debugging with ephemeral containers - [kubectl-debug](https://github.com/aylei/kubectl-debug) diff --git a/docs/kubernetes.md b/docs/kubernetes.md index fe1afd7a..8cf54a6a 100644 --- a/docs/kubernetes.md +++ b/docs/kubernetes.md @@ -80,12 +80,12 @@ - [Red Hat Operator Lifecycle Manager (OLM)](#red-hat-operator-lifecycle-manager-olm) - [Istio Service Mesh](#istio-service-mesh) - [Multi-Regional Architecture](#multi-regional-architecture) +- [Kubernetes in Kubernetes](#kubernetes-in-kubernetes) - [Kubernetes Scripts](#kubernetes-scripts) - [Kubernetes and Ansible](#kubernetes-and-ansible) - [Spot instances in Kubernetes](#spot-instances-in-kubernetes) - [Kubernetes on Windows](#kubernetes-on-windows) - [Kubernetes Incident Report Plan IRP](#kubernetes-incident-report-plan-irp) -- [Kubernetes interview questions](#kubernetes-interview-questions) - [Kubernetes Certifications. CKA, CKAD and CKS](#kubernetes-certifications-cka-ckad-and-cks) - [Books and eBooks](#books-and-ebooks) - [Kubernetes Patterns eBooks](#kubernetes-patterns-ebooks) @@ -490,7 +490,7 @@ * [medium: Kubernetes for dummies: introduction. Part 1](https://medium.com/@mfsilv/kubernetes-a-gentle-introduction-9d23de7f00e0) * [medium: Kubernetes for dummies: the cluster. Part 2](https://medium.com/@mfsilv/kubernetes-for-dummies-the-cluster-7cf6a7b5532) * [itnext.io: Kubernetes for dummies: Life of a Pod. Part 3](https://itnext.io/kubernetes-for-dummies-life-of-a-pod-fc8158e27aa) -* [==iximiuz.com: Containers vs. Pods - Taking a Deeper Look==](https://iximiuz.com/en/posts/containers-vs-pods/) +* [==iximiuz.com: Containers vs. Pods - Taking a Deeper Look==](https://iximiuz.com/en/posts/containers-vs-pods/) All pod's containers run on the cluster node, their lifecycle is synchronized, and mutual isolation is weakened to simplify the inter-container communication. A deep-dive into how containers work in a Pod. * [kubermatic.com: The Ultimate Checklist for Running Kubernetes in Production](https://www.kubermatic.com/resources/the-ultimate-checklist-for-running-kubernetes-in-production) * [==vadosware.io: So you need to wait for some Kubernetes resources?==](https://vadosware.io/post/so-you-need-to-wait-for-some-kubernetes-resources/) __There are at least two ways to wait for Kubernetes resources you probably care about: kubectl wait for Pods, initContainers for everything else__ * [vxav.fr: Interacting with containerd runtime for kubernetes](https://www.vxav.fr/2021-09-13-interacting-with-containerd-runtime-for-kubernetes/) @@ -513,6 +513,9 @@ * [blog.runx.dev: 3 Things I Hate About Kubernetes](https://blog.runx.dev/3-things-i-hate-about-kubernetes-49f1656baeaa) * [devopslearners.com: What is a Kubernetes Ephemeral Container?](https://devopslearners.com/what-is-a-kubernetes-ephemeral-container-aa8ab658755d) * [opensource.com: A visual map of a Kubernetes deployment](https://opensource.com/article/22/3/visual-map-kubernetes-deployment) Gain a better understanding of Kubernetes by looking at the 10 steps that take place when you create a pod or a deployment. +* [devopslearners.com: Different Container Runtimes and Configurations in the same Kubernetes Cluster](https://devopslearners.com/different-container-runtimes-and-configurations-in-the-same-kubernetes-cluster-fed228e1853e) +* [itnext.io: Measuring Patching Cadence on Kubernetes with GitOps](https://itnext.io/measuring-patching-cadence-on-kubernetes-with-gitops-353bc4a1d25) +* [thenewstack.io: The Rush to Fix the Kubernetes Failover Problem](https://thenewstack.io/the-rush-to-fix-the-kubernetes-failover-problem/) ### kubeconfig * [medium: Mastering the KUBECONFIG file](https://medium.com/@ahmetb/mastering-kubeconfig-4e447aa32c75) @@ -608,7 +611,7 @@ #### Kubernetes Volumes * [linkedin.com/pulse: What are Kubernetes Persistent Volumes?](https://www.linkedin.com/pulse/what-kubernetes-persistent-volumes-gyan-prakash-1f/) * [blog.newrelic.com: Kubernetes Fundamentals, Part 5: Working with Kubernetes Volumes](https://blog.newrelic.com/engineering/how-to-use-kubernetes-volumes/) -* [==medium.com/codex: Kubernetes Persistent Volume Explained==](https://medium.com/codex/kubernetes-persistent-volume-explained-fb27df29c393) +* [==medium.com/codex: Kubernetes Persistent Volume Explained==](https://medium.com/codex/kubernetes-persistent-volume-explained-fb27df29c393) Learn what a Persistent Volume is and how to create a persistent volume from a storage class. Then, learn how to create a persistent volume claim and how to attach the PVC to a Pod: * How to create a persistent volume from a storage class * How to create a persistent volume claim * How to attach the PVC to a Pod @@ -709,7 +712,7 @@ * [medium.com/geekculture: Setup a CronJob to execute Kubectl or AWS commands](https://medium.com/geekculture/setup-a-cronjob-to-execute-kubectl-or-aws-commands-c1c15dd4ff1f) Kubernetes Tricks | AWS CLI | CronJob | Secrets | Backup Databases | Postgres Backup in Kubernetes #### Kubernetes Services -- [blog.alexellis.io: A Primer: Accessing services in Kubernetes](https://blog.alexellis.io/primer-accessing-kubernetes-services/) +- [blog.alexellis.io: A Primer: Accessing services in Kubernetes](https://blog.alexellis.io/primer-accessing-kubernetes-services/) Learn how to access your applications on Kubernetes and the differences between a LoadBalancer, NodePort, port-forwarding and Ingress through examples - [faun.pub: Kubernetes — Active/Passive Load Balancing with Services](https://faun.pub/active-passive-load-balancing-with-kubernetes-services-742cae1938af) There can be a number of reasons one might want to do active/passive load balancing, for example licensing constraints, etc. In this article, you will learn how to do so in Kubernetes using labels and services ### Kubernetes Deployment Strategies @@ -854,6 +857,9 @@ * [==harness.io: Kubernetes Mistakes: A Beginner’s Guide To Avoiding Common Pitfalls==](https://harness.io/blog/kubernetes-mistakes/) * [martinheinz.dev: Keeping Kubernetes Clusters Clean and Tidy 🌟](https://martinheinz.dev/blog/60) As your cluster grows, so does the number of resources, volumes or other API objects and sooner or later you will reach the limits somewhere. In this article, you’ll learn how to keep it clean and tidy. * [onurcill.medium.com: Kubernetes Best Practices](https://onurcill.medium.com/kubernetes-best-practices-5c156a0ff40f) +* [pionative.com: 6 Important things you need to run Kubernetes in production](https://www.pionative.com/post/6-important-things-you-need-to-run-kubernetes-in-production) +* [youtube: Common Kubernetes Mistakes - CPU and Memory Requests (part 1) | Robusta](https://www.youtube.com/watch?v=_nknHwTKlh8) +* [medium.com/mycloudseries: Must-haves for your Kubernetes Cluster to be Production Ready](https://medium.com/mycloudseries/must-haves-for-your-kubernetes-cluster-to-be-production-ready-dc7d1d18c4a2)
[![k8s experts be like](images/k8sexpertsbelike.jfif){: style="width:50%"}](https://twitter.com/memenetes) @@ -1050,6 +1056,7 @@ - [weave.works: Tools for Automating and Implementing Cloud Native Patterns](https://www.weave.works/blog/tools-for-automating-and-implementing-cloud-native-patterns) - [dzone: Microservices Patterns: Sidecar](https://dzone.com/articles/microservices-patterns-sidecar) Learn about Microservice architecture and single responsibility principle, know more on how to achieve it using sidecars. - [dzone: Multi-Container Pod Design Patterns in Kubernetes](https://dzone.com/articles/multi-container-pod-design-patterns-in-kubernetes) In Kubernetes, Pods are the single deployable units. If an application is to be deployed, it must be so in a Pod as a container. Learn how to use multi-container pods. +- [linkedin.com/pulse: Avoid These Kubernetes Anti-Patterns | Pavan Belagatti](https://www.linkedin.com/pulse/avoid-kubernetes-anti-patterns-pavan-belagatti/) [![Top 10 Kubernetes patterns](images/top_10_kubernetes_patterns.png)](https://developers.redhat.com/blog/2020/05/11/top-10-must-know-kubernetes-design-patterns/) @@ -1109,6 +1116,9 @@ ## Multi-Regional Architecture - [engineering.monday.com: monday.com’s Multi-Regional Architecture: A Deep Dive](https://engineering.monday.com/monday-coms-multi-regional-architecture-a-deep-dive/) Building a global SaaS platform requires lots of preparation, deep evaluation of your request routes and a truckload of R&D cooperation. Here's how we did it +## Kubernetes in Kubernetes +- [kubernetes.io: Kubernetes-in-Kubernetes and the WEDOS PXE bootable server farm](https://kubernetes.io/blog/2021/12/22/kubernetes-in-kubernetes-and-pxe-bootable-server-farm/) Learn how you can simplify management of data centers, thousands of physical servers, virtual machines and hosting for hundreds of thousands of sites with Kubernetes-in-Kubernetes (nested Kubernetes clusters) + ## Kubernetes Scripts - [Kubernetes Scripts](https://github.com/eldada/kubernetes-scripts) - [Get applied and effective apiVersion from Kubernetes objects](https://gist.github.com/ninlil/affbf7514d4e74c7634e77f47e172236) @@ -1127,15 +1137,6 @@ - [cynet.com: Incident Report Plan (IRP)](https://www.cynet.com/incident-response/incident-response-plan/) - [kubermatic.com: A Framework for Kubernetes Incident Response](https://www.kubermatic.com/blog/a-framework-for-kubernetes-incident-response/) -## Kubernetes interview questions -- [Kubernetes Interview Questions and Answers 2019 2020](https://linux.amitmaheshwari.in/2019/11/kubernetes-interview-questions-and.html) -- [intellipaat.com: Top Kubernetes Interview Questions and Answers](https://intellipaat.com/blog/interview-question/kubernetes-interview-questions-answers/) -- [automationreinvented.blogspot.com: Top 11 Kubernetes interview question and answers for SDET Devops QA SET-01?](https://automationreinvented.blogspot.com/2020/09/top-11-kubernetes-interview-question.html) -- [devsecops.co.in: Kubernetes Interview Questions and Answers](https://devsecops.co.in/2021/05/22/kubernetes-interview/) -- [ymmt2005.hatenablog.com: 47 things that you should know to be a Kubernetes experts (questions + answers)](https://ymmt2005.hatenablog.com/entry/k8s-things) -- [automationreinvented.blogspot.com: kubernetes posts](https://automationreinvented.blogspot.com/search/label/Kubernetes?m=1) -- [jakubstransky.com: 4 devs by devs: Kubernetes interview question made easy](https://jakubstransky.com/2021/11/05/4-devs-kubernetes-interview-question-made-easy/) Distilled introduction for developers. Things I believe that every developer should be aware of. - ## Kubernetes Certifications. CKA, CKAD and CKS - [cncf.io: Certified Kubernetes Application Developer (CKAD)](https://www.cncf.io/certification/ckad/) - [CKAD-Bookmarks](https://github.com/reetasingh/CKAD-Bookmarks) save time in searching docs in CKAD exam @@ -1247,6 +1248,7 @@ +
@@ -1310,6 +1312,8 @@ + + @@ -1330,6 +1334,12 @@ + + + + + + diff --git a/docs/kustomize.md b/docs/kustomize.md index 311c5502..ddd99409 100644 --- a/docs/kustomize.md +++ b/docs/kustomize.md @@ -17,6 +17,7 @@ - [opensource.com: Modify your Kubernetes manifests with Kustomize](https://opensource.com/article/21/6/kustomize-kubernetes) Modify your Kubernetes manifests without losing control of what's in the original versions. - [dev.to: Introduction to Kustomize - How to customize Kubernetes objects kubernetes](https://dev.to/katiatalhi/introduction-to-kustomize-how-to-customize-kubernetes-objects-3e08) - [mirantis.com: Kustomize Tutorial: Creating a Kubernetes app out of multiple pieces](https://www.mirantis.com/blog/introduction-to-kustomize-part-1-creating-a-kubernetes-app-out-of-multiple-pieces/) +- [codefresh.io: Applied GitOps with Kustomize](https://codefresh.io/about-gitops/applied-gitops-with-kustomize) In this article, you will learn Kustomize and how it can help deploy Kubernetes manifest with GitOps. This will allow you to leverage the power of Kustomize to define YAML files without using a templating engine ## Secretize plugin - [Secretize 🌟](https://github.com/bbl/secretize) Secretize is a kustomize plugin that helps generating kubernetes secrets from various sources such as AWS Secret Manager & Azure Vault. It's like a swiss army knife, but for kubernetes secrets. diff --git a/docs/linux.md b/docs/linux.md index 8bb48f55..10bada6c 100644 --- a/docs/linux.md +++ b/docs/linux.md @@ -257,6 +257,7 @@ - [dev.to: Writing Bash Scripts Like A Pro - Part 1 - Styling Guide](https://dev.to/unfor19/writing-bash-scripts-like-a-pro-part-1-styling-guide-4bin) - [linuxhandbook.com: Unusual Ways to Use Variables Inside Bash Scripts](https://linuxhandbook.com/variables-bash-script/) - [opensource.com: An introduction to programming with Bash (eBook)](https://opensource.com/downloads/bash-programming-guide) +- [pythonspeed.com: Please stop writing shell scripts](https://pythonspeed.com/articles/shell-scripts/) ## Questions and Answers - [redhat.com: 5 questions to ask during your next sysadmin interview](https://www.redhat.com/sysadmin/5-questions-interview) diff --git a/docs/managed-kubernetes-in-public-cloud.md b/docs/managed-kubernetes-in-public-cloud.md index 5dfd942e..f2c7a5f6 100644 --- a/docs/managed-kubernetes-in-public-cloud.md +++ b/docs/managed-kubernetes-in-public-cloud.md @@ -16,6 +16,7 @@ - [DOKS Digital Ocean Kubernetes](#doks-digital-ocean-kubernetes) - [Provisioning cloud resources (AWS, GCP, Azure) in Kubernetes](#provisioning-cloud-resources-aws-gcp-azure-in-kubernetes) - [Kubesphere](#kubesphere) +- [Giant Swarm](#giant-swarm) - [Tools for multi-cloud Kubernetes management](#tools-for-multi-cloud-kubernetes-management) - [Videos](#videos) - [Tweets](#tweets) @@ -128,6 +129,9 @@ * [blog.searce.com: Optimise cost for AWS EKS cluster using Spotinst 🌟](https://blog.searce.com/optimize-cost-for-aws-eks-cluster-using-spotinst-ffcebe8e3571) * [thenewstack.io: How We Built Preview Environments on Kubernetes and AWS](https://thenewstack.io/how-we-built-preview-environments-on-kubernetes-and-aws/) * [aws.amazon.com: Mount Amazon EFS file systems cross-account from Amazon EKS, and utilize AWS Organizations more effectively](https://aws.amazon.com/blogs/storage/mount-amazon-efs-file-systems-cross-account-from-amazon-eks) +* [==Onfido’s Journey to a Multi-Cluster Amazon EKS Architecture==](https://aws.amazon.com/blogs/containers/onfidos-journey-to-a-multi-cluster-amazon-eks-architecture/) In this article, you will learn how moving to an active/active cluster architecture has allowed Onfido to shift traffic away from an Amazon EKS cluster when performing infrastructure maintenance. +* [medium.com/@abhinav.ittekot: Granting IAM permissions to pods in EKS using OIDC](https://medium.com/@abhinav.ittekot/granting-iam-permissions-to-pods-in-eks-using-oidc-f2044c88a53) +* [medium.com/@ishana98dadhich: Integrating AWS Secret Manager with EKS and use Secrets inside the Pods: Part-1](https://medium.com/@ishana98dadhich/integrating-aws-secret-manager-with-eks-and-use-secrets-inside-the-pods-part-1-1938b0c3c2fb) This blog provides you enough details on how you can use secrets (managed by AWS Secrets Manager) inside AWS EKS pods. ### EKS and IaC with Crossplane * [==aws.amazon.com: GitOps model for provisioning and bootstrapping Amazon EKS clusters using Crossplane and Argo CD==](https://aws.amazon.com/blogs/containers/gitops-model-for-provisioning-and-bootstrapping-amazon-eks-clusters-using-crossplane-and-argo-cd/) @@ -167,6 +171,7 @@ - [docs.microsoft.com: Configure Azure CNI networking in Azure Kubernetes Service (AKS)](https://docs.microsoft.com/en-us/azure/aks/configure-azure-cni) - [trstringer.com: Run Kubernetes Pods on Specific VM Types in AKS](https://trstringer.com/run-kubernetes-pods-on-vm-types/) - [docs.microsoft.com: AKS-managed Azure Active Directory integration](https://docs.microsoft.com/en-us/azure/aks/managed-aad) +- [==stacksimplify.com/azure-aks: Kubernetes On Cloud Roadmap==](https://stacksimplify.com/azure-aks/) - [build5nines.com: Terraform: Create an AKS Cluster 🌟](https://build5nines.com/terraform-create-an-aks-cluster/) - [github.com: AKS: Use AAD identity for pods and make your SecOps happy](https://github.com/dfrappart/articles/blob/master/podidentityjourney.md) - [docs.microsoft.com: Microservices architecture on Azure Kubernetes Service (AKS) 🌟](https://docs.microsoft.com/en-us/azure/architecture/reference-architectures/containers/aks-microservices/aks-microservices) @@ -207,6 +212,8 @@ - [logz.io: Collecting Metrics from Windows Kubernetes Nodes in AKS 🌟](https://logz.io/blog/windows-kubernetes-nodes-aks-metrics/) - [dev.to: Moving Azure Functions from AKS to Container Apps](https://dev.to/christle/moving-azure-functions-from-aks-to-container-apps-k60) - [techcommunity.microsoft.com: Azure Kubernetes Service and Azure Container Registry Service on Azure Stack Hub](https://techcommunity.microsoft.com/t5/azure-stack-blog/azure-kubernetes-service-and-azure-container-registry-service-on/ba-p/3075932) +- [dev.to: Getting started with Windows Containers on Azure Kubernetes Service](https://dev.to/rdvansloten/getting-started-with-windows-containers-on-azure-kubernetes-service-46ce) Windows support has finally arrived in Kubernetes and AKS. Learn how to migrate your workloads and what pitfalls to avoid in this short and sweet introduction to Windows Containers. +- [==mehighlow.medium.com: Hardened-AKS/Secrets==](https://mehighlow.medium.com/hardened-aks-secrets-82351c43eac4) Commonly, an application requires access to data and, usually, such access must be restricted. So, you need to provide your pod/deployment/replicaSet/DaemonSet with secrets. Learn how you can do so in AKS ## GKE Google Kubernetes Engine - [Google Kubernetes Engine](https://cloud.google.com/kubernetes-engine) @@ -241,6 +248,7 @@ * [cloud.google.com: How to do multi-cluster Kubernetes in the real world—one GKE shop’s approach](https://cloud.google.com/blog/products/containers-kubernetes/multi-cluster-kubernetes-with-gke-at-geotab) * [cloud.google.com: Know more, spend less: how GKE cost optimization insights help you optimize Kubernetes](https://cloud.google.com/blog/products/containers-kubernetes/gke-cost-optimization-insights-now-ga) * [medium.com/@glen.yu: Getting started with eBPF and Cilium on GKE](https://medium.com/@glen.yu/getting-started-with-ebpf-and-cilium-on-gke-6553c5d7e02a) Through Cilium, users can add functionality such as encryption and L7 network policy enforcement previously only available in a service mesh — but without the operational complexity of having to manage one. +* [medium.com/@glen.yu: NGINX Ingress or GKE Ingress?](https://medium.com/@glen.yu/nginx-ingress-or-gke-ingress-d87dd9db504c) There are tons of ingress controllers out there in the Kubernetes ecosystem, so how do we know which one is right for you? In this article, you will learn the differences between the NGINX and GKE Ingress. ## IKS IBM Cloud Kubernetes Service - [IKS](https://www.ibm.com/cloud/kubernetes-service) @@ -263,11 +271,16 @@ - [kubesphere.io](https://kubesphere.io/) The Kubernetes platform tailored for hybrid multicloud. KubeSphere is a distributed operating system managing cloud native applications with Kubernetes as its kernel, and provides plug-and-play architecture for the seamless integration of third-party applications to boost its ecosystem. - [kubekey](https://github.com/kubesphere/kubekey) The Next-gen Installer: Installing Kubernetes and KubeSphere v3.0.0 fastly, flexibly and easily - [kubesphere.io: Install Kubernetes 1.22 and containerd the Easy Way with kubekey](https://kubesphere.io/blogs/install-kubernetes-containerd/) + - [thenewstack.io: Quickly Install a Kubernetes Cluster with KubeKey](https://thenewstack.io/quickly-install-a-kubernetes-cluster-with-kubekey/) - [kubesphere.io: Scaling a Kubernetes Cluster: One of the Best Practices for Using KubeKey](https://kubesphere.io/blogs/scale-kubernetes-cluster-using-kubekey/) - [itnext.io: Adding Master Nodes to Achieve HA: One of the Best Practices for Using KubeKey](https://itnext.io/adding-master-nodes-to-achieve-ha-one-of-the-best-practices-for-using-kubekey-6207e94b0bdd) - [youtube: Create a Jenkins Pipeline on Kubernetes with CI/CD Pipeline Template in KubeSphere](https://www.youtube.com/watch?v=MU5LdM83x9s&t=40s&ab_channel=KubeSphere) Two built-in Jenkins pipeline templates are available in KubeSphere 3.1. DevOps team can generate CICD or customize the workflow as you need by simple drag-and-drop. - [itnext.io: KubeSphere: A New Pluggable Kubernetes Application Management Platform](https://itnext.io/kubesphere-a-new-pluggable-kubernetes-application-management-platform-bf078b9f3330) +## Giant Swarm +- [Giant Swarm](https://www.giantswarm.io) Giant Swarm offers a fully managed, open source Kubernetes platform with all the flexibility and support you need. +- [giantswarm.io: ](https://www.giantswarm.io/blog/turtles-all-the-way-down-are-still-just-turtles-giant-swarm) We decided to go all-in with Cluster API (CAPI). "Time and again, we have seen open source win. It won with Kubernetes, and it will win with CAPI. We will continue to add our secret sauce to make it easily accessible to enterprise customers." + ## Tools for multi-cloud Kubernetes management - [Banzai Cloud 🌟](https://banzaicloud.com/) - [Kubernetes node pool upgrades with Banzai Pipeline](https://banzaicloud.com/blog/kubernetes-nodepool-upgrades/) diff --git a/docs/matrix-table.md b/docs/matrix-table.md index aac48447..ea7ae13a 100644 --- a/docs/matrix-table.md +++ b/docs/matrix-table.md @@ -58,4 +58,5 @@ hide: | [K8e](https://github.com/xiaods/k8e) | | | | | | | | | | | Simple Kubernetes Distribution. Builds on upstream project K3s as codebase, remove Edge/IoT features and extend enterprise features with best practices | | [Typhoon](https://github.com/poseidon/typhoon) | | | | | | | | | | | Minimal and free Kubernetes distribution with Terraform | | [LKE](https://www.linode.com/products/kubernetes/) | | | | | | | | | | | Linode Kubernetes Engine | +| [Giant Swarm](https://www.giantswarm.io/) | | | | | | | | | | | Giant Swarm | |====================================|==================|======================|==========================| | | | | | | |=============================================|==============================================================================| diff --git a/docs/maven-gradle.md b/docs/maven-gradle.md index 6936332f..c430ad40 100644 --- a/docs/maven-gradle.md +++ b/docs/maven-gradle.md @@ -19,6 +19,7 @@ ## Apache Maven * [Wikipedia.org: Apache Maven](https://en.wikipedia.org/wiki/Apache_Maven) * [maven.apache.org](https://maven.apache.org/) + * [apache/maven-mvnd](https://github.com/apache/maven-mvnd) Apache Maven Daemon. Easy way to speed up local build especially in multi-module Maven project - use Maven Daemon (mvnd)! mvnd builds Spring Cloud AWS 28% faster than traditional mvn command * [twitter.com/ASFMavenProject: The official twitter feed of the Apache Maven Project](https://twitter.com/ASFMavenProject) * [twitter.com/ASFMavenRelease: Maven Plugin Release](https://twitter.com/ASFMavenRelease) Tweets of plugin releases * [Dzone.com: Starting with Apache Maven](https://dzone.com/articles/starting-with-apache-maven) diff --git a/docs/message-queue.md b/docs/message-queue.md index a6786ec7..2f63a763 100644 --- a/docs/message-queue.md +++ b/docs/message-queue.md @@ -17,6 +17,7 @@ - [Data Mesh](#data-mesh) - [Data Processing (aka Streaming Data, Data Pipeline or Big Data Pipeline)](#data-processing-aka-streaming-data-data-pipeline-or-big-data-pipeline) - [Apache Kafka](#apache-kafka) + - [Kafka Tools](#kafka-tools) - [Strimzi kubernetes operator for apache kafka](#strimzi-kubernetes-operator-for-apache-kafka) - [Apache Kafka Desktop Clients](#apache-kafka-desktop-clients) - [AWS Kinesis](#aws-kinesis) @@ -96,6 +97,8 @@ - [==blog.twitter.com: Processing billions of events in real time at Twitter==](https://blog.twitter.com/engineering/en_us/topics/infrastructure/2021/processing-billions-of-events-in-real-time-at-twitter-) - [codeopinion.com: Event Sourcing vs Event Driven Architecture](https://codeopinion.com/event-sourcing-vs-event-driven-architecture/) - [thenewstack.io: The Path to Getting the Full Data Stack on Kubernetes](https://thenewstack.io/the-path-to-getting-the-full-data-stack-on-kubernetes/) +- [medium.com/tinyclues-vision: 4 Design Principles for Robust Data Pipelines](https://medium.com/tinyclues-vision/4-design-principles-for-robust-data-pipelines-5bbd40de4a43) Design Principles for traditional Software Engineering quickly fail when working with large and diverse sets of data — a new way of thinking about this difference. +- [medium.com/fiverr-engineering: How to Share Data Between Microservices on High Scale](https://medium.com/fiverr-engineering/how-to-share-data-between-microservices-on-high-scale-ab2bc663898d) Several approaches suitable for a scalable system considering tradeoffs between availability and consistency ## RPC vs Messaging - [particular.net: RPC vs. Messaging – which is faster?](https://particular.net/blog/rpc-vs-messaging-which-is-faster) @@ -255,16 +258,13 @@ comsysto about their usage of Debezium, touching on many details like outbox pat - [thenewstack.io: Beyond the Quickstart: Running Apache Kafka as a Service on Kubernetes](https://thenewstack.io/beyond-the-quickstart-running-apache-kafka-as-a-service-on-kubernetes/) - [towardsdatascience.com: You Can Replace Kafka with a Database](https://towardsdatascience.com/you-can-replace-kafka-with-a-database-39e13b610b63) - [Handling Retries in Kafka: If You’re Using Kafka With Your Microservices, You’re Probably Handling Retries Wrong](https://dt-23597.medium.com/if-youre-using-kafka-with-your-microservices-you-re-probably-handling-retries-wrong-8492890899fa) -- [Kafdrop – Kafka Web UI 🌟](https://github.com/obsidiandynamics/kafdrop) - [confluent.io: What’s New in Apache Kafka 2.8](https://www.confluent.io/blog/kafka-2-8-0-features-and-improvements-with-early-access-to-kip-500/) - [devclass.com: Apache Kafka 2.8.0 previews life without ZooKeeper](https://devclass.com/2021/04/20/apache-kafka-2-8-0-previews-life-without-zookeeper/) -- [KLoadGen - Kafka + (Avro/Json Schema) Load Generator 🌟](https://github.com/corunet/kloadgen) KLoadGen is kafka load generator plugin for jmeter designed to work with AVRO and JSON schema. It allows sending kafka messages with a structure defined as an AVRO Schema or a Json Schema. It connects to the Scheme Registry Server, retrieve the subject to send and generate a random message every time. - [instaclustr.com: Apache Kafka Architecture: A Complete Guide 🌟](https://www.instaclustr.com/apache-kafka-architecture/) - [youtube playlist: Kafka Connect Tutorials | Kafka Connect 101: REST API 🌟](https://www.youtube.com/watch?v=9wu-j9gIlBY&list=PLa7VYi0yPIH1MB2n2w8pMZguffCDu2L4Y&index=8&ab_channel=Confluent) KafkaConnect uses a REST API to expose its management capabilities. tlberglund demonstrates many of the key functions available using the REST API, including creating connectors, viewing their status, and accessing troubleshooting information. - [developers.redhat.com: Event-driven APIs and schema governance for Apache Kafka: Get ready for Kafka Summit Europe 2021](https://developers.redhat.com/blog/2021/05/04/event-driven-apis-and-schema-governance-for-apache-kafka-get-ready-for-kafka-summit-europe-2021/) - [developers.redhat.com: Building resilient event-driven architectures with Apache Kafka](https://developers.redhat.com/blog/2021/05/05/building-resilient-event-driven-architectures-with-apache-kafka/) - [tech.ebayinc.com: Resiliency and Disaster Recovery with Kafka](https://tech.ebayinc.com/engineering/resiliency-and-disaster-recovery-with-kafka/) -- [dev.to: Learn how to use Kafkacat – the most versatile Kafka CLI client 🌟](https://dev.to/de_maric/learn-how-to-use-kafkacat-the-most-versatile-kafka-cli-client-1kb4) - [newrelic.com: Effective Strategies for Kafka Topic Partitioning 🌟](https://newrelic.com/blog/best-practices/effective-strategies-kafka-topic-partitioning) - [gentlydownthe.stream](https://www.gentlydownthe.stream/) A children’s book about Apache Kafka. - [confluent.io: Apache Kafka Made Simple: A First Glimpse of a Kafka Without ZooKeeper](https://www.confluent.io/blog/kafka-without-zookeeper-a-sneak-peek/) @@ -281,7 +281,6 @@ comsysto about their usage of Debezium, touching on many details like outbox pat - [mercurytfs.blogspot.com: Colas Kafka](https://mercurytfs.blogspot.com/2021/07/colas-kafka.html) - [grafana.com: Get comprehensive monitoring for your Apache Kafka ecosystem instances quickly with Grafana Cloud](https://grafana.com/blog/2021/07/26/get-comprehensive-monitoring-for-your-apache-kafka-ecosystem-instances-quickly-with-grafana-cloud/) - [dzone: Next-Gen Data Pipes With Spark, Kafka and k8s 🌟](https://dzone.com/articles/next-gen-data-pipes-with-spark-kafka-and-k8s) This article examines the architecture patterns and provides some sample code for the readers to implement in their own environment. -- [github.com/lensesio/fast-data-dev (Lenses Box)](https://github.com/lensesio/fast-data-dev) Kafka Docker for development. Kafka, Zookeeper, Schema Registry, Kafka-Connect, Landoop Tools, 20+ connectors. A apachekafka docker image that actually works without zookeeper. If you don't want do deal with docker-compose this one is for you. - [confluent.io: Making Apache Kafka Serverless: Lessons From Confluent Cloud](https://www.confluent.io/blog/designing-an-elastic-apache-kafka-for-the-cloud/) - [developer.confluent.io 🌟🌟](https://developer.confluent.io/) over ten hours of FREE video courses with hands-on exercises, 50+ event streaming patterns, deep-dive articles on Kafka's internals, and a ton more. - [itnext.io: Sending Messages to Kafka in Kubernetes](https://itnext.io/sending-messages-to-kafka-cfb5a246f5eb) @@ -294,9 +293,7 @@ comsysto about their usage of Debezium, touching on many details like outbox pat - [betterprogramming.pub: How to Handle Duplicate Messages and Message Ordering in Kafka](https://betterprogramming.pub/how-to-handle-duplicate-messages-and-message-ordering-in-kafka-82e2fef82025) Dealing with the challenges faced when using Apache Kafka - [medium: Optimizing Kafka Streams Apps on Kubernetes by Splitting Topologies](https://medium.com/bakdata/optimizing-kafka-streams-apps-on-kubernetes-by-splitting-topologies-ac6b4c90516e) - [blog.twitter.com: Processing billions of events in real time at Twitter](https://blog.twitter.com/engineering/en_us/topics/infrastructure/2021/processing-billions-of-events-in-real-time-at-twitter-) -- [dzone: Visualize your Apache Kafka Streams using the Quarkus Dev UI](https://dzone.com/articles/visualize-your-apache-kafka-streams-using-the-quar) Visualize your Apache Kafka Streams using the Quarkus Dev UI - [inder-devops.medium.com: Kafka- Best practices & Lessons Learned | By Inder](https://inder-devops.medium.com/kafka-best-practices-lessons-learned-by-inder-431dc5fafd3b) -- [medium: Solutions to Communication Problems in Microservices using Apache Kafka and Kafka Lens](https://medium.com/@harmonh/solutions-to-communication-problems-in-microservices-using-apache-kafka-and-kafka-lens-9b6d453de352) - [datadoghq.com: Monitoring Kafka performance metrics](https://www.datadoghq.com/blog/monitoring-kafka-performance-metrics/) - [blog.workwell.io: How to manage your Kafka consumers from the producer](https://blog.workwell.io/how-to-manage-your-kafka-consumers-from-the-producer-9933b88085dd) - [slack.engineering: Building Self-driving Kafka clusters using open source components](https://slack.engineering/building-self-driving-kafka-clusters-using-open-source-components/) @@ -307,6 +304,16 @@ comsysto about their usage of Debezium, touching on many details like outbox pat - [dev.to: Running Kafka on kubernetes for local development](https://dev.to/thegroo/running-kafka-on-kubernetes-for-local-development-2a54) - [medium.com/udemy-engineering: Introducing Hot and Cold Retries on Apache Kafka](https://medium.com/udemy-engineering/introducing-hot-and-cold-retries-on-apache-kafka-f2f23595627b) An overview of how to build a fault-tolerant event delivery system by using non-blocking retries of Apache Kafka® in Udemy Payments Team - [==conduktor.io/kafka: Learn Apache Kafka like never before==](https://www.conduktor.io/kafka) Conduktor Kafkademy is the quickest, easiest and most effective way for you to learn Apache Kafka for free. +- [developers.redhat.com: Which is better: A single Kafka cluster to rule them all, or many?](https://developers.redhat.com/articles/2022/03/10/which-better-single-kafka-cluster-rule-them-all-or-many#) + +#### Kafka Tools +- [Kafdrop – Kafka Web UI 🌟](https://github.com/obsidiandynamics/kafdrop) +- [redpanda-data/kowl](https://github.com/redpanda-data/kowl) Kowl is a Web UI for Apache Kafka that allows exploring messages, consumers, configurations and more with a focus on a good UI & UX. +- [KLoadGen - Kafka + (Avro/Json Schema) Load Generator 🌟](https://github.com/corunet/kloadgen) KLoadGen is kafka load generator plugin for jmeter designed to work with AVRO and JSON schema. It allows sending kafka messages with a structure defined as an AVRO Schema or a Json Schema. It connects to the Scheme Registry Server, retrieve the subject to send and generate a random message every time. +- [dev.to: Learn how to use Kafkacat – the most versatile Kafka CLI client 🌟](https://dev.to/de_maric/learn-how-to-use-kafkacat-the-most-versatile-kafka-cli-client-1kb4) +- [github.com/lensesio/fast-data-dev (Lenses Box)](https://github.com/lensesio/fast-data-dev) Kafka Docker for development. Kafka, Zookeeper, Schema Registry, Kafka-Connect, Landoop Tools, 20+ connectors. A apachekafka docker image that actually works without zookeeper. If you don't want do deal with docker-compose this one is for you. +- [dzone: Visualize your Apache Kafka Streams using the Quarkus Dev UI](https://dzone.com/articles/visualize-your-apache-kafka-streams-using-the-quar) Visualize your Apache Kafka Streams using the Quarkus Dev UI +- [medium: Solutions to Communication Problems in Microservices using Apache Kafka and Kafka Lens](https://medium.com/@harmonh/solutions-to-communication-problems-in-microservices-using-apache-kafka-and-kafka-lens-9b6d453de352) #### Strimzi kubernetes operator for apache kafka - [strimzi.io](https://strimzi.io/) diff --git a/docs/mkdocs.md b/docs/mkdocs.md index 6e443305..234178e7 100644 --- a/docs/mkdocs.md +++ b/docs/mkdocs.md @@ -30,6 +30,7 @@ - [r-bloggers.com: How to use R Markdown (part one)](https://www.r-bloggers.com/2022/02/how-to-use-r-markdown-part-one/) R Markdown is a dynamic file format that allows you to make documents containing normal text alongside chunks of embedded R code. - [opensource.com: An introduction to Markdown](https://opensource.com/article/19/9/introduction-markdown) - [github.blog: Include diagrams in your Markdown files with Mermaid](https://github.blog/2022-02-14-include-diagrams-markdown-files-mermaid/) A picture tells a thousand words. Now you can quickly create and edit diagrams in markdown using words with Mermaid support in your Markdown files. +- [theverge.com: Google Docs is getting more Markdown support](https://www.theverge.com/2022/3/29/23002138/google-docs-markdown-support-formatting-update) ## GitHub Pages - [pages.github.com](https://pages.github.com/) diff --git a/docs/mlops.md b/docs/mlops.md index f2c91d0e..1f395f4c 100644 --- a/docs/mlops.md +++ b/docs/mlops.md @@ -1,6 +1,7 @@ # Machine Learning Ops (MLOps) - [Introduction](#introduction) - [Kubeflow](#kubeflow) +- [KServe Cloud Native Model Server](#kserve-cloud-native-model-server) - [Tweets](#tweets) ## Introduction - [cd.foundation: Announcing the CD Foundation MLOps SIG](https://cd.foundation/blog/2020/02/11/announcing-the-cd-foundation-mlops-sig/) @@ -21,12 +22,17 @@ - [towardsdatascience.com: Automatically Generate Machine Learning Code with Just a Few Clicks](https://towardsdatascience.com/automatically-generate-machine-learning-code-with-just-a-few-clicks-7901b2334f97) Using Traingenerator to easily create PyTorch and scikit-learn template codes for machine learning model training - [towardsdatascience.com: Schemafull streaming data processing in ML pipelines](https://towardsdatascience.com/using-kafka-with-avro-in-python-da85b3e0f966) Making containerized Python streaming data pipelines leverage schemas for data validation using Kafka with AVRO and Schema Registry - [analyticsindiamag.com: Top tools for enabling CI/CD in ML pipelines](https://analyticsindiamag.com/top-tools-for-enabling-ci-cd-in-ml-pipelines/) +- [towardsdatascience.com: Step-by-step Approach to Build Your Machine Learning API Using Fast API](https://towardsdatascience.com/step-by-step-approach-to-build-your-machine-learning-api-using-fast-api-21bd32f2bbdb) A fast and simple approach to serve your model as an API ## Kubeflow - [kubeflow](https://www.kubeflow.org/) The Machine Learning Toolkit for Kubernetes - [medium.com: Machine Learning using Kubeflow](https://medium.com/cloud-techies/machine-learning-using-kubeflow-ad7c9f767df0) - [infracloud.io: Machine Learning Orchestration on Kubernetes using Kubeflow](https://www.infracloud.io/blogs/machine-learning-orchestration-kubernetes-kubeflow/) +## KServe Cloud Native Model Server +- [kserve.github.io](https://kserve.github.io/website/0.8/) Highly scalable and standards based Model Inference Platform on Kubernetes for Trusted AI +- [thenewstack.io: KServe: A Robust and Extensible Cloud Native Model Server](https://thenewstack.io/kserve-a-robust-and-extensible-cloud-native-model-server/) + ## Tweets
Click to expand! diff --git a/docs/monitoring.md b/docs/monitoring.md index 52c5a120..aae024c4 100644 --- a/docs/monitoring.md +++ b/docs/monitoring.md @@ -18,6 +18,7 @@ - [Elastic Cloud on Kubernetes (ECK)](#elastic-cloud-on-kubernetes-eck) - [OpenSearch](#opensearch) - [EFK](#efk) + - [Logstash Grok for Log Parsing](#logstash-grok-for-log-parsing) - [Performance](#performance) - [List of Performance Analysis Tools](#list-of-performance-analysis-tools) - [Thread Dumps. Debugging Java Applications](#thread-dumps-debugging-java-applications) @@ -81,7 +82,6 @@ * [ortelius.io: Microservice Monitoring and Visualization with Ortelius open source project](https://ortelius.io/blog/2021/03/26/microservice-monitoring-and-visualization/) * [thenewstack.io: CI Observability for Effective Change Management 🌟](https://thenewstack.io/ci-observability-for-effective-change-management/) * [thenewstack.io: Monitor Your Containers with Sysdig](https://thenewstack.io/monitor-your-containers-with-sysdig/) -* [medium: Monitoring Microservices - Part 1: Observability 🌟](https://medium.com/geekculture/monitoring-microservices-part-1-observability-b2b44fa3e67e) Achieving observability with probes, logs, metrics, and traces * [thenewstack.io: Applying Basic vs. Advanced Monitoring Techniques](https://thenewstack.io/applying-basic-vs-advanced-monitoring-techniques/) * [cloudforecast.io: cAdvisor and Kubernetes Monitoring Guide 🌟](https://cloudforecast.io/blog/cadvisor-and-kubernetes-monitoring-guide/) * [hmh.engineering: Musings on microservice observability!](https://hmh.engineering/musings-on-microservice-observability-f7052ac42f04) @@ -106,6 +106,7 @@ * [intellipaat.com: Top 10 DevOps Monitoring Tools](https://intellipaat.com/blog/devops-monitoring-tools) Are you a DevOps engineer? Are you confused about which DevOps monitoring tools to use for monitoring? If so, go through this comprehensive blog to know more about different types of DevOps monitoring tools, their purpose, and their importance. * [==cncf.io: How to add observability to your application pipeline==](https://www.cncf.io/blog/2021/11/23/how-to-add-observability-to-your-application-pipeline/) * [storiesfromtheherd.com: Unpacking Observability](https://storiesfromtheherd.com/unpacking-observability-a-beginners-guide-833258a0591f) +* [logz.io: A Monitoring Reality Check: More of the Same Won’t Work](https://logz.io/blog/monitoring-reality-check/) ### Key Performance Indicator (KPI) * [KPIs](https://kpi.org/KPI-Basics) @@ -238,6 +239,10 @@ OpenShift Cluster Monitoring components cannot be extended since they are read o ### EFK - [medium: Logging with EFK - Pratyush Mathur](https://medium.com/@pratyush.mathur/logging-with-efk-1c2e131496d) +### Logstash Grok for Log Parsing +- [logz.io: A Beginner’s Guide to Logstash Grok](https://logz.io/blog/logstash-grok/) +- [logz.io: Grok Pattern Examples for Log Parsing](https://logz.io/blog/grok-pattern-examples-for-log-parsing/) + ## Performance * [dzone.com: The Keys to Performance Tuning and Testing](https://dzone.com/articles/the-keys-to-performance-tuning-and-testing) * [dzone.com: How Performance Tuning and Testing are Changing](https://dzone.com/articles/how-performance-tuning-and-testing-are-changing) diff --git a/docs/newsfeeds.md b/docs/newsfeeds.md index 67769c3f..f95cea3d 100644 --- a/docs/newsfeeds.md +++ b/docs/newsfeeds.md @@ -11,6 +11,7 @@ * [reddit.com/r/jenkinsci](https://www.reddit.com/r/jenkinsci/) * [reddit.com/r/maven](https://www.reddit.com/r/maven) * [reddit.com/r/gradle](https://www.reddit.com/r/gradle/) +* [reddit.com/r/azuredevops](https://www.reddit.com/r/azuredevops) * [reddit.com/r/QualityAssurance](https://www.reddit.com/r/QualityAssurance/) * [reddit.com/r/jmeter](https://www.reddit.com/r/jmeter/) * [reddit.com/r/aws](https://www.reddit.com/r/aws/) AWS Support now officially on Reddit (Account & Billing questions) diff --git a/docs/nosql.md b/docs/nosql.md index dfa0c5b0..bb090b31 100644 --- a/docs/nosql.md +++ b/docs/nosql.md @@ -55,6 +55,7 @@ - [DZone: Maximizing MongoDB on AWS](https://dzone.com/articles/maximizing-mongodb-on-aws) This lengthy post will tell you everything you need to know about getting MongoDB Atlas working as best as it can on Amazon Web Services. - [MongoDB and Kubernetes 🌟](https://www.mongodb.com/kubernetes) - [polarsparc.com: Hands-on MongoDB :: Part-5 🌟](https://www.polarsparc.com/xhtml/MongoDB-5.html) +- [betterprogramming.pub: MongoDB Schema Validation Rules](https://betterprogramming.pub/mongodb-schema-validation-rules-8a1afc6ea67b) How to apply schema validation rules in a collection. ### Redis - [Redis](http://redis.io/) @@ -69,6 +70,7 @@ - [foojay.io: K8ssandra Performance Benchmarks on Cloud Managed Kubernetes](https://foojay.io/today/k8ssandra-performance-benchmarks-on-cloud-managed-kubernetes/) - [datastax.medium.com: We Pushed Helm to the Limit—then Built a Kubernetes Operator](https://datastax.medium.com/we-pushed-helm-to-the-limit-then-built-a-kubernetes-operator-5136f7c71e91) - [thenewstack.io: How to Run a Cassandra Operation in Docker](https://thenewstack.io/how-to-run-a-cassandra-operation-in-docker/) + - [medium.com/building-the-open-data-stack: How to Migrate Your Cassandra Database to Kubernetes with Zero Downtime](https://medium.com/building-the-open-data-stack/how-to-migrate-your-cassandra-database-to-kubernetes-with-zero-downtime-f824f5bbf50b) In this post, you'll learn how to migrate existing Cassandra clusters to the K8ssandra operator without downtime by leveraging flat networking. This allows Cassandra nodes running in VMs to connect to Cassandra pods running in Kubernetes directly - [HBase.apache.org](http://hbase.apache.org/) - [Hive.apache.org](https://hive.apache.org/) - [rethinkdb.com](http://rethinkdb.com) diff --git a/docs/other-awesome-lists.md b/docs/other-awesome-lists.md index 78780db9..2794016c 100644 --- a/docs/other-awesome-lists.md +++ b/docs/other-awesome-lists.md @@ -25,7 +25,7 @@ - [Powershell](#powershell) - [Data Processing](#data-processing) - [Big Data](#big-data) - - [MLOps](#mlops) + - [Machine Learning and MLOps](#machine-learning-and-mlops) - [Open Source Alternatives](#open-source-alternatives) - [Kubectl Plugins](#kubectl-plugins) - [Tweets](#tweets) @@ -48,6 +48,8 @@ - [unofficial-kubernetes.readthedocs.io](https://unofficial-kubernetes.readthedocs.io/) - [run-x/awesome-kubernetes](https://github.com/run-x/awesome-kubernetes) - [k8s-at-home/awesome-home-kubernetes: Awesome Home Kubernetes 🌟](https://github.com/k8s-at-home/awesome-home-kubernetes) Awesome projects involving running Kubernetes at home +- [clusterpedia-io/clusterpedia 🌟](https://github.com/clusterpedia-io/clusterpedia) The Encyclopedia of Kubernetes clusters. Clusterpedia is an encyclopedia of multi-cluster to synchronize, search for, and simply control multi-cluster resources. + - https://clusterpedia.io ## Other Awesome Lists - [free-for.dev 🌟](https://free-for.dev) This is a list of software (SaaS, PaaS, IaaS, etc.) and other offerings that have free tiers for developers. @@ -71,6 +73,7 @@ ### Project Management - [Awesome Project Management](https://github.com/shahedbd/awesome-project-management) - [Awesome Agile](https://github.com/lorabv/awesome-agile) +- [rayfrankenstein/AITOW: #AgileKillsKittens (or Agile In Their Own Words: The Problem With Agile & Scrum)](https://github.com/rayfrankenstein/AITOW) A curated list of negative developer comments about Agile and Scrum on social media ### SysAdmin - [Awesome SysAdmin](https://github.com/kahun/awesome-sysadmin) @@ -142,6 +145,7 @@ ### Security - [sbilly/awesome-security: Awesome Security](https://github.com/sbilly/awesome-security) - [myugan/awesome-docker-security: Awesome Docker Security](https://github.com/myugan/awesome-docker-security) A curated list of awesome Docker security resources +- [anderseknert/awesome-opa 🌟](https://github.com/anderseknert/awesome-opa) A curated list of awesome Open Policy Agent (OPA) related tools, frameworks and articles. ### QA - [Awesome Test Automation](https://github.com/atinfo/awesome-test-automation) @@ -197,8 +201,9 @@ ### Big Data - [onurakpolat/awesome-bigdata](https://github.com/onurakpolat/awesome-bigdata) -### MLOps +### Machine Learning and MLOps - [visenger/awesome-mlops: Awesome MLOps](https://github.com/visenger/awesome-mlops) +- [ekramasif/Basic-Machine-Learning](https://github.com/ekramasif/Basic-Machine-Learning) **This is a repo of basic Machine Learning!** This repository contains a topic-wise curated list of Machine Learning and Deep Learning tutorials, articles and other resources. ## Open Source Alternatives - [opensource.builders](https://opensource.builders/) diff --git a/docs/performance-testing-with-jenkins-and-jmeter.md b/docs/performance-testing-with-jenkins-and-jmeter.md index 02a77f0d..b8db83c1 100644 --- a/docs/performance-testing-with-jenkins-and-jmeter.md +++ b/docs/performance-testing-with-jenkins-and-jmeter.md @@ -8,6 +8,7 @@ - [Gatling and Maven](#gatling-and-maven) - [Jenkins & Gatling](#jenkins--gatling) - [Azure Load Testing Service](#azure-load-testing-service) +- [Load Testing with GitHub Actions](#load-testing-with-github-actions) - [Alternatives](#alternatives) - [Serverless Load Testing](#serverless-load-testing) - [Videos](#videos) @@ -86,6 +87,9 @@ - [venturebeat.com: Microsoft launches fully managed Azure Load Testing service](https://venturebeat.com/2021/11/30/microsoft-launches-fully-managed-azure-load-testing-service/) - [infoq.com: Microsoft Introduces a Fully-Managed Azure Load Testing Service in Preview](https://www.infoq.com/news/2021/12/azure-load-testing-preview/) +## Load Testing with GitHub Actions +- [thenewstack.io: Simple Load Testing with GitHub Actions](https://thenewstack.io/simple-load-testing-with-github-actions/) + ## Alternatives * [webpagetest.org](https://webpagetest.org/) * [devops.com: Catchpoint to Acquire Webpagetest.org](https://devops.com/catchpoint-to-acquire-webpagetest-org/) diff --git a/docs/postman.md b/docs/postman.md index 1aa14036..10fba689 100644 --- a/docs/postman.md +++ b/docs/postman.md @@ -36,5 +36,4 @@ ## Alternatives. Rest Assured - https://rest-assured.io -- [automationqahub.com: Latest Rest Assured Interview Questions](https://automationqahub.com/latest-rest-assured-interview-questions/) - [Hoppscotch: Open-Source Alternative to Postman](https://hoppscotch.io) diff --git a/docs/private-cloud-solutions.md b/docs/private-cloud-solutions.md new file mode 100644 index 00000000..559bf9ef --- /dev/null +++ b/docs/private-cloud-solutions.md @@ -0,0 +1,3 @@ +# Private Cloud Solutions + +- [==thenewstack.io: Bad News for Cloud Computing: OpenStack Use Plummets and Discounts Dry Up==](https://thenewstack.io/bad-news-for-cloud-computing-openstack-use-plummets-and-discounts-dry-up/) \ No newline at end of file diff --git a/docs/project-management-methodology.md b/docs/project-management-methodology.md index da2b4ece..339f2ca8 100644 --- a/docs/project-management-methodology.md +++ b/docs/project-management-methodology.md @@ -38,7 +38,6 @@ - [scrum.org: Minimum Viable Product Considered Harmful 🌟](https://www.scrum.org/resources/blog/minimum-viable-product-considered-harmful) - [agilecheetah.com: Why So Many Developers are Fed Up with Agile](https://agilecheetah.com/why-so-many-developers-are-fed-up-with-agile-pt-3/) - [age-of-product.com: Scrum 2021: Getting You Started as Scrum Master or Product Owner](https://age-of-product.com/scrum-2021/) -- [age-of-product.com: Hiring: 71 Scrum Product Owner Interview Questions to Avoid Agile Imposters](https://age-of-product.com/42-scrum-product-owner-interview-questions/) - [scrum.org: Scrum 2021: Getting You Started as Scrum Master or Product Owner](https://www.scrum.org/resources/blog/scrum-2021-getting-you-started-scrum-master-or-product-owner) - [scrum.org: Kanban Guide for Scrum Teams](https://www.scrum.org/resources/kanban-guide-scrum-teams) The Kanban Guide for Scrum Teams helps you add professional flow concepts to improve your value delivery. - [redhat.com: 11 considerations for effectively managing a Linux sysadmin team 🌟](https://www.redhat.com/sysadmin/11-manager-considerations) Here are some guidelines for managers when dealing with your system administrator staff members. @@ -60,6 +59,8 @@ - [dev.to: What’s Wrong With Measuring Developer Performance (+ 10 Best Metrics)](https://dev.to/actitime/whats-wrong-with-measuring-developer-performance-10-best-metrics-5620) - [betterprogramming.pub: How to Speed Up Your Progress With Feedback](https://betterprogramming.pub/how-to-speed-up-your-progress-with-feedback-1f41872b290a) Know the key features of an effective feedback loop - [betterprogramming.pub: Sprint Planning: Best Practices](https://betterprogramming.pub/sprint-planning-best-practices-1aad4103f6cb) +- [betterhumans.pub: 3 Productivity Tips I Learned Working at Google That You Should Already Be Using](https://betterhumans.pub/3-productivity-tips-i-learned-working-at-google-that-you-should-already-be-using-1bfb62356463) +- [medium.com/@victor.ronin: The dark side of a cross-functional team](https://medium.com/@victor.ronin/the-dark-side-of-a-cross-functional-team-e0d379e37c70) ### Spanish - [scrum.org: Scrum no es una metodología, es un marco de trabajo](https://www.scrum.org/resources/blog/scrum-no-es-una-metodologia-es-un-marco-de-trabajo) @@ -78,6 +79,11 @@ - [okdiario.com: Telefónica y Santander despiden a 467 empleados en 2021 por denuncias de compañeros](https://okdiario.com/economia/telefonica-santander-despiden-467-empleados-2021-denuncias-companeros-8655690) Fraude interno, acoso laboral.. - [cronista.com: Cómo identificar a un mal jefe y qué errores no pueden cometer hoy los líderes](https://www.cronista.com/apertura/empresas/como-identificar-a-un-mal-jefe-y-que-errores-no-pueden-cometer-hoy-los-lideres/) Con la pandemia, la digitalización acelerada y los rediseños organizacionales, la forma de liderar cambió. Qué errores no pueden permitirse hoy las empresas en materia de liderazgo. Los nuevos roles. - [eleconomista.es: Cómo es un mal jefe y qué debe aprender para liderar mejor su empresa (y ser feliz)](https://www.eleconomista.es/status/noticias/10679296/07/20/Como-es-un-mal-jefe-y-que-debe-aprender-para-liderar-mejor-su-empresa-y-ser-feliz.html) +- [vozpopuli.com: Cliente tóxico: cuando el que paga no siempre tiene la razón](https://www.vozpopuli.com/economia_y_finanzas/cliente-toxico.html) Un cliente conflictivo, demasiado exigente o que tiende a tensar mucho la relación con sus proveedores es un problema para cualquier empresa. Así se gestiona un cliente tóxico. +- [elconfidencial.com: Esta psicóloga ha estudiado a los capullos de tu empresa y sabe por qué se comportan así](https://www.elconfidencial.com/espana/2022-03-18/tessa-west-psicologa-capullos-trabajo_3392185/) Tessa West, profesora de la Universidad de Nueva York, lleva 15 años estudiando el comportamiento humano y tiene una buena idea de por qué somos así en el trabajo. +- [business.vogue.es: Adiós a los jefes tóxicos: este es el nuevo tipo de liderazgo gentil que triunfa](https://business.vogue.es/carrera/articulos/adios-jefes-toxicos-la-salud-organizacional-rentabilidad-residen-liderazgo-gentil/533) Un líder tóxico tiene un coste (mental) para el trabajador y, por tanto, también (económico) para la empresa +- [magnet.xataka.com: Esclavos de la improductividad: el 70% de las reuniones impiden que los empleados hagan su trabajo](https://magnet.xataka.com/en-diez-minutos/esclavos-improductividad-70-reuniones-impiden-que-empleados-hagan-su-trabajo) +- [genbeta.com: Las reuniones laborales por videollamada nos agotan: esto es lo que pasa si se eliminan y cambian por chats](https://www.genbeta.com/actualidad/reuniones-trabajo-nos-agotan-videollamada-se-sabe-que-pasa-se-eliminan-usamos-chats) ### Team Topologies - [itrevolution.com: The Problem With Org Charts](https://itrevolution.com/the-problem-with-org-charts/) @@ -236,6 +242,8 @@ + +
diff --git a/docs/project-management-tools.md b/docs/project-management-tools.md index e621c617..9d0773df 100644 --- a/docs/project-management-tools.md +++ b/docs/project-management-tools.md @@ -36,6 +36,7 @@ Jira and Bitbucket integration. Now you can transition issues right from your me - [opensource.com: 5 open source alternatives to Zoom](https://opensource.com/article/21/9/alternatives-zoom) Try one of these open source video conferencing services. - [makeuseof.com: The 8 Best Open-Source Project Management Software](https://www.makeuseof.com/best-open-source-project-management-software) - [opensource.com: Open source tools for running a small business in 2022](https://opensource.com/article/21/12/open-source-business-tools) These articles show the power of open source in business as tools, platforms, or integration points. +- [itsfoss.com: Gitter: A Cross-Platform Open Source Community Platform for Developers](https://itsfoss.com/gitter/) ## Productivity Tips with .new TLD to quickly create - [Google Docs: doc.new](https://doc.new) diff --git a/docs/prometheus.md b/docs/prometheus.md index 708f8d99..0b226e05 100644 --- a/docs/prometheus.md +++ b/docs/prometheus.md @@ -240,7 +240,7 @@ Although it's exciting to see attempts to address the challenges of running Prom #### Certificates Expiration * [muxinc/certificate-expiry-monitor](https://github.com/muxinc/certificate-expiry-monitor) Utility that exposes the expiry of TLS certificates as Prometheus metrics -* [enix/x509-certificate-exporter](https://github.com/enix/x509-certificate-exporter) A Prometheus exporter to monitor x509 certificates expiration in Kubernetes clusters or standalone +* [enix/x509-certificate-exporter](https://github.com/enix/x509-certificate-exporter) A Prometheus exporter to monitor x509 certificates expiration in Kubernetes clusters or standalone, written in Go. Designed to monitor Kubernetes clusters from inside, it can also be used as a standalone exporter. ### Prometheus Exporters Development. Node Exporter * Node exporter puede ser utilizado para exportar las métricas de nuestra aplicación ya que permite exportar un "text-file". Nuestra aplicación puede escribir datos en un fichero de texto con el formato de datos de Prometheus. Este fichero de texto con datos agregados sería exportado a Prometheus con Node Exporter. @@ -325,6 +325,7 @@ Although it's exciting to see attempts to address the challenges of running Prom ## Prometheus Operator ### kube Prometheus * [kube-prometheus](https://github.com/coreos/kube-prometheus) Use Prometheus to monitor Kubernetes and applications running on Kubernetes. +* [arthursens.medium.com: Risk analysis and security compliance in Kube-prometheus](https://arthursens.medium.com/risk-analysis-and-security-compliance-in-kube-prometheus-10c8cfb180b8) #### Prometheus Operator with Helm3 * [devstack.in: Deploy Prometheus Operator with Helm3 and Private Registry 🌟](https://devstack.in/2020/05/25/deploy-prometheus-operator-with-helm3-and-private-registry/) diff --git a/docs/public-cloud-solutions.md b/docs/public-cloud-solutions.md index 6b56a2e0..17f1356c 100644 --- a/docs/public-cloud-solutions.md +++ b/docs/public-cloud-solutions.md @@ -36,6 +36,7 @@ * [acloudguru.com: Blockchain cloud comparison: What is blockchain-as-a-service (BaaS)?](https://acloudguru.com/blog/engineering/blockchain-cloud-comparison-what-is-blockchain-as-a-service-baas) * [acloudguru.com: Storage services compared: AWS vs Azure vs GCP](https://acloudguru.com/blog/engineering/storage-showdown-aws-vs-azure-vs-gcp-cloud-comparison) * [thenewstack.io: Is a Multicloud Strategy Right for Your Organization?](https://thenewstack.io/is-a-multicloud-strategy-right-for-your-organization/) +* [betterprogramming.pub: AWS vs. Digital Ocean vs. Hetzner Cloud — Which Has the Best Value for Money?](https://betterprogramming.pub/aws-vs-digital-ocean-vs-hetzner-cloud-which-has-the-best-value-for-money-bd9cb3c06dee) ## Openshift as a Service * [Openshift.com pricing](https://www.openshift.com/products/pricing/) diff --git a/docs/pulumi.md b/docs/pulumi.md index 1b88361f..2918f301 100644 --- a/docs/pulumi.md +++ b/docs/pulumi.md @@ -16,4 +16,5 @@ - [travis.media: Pulumi Tutorial: Automate Kubernetes Deployments and Operations with this Complete Guide](https://travis.media/pulumi-tutorial-automate-kubernetes-operations/) - [pulumi.com: Announcing the Pulumi REST API](https://www.pulumi.com/blog/pulumi-rest-api/) - [thenewstack.io: Pulumi Releases a Kubernetes Operator](https://thenewstack.io/pulumi-releases-a-kubernetes-operator/) -- [siliconangle.com: Pulumi’s new registry aims to ease sharing and reusing cloud infrastructure building blocks](https://siliconangle.com/2021/10/18/pulumis-new-registry-makes-easy-share-reuse-cloud-infrastructure-building-blocks/) \ No newline at end of file +- [siliconangle.com: Pulumi’s new registry aims to ease sharing and reusing cloud infrastructure building blocks](https://siliconangle.com/2021/10/18/pulumis-new-registry-makes-easy-share-reuse-cloud-infrastructure-building-blocks/) +- [pulumi.com: Running Containers on ECS Fargate](https://www.pulumi.com/registry/packages/aws/how-to-guides/ecs-fargate/) Learn to build and publish a Docker container to a private ECR and spin up a load-balanced AWS ECS Fargate service in just a few lines up code in this tutorial. diff --git a/docs/python.md b/docs/python.md index 56a16c13..76c008b3 100644 --- a/docs/python.md +++ b/docs/python.md @@ -61,8 +61,6 @@ - [A beginner's guide to web development with Python 2.7 / Django 1.7](http://www.tangowithdjango.com/) - [I wish I knew these things when I learned Python](http://bugra.github.io/work/notes/2015-01-03/i-wish-i-knew-these-things-when-i-first-learned-python/) - [The Bottom-Line Single Main Difference Between Python 2 and 3](http://migrateup.com/main-difference-python-3/) -- [15 Essential Python Interview Questions](https://www.codementor.io/python/tutorial/essential-python-interview-questions) - - [Python mini-quiz](http://www.mypythonquiz.com/) - [How do you handle the ORM problem? When do you say YES or NO to using ORM?](http://www.vertabelo.com/blog/technical-articles/orms-under-the-hood) - [Don't Make Us Say We Told You So: virtualenv for New Pythonistas](http://pyvideo.org/video/3460/dont-make-us-say-we-told-you-so-virtualenv-for) - [commandlinefu.com: pip install into current directory without virtualenv](http://www.commandlinefu.com/commands/view/17656/pip-install-into-current-directory-without-virtualenv) @@ -104,7 +102,6 @@ - [tryolabs.com: Top 10 Python libraries of 2020](https://tryolabs.com/blog/2020/12/21/top-10-python-libraries-of-2020/) - [blog.logrocket.com: Django REST framework alternatives](https://blog.logrocket.com/django-rest-framework-alternatives/) - [towardsdatascience.com: Unexpected Size of Python Objects in Memory](https://towardsdatascience.com/the-strange-size-of-python-objects-in-memory-ce87bdfbb97f) How much memory does a Python object take on memory? -- [learnsteps.com: DevOps Interview Questions: Important Python questions](https://www.learnsteps.com/devops-interview-questions-important-python-questions/) - [aigents.co: Data Structures and Python 🌟](https://aigents.co/blog/coding-tutorial/data-structures-and-python) - [doppler.com: Using Environment Variables in Python for App Configuration 🌟](https://doppler.com/blog/environment-variables-in-python) Learn how experienced developers use environment variables in Python, including managing default values and typecasting. - [src-r-r.github.io: How To Property Set Up Python Logging With A Command Line Program](https://src-r-r.github.io/articles/how_to_log_with_a_python_cli_program/) @@ -199,6 +196,17 @@ - [towardsdatascience.com: requirements.txt vs setup.py in Python](https://towardsdatascience.com/requirements-vs-setuptools-python-ae3ee66e28af) Understanding the purpose of requirements.txt, setup.py and setup.cfg in Python when developing and distributing packages - [==realpython.com: Building Lists With Python's .append()==](https://realpython.com/courses/building-lists-with-python-append/) - [freecodecamp.org: Python List .remove() - How to Remove an Item from a List in Python](https://www.freecodecamp.org/news/python-list-remove-how-to-remove-an-item-from-a-list-in-python/) +- [blog.devgenius.io: Introduction to python dictionaries](https://blog.devgenius.io/introduction-to-python-dictionaries-89045c9bf315) +- [levelup.gitconnected.com: Fully Explained Array Data Structure in Python](https://levelup.gitconnected.com/fully-explained-array-data-structure-in-python-67dd9a12b695) Handy concepts in data structures for data science and machine learning +- [freecodecamp.org: Else-If in Python – Python If Statement Example Syntax](https://www.freecodecamp.org/news/else-if-in-python-python-if-statement-example-syntax/) +- [towardsdatascience.com: Work with SQL in Python Using SQLAlchemy and Pandas](https://towardsdatascience.com/work-with-sql-in-python-using-sqlalchemy-and-pandas-cd7693def708) Extract SQL tables, insert, update, and delete rows in SQL databases through SQLAlchemy +- [freecodecamp.org: Create a List in Python – Lists in Python Syntax](https://www.freecodecamp.org/news/create-a-list-in-python-lists-in-python-syntax/) +- [freecodecamp.org: How to SSH into a Docker Container – Secure Shell vs Docker Attach](https://www.freecodecamp.org/news/how-to-ssh-into-a-docker-container-secure-shell-vs-docker-attach/) +- [freecodecamp.org: Int Object is Not Iterable – Python Error [Solved]](https://www.freecodecamp.org/news/int-object-is-not-iterable-python-error-solved/) +- [freecodecamp.org: How to Use *args and **kwargs in Python](https://www.freecodecamp.org/news/args-and-kwargs-in-python/) +- [superfastpython.com: How to Identify a Deadlock in Python](https://superfastpython.com/thread-deadlock-in-python/) +- [towardsdatascience.com: Fall in Love with Your Environment Setup](https://towardsdatascience.com/fall-in-love-with-your-environment-setup-779dfbf047ba) A Python developer’s guide to the optimal setup for collaboration, production readiness and time saving +- [==towardsdatascience.com: You Don’t Need Sample Data, You Need Python Faker==](https://towardsdatascience.com/you-dont-need-sample-data-you-need-python-faker-fa87c2a119a9) An extendable Python library that generates fake data to “fill” your project ## PHP vs Python - [geekflare.com: PHP vs Python: A Comprehensive Comparison](https://geekflare.com/php-vs-python-comparison) @@ -258,6 +266,7 @@ ## FastAPI - [FastAPI 🌟](https://fastapi.tiangolo.com/) - [blog.adnansiddiqi.me: Create your first REST API in FastAPI 🌟](http://blog.adnansiddiqi.me/create-your-first-rest-api-in-fastapi/) A step by step guide creating high performance APIs in Python +- [freecodecamp.org: How to Create Microservices with FastAPI](https://www.freecodecamp.org/news/how-to-create-microservices-with-fastapi/) ## Python pip and pip's wheel - [wheel replaces Python's eggs](https://wheel.readthedocs.org) @@ -333,6 +342,7 @@ - [Pydeps 🌟](https://github.com/thebjorn/pydeps) Python Module Dependency graphs - [joke2k/faker 🌟](https://github.com/joke2k/faker) Faker is a Python package that generates fake data for you. Whether you need to bootstrap your database, create good-looking XML documents, fill-in your persistence to stress test it, or anonymize data taken from a production service, Faker is for you. - [makeuseof.com: 10 Useful Tools for Python Developers](https://www.makeuseof.com/python-developer-tools/) Whether you need Python tools for data science, machine learning, web development, or anything in between, this list has you covered. +- [dev.to: Code Quality Tools in Python](https://dev.to/dollardhingra/code-quality-tools-in-python-4k2a) ### Web Scraping with Python - [Scrapy](http://scrapy.org/) An open source and collaborative framework for extracting the data you need from websites. In a fast, simple, yet extensible way. diff --git a/docs/qa.md b/docs/qa.md index 53b19ae5..5ef64507 100644 --- a/docs/qa.md +++ b/docs/qa.md @@ -1,6 +1,5 @@ # QA/TestOps - Continuous Testing. Software Quality Test Automation - [Introduction](#introduction) -- [Interview Questions](#interview-questions) - [Blogs](#blogs) - [Testing Frameworks](#testing-frameworks) - [Release Testing](#release-testing) @@ -48,10 +47,7 @@ the #1 test automation community. * [==betterprogramming.pub: Why We Quit Unit Testing Classes to Focus On a Behavioral Approach==](https://betterprogramming.pub/quit-unit-testing-classes-and-use-a-behavior-oriented-approach-306a667f9a31) Why you should consider avoiding class-level tests, in favor of a behavior-oriented approach * [dev.to: Test-Driven-Development with Django: Unit Testing & Integration testing with Docker, Flask & Github Actions](https://dev.to/koladev/test-driven-development-with-django-unit-testing-integration-testing-with-docker-flask-github-actions-2047) * [smashingmagazine.com: Testing Pipeline 101 For Frontend Testing](https://www.smashingmagazine.com/2022/02/testing-pipeline-101-frontend-testing/) - -## Interview Questions -* [automationreinvented.blogspot.com: Top 40 API Automation testing interview question for SDET and Automation QA ?](https://automationreinvented.blogspot.com/2021/03/top-40-api-testing-interview-question.html) -* [automationreinvented.blogspot.com: Top 70 interview questions on Automation Testing-Selenium-TestNG Set-06? TestNG Tricky Interview questions 2021 for SDET-QAE?](https://automationreinvented.blogspot.com/2021/01/top-60-interview-questions-on.html) +* [infoq.com: Maintaining Software Quality with Microservices](https://www.infoq.com/presentations/microservices-software-quality/) ## Blogs - https://automationqahub.com/ @@ -99,6 +95,7 @@ the #1 test automation community. * [==reviewdog - A code review dog who keeps your codebase healthy.==](https://github.com/reviewdog/reviewdog) 🐶 Automated code review tool integrated with any code analysis tools regardless of programming language * [==dzone: Component Tests for Spring Cloud Microservices==](https://dzone.com/articles/component-tests-for-spring-cloud-microservices) In this tutorial, we discussed guidelines and considerations for Spring Cloud microservices component tests and provided a recipe for common use cases. * [CoolerVoid/codecat: CodeCat - Tool to help in static code analysis](https://github.com/CoolerVoid/codecat) CodeCat is an open-source tool to help you find/track user input sinks and security bugs using static code analysis. These points follow regex rules. +* [==beellz.hashnode.dev: Continuous Profiling in Kubernetes Using Pyroscope==](https://beellz.hashnode.dev/continuous-profiling-in-kubernetes-using-pyroscope) In this blog post, you will learn about continuous profiling, and then instrument a few microservices running on Kubernetes using an open-source tool called Pyroscope to find performance issues and bottlenecks in your code. ## Performance Testing - [devops.com: Best Practices for Application Performance Testing](https://devops.com/best-practices-for-application-performance-testing/) diff --git a/docs/recruitment.md b/docs/recruitment.md index bdf9775c..207bd010 100644 --- a/docs/recruitment.md +++ b/docs/recruitment.md @@ -50,6 +50,8 @@ - [devops.com: Great Resignation Spurs Interest in Tech Certifications](https://devops.com/great-resignation-spurs-interest-in-tech-certifications/) - [thewokesalaryman.com: Why people leave even the most high paying jobs 🌟](https://thewokesalaryman.com/2022/02/11/why-people-leave-even-the-most-high-paying-jobs/) - [sloanreview.mit.edu: Creating Good Jobs](https://sloanreview.mit.edu/article/creating-good-jobs/) Amid a wave of resignations across industries, organizational leaders must identify ways to create better, more desirable jobs that will help them hang on to employees. +- [forbes.com: To Avoid Regretting A New Job, Ask These Two Questions During The Interview](https://www.forbes.com/sites/markmurphy/2022/03/18/to-avoid-regretting-a-new-job-ask-these-two-questions-during-the-interview) +- [ideas.ted.com: How to find your sense of purpose at work](https://ideas.ted.com/want-to-discover-or-re-discover-your-sense-of-purpose-at-work-heres-how/) ## Articles in Spanish - [blogs.elconfidencial.com: El talento atrofiado: por qué en España escasean los profesionales de alto nivel](https://blogs.elconfidencial.com/tecnologia/tribuna/2021-06-02/talento-informatica-startups-silicon-valley-google_3112087/) @@ -68,6 +70,8 @@ - [xataka.com: La Gran Renuncia está ganando terreno en España, pero hay dos barreras: salarios bajos e indemnizaciones](https://www.xataka.com/empresas-y-economia/gran-renuncia-esta-ganando-terreno-espana-hay-dos-barreras-salarios-bajos-ley-laboral) - [codigonuevo.com: ¿Debería adaptarse el sueldo del teletrabajo al lugar en el que vivas?](https://www.codigonuevo.com/sociedad/deberia-adaptarse-sueldo-teletrabajo-lugar-vivas) Los salarios del teletrabajo podrían disminuir hasta un 15% en función de la ciudad en la que vives. - [lavanguardia.com: Cómo saber si tu jefe es un "ahuyenta talentos" que puede frustrar tu carrera](https://www.lavanguardia.com/vivo/psicologia/20220225/8079133/trabajo-laboral-jefe-talento-trabajadores-nbs.html) Muchos profesionales están comenzando a reflexionar sobre lo que realmente les satisface del trabajo y a qué tipo de líderes están dispuestos a seguir, porque algunos jefes no saben valorar el talento de sus empleados. +- [xataka.com: Me hice funcionario siendo ingeniero: qué me da la administración pública que no consigue la empresa privada](https://www.xataka.com/especiales/me-hice-funcionario-siendo-ingeniero-que-me-da-administracion-publica-que-no-consigue-empresa-privada) +- [genbeta.com: Menos de la mitad de los programadores tienen títulos universitarios. Cada vez más desarrolladores aprenden por su cuenta](https://www.genbeta.com/desarrollo/mitad-programadores-tienen-titulos-universitarios-cada-vez-desarrolladores-aprenden-su-cuenta) ## Recruitment Portals - [relocate.me](https://relocate.me/) Job relocation made easy. Find tech jobs w/ relocation packages @@ -207,6 +211,14 @@ + + + + + + + + @@ -229,6 +241,8 @@ ![you get a tech job](images/you_get_a_tech_job.jfif) ![my company gave me](images/my_company_gave_me.jfif) + + ![la gestion de uno mismo](images/la_gestion_de_uno_mismo.jpg) ## Videos diff --git a/docs/remote-tech-jobs.md b/docs/remote-tech-jobs.md index 21e0dc84..7febee6f 100644 --- a/docs/remote-tech-jobs.md +++ b/docs/remote-tech-jobs.md @@ -30,6 +30,7 @@ ## Spain - https://github.com/remote-es/remotes This is a repository listing companies which offer full-time remote jobs with Spanish contracts - https://bcneng.net +- [sincrogo.com: Teletrabajo desde España para el extranjero: ¿dónde hay que tributar?](https://sincrogo.com/blog/actualidad-fiscal-contable/teletrabajo-desde-espana-para-el-extranjero-donde-hay-que-tributar/) ## Tweets
diff --git a/docs/serverless.md b/docs/serverless.md index 324897d2..f4d684c3 100644 --- a/docs/serverless.md +++ b/docs/serverless.md @@ -42,6 +42,7 @@ * [fathomtech.io: Microservices vs. Serverless](https://fathomtech.io/blog/microservices-vs-serverless/) * [cloudnowtech.com: Kubernetes vs Serverless – How do you choose? 🌟](https://www.cloudnowtech.com/blog/kubernetes-vs-serverless-how-do-you-choose/) * [economictimes.indiatimes.com: Thoughtworks XConf Tech Talk Series: Serverless vs. Kubernetes when deploying microservices](https://economictimes.indiatimes.com/tech/technology/thoughtworks-xconf-tech-talk-series-serverless-vs-kubernetes-when-deploying-microservices/articleshow/89085544.cms) +* [acloudguru.com: Containers vs serverless: Which is right for you?](https://acloudguru.com/blog/engineering/containers-vs-serverless-which-is-right-for-you) ### Case Studies * [dashbird.io: Serverless Case Study – Coca-Cola](https://dashbird.io/blog/serverless-case-study-coca-cola/) diff --git a/docs/servicemesh.md b/docs/servicemesh.md index c38512a1..cf9529e3 100644 --- a/docs/servicemesh.md +++ b/docs/servicemesh.md @@ -109,6 +109,8 @@ - "Installed Linkerd in staging yesterday using Helm and Terraform. It was incredibly easy to setup and immediately helped me diagnose tricky latency issues between services. I have no idea why I didn’t do this sooner. Can’t wait to get this into production." - [linkerd.io: Benchmarking Linkerd and Istio: 2021 Redux](https://linkerd.io/2021/11/29/linkerd-vs-istio-benchmarks-2021/index.html) - [buoyant.io: Go directly to namespace jail: Locking down network traffic between Kubernetes namespaces](https://buoyant.io/2021/12/14/locking-down-network-traffic-between-kubernetes-namespaces) +- [linkerd.io: Announcing automated multi-cluster failover for Kubernetes](https://linkerd.io/2022/03/09/announcing-automated-multi-cluster-failover-for-kubernetes/) +- [thenewstack.io: Is Linkerd Winning the Service Mesh Race?](https://thenewstack.io/is-linkerd-winning-the-service-mesh-race/) ## Maesh Service Mesh - [Maesh](https://containo.us/maesh/) diff --git a/docs/sre.md b/docs/sre.md index c89b2d44..54fadc6c 100644 --- a/docs/sre.md +++ b/docs/sre.md @@ -2,8 +2,8 @@ - [SRE](#sre) - [SRE Tools](#sre-tools) - [Service Level Objectives (SLO)](#service-level-objectives-slo) - - [OpenSLO](#openslo) - - [Validate Service-Level Objectives of REST APIs Using Iter8](#validate-service-level-objectives-of-rest-apis-using-iter8) + - [OpenSLO](#openslo) + - [Validate Service-Level Objectives of REST APIs Using Iter8](#validate-service-level-objectives-of-rest-apis-using-iter8) - [Images](#images) - [Videos](#videos) - [Tweets](#tweets) @@ -70,6 +70,7 @@ - [devops.com: Top Nine Skills for SREs to Master 🌟](https://devops.com/top-nine-skills-for-sres-to-master/) - [devops.com: How SREs Benefit From Feature Flags](https://devops.com/how-sres-benefit-from-feature-flags/) - [toolbox.com: Site Reliability Engineering: What Is It and How Can It Help Scale Operations? 🌟](https://www.toolbox.com/tech/devops/articles/automating-sre-to-scale-operations/) Site Reliability Engineering (SRE) is an essential task that bridges the gap between developers and operations. Here’s how organizations can refine it further by leveraging automation. +- [==devops.com: SRE Vs. Platform Engineering: What’s the Difference?==](https://devops.com/sre-vs-platform-engineering-whats-the-difference/) ## SRE Tools - [thenewstack.io: The Site Reliability Engineering Tool Stack](https://thenewstack.io/the-site-reliability-engineering-tool-stack/) diff --git a/docs/tekton.md b/docs/tekton.md index e7b3d614..3d066a4e 100644 --- a/docs/tekton.md +++ b/docs/tekton.md @@ -35,6 +35,8 @@ * [sm43.medium.com: Tekton: Concepts of Triggers (Part 3)](https://sm43.medium.com/tekton-concepts-of-triggers-part-3-2ee17764addb) * [sm43.medium.com: Tekton: Building a Pipeline (Part 4)](https://sm43.medium.com/tekton-build-a-pipeline-part-4-baafd530b6fe) * [sm43.medium.com: Tekton: Triggering the Pipeline (Part 5)](https://sm43.medium.com/tekton-triggering-the-pipeline-part-5-dc38d73411fb) +* [==piotrminkowski.com: Canary Release on Kubernetes with Knative and Tekton==](https://piotrminkowski.com/2022/03/29/canary-release-on-kubernetes-with-knative-and-tekton/) +* [anadimisra.com: On Demand CI/CD with Serverless Tekton](https://www.anadimisra.com/post/on-demand-ci-cd-with-serverless-tekton) In this article, you will learn how to run Tekton with Terraform and EKS Fargate to build a serverless CI/CD platform ## Videos
diff --git a/docs/terraform.md b/docs/terraform.md index 62ddf1d6..93cb9bef 100644 --- a/docs/terraform.md +++ b/docs/terraform.md @@ -7,7 +7,6 @@ - [HashiCorp Cloud](#hashicorp-cloud) - [Blogs and Newsletters](#blogs-and-newsletters) - [Terraform](#terraform) - - [Interview Questions](#interview-questions) - [Terraform Cloud](#terraform-cloud) - [HCL](#hcl) - [CDK Cloud Development Kit Terraform](#cdk-cloud-development-kit-terraform) @@ -36,16 +35,18 @@ - [Terraform in Azure DevOps](#terraform-in-azure-devops) - [Terraform AKS Boilerplates](#terraform-aks-boilerplates) - [Terraform and OCI](#terraform-and-oci) - - [Terraform Provider for Elastic Cloud](#terraform-provider-for-elastic-cloud) - - [Terraform Vault Provider](#terraform-vault-provider) - [Terraform and Apache Kafka](#terraform-and-apache-kafka) - [Terraform and JMeter](#terraform-and-jmeter) - [Terraform Video Tutorials](#terraform-video-tutorials) - [CDK for Terraform](#cdk-for-terraform) - [Graph Visualization Software](#graph-visualization-software) - [Terraform Modules](#terraform-modules) + - [Terraform AWS Modules](#terraform-aws-modules) - [Segment AWS Stack Terraform Modules](#segment-aws-stack-terraform-modules) - [Terraform Providers](#terraform-providers) + - [Terraform Provider for Elastic Cloud](#terraform-provider-for-elastic-cloud) + - [Terraform Vault Provider](#terraform-vault-provider) + - [Terraform AzureRM](#terraform-azurerm) - [Terraform Code Quality. Terraform Quality Checks](#terraform-code-quality-terraform-quality-checks) - [Enforce Policy with Sentinel](#enforce-policy-with-sentinel) - [Reverse terraform with Terraformer](#reverse-terraform-with-terraformer) @@ -199,11 +200,7 @@ * [==middlewareinventory.com: Terraform import All AWS Security Groups – How to==](https://www.middlewareinventory.com/blog/terraform-import-securitygroup-aws/) In this post, we are going to see how to manage existing and already created AWS Security groups with Terraform. The new era of Infrastructure revolution has begun already and we already started provisioning, managing, administrating our Infra as a code with help of Configuration management tools like Ansible, Terraform, SaltStack etc. * [==middlewareinventory.com: Terraform For Each Examples – How to use for_each | Devops Junction==](https://www.middlewareinventory.com/blog/terraform-for-each-examples) * [==acloudguru.com: How to troubleshoot 5 common Terraform errors==](https://acloudguru.com/blog/engineering/how-to-troubleshoot-5-common-terraform-errors) - -### Interview Questions -- [interviewbit.com: Terraform Interview Questions](https://www.interviewbit.com/terraform-interview-questions/) -- [simplilearn.com: Top 40 Terraform Interview Questions and Answers for 2022](https://www.simplilearn.com/terraform-interview-questions-and-answers-article) -- [k21academy.com: Top Terraform Interview Questions & Answers [ Revised – 2022]](https://k21academy.com/terraform-iac/terraform-interview-questions/) +* [==medium.com/nerd-for-tech: Terraforming the GitOps Way !!!==](https://medium.com/nerd-for-tech/terraforming-the-gitops-way-9417cf4abf58) ### Terraform Cloud * [learn.hashicorp.com: Manage Private Environments with Terraform Cloud Agents](https://learn.hashicorp.com/tutorials/terraform/cloud-agents) @@ -228,7 +225,7 @@ ### Helm Charts in Terraform * [opensource.com: How I use Terraform and Helm to deploy the Kubernetes Dashboard 🌟](https://opensource.com/article/21/8/terraform-deploy-helm) Terraform can deploy Helm Charts. Is it right for you? -* [dev.to: Working with helm charts in Terraform](https://dev.to/crayon/working-with-helm-charts-in-terraform-49h1) +* [dev.to: Working with helm charts in Terraform](https://dev.to/crayon/working-with-helm-charts-in-terraform-49h1) In this tutorial, you will learn how to set up the Helm Terraform provider and deploy Helm charts with Terraform ### Terraform Infracost - [Infracost 🌟](https://github.com/infracost/infracost) If you use Terraform to provision your Kubernetes clusters, you might find infracost interesting. Infracost estimates hourly and monthly costs for a Terraform project. It helps you to see the cost breakdown and compare different deployment options upfront. @@ -348,6 +345,11 @@ * [medium.com/devgurus: Building production grade EKS clusters using Terraform](https://medium.com/devgurus/building-production-grade-eks-clusters-using-terraform-df016d239a54) * [medium.com/devops-mojo: Terraform — Provision Amazon EKS Cluster using Terraform](https://medium.com/devops-mojo/terraform-provision-amazon-eks-cluster-using-terraform-deploy-create-aws-eks-kubernetes-cluster-tf-4134ab22c594) * [calvineotieno010.medium.com: Automate Provisioning of Kubernetes Clusters on AWS with Terraform](https://calvineotieno010.medium.com/automate-provisioning-of-kubernetes-clusters-on-aws-with-terraform-f69c0572c2c7) +* [dev.to: Creating an EKS Cluster and Node Group with Terraform](https://dev.to/aws-builders/creating-an-eks-cluster-and-node-group-with-terraform-1lf6) + * [dev.to: Install & Manage Amazon EKS Add-ons with Terraform](https://dev.to/aws-builders/install-manage-amazon-eks-add-ons-with-terraform-2dea) + * Amazon VPC CNI + * CoreDNS + * Amazon EBS CSI ==} @@ -377,6 +379,7 @@ #### Terraform in Azure DevOps - [==adamtheautomator.com: How to Build Infrastructure with Terraform in Azure DevOps== 🌟](https://adamtheautomator.com/terraform-azure-devops/) +- [faun.pub: Azure DevOps: Deploying Azure Resources using Terraform](https://faun.pub/azure-devops-deploying-azure-resources-using-terraform-1f2fe46c6aa0) Infrastructure as Code | Terraform | Azure | Azure DevOps {== @@ -388,40 +391,53 @@ - [github.com/kuhlman-labs/terraform-azurerm-landing-zone](https://github.com/kuhlman-labs/terraform-azurerm-landing-zone) A curated collection of Terraform azurerm modules - [hashicorp.com: Build a Quick AKS Cluster the Easy Way with Terraform Cloud 🌟](https://www.hashicorp.com/blog/build-a-quick-aks-cluster-the-easy-way-with-terraform-cloud) - [github.com/stacksimplify/azure-aks-kubernetes-masterclass 🌟](https://github.com/stacksimplify/azure-aks-kubernetes-masterclass) + - [==stacksimplify.com/azure-aks: Kubernetes On Cloud Roadmap==](https://stacksimplify.com/azure-aks/) - [**Boilerplate: 25-Azure-DevOps-Terraform-Azure-AKS** 🌟🌟🌟](https://github.com/stacksimplify/azure-aks-kubernetes-masterclass/tree/master/25-Azure-DevOps-Terraform-Azure-AKS) - [PDF presentation 🌟](https://github.com/stacksimplify/azure-aks-kubernetes-masterclass/tree/master/ppt-presentation) - ``` tf - # 01-main.tf - resource "azurerm_virtual_network" "example" { # (1) - name = "${var.environment}-network" - location = azurerm_resource_group.aks_rg.location - resource_group_name = azurerm_resource_group.aks_rg.name - address_space = ["10.x.x.0/22"] - } - resource "azurerm_subnet" "internal" { # (2) - name = "internal" - virtual_network_name = azurerm_virtual_network.example.name - resource_group_name = azurerm_resource_group.aks_rg.name - address_prefixes = ["10.x.x.0/24"] - } - ``` - - 1. :man_raising_hand: VNet - 2. :man_raising_hand: Subnet nodes (and pods with Azure CNI network plugin) - ``` tf # 07-aks-cluster.tf - network_profile { # (3) + + # Network Profile + # Kubenet is a kubernetes network configuration plugin for your AKS cluster. Nodes get an IP address from + # the AKS subnet, and pods receive an IP address from a separate address space entirely. The source IP address + # of the traffic is NAT'd to the node's IP address. + + # With kubenet there's NO Pod-to-Pod communication because they don't have their own public IPs. + # User Defined Routing (UDR) and IP forwarding is used for communication between pods across nodes. + + # Kubenet is the preferred method since you get more pods per node and the AKS Cluster scales to a bigger number. + # With kubenet Max Number of Pods per Node: 110 + # With Kubenet and CIDR =/24 : 251 nodes * 110 pods per node = 27.610 pods + # With Azure CNI (instead of kubenet) and CIDR =/24 : 8 nodes * 30 pods per node = 240 pods + + # If we have limited IP addresses to work with, we can fit more pods in the limited IP address space because we can + # fit more pods per node. + + # The Service CIDR, Pod CIDR, and Docker Bridge Access can be any address range. + # The DNS Service IP must be any IP address that's within the Service CIDR address range. + + # Network settings (service_cidr, pod_cidr, docker_bridge_cidr, dns_service_ip) are commented. The below values + # correspond to the applied default values when these settings are note set up. + + # Default network settings with kubenet when they are not configured: + # Azure AKS VNet = "10.0.0.0/8" + # Azure AKS Subnet = "10.240.0.0/16" + # service_cidr = "10.0.0.0/16" + # pod_cidr = "10.244.0.0/16" + # docker_bridge_cidr = "172.17.0.1/16" # Default. You can reuse this range across different AKS Clusters + # dns_service_ip = "10.0.0.10" + + network_profile { # (1) load_balancer_sku = "Standard" - network_plugin = "azure" # Azure CNI because windows node pools are not supported by kubenet (unfortunately) + network_plugin = "azure" # windows node pools are not supported by kubenet, instead use Azure CNI network plugin service_cidr = "10.x.x.0/24" dns_service_ip = "10.x.x.10" docker_bridge_cidr = "172.17.0.1/16" # Default. You can reuse this range across different AKS clusters. } ``` - 3. :man_raising_hand: Network Profile + 1. :man_raising_hand: Network Profile - [Azure-Samples/private-aks-cluster-terraform-devops 🌟](https://github.com/Azure-Samples/private-aks-cluster-terraform-devops) **This sample shows how to create a private AKS cluster using Terraform and Azure DevOps.** - [build5nines.com: Terraform: Create an AKS Cluster 🌟](https://build5nines.com/terraform-create-an-aks-cluster/) @@ -433,13 +449,6 @@ ==} -### Terraform Provider for Elastic Cloud -- https://github.com/elastic/terraform-provider-ec -- [infoq.com: Elastic Releases Terraform Providers for the Elastic Stack and Elastic Cloud](https://www.infoq.com/news/2022/01/elastic-terraform/) - -### Terraform Vault Provider -- [learn.hashicorp.com: Codify Management of Vault Enterprise Using Terraform](https://learn.hashicorp.com/tutorials/vault/codify-mgmt-enterprise) - ### Terraform and Apache Kafka - [medium: From AWS CloudFormation to Terraform: Migrating Apache Kafka](https://medium.com/riskified-technology/from-aws-cloudformation-to-terraform-migrating-apache-kafka-32bdabdbaa59) @@ -464,6 +473,9 @@ - [offensive-terraform.github.io: Offensive Terraform Modules 🌟](https://offensive-terraform.github.io/offensive-terraform.github.io/) Automated multi step offensive attack modules with Infrastructure as Code(IAC) - [digitalocean.com: How To Build a Custom Terraform Module](https://www.digitalocean.com/community/tutorials/how-to-build-a-custom-terraform-module) +### Terraform AWS Modules +- [==github.com/terraform-aws-modules==](https://github.com/terraform-aws-modules) **Collection of Terraform AWS modules supported by the community** + ### Segment AWS Stack Terraform Modules - [The Segment AWS Stack](https://segment.com/blog/the-segment-aws-stack/) - [segmentio/stack](https://github.com/segmentio/stack) A set of Terraform modules for configuring production infrastructure with AWS @@ -473,6 +485,16 @@ - [mitchellh/terraform-provider-multispace](https://github.com/mitchellh/terraform-provider-multispace) Terraform Provider for cascading runs across multiple workspaces. - [kyma-incubator/terraform-provider-kind: Terraform Provider for kind (Kubernetes IN Docker)](https://github.com/kyma-incubator/terraform-provider-kind) The Terraform Provider for kind enables Terraform to provision local Kubernetes clusters on base of Kubernetes IN Docker (kind). +### Terraform Provider for Elastic Cloud +- https://github.com/elastic/terraform-provider-ec +- [infoq.com: Elastic Releases Terraform Providers for the Elastic Stack and Elastic Cloud](https://www.infoq.com/news/2022/01/elastic-terraform/) + +### Terraform Vault Provider +- [learn.hashicorp.com: Codify Management of Vault Enterprise Using Terraform](https://learn.hashicorp.com/tutorials/vault/codify-mgmt-enterprise) + +### Terraform AzureRM +- [hashicorp.com: Terraform AzureRM 3.0 Brings Enhanced Azure Function Support](https://www.hashicorp.com/blog/terraform-azurerm-3-0-brings-enhanced-azure-function-support) + ## Terraform Code Quality. Terraform Quality Checks - [adinermie.com: Publishing GitHub Super-Linter Terraform Quality Checks to Azure DevOps Pipelines](https://adinermie.com/publishing-github-super-linter-terraform-quality-checks-to-azure-devops-pipelines/) * [adinermie.com: Publishing TFSec Terraform Quality Controls to Azure DevOps Pipelines 🌟](https://adinermie.com/publishing-tfsec-terraform-quality-controls-to-azure-devops-pipelines/) @@ -517,6 +539,7 @@ - [medium: Terragrunt cheat sheet](https://medium.com/geekculture/terragrunt-cheat-sheet-bedafbf9d61f) **What is Terragrunt?** Terragrunt is a framework on top of Terraform with some new tools out-of-the-box. Thanks to some new files *.hcl and new keywords, you can share variables across terraform modules very easily. - [pie-r/terragrunt-vs-terraspace](https://github.com/pie-r/terragrunt-vs-terraspace) - [gruntwork-io/terragrunt-infrastructure-live-example](https://github.com/gruntwork-io/terragrunt-infrastructure-live-example) A repo used to show examples file/folder structures you can use with Terragrunt and Terraform +- [==medium.com/predictivehire: Why we should use Terraform and Terragrunt to manage Kubernetes (with example code)==](https://medium.com/predictivehire/why-we-should-use-terraform-and-terragrunt-to-manage-kubernetes-with-example-code-d96aac2ff25a) ### Terraspace - [Terraspace.cloud](https://terraspace.cloud/) Terraspace is a Terraform Framework that optimizes for infrastructure-as-code happiness. It provides an organized structure, conventions over configurations, keeps your code DRY, and adds convenient tooling. Terraspace makes working with Terraform easier and more fun. @@ -555,5 +578,7 @@ + +
diff --git a/docs/test-automation-frameworks.md b/docs/test-automation-frameworks.md index 44b5130f..c20578ca 100644 --- a/docs/test-automation-frameworks.md +++ b/docs/test-automation-frameworks.md @@ -29,7 +29,6 @@ - [youtube: execution test Selenium + Grafana + Jenkins](https://www.youtube.com/watch?v=vDj5IsWjU0A) - [lambdatest.com: Why Selenium Grid Is Ideal For Automated Browser Testing?](https://www.lambdatest.com/blog/why-selenium-grid-is-ideal-for-automated-browser-testing/) - [lambdatest.com: Top 27 Best Practices For Selenium Test Automation](https://www.lambdatest.com/blog/27-best-practices-selenium-test-automation/) -- [automationreinvented.blogspot.com: Top 30 Interview Questions on Automation Testing - Selenium for SDET/Automation QA?](https://automationreinvented.blogspot.com/2020/06/top-30-interview-questions-on.html) - [lambdatest.com: Complete Guide To Access Forms In Selenium With Java](https://www.lambdatest.com/blog/complete-guide-to-access-forms-in-selenium-with-java/) - [lambdatest.com: Selenium IDE: What Is It? & Why Is It Must For Every QA?](https://www.lambdatest.com/blog/selenium-ide-what-is-it-why-is-it-must-for-every-qa/) - [qautomation.blog: How to run selenium script in JMeter](https://qautomation.blog/2019/05/07/how-to-run-selenium-script-in-jmeter/) diff --git a/docs/visual-studio.md b/docs/visual-studio.md index c490351c..050f9332 100644 --- a/docs/visual-studio.md +++ b/docs/visual-studio.md @@ -57,6 +57,9 @@ * [blog.openreplay.com: 8 Cool VS Code tips to make your workspace more personal](https://blog.openreplay.com/8-cool-vs-code-tips-to-make-your-workspace-more-personal) * [dev.to: Visual Studio Code - Tips & Tricks - Command Palette and its friends](https://dev.to/this-is-learning/visual-studio-code-tips-tricks-command-palette-and-its-friends-2bhi) * [betterprogramming.pub: How To Update Your GitHub Repository in Visual Studio Code](https://betterprogramming.pub/how-to-update-your-github-repository-in-visual-studio-code-7bb9e8549cea) An overview to clone a repository, push changes, and make pull requests in VS code +* [dev.to/this-is-learning: Visual Studio Code - Tips & Tricks - Snippets](https://dev.to/this-is-learning/visual-studio-code-tips-tricks-snippets-5041) +* [dev.to/jcofman: Make VS Code better by editing and updating some settings](https://dev.to/jcofman/make-vs-code-better-by-editing-and-updating-some-settings-4m9a) +* [pythonsimplified.com: How to SSH into EC2 from VS Code](https://pythonsimplified.com/how-to-ssh-into-ec2-from-vs-code/) ### Updates * [VSCode Updates](https://code.visualstudio.com/updates) @@ -98,6 +101,7 @@ A simple extension to make indentation more readable * [dzone.com: 10 VS Code Extensions to Fight Technical Debt](https://dzone.com/articles/10-vs-code-extensions-to-fight-technical-debt) The best engineering teams I’ve talked to use the right tools to continuously refactor code, improve their codebase communication, and address technical debt. * [dev.to: Superb VSCode extensions changing your coding life](https://dev.to/duckinm/superb-vscode-extensions-changing-your-coding-life-2cmb) * [c-sharpcorner.com: The Best VS Code Extensions For Remote Working](https://www.c-sharpcorner.com/article/the-best-vs-code-extensions-for-remote-working/) +* [freecodecamp.org: VS Code Extensions to Increase Developer Productivity](https://www.freecodecamp.org/news/vs-code-extensions-to-increase-developer-productivity/) #### More Extensions * [Prettier ESLint](https://marketplace.visualstudio.com/items?itemName=rvest.vs-code-prettier-eslint) Extension to format JavaScript code using prettier-eslint package @@ -135,6 +139,8 @@ A simple extension to make indentation more readable * [==snyk.io: Securing your open source dependencies with the Snyk Visual Studio Code extension==](https://snyk.io/blog/securing-open-source-dependencies-snyk-visual-studio-code-extension/) * [prisma.io: Improving the Prisma Visual Studio Code Extension with WebAssembly 🌟](https://www.prisma.io/blog/vscode-extension-prisma-rust-webassembly) Prisma helps app developers build faster and make fewer errors with an open source database toolkit for PostgreSQL, MySQL, SQL Server, and SQLite. Central to Prisma is the schema - __a declarative way to define your app's data models and their relations that's human-readable__. And you don't have to painstakingly create it from scratch if you already have a database - prisma introspect takes care of that. * [==IAM Legend==](https://marketplace.visualstudio.com/items?itemName=SebastianBille.iam-legend) IAM policy actions autocomplete, documentation & wildcard resolution. Supports Serverless Framework, AWS SAM, CloudFormation and Terraform. +* [GitLive](https://marketplace.visualstudio.com/items?itemName=TeamHub.teamhub) Extend VS Code with real-time collaborative superpowers + * [dev.to/gitlive: GitLive now works with any Git repository in VS Code!](https://dev.to/gitlive/gitlive-now-works-with-any-git-repository-in-vs-code-304o) #### More Extensions (Blogs) * [Become a VS Code Ninja with these Extensions and Tools [2020]](https://dev.to/vikrantnegi/become-a-vs-code-ninja-with-these-extensions-and-tools-2020-1119) diff --git a/docs/yaml.md b/docs/yaml.md index a59050dc..a41d52cb 100644 --- a/docs/yaml.md +++ b/docs/yaml.md @@ -6,7 +6,7 @@ - [Other YAML Tools. How to create Kubernetes YAML files](#other-yaml-tools-how-to-create-kubernetes-yaml-files) - [Kubernetes examples](#kubernetes-examples) - [Helm and Kustomize](#helm-and-kustomize) -- [Templating JSON Files](#templating-json-files) +- [JSON. Templating JSON Files](#json-templating-json-files) - [JSON in Ansible](#json-in-ansible) - [JSON formatting with jq](#json-formatting-with-jq) - [Kubernetes JSON Schemas](#kubernetes-json-schemas) @@ -73,7 +73,7 @@ ### Helm and Kustomize - [dex.dev: YAML Templating Solutions: Helm & Kustomize](https://www.dex.dev/dex-videos/templating-solutions) Writing config files by hand is like coding with Notepad instead of an IDE. Let's find a better way, and take an overview of the popular solutions Helm & Kustomize. -## Templating JSON Files +## JSON. Templating JSON Files - [wikipedia: JSON](https://en.wikipedia.org/wiki/JSON) - [json.org: Introducing JSON](https://www.json.org/json-en.html) - [Jsonnet](https://jsonnet.org/) A data templating language for app and tool developers @@ -83,6 +83,10 @@ - [buger/jsonparser](https://github.com/buger/jsonparser) One of the fastest alternative JSON parser for Go that does not require schema - [dev.to: The JSON trick 25% of Python devs don't know about](https://dev.to/codereviewdoctor/the-json-trick-25-of-python-devs-dont-know-about-including-devs-at-microsoft-sentry-unicef-and-more-4h10) Reading and writing JSON files in Python. - [dev.to: Convert nested JSON to simple JSON in Javascript](https://dev.to/urstrulyvishwak/convert-nested-json-to-simple-json-in-javascript-4a34) +- [pythonspeed.com: Processing large JSON files in Python without running out of memory](https://pythonspeed.com/articles/json-memory-streaming/) +- [thenewstack.io: Why (and How) You Should Manage JSON with SQL](https://thenewstack.io/why-and-how-you-should-manage-json-with-sql/) +- [betterprogramming.pub: How to Make JSON and Python Talk to Each Other](https://betterprogramming.pub/how-to-make-json-and-python-talk-to-each-other-41531d58e59d) Processing and creating JSON data in Python +- [betterprogramming.pub: Exploring JSON, JSON5, and Circular References](https://betterprogramming.pub/exploring-json-json5-and-circular-references-2b5b0c5de532) An in-depth guide on JavaScript Object Notation (JSON) ### JSON in Ansible - [opensource.com: 5 ways to process JSON data in Ansible 🌟](https://opensource.com/article/21/4/process-json-data-ansible) Structured data is friendly for automation, and you can take full advantage of it with Ansible. diff --git a/mkdocs.yml b/mkdocs.yml index 47136220..00990ded 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -189,6 +189,7 @@ nav: - Demos, Boilerplates & Screencasts: demos.md - Cloud: - Public Cloud Solutions: public-cloud-solutions.md + - Private Cloud Solutions: private-cloud-solutions.md - Edge Computing: edge-computing.md - AWS Cloud: - AWS: aws.md @@ -254,6 +255,7 @@ nav: - Work From Home: workfromhome.md - Refs+: - Other Awesome Lists: other-awesome-lists.md + - Interview Questions: interview-questions.md - Subreddits: newsfeeds.md - E-Learning: elearning.md - Digital Money: digital-money.md