diff --git a/Predictions/Human Resources - Full.ipynb b/Predictions/Human Resources - Full.ipynb deleted file mode 100644 index 93ba1b6..0000000 --- a/Predictions/Human Resources - Full.ipynb +++ /dev/null @@ -1,2888 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "a081d1b8", - "metadata": {}, - "source": [ - "# Table of Contents: \n", - "* [Introduction](#intro)\n", - "* [Read The Data](#readdata)\n", - "* [Feature Engineering Part I - Handling Missing Values](#misvalues)\n", - "* [Feature Engineering Part II - Dictionary](#dictio)\n", - "* [Feature Engineering Part III - Reformatting](#reform)\n", - "* [Answering The Questions](#ans)\n", - " * [Is there any relationship between who a person works for and their performance score?](#question1)\n", - " * [What is the overall diversity profile of the organization?](#question2)\n", - " * [Can we predict who is going to terminate and who isn't? What level of accuracy can we achieve on this?](#question3)\n", - " * [Are there areas of the company where pay is not equitable?](#question4)\n", - " * [What are our best recruiting sources if we want to ensure a diverse organization](#question5)" - ] - }, - { - "cell_type": "markdown", - "id": "05deb58c", - "metadata": {}, - "source": [ - "# Introduction \n", - "Hi Everyone! Today I'll demonstrate my workflow to analyze a **Kaggle** dataset called `Human Resources`. Read more about it [here.](https://www.kaggle.com/datasets/rhuebner/human-resources-data-set)\n", - "\n", - "The table of contents provide an outline to what we're going from start to finish, and the questions answered in this notebook are also in the table of contents." - ] - }, - { - "cell_type": "markdown", - "id": "bd677831", - "metadata": {}, - "source": [ - "# Read The Data \n", - "We begin by grabbing the data and import the necessary libraries. You can grab the data locally, from kaggle, or use the existing link as I've uploaded the csv into my github repo." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "ea2728d9", - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "import pandas as pd" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "b31f6f9b", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
Employee_NameEmpIDMarriedIDMaritalStatusIDGenderIDEmpStatusIDDeptIDPerfScoreIDFromDiversityJobFairIDSalary...ManagerNameManagerIDRecruitmentSourcePerformanceScoreEngagementSurveyEmpSatisfactionSpecialProjectsCountLastPerformanceReview_DateDaysLateLast30Absences
0Adinolfi, Wilson K10026001154062506...Michael Albert22.0LinkedInExceeds4.60501/17/201901
1Ait Sidi, Karthikeyan100841115330104437...Simon Roup4.0IndeedFully Meets4.96362/24/2016017
2Akinkuolie, Sarah10196110553064955...Kissy Sullivan20.0LinkedInFully Meets3.02305/15/201203
3Alagbe,Trina10088110153064991...Elijiah Gray16.0IndeedFully Meets4.84501/3/2019015
4Anderson, Carol10069020553050825...Webster Butler39.0Google SearchFully Meets5.00402/1/201602
\n", - "

5 rows × 36 columns

\n", - "
" - ], - "text/plain": [ - " Employee_Name EmpID MarriedID MaritalStatusID GenderID \\\n", - "0 Adinolfi, Wilson K 10026 0 0 1 \n", - "1 Ait Sidi, Karthikeyan 10084 1 1 1 \n", - "2 Akinkuolie, Sarah 10196 1 1 0 \n", - "3 Alagbe,Trina 10088 1 1 0 \n", - "4 Anderson, Carol 10069 0 2 0 \n", - "\n", - " EmpStatusID DeptID PerfScoreID FromDiversityJobFairID Salary ... \\\n", - "0 1 5 4 0 62506 ... \n", - "1 5 3 3 0 104437 ... \n", - "2 5 5 3 0 64955 ... \n", - "3 1 5 3 0 64991 ... \n", - "4 5 5 3 0 50825 ... \n", - "\n", - " ManagerName ManagerID RecruitmentSource PerformanceScore \\\n", - "0 Michael Albert 22.0 LinkedIn Exceeds \n", - "1 Simon Roup 4.0 Indeed Fully Meets \n", - "2 Kissy Sullivan 20.0 LinkedIn Fully Meets \n", - "3 Elijiah Gray 16.0 Indeed Fully Meets \n", - "4 Webster Butler 39.0 Google Search Fully Meets \n", - "\n", - " EngagementSurvey EmpSatisfaction SpecialProjectsCount \\\n", - "0 4.60 5 0 \n", - "1 4.96 3 6 \n", - "2 3.02 3 0 \n", - "3 4.84 5 0 \n", - "4 5.00 4 0 \n", - "\n", - " LastPerformanceReview_Date DaysLateLast30 Absences \n", - "0 1/17/2019 0 1 \n", - "1 2/24/2016 0 17 \n", - "2 5/15/2012 0 3 \n", - "3 1/3/2019 0 15 \n", - "4 2/1/2016 0 2 \n", - "\n", - "[5 rows x 36 columns]" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "data_original = pd.read_csv(\"https://raw.githubusercontent.com/youronlydimwit/Data_ScienceUse_Cases/main/Predictions/Data/HRDataset_v14.csv\")\n", - "data_original.head()" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "c9a4cb20", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "RangeIndex: 311 entries, 0 to 310\n", - "Data columns (total 36 columns):\n", - " # Column Non-Null Count Dtype \n", - "--- ------ -------------- ----- \n", - " 0 Employee_Name 311 non-null object \n", - " 1 EmpID 311 non-null int64 \n", - " 2 MarriedID 311 non-null int64 \n", - " 3 MaritalStatusID 311 non-null int64 \n", - " 4 GenderID 311 non-null int64 \n", - " 5 EmpStatusID 311 non-null int64 \n", - " 6 DeptID 311 non-null int64 \n", - " 7 PerfScoreID 311 non-null int64 \n", - " 8 FromDiversityJobFairID 311 non-null int64 \n", - " 9 Salary 311 non-null int64 \n", - " 10 Termd 311 non-null int64 \n", - " 11 PositionID 311 non-null int64 \n", - " 12 Position 311 non-null object \n", - " 13 State 311 non-null object \n", - " 14 Zip 311 non-null int64 \n", - " 15 DOB 311 non-null object \n", - " 16 Sex 311 non-null object \n", - " 17 MaritalDesc 311 non-null object \n", - " 18 CitizenDesc 311 non-null object \n", - " 19 HispanicLatino 311 non-null object \n", - " 20 RaceDesc 311 non-null object \n", - " 21 DateofHire 311 non-null object \n", - " 22 DateofTermination 104 non-null object \n", - " 23 TermReason 311 non-null object \n", - " 24 EmploymentStatus 311 non-null object \n", - " 25 Department 311 non-null object \n", - " 26 ManagerName 311 non-null object \n", - " 27 ManagerID 303 non-null float64\n", - " 28 RecruitmentSource 311 non-null object \n", - " 29 PerformanceScore 311 non-null object \n", - " 30 EngagementSurvey 311 non-null float64\n", - " 31 EmpSatisfaction 311 non-null int64 \n", - " 32 SpecialProjectsCount 311 non-null int64 \n", - " 33 LastPerformanceReview_Date 311 non-null object \n", - " 34 DaysLateLast30 311 non-null int64 \n", - " 35 Absences 311 non-null int64 \n", - "dtypes: float64(2), int64(16), object(18)\n", - "memory usage: 87.6+ KB\n" - ] - } - ], - "source": [ - "data_original.info()" - ] - }, - { - "cell_type": "markdown", - "id": "79569d4f", - "metadata": {}, - "source": [ - "# Feature Engineering Part I - Handling Missing Values \n", - "As of the information from `df.info()` above, we can see that out of 311 rows of data, column `ManagerID` and `DateofTermination` has missing values. We will try to analyze and handle them.\n", - "\n", - "[Back To Top](#top)\n", - "\n", - "## Missing Values in ManagerName" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "2a4d839d", - "metadata": {}, - "outputs": [], - "source": [ - "# Copy the data dataframe as df\n", - "df = data_original.copy()" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "f1237188", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
Employee_NameEmpIDMarriedIDMaritalStatusIDGenderIDEmpStatusIDDeptIDPerfScoreIDFromDiversityJobFairIDSalary...ManagerNameManagerIDRecruitmentSourcePerformanceScoreEngagementSurveyEmpSatisfactionSpecialProjectsCountLastPerformanceReview_DateDaysLateLast30Absences
19Becker, Scott10277001353053250...Webster ButlerNaNLinkedInFully Meets4.20401/11/2019013
30Buccheri, Joseph10184001153065288...Webster ButlerNaNGoogle SearchFully Meets3.19302/1/201909
44Chang, Donovan E10154001153060380...Webster ButlerNaNLinkedInFully Meets3.80501/14/201904
\n", - "

3 rows × 36 columns

\n", - "
" - ], - "text/plain": [ - " Employee_Name EmpID MarriedID MaritalStatusID GenderID \\\n", - "19 Becker, Scott 10277 0 0 1 \n", - "30 Buccheri, Joseph 10184 0 0 1 \n", - "44 Chang, Donovan E 10154 0 0 1 \n", - "\n", - " EmpStatusID DeptID PerfScoreID FromDiversityJobFairID Salary ... \\\n", - "19 3 5 3 0 53250 ... \n", - "30 1 5 3 0 65288 ... \n", - "44 1 5 3 0 60380 ... \n", - "\n", - " ManagerName ManagerID RecruitmentSource PerformanceScore \\\n", - "19 Webster Butler NaN LinkedIn Fully Meets \n", - "30 Webster Butler NaN Google Search Fully Meets \n", - "44 Webster Butler NaN LinkedIn Fully Meets \n", - "\n", - " EngagementSurvey EmpSatisfaction SpecialProjectsCount \\\n", - "19 4.20 4 0 \n", - "30 3.19 3 0 \n", - "44 3.80 5 0 \n", - "\n", - " LastPerformanceReview_Date DaysLateLast30 Absences \n", - "19 1/11/2019 0 13 \n", - "30 2/1/2019 0 9 \n", - "44 1/14/2019 0 4 \n", - "\n", - "[3 rows x 36 columns]" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Give a brief view of ManagerID where it has Null / NaN values.\n", - "df[df['ManagerID'].isna()].head(3)" - ] - }, - { - "cell_type": "markdown", - "id": "f8bcd9b7", - "metadata": {}, - "source": [ - "It turns out that the ManagerName is shown as `Webster Butler`. One can wonder if the name `Webster Butler` is only showing for the NaN Values or not. To prove this true or not, we can display the `ManagerID` where the `ManagerName` is containing `Webster Butler`." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "77a5f506", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([39., nan])" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Show All ManagerID where ManagerName is Webster Butler\n", - "df[df['ManagerName'] == 'Webster Butler']['ManagerID'].unique()" - ] - }, - { - "cell_type": "markdown", - "id": "6eea7613", - "metadata": {}, - "source": [ - "Okay, so apparently `Webster Butler` definitely has Null / NaN Values. But we can try to reverse this code." - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "45a2bb08", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array(['Webster Butler'], dtype=object)" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Show all ManagerName where ManagerID is NaN / Null\n", - "df[df['ManagerID'].isna()]['ManagerName'].unique()" - ] - }, - { - "cell_type": "markdown", - "id": "3ab9f5be", - "metadata": {}, - "source": [ - "And there it is. The NaN / Null values are only present where `ManagerName` is `Webster Butler`. Now we fill those values as the already existing number for `Webster Butler`, 39." - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "d0d1dc07", - "metadata": {}, - "outputs": [], - "source": [ - "# Fill every NaN / Null with 39\n", - "df['ManagerID'].fillna(39, inplace=True)" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "51a3e162", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([39.])" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Optional Check if Webster Butler still has NaN / Null values\n", - "df[df['ManagerName'] == 'Webster Butler']['ManagerID'].unique()" - ] - }, - { - "cell_type": "markdown", - "id": "429b84a4", - "metadata": {}, - "source": [ - "## Missing values in DateofTermination\n", - "As common knowledge, most employees in the company is still present, and only a handful or a percentage of people that have left the company, has `DateofTermination` value.\n", - "\n", - "There are many ways to handle this, but in this workflow, I decided to take a look at `TermReason` column. Why? Because that column specifies why employees are terminated / resigned, but it doesn't have any NaN / Null values." - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "18fd4a35", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array(['N/A-StillEmployed', 'career change', 'hours', 'return to school',\n", - " 'Another position', 'unhappy', 'attendance', 'performance',\n", - " 'Learned that he is a gangster', 'retiring',\n", - " 'relocation out of area', 'more money', 'military',\n", - " 'no-call, no-show', 'Fatal attraction',\n", - " 'maternity leave - did not return', 'medical issues',\n", - " 'gross misconduct'], dtype=object)" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Show unique values in TermReason\n", - "df['TermReason'].unique()" - ] - }, - { - "cell_type": "markdown", - "id": "cc0cde74", - "metadata": {}, - "source": [ - "As you can see, the value `N/A-StillEmployed` exists for people that are still working for the company. We can and will use this information, and purposefully discard the `DateofTermination` column." - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "8abe8339", - "metadata": {}, - "outputs": [], - "source": [ - "# Drop column\n", - "df = df.drop(['DateofTermination'], axis=1)" - ] - }, - { - "cell_type": "markdown", - "id": "54a648a1", - "metadata": {}, - "source": [ - "# Feature Engineering Part II - Dictionary \n", - "For this part, I would like to store information in dictionaries for metadata purposes. Because the values will be encoded later, I would like to know what the encoded values were, as textual data.\n", - "\n", - "[Back To Top](#top)\n", - "\n", - "Some columns are assumed already providing encoded values, such as `GenderID` for `Sex`, `DeptID` for `Department`, and so on. But, we will need to analyze it further." - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "b58355c5", - "metadata": {}, - "outputs": [], - "source": [ - "# Column Mapping\n", - "def column_mapping(dataframe, column1, column2):\n", - " column_mapping = {}\n", - "\n", - " for unique_value in dataframe[column1].unique():\n", - " unique_values_column2 = dataframe.loc[dataframe[column1] == unique_value, column2].unique()\n", - " column_mapping[unique_value] = unique_values_column2\n", - "\n", - " return column_mapping" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "9cb6b520", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'Adinolfi, Wilson K': array([10026], dtype=int64),\n", - " 'Ait Sidi, Karthikeyan ': array([10084], dtype=int64),\n", - " 'Akinkuolie, Sarah': array([10196], dtype=int64),\n", - " 'Alagbe,Trina': array([10088], dtype=int64),\n", - " 'Anderson, Carol ': array([10069], dtype=int64),\n", - " 'Anderson, Linda ': array([10002], dtype=int64),\n", - " 'Andreola, Colby': array([10194], dtype=int64),\n", - " 'Athwal, Sam': array([10062], dtype=int64),\n", - " 'Bachiochi, Linda': array([10114], dtype=int64),\n", - " 'Bacong, Alejandro ': array([10250], dtype=int64),\n", - " 'Baczenski, Rachael ': array([10252], dtype=int64),\n", - " 'Barbara, Thomas': array([10242], dtype=int64),\n", - " 'Barbossa, Hector': array([10012], dtype=int64),\n", - " 'Barone, Francesco A': array([10265], dtype=int64),\n", - " 'Barton, Nader': array([10066], dtype=int64),\n", - " 'Bates, Norman': array([10061], dtype=int64),\n", - " 'Beak, Kimberly ': array([10023], dtype=int64),\n", - " 'Beatrice, Courtney ': array([10055], dtype=int64),\n", - " 'Becker, Renee': array([10245], dtype=int64),\n", - " 'Becker, Scott': array([10277], dtype=int64),\n", - " 'Bernstein, Sean': array([10046], dtype=int64),\n", - " 'Biden, Lowan M': array([10226], dtype=int64),\n", - " 'Billis, Helen': array([10003], dtype=int64),\n", - " 'Blount, Dianna': array([10294], dtype=int64),\n", - " 'Bondwell, Betsy': array([10267], dtype=int64),\n", - " 'Booth, Frank': array([10199], dtype=int64),\n", - " 'Boutwell, Bonalyn': array([10081], dtype=int64),\n", - " 'Bozzi, Charles': array([10175], dtype=int64),\n", - " 'Brill, Donna': array([10177], dtype=int64),\n", - " 'Brown, Mia': array([10238], dtype=int64),\n", - " 'Buccheri, Joseph ': array([10184], dtype=int64),\n", - " 'Bugali, Josephine ': array([10203], dtype=int64),\n", - " 'Bunbury, Jessica': array([10188], dtype=int64),\n", - " 'Burke, Joelle': array([10107], dtype=int64),\n", - " 'Burkett, Benjamin ': array([10181], dtype=int64),\n", - " 'Cady, Max ': array([10150], dtype=int64),\n", - " 'Candie, Calvin': array([10001], dtype=int64),\n", - " 'Carabbio, Judith': array([10085], dtype=int64),\n", - " 'Carey, Michael ': array([10115], dtype=int64),\n", - " 'Carr, Claudia N': array([10082], dtype=int64),\n", - " 'Carter, Michelle ': array([10040], dtype=int64),\n", - " 'Chace, Beatrice ': array([10067], dtype=int64),\n", - " 'Champaigne, Brian': array([10108], dtype=int64),\n", - " 'Chan, Lin': array([10210], dtype=int64),\n", - " 'Chang, Donovan E': array([10154], dtype=int64),\n", - " 'Chigurh, Anton': array([10200], dtype=int64),\n", - " 'Chivukula, Enola': array([10240], dtype=int64),\n", - " 'Cierpiszewski, Caroline ': array([10168], dtype=int64),\n", - " 'Clayton, Rick': array([10220], dtype=int64),\n", - " 'Cloninger, Jennifer': array([10275], dtype=int64),\n", - " 'Close, Phil': array([10269], dtype=int64),\n", - " 'Clukey, Elijian': array([10029], dtype=int64),\n", - " 'Cockel, James': array([10261], dtype=int64),\n", - " 'Cole, Spencer': array([10292], dtype=int64),\n", - " 'Corleone, Michael': array([10282], dtype=int64),\n", - " 'Corleone, Vito': array([10019], dtype=int64),\n", - " 'Cornett, Lisa ': array([10094], dtype=int64),\n", - " 'Costello, Frank': array([10193], dtype=int64),\n", - " 'Crimmings, Jean': array([10132], dtype=int64),\n", - " 'Cross, Noah': array([10083], dtype=int64),\n", - " 'Daneault, Lynn': array([10099], dtype=int64),\n", - " 'Daniele, Ann ': array([10212], dtype=int64),\n", - " \"Darson, Jene'ya \": array([10056], dtype=int64),\n", - " 'Davis, Daniel': array([10143], dtype=int64),\n", - " 'Dee, Randy': array([10311], dtype=int64),\n", - " 'DeGweck, James': array([10070], dtype=int64),\n", - " 'Del Bosque, Keyla': array([10155], dtype=int64),\n", - " 'Delarge, Alex': array([10306], dtype=int64),\n", - " 'Demita, Carla': array([10100], dtype=int64),\n", - " 'Desimone, Carl ': array([10310], dtype=int64),\n", - " 'DeVito, Tommy': array([10197], dtype=int64),\n", - " 'Dickinson, Geoff ': array([10276], dtype=int64),\n", - " 'Dietrich, Jenna ': array([10304], dtype=int64),\n", - " 'DiNocco, Lily ': array([10284], dtype=int64),\n", - " 'Dobrin, Denisa S': array([10207], dtype=int64),\n", - " 'Dolan, Linda': array([10133], dtype=int64),\n", - " 'Dougall, Eric': array([10028], dtype=int64),\n", - " 'Driver, Elle': array([10006], dtype=int64),\n", - " 'Dunn, Amy ': array([10105], dtype=int64),\n", - " 'Dunne, Amy': array([10211], dtype=int64),\n", - " 'Eaton, Marianne': array([10064], dtype=int64),\n", - " 'Engdahl, Jean': array([10247], dtype=int64),\n", - " 'England, Rex': array([10235], dtype=int64),\n", - " 'Erilus, Angela': array([10299], dtype=int64),\n", - " 'Estremera, Miguel': array([10280], dtype=int64),\n", - " 'Evensen, April': array([10296], dtype=int64),\n", - " 'Exantus, Susan': array([10290], dtype=int64),\n", - " 'Faller, Megan ': array([10263], dtype=int64),\n", - " 'Fancett, Nicole': array([10136], dtype=int64),\n", - " 'Ferguson, Susan': array([10189], dtype=int64),\n", - " 'Fernandes, Nilson ': array([10308], dtype=int64),\n", - " 'Fett, Boba': array([10309], dtype=int64),\n", - " 'Fidelia, Libby': array([10049], dtype=int64),\n", - " 'Fitzpatrick, Michael J': array([10093], dtype=int64),\n", - " 'Foreman, Tanya': array([10163], dtype=int64),\n", - " 'Forrest, Alex': array([10305], dtype=int64),\n", - " 'Foss, Jason': array([10015], dtype=int64),\n", - " 'Foster-Baker, Amy': array([10080], dtype=int64),\n", - " 'Fraval, Maruk ': array([10258], dtype=int64),\n", - " 'Galia, Lisa': array([10273], dtype=int64),\n", - " 'Garcia, Raul': array([10111], dtype=int64),\n", - " 'Gaul, Barbara': array([10257], dtype=int64),\n", - " 'Gentry, Mildred': array([10159], dtype=int64),\n", - " 'Gerke, Melisa': array([10122], dtype=int64),\n", - " 'Gill, Whitney ': array([10142], dtype=int64),\n", - " 'Gilles, Alex': array([10283], dtype=int64),\n", - " 'Girifalco, Evelyn': array([10018], dtype=int64),\n", - " 'Givens, Myriam': array([10255], dtype=int64),\n", - " 'Goble, Taisha': array([10246], dtype=int64),\n", - " 'Goeth, Amon': array([10228], dtype=int64),\n", - " 'Gold, Shenice ': array([10243], dtype=int64),\n", - " 'Gonzalez, Cayo': array([10031], dtype=int64),\n", - " 'Gonzalez, Juan': array([10300], dtype=int64),\n", - " 'Gonzalez, Maria': array([10101], dtype=int64),\n", - " 'Good, Susan': array([10237], dtype=int64),\n", - " 'Gordon, David': array([10051], dtype=int64),\n", - " 'Gosciminski, Phylicia ': array([10218], dtype=int64),\n", - " 'Goyal, Roxana': array([10256], dtype=int64),\n", - " 'Gray, Elijiah ': array([10098], dtype=int64),\n", - " 'Gross, Paula': array([10059], dtype=int64),\n", - " 'Gruber, Hans': array([10234], dtype=int64),\n", - " 'Guilianno, Mike': array([10109], dtype=int64),\n", - " 'Handschiegl, Joanne': array([10125], dtype=int64),\n", - " 'Hankard, Earnest': array([10074], dtype=int64),\n", - " 'Harrington, Christie ': array([10097], dtype=int64),\n", - " 'Harrison, Kara': array([10007], dtype=int64),\n", - " 'Heitzman, Anthony': array([10129], dtype=int64),\n", - " 'Hendrickson, Trina': array([10075], dtype=int64),\n", - " 'Hitchcock, Alfred': array([10167], dtype=int64),\n", - " 'Homberger, Adrienne J': array([10195], dtype=int64),\n", - " 'Horton, Jayne': array([10112], dtype=int64),\n", - " 'Houlihan, Debra': array([10272], dtype=int64),\n", - " 'Howard, Estelle': array([10182], dtype=int64),\n", - " 'Hudson, Jane': array([10248], dtype=int64),\n", - " 'Hunts, Julissa': array([10201], dtype=int64),\n", - " 'Hutter, Rosalie': array([10214], dtype=int64),\n", - " 'Huynh, Ming': array([10160], dtype=int64),\n", - " 'Immediato, Walter': array([10289], dtype=int64),\n", - " 'Ivey, Rose ': array([10139], dtype=int64),\n", - " 'Jackson, Maryellen': array([10227], dtype=int64),\n", - " 'Jacobi, Hannah ': array([10236], dtype=int64),\n", - " 'Jeannite, Tayana': array([10009], dtype=int64),\n", - " 'Jhaveri, Sneha ': array([10060], dtype=int64),\n", - " 'Johnson, George': array([10034], dtype=int64),\n", - " 'Johnson, Noelle ': array([10156], dtype=int64),\n", - " 'Johnston, Yen': array([10036], dtype=int64),\n", - " 'Jung, Judy ': array([10138], dtype=int64),\n", - " 'Kampew, Donysha': array([10244], dtype=int64),\n", - " 'Keatts, Kramer ': array([10192], dtype=int64),\n", - " 'Khemmich, Bartholemew': array([10231], dtype=int64),\n", - " 'King, Janet': array([10089], dtype=int64),\n", - " 'Kinsella, Kathleen ': array([10166], dtype=int64),\n", - " 'Kirill, Alexandra ': array([10170], dtype=int64),\n", - " 'Knapp, Bradley J': array([10208], dtype=int64),\n", - " 'Kretschmer, John': array([10176], dtype=int64),\n", - " 'Kreuger, Freddy': array([10165], dtype=int64),\n", - " 'Lajiri, Jyoti': array([10113], dtype=int64),\n", - " 'Landa, Hans': array([10092], dtype=int64),\n", - " 'Langford, Lindsey': array([10106], dtype=int64),\n", - " 'Langton, Enrico': array([10052], dtype=int64),\n", - " 'LaRotonda, William ': array([10038], dtype=int64),\n", - " 'Latif, Mohammed': array([10249], dtype=int64),\n", - " 'Le, Binh': array([10232], dtype=int64),\n", - " 'Leach, Dallas': array([10087], dtype=int64),\n", - " 'LeBlanc, Brandon R': array([10134], dtype=int64),\n", - " 'Lecter, Hannibal': array([10251], dtype=int64),\n", - " 'Leruth, Giovanni': array([10103], dtype=int64),\n", - " 'Liebig, Ketsia': array([10017], dtype=int64),\n", - " 'Linares, Marilyn ': array([10186], dtype=int64),\n", - " 'Linden, Mathew': array([10137], dtype=int64),\n", - " 'Lindsay, Leonara ': array([10008], dtype=int64),\n", - " 'Lundy, Susan': array([10096], dtype=int64),\n", - " 'Lunquist, Lisa': array([10035], dtype=int64),\n", - " 'Lydon, Allison': array([10057], dtype=int64),\n", - " 'Lynch, Lindsay': array([10004], dtype=int64),\n", - " 'MacLennan, Samuel': array([10191], dtype=int64),\n", - " 'Mahoney, Lauren ': array([10219], dtype=int64),\n", - " 'Manchester, Robyn': array([10077], dtype=int64),\n", - " 'Mancuso, Karen': array([10073], dtype=int64),\n", - " 'Mangal, Debbie': array([10279], dtype=int64),\n", - " 'Martin, Sandra': array([10110], dtype=int64),\n", - " 'Maurice, Shana': array([10053], dtype=int64),\n", - " \"Carthy, B'rigit\": array([10076], dtype=int64),\n", - " 'Mckenna, Sandy': array([10145], dtype=int64),\n", - " 'McKinzie, Jac': array([10202], dtype=int64),\n", - " 'Meads, Elizabeth': array([10128], dtype=int64),\n", - " 'Medeiros, Jennifer': array([10068], dtype=int64),\n", - " 'Miller, Brannon': array([10116], dtype=int64),\n", - " 'Miller, Ned': array([10298], dtype=int64),\n", - " 'Monkfish, Erasumus': array([10213], dtype=int64),\n", - " 'Monroe, Peter': array([10288], dtype=int64),\n", - " 'Monterro, Luisa': array([10025], dtype=int64),\n", - " 'Moran, Patrick': array([10223], dtype=int64),\n", - " 'Morway, Tanya': array([10151], dtype=int64),\n", - " 'Motlagh, Dawn': array([10254], dtype=int64),\n", - " 'Moumanil, Maliki ': array([10120], dtype=int64),\n", - " 'Myers, Michael': array([10216], dtype=int64),\n", - " 'Navathe, Kurt': array([10079], dtype=int64),\n", - " 'Ndzi, Colombui': array([10215], dtype=int64),\n", - " 'Ndzi, Horia': array([10185], dtype=int64),\n", - " 'Newman, Richard ': array([10063], dtype=int64),\n", - " 'Ngodup, Shari ': array([10037], dtype=int64),\n", - " 'Nguyen, Dheepa': array([10042], dtype=int64),\n", - " 'Nguyen, Lei-Ming': array([10206], dtype=int64),\n", - " 'Nowlan, Kristie': array([10104], dtype=int64),\n", - " \"O'hare, Lynn\": array([10303], dtype=int64),\n", - " 'Oliver, Brooke ': array([10078], dtype=int64),\n", - " 'Onque, Jasmine': array([10121], dtype=int64),\n", - " 'Osturnka, Adeel': array([10021], dtype=int64),\n", - " 'Owad, Clinton': array([10281], dtype=int64),\n", - " 'Ozark, Travis': array([10041], dtype=int64),\n", - " 'Panjwani, Nina': array([10148], dtype=int64),\n", - " 'Patronick, Lucas': array([10005], dtype=int64),\n", - " 'Pearson, Randall': array([10259], dtype=int64),\n", - " 'Smith, Martin': array([10286], dtype=int64),\n", - " 'Pelletier, Ermine': array([10297], dtype=int64),\n", - " 'Perry, Shakira': array([10171], dtype=int64),\n", - " 'Peters, Lauren': array([10032], dtype=int64),\n", - " 'Peterson, Ebonee ': array([10130], dtype=int64),\n", - " 'Petingill, Shana ': array([10217], dtype=int64),\n", - " 'Petrowsky, Thelma': array([10016], dtype=int64),\n", - " 'Pham, Hong': array([10050], dtype=int64),\n", - " 'Pitt, Brad ': array([10164], dtype=int64),\n", - " 'Potts, Xana': array([10124], dtype=int64),\n", - " 'Power, Morissa': array([10187], dtype=int64),\n", - " 'Punjabhi, Louis ': array([10225], dtype=int64),\n", - " 'Purinton, Janine': array([10262], dtype=int64),\n", - " 'Quinn, Sean': array([10131], dtype=int64),\n", - " 'Rachael, Maggie': array([10239], dtype=int64),\n", - " 'Rarrick, Quinn': array([10152], dtype=int64),\n", - " 'Ren, Kylo': array([10140], dtype=int64),\n", - " 'Rhoads, Thomas': array([10058], dtype=int64),\n", - " 'Rivera, Haley ': array([10011], dtype=int64),\n", - " 'Roberson, May': array([10230], dtype=int64),\n", - " 'Robertson, Peter': array([10224], dtype=int64),\n", - " 'Robinson, Alain ': array([10047], dtype=int64),\n", - " 'Robinson, Cherly': array([10285], dtype=int64),\n", - " 'Robinson, Elias': array([10020], dtype=int64),\n", - " 'Roby, Lori ': array([10162], dtype=int64),\n", - " 'Roehrich, Bianca': array([10149], dtype=int64),\n", - " 'Roper, Katie': array([10086], dtype=int64),\n", - " 'Rose, Ashley ': array([10054], dtype=int64),\n", - " 'Rossetti, Bruno': array([10065], dtype=int64),\n", - " 'Roup,Simon': array([10198], dtype=int64),\n", - " 'Ruiz, Ricardo': array([10222], dtype=int64),\n", - " 'Saada, Adell': array([10126], dtype=int64),\n", - " 'Saar-Beckles, Melinda': array([10295], dtype=int64),\n", - " 'Sadki, Nore ': array([10260], dtype=int64),\n", - " 'Sahoo, Adil': array([10233], dtype=int64),\n", - " 'Salter, Jason': array([10229], dtype=int64),\n", - " 'Sander, Kamrin': array([10169], dtype=int64),\n", - " 'Sewkumar, Nori': array([10071], dtype=int64),\n", - " 'Shepard, Anita ': array([10179], dtype=int64),\n", - " 'Shields, Seffi': array([10091], dtype=int64),\n", - " 'Simard, Kramer': array([10178], dtype=int64),\n", - " 'Singh, Nan ': array([10039], dtype=int64),\n", - " 'Sloan, Constance': array([10095], dtype=int64),\n", - " 'Smith, Joe': array([10027], dtype=int64),\n", - " 'Smith, John': array([10291], dtype=int64),\n", - " 'Smith, Leigh Ann': array([10153], dtype=int64),\n", - " 'Smith, Sade': array([10157], dtype=int64),\n", - " 'Soto, Julia ': array([10119], dtype=int64),\n", - " 'Soze, Keyser': array([10180], dtype=int64),\n", - " 'Sparks, Taylor ': array([10302], dtype=int64),\n", - " 'Spirea, Kelley': array([10090], dtype=int64),\n", - " 'Squatrito, Kristen': array([10030], dtype=int64),\n", - " 'Stanford,Barbara M': array([10278], dtype=int64),\n", - " 'Stansfield, Norman': array([10307], dtype=int64),\n", - " 'Steans, Tyrone ': array([10147], dtype=int64),\n", - " 'Stoica, Rick': array([10266], dtype=int64),\n", - " 'Strong, Caitrin': array([10241], dtype=int64),\n", - " 'Sullivan, Kissy ': array([10158], dtype=int64),\n", - " 'Sullivan, Timothy': array([10117], dtype=int64),\n", - " 'Sutwell, Barbara': array([10209], dtype=int64),\n", - " 'Szabo, Andrew': array([10024], dtype=int64),\n", - " 'Tannen, Biff': array([10173], dtype=int64),\n", - " 'Tavares, Desiree ': array([10221], dtype=int64),\n", - " 'Tejeda, Lenora ': array([10146], dtype=int64),\n", - " 'Terry, Sharlene ': array([10161], dtype=int64),\n", - " 'Theamstern, Sophia': array([10141], dtype=int64),\n", - " 'Thibaud, Kenneth': array([10268], dtype=int64),\n", - " 'Tippett, Jeanette': array([10123], dtype=int64),\n", - " 'Torrence, Jack': array([10013], dtype=int64),\n", - " 'Trang, Mei': array([10287], dtype=int64),\n", - " 'Tredinnick, Neville ': array([10044], dtype=int64),\n", - " 'True, Edward': array([10102], dtype=int64),\n", - " 'Trzeciak, Cybil': array([10270], dtype=int64),\n", - " 'Turpin, Jumil': array([10045], dtype=int64),\n", - " 'Valentin,Jackie': array([10205], dtype=int64),\n", - " 'Veera, Abdellah ': array([10014], dtype=int64),\n", - " 'Vega, Vincent': array([10144], dtype=int64),\n", - " 'Villanueva, Noah': array([10253], dtype=int64),\n", - " 'Voldemort, Lord': array([10118], dtype=int64),\n", - " 'Volk, Colleen': array([10022], dtype=int64),\n", - " 'Von Massenbach, Anna': array([10183], dtype=int64),\n", - " 'Walker, Roger': array([10190], dtype=int64),\n", - " 'Wallace, Courtney E': array([10274], dtype=int64),\n", - " 'Wallace, Theresa': array([10293], dtype=int64),\n", - " 'Wang, Charlie': array([10172], dtype=int64),\n", - " 'Warfield, Sarah': array([10127], dtype=int64),\n", - " 'Whittier, Scott': array([10072], dtype=int64),\n", - " 'Wilber, Barry': array([10048], dtype=int64),\n", - " 'Wilkes, Annie': array([10204], dtype=int64),\n", - " 'Williams, Jacquelyn ': array([10264], dtype=int64),\n", - " 'Winthrop, Jordan ': array([10033], dtype=int64),\n", - " 'Wolk, Hang T': array([10174], dtype=int64),\n", - " 'Woodson, Jason': array([10135], dtype=int64),\n", - " 'Ybarra, Catherine ': array([10301], dtype=int64),\n", - " 'Zamora, Jennifer': array([10010], dtype=int64),\n", - " 'Zhou, Julia': array([10043], dtype=int64),\n", - " 'Zima, Colleen': array([10271], dtype=int64)}" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "column_mapping(df, 'Employee_Name', 'EmpID')" - ] - }, - { - "cell_type": "markdown", - "id": "766aed19", - "metadata": {}, - "source": [ - "Based on the results above, there are no apparent duplicate values of `Emp_ID`, as 1 `Employee_Name` represents 1 `Emp_ID`." - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "3a876612", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'Production Technician I': array([19], dtype=int64),\n", - " 'Sr. DBA': array([27], dtype=int64),\n", - " 'Production Technician II': array([20], dtype=int64),\n", - " 'Software Engineer': array([24, 23], dtype=int64),\n", - " 'IT Support': array([14], dtype=int64),\n", - " 'Data Analyst': array([9], dtype=int64),\n", - " 'Database Administrator': array([8], dtype=int64),\n", - " 'Enterprise Architect': array([30], dtype=int64),\n", - " 'Sr. Accountant': array([26], dtype=int64),\n", - " 'Production Manager': array([18, 17], dtype=int64),\n", - " 'Accountant I': array([1], dtype=int64),\n", - " 'Area Sales Manager': array([3], dtype=int64),\n", - " 'Software Engineering Manager': array([25], dtype=int64),\n", - " 'BI Director': array([5], dtype=int64),\n", - " 'Director of Operations': array([10], dtype=int64),\n", - " 'Sr. Network Engineer': array([28], dtype=int64),\n", - " 'Sales Manager': array([21], dtype=int64),\n", - " 'BI Developer': array([4], dtype=int64),\n", - " 'IT Manager - Support': array([13], dtype=int64),\n", - " 'Network Engineer': array([15], dtype=int64),\n", - " 'IT Director': array([12], dtype=int64),\n", - " 'Director of Sales': array([11], dtype=int64),\n", - " 'Administrative Assistant': array([2], dtype=int64),\n", - " 'President & CEO': array([16], dtype=int64),\n", - " 'Senior BI Developer': array([22], dtype=int64),\n", - " 'Shared Services Manager': array([23], dtype=int64),\n", - " 'IT Manager - Infra': array([13], dtype=int64),\n", - " 'Principal Data Architect': array([29], dtype=int64),\n", - " 'Data Architect': array([7], dtype=int64),\n", - " 'IT Manager - DB': array([13], dtype=int64),\n", - " 'Data Analyst ': array([9], dtype=int64),\n", - " 'CIO': array([6], dtype=int64)}" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Position Info in dict\n", - "column_mapping(df, 'Position', 'PositionID')" - ] - }, - { - "cell_type": "markdown", - "id": "aa5eb56f", - "metadata": {}, - "source": [ - "It appears that some Positions has multiple IDs, such as `Production Manager` and `Software Engineer`. Knowing this, I will go forward to encode the column `Position` into numerical values, and in turn deleting the column `PositionID`." - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "8aa4eef5", - "metadata": {}, - "outputs": [], - "source": [ - "# Drop PositionID Column\n", - "df = df.drop(['PositionID'], axis=1)" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "3fc78b08", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'Michael Albert': array([22., 30.]),\n", - " 'Simon Roup': array([4.]),\n", - " 'Kissy Sullivan': array([20.]),\n", - " 'Elijiah Gray': array([16.]),\n", - " 'Webster Butler': array([39.]),\n", - " 'Amy Dunn': array([11.]),\n", - " 'Alex Sweetwater': array([10.]),\n", - " 'Ketsia Liebig': array([19.]),\n", - " 'Brannon Miller': array([12.]),\n", - " 'Peter Monroe': array([7.]),\n", - " 'David Stanley': array([14.]),\n", - " 'Kelley Spirea': array([18.]),\n", - " 'Brandon R. LeBlanc': array([3., 1.]),\n", - " 'Janet King': array([2.]),\n", - " 'John Smith': array([17.]),\n", - " 'Jennifer Zamora': array([5.]),\n", - " 'Lynn Daneault': array([21.]),\n", - " 'Eric Dougall': array([6.]),\n", - " 'Debra Houlihan': array([15.]),\n", - " 'Brian Champaigne': array([13.]),\n", - " 'Board of Directors': array([9.])}" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Manager Info in dict\n", - "column_mapping(df, 'ManagerName', 'ManagerID')" - ] - }, - { - "cell_type": "markdown", - "id": "c4a390e4", - "metadata": {}, - "source": [ - "Again, there are some managers that has multiple IDs. Assuming this is a **data quality issue** instead of a **hierarchical structure problem** where a manager may have different roles or responsibilities with distinct IDs, we will continue to keep `ManagerName` and delete `ManagerID`." - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "41613c39", - "metadata": {}, - "outputs": [], - "source": [ - "# Drop ManagerID column\n", - "df = df.drop(['ManagerID'], axis=1)" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "1c3d6edf", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'M ': array([1], dtype=int64), 'F': array([0], dtype=int64)}" - ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Gender Info in dict\n", - "column_mapping(df, 'Sex', 'GenderID')" - ] - }, - { - "cell_type": "markdown", - "id": "05d5aa6e", - "metadata": {}, - "source": [ - "The gender information are portrayed perfectly, and so to avoid further encoding, column `Sex` will be deleted." - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "id": "a95ce45b", - "metadata": {}, - "outputs": [], - "source": [ - "# Drop Sex column\n", - "df = df.drop(['Sex'], axis=1)" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "id": "57b07e7f", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'Single': array([0], dtype=int64),\n", - " 'Married': array([1], dtype=int64),\n", - " 'Divorced': array([2], dtype=int64),\n", - " 'Widowed': array([4], dtype=int64),\n", - " 'Separated': array([3], dtype=int64)}" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Marital Info in dict\n", - "column_mapping(df, 'MaritalDesc', 'MaritalStatusID')" - ] - }, - { - "cell_type": "markdown", - "id": "acfa90f7", - "metadata": {}, - "source": [ - "A balanced result. Again, to avoid further encoding, column `MaritalDesc` will be deleted." - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "id": "b2ba844b", - "metadata": {}, - "outputs": [], - "source": [ - "# Drop MaritalDesc Column\n", - "df = df.drop(['MaritalDesc'], axis=1)" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "id": "deabc5b2", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'Active': array([1, 3, 2], dtype=int64),\n", - " 'Voluntarily Terminated': array([5], dtype=int64),\n", - " 'Terminated for Cause': array([4, 1], dtype=int64)}" - ] - }, - "execution_count": 22, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Employee Status Info in dict\n", - "column_mapping(df, 'EmploymentStatus', 'EmpStatusID')" - ] - }, - { - "cell_type": "markdown", - "id": "f90a4603", - "metadata": {}, - "source": [ - "It is very visible there's misrepresentation of the column `EmpStatusID` and `EmploymentStatus`. For this, we will delete the column `EmpStatusID`." - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "id": "dd09d9ec", - "metadata": {}, - "outputs": [], - "source": [ - "# Drop EmpStatusID column\n", - "df = df.drop(['EmpStatusID'], axis=1)" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "id": "67689005", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'Exceeds': array([4], dtype=int64),\n", - " 'Fully Meets': array([3, 1], dtype=int64),\n", - " 'Needs Improvement': array([2], dtype=int64),\n", - " 'PIP': array([1, 3], dtype=int64)}" - ] - }, - "execution_count": 24, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Performance Score Info in dict\n", - "column_mapping(df, 'PerformanceScore', 'PerfScoreID')" - ] - }, - { - "cell_type": "markdown", - "id": "ac103dd5", - "metadata": {}, - "source": [ - "Again, another misrepresentation. We will remove the column `PerfScoreID`." - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "id": "a275b331", - "metadata": {}, - "outputs": [], - "source": [ - "# Drop PerfScoreID column\n", - "df = df.drop(['PerfScoreID'], axis=1)" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "id": "4d1e7172", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'Production ': array([5, 6], dtype=int64),\n", - " 'IT/IS': array([3], dtype=int64),\n", - " 'Software Engineering': array([4, 1], dtype=int64),\n", - " 'Admin Offices': array([1], dtype=int64),\n", - " 'Sales': array([6], dtype=int64),\n", - " 'Executive Office': array([2], dtype=int64)}" - ] - }, - "execution_count": 26, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Department Info in dict\n", - "column_mapping(df, 'Department', 'DeptID')" - ] - }, - { - "cell_type": "markdown", - "id": "afa2a74a", - "metadata": {}, - "source": [ - "Just as before, we will continue by deleting the column `DeptID`. Though there is a improperly formatted value (Production), we can ignore that as it will be encoded later." - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "id": "680be881", - "metadata": {}, - "outputs": [], - "source": [ - "# Drop DeptID column\n", - "df = df.drop(['DeptID'], axis=1)" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "id": "2edf7984", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "RangeIndex: 311 entries, 0 to 310\n", - "Data columns (total 28 columns):\n", - " # Column Non-Null Count Dtype \n", - "--- ------ -------------- ----- \n", - " 0 Employee_Name 311 non-null object \n", - " 1 EmpID 311 non-null int64 \n", - " 2 MarriedID 311 non-null int64 \n", - " 3 MaritalStatusID 311 non-null int64 \n", - " 4 GenderID 311 non-null int64 \n", - " 5 FromDiversityJobFairID 311 non-null int64 \n", - " 6 Salary 311 non-null int64 \n", - " 7 Termd 311 non-null int64 \n", - " 8 Position 311 non-null object \n", - " 9 State 311 non-null object \n", - " 10 Zip 311 non-null int64 \n", - " 11 DOB 311 non-null object \n", - " 12 CitizenDesc 311 non-null object \n", - " 13 HispanicLatino 311 non-null object \n", - " 14 RaceDesc 311 non-null object \n", - " 15 DateofHire 311 non-null object \n", - " 16 TermReason 311 non-null object \n", - " 17 EmploymentStatus 311 non-null object \n", - " 18 Department 311 non-null object \n", - " 19 ManagerName 311 non-null object \n", - " 20 RecruitmentSource 311 non-null object \n", - " 21 PerformanceScore 311 non-null object \n", - " 22 EngagementSurvey 311 non-null float64\n", - " 23 EmpSatisfaction 311 non-null int64 \n", - " 24 SpecialProjectsCount 311 non-null int64 \n", - " 25 LastPerformanceReview_Date 311 non-null object \n", - " 26 DaysLateLast30 311 non-null int64 \n", - " 27 Absences 311 non-null int64 \n", - "dtypes: float64(1), int64(12), object(15)\n", - "memory usage: 68.2+ KB\n" - ] - } - ], - "source": [ - "# Now to see the remaining columns\n", - "df.info()" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "id": "bdd0c9d8", - "metadata": {}, - "outputs": [], - "source": [ - "# Additional column pruning\n", - "df = df.drop(['LastPerformanceReview_Date', 'Zip', 'HispanicLatino', 'MarriedID'], axis=1)" - ] - }, - { - "cell_type": "markdown", - "id": "f44537ef", - "metadata": {}, - "source": [ - "# Feature Engineering Part III - Reformatting \n", - "Firstly, we will handle the date columns that are listed as object. Then once it's done, we can start to encode categorical columns using `LabelEncoder`.\n", - "\n", - "[Back To Top](#top)" - ] - }, - { - "cell_type": "code", - "execution_count": 47, - "id": "fb3e1d3b", - "metadata": {}, - "outputs": [], - "source": [ - "from sklearn.preprocessing import LabelEncoder" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "id": "6d5592f1", - "metadata": {}, - "outputs": [], - "source": [ - "# Change data type into datetime64\n", - "df['DOB'] = pd.to_datetime(df['DOB'])\n", - "df['DateofHire'] = pd.to_datetime(df['DateofHire'])" - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "id": "14a6af68", - "metadata": {}, - "outputs": [], - "source": [ - "# Extract Year, Month, and Day information for 'DOB'\n", - "df['DOB_Year'] = df['DOB'].dt.year\n", - "df['DOB_Month'] = df['DOB'].dt.month\n", - "df['DOB_Day'] = df['DOB'].dt.day\n", - "\n", - "# Extract Year, Month, and Day information for 'DateofHire'\n", - "df['DateofHire_Year'] = df['DateofHire'].dt.year\n", - "df['DateofHire_Month'] = df['DateofHire'].dt.month\n", - "df['DateofHire_Day'] = df['DateofHire'].dt.day" - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "id": "fbf38f59", - "metadata": {}, - "outputs": [], - "source": [ - "# Drop the original columns\n", - "df = df.drop(['DOB', 'DateofHire'], axis=1)" - ] - }, - { - "cell_type": "markdown", - "id": "5b8e98e7", - "metadata": {}, - "source": [ - "## Encoding" - ] - }, - { - "cell_type": "code", - "execution_count": 96, - "id": "445c535d", - "metadata": {}, - "outputs": [], - "source": [ - "# Encode Columns Function (or singular)\n", - "# This code starts the encoding from 1 not 0, and changes the result into int64 format.\n", - "# This code puts the results in a dictionary, for later to be used or mapped.\n", - "label_encoders = {}\n", - "\n", - "def encode_columns(df, column_names):\n", - " global label_encoders\n", - "\n", - " for column_name in column_names:\n", - " # Check if the column exists in the DataFrame\n", - " if column_name not in df.columns:\n", - " print(f\"Column '{column_name}' not found in the DataFrame.\")\n", - " continue\n", - "\n", - " # Initialize a label encoder for the column\n", - " label_encoder = LabelEncoder()\n", - "\n", - " # Fit and transform the column with label encoding\n", - " encoded_column = label_encoder.fit_transform(df[column_name]) + 1 # so that it starts from 1\n", - "\n", - " # Convert the new column to int64\n", - " df[column_name + '_E'] = encoded_column.astype('int64')\n", - "\n", - " # Store the label encoder for later use\n", - " mapping_dict = dict(zip(encoded_column, df[column_name]))\n", - " sorted_mapping_dict = dict(sorted(mapping_dict.items())) # Sort the dictionary by keys\n", - " label_encoders[column_name] = sorted_mapping_dict\n", - "\n", - " # Drop the original column\n", - " df = df.drop([column_name], axis=1)\n", - "\n", - " return df" - ] - }, - { - "cell_type": "code", - "execution_count": 98, - "id": "ae3ee6f6", - "metadata": {}, - "outputs": [], - "source": [ - "# Run the function for the selected columns\n", - "encoded_df = encode_columns(df, ['State', 'Position', 'CitizenDesc', 'RaceDesc',\n", - " 'TermReason', 'EmploymentStatus', 'Department',\n", - " 'ManagerName', 'RecruitmentSource', 'PerformanceScore'])" - ] - }, - { - "cell_type": "code", - "execution_count": 86, - "id": "d4f01607", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
Employee_NameEmpIDMaritalStatusIDGenderIDFromDiversityJobFairIDSalaryTermdEngagementSurveyEmpSatisfactionSpecialProjectsCount...State_EPosition_ECitizenDesc_ERaceDesc_ETermReason_EEmploymentStatus_EDepartment_EManagerName_ERecruitmentSource_EPerformanceScore_E
0Adinolfi, Wilson K10026010625060450...1123364141861
1Ait Sidi, Karthikeyan100841101044371436...1131366332052
2Akinkuolie, Sarah10196100649551330...1124368341662
\n", - "

3 rows × 28 columns

\n", - "
" - ], - "text/plain": [ - " Employee_Name EmpID MaritalStatusID GenderID \\\n", - "0 Adinolfi, Wilson K 10026 0 1 \n", - "1 Ait Sidi, Karthikeyan 10084 1 1 \n", - "2 Akinkuolie, Sarah 10196 1 0 \n", - "\n", - " FromDiversityJobFairID Salary Termd EngagementSurvey EmpSatisfaction \\\n", - "0 0 62506 0 4 5 \n", - "1 0 104437 1 4 3 \n", - "2 0 64955 1 3 3 \n", - "\n", - " SpecialProjectsCount ... State_E Position_E CitizenDesc_E RaceDesc_E \\\n", - "0 0 ... 11 23 3 6 \n", - "1 6 ... 11 31 3 6 \n", - "2 0 ... 11 24 3 6 \n", - "\n", - " TermReason_E EmploymentStatus_E Department_E ManagerName_E \\\n", - "0 4 1 4 18 \n", - "1 6 3 3 20 \n", - "2 8 3 4 16 \n", - "\n", - " RecruitmentSource_E PerformanceScore_E \n", - "0 6 1 \n", - "1 5 2 \n", - "2 6 2 \n", - "\n", - "[3 rows x 28 columns]" - ] - }, - "execution_count": 86, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "encoded_df.head(3)" - ] - }, - { - "cell_type": "code", - "execution_count": 87, - "id": "808f2723", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "RangeIndex: 311 entries, 0 to 310\n", - "Data columns (total 28 columns):\n", - " # Column Non-Null Count Dtype \n", - "--- ------ -------------- ----- \n", - " 0 Employee_Name 311 non-null object\n", - " 1 EmpID 311 non-null int64 \n", - " 2 MaritalStatusID 311 non-null int64 \n", - " 3 GenderID 311 non-null int64 \n", - " 4 FromDiversityJobFairID 311 non-null int64 \n", - " 5 Salary 311 non-null int64 \n", - " 6 Termd 311 non-null int64 \n", - " 7 EngagementSurvey 311 non-null int64 \n", - " 8 EmpSatisfaction 311 non-null int64 \n", - " 9 SpecialProjectsCount 311 non-null int64 \n", - " 10 DaysLateLast30 311 non-null int64 \n", - " 11 Absences 311 non-null int64 \n", - " 12 DOB_Year 311 non-null int64 \n", - " 13 DOB_Month 311 non-null int64 \n", - " 14 DOB_Day 311 non-null int64 \n", - " 15 DateofHire_Year 311 non-null int64 \n", - " 16 DateofHire_Month 311 non-null int64 \n", - " 17 DateofHire_Day 311 non-null int64 \n", - " 18 State_E 311 non-null int64 \n", - " 19 Position_E 311 non-null int64 \n", - " 20 CitizenDesc_E 311 non-null int64 \n", - " 21 RaceDesc_E 311 non-null int64 \n", - " 22 TermReason_E 311 non-null int64 \n", - " 23 EmploymentStatus_E 311 non-null int64 \n", - " 24 Department_E 311 non-null int64 \n", - " 25 ManagerName_E 311 non-null int64 \n", - " 26 RecruitmentSource_E 311 non-null int64 \n", - " 27 PerformanceScore_E 311 non-null int64 \n", - "dtypes: int64(27), object(1)\n", - "memory usage: 68.2+ KB\n" - ] - } - ], - "source": [ - "encoded_df.info()" - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "id": "22f83be5", - "metadata": {}, - "outputs": [], - "source": [ - "# Optional, Saving the df\n", - "# encoded_df.to_csv('HRDataset_v14_Formatted.csv', index=False)" - ] - }, - { - "cell_type": "markdown", - "id": "7fc06848", - "metadata": {}, - "source": [ - "And that concludes our EDA! I am keeping the `Employee_Name` column for later use. The end result has no NaN values, and data types are all `int64` except `Employee_Name`\n", - "\n", - "Right now, there are 3 dataframes that we can go forward with:\n", - "- `data_original` as the original dataframe.\n", - "- `df` as the dataframe that still contains the textual values, but its columns has already been pruned.\n", - "- `encoded_df` is pretty much the same as `df`, but the values are already encoded, to be put into ML Models." - ] - }, - { - "cell_type": "markdown", - "id": "1c86088b", - "metadata": {}, - "source": [ - "# Answering The Questions \n", - "After going through the EDA, now we will start to explore the questions, and if able to, provide reasoning.\n", - "\n", - "[Back To Top](#top)" - ] - }, - { - "cell_type": "markdown", - "id": "412d0e1d", - "metadata": {}, - "source": [ - "## Is there any relationship between who a person works for and their performance score? \n", - "For this question, we will need mainly three columns from `encoded_df`:\n", - "- `ManagerName_E`\n", - "- `PerformanceScore_E`\n", - "- `EmpID`\n", - "\n", - "By having a dictionary previously made called `label_encoders`, we can use the **keys** contained inside it to show the textual values before the data were encoded.\n", - "\n", - "[Back To Top](#top)" - ] - }, - { - "cell_type": "code", - "execution_count": 104, - "id": "31e81f09", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "ManagerName_E\n", - "Debra Houlihan 2.333333\n", - "John Smith 2.285714\n", - "Lynn Daneault 2.153846\n", - "Peter Monroe 2.142857\n", - "Michael Albert 2.136364\n", - "Amy Dunn 2.095238\n", - "Brannon Miller 2.090909\n", - "Kissy Sullivan 2.045455\n", - "Webster Butler 2.000000\n", - "Board of Directors 2.000000\n", - "Brandon R. LeBlanc 2.000000\n", - "Brian Champaigne 2.000000\n", - "David Stanley 2.000000\n", - "Elijiah Gray 2.000000\n", - "Ketsia Liebig 1.952381\n", - "Kelley Spirea 1.909091\n", - "Janet King 1.894737\n", - "Alex Sweetwater 1.888889\n", - "Simon Roup 1.882353\n", - "Jennifer Zamora 1.857143\n", - "Eric Dougall 1.750000\n", - "Name: PerformanceScore_E, dtype: float64" - ] - }, - "execution_count": 104, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# The main code\n", - "# encoded_df.groupby('ManagerName_E')['PerformanceScore_E'].mean().sort_values(ascending=False)\n", - "\n", - "# We add information from previously made Dicts to make it a better contextual result\n", - "encoded_df.groupby('ManagerName_E')['PerformanceScore_E'].mean().sort_values(ascending=False).rename(index=label_encoders['ManagerName'])" - ] - }, - { - "cell_type": "code", - "execution_count": 105, - "id": "b456a397", - "metadata": {}, - "outputs": [], - "source": [ - "import seaborn as sns\n", - "import matplotlib.pyplot as plt" - ] - }, - { - "cell_type": "code", - "execution_count": 111, - "id": "65e9e8de", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "# Create the bar plot\n", - "sns.barplot(x='ManagerName_E', y='PerformanceScore_E', data=encoded_df, ci = 0, color = 'skyblue')\n", - "\n", - "# Rotate x-axis labels for better readability\n", - "plt.xticks(rotation=45)\n", - "\n", - "# Remove lines on top of each bar\n", - "ax = plt.gca()\n", - "\n", - "# Show the plot\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "02466434", - "metadata": {}, - "source": [ - "Though there are highs and lows, visually, there are no apparent disparity between each Managers to performance score." - ] - }, - { - "cell_type": "code", - "execution_count": 114, - "id": "f3c0b2de", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
ManagerName_EPerformanceScore_EEmpID
ManagerName_E1.0000000.0029570.047830
PerformanceScore_E0.0029571.0000000.690614
EmpID0.0478300.6906141.000000
\n", - "
" - ], - "text/plain": [ - " ManagerName_E PerformanceScore_E EmpID\n", - "ManagerName_E 1.000000 0.002957 0.047830\n", - "PerformanceScore_E 0.002957 1.000000 0.690614\n", - "EmpID 0.047830 0.690614 1.000000" - ] - }, - "execution_count": 114, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Run correlation matrix\n", - "encoded_df[['ManagerName_E', 'PerformanceScore_E', 'EmpID']].corr()" - ] - }, - { - "cell_type": "markdown", - "id": "feed7c4d", - "metadata": {}, - "source": [ - "After running the correlation matrix, we can conclude that Managers play little role in Performance Score, and Employee is a bigger factor that contributes to performance score." - ] - }, - { - "cell_type": "markdown", - "id": "e2d6084d", - "metadata": {}, - "source": [ - "## What is the overall diversity profile of the organization?\n", - "\n", - "From the question, I assume that the geographical diversity is requested, and we should display the columns significant to show any geographical properties of the people working for the organization.\n", - "\n", - "[Back To Top](#top)" - ] - }, - { - "cell_type": "code", - "execution_count": 121, - "id": "7f66f810", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "# Plotting different columns\n", - "def plot_bar(data, columns):\n", - " num_columns = len(columns)\n", - "\n", - " # Set up subplots based on the number of columns\n", - " fig, axes = plt.subplots(1, num_columns, figsize=(num_columns * 7, 6))\n", - "\n", - " # Iterate through columns and create bar plots with CI\n", - " for i, col in enumerate(columns):\n", - " ax = axes[i] if num_columns > 1 else axes # Handle single-column case\n", - "\n", - " sns.barplot(x=data.index, y=col, data=data, ci=None, ax=ax) # ci=None to disable confidence intervals\n", - " ax.set_title(f'Bar Plot for {col}')\n", - " ax.set_xlabel('Count')\n", - " ax.set_ylabel('Index')\n", - "\n", - " plt.tight_layout()\n", - " plt.show()\n", - " \n", - "plot_bar(df, ['CitizenDesc', 'State', 'RaceDesc'])" - ] - }, - { - "cell_type": "markdown", - "id": "fcb71ce0", - "metadata": {}, - "source": [ - "## Can we predict who is going to terminate and who isn't? What level of accuracy can we achieve on this? \n", - "Predicting who will be terminated or not requires numerical data, as we have encoded before. We will use `encoded_df` as an already encoded version of `df` and pass it into ML models.\n", - "[Back To Top](#top)" - ] - }, - { - "cell_type": "code", - "execution_count": 124, - "id": "a9166e89", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{0: array(['N/A-StillEmployed'], dtype=object),\n", - " 1: array(['career change', 'hours', 'return to school', 'Another position',\n", - " 'unhappy', 'attendance', 'performance',\n", - " 'Learned that he is a gangster', 'retiring',\n", - " 'relocation out of area', 'more money', 'military',\n", - " 'no-call, no-show', 'Fatal attraction',\n", - " 'maternity leave - did not return', 'medical issues',\n", - " 'gross misconduct'], dtype=object)}" - ] - }, - "execution_count": 124, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# I wanted to make sure that Termd and TermReason are accurately representing one another\n", - "column_mapping(df, 'Termd', 'TermReason')" - ] - }, - { - "cell_type": "code", - "execution_count": 125, - "id": "9984ed6f", - "metadata": {}, - "outputs": [], - "source": [ - "# Importing sklearn libaries\n", - "from sklearn.model_selection import train_test_split\n", - "from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score" - ] - }, - { - "cell_type": "code", - "execution_count": 126, - "id": "537a1057", - "metadata": {}, - "outputs": [], - "source": [ - "# This is the models to be used to test the data. Feel free to adjust\n", - "from sklearn.ensemble import RandomForestClassifier\n", - "from sklearn.svm import SVC\n", - "from sklearn.neighbors import KNeighborsClassifier\n", - "from sklearn.linear_model import LogisticRegression\n", - "from sklearn.tree import DecisionTreeClassifier\n", - "from sklearn.naive_bayes import GaussianNB\n", - "from sklearn.ensemble import AdaBoostClassifier\n", - "from sklearn.ensemble import GradientBoostingClassifier" - ] - }, - { - "cell_type": "code", - "execution_count": 127, - "id": "639634f8", - "metadata": {}, - "outputs": [], - "source": [ - "# Split the data into features (X) and labels (y)\n", - "X = encoded_df.drop(columns=['Employee_Name', 'EmpID', 'TermReason_E', 'EmploymentStatus_E'])\n", - "y = encoded_df['Termd']\n", - "\n", - "# Split the data into training and testing sets\n", - "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n", - "\n", - "# Define a dictionary to store results\n", - "results = {'Model': [], 'F1_score': [], 'Accuracy': [], 'Precision': [], 'Recall': []}" - ] - }, - { - "cell_type": "code", - "execution_count": 128, - "id": "57fb2722", - "metadata": {}, - "outputs": [], - "source": [ - "# Pass the models loaded in here. Again, adjust as necessary\n", - "models = {\n", - " 'Random Forest': RandomForestClassifier(),\n", - " 'Support Vector Machine': SVC(),\n", - " 'K-Nearest Neighbors': KNeighborsClassifier(),\n", - " 'Logistic Regression': LogisticRegression(),\n", - " 'Decision Tree': DecisionTreeClassifier(),\n", - " 'Naive Bayes': GaussianNB(),\n", - " 'AdaBoost': AdaBoostClassifier(),\n", - " 'Gradient Boosting': GradientBoostingClassifier()\n", - "}" - ] - }, - { - "cell_type": "code", - "execution_count": 129, - "id": "4d917064", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "C:\\Users\\sang.yogi\\Anaconda3\\lib\\site-packages\\sklearn\\metrics\\_classification.py:1318: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 due to no predicted samples. Use `zero_division` parameter to control this behavior.\n", - " _warn_prf(average, modifier, msg_start, len(result))\n" - ] - } - ], - "source": [ - "# Run the model one by one through loop\n", - "for model_name, model in models.items():\n", - " # Train the model\n", - " model.fit(X_train, y_train)\n", - "\n", - " # Make predictions\n", - " y_pred = model.predict(X_test)\n", - "\n", - " # Evaluate the model\n", - " f1 = f1_score(y_test, y_pred)\n", - " accuracy = accuracy_score(y_test, y_pred)\n", - " precision = precision_score(y_test, y_pred)\n", - " recall = recall_score(y_test, y_pred)\n", - "\n", - " # Store results in the dictionary\n", - " results['Model'].append(model_name)\n", - " results['F1_score'].append(f1)\n", - " results['Accuracy'].append(accuracy)\n", - " results['Precision'].append(precision)\n", - " results['Recall'].append(recall)\n", - "\n", - "# Create a DataFrame from the results dictionary\n", - "results_df = pd.DataFrame(results)" - ] - }, - { - "cell_type": "code", - "execution_count": 130, - "id": "78e97b44", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
ModelF1_scoreAccuracyPrecisionRecall
0Random Forest1.0000001.0000001.0000001.000000
1Support Vector Machine0.0000000.6507940.0000000.000000
2K-Nearest Neighbors0.3000000.5555560.3333330.272727
3Logistic Regression0.2222220.6666670.6000000.136364
4Decision Tree1.0000001.0000001.0000001.000000
5Naive Bayes0.6938780.7619050.6296300.772727
6AdaBoost1.0000001.0000001.0000001.000000
7Gradient Boosting1.0000001.0000001.0000001.000000
\n", - "
" - ], - "text/plain": [ - " Model F1_score Accuracy Precision Recall\n", - "0 Random Forest 1.000000 1.000000 1.000000 1.000000\n", - "1 Support Vector Machine 0.000000 0.650794 0.000000 0.000000\n", - "2 K-Nearest Neighbors 0.300000 0.555556 0.333333 0.272727\n", - "3 Logistic Regression 0.222222 0.666667 0.600000 0.136364\n", - "4 Decision Tree 1.000000 1.000000 1.000000 1.000000\n", - "5 Naive Bayes 0.693878 0.761905 0.629630 0.772727\n", - "6 AdaBoost 1.000000 1.000000 1.000000 1.000000\n", - "7 Gradient Boosting 1.000000 1.000000 1.000000 1.000000" - ] - }, - "execution_count": 130, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Print out results\n", - "results_df" - ] - }, - { - "cell_type": "markdown", - "id": "07e39640", - "metadata": {}, - "source": [ - "With examination of the numerical results, it appears there might be overfitting or issues with the outcomes. This suspicion is highlighted by the majority showing \"very accurate\" results, contrasted with a few models such as `K-Nearest`, `Logistic Regression`, and `Naive Bayes` exhibiting poor accuracy. Considering the relatively small size of the dataset (311 rows), we will tentatively accept these findings for the time being." - ] - }, - { - "cell_type": "markdown", - "id": "1cad2a37", - "metadata": {}, - "source": [ - "## Are there areas of the company where pay is not equitable? \n", - "\n", - "For this question, I decided to use 4 columns from `encoded_df` (numerical data):\n", - "- `Position_E`\n", - "- `Department_E`\n", - "- `GenderID`\n", - "- `RaceDesc_E`\n", - "\n", - "[Back To Top](#top)\n", - "\n", - "These columns is deemed represent _\"areas of the company\"_, and will be analyzed against the column `Salary` to see any disparities from visual observation.\n", - "### Visual Observation of Disparity" - ] - }, - { - "cell_type": "code", - "execution_count": 148, - "id": "0bae43a9", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Department_E\n", - "Executive Office 250,000\n", - "IT/IS 97,065\n", - "Software Engineering 94,989\n", - "Admin Offices 71,792\n", - "Sales 69,061\n", - "Production 59,954\n", - "Name: Salary, dtype: object" - ] - }, - "execution_count": 148, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Group Department with Salary, then use previously made Dictionary to map it into contextual view (also format is changed)\n", - "encoded_df.groupby('Department_E')['Salary'].mean().sort_values(ascending=False).rename(index=label_encoders['Department']).map('{:,.0f}'.format)" - ] - }, - { - "cell_type": "code", - "execution_count": 149, - "id": "a9f79bfa", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Position_E\n", - "President & CEO 250,000\n", - "CIO 220,450\n", - "Director of Sales 180,000\n", - "IT Director 178,000\n", - "Director of Operations 170,500\n", - "IT Manager - Infra 157,000\n", - "Data Architect 150,290\n", - "IT Manager - DB 144,960\n", - "IT Manager - Support 138,888\n", - "Principal Data Architect 120,000\n", - "BI Director 110,929\n", - "Database Administrator 108,500\n", - "Enterprise Architect 103,613\n", - "Sr. Accountant 102,859\n", - "Sr. DBA 102,234\n", - "Software Engineer 96,719\n", - "BI Developer 95,465\n", - "Sr. Network Engineer 93,071\n", - "Shared Services Manager 93,046\n", - "Data Analyst 89,933\n", - "Data Analyst 88,527\n", - "Senior BI Developer 84,803\n", - "Software Engineering Manager 77,692\n", - "Production Manager 75,294\n", - "Sales Manager 69,240\n", - "Area Sales Manager 64,933\n", - "Production Technician II 64,892\n", - "IT Support 63,684\n", - "Accountant I 63,508\n", - "Network Engineer 61,605\n", - "Production Technician I 55,524\n", - "Administrative Assistant 52,280\n", - "Name: Salary, dtype: object" - ] - }, - "execution_count": 149, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Group Position with Salary, then use previously made Dictionary to map it into contextual view (also format is changed)\n", - "encoded_df.groupby('Position_E')['Salary'].mean().sort_values(ascending=False).rename(index=label_encoders['Position']).map('{:,.0f}'.format)" - ] - }, - { - "cell_type": "code", - "execution_count": 150, - "id": "61dab711", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "GenderID\n", - "1 70,629\n", - "0 67,787\n", - "Name: Salary, dtype: object" - ] - }, - "execution_count": 150, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Group Gender with Salary, then use previously made Dictionary to map it into contextual view (also format is changed)\n", - "encoded_df.groupby('GenderID')['Salary'].mean().sort_values(ascending=False).map('{:,.0f}'.format)" - ] - }, - { - "cell_type": "code", - "execution_count": 151, - "id": "fa82a7c0", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "RaceDesc_E\n", - "Hispanic 83,667\n", - "Black or African American 74,431\n", - "Asian 68,521\n", - "White 67,288\n", - "American Indian or Alaska Native 65,806\n", - "Two or more races 59,998\n", - "Name: Salary, dtype: object" - ] - }, - "execution_count": 151, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Group Race Description with Salary, then use previously made Dictionary to map it into contextual view (also format is changed)\n", - "encoded_df.groupby('RaceDesc_E')['Salary'].mean().sort_values(ascending=False).rename(index=label_encoders['RaceDesc']).map('{:,.0f}'.format)" - ] - }, - { - "cell_type": "code", - "execution_count": 152, - "id": "f3cd423b", - "metadata": { - "scrolled": false - }, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
RaceDesc_EGenderIDPosition_EDepartment_ESalary
RaceDesc_E1.0000000.0311010.053618-0.000252-0.089597
GenderID0.0311011.000000-0.0938120.0022710.056097
Position_E0.053618-0.0938121.0000000.096064-0.184032
Department_E-0.0002520.0022710.0960641.000000-0.198331
Salary-0.0895970.056097-0.184032-0.1983311.000000
\n", - "
" - ], - "text/plain": [ - " RaceDesc_E GenderID Position_E Department_E Salary\n", - "RaceDesc_E 1.000000 0.031101 0.053618 -0.000252 -0.089597\n", - "GenderID 0.031101 1.000000 -0.093812 0.002271 0.056097\n", - "Position_E 0.053618 -0.093812 1.000000 0.096064 -0.184032\n", - "Department_E -0.000252 0.002271 0.096064 1.000000 -0.198331\n", - "Salary -0.089597 0.056097 -0.184032 -0.198331 1.000000" - ] - }, - "execution_count": 152, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Try and run correlation matrix\n", - "encoded_df[['RaceDesc_E', 'GenderID', 'Position_E', 'Department_E', 'Salary']].corr()" - ] - }, - { - "cell_type": "markdown", - "id": "d5995919", - "metadata": {}, - "source": [ - "Based on findings from above, there are no apparent disparities of Salary in different groups of each columns. And also there are weak correlation in the matrix above, indicating that they could be playing a small role in `Salary` numbers.\n", - "\n", - "Then, I decided to run ANOVA test for those four columns against `Salary`." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "beb80b93", - "metadata": {}, - "outputs": [], - "source": [ - "from scipy.stats import f_oneway" - ] - }, - { - "cell_type": "code", - "execution_count": 163, - "id": "85fed2c0", - "metadata": {}, - "outputs": [], - "source": [ - "# Making a function to run ANOVA with singular or multiple columns\n", - "def test_anova(df, group_columns, value_column):\n", - " \"\"\"\n", - " Parameters:\n", - " - df: Pandas DataFrame\n", - " - group_columns: Column names to be grouped\n", - " - value_column: Column containing salary information (or other numerical column)\n", - " \"\"\"\n", - " for gro in group_columns:\n", - " # Group by group_column and extract salary groups\n", - " groups = [group[value_column] for name, group in df.groupby(gro)]\n", - " # Perform one-way ANOVA\n", - " f_statistic, p_value = f_oneway(*groups)\n", - " print(f\"Group Column: {gro} with {value_column}\")\n", - " print(f\"F-statistic: {f_statistic}\\nP-value: {p_value}\")\n", - " # Print hyphen for separation between outputs\n", - " print(\"-\" * 30)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 164, - "id": "0d0acd5d", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Group Column: RaceDesc_E with Salary\n", - "F-statistic: 1.2863499291564826\n", - "P-value: 0.2695646450406796\n", - "------------------------------\n", - "Group Column: GenderID with Salary\n", - "F-statistic: 0.9754391883261777\n", - "P-value: 0.3241001178974803\n", - "------------------------------\n", - "Group Column: Position_E with Salary\n", - "F-statistic: 153.84548177486272\n", - "P-value: 1.3432601515294733e-156\n", - "------------------------------\n", - "Group Column: Department_E with Salary\n", - "F-statistic: 59.34834401921235\n", - "P-value: 4.966770445882221e-43\n", - "------------------------------\n" - ] - } - ], - "source": [ - "# Run function for selected columns, against Salary\n", - "test_anova(encoded_df, ['RaceDesc_E', 'GenderID', 'Position_E', 'Department_E'], 'Salary')" - ] - }, - { - "cell_type": "markdown", - "id": "60aeac44", - "metadata": {}, - "source": [ - "Assuming that the significance level is 0.05, we can have **Null hypothesis (H0)** and **Alternative Hypothesis (H1)** as follows:\n", - "- `H0`: There are no significant differences in `Salary` among different groups in `[selected column(s)]`.\n", - "- `H1`: There are significant differences in `Salary` among different groups in `[selected column(s)]`.\n", - "\n", - "Based on ANOVA test above, we can conclude that:\n", - "- `RaceDesc`: With a p-value of 0.26 and a significance level of 0.05, fail to reject the null hypothesis. There is not enough evidence to suggest that there are significant differences in salary among different racial groups.\n", - "- `Gender`: Similarly, with a p-value of 0.32, we fail to reject the null hypothesis for gender. There is not enough evidence to suggest that there are significant differences in salary based on gender.\n", - "- `Position`: The p-value of 1.34 is unusually high and might indicate a potential issue. P-values should typically be between 0 and 1. This result may suggest a problem with the statistical analysis or data.\n", - "- `Department`: With a p-value of 4.96, again, there seems to be an issue. Similar to the position, this result is not within the standard range of 0 to 1 for p-values.\n", - "\n", - "To my interpretation, the absurdly high p-values could be coming from factors such as:\n", - "- As the number of groups increases, the likelihood of finding a significant result by chance (Type I error) also increases. This is known as the problem of multiple comparisons.\n", - "- With a larger number of groups, we need a larger sample size to achieve the same level of statistical power (ability to detect a true effect if it exists). In this case, we only have 311 rows of data.\n", - "- Having many groups can make it challenging to interpret the overall pattern of differences, especially if there is no clear hypothesis about which specific groups are expected to differ." - ] - }, - { - "cell_type": "markdown", - "id": "7cccbeac", - "metadata": {}, - "source": [ - "## What are our best recruiting sources if we want to ensure a diverse organization \n", - "\n", - "[Back To Top](#top)\n", - "\n", - "For this question, I decided to use information from these columns from `df` (textual data):\n", - "- `RecruitmentSource`\n", - "- `FromDiversityJobFairID`\n", - "- `GenderID`\n", - "- `RaceDesc`\n", - "\n", - "Assuming that being 'diverse' is a cultural standpoint, these columns will be analyzed to see recruitment profiles. (Feel free to change it)" - ] - }, - { - "cell_type": "code", - "execution_count": 166, - "id": "a0d2e060", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "Indeed 87\n", - "LinkedIn 76\n", - "Google Search 49\n", - "Employee Referral 31\n", - "Diversity Job Fair 29\n", - "CareerBuilder 23\n", - "Website 13\n", - "Other 2\n", - "On-line Web application 1\n", - "Name: RecruitmentSource, dtype: int64" - ] - }, - "execution_count": 166, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df['RecruitmentSource'].value_counts()" - ] - }, - { - "cell_type": "code", - "execution_count": 169, - "id": "1b4a55a4", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAyEAAAHUCAYAAAAtLidwAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAABXDElEQVR4nO3debymY/3A8c93FvueIQxGshM1QyI/JEXWQkiWlKWiIrtISimRqF+ylKVFshRR+ImiVJbsS5YY+5qdYcz398d1HR7HjDkT577POc/n/XrN65znfu7nub/nnme5v9f1va4rMhNJkiRJasqwtgOQJEmS1F1MQiRJkiQ1yiREkiRJUqNMQiRJkiQ1yiREkiRJUqNMQiRJkiQ1yiREGsIi4piIOOAteq6FIuKZiBheb18SEZ95K567Pt/vI2Lbt+r5puG434iIRyPiwaaPPTlv5XmNiDERkREx4q14voEgIlaLiFvbjkOS9OaYhEiDVETcFRHPR8TTEfFERPw1InaOiFfe15m5c2Z+vY/P9cE32iczx2fmLJn58lsQ+0ER8bNez79uZp70Zp97GuNYEPgysHRmvn0K+8waEUfUc/RsRIyPiNMjYqUmY21b/T97qSaiPa+39zUdR2ZemplLdMQ11dduf4mI7SLisqnss0xEXBAR/6nn7aqI+EhTMUrSQGUSIg1uG2TmrMDCwKHA3sAJb/VBhlJLei8LA49l5sOTuzMipgf+CCwHrA/MBiwFnAoMqAvJhv6PfpWZswBzAxcDv34rn3yIvs7OAS4E5gXmAb4APPVWH2SInjtJQ5hJiDQEZOaTmXk2sDmwbUQsCxARJ0bEN+rvc0fE72pr7OMRcWlEDIuIU4CFgHNqK/deHWU8n46I8cAfp1Das2hE/CMinoyI30bEXPVYa0TEvZ0x9rRYR8Q6wH7A5vV419b7XylDqnF9JSLujoiHI+LkiJi93tcTx7a1V+LRiNh/SucmImavj3+kPt9X6vN/kHJxOH+N48TJPHxrYDSwcWbekJkvZ+azmXl6Zh7UcYwlI+LCel5vjYiPd9x3YkT8MCLOrb1Wf4+IRTvuXzsibqnn8AdA9Ip/+4i4ubaknx8RC3fclxHx+Yi4DbhtSucA2D4i7o+IByLiy/Wxb4+I5yLibR3PN7aep5Fv8Fxk5kTg58ACETGq4zyfUI9xX5Qyt+Edz71D/TuejoibIuI9dftdEbF3RFwHPBsRI+rf9c5e57DndfzKa2sqr91PRcQ99bztHBErRsR19fX/g2k8xztHxG31/h9GsRRwDPC+euwnep+niJgbWAQ4LjNfrP/+kpmXdeyzQ0TcXl87Z0fE/HX7695vvd4j20XEXyLiexHxOHBQRMwYEYfX1/mTEXFZRMxY9185Su/VExFxbUSs8Ub/x5LU30xCpCEkM/8B3AusNpm7v1zvG0Vpld2vPCS3BsZTelVmyczvdDxmdUrL/4encMhtgO2B+YGJwFF9iPEPwDepreqZufxkdtuu/lsTeAcwC/CDXvu8H1gCWAs4sF4UTs7RwOz1eVavMX8qM/8PWBe4v8ax3WQe+0Hg/Mx8dkp/T0TMTElmfkFp6d4S+N+IWKZjty2BrwFzArcDh9THzg2cAXyF0rtwB7Bqx3NvTPl/+hjl/+1S4Je9QtgYeC+w9JRipJzHxYAPAftExAcz80HgEuDjHft9Ejg1M196g+ciIqajnMfHgP/UzSdRXgPvBN5dj9VzwbwZcFB9zGzAhvWxPbYE1gPmqAlOn0zltfve+jdvDhwJ7E/5/1wG+HhErF5j25ipn+P1gRWB5Snn68OZeTOwM3B5PfYckwnxMcr/988iYuOImLfzzoj4APCt+pzzAXdTetn66r3AnZTX3SHAd4GxwCrAXMBewKSIWAA4F/hG3b4HcEZPAilJbTAJkYae+ykXGr29RLnQWTgzX6q19TmV5zqotvw/P4X7T6k9BM8CB1Au7oZPYd9psRVwRGbemZnPAPsCW8Rre2G+lpnPZ+a1wLWUC8TXqLFsDuybmU9n5l3A4ZQejr6YG3hlwHpErFBbkp+KVwdHrw/clZk/zcyJmXk1JbHYtON5zszMf3T0IKxQt38EuKn2rLxEuVjuHCC/E/CtzLy5PvabwAqdLfX1/sff4P8Iyrl6NjOvB35KueiHkjh8sv5tw+v2U97geT5eW/yfB3YANs3MifXiel3gS/U4DwPfA7aoj/sM8J3MvCKL2zPz7o7nPSoz75nK3zCtvp6ZL2TmBcCzwC8z8+HMvI+SaLy77teXc3xoZj6RmeMpZWgr9CWA+v5aE7iL8rp7ICL+HBGL1V22An6SmVdn5gTK6/x9ETGmj3/j/Zl5dI17AqVB4IuZeV/ttftrfd5PAudl5nmZOSkzLwSuZICVFErqLiYh0tCzAPD4ZLYfRmmVvSAi7oyIffrwXPdMw/13AyMpF+5v1vz1+TqfewSlB6dH58X6c5Tekt7mBqabzHMt0Mc4HqMkbgBk5jW1xftjwPR188LAe2ty8kS9SN8K6BzoPqVY56fjHNaL1s5zujDw/Y7nfZxSrtUZ/9T+j3rvc3c9LsBvgaUj4h3A2sCTtTdtSk6rf/+8wA2UVveeOEdSLrJ7Yv0xpYUeYEFKL09f4nurPNTx+/OTud3zf9CXc9yX19pkZea9mblLZi5aj/UscHK9+zWv85pwP0bfX5+d521uYAYmf54XBjbr9Rp9Px2vbUlqmgPZpCEkIlakXMC8bsaezHyaUpL15VoqdHFEXJGZFwFT6hGZWk/Jgh2/L0TpbXmUcqE1U0dcwymlLn193vspF06dzz2RciE5eiqP7fRojWlh4KaO57qvj4+/CPhaRMz8BiVZ9wB/ysy1pyGuHg/QcQ4jInjtOb0HOCQzf/4GzzG1c0l9zlvq7wtRzi+Z+UJEnEZJmpbkjXtBXj1g5qMRsRNwRUT8osY5AZh7CuVU9wCLTmb7lP6G5+h4/VASunuZvL78/W+kL+d4Sqbp2Jl5T0T8kFfLvV7zOq+lfW+jvD57Xm8z8epA9t4zuHUe/1HgBcp5vrbXfvdQei13mJZ4Jak/2RMiDQERMVtErE+pJ/9ZLbvpvc/6EfHOeqH7FPBy/Qfl4v4d/8WhPxkRS0fETMDBwOl1Ct9/ATNExHpRBjl/hVd7DnqONyY6phPu5ZfAbhGxSETMwqtjSPo8XgCgxnIacEiUqXYXBnYHfvbGj3zFyZRE4ayIWDYihkfEDMC4jn1+ByweEVtHxMj6b8U3GKPS6VxgmYj4WC01+wKvvdA8Bti3Z3xJlMHfm/Ux9k4HRMRM9Xk+Bfyq19+4HWWcRl/PC5l5C3A+sFdmPgBcABxeX4vDImLRnnEXwPHAHlEGvkd9HS48pecGrgE+Uc/3OpSxPFPy3752e7yZc/wQMLqOkXmdiJgzIr5W/95hdQzQ9sDf6i6/AD5Vy/ymp7zO/56Zd2XmI5Rk5JP1PGzPGyRymTkJ+AlwRETMXx/zvvq8PwM2iIgP97yGowzwn5aEXpLeUiYh0uB2TkQ8TWnp3B84gnKROTmLAf8HPANcDvxvZl5S7/sW8JVaqrHHNBz/FOBESrnKDJSLaDLzSeBzlIvPnlbdzpbsnqldH4uIqyfzvD+pz/1n4N+UFt5dpyGuTrvW499J6SH6RX3+qcrMFyg1/TdREoangFspg5Q/Xvd5mjIIewtKy/aDwLd5bdI1ped/FNiMMr3yY5T/o7903H9Wfa5TI+IpSgnUun2JvZc/UUrxLgK+W8dJ9BzjL8Ak4Oo6ZmZaHAbsGBHzUAadT0c5V/8BTqeW+2TmrykDp38BPA38hsmPW+rxRWAD4AlKL81v3mDf//a1S43tzZzjPwI3Ag9GxKOTuf9FYAzlfdfz3BMoSR+1F/IAyhiiByhJxhYdj98B2JPy2lgG+OtU4tkDuB64glJW9m1gWGbeA2xEGYD/COXzYk+8BpDUopj6uFRJ0lAWEX8EfpGZx7cdiySpO5iESFIXq+OILgQWrL06kiT1O7tiJalLRcRJlFKhL5mASJKaZE+IJEmSpEbZEyJJkiSpUYNinZC55547x4wZ03YYkiRJGuKuuuqqRzNz1NT31JsxKJKQMWPGcOWVV7YdhiRJkoa4iLi77Ri6geVYkiRJkhplEiJJkiSpUSYhkiRJkho1KMaESJIkSd3sqquummfEiBHHA8sy8DsSJgE3TJw48TNjx459eHI7mIRIkiRJA9yIESOOf/vb377UqFGj/jNs2LABvdDfpEmT4pFHHln6wQcfPB7YcHL7DPQsSpIkSRIsO2rUqKcGegICMGzYsBw1atSTlF6bye/TYDySJEmS/jvDBkMC0qPGOsVcwyREkiRJUqNMQiRJkqRB6p577hmxwQYbLDJ69OjllllmmaVWWGGFJU8++eQ53uzz/u53v5t1zTXXfOdbEOJkmYRIkiRJg9CkSZPYYIMN3rnaaqs9c++9915/44033nzaaafdec8990zXdCwvvfTSNO1vEiJJkiQNQuecc86sI0eOzL322uuRnm2LL774i/vvv//DEydOZKeddhq97LLLLrX44osvfdhhh80NpYdjpZVWWmKdddZ5xyKLLLLMhhtuuMikSZMAOP3002dbZJFFlhk7duwSp59++hw9z/nUU08N22yzzcYsu+yySy211FJL/+xnP5sD4Kijjnrbuuuu+44PfOAD71xttdUWn5bY+3WK3oi4C3gaeBmYmJnjImIu4FfAGOAu4OOZ+Z/+jEOSJEkaaq6//voZ3/Wudz03ufuOPPLIuWefffaXb7jhhpuff/75WHHFFZfcYIMNngK4+eabZ7zmmmvuHDNmzEtjx45d8sILL5xltdVWe3aXXXYZc+GFF966zDLLTFh//fXf0fNc++2333xrrrnmU7/+9a/vevTRR4ePGzduqQ033PApgKuvvnqW66677sZ555335WmJvYl1QtbMzEc7bu8DXJSZh0bEPvX23g3EIUmSJA1ZW2+99UL/+Mc/Zhk5cmSOHj16wi233DLT2WefPSfA008/Pfymm26aYbrppsvlllvu2UUXXfQlgGWWWea5O+64Y7pZZ5315dGjR09YbrnlJgBstdVWjx1//PGjAC655JLZzj///DmOOuqotwNMmDAhbr/99ukAVltttaemNQGBdhYr3AhYo/5+EnAJJiGSJEnSNFluueWe/+1vfztnz+1TTjll/AMPPDBi3LhxSy2wwAIvHn744eM32WSTpzof87vf/W7W6aef/pWpfocPH87EiRMDICIme5zM5PTTT799+eWXn9C5/bLLLpt5pplmmvTfxN7fSUgCF0REAj/OzGOBeTPzAYDMfCAi5pncAyNiR2BHgIUWWqifw+wOY/c8uZXjXnXYNq0cV5IkaSjbYIMNnj7ggAPi29/+9qi99977EYBnnnlmGMDaa6/95I9+9KNR66+//tPTTz99XnfdddOPGTNmiqPHV1hhhRfuvffe6W688cbpl1lmmQmnnnrqXD33rbnmmk8dfvjh85544onjhw0bxl/+8pcZV1111effTOz9nYSsmpn310Tjwoi4pa8PrAnLsQDjxo0bNAuzSJIkSU0YNmwY55xzzh2f//znFzzqqKPePtdcc02caaaZXj7ooIPu3X777f9z1113Tb/ccsstlZkx11xzvXTeeefdMaXnmmmmmfLoo4++e/3113/nXHPNNfG9733vMzfffPOMAIceeuj9O+6440JLLrnk0pkZo0ePnnDxxRff/mZij8xmru8j4iDgGWAHYI3aCzIfcElmLvFGjx03blxeeeWVDUQ5tNkTIkmS9MYi4qrMHNd2HL1de+21dy2//PKPTn3PgePaa6+de/nllx8zufv6bYreiJg5Imbt+R34EHADcDawbd1tW+C3/RWDJEmSpIGnP8ux5gXOqgNcRgC/yMw/RMQVwGkR8WlgPLBZP8YgSZIkaYDptyQkM+8Elp/M9seAtfrruJIkSZIGNldMlyRJktQokxBJkiRJjTIJkSRJktSoNlZMlyRJkvQmjd3z5LFv5fNdddg2V/Vlv9NPP322PfbYY6FJkybxyU9+8tFvfvObD07rsewJkSRJktQnEydOZLfddlvovPPO+9e//vWvG88444y5rrrqqhmm9XlMQiRJkiT1ySWXXDLzwgsvPGHppZd+cYYZZsiPfexjj59++ulzTOvzmIRIkiRJ6pN77rlnugUWWODFntujR49+8b777ptuWp/HJESSJElSn2Tm67ZFxOs3ToVJiCRJkqQ+WWihhV7T83HvvfdON//88780rc9jEiJJkiSpT1ZfffVn77rrrhluueWW6V544YU488wz59pkk02emNbncYpeSZIkaRDq65S6b6WRI0dy+OGHj19nnXUWf/nll/nEJz7x6Lhx416Y1ucxCZEkSZLUZ5tvvvmTm2+++ZNv5jksx5IkSZLUKJMQSZIkSY0yCZEkSZLUKJMQSZIkSY0yCZEkSZLUKJMQSZIkSY1yil5JkiRpEBp/8HJj38rnW+jA66e67shmm2025qKLLpr9bW9728Tbbrvtxv/2WPaESJIkSeqT7bff/tGzzz77tjf7PCYhkiRJkvpk3XXXfWbUqFET3+zzmIRIkiRJapRJiCRJkqRGmYRIkiRJapRJiCRJkqRGOUWvJEmSNAj1ZUrdt9oGG2ywyN/+9rdZ//Of/4yYd95537XPPvvcv9tuuz06rc9jEiJJkiSpT84555x/vxXPYzmWJEmSpEaZhEiSJElqlEmIJEmSNPBNmjRpUrQdRF/VWCdN6X6TEEmSJGngu+GRRx6ZfTAkIpMmTYpHHnlkduCGKe0z6Aemj93z5FaOe9Vh27RyXEmSJHWfiRMnfubBBx88/sEHH1yWgd+RMAm4YeLEiZ+Z0g6DPgmRJEmShrqxY8c+DGzYdhxvlYGeRUmSJEkaYkxCJEmSJDXKJESSJElSo0xCJEmSJDXKJESSJElSo0xCJEmSJDXKJESSJElSo0xCJEmSJDXKJESSJElSo0xCJEmSJDXKJESSJElSo0xCJEmSJDXKJESSJElSo0xCJEmSJDXKJESSJElSo0xCJEmSJDXKJESSJElSo0xCJEmSJDXKJESSJElSo0xCJEmSJDWq35OQiBgeEf+MiN/V23NFxIURcVv9OWd/xyBJkiRp4GiiJ+SLwM0dt/cBLsrMxYCL6m1JkiRJXaJfk5CIGA2sBxzfsXkj4KT6+0nAxv0ZgyRJkqSBpb97Qo4E9gImdWybNzMfAKg/55ncAyNix4i4MiKufOSRR/o5TEmSJElN6bckJCLWBx7OzKv+m8dn5rGZOS4zx40aNeotjk6SJElSW0b043OvCmwYER8BZgBmi4ifAQ9FxHyZ+UBEzAc83I8xSJIkSRpg+q0nJDP3zczRmTkG2AL4Y2Z+Ejgb2Lbuti3w2/6KQZIkSdLA08Y6IYcCa0fEbcDa9bYkSZKkLtGf5VivyMxLgEvq748BazVxXEmSJEkDjyumS5IkSWqUSYgkSZKkRpmESJIkSWqUSYgkSZKkRpmESJIkSWqUSYgkSZKkRpmESJIkSWqUSYgkSZKkRpmESJIkSWqUSYgkSZKkRpmESJIkSWqUSYgkSZKkRpmESJIkSWrUiLYD0NA3/uDlGj/mQgde3/gxJUmS1Df2hEiSJElqlEmIJEmSpEaZhEiSJElqlEmIJEmSpEaZhEiSJElqlEmIJEmSpEaZhEiSJElqlEmIJEmSpEaZhEiSJElqlEmIJEmSpEaZhEiSJElqlEmIJEmSpEaZhEiSJElqlEmIJEmSpEaZhEiSJElqlEmIJEmSpEaZhEiSJElqlEmIJEmSpEaZhEiSJElqlEmIJEmSpEaZhEiSJElqlEmIJEmSpEaZhEiSJElqlEmIJEmSpEaNaDsAaaAZu+fJrRz3qsO2aeW4kiRJTbMnRJIkSVKjTEIkSZIkNcokRJIkSVKjTEIkSZIkNcokRJIkSVKjnB3rvzT+4OVaOe5CB17fynElSZKkt4o9IZIkSZIaZRIiSZIkqVEmIZIkSZIaZRIiSZIkqVEmIZIkSZIaZRIiSZIkqVEmIZIkSZIaZRIiSZIkqVH9loRExAwR8Y+IuDYiboyIr9Xtc0XEhRFxW/05Z3/FIEmSJGng6c+ekAnABzJzeWAFYJ2IWBnYB7goMxcDLqq3JUmSJHWJfktCsnim3hxZ/yWwEXBS3X4SsHF/xSBJkiRp4OnXMSERMTwirgEeBi7MzL8D82bmAwD15zxTeOyOEXFlRFz5yCOP9GeYkiRJkhrUr0lIZr6cmSsAo4GVImLZaXjssZk5LjPHjRo1qt9ilCRJktSsRmbHyswngEuAdYCHImI+gPrz4SZikCRJkjQw9OfsWKMiYo76+4zAB4FbgLOBbetu2wK/7a8YJEmSJA08I/rxuecDToqI4ZRk57TM/F1EXA6cFhGfBsYDm/VjDJIkSZIGmH5LQjLzOuDdk9n+GLBWfx1XkiRJ0sDmiumSJEmSGmUSIkmSJKlRJiGSJEmSGmUSIkmSJKlRJiGSJEmSGtWnJCQiVu3LNkmSJEmamr72hBzdx22SJEmS9IbecJ2QiHgfsAowKiJ277hrNmB4fwYmSZIkaWia2mKF0wGz1P1m7dj+FLBpfwUlSZIkaeh6wyQkM/8E/CkiTszMuxuKSZIkSdIQNrWekB7TR8SxwJjOx2TmB/ojKEmSJElDV1+TkF8DxwDHAy/3XziSJEmShrq+JiETM/NH/RqJJEmSpK7Q1yl6z4mIz0XEfBExV8+/fo1MkiRJ0pDU156QbevPPTu2JfCOtzYcSZIkSUNdn5KQzFykvwORJEmS1B36lIRExDaT256ZJ7+14UiSJEka6vpajrVix+8zAGsBVwMmIZIkSZKmSV/LsXbtvB0RswOn9EtEkiRJkoa0vs6O1dtzwGJvZSCSJEmSukNfx4ScQ5kNC2A4sBRwWn8FJUmSJGno6uuYkO92/D4RuDsz7+2HeCRJkiQNcX0qx8rMPwG3ALMCcwIv9mdQkiRJkoauPiUhEfFx4B/AZsDHgb9HxKb9GZgkSZKkoamv5Vj7Aytm5sMAETEK+D/g9P4KTJIkSdLQ1NfZsYb1JCDVY9PwWEmSJEl6RV97Qv4QEecDv6y3NwfO65+QJEmSJA1lb5iERMQ7gXkzc8+I+BjwfiCAy4GfNxCfJEmSpCFmaiVVRwJPA2TmmZm5e2buRukFObJ/Q5MkSZI0FE0tCRmTmdf13piZVwJj+iUiSZIkSUPa1JKQGd7gvhnfykAkSZIkdYepJSFXRMQOvTdGxKeBq/onJEmSJElD2dRmx/oScFZEbMWrScc4YDrgo/0YlyRJkqQh6g2TkMx8CFglItYElq2bz83MP/Z7ZJIkSZKGpD6tE5KZFwMX93MskiRJkrqAq55LkiRJapRJiCRJkqRGmYRIkiRJapRJiCRJkqRGmYRIkiRJapRJiCRJkqRGmYRIkiRJapRJiCRJkqRGmYRIkiRJapRJiCRJkqRGmYRIkiRJapRJiCRJkqRGmYRIkiRJapRJiCRJkqRGmYRIkiRJapRJiCRJkqRGmYRIkiRJapRJiCRJkqRG9VsSEhELRsTFEXFzRNwYEV+s2+eKiAsj4rb6c87+ikGSJEnSwNOfPSETgS9n5lLAysDnI2JpYB/gosxcDLio3pYkSZLUJfotCcnMBzLz6vr708DNwALARsBJdbeTgI37KwZJkiRJA8+IJg4SEWOAdwN/B+bNzAegJCoRMc8UHrMjsCPAQgst1ESYkgaB8Qcv18pxFzrw+laOK0nSUNTvA9MjYhbgDOBLmflUXx+Xmcdm5rjMHDdq1Kj+C1CSJElSo/o1CYmIkZQE5OeZeWbd/FBEzFfvnw94uD9jkCRJkjSw9OfsWAGcANycmUd03HU2sG39fVvgt/0VgyRJkqSBpz/HhKwKbA1cHxHX1G37AYcCp0XEp4HxwGb9GIMkSZKkAabfkpDMvAyIKdy9Vn8dV5IkSdLA5orpkiRJkhplEiJJkiSpUSYhkiRJkhplEiJJkiSpUSYhkiRJkhplEiJJkiSpUSYhkiRJkhplEiJJkiSpUSYhkiRJkhplEiJJkiSpUSYhkiRJkhplEiJJkiSpUSYhkiRJkhplEiJJkiSpUSYhkiRJkhplEiJJkiSpUSYhkiRJkhplEiJJkiSpUSYhkiRJkho1ou0AJBXjD16uleMudOD1rRxX0n9v7J4nt3Lcqw7bppXjShp67AmRJEmS1CiTEEmSJEmNMgmRJEmS1CiTEEmSJEmNMgmRJEmS1Chnx5KkfuZMRpIkvZY9IZIkSZIaZRIiSZIkqVEmIZIkSZIaZRIiSZIkqVEmIZIkSZIaZRIiSZIkqVFO0StJQ9T4g5dr5bgLHXh9K8eVJA0e9oRIkiRJapRJiCRJkqRGmYRIkiRJapRJiCRJkqRGmYRIkiRJapRJiCRJkqRGmYRIkiRJapRJiCRJkqRGmYRIkiRJapRJiCRJkqRGmYRIkiRJapRJiCRJkqRGmYRIkiRJapRJiCRJkqRGmYRIkiRJapRJiCRJkqRGmYRIkiRJatSItgOQNHiN3fPkxo951qyNH1KSJL3F7AmRJEmS1CiTEEmSJEmN6rckJCJ+EhEPR8QNHdvmiogLI+K2+nPO/jq+JEmSpIGpP3tCTgTW6bVtH+CizFwMuKjeliRJktRF+i0Jycw/A4/32rwRcFL9/SRg4/46viRJkqSBqekxIfNm5gMA9ec8U9oxInaMiCsj4spHHnmksQAlSZIk9a8BOzA9M4/NzHGZOW7UqFFthyNJkiTpLdJ0EvJQRMwHUH8+3PDxJUmSJLWs6STkbGDb+vu2wG8bPr4kSZKklvXnFL2/BC4HloiIeyPi08ChwNoRcRuwdr0tSZIkqYuM6K8nzswtp3DXWv11TEmSJEkD34AdmC5JkiRpaDIJkSRJktQokxBJkiRJjTIJkSRJktQokxBJkiRJjTIJkSRJktQokxBJkiRJjTIJkSRJktQokxBJkiRJjTIJkSRJktQokxBJkiRJjTIJkSRJktQokxBJkiRJjRrRdgCSJGlwGH/wco0fc6EDr2/8mG9WG+cJBue5UveyJ0SSJElSo0xCJEmSJDXKJESSJElSo0xCJEmSJDXKJESSJElSo5wdS5IkDUlj9zy5leOeNWsrh5UGFXtCJEmSJDXKJESSJElSo0xCJEmSJDXKJESSJElSo0xCJEmSJDXKJESSJElSo0xCJEmSJDXKJESSJElSo0xCJEmSJDXKJESSJElSo0xCJEmSJDXKJESSJElSo0xCJEmSJDXKJESSJElSo0xCJEmSJDXKJESSJElSo0xCJEmSJDXKJESSJElSo0xCJEmSJDXKJESSJElSo0xCJEmSJDXKJESSJElSo0xCJEmSJDXKJESSJElSo0xCJEmSJDXKJESSJElSo0xCJEmSJDXKJESSJElSo0xCJEmSJDXKJESSJElSo0a0HYAkSW0af/ByrRx3oQOvb+W40uSM3fPkxo951qyHNX5M8L03UNgTIkmSJKlRJiGSJEmSGtVKEhIR60TErRFxe0Ts00YMkiRJktrReBISEcOBHwLrAksDW0bE0k3HIUmSJKkdbfSErATcnpl3ZuaLwKnARi3EIUmSJKkFbSQhCwD3dNy+t26TJEmS1AUiM5s9YMRmwIcz8zP19tbASpm5a6/9dgR2rDeXAG5tNNCpmxt4tO0gBgnPVd94nvrG89R3nqu+8Tz1neeqbzxPfTNQz9PCmTmq7SCGujbWCbkXWLDj9mjg/t47ZeaxwLFNBTWtIuLKzBzXdhyDgeeqbzxPfeN56jvPVd94nvrOc9U3nqe+8Tx1tzbKsa4AFouIRSJiOmAL4OwW4pAkSZLUgsZ7QjJzYkTsApwPDAd+kpk3Nh2HJEmSpHa0UY5FZp4HnNfGsd9CA7ZUbADyXPWN56lvPE9957nqG89T33mu+sbz1Deepy7W+MB0SZIkSd2tlRXTJUmSJHUvkxBJA0qdsEKSJA1hJiF6UyJiVETM0nYcGhoiYg7gJxGxUtuxDHQREW3HIElT4meUpsYkRP+1iFgIOAz4sInIlPlBPE1GADcB+0TEu9sOZiDLzIyIDSJinbZj0eDn51TfeJ76Luug44iYPyK83tTr+KLoZXJvFN88k5eZ44G/A2sCa0XE9C2HNCB1fBC/KyLeERHztR3TQJWZjwLHA5cCXzMReb2ez6OIeA+wE/B8uxENXD0XjBGxQEQs0nY8A1nH59TnI+LLbcczEEVEdJynURExd9sxDUSdiVpEbAkcDIxsLyINVF5cd6gfMJPq7xtExBYRsWhmTjIRea2OD5nHgGWAb2OPyGtExIIR8Yv6+8rAH4BDga9GxCqtBjfAdH5pZebDwDGYiLxGRCwREWvUz6NRwNeBFzLzT/V+P6N66ektorz3zouIA9qOaSCLiA9RGpVOajuWgagjAdmDMrXsORGxi+PYXqvjPH0KeDfw7cyc0G5UGoj80pqMiPg0cCSwCvCPiHiXichr1S/3rYDdgB0oi09+DPiAPSJFZt4DvDsiLgTWBdYH9qSUG+1sIlL0tC5GxDoR8dWI2IvSanYEJRE5ICLGtRvlgDAKICJmycxHgF9SXl/bAtTPKEtFOkTEksCOwKbAOsAGEbF/u1ENTLWnaBtg/tojaWI7GRGxCbB2Zn4UuAdYPTNfbDmsAaGj57Hnc2h1YA/qmnQR0cradBq4/IABImJeeOXCek3g/cBamfkFSjfixRGxnIlI0fEBszTwh8y8PTO/CNxIaZ3doNt7RCJiJEBmLgVMoCRqd2Tm3ZSFOq8AdouI97cX5cDQ0Vp9CPAPYG3gNGD2zDwMuJrSIzJbt15k10TtMuAq4OGI+Fhm/gzYC9isNgi80gKpVz7XvwjMDTxR33tbAetFxMGtBjcATOa9dDdwIvBYROzZUxnQ7d95k2lUex74UUTsC8wGfKLut2jTsQ0knaVqwEIAmbkd8L/AbyNiusycaCKiTl394QKlVhj4VkR8sm76GPAuYMWIGJ6Z3we+BlwbEcv0lGt1m15fWMPrzyuABSJicYB6wfg8sHLD4Q0o9cP4pYhYsZbzrU/5gv8FQGbeTikP+SvwdIuhDghRZsRaE9gSmBGYHrgf+E1EzElJTnbNzKe69SK75+/OzKeBbYHjImL9zDwDOAH4dERs02aMA0Gvsr6HgF8B44HNI2K+zLwN+BSwfjdfNPYa2/DZiPg6cCAlyT0OWBj4UkQM69bvPICImA34UEQsFBEfjYgNgTmBfYEVgfXqZ/0Xge9GxAzd2lDS8XraBfhhRHwvIj6XmbsAf6FUlUyfmRNbDVQDSldnpBExZ2beFxFXAP8TEQ8DXwYOonzA3A38IzOPioiXgK588/T6wtoGGB0R/6JcKE4CNoqIGyglNPcBR2bmM60F3LLasr8epZxoe0oPyPsi4i8R8dvM3Cgzb4uIYzKzqwcV157H5YDvArMA+wMfBZ6hXBD9Hnh/Zt7ZWpAt6ihVW57S6nprZv46IiYAv4yILTLzrIgYDtzVarAt6zhXH6I0hMxAGYN1HLARsElEnJmZt0bE+zPzuTbjbVkAWUuPt6CUYd0GPAT8FHi5bv8c8IO2gmxTRMycmU9FxOzA6cDswNKZ+XJErA88R0lQ3gl8GtgyM19oMeTW1STt48B6wG+AmQEy81MR8UvgT8DKvXpN1MW6tiek9oD8MiLWogyC/TulW3VNSgnWcGDTiFgVIDN/lJm3thVvmzoSkB0os/H8AziZUuZwQt1tJ0rpw1cz89424hwoIuLtlIvprTPzL1EHLWbmqpQE7vx6u9sTkMWAvSklfT0J7RWU5HYpymts125sOespAakX1R+hlKetA1wdEeMy82zKReI5EbFhZp6emVe2GHLr6rlag5LQ3g0sAFwAXA/8mjJAdrP6fuzKi8WIWCEiFqtlVtMDy1M+u9cG/gickJkvZOa5lNKs09uLtj1RxsccW28+TPk8uhJYrG7bBngA+B/gPcDmmXlj03EOQLNSyq82pSSyuwBExJjM3JLSwGTZqF7RzT0hzwCnAl+itGicWLdvQbkY2p8yOH2diLiqm1s4avfy7JTeoc0pidrlwHm1xvNK4HvAzJn5ZHuRti8ilgP+DdwBPFjrX3tmXJshM8dGmSmrq0XEuyitrM9n5r/q5gnAIsDRlC+rT2bmFS2F2JqIWIYyBmZHYH7gm5SJDZagXDCeEhE7Zua5EbEx5bx1pYhYEFgsM/9YN30Q+HlmngScFBHfobTIrkJpNLmlWwcRR8QMwAbAKhHxhdob+yhlZkOADWpp0deAmzPz1NaCbVlm/jvKVMWrU3qIFgM2AXaPiJMz87KIOAm4HRjejQ0lnTrK9sZTetIeqo1uRMSuwOIRsVtmPtBmnBp4uq4npKdes14sPwk8Rak5XykzTwAuo1xor0VJUI7uxgSkV211ZuYTlIvr4yiDOz9YE5C9KIP4J5qAxPsoyew4atJWz8vEiHgvpWZ45sz8W5txtq2WYG1NKf2YMSLWjYiZsswmtiNlnZD1MvP/2oyzDRGxBPBj4E+Z+ThwM2VWtYWAr2fm3MBZwO8j4n2ZeXZmnt+NdehRBkwvRRlIPUfd/ADlvQdAZu5F6RWZKzPPzMybGg90AKjlLy8AR1EmevhmlDUu/gKsAHwHmBgRmwIbAte0FGqromMQfv3O+wBwNqVU9GeU78BtIuJISqnf7N2YgETEfPHqekVbUhaXXYkyzvEs4G8R8ZEoM/dtB/y4G8+Tpq7rekI6Sot2pQyEPRZYCfhKRHybksXPAHwEuDjLmgVdpdcYkPcC0wF/Ax6kDMr7Ui192JSSkPymrVgHiiiDXPcGDsnMS6LMDnZIRIylDNbfEtgnM59tM8621fP0eWDP2tq4P6Vef2JE/CXLDEZ3txpkS2qJ6D+BT2XmryJiRsp77VsRsRHw57rrHyllIC/3PLYbyxtqy+sF9b12akQcS7lgPCcibqGMJ3oHsCylTOSx1oIdODYD5qG07P+A0hv5Fcosa5Mon+9bZ+YtrUXYkvq919Nr/THK9/9XI+IJStXEFrzaS7sZsF9NVLpK7X3cE7gsImaijKM9i/Le25pSov0+YGfgUWC7zLyhpXA1wEUXfnf1tPIfBZySmf+IiHkoHyobUsaD/BWYrdta9nsPFouIL1AGmd1CmTFsc+CzwNspX2SzATtl5vUthDsgdAyG/TCwD6V3bevMfLr2jLyLUgZyWWb+qVsH5NX33NyUC5/RwM49r5uI2Icy3fPPgQu68fz0iIirgWsyc/uIOBMYn5lfqq+v7SjrEqwGfKEbS9UAanI2tpbELEkZ+zEf5fPpm8ATwOGUpGMp4KDM/F1L4baq9jA+V39fi1Kvvzrl/bYqZVKIHShjZOYEJmZdI6RbRZnd6XPARllmU+tZnHAz4DOZeX1EjMzMl9qMsy31/bcz5TpgEcr766aI2IyS0O5XS0VHANgDojfSFUnI5C78IuI4YNbM3KLeHkcZ1/AQ5SKy6wYNR8RctQSkZ4XvAzJzvSjTD340M9eo980NzAs80o09RfCa5GMe4LEsM6aMpcyS8hBweHbxDGE9JpPYrkSZ3vJ84JzMvK9uPwA4q1tbzKJMB/5y/f0ySu/sYZm5f902N2X9olUoLbS/by3YlkVZ/2NnykDz0ZSW6ccojUjbAt+gNCTNQSnDuqMbk/+IWJbSy3hGZt4SER+kfLdtWxsFFqc0CkwEdsnMO1oMd0Con+HHAutm5sNR1nH6D6UM64vAh+u/l7LLpi6uJY/T1fOyPKVUbWPgIuqK6FEWcvw+pZGpKxN/TZshn4T0Ki3anFKC9hCl1vrrlAvpvaMM8FwT+EaW1Yi7SkSMpoz3+F5mXlC7XDcBFqS0lvXMh755Zv6qzVgHiijT8B5IGaT/XGbuV3s/tgCepZRmdW35Vc+FdZTZndYHXqTMRDcHpSTrYkrPR1fPptajVyJyIfBkZm46hX277qK6U0R8htJodHZmblW3zQl8iJKgHNPNn1NRZgBbkDLe8Z+UcqLnKBeMR2TmiXW/wyhTq3+3G9+Hk2kkWRb4AqUkdF5KWdEEYN/MvDQi3paZXVnWV8fyrULpMZuespTBJsCSlJnDfl2vETYEbsgunVZd02bID0zvSEC+TJlZZnZKl/3qlKkcx0XEecC3gOO6MQGpngXOBD4fEatRZg/bAHgvpVXopSgLOu4RZQrarhZl1pRvURY+exjYISJOyMzLKdNazkkpEek6ETFXRMxSE5APURb7/CmlPv+ILAPzf0lJTD4Sr1+RuCvV89VTwrA2MF9E/Kbn/tp63bNv1yUgnX8/ZbHPHYDn6lg+MvM/lKnWj6bMWtSVImIpyriiO4CvUmZV25Yy1nF3YIuIOKQmcisD3+rSBGR4x/XBclEWlr0BuJHSUPKLzFyRMiX9ygDdmIBExOjaCzKJMunKlpSZMR+jfI7fWbdvExEjskyWYQKiPhmyPSG9ekDmAo7KzE9GGQj7PsoFds/c8nMDk3pKkbpJr/PUM+BuFKU1aAbKILM/UMZ/rAZ8Irt8PvQos4J8kLKexQKUcUTbU2bGuiYzd4iIObp00OISlBbq3WsJyK7AJZTa4b2BrTLzrrrvB4DHM/OadqJtV2fPR6/tr9SbR8Q1wP2Z+ZGm4xtIOsof16JMW/xcZp4REe8G9qBcCJ1N+fz6breWicIr04Q/QPkcf5IysciBwK3AOZSLyS9TxoEcl5nXtRRqayJiRWCpzDw5Ij5H+b67i3JuPtHz2V3HOewPbNYzPqSbRJkQY1/Kd92clAkxDqFcG/wqM6+qjQN7AzNSypCfaiteDT5DPgmpNZ63UAa9Pk25mP54rV/cBriq2y+q4ZVB6JtTLqRXolxc706ZgWccZVDxed1aN9zxehpJSVhfrgP0jgVOrQPxvkupS/9YN45tiLJq9/eAxylrDywJfIzyxfUSsH1mjq9fbEtQxjwMzQ+gNxARswET6mfQapTa/LuAS7OuYVFbFCfW399Xe9i6Wi1//DawH2Ua5+9n5iG1hGY/Sq/trpl5XothtqZXg9KMlNr8R+rPmYEDKD1EP80uX68hItahlGP/EliGUm71cEQcD7yTUpr9Pso527NLP8/XpEwXviXl82lWyjTFV1HGyCxKqQaYBxgD/LkbG3L15gy5JKS2xD5fL3beCZyUmavWcqwdgC0z858R8SlKa9A63dgV3am27P8AOD4zr64DP7ekDMD7Wnb5uhY9aq3rJyg11D/PzDMj4n8p8+4/SFlFd7/M7OZSkHdTVql+mZJoDKOsRXBRZu5av9h+RLlYvLC9SNsREbNTWg1vprQu/gg4g1KadhLwm57XT2ci0u1qCejPKbMWLUGZhWcRyuf7HnWfMT29bN0syqrxt1BKij5DKa39EaWl+jDKdOtHZRfO7tQrUfsQJcmYSGkg+XfdfjZwfmb+sMvHgOxPGZf2gygL7b4QEQtRyo3vBv5EWRl9DLCG7z39N4bUmJDawrgtZeGc+ShTNT5X7z6P0sp/akT8gJKAbN6NCUiv2uqe+fbnBHattx+i1FbPRlkhdqbej+k29Yt9X8oF5FP1J8D/UQbrfYXSI9LNCcgwSi/ISMqFz9K1Tn8DYLWI+Dml5Wz3bkxAqucoCesKlJnUdsvMfSmfW4sBa/fs2O0JSM9nTpQFPnuS/BkpDSMrUQah7x5lVXS8CIKIeBtljatvUt6Lx1KnUqcMsP4yZaxD1yUg8JoxosMz8wLKBBkjgffXsmwojUoj6/5dl4B0fNePplRAAEyo52w8pfR4dsokB/sBH/C9p//WUOwJeR/lQ3gG4Fxg7azTXNb7V6GUhjxU31BdpVdL0EeA4ZQxH/NQSh3uzsz9o8wWtjrwzW4crB9l4bgFMvMf9fYnKBePs1MWatoqy2J7PS1Es2XmU53nt1t0lKqNyLI6/KyUUobDKWUOv4uImSnvyRmyTsvbbSJiWGZOijJz0daUSQ1uAL6cmc9GmezgSMqX+n9aDLV1Ha+p9SlrE21Z31+rAttk5k71s35z4NwuTmpfJyJWoEzNuwClcWROSvJxJ6UE8nXjkIa6iBjV8z0WEZ8FxlIak04CZqI0jtwNXEdZgHfrbi/TruOv9gX2rmM/hlGuF+alfE59KjOfbjFEDQFDYsX0ni93gMy8PCJepMwdvz+wSpRVPeejlD/cl5mHtxdtO3paNzoSkJ5ytMcpg6x/A3wH+H5EnEupi/1YlyYgSwKnAYdFxB21NWxWSinIC5RBivfVsQ3r1lK/p6E7Zy2qF4sbAZtExAzAD7JM83wIcHBNTn5DmYGtK9WL6km11PHxzDwhykrMa1GmdD6BkuQ+A3R1ryO88ppag9Kiv3vHYNeXgNkj4mhgPcog4r91Y/LfKSK2A96bmZ/NzGsi4mVKSe2BlKlUDwOe6tIEZFHKrI/fpoxR2wzYDTgC2CEzd4mIr1DGPzwEbNCtDSW9/A24DNg8IsjMq4BJtSH3bQyR60e1a0j1hNQ3x1OUetgFKYsLLQn8gjJbyDBKS/8trQXZkl4DXdejzKW/IeWD5KD687Ta4jGKMvi6G7uiF6HMsnNkZp7QsX0k8FtKOc02lIXjjqS0YnftwnEAdXD1dykLV50AJCWB7Zn8YV/KzGqPdeOFYker/kcoM6ndR0nIPkO5KPokZd795ymzFZ3VWrAtquM+5svMf9bbnwGGZeaxETF9Zk6o21ehrNb8RGb+sb2I21Pfc8sBt9eEfz7KeiCnZOaedZ/Ngb0otft7ZJctrtcjInoWZTyFksReSBnbtx7lOzAoaxitSKmQuLulUAecWhHwGcrChJdTztOmlJ7Ja9uMTUPDoE5CepUWfZ7ygfsXSpbe0x29HTAXpayoK1s3aq3rlcB7MvPxiDiQMq3l2pn595p0fJFSkvWTbh6IXi8UV8vMfaOs2bAysDylnvoEyhfZJMpF0JHZhTPxRFnX45UVgyNiJ0oL4iRgH0rr9F1R1gp5JiLmz8z7Wwy5Fb0unJemzCyzC3ANZZD1hMzcopb6rUF5Pd3Ura36EbEDpeX1bkqP427Ahpm5esc+qwIPZpfO0gcQER+mXFSfTFmDZ/3MPC8i5qGsaXFmZu4eET0z032rjvPrKrVB6fHMfDIi1qbMhHUf5UL6vszcuO63M+Va6EetBTuARZlpbRxloppHgd9n5q3tRqWhYtB2p9XBis/W3/+HMs3e+zLz/og4Bjif8qY5mdLS2LWDPDPz0SjrNfw1It6bmQfXspl9IuKrmXldLW/YiVI33M0mAp+NskjcFykDFGen1FWvk5mb1trYObILpyOspWrfA8ZHxN2Z2TMAdgdKydonawKyJfDB+gXfddOBRlnc64cRcXRN6icAN1GmBJ8AfDQi/lQbT34MXNYzRq3bEpDaCLJoZh4XZU2nIyif2z8ClogyA93ulDr+n1Jea12ZhERZW+cIYKfM/GNEPAMsGhHvz8zLIuI9wOURsTDwbuAjXZqALA78Crg1Ir6UmRfW99o2lFLjC+p+21PWCPloa8EOcJn5PHBp/Se9pQbl7Fj1QmiriJg+IuaklIIsSVmUiczcmfKF/zdgPPD1bvwg7pSZ51C+yK+KMk3o/sAVwFcj4j31/Hwju3iRL4AsM6YcQrnQHk6ppd4wy8q500XEPLUHoOsGDkeZ/vpkyoxg5wAbR1ng8lJgFkor9ou1VGQ/4IzMfKnbLqqr4cD1wN5RFkZ7jDIubcWOfU4FXs7MidmFk2TAKzOqbQV8KiI+SJnR8AlKucw4yuQGcwC/q7/vnpl/aiPWAWJj4N6agCxM6f1/N3BcRBxSG0bGUdbAWK0bS4+rOykrn68KfLv2cAelIuCHwEq1oelTwKa27EvtGJTlWFEWp7qfMkvDfygtsD+kDK4+pWfGhog4EvieNZ6vqh/G36d8UT1F+bJahDLt3otdesEIvK68b+7MfLTjvrUoM6hsmGW60K4SZfrr8ykLUu1dt20JzJiZP6n1/N+mrA+yEKW06HfdWloEr7Twf4Iy+HxX4F2U99vxvFpu9MXM/L/WghwA6niGrSkroZ9GaTw6kFJWe0pm/iPKjGvT117drntNRcfkKxFxCmXc1dLAiVnWcViW0kv03cz8VYuhtirKOhYzZOa/ahnyrpTG1nspU2C/n9I48LnMfCnqrIbtRSx1t0GThPT+4qnlDt+ktJodQUlIjqYs/PWzzHyyhTAHhZqIHE4pX3siunhBJnjNwOGgvCcmddz3Nkrr9aHA/pl5bltxti0i9qKsiXJYZv4lIo6gtMz+k9Krdnn9PWoddtddLPZWE5FPUlZg/iywMGU2uoUoE0Fc0GJ4reqV9M9LGb83mtJDdDmlt/adlKTtsm59LfVKQNalNLx9gjIwfUPgmfr5dShwf2Ye1V607YkyDfiRlIqIszLzNxGxLSXhv4CS5H4HWBc4NjN39jNKatdgSkJ61iDonOVpZUot5wuUBGQeysDhYyirfw+OP64FUdYBOQAY163nqSP5mKsO2B+emS/3ujhakVLu993MPKcbv7R6XQTtQRlEfQvlYvpAyniHL1Eujg7JLp9fv7deicjemXlz5zntZvUzfEbKysxX10R3Qcog4r8BX6Uka13/mooyK9gewBaZ+WJEnER57+1OaQzYD9goM29rL8p21R7ZtSjJxjeA2ykzQX4zy8yP8wI7UhZs7MpxRdJAMiiSkHj97E7TZeaL9b73UqaMe4aSfMwJPG8J1tRFnb2o7Tja0JGArEtZ/+Nq4GHK7GDP99p33sx8qBsTkB69EpFdKF/sX83MM+q2EcAsmflEe1G2LyKWB57LzNt6NZj0lGatRlnx+/o242xTx3tvFcosYedSErRTMvPQmuguDpycmZe1GetAUMfNrAT8FdgnM79Ttw8HjgOWoCy4t1Vm3tRaoANIHaD/bcp0vKtSJhf5dGbeYQOANHAMioHptTa/Z3anOWsr0Mh6398pU1+OArYFbjMB6ZtuTUDglcXQVqIMPN+DMrva6nQsFFfLs8g6qUE3JiAd52BSveghM39Ama5464hYMyJG1sHVT7QY6kDxacprip4EpP7+CGW8wzWU8Vhdq7733k9pvf9UZu5CWYdg5yjTPR9Dmaa3q0tEe37PzElZZlj7DrBvHZ9FloUHd6CsA7KFCcirMvNqyqDzxynjQf4H2LAmdF33OS4NVIMiCYFXZnfaDbiyJiIvRcR09e4RwLXAT7MLV4RV30TEInXmph6jKV/sc1Jq9PfKzOci4p3d3OsBr7kImrFnWy1VG1F//x5lTYJ9gZmbj3DA2gt4KiLGwesuJh+gzCLWtUlIvQiEsmr1ZymDz3sS/e0oq34/Qyl/vLmVIFvWqxx0s4j4fESskZn7UMbHXFPHqpGZL2fmfunsTq+TmfcCJ1HWLjoeOK8mdF37uS4NNIMmCQHIsjL1LryaiLxYS0NOpSyg80i7EWqAWxE4OyLWrLfvpVxEnwCsl2V9i/Upr7EZp/AcXaG2Vn8YOD4ido+Izer2iT0XklnWCNmp23tAIuJ9EbFRRIzLzBcoC3qtBK/2nkXEsJrATaIsNNdVOpKxnovnL1LGWu1Z6/ihzHI4JiJmoqxs3ZU6XjO7U0pFRwKHR8SmWVZDPx24M8r09HoDWaYIfzozdzRRkwaeQbdYYWb+viYef4qIEynd0ZvVVg9pijLztFrGd3xE7AhcAvyekowvEhHvpAxmPCAzn2sv0vbVHqMjKFM3HwzcFxFnZ+aEntKs2gr773YjbV6UFYTfm5mXRMQ7gC0oycXSEXE+pYfoKxFxYc8g4VqDPikiDujG3tqa1K5DWZfoX8CtlOmKpwcujYgzKDOHHd3t7z14ZQzRspm5ZkR8EXgEOKeOM9orIiZQErquW69I0tAx6JIQeCURGUZZMO3dmXlt2zFp4OoYCDtHZv68tsr+mLJ67v9Spmz8HmVl769ml86CBa9psV4c+DLl4vptwA6ZOSEiRmfmvd14Id1hJPC+iNgHeDuwVmY+Vlv0v0oZn9azYvVtPQkbvFLH33WizDK3NWUGp1ko6zUck5k7RkRSJhfZMssMWcO77TxN5vPmubr5XMoYhvVrL+R2EfHXzDygnUgl6a0zKJMQgMw8t87u1PWtZpqyjgRkJeCAiDgsM39WL7ZPogyMPToifkJpsH2uWxMQeE0pyAOUOfcnAGtn5sMRsQGwTEQckXV2um5Sez22ycyDImI8ZbDr77OusZOZD0bEFyiTGzwP7BcRZ3YOUO9GETEX8BPgzsy8uJalXQ8cHBErZ+b+ETE78JOI+GB2LBLaDXqNAVmBMtPjA8CllJ7I/WoCsi2wJ/CRtmKVpLfSoBoT0psJiKamY2zDl4H5gBMiYpXMPAU4CDgjItbOzGd7Xk/dloD09H5ExMoR8eko01veTylXOxd4qSZx3wSu78YEpBoP/CEi5s7Mn1MGV98fEUfXMj+A2TPzxcw8GLiD0qPU1TLzcUqZ4+oRsWWWmdTuooz7eFfdZxfgj5Rekq7SkYDsRZlZ7VuUUrWHgPOAQ6Oskr4n8PF09kdJQ8SgWCdE+m9FxMLAbyhzxF8dEV+hLGZ1QGZeVlsXx2fmxW3G2baIWI8yU9jJlPUsvkupQ18VWAd4AvhBZv62G3uK4rVrftwKXJmZW0XEEsDelPNzJrAlZQHH0ZQF9z7UbePVOnofxwFzUHpA7oyIjSivq58CfwBOBL6QmZe0FWubevWArEL5TFo3Io4D5sjMzWoP0TyU83h/Zt7XXsSS9NYyCdGQFhEzUy52DsnMa+q2n1AWjds460rM3Xhh3SMiZqXM2LQvsChlnMzqtQWbKNOBTsrM/3Tjeeq4qF40y2JnIymDz/+ZmdvXMq39KOVZu9VS0VGUz9eH24y9LVEWAf0+JeHYA9i0lmJtUrddCuyembdGFy4e1ysBWZAytmhj4EVgZeCjmflC7bX9a3uRSlL/GdTlWFJvHaVFM0fE7Jn5LKVFf8WImKfudgLwIGWWrJ5FL7vqwrpHRLw9M58G7gQOpZSDrJ+Zj0fEBhGxbGY+lpn/ge48TzUBWQ84NyLelZkvUabgXTEiTsjMOzPzM8AHagISmflIFycgiwOHUMYuXEUZV3RcRGyQmWdQBqHPDSwLr8wc1lU6EpDNKL2PzwHLUXppN6sJyOeAb0ZdnFCShhqTEA0p9YJxQ0oJ1nkR8XngbGAjykDhQykzYX0GuB1YoK1Y2xYR81POydzAfcDSwMGZeXdEvJdSOtP1F0ARMZbymtkiM6+LiAVqIrICsFpEnFp3tVQGyMx/AR8H5gW+lZnzAz8EzqoDzy8Avg3sFhGzdczI1lVqr9Cngc/UHtlLgWuAr0fEHpTFHD+fmU+1F6Uk9R+TEA0pEbEcpSZ/H8pCXx+hrIa+K3A5pdxhe0r5w3soLZDd6jnK6t3rUxb8vBT4ZET8gjKb0R7dXgpSS61eprRWLxplAbnzIuJnwCLAMpTytVdat7uxt6hHT0KRmbdTSvuuqHddCfyJMvMTmXkm8OHMfKpbztdkkq1JwNqUKcKhlK+dTemlHUnpEbmxuQglqVmOCdGQEhErA3tl5sfq7THARcCXMvOcum01Sl36RzPz+rZibUstSxuemQ/U8/X5+m96yiDYBSmDYK/rxjEgPSLifygJ7VHAh4ElgeMpPWifBC7LzF/Xfbv2PHXqNdZhdWAnygryq1Ba9f/ejeeq13mZFZiYmc9HxOaUWfoO7Hkt9d5fkoaqQbtOiASv+3IP4B5gQkS8G7g1M++KiGMoF9g9/gl8sE4T2lUiYj5gf2DxiDiCUkL0NPCOOnD/EeCV1tduvRCKiMUoJXvfysyLIuJS4IV64bgkZRD66T37d9t56vW+m53SoPVEr/NwBTAjpbftK5n5d+i+cwWvGQOyB+V8LBARu2fmr6Ksfn5gRIzMzF907i9JQ5k9IRq0OmYt+giwBqUV/0BK6+v8lIughyn159tl5qXd2MLYcZ5mycxn6mxX7wV2AK4GdgP+RlmD4Jk2Yx0IImI4pZTvU8AFlAvoiVEW2VudMuj60Mz8TXtRtici5gXelZkX1lmwDgSGU6Yo/nGdRe11M1516XtvLOXcXAdsSxkr8yHgYmBhYIfMvCAiPg58kTId9jPddp4kdSd7QjRo1QvrVSgzOu0JrEcZTP1tyiJxy1EuGj+XmZf2PKalcFvRkYBsAHwqImYEfgGcA/yVMkvR/JRBxAsBN3XpxWLPeZoHeDozj46IJyjJ2sYRcUZNRMZTBhLf0I3nqdoE+J96rragJGyTKMlZUHqPXjfjVbedqzqj2jeBI4DHKN+32wFfooz7OBU4NSK2zszTIuI8GwEkdRN7QjSo1HrqkfnqGha7AfNn5p719pcpK1mvnpkTImKGzHyhvYjbFxHLUEqHtqKsUL0EZYDwDzPziYgYBhwNPJaZB7YXabsiYn3gK8BdwPOUcTKfBsZQeox+2Y3TyU5ORHyJspDljJQ1QF6og/gvBPbOzNPf6PFDXR0PcwKwVU8ZWt2+MGU82oa1V/KvwLP19vPtRCtJ7XB2LA0aUVan/jnw2VqXD+WCcdbaKktmHk4ZF/LOev+EpuNsW0QsHBH7dWwaDdySmVdn5onAucCalAHoPes0XAcsERHTNR3vQFDLZvanrGFxEWXMxwuUgej3UAZWz9tagANA5+xOmXkkcBYwM7BORMyZmXdSztdM7UQ4oIwFjq4D8Ud2bH8EuBfYJCK2obzvPmMCIqkbWY6lQSEilgZOAo4Bzsy6eB5l3Me2wOYR8XdgIqW1/0XovhKQ6kVg59oLdCDlQme6iNgwM8/OzMsi4g7KuiDX14ukScA3MvPFFuNuVK9yqheBI4H3U3o/PpiZkyJiEcrsWKMz84F2Im1fRIyo5Wgfpry/JlHO14zAhsDKEXE5ZTD/Z1oLtGUdr6lFgCfr5okdu0ykvB/fT1kZffPMvLvZKCVpYDAJ0YBXS7COBo7JzBM6tm8D3A/sTCmjeT8wH7BnZt7WRqxti4ieqXffB/y+3t4/Is6nLKy3HPBHysrMxwJkWXjvuPaibkcdA/I/wKzAHcDXgKeANTLzuYhYA9gX2CYzx7cWaItqD8d/agLyEeBgyviro4H5MnOPOpB/J0pCsl3P+Ktu1JHUnkVZCHRsZl5VSx4jM1+MiAR+QClbe7y1YCWpZSYhGgyep5QwvFJnHhHbAXtRSj++kZm7RMT0wKjMvLcbBw3Xv/nliJg+M++rrdbnRsRzlIueVYBtKIP2d68XR113nnrpmbJ4RcqF9T7AinV8w5eBfTPzoRbja01EzEKZOvbvmXkqZa2ULSgLND5BeU2RmcfWi+y/ZuZ1bcU7wPwduIzSQ0tmXgUQEVsAnwB+ZQIiqduZhGhAq3Xos1BWN1+Vslp1UGrRVwVmAM6IiAtqa/W90J1lWLVl/4PAphFxI/B7So/H/wHDMvPrlN6RmTPzWRMQqOs0rACsnZk/jIgZgI0pvSO71+lTu/k8PQ8sT5nJKSg9jqOBT2VZg2czYFJmHtNijANOfX8dRyntOyIirqCMMdqUMpD/3lYDlKQBwNmxNChExE6U6VJ/kJlX1zKjlyPivcABlIuiR9qNsl1RVj//LnAasBQwEvglcA1lHZCzMnOv1gJsUUQsQEk0ToyI9wMfpcxedCuwJaXk6kMd+79unYtuERHzAzNn5m0RsSBlrZRvA1cC/wB2ysxT6vTYPwF2zMw/txfxwFWnxB4LfBB4ALg4M//VblSSNDCYhGhQiIhRlPn130a5yP4zZWDn9ymLyf2+vejaV8uHfgEcn5nHR8TbKQs4/k9mfi4iRgOLdGu9fkS8G3gJGE8ZVP09Ssv0LMAuwK+B32TmsXX/ruz9qCVYp1CmJf50TfiXp4wZ+hxlQdAfAX8AVgIOyMzftRSuJGkQMwnRoBFlpeaPA58FrqXMQNO1K1d3qknI9ynT7q6ZZdXqeSkJ286ZeXPdrysvrgEiYibgV8D/Zeb3I2IO4BuUcSGLAv+mzFbUNTOETU5E7E9JzE6nzOT0KDAXZSD6NyJiKcpsYtNl5s3d/JqSJP33TEI06NSL65eBngHYXXcR1PM31/VSZq/rEcwBfJ2yCvoewHTA2cBmmXlLe9G2o/b+vIcya9OjmXlRRKxJmU3t6sz8dt1vHGVg+r2ZeU5rAbeo9jQum5kX19vfAmYHfgesByxJWePi6Mz8S2uBSpKGDJMQaZCqU6b+kFJiNJFysfg2SqnRqpTZeY7OzMtaC7IlNTn7NXA5MAdl8cFjMvOgiFgN+CJwVWZ+q9fjujGhHQnsSnn9XJKZX69TOa9FmdzgXsrMYR8HHqIkJBO77TxJkt5aJiHSINLRAzKSskjj1bVu/wzKbHdbUsY5fAlYMDO37nxcW3E3qS5seQzw08z8ad32TsosYSdn5oERsSplDZDLM/OQ9qIdGGpPyIKUxO0cyqrxqwFXZOavI2I6YBNKb1FXjiuSJL21TEKkQaAziYiI9YDdgeGUi+qf1O2/opRibQjMS1nzYiKwa2a+3ErgDasXyzcD12fmxnXb9Jk5oSYif6PMhHVeXajw6cz8Z3sRDyy1pO9rwHOUldEXprx+Lu7Yp2sSWklS/xnWdgCSpq4jAVkM+CRwMvAXYOWIWL/usznwNLBEZt4JfAs4qFsSEIA6qHwLYJWI2LlumxAR02Xm7ZSW/nfU3S8zAXlVRIzIzCeAvSmzX10BLA3sFhGz1vV5unINHknSW8/FCqUBrM569X7Keh/vpAwUPiUzT4qIMcBHgPXrBeRvelr/ATLz3y2E3LrMvKKOl7mwrlZ9DGUiA4AnKa38AF5Md8jMiXV9lBeAPwF/iogngX9m5tMthydJGmLsCZEGqIhYAjgTeC4zX6rT7J4NfCwi5snMuyhJyb+ADSJiVE9rdbfLzCuBtYFvRcTn6sKWqwIbATfWfboyCel5jUTEqhGxS0S8v64rQ88CjRExrN7+XmZe4utKkvRWc0yINADVwdX/S+n1OKGOdVgmM/8ZET8ClgM+mpmPRMTCAJl5d4shD0h1+t3zKGVYywPf7tZpeDtFxLrA4ZTZ1XYFjqLMHtaVq8RLkppnT4g0wNSZr86mDJo+ISKGU6ZKXQMgM3sWa7wwIkZl5t0mIJNXe0TWA7YBvpuZ53R7q35EzErpEfoIcDVl5fgzM3NSTXYlSep39oRIA1BErAicS5mpaBXgwcz8cq99vgf8OjP/2kKIg0pEzJKZzzizUxERX6H0DC1EWcxyfERsBDyQmf9oNzpJUjdwYLo0AHUOrgZuycyteu6LiJWB5TNzt9YCHHyebTuAtnSsLTMfMF3tNbuN0htySE1AVgS+A+zQZqySpO5hOZY0QNVSojWAJSNiB4CIWAU4DrizxdAGnZ7ej27sBakJyAbAH4GTI+LQzPwVcD6wRUT8BvgJsEdm/rnFUCVJXcSeEGkAy8xrI2Jt4LyIWIEyIH2fzLyw3cg0kNWpdntmuloM2I6yvszdwBUR8VJmfiUiFgQWp5Rh3WS5miSpKY4JkQaBWi7zR2DrzPxNy+FoAIuIeYFNgWOBOYEfATMD22bmQxExF/B34KLM3Lm9SCVJ3cwkRBokHFytvqjrywTwOPAEsBbwWeAXwB8z8+GIeBvwT2Bd4Gan5pUkNc1yLGnw6NrB1Zq6uuDgDpn59Xr7B5TV4b8CTAdsBmREXFJ7RN6RmRPbi1iS1M0cmC4NEt08uFp9MgpYPiIOrbdPAUYC+1MWbPwVsDnwgboWjb0fkqTWWI4lSUNAXdRyWWA3ykDzfSPiPcC2lNKsb1HKr+7OzGtaC1SSJExCJGnIiIhhwLuAL/FqIvJuYGfgEeAAe9IkSQOBSYgkDTF1OucvUBKR/SNiLPB8Zt7UbmSSJBUmIZI0yNUekMjMlyNiVmBuYHZgX+CuzNy71QAlSerFgemSNMhERNSfc0fEiMycVBOQ0cAVwDvquI9DgZ+3GKokSZNlT4gkDUIRsT6wFzCR0uNxE2Xsx4uZ+f02Y5MkaWpMQiRpkKmzXh1KSULWAVYEfkxZePCeus8wFyGUJA1UlmNJ0iASEfNRZr96ITOvycxDgYuBHSjrhMwAYAIiSRrITEIkaQCLiHdExOcjYpuIWC8zHwAuAWaLiO0BMvMHwF+BnYBZ2otWkqS+sRxLkgaoiFgaOBs4F3gR+ASl7OpnwKrAasBfMvOkuv/CmXl3S+FKktRnI9oOQJL0ehExO3AMcEhm/rRu+z7wUyCBQ4BJwLoRMTwzfwKMbyteSZKmhUmIJA1ME4C7gdMAImKGzLy3lmD9DbgeOIvyOX4VgKuhS5IGC8eESNLANCMwFlgDIDNfiIjp6uxXRwOLZ+ZzwC8z84b2wpQkadqZhEjSAJSZ/wG+D2wSESvUzS/33E1JUqCsEyJJ0qBiEiJJA9eZwAPAThGxVl0VfRXKooR/BqfilSQNTs6OJUkDWETMC2wOfB64AlgKODgzf9tqYJIkvQkmIZI0CETE2+uvM2TmXRERDkSXJA1WJiGSJEmSGuWYEEmSJEmNMgmRJEmS1CiTEEmSJEmNMgmRJEmS1CiTEEmSJEmNMgmRpMmIiJcj4pqIuCEizomIOfr5eDtHxDb19+0iYv7+PN7UjhMRK0fE3+s5uDkiDurveCRJ3cMpeiVpMiLimcycpf5+EvCvzDzkTTxfUD5zp7rCeURcAuyRmVf+t8frY0xTPE5E3Ap8PDOvjYjhwBKZedObPF6fz4EkaWizJ0SSpu5yYAGAiFg0Iv4QEVdFxKURsWTdPm9EnBUR19Z/q0TEmNqL8L/A1cCCEfFMz5NGxKYRcWL9/aCI2CMiNgXGAT+vvRAzRsRdEfHNiLg8Iq6MiPdExPkRcUdE7NzxfHtGxBURcV1EfK1u64nhuIi4MSIuqM/5uuP0+pvnAR4AyMyXexKQiJgrIn5Tj/G3iHhXZ/wdsdxQjz25c7BXRFxfz9Ohb3ReJUlDk0mIJL2B2guwFnB23XQssGtmjgX2AP63bj8K+FNmLg+8B7ixbl8CODkz352Zd0/teJl5OnAlsFVmrpCZz9e77snM9wGXAicCmwIrAwfXOD8ELAasBKwAjI2I/6mPXQz4YWYuAzwBbPIGx+nxPeDWmljtFBEz1O1fA/6Zme8C9gNOntrf1HkOgKWBjYH31nP1nbrPlM6rJGkIGtF2AJI0QM0YEdcAY4CrgAsjYhZgFeDXpbIIgOnrzw8A20DpOQCejIg5gbsz829vQTw9SdD1wCyZ+TTwdES8UMerfKj++2fdbxZK8jEe+HdmXlO3X1X/pjeUmQdHxM/rc34C2BJYA3g/sEnd548R8baImH0qT9d5Dj4I/DQzn6vP8fhUzqskaQgyCZGkyXs+M1eoF9i/Az5P6YF4IjNXmIbnebbX7c6BeDPQdxPqz0kdv/fcHgEE8K3M/HHngyJiTK/9XwZ6l15NVmbeAfwoIo4DHomIt9XjvG5XYCKv7V3v/Ns6z0Hw2nNAfdy0nldJ0iBmOZYkvYHMfBL4AqVE6Hng3xGxGZSB1hGxfN31IuCzdfvwiJhtCk/5UEQsFRHDgI9OYZ+ngVmnMdTzge1rrwIRsUBEzDOVx0zxOBGxXrzaLbEYJXl5AvgzsFXdZw3g0cx8CriLUoZGRLwHWGQKx7ygxjlT3Xeu+vgpnVdJ0hBkEiJJU5GZ/wSuBbagXIB/OiKupYz72Kju9kVgzYi4nlLytMwUnm4fSs/KH6kDvyfjROCYKQwYn1KMFwC/AC6vMZzO1BOZNzrO1pQxIdcAp1DGjrwMHASMi4jrgEOBbev+ZwBz1f0/C/xrCnH+gVJadmXdt2cw+5TOqyRpCHKKXkmSJEmNsidEkiRJUqNMQiRJkiQ1yiREkiRJUqNMQiRJkiQ1yiREkiRJUqNMQiRJkiQ1yiREkiRJUqP+H3s6S3fklfD9AAAAAElFTkSuQmCC\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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vmnmzJnTZ86cOX327NnTP/nkkzmJeD3yX2rxTSEdrx1SrPUm3tOvhCMRERERESm9atWqlf/ggw/OP/XUU5tfe+21y9euXZveqFGjLQCPP/547dh6hx9++NrHHnuszrHHHrsu1tV5n3322bxy5cqMDz74oPLhhx++ITc316ZMmZLZqVOnzYl7RaIWXxERERERkUK6d+++qXXr1pueeuqpmtddd92SP//5z43222+/Vvn5/53d6KqrrlreqFGjLa1atWrTsmXLnKeffjqrQoUKPmzYsO+vv/76Ri1btsxp06ZNztixY6sk8KUIavEVEREREREBYOPGjZPiH3/44YffxX6fO3fu1Njv//znPxcBlCtXjqeeemoBsCB+u27dum2aMGHCrBIOV34DtfiKiIiIiIhIUlPiKyIiIiIiIklNia+IiIiIiIgkNSW+IiIiIiIiktSU+IqIiIiIiEhSU+IrIiIiIiIiSU3TGYmIiIiIlDEdrx3ScVfub+I9/Sbu6PnzzjtvzyZNmuTecsstywB69OjRomHDhltefvnleQAXXHBBo4YNG24dO3Zs1TFjxnxXePvTTz+9yaBBg5Z27Nhx8/XXX7/HXXfdtWRXxi+yM2rxFRERERGRHerevfv6zz//vApAfn4+q1atypg1a1bF2PNfffVVla1bt9r2tn/55ZfndezYcTPAgw8+WL/kIxb5JSW+IiIiIiKyQ4ceeuj6iRMnVgGYOHFixZYtW26qXLly/vLly9M3bdpk33//fYWOHTtu3LBhQ/pRRx21V7NmzdqccMIJzQoKCgDo0qVLy3HjxlW65JJLGubm5qa1atUq54QTTmgG8Mgjj2S1a9eudatWrXLOPPPMJnl5eQl8pZKslPiKiIiIiMgONW3adGtGRobPmTOn/NixYysfcMABGzp16rThww8/rDJ+/PhKLVu23FS+fHmfMWNGxX/9618/fffdd9Pmz5+fOXr06Crx+3nkkUcWZmZmFsycOXP6W2+99ePXX39d4bXXXsuaMGHCzJkzZ05PS0vzxx57rFaiXqckL43xFRERERGRnerYseP6MWPGVP7ss8+qXHvttUvnz59f/pNPPqlcvXr1/C5duqwHaNeu3Ya99957K0CbNm02fv/99+V3tM9333236tSpUyu1b9++NcDmzZvT6tatqyZf2eWU+IqIiIiIyE517dp1/aefflpl5syZFTt37rxpr7322vLAAw/Uq1KlSv4555zzM0BmZqbH1k9PTycvL2+7434B3N169+694l//+tfCko5fUpu6OouIiIiIyE717Nlz/QcffFCjRo0a+RkZGdSrVy9/7dq16ZMmTapyyCGHbCjufjIyMjw3N9cAjjrqqLUjR46suXDhwgyApUuXps+ePXuHrcQiv4dafEVEREREypidTT9UErp06bJp9erVGaeccsqK2LJWrVpt2rBhQ3r9+vWL3T25b9++y1u3bp3Ttm3bjW+99daPN99888LDDjssu6CggHLlyvmDDz44Pzs7e0vJvApJVebuO18rwTp16uQTJkxIdBhlXsdrhxRrvYn39CvhSERERERKJzOb6O6dEh1HYZMnT57bvn37nxMdh0hpN3ny5Nrt27dvWni5ujqLiIiIiIhIUlPiKyIiIiIiIkmtRMf4mtlcYB2QD+S5eyczywJeBpoCc4HT3H1VScYhIiIiIiIiqWt3tPge4u77xo2VuB74j7u3AP4TPRYREREREREpEYno6nwi8Fz0+3PASQmIQURERERERFJESSe+DrxvZhPN7MJoWT13XwwQ/axb1IZmdqGZTTCzCcuXLy/hMEVERERERCRZlfQ8vt3dfZGZ1QVGm9nM4m7o7k8AT0CYzqikAhQRERERKWvm396u467cX+Nbpux0XuD09PSOLVq02OTupKen+z//+c/5RxxxxIZZs2aVP+6441rMmTNn2m89bpcuXVree++9Px100EEbf1/kO9ayZcuc7OzsTSNGjPgxtuyvf/1r3cGDB9eJzSMcv/64ceMqDR48uNazzz77U0nEE3POOefsOWrUqJqLFy/+Nj09vUSO8fe//71OpUqVCi699NIVO187+ZVo4uvui6Kfy8zsdaALsNTM6rv7YjOrDywryRhEREREROR/l5mZWTBz5szpAMOHD6924403NjriiCNmJTougLy8PDIyfpnafP311xXcnS+++KLq2rVr06pVq1YA8PTTT9d555135rRq1WpL/Ppbt27loIMO2lhSSXhMfn4+7777bo369etveeedd6oed9xx63b1MbZu3cqgQYPUbTZOiXV1NrPKZlY19jtwJDAVeAvoH63WH3izpGIQEREREZFdb82aNenVq1fPK7x81qxZ5Tt27NgyJyendU5OTuvRo0dXjj13880318vOzs5p2bJlziWXXNIwfrv8/HxOOeWUppdffnmDwvt88803q7Zu3TonOzs7p3fv3k03bdpkAA0bNmx3zTXX1O/YsWPLwYMH1yy83XPPPZd12mmnrTjooIPWvvTSSzUAzjzzzMYLFizIPOGEE5rfdtttdQcOHNigT58+Tbp3797ilFNOaTZy5MiqhxxySPPoNaadeuqpTbOzs3Oys7Nznn322RoAffv2bdy2bdvWzZs3b3PVVVdti7dhw4btrrrqqgY5OTmts7OzcyZNmlShqHM3cuTIqtnZ2ZvOP//85S+++GJWbPnAgQMbnHLKKU27d+/eomHDhu2ee+65GhdffHGj7OzsnAMPPLBFbm6uAYwfP75S586dW7Zp06Z1jx49WsybN68chNbzSy+9tGHnzp1b/vWvf603cODABrfccks9gKlTp2Z269Ytu2XLljk5OTmtp02blrlmzZq0rl27Zsfiff7552vE/g/32muvNmeccUaT5s2bt+nevXuL9evX23beCmVGSY7xrQd8bGaTgS+BUe7+LnAXcISZzQGOiB6LiIiIiEgplpubm9aqVaucZs2atbniiiua3HrrrYsLr9OgQYO88ePHz54+ffqMl19++YerrrqqMcArr7xSbdSoUTUnTpw4c9asWdNvvfXWJbFttm7daieddFKzFi1abH7wwQcXxe9v48aNdtFFFzV7+eWXv589e/b0vLw87rnnnjqx5ytUqFAwceLEWRdeeOGvpkd98803s/r167fqzDPPXPnyyy9nAbz44ovz69atu3Xs2LGzb7311mUA3377baX33nvvu/ju0ADXX399/WrVquXPnj17+uzZs6cfe+yx6wDuv//+hVOnTp0xc+bMaZ988knVL774omJsm9q1a+dNnz59xrnnnrv8rrvuqlfUeXzxxRezTjvttJV9+/Zd9cEHH1SPJbQA8+bNy/zwww+/e+211767+OKLmx166KFrZ8+ePb1ChQoFr7zySvXc3Fy7/PLLG7/55pvfT5s2bUb//v1/vuaaa7bdRFi9enX6V199Neu2225bGn/MM888s9nFF1+8bNasWdMnTJgws3HjxlsrVapUMGrUqO+mT58+Y+zYsbNvvPHGRgUFBQDMnz+/wuWXX77su+++m1a9evX8IUOG/OrGQllTYl2d3f0HoH0Ry1cAh5XUcUVEREREZNeL7+r8wQcfVD7nnHOazZ49+xfjerds2WLnnXdek+nTp1dMS0tj3rx5mQCjR4+u9oc//OHnqlWrFgDUq1cvP7bNJZdc0uSkk05aeffddy+hkMmTJ1do1KhR7j777JMLcPbZZ6/417/+VZdouGS/fv1+lfACjB07tlJWVlZednb2lr322mvLgAEDmi5fvjy9Tp06+YXXPeqoo1ZXqVLlVzWFxo0bV23YsGE/xB7Htn3uueeynn322dp5eXm2fPnycpMnT66w//77bwI488wzVwF06dJl41tvvfWrZHHz5s02ZsyY6o899thPNWvWLNh33303vP7669XOOOOMNQCHH374mszMTO/Spcum/Px8O/XUU9cCtGnTZtOPP/5Y/ttvv82cM2dOxUMPPTQboKCggDp16myN7b9Pnz4rCx9z1apVaUuXLi3fr1+/1QCVKlVywHNzc+3KK69s9Pnnn1dJS0tj2bJl5RcsWJAB0LBhw9xu3bptAujQocPGuXPnZhZ1nsuSki5uJSIiIiIiSebwww/fsGrVqozFixf/Ip+444476tWtW3fr8OHDfywoKKBixYodAdwds6J7y3bq1Gn9+PHjq23cuHFplJRt477jGrexRLqwoUOHZv3www8VGjZs2A5gw4YN6UOHDq05cODAnwuvW7ly5SL3UVTMM2fOLP/www/Xmzhx4ow6derk9+rVq+nmzZu39aKtUKGCA2RkZHheXt6vXvDw4cOrrVu3Lr1t27ZtADZt2pRWsWLFgljim5mZ6QDp6elkZGR4WlrYdVpaGnl5eebu1rx5803ffPNNkUWDizof2zuHjz/+eNaKFSsypkyZMiMzM9MbNmzYbtOmTWkA5cuX37ZRenq6x5aXZWX+BYiIiIiIyO41adKkCgUFBdSrV+8X43zXrFmTXr9+/a3p6ek88sgjtfLzQwPrUUcdtXbo0KG1161blwawdOnSbaWML7roop+PPPLINccdd9zeW7du/cVx9t13380LFy4sP3Xq1EyAIUOG1DrwwAN3WAwqPz+fkSNHZk2aNGnawoULpyxcuHDKSy+99N2rr76ataPtCjv44IPX3n///dumXl2+fHn6qlWr0itWrFiQlZWV/9NPP2V89NFH1X/LPocNG5b1wAMPzIvFNXfu3Cnjx4+vFjsvO7PPPvtsXrlyZcYHH3xQGSA3N9cmTJhQ5FjimKysrII99thjy9ChQ2sAbNq0ydatW5e2Zs2a9Nq1a2/NzMz0ESNGVF20aFH53/Jayhq1+IqIiIiIlDHFmX5oV4uN8YXQivjoo4/OLVxJ+corr1zWq1evvd94442aPXr0WFexYsUCgFNPPXXt119/XWnfffdtXa5cOT/88MPXPPzwwwtj2/35z39eetVVV6Wfcsopzd54440fY1P8VKpUyR977LG5vXv33js/P5/27dtvvOaaa3ZYrfidd96pWq9evS3NmjXblkUfffTR684999xmsUJQxXHnnXcuPueccxq3aNGiTVpamt94442L+vfvv7pt27YbW7Ro0aZx48a5HTt2XF/c/a1bty5t3Lhx1Z977rl5sWXVqlUr6NSp0/phw4YVK4GuUKGCDxs27PvLL7+88bp169Lz8/NtwIABSzt16rR5R9s9//zzP15wwQVN/vKXvzQoV66cv/rqq9+ff/75K48++ujmbdu2bd2mTZuNzZo12+E+yjrbWfeB0qBTp04+YcKERIdR5nW8dkix1pt4T78SjkRERESkdDKzie7eKdFxFDZ58uS57du3/1U3XRH5pcmTJ9du375908LL1dVZREREREREkpoSXxEREREREUlqSnxFREREREQkqSnxFRERERERkaSmxFdERERERESSmhJfERERERERSWqax1dEREREpIzp/lD3jrtyf59c9skO5wVesmRJ+sEHH9wS4Oeffy6XlpbmWVlZeQDffPPNjAoVKpT+OVIlpZX5xFdz04qIiIiIlKw99tgjf+bMmdMBBg4c2KBKlSr5t99++9LdceytW7dSrly5UrPvkoxHSo66OouIiIiIyG9SUFBAmzZtWgN89tlnFc2s45w5c8oD7Lnnnm3XrVuXNnv27PJdu3bNzs7OzunatWt27Pl4S5cuTT/88MP3zs7Ozmnfvn2rL774oiKE5LpPnz5Nunfv3uKUU05pFr/NyJEjq3bu3LnlMcccs1fTpk3bXnLJJQ0fffTRrHbt2rXOzs7OmTZtWibA9o7fq1evpueff36j/fffP/uSSy5pNG3atMwDDzywRZs2bVp37Nix5aRJkyoUjrNwPLNmzSrfsWPHljk5Oa1zcnJajx49unJs3ZtvvrlednZ2TsuWLXMuueSShgDbO8bgwYNrtmjRok3Lli1zOnXq1HJX/f/Ir5X5Fl8REREREdm90tLSyM3NTVu5cmXamDFjqrRp02bjBx98UMXd19eqVSuvatWqBSeeeGLjM888c8Vll1224oEHHqg1YMCAPT/44IPv4/czaNCgBu3bt9/4wQcffP/WW29V7d+/f7NYy/K3335b6YsvvphZpUqVX3WjnjlzZsXXXnvth7p16+Y1adKkXWZm5s9TpkyZ8Ze//KXufffdV3fw4ME/XXzxxds9/vfff1/hk08+mZ2RkUHXrl2zn3jiiXnt2rXL/fDDDysPGDCg8eeffz678DHj41m3bl3a+PHjZ1eqVMmnTJmS2adPn72mTp0645VXXqk2atSomhMnTpxZtWrVgqVLl6YDnH/++U2KOsZdd91V//3335/drFmzrT///HN6yfxvCSjxFRERERGR36FTp07rP/jggyoff/xx1UGDBi1+9913q7s7BxxwwHqASZMmVX7nnXe+BxgwYMDK2267rVHhfXz55ZdVhw8f/h3ACSecsO7CCy/MWLFiRTrAUUcdtbqopBegXbt2G5o0abIVoHHjxrlHH330GoD27dtvGjt2bNWdHf+UU05ZlZGRwZo1a9ImTZpUpXfv3nvHntuyZYsVdcz4eLZs2WLnnXdek+nTp1dMS0tj3rx5mQCjR4+u9oc//OHnqlWrFgDUq1cvf0fH6NSp0/q+ffs27dWr16q+ffuuKt6Zl99Dia+IiIiIiPxmPXr0WD9u3LiqCxYsKN+3b9/V99133x6AH3/88WuKuw/3X+e1ZuYAlStXLtjedpmZmds2TEtLI1ZcKy0tjfz8/CIT13hVqlQpAMjPz6dq1ap5sVbmHYmP54477qhXt27drcOHD/+xoKCAihUrdoy9HrNfHn5Hx3jxxRfnf/jhh5Xfeuut6vvuu2+bb775Ztoee+yRv7NY5LfTGF8REREREfnNjjjiiHXDhw/PatasWW56ejo1atTIGzNmTPXDDz98PUCHDh02PPXUUzUBHn/88axOnTqtL7yPAw44YN0zzzxTC8LY3Zo1a+ZlZWVtN+H9LYpz/KysrIJGjRptGTx4cE0IY5c/++yzijvb95o1a9Lr16+/NT09nUceeaRWfn7IVY866qi1Q4cOrb1u3bo0CGOYd3SMadOmZR566KEbHnjggUU1a9bM++GHH341Dlp2DbX4ioiIiIiUMTubfmh3aNmy5RaAAw88cB1A165d1y9evLh8nTp18gEeffTR+f3792/6z3/+c49atWrlDRkyZG7hfdx9992LzjzzzKbZ2dk5FStWLHj22Wd/3FXxFef4AC+99NIPF1xwQZO77767fl5enp188skru3btumlH+77yyiuX9erVa+833nijZo8ePdZVrFixAODUU09d+/XXX1fad999W5crV84PP/zwNQ8//PDC7R3jqquuajR37txMd7cePXqsPeCAA3Z4XPn9rKjuBaVNp06dfMKECUU+p+mMik/nSkRERGTHzGyiu3dKdByFTZ48eW779u1/TnQcIqXd5MmTa7dv375p4eXq6iwiIiIiIiJJTYmviIiIiIiIJDUlviIiIiIiIpLUlPiKiIiIiIhIUlPiKyIiIiIiIklNia+IiIiIiIgkNc3jKyIiIiJSxow9qGfHXbm/nuPGFmte4CFDhtTo37//3l9//fW0Dh06bN7u/nr2bD58+PAfa9eunb/rohT5/dTiKyIiIiIixTJs2LCs/fbbb/3QoUOzdrTe2LFjv1PSK6WJEl8REREREdmpNWvWpE2YMKHKM888M/f111+vCTBv3rxynTp1atmqVaucFi1atHn33XerADRs2LDd4sWLMwAOP/zwvdu0adO6efPmbe69997asf1VqlSpw2WXXdawZcuWOe3bt2/1008/qTeqlBglviIiIiIislMvvPBCjYMPPnjNPvvsk1ujRo38jz/+uNLgwYOzDjvssDUzZ86cPmPGjGn777//xiK2mztt2rQZ33zzzfTHH3+83pIlS9IBNm3alNa1a9f1s2bNmt61a9f1Dz30UJ3d/6okVSjxFRERERGRnXrllVey+vTpswqgV69eK4cOHZp1wAEHbHjppZdqDxw4sMGXX35ZsWbNmgWFt7v77rvrtWzZMqdjx46tlyxZUm7atGkVAMqVK+dnnHHGGoCOHTtumDdvXvnd+4oklag7gYiIiIiI7NCSJUvSP//882qzZ8+ueOmll5Kfn29m5o8++uiCcePGzRo+fHj1s88+u9nll1++9NJLL10R227kyJFVx44dW3XChAkzq1atWtClS5eWmzZtSgPIyMjwtLTQDpeRkUFeXp4l6OVJClDiKyIiIiIiOzR06NCap5xyyooXX3xxXmxZ586dW77zzjtVjjzyyPVXX331zxs2bEj7+uuvKwHbEt/Vq1enV69ePb9q1aoFkyZNqjB58uTKCXkBkvKU+IqIiIiIlDHFnX5oV3n11VdrDRo0aHH8shNPPHHVhRde2KxSpUoFGRkZXqlSpfwXXnjhx/h1evXqteaJJ56ok52dnbP33ntvbt++/YbdGbdIjBJfERERERHZoS+//HJW4WU333zzsptvvnlZUesvXLhwSuz3cePGzSlqnY0bN06K/X7OOeesOuecc1btilhFiqLiViIiIiIiIpLUlPiKiIiIiIhIUlPiKyIiIiIiIklNia+IiIiIiIgkNSW+IiIiIiIiktSU+IqIiIiIiEhS03RGIiIiIiJlzMNXj+i4K/d36X3HF2te4CFDhtTo37//3l9//fW0Dh06bN6VMcSMGzeu0uDBg2s9++yzP5XE/keOHFn1vvvuqzdmzJjvirvNwIEDG1SpUiX/9ttvX3rllVc2OPjgg9eddNJJ60oivuL45JNPKvbo0SPntddem9OrV6+1seWVKlXqED9NVHE1bNiw3YQJE2bUr18/7/ds27Zt243vvffe9wDPPPNMzZEjR1YfPnz43O1t8+mnn1b86aefyp9++ulrAF544YXq06ZNq/i3v/1tyW89fnGpxVdERERERIpl2LBhWfvtt9/6oUOHZpXE/rdu3cpBBx20saSS3l3hgQceWLS7kt68vKLz0KFDh9bab7/91r/44osl8v/wW02ZMqXShAkTKhR3/QkTJlQaNWpU9djjvn37rinJpBeU+IqIiIiISDGsWbMmbcKECVWeeeaZua+//nrN2PKRI0dW7dy5c8tjjjlmr6ZNm7a95JJLGj766KNZ7dq1a52dnZ0zbdq0TIBFixZl/N///d/ebdu2bd22bdvW77//fmUIral9+vRp0r179xannHJKs5EjR1Y95JBDmseOeeqppzbNzs7Oyc7Oznn22WdrAPTt27dx27ZtWzdv3rzNVVdd1SAWS8OGDdtdddVVDXJyclpnZ2fnTJo0aYfJ2MCBAxv07t27aZcuXVo2atSo3V//+te6seeuu+66PZo2bdq2W7du2XPmzMmMLe/Vq1fTZ555pibANddcU79t27atW7Ro0aZPnz5NCgoKAOjSpUvLAQMGNGzXrl3rpk2btn333XerFD52QUEBF110UaMWLVq0yc7OznnyySdrxs7n/vvvn3388cc3a9myZZuiths5cmTNIUOGzB0/fny1jRs3WlH/V127ds2OnYfnn3++BsDatWvTDj744OYtW7bMadGiRZvYMWPWr19vBx54YIv77ruv9vb2UZQ//vGPS2+//fb6hZePGTOmUocOHVq1bt06p0OHDq0mT56cuXnzZrvzzjsbjBgxomarVq1ynnzyyZoPPvhgrX79+jVesWJFesOGDdvl5+cDsG7durQ99thjn9zcXJs2bVrmgQce2KJNmzatO3bs2HJn/7eFKfEVEREREZGdeuGFF2ocfPDBa/bZZ5/cGjVq5H/88ceVYs/NnDmz4qOPPvrTjBkzpr322mu1Zs+eXWHKlCkzzjrrrJ/vu+++ugAXXXTRngMHDlw6derUGa+//vr3F198cdPY9t9++22l995777sRI0b8GH/M66+/vn61atXyZ8+ePX327NnTjz322HUA999//8KpU6fOmDlz5rRPPvmk6hdffFExtk3t2rXzpk+fPuPcc89dftddd9Xb2ev67rvvKowdO3b2V199NePee+9tkJuba+PHj6/0+uuvZ02ZMmX6yJEjv5s8eXLlora99tprl02dOnXGnDlzpm3atClt2LBh21ox8/LybMqUKTPuvvvun26//fYGhbcdMmRIjSlTplScMWPGtP/85z+zb7nllkbz5s0rF52Pyvfcc8/C77//flrh7UaPHl1lzz33zG3Tpk3u/vvvv+7VV1+tXnidSpUqFYwaNeq76dOnzxg7duzsG2+8sVFBQQH//ve/q+2xxx5bZ82aNX3OnDnTTjnllG3dpNeuXZt25JFHtjj99NNXXn311T9vbx9F6dev38qpU6dWmjp1amb88vbt22/+8ssvZ86YMWP6rbfeunDQoEGNKlSo4DfccMOi448/ftXMmTOnX3DBBati69eqVSu/VatWG99+++2qAMOGDaves2fPNZmZmX7++ec3eeSRR+ZPmzZtxj333LNgwIABjYsMZjs0xldERERERHbqlVdeybriiiuWAfTq1Wvl0KFDs3r06LERoF27dhuaNGmyFaBx48a5Rx999BqA9u3bbxo7dmxVgE8++aTanDlztiWo69evT1+1alUawFFHHbW6SpUqXviY48aNqzZs2LAfYo/r1KmTD/Dcc89lPfvss7Xz8vJs+fLl5SZPnlxh//333wRw5plnrgLo0qXLxrfeeqtm4X0WduSRR66uWLGiV6xYMS8rK2vrggULMsaMGVPlmGOOWV21atWC2DpFbfvOO+9Uvf/++/fYvHlz2urVqzNycnI2AWsAevfuvQqgW7duG6699tryhbcdP3581dNOO21lRkYGe+65Z97++++//uOPP65UvXr1gn322WdDq1atthR1zOeffz7r1FNPXQlwxhlnrHz++edr9e/f/xfxFRQU2JVXXtno888/r5KWlsayZcvKL1iwIGO//fbbdNNNN+05YMCAhieeeOKao446an1smxNOOKH5lVdeuWTAgAErd7SPxo0b/6r/dUZGBpdffvmS22+/fY+jjz56WzK9cuXK9NNPP73Z3LlzK5iZb9269Vet04X17t171UsvvVTz+OOPX/fKK69kXXLJJcvXrFmTNmnSpCq9e/feO7beli1bdrqvX8T4W1YWEREREZHUs2TJkvTPP/+82uzZsyteeuml5Ofnm5n5o48+ugAgMzNzW9KalpZGhQoVPPZ7fn6+Abg7EyZMmFFUglu5cuUimxLdHbNf5jczZ84s//DDD9ebOHHijDp16uT36tWr6ebNm7f1ZI0dOyMjw/Py8naaHMXHnp6eTmybwsctbOPGjXb11Vc3+eKLL6Y3b95868CBAxtsJ45t56Dwa9ueSpUqFXk+8vLyeOedd2qOHj26xv3331/f3Vm9enXGqlWr0mrWrLltm8cffzxrxYoVGVOmTJmRmZnpDRs2bLdp06a0ffbZJ/frr7+ePnz48Oo33XRTww8++GDtvffeuxigc+fO6999993qF1100cq0tLTt7mN7MQ8YMGDlP/7xj/o5OTnbip5dd911DXv27Llu9OjR38+aNav8oYce2nKHJxXo06fP6ttvv73h0qVL06dOnVrp+OOPX7t27dq0qlWr5s2cOXP6zrbfHnV1FhERERGRHRo6dGjNU045ZcWiRYumLFy4cMqSJUu+bdSo0Zb333//V2NXt6dHjx5r77777m1jaD/99NOKO1of4OCDD157//33b9tm+fLl6atWrUqvWLFiQVZWVv5PP/2U8dFHH/2qq+//6tBDD10/atSoGuvXr7dVq1aljR49ukbhdTZu3JgGsMcee+StWbMmbcSIETttXY7Xs2fPda+99lpWXl4eixYtyvjyyy+rHHjggRt2tM2bb75ZrVWrVhuXLFny7cKFC6csWrRoylFHHbXqxRdf/EV8a9asSa9du/bWzMxMHzFiRNVFixaVB5g7d265qlWrFlxyySUrr7zyyqXffPPNtu7q99xzz6KsrKy8s846q/GO9rE9mZmZPmDAgKWPP/74tv+vtWvXpjdq1GgLwOOPP147trxatWr569evLzIXrV69ekH79u03XHTRRY0PO+ywNRkZGWRlZRU0atRoy+DBg2tCGOf82Wef7fT9E08tviIiIiIiZUxxpx/aVV599dVagwYNWhy/7MQTT1w1dOjQrD59+qza3nbxnnjiiZ/OP//8xtnZ2Tn5+fm2//77r+vWrdv8HW1z5513Lj7nnHMat2jRok1aWprfeOONi/r377+6bdu2G1u0aNGmcePGuR07dly/o338Hj169Nh48sknr2zbtm2bhg0b5nbp0uVXx6hdu3Z+3759l+fk5LRp1KjRlvbt2+8waS3srLPOWv3pp59Wad26dRsz89tuu21B48aN87799tvtbvPiiy9mnXDCCavjl/Xq1WvV448/XvePf/zjytiy888/f+XRRx/dvG3btq3btGmzsVmzZpsBJk6cWPGGG25olJaWRkZGhj/yyCPz4vf19NNP/3Taaac1vfjiixvdeuutS4rax45cccUVP99///3bilxdd911S84///xmDz744B4HHnjgti7QRx999Lp77723fqtWrXKuvvrqxYX3c9ppp60699xz9xo5cuSs2LKXXnrphwsuuKDJ3XffXT8vL89OPvnklV27dt20s5hibEdN7LuCmaUDE4CF7n6cmWUBLwNNgbnAae6+ww9Lp06dfMKECUU+1/HaIcWKY+I9/YofdJLSuRIRERHZMTOb6O6dEh1HYZMnT57bvn37nxMdh0hpN3ny5Nrt27dvWnj57ujqfAUwI+7x9cB/3L0F8J/osYiIiIiIiEiJKNHE18waAccCT8UtPhF4Lvr9OeCkkoxBREREREREUltJt/g+AAwC4quS1XP3xQDRz7pFbIeZXWhmE8xswvLly0s4TBEREREREUlWJZb4mtlxwDJ3/10D7939CXfv5O6d6tSps4ujExERERERkVRRklWduwMnmNkxQAWgmpk9Dyw1s/ruvtjM6gPLSjAGERERERERSXEl1uLr7je4eyN3bwqcAXzo7n8A3gL6R6v1B94sqRhEREREREREEjGP713AK2Z2HjAf6J2AGEREREREyqw7/nBqx125v5uef22nwxMrVarUYePGjZNijx988MFaEyZMqDxkyJD5f//73+tUqlSp4NJLL12xK+MqypVXXtng4IMPXnfSSSetK+ljSfLYLYmvu38EfBT9vgI4bHccV0RERERESt6gQYN2WzXaBx54YNHuOpYkj90xj6+IiIiIiCSxgQMHNrjlllvqAfz1r3+tu/fee7fJzs7OOe644/aKPX/SSSc1O+CAA7KbNGnS9r777qsNsGbNmrSuXbtm5+TktM7Ozs55/vnnawDMmjWr/F577dXmjDPOaNK8efM23bt3b7F+/XoD6NWrV9NnnnmmJsDYsWMrdejQoVXLli1z2rVr13rVqlXKb6RIiejqLCIiIiIiZUxubm5aq1atcmKP16xZk37EEUesKbzegw8+uMe8efOmVKxY0X/++ef02PIZM2ZUnDhx4ox169ald+jQIadXr15rGjZsuHXUqFHfZWVlFSxevDhj//33b3XmmWeuBpg/f36F559//odu3brNO+aYY/YaMmRIzUsuuWRlbH+bN2+2vn377v3CCy9837Nnz40rV65Mq1KlSkHheERAia+IiIiIiBRDZmZmwcyZM6fHHsfG+BZer2XLlptOPvnkZieccMLqvn37ro4tP/roo1dXqVLFq1Spkte1a9e148ePr3zaaaetufLKKxt9/vnnVdLS0li2bFn5BQsWZAA0bNgwt1u3bpsAOnTosHHu3LmZ8cf59ttvK9StW3drz549NwJkZWUp6ZXtUlcAERERERHZZcaMGTPnj3/84/KJEydWbt++fc7WrVsBMLNfrGdmPP7441krVqzImDJlyoyZM2dOr1Wr1tZNmzalAZQvX95j66anp3teXt4vduDumJkjUgxKfEVEREREZJfIz8/n+++/L3/88ceve+SRRxasW7cufc2aNekA77zzTo2NGzfakiVL0j///POqPXr02LBmzZr02rVrb83MzPQRI0ZUXbRoUfniHqt9+/ably5dWn7s2LGVAFatWpUWS7JFClNXZxERERGRMqY40w8lQl5enp155pnN1q1bl+7udtFFFy2tXbt2PkCHDh02HHbYYS0WLVpU/pprrlnctGnTreeff/7Ko48+unnbtm1bt2nTZmOzZs02F/dYFSpU8BdeeOH7yy+/vPHmzZvTKlSoUDBu3LjZ1atXV5dn+RUlviIiIiIislPxc/gCXH755SuAFQD333//timGJk6cOKuo7Vu0aLH5pZdemhe/rH79+nnffPPNzKLW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KyIiIiIiIkmtxBJfM9vTzMaY2Qwzm2ZmV0TLs8xstJnNiX7WLKkYREREREREREqyxTcPuNrdWwMHAH80sxzgeuA/7t4C+E/0WERERERERKRElFji6+6L3f3r6Pd1wAygIXAi8Fy02nPASSUVg4iIiIiIiMhuGeNrZk2BDsAXQD13XwwhOQbq7o4YREREREREJDWVeOJrZlWA4cCV7r72N2x3oZlNMLMJy5cvL7kARUREREREJKmVaOJrZuUISe8L7v7vaPFSM6sfPV8fWFbUtu7+hLt3cvdOderUKckwRUREREREJImVZFVnA54GZrj7/XFPvQX0j37vD7xZUjGIiIiIiIiIZJTgvrsDZwFTzOybaNmNwF3AK2Z2HjAf6F2CMYiIiIiIiEiKK7HE190/Bmw7Tx9WUscVERERERERibdbqjqLiIiIiIiIJIoSXxEREREREUlqSnxFREREREQkqSnxFRERERERkaSmxFdERERERESSmhJfERERERERSWpKfEVERERERCSpKfEVERERERGRpKbEV0RERERERJKaEl8RERERERFJakp8RUREREREJKkp8RUREREREZGklpHoAKT0mX97u2Kt1/iWKSUciYiIiIiIyP9OLb4iIiIiIiKS1JT4ioiIiIiISFJT4isiIiIiIiJJTYmviIiIiIiIJDUlviIiIiIiIpLUUqaqsyoVi4hIsuh47ZBirTfxnn4lHImIiEjZoBZfERERERERSWpKfEVERERERCSpKfEVERERERGRpKbEV0RERERERJKaEl8RERERERFJakp8RUREREREJKkp8RUREREREZGkpsRXREREREREkpoSXxEREREREUlqSnxFREREREQkqSnxFRERERERkaSmxFdERERERESSmhJfERERERERSWpKfEVERERERCSpKfEVERERERGRpKbEV0RERERERJKaEl8RERERERFJakp8RUREREREJKkp8RUREREREZGkpsRXREREREREkpoSXxEREREREUlqSnxFREREREQkqSnxFRERERERkaSmxFdERERERESSmhJfERERERERSWpKfEVERERERCSpKfEVERERERGRpKbEV0RERERERJKaEl8RERERERFJakp8RUREREREJKmVWOJrZoPNbJmZTY1blmVmo81sTvSzZkkdX0RERERERARKtsX3WeCoQsuuB/7j7i2A/0SPRUREREREREpMiSW+7j4OWFlo8YnAc9HvzwEnldTxRURERERERAAydvPx6rn7YgB3X2xmdbe3opldCFwI0Lhx490UnpSEsQf13Ok6PceN3Q2RiIiIiIhIKiq1xa3c/Ql37+TunerUqZPocERERERERKSM2t2J71Izqw8Q/Vy2m48vIiIiIiIiKWZ3J75vAf2j3/sDb+7m44uIiIiIiEiKKcnpjF4CPgNamtkCMzsPuAs4wszmAEdEj0VERERERERKTIkVt3L3Ptt56rCSOqaIiIiIiIhIYaW2uJWIiIiIiIjIrqDEV0RERERERJKaEl8RERERERFJakp8RUREREREJKkp8RUREREREZGkpsRXREREREREklqJTWeU7MYe1LNY6/UcN7aEIxEREREREZEdUYuviIiIiIiIJDUlviIiIiIiIpLUlPiKiIiIiIhIUlPiKyIiIiIiIklNxa1ESgkVTBMR2bU6XjukWOtNvKdfCUciIiKJphZfERERERERSWpKfEVERERERCSpKfEVERERERGRpKbEV0RERERERJKaEl8RERERERFJakp8RUREREREJKkp8RUREREREZGkpsRXREREREREkpoSXxEREREREUlqSnxFREREREQkqSnxFRERERERkaSWkegARCT5zb+93U7XaXzLlN0QiUhqKc5nD/T5ExGR5KcWXxEREREREUlqSnxFREREREQkqSnxFRERERERkaSmxFdERERERESSmhJfERERERERSWqq6lxI94e6F2u9v+nUpfy5UrVUEZHkoO9zEZHkpxZfERERERERSWpKfEVERERERCSpKfEVERERERGRpKbEV0RERERERJKaEl8RERERERFJakp8RUREREREJKkp8RUREREREZGkpsRXREREREREkpoSXxEREREREUlqSnxFREREREQkqWUkOgCRZNf9oe7FWu9v+jiKSCk39qCeO12n57ixuyES2dU6XjukWOtNvKdfCUciIlIy1OIrIiIiIiIiSU2Jr4iIiIiIiCQ1Jb4iIiIiIiKS1JT4ioiIiIiISFJT4isiIiIiIiJJTWVkS9jDV48o1nqX3nd8CUdSuhX3PK1Z+lyx1rvp+df+l3BKtVR/TxWnqiyosmxZpKqyUtoVu0r/q8W7vNL3lIjI7qMWXxEREREREUlqCUl8zewoM5tlZt+Z2fWJiEFERERERERSw25PfM0sHfgXcDSQA/Qxs5zdHYeIiIiIiIikhkS0+HYBvnP3H9x9CzAMODEBcYiIiIiIiEgKSETi2xD4Ke7xgmiZiIiIiIiIyC5n7r57D2jWG/g/dz8/enwW0MXdLyu03oXAhdHDlsCs3RroztUGfk50EGWEzlXx6DwVj85T8elcFY/OU/HpXBWPzlPxlNbz1MTd6yQ6CBHZtRIxndECYM+4x42ARYVXcvcngCd2V1C/lZlNcPdOiY6jLNC5Kh6dp+LReSo+navi0XkqPp2r4tF5Kh6dJxHZnRLR1fkroIWZNTOz8sAZwFsJiENERERERERSwG5v8XX3PDO7FHgPSAcGu/u03R2HiIiIiIiIpIZEdHXG3d8G3k7EsXehUtsNuxTSuSoenafi0XkqPp2r4tF5Kj6dq+LReSoenScR2W12e3ErERERERERkd0pEWN8RURERERERHYbJb4iUqpERe9ERERERHYZJb7yPzGzOmZWJdFxSHIwsxrAYDPrkuhYSjszs0THICKyPfqOEpHSRomv/G5m1hi4B/g/Jb/bpz/+v0kGMB243sw6JDqY0szd3cyON7OjEh2LlH36nioenafi86iIjJk1MDNdb4pIwumLqJCivpz1hV00d58PfAEcAhxmZpkJDqlUivvjv4+Z7WVm9RMdU2nl7j8DTwHjgduU/P5a7PvIzPYDLgI2JTai0iuWpJhZQzNrluh4SrO476k/mtnViY6nNDIziztPdcysdqJjKo3ibw6YWR/gdqBc4iISEQmU0MWJ/qgVRL8fb2ZnmNne7l6g5PeX4v6wrQDaAHejlt9fMLM9zezF6PcDgHeBu4BbzaxbQoMrZeIvlNx9GfAYSn5/wcxamtnB0fdRHeAvwGZ3Hxs9r++oQmKt4oTP3ttm9qdEx1SamdmRhBuZzyU6ltIoLum9hjANzwgzu1R1CX4p7jydA3QA7nb33MRGJSKixLdIZnYe8ADQDfjSzPZR8vtL0QVlX+Aq4ALgPeAU4FC1/Abu/hPQwcxGA0cDxwHXErryXqzkN4i1opjZUWZ2q5kNIrQO3E9Ifv9kZp0SG2WpUAfAzKq4+3LgJcL7qz9A9B2lbphxzKwVcCFwKnAUcLyZ3ZTYqEqnqEW8H9Ag6nmhmylFMLNewBHufjLwE9DT3bckOKxSIa6HRex7qCdwDWEIC2aWkaDQREQAJb4AmFk92JbMHQL0AA5z98sJXXTGmFk7Jb9B3B+1HOBdd//O3a8AphFaoY5P9ZZfMysH4O6tgVzCzYHv3X0e8DbwFXCVmfVIXJSlQ1yr3B3Al8ARwCtAdXe/B/ia0PJbLVUTu+jmwMfARGCZmZ3i7s8Dg4De0U2obS0tsu17/QqgNrA6+uz1BY41s9sTGlwpUMRnaR7wLLDCzK6N9YBK9b95RdzI3QQ8amY3ANWAM6P19t7dsZUm8d3AgcYA7n428AjwppmVd/c8Jb8ikkgp/QcNwtgv4E4z+0O06BRgH6CzmaW7+z+B24DJZtYm1hU61RS6SEqPfn4FNDSzbIAoSdkEHLCbwytVoguArWbWOeoqfxzhovJFAHf/jtD18lNgXQJDLRUsVHI+BOgDVAQygUXAG2ZWk5AQX+bua1M1sYu9bndfB/QHnjSz49x9OPA0cJ6Z9UtkjKVBoS7zS4GXgfnA6WZW393nAOcAx6VyolJorOoAM/sLcAvhxsqTQBPgSjNLS9W/eQBmVg040swam9nJZnYCUBO4AegMHBt9118B3GtmFVL15lzc++lS4F9m9g8zu8TdLwU+IfSey3T3vIQGKiIpLaXvvJlZTXdfaGZfAQeZ2TLgauDPhD9q84Av3f1BM9sKpOQXdqGLpH5AIzObTUhOCoATzWwqoXvqQuABd1+fsIATLGrBPJbQVfdcQktvVzP7xMzedPcT3X2OmT3m7ildmCjqYdEOuBeoAtwEnAysJ1yEvwP0cPcfEhZkAsV1A29PaF2a5e6vmlku8JKZneHur5tZOjA3ocEmWNy5OpJw860CYUz9k8CJQC8z+7e7zzKzHu6+MZHxJpgBHg3rOYPQxXkOsBR4BsiPll8CPJyoIBPJzCq7+1ozqw68BlQHctw938yOAzYSkuLmwHlAH3ffnMCQEy66MXAacCzwBlAZwN3PMbOXgLHAAYVah0VEdpuUbfGNWnpfMrPDCIV0viB0WTqE0L05HTjVzLoDuPuj7j4rUfEmUlzSewGhiuyXwBBCF8Kno9UuInQrvNXdFyQiztLCzPYgJHBnufsnFhU+cffuhJsG70WPUz3pbQFcR+guH7uJ8hXhhkprwnvsslRsIYh1r4wSuWMIXb+PAr42s07u/hYhMRlhZie4+2vuPiGBISdcdK4OJtxEmQc0BN4HpgCvEors9I4+jymZoJjZvmbWIurCnAm0J3x3HwF8CDzt7pvdfRSh2/NriYs2cSyMd34ieriM8H00AWgRLesHLAYOAvYDTnf3abs7zlKoKqFr86mEmyeXAphZU3fvQ7ipqSEZIpIwqdziux4YBlxJuHP7bLT8DMIF+E2EAldHmdnEVL6TG3Xdqk5oBT+dcHPgM+DtaMzOBOAfQGV3X5O4SBPPzNoBPwLfA0ui8UyxSuEV3L2jhQrPKc3M9iG0Jm1y99nR4lygGfAQ4QLpD+7+VYJCTBgza0MY03wh0AD4G6E4WktCkjLUzC5091FmdhLhvKUkM9sTaOHuH0aLDgdecPfngOfM7O+ElqduhBt1M1O1EJGZVQCOB7qZ2eVRr5OfCRX5AY6Puu3eBsxw92EJCzbB3P1HC9M69SS0hLcAegEDzWyIu39sZs8B3wHpqXhzLl5cl/j5hB4DS6MbvZjZZUC2mV3l7osTGaeISMq1+MbG30QJ2hpgLWEMYRd3fxr4mJDcHUZIih9KxaS30Fg5d/fVhITuSUKBmMOjpHcQoRBYnpJe60q4gdKJ6EZBdF7yzGx/whiwyu7+eSLjTLSoe/NZhG6VFc3saDOr5KEK9oWEeXyPdfcPEhlnIphZS+BxYKy7rwRmEKqBNwb+4u61gdeBd8ysq7u/5e7vpeK4QgtFl1oTijHViBYvJnz2AHD3QYTW3yx3/7e7T9/tgZYCUdfSzcCDhGJxf7MwB+0nwL7A34E8MzsVOAH4JkGhJpTFFfKK/uYdCrxFGIbxPOFvYD8ze4DQjb56Kia9Zlbf/jufeB/gejPrQqhb8TrwuZkdY6Hi/NnA46l4nkSk9Em5Ft+4bruXEYrpPAF0AW42s7sJdysrAMcAYzzMKZpSCo3p3R8oD3wOLCEU9rgy6lZ4KiEJfiNRsZYWFgrlXAfc4e4fWahqfYeZdSQU/OoDXO/uGxIZZ6JF5+mPwLVRq8pNhPGXeWb2iYfKu/MSGmSCRMMvJgHnuPvLZlaR8Fm708xOBMZFq35I6GKZH9s2FbsORi1M70eftWFm9gQhSRlhZjMJ48P3AtoSumCuSFiwpUdvoC6hBfNhQq+LmwnVwQsI3+9nufvMhEWYINHfvVjvnFMIf/9vNbPVhN5hZ/Df3ii9gRuj5DilRL0srgU+NrNKhLoorxM+e2cRhj91BS4GfgbOdvepCQpXROQXLAWvl2KtmQ8CQ939SzOrS/hDdgJhfO+nQLVUa8EsXHDCzC4nFKqYSah0fTowANiDcPFUDbjI3ackINxSIa6gzv8B1xN6EZzl7uuiFuB9CF0sP3b3sala1CP6zNUmXGw3Ai6OvW/M7HrC1FgvAO+n4vmJMbOvgW/c/Vwz+zcw392vjN5fZxPmDT0QuDwVu4EDRDcEOkbdTVsRxvLWJ3w//Q1YDdxHSHRbA39295EJCjehop4UG6PfDyOMv+xJ+Lx1JxSWu4Aw5rkmkOfRHL6pykJV4kuAEz1UAcfMriFcI5zv7lPMrJy7b01knIkSff4uJlwHNCN8vqabWW/CTZQbo2EYGQBq6RWR0iQlEt+ikg0zexKo6u5nRI87EcapLiUkLilXeMjMsqLulUTjUP/k7sdamKrhZHc/OHquNlAPWJ6KLeLwi4S3LrDCQ6XPjoTqnkuB+zyFK1vHFHEzpQthKpD3gBHuvjBa/ifg9VRtGbAwdVp+9PvHhF4o97j7TdGy2oT5xbsRWqLeSViwCWZhft6LCcWqGhFa4FYQblz2B/5KuHlZg9DF+ftUvOFkZm0JvSmGu/tMMzuc8Letf3QjKptwIyoPuNTdv09guKVC9B3+BHC0uy+zMM/6KkIX5yuA/4v+bfUUm+YpGk5QPjov7QndwE8C/gPc7e65ZtYL+CfhxmZK3mwSkdIt6RPfQt12Tyd0715KGDv3F0Lydp2FIjGHAH919+WJijdRzKwRYfzuP9z9/ag7Uy9gT0KrQGy+wtPd/eVExlpaWJiy6BZCoa+N7n5j1Mp7BrCB0O05Zbs2x5I5C1WJjwO2ECqo1yB0dx5DaOFN6SrgMYWS39HAGnc/dTvrplwiF8/MzifcqHzL3ftGy2oCRxKS4sdS+XvKQuXqPQn1KyYRuupuJCQp97v7s9F69xCmobs3FT+HRdyYawtcThhuUY/QZTcXuMHdx5tZLXdPyS7zUW2GboSeAZmEaR97Aa0IFa9fja4RTgCmeopOQScipVvSF7eKS3qvJlRErU7oDteTMO1FJzN7G7gTeDIVk97IBuDfwB/N7EBC1evjgf0Jd7+3mtkfgGssTNeT0ixU+7wTOIcw3cUFZva0u39GmAKkJqH7ZcoxsywzqxIlvUcCtxHGzu9FuOj+HHiJkAwfY9HUPakuOl+x7oFHAPXN7I3Y81ErXWzdlEt6418/8C6hi+7GqDYD7r6KMC3dQ4RquynJzFoTxol/D9xKqAben1C7YiBwhpndEd08OAC4M0WT3vS464N2ZrZ31ONkGuHm3Ivu3pkwfd8BAKmY9JpZo6i1t4BQuLEPYUaHFYTv8R+i5f3MLMNDwT0lvSJSKiVti2+hlt4s4EF3/4OFYjpdCUldbO7H2kBBrJtvKil0nmJFO+oQ7npXIBSqeJcwnvdA4ExP8fkKLVSzPJww32xDwrjwcwkVnb9x9wvMrEaKFj5pSWiJGxh1r7wM+IgwFuw6oK+7z43WPRRY6e7fJCbaxIpv4S20fNv4QTP7Bljk7sfs7vhKk7ihBYcRpnja6O7DzawDcA3h4vstwvfXvak6BAO2Tam2mPA9voZQnPAWYBYwgpDAXE0Y1/uku3+boFATxsw6A63dfYiZXUL4ezeXcG7OjH13R+NWbwJ6x8b7phILRfVuIPytq0koqncH4drgZXefGN2Qug6oSBjiszZR8YqI7EzSJ77RmJ2ZhMI56wgJ3GnReJR+wMRUT+RgWyGr0wnJWxdCQjeQUDm2E6Ew0dupOg4s7v1UjnCTJD8q8vEEMCwq5nEvYZzhKak4VtXM0glJ70rC3KCtgFMIF0tbgXPdfX50MdWSMIY1Ob+AdsDMqgG50XfQgYSxlnOB8R7NMRu1nORFv3eNehKktGhowd3AjYQpr/7p7ndE3VNvJPROuczd305gmAlT6CZmRcJYy+XRz8rAnwgt4c94is+namZHEYY6vQS0IXRlXmZmTwHNCcOeuhLO2bUp+n1+CGFqtT6E76eqhCmdJhLGPO9N6PVUF2gKjEvFxgMRKVuSLvGNWpw2RRfYzYHn3L171NX5AqCPu08ys3MId72PSsVuXvGiFsyHgafc/euoeEwfQhGP2zzF552NicYunUkYE/eCu//bzB4hzIu5BOhHqGiZyt0sOwDvE26YtCQMp/gE+I+7XxZdTD1KSFBGJy7SxDCz6oTWkRmEVpRHgeGEbt/PAW/E3j/xyW+qi4ZXvECottuSUD22GeH7/Zponaax3gSpzMwOJtzsrQGcTxi28iihRe4ewtR0D3oKViUudHPgSEJim0e4KfdjtPwt4D13/1eKj+m9iVBn4GEzq+Dum82sMWEozzxgLHAqIek9WJ89ESkLkmqMb9SS0p8wmXp9wrQWG6On3ya0Zg4zs4cJSe/pqZj0FhorF5sPsyZwWfR4KWGsXDVgoJlVKrxNqokuJm8gJC1ro58AHxAKftxMaPlN5aQ3jdDaW45wsZ0Tjbs8HjjQzF4gtBAMTMWkN7KRcJNkX0IF8Kvc/QbC91YL4IjYiqme9Ma+c8yssrvHbixVJNyM60IoZDXQzP4OoAtvMLNahDno/0b4LD5BNO0coUjT1YSxqymX9MIvan6ku/v7hCJ75YAe0ZAnCDcyy0Xrp1zSG/e3vhGhpxdAbnTO5hOG9VQnFEq7EThUnz0RKSuSscW3K+EPfwVgFHCER1OCRM93I3S7XBp9iaeUQne8jwHSCWN46xK6Ec5z95ssVLnuCfwtFQt+mVlDoKG7fxk9PpOQsFQHriWMVf0x7k54NXdfG39+U0VcN/AMd88zs6qEboL3EboQjjSzyoTPZAWPpjBKNWaW5u4FFirunkUojDYVuNrdN1gomPYA4UJyVQJDTbi499RxhLnD+0Sfr+5AP3e/KPquPx0YlcI3Un7FzPYlTGPUkHBDriYh4f2BMLzgV+PKk52Z1Yn9HTOzAUBHwg3M54BKhBty84Bvgb6EaZ9SeghUNJ7+BuC6aCxvGuF6oR7he+ocd1+XwBBFRH6zjEQHsCvELigB3P0zM9tCmNvxJqCbmVUiVNhdBCx09/sSF21ixO7ixiW9sa7eKwmFmt4A/g7808xGEcY5nZKiSW8r4BXgHjP7PrrrX5XQzXIzodDJwmis6tFRN/p1kJrVdqME5USgl5lVAB72MCXWHcDtUUL8BqFyeEqKErmCaBjBSnd/2sxWA4cRpr96mnBjZT2Q0r0rYNt76mBCy+XAuII5W4HqZvYQcCyhENHnqXjDKZ6ZnQ3s7+4D3P0bM8snDFe5hTDtzD3A2hRNevcmzFZwN6HmQG/gKuB+4AJ3v9TMbiaMZ10KHJ+qN+cK+Rz4GDjdzHD3iUBB1HhQiyS5fhSR1JJULb7RF/JawvimPQkTzrcCXiRUuUwjtGjOTFiQCVKoWM6xhLkuTyD88fpz9POV6M5uHUIBp1Ts5tWMUB32AXd/Om55OeBNQlfVfkAPwl3vq939nQSEWmpEBZruBU4iJHBOuGkSKyB3A6Ei+IpUTE7iWi+PIVQAX0i4CXA+4UL8D4R5MTcRquy+nrBgEygax1vf3SdFj88H0tz9CTPLdPfcaHk3YA9gtbt/mLiIEyf6zLUDvotuMtUnzNc71N2vjdY5HRhEGIt5TezmcKoxs2xCDYuhhBsnowm1Go4l/A00whzjnQk9weYlKNRSJ+r5dD5wKGG++i2Ecb193H1yImMTEfk9ynTiW6jb7h8Jf+Q/IdyNjHX1OhvIInTZTcm7uNHYpQnAfu6+0sxuIUwBcoS7fxElulcQujsPTuViVlFycqC732BhTtUDgPaE8XFPEy6eCggX3g94ClaQtTDv7tbYhbSZXURoKSkArie0ws21MJfvejNr4O6LEhhyQhRK1nIIFVEvBb4hFGrKdfczom70BxPeT9NTtfXSzC4gtDDNI/SsuAo4wd17xq3THVjiKVpdHsDM/o+QyA0hzJF9nLu/bWZ1CXPO/tvdB5pZrKL6nVHdhpQS3cRc6e5rzOwIQgXnhYTkbaG7nxStdzHhWujRhAVbilmoEN6JUOzyZ+Add5+V2KhERH6fMttVJSp4siH6/SDClARd3X2RmT0GvEf4oh5CaFFJ2UIx7v6zhflUPzWz/d399qhL6vVmdqu7fxt1HbyIMA4sleUBA8zsDcLNgHKEcb01CRXAT43GOtXwFJy6IeoG/g9gvpnNc/dYEZ0LCN3B/xAlvX2Aw6OLypSbOsXMagD/MrOHohtJucB0wvRpucDJZjY2umH3OPBxrOZAqiW90Y23vd39SQtzrt9P+N5+FGhpoXL6QMK4zGcI77WUTHwtzH19P3CRu39oZuuBvc2sh7t/bGb7AZ+ZWROgA3BMiia92cDLwCwzu9LdR0eftX6EYTzvR+udS5jD9+SEBVvKufsmYHz0T0SkTCuTVZ2ji+++ZpZpZjUJ3SxbAeUB3P1iwkXm58B84C+p+Mc/nruPIFw8TrQwpcpNwFfArWa2X3R+/uruyxIZZ6J5qPR5ByG5SyeMjTvB3TsD5c2sbtTSmXLFhyxMFTaEUMl6BHCSmZ1MuCCqQmit2xJ1w7wRGO7uW1MtkYukA1OA68ysM7CCUGegc9w6w4B8d8/zFCy0B9sqgfcFzjGzwwmV+FcTuqJ2IhRIqwGMjH4f6O5jExFrKXESsCBKepsQejl1AJ40szuim3GdCHPUHpiKw3oiPwDTgO7A3VFPHiP0fPoX0CW6uXkOcKpaMEVEUkOZ7OpsZm0JharqERKQqoQ/Zm8Qxjiti9Z7APiHxuz8V3QB8E/CxdFawgVSM8IUBVtSNEkBftV1vra7/xz33GGEyp8neJhaJaVYmCrsPWCcu18XLesDVHT3wdH4zLsJ8/c2JnTbHZmq3XZhW0vmmYQCVpcB+xA+b0/x3668V7j7BwkLshSIxqeeBTQgFJX7nFCUqRbh+/xLC5XCM6PeKyn3nrK4Ao5mNpQwjj4HeNbDPKttCa3h97r7ywkMNaEszDNbwd1nR0N8LiPc4F9AmC6sB+GG1CXuvtWiavyJi1hERHanMpP4Fr7YiboS/o3QOnA/IQl+CBgOPO/uaxIQZpkQJb/3EbqGrzazWqlYyComrviQET4TBXHP1SK00t0F3OTuoxIVZ6KZ2SDCnMX3uPsnZnY/oQVqEqH3wGfR7xaNq0u5BKWwKPn9A3AIYVqeJoQq6o0JxeTeT2B4CVXoRlM9Qj2GRoSW8M8IvVKaE24UfJyq76VCSe/RhJu9ZxKKW50ArI++v+4CFrn7g4mLNnEsTJn2AKHn1+vu/oaZ9SfcZHqfcGPl78DRwBPufrG+o0REUktZSnxjc4TGVyc+gDA2ZzMh6a1LKD70GPCU/qBtn4V5ev8EdErV8xSX8GZFRb/S3T2/0AV5Z0JX+nvdfUQqXigVuvC+hlCIaSYhgbuFMH71SsIF+R2e4vNfFlYo+b3O3WfEn9NUFn2HVwTWuPvX0c2VPQmFiD4HbiXcIEj595SFatbXAGe4+xYze47w2RtIuAF1I3Ciu89JXJSJFfU8OYyQ4P4V+I4wg8HfPMxYUA+4EHgxlQukiYikqjKR+NqvqxKXd/ct0XP7E8rrryckvDWBTerevHMWVd1NdByJEJf0Hk2Yn/drYBmhqvWmQuvWc/elqZj0xhRKfi8lXEze6u7Do2UZQBV3X524KBPPzNoDG919TqGbdLFuzwcCt7n7lETGmUhxn71uhOrWowg3BYa6+13RzZVsYIi7f5zIWEuDaBx0F+BT4Hp3/3u0PB14EmgJVAL6uvv0hAVaikRFvu4mTF3UnVCg8Dx3/143nUREUleZKG4VjbWMVSWuGd3tLhc99wVhmpA6QH9gjpLe4knVpBdC5Vwz60IoXnUNoSp4T0IBFCBcoEfrLo1tk4BQEyruHBREF9q4+8OEqZ3OMrNDzKxcVKBpdQJDLS3OI7yniCW90e/LCeNXvyGMr09Z0WevB6GV8hx3v5QwT+jFFqbGeowwpVFKD7+I/e7uBR4qg/8duCEab4+75xMqXI8ltAIr6Y24+9eEwlUrCeN7DwJOiG4ipNz3uIiIBGUi8YVtVYmvAiZEye9WMysfPZ0BTAaeiS4GRH7FzJpFFYdjGhEuJmsSxlwOcveNZtY8lVt34RcX3hVjy6Ju4BnR7/8gzBl6A1B590dYag0C1ppZJ/hVArOYUP06ZRPfKPEA6E0Y81wLtt1cOhvYP7ohd6+7z0hIkAlWaKhFbzP7o5kd7O7XE8Y7fxPVHsDd8939RldV4l9x9wXAc4S5xZ8C3o5uIqTs97qISKorM4kvgLu/A1zKf5PfLVG3y2GESdWXJzZCKeU6A2+Z2SHR4wWExO1p4FgP888eR3iPVdzOPlJC1Cr3f8BTZjbQzHpHy/NiyYuHOXwvSvWWXjPramYnmlknd98M/EzomkpcApMW3TQoAB5OXLSJEXcDIJawXUEYO39tNC4TQnX+pmZWCdi6+6MsHeLeMwMJwzDKAfeZ2anufi3wGvCDhan8ZAc8TKe2zt0v1M0BERHJSHQAv5W7vxMlu2PN7FlCV6/e0d1dke1y91eiLvJPmdmFwEfAO4QbQM3MrDmhIMqf3H1j4iJNvKhl/H7CNFe3AwvN7C13z411e45am35MbKS7n5lVJLRMfmRmewFnEBLaHDN7j9ASfrOZjY4VGorGFBaY2Z9SsVdKdCPlKMK84bOBWYSpnTKB8WY2nFDx+qFU/+zBtjHhbd39EDO7AlgOjIjGjQ8ys1zCTYSUm09cRETk9ypziS9sS37TgBFAB3efnOiYpPSKK6ZTw91fiFqfHgf6AY8Qprf4B7CYULApJas3wy9a5rKBqwkJXS3gAnfPNbNG7r4gFZO3OOWArmZ2PbAHcJi7r4haLm8l1BtoAnQA5sRuEsC2cZkpx0J19LMIlYerEOZTfczdLzQzJxQo7OOhsnN6qp2nIr5vNkaLRxHGpB4X9bY428w+dfc/JSZSERGRsqtMJr4A7j4qqkqc8q0Dsn1xSW8X4E9mdo+7Px8leM8Rius8ZGaDCQ1TG1M16YVfdLNcTJgTMxc4wt2XmdnxQBszu9+jquqpJGrd7efufzaz+YSCOe94NAe2uy8xs8sJBdI2ATea2b/ji1ylIjPLAgYDP7j7mKjL9xTgdjM7wN1vMrPqwGAzOzwqZpgyCo3p3ZcwQ8FiYDyhx8WNUdLbH7gWOCZRsYqIiJRlZWqMb2FKemVn4saqXg3UB542s27uPhT4MzDczI5w9w2x91OqJb2xVl4zO8DMzrMwFcgiQlfwUcDW6MbB34ApqZj0RuYD75pZbXd/gVCgaZGZPRR1oQeo7u5b3P124HtCy3lKc/eVhCEEPc2sj4cK4HMJ43j3ida5FPiQ0BqcUuKS3kGEiuB3ErqBLwXeBu4ys6GEpPc016wFIiIiv0uZmMdX5PcysybAG4Q5HL82s5uBwwjjeD+OWlHmu/uYRMaZaGZ2LKHC9RDCfLP3EsYVdgeOAlYDD7v7m6nYIm6/nJN3FjDB3fuaWUvgOsL5+TfQB7iFUDH8JeDIVKs/ENfLohNQg9DS+4OZnUh4Xz0DvAs8C1zu7h8lKtZEKtTS243wnXS0mT0J1HD33lFLeF3CeVzk7gsTF7GIiEjZpsRXkpqZVSZcYN/h7t9EywYDBwInufu0aFnKJXMxZlaVUGn4BmBvwrjnnlFLHRamTilw91WpeJ7iErm93f37qHX3S2CSu58bdYG+kdD1+apoGEYdwvfrskTGnihmdjTwT0KSew1watTNuVe0bDww0N1nmVlaVPwrZRRKevckjBU/CdgCHACc7O6bo94pnyYuUhERkeRRprs6ixQW1223splVd/cNhJbLzmZWN1rtaWAJobpzOUi97s0xZraHu68DfgDuInS1PM7dV5rZ8WbW1t1XuPsqSM3zFCW9xwKjzGwfd99KmK6os5k97e4/uPv5wKFR0mvuvjyFk95s4A7CWNSJhHHiT5rZ8e4+nFDIqjbQFrZVvE4pcUlvb0Ivi41AO0JvlN5R0nsJ8Dczq5a4SEVERJKHEl9JKlGScgKhe/PbZvZH4C3gREKxobsIFZzPB74DGiYq1kQzswaEc1IbWAjkALe7+zwz25/QLTXlL7rNrCPhPXOGu39rZg2j5Hdf4EAzGxatqm6ogLvPBk4D6gF3unsD4F/A61HxqveBu4GrzKxaXCXxlBK1fp8HnB/1PBkPfAP8xcyuAQYAf3T3tYmLUkREJHko8ZWkYmbtCGMsrwcuIbQ6NQYuAz4jdCU8l9C1cD9CS0uq2gh0Ao4DhhEuvP9gZi8SqvBek+rdLKNuzPmEVrm9zWwg4YbK80AzoA2ha/i2VrxUbBWPiSWx7v4dodv8V9FTE4CxhIrFuPu/gf9z97Wpcr6KSPALgCMI06lB6Br+FqE3SjlCy++03RehiIhIctMYX0kqZnYAMMjdT4keNwX+A1zp7iOiZQcSxhme7O5TEhVrokRdvtPdfXF0vv4Y/cskFNLZk1BI59tUHNMbY2YHEW6iPAj8H9AKeIrQU+APwMfu/mq0bsqep3iFxq72BC4Cfga6EVovv0jFc1XovFQF8tx9k5mdTqguf0vsvVR4fREREdk1yuw8viLwqwtKA34Ccs2sAzDL3eea2WOEpC5mEnB4NKVKSjGz+sBNQLaZ3U/onrsO2Csq/rUc2NbKlKoX32bWgtAd/k53/4+ZjQc2R8lKK0Ihq9di66faeSr0uatOuIm6utB5+AqoSOhVcLO7fwGpd67gF2N6ryGcj4ZmNtDdXzazXOAWMyvn7i/Gry8iIiK7jlp8pcyKq7Z7DHAwobXyFkIrUwPChfcywnjCs919fCq2pMSdpyruvj6q0rw/cAHwNXAV8DlhjtD1iYy1NDCzdEI3+XOA9wlJW56ZZQA9CYWb7nL3NxIXZeKYWT1gH3cfHVVvvgVIJ0zn9HhU/ftXlZpT9LPXkXBuvgX6E8Y+HwmMAZoAF7j7+2Z2GnAFYeqw9al2nkRERHYHtfhKmRUlc90IlYivBY4lFGS6G8gmVEntCVzi7uNj2yQo3ISIS3qPB84xs4rAi8AI4FNCdd0GhEJEjYHpKZqgxM5TXWCduz9kZqsJNwhOMrPhUfI7n1CMaGoqnqdIL+Cg6FydQbhJUEC4IWCEVvJfVWpOtXMVVQL/G3A/sILw9/Zs4ErCON5hwDAzO8vdXzGzt3XjSUREpOSoxVfKlGh8XDn/7xyzVwEN3P3a6PHVQG/CPLS5ZlbB3TcnLuLEM7M2hG65fYF9gJaEIkP/cvfVZpYGPASscPdbEhdpYpnZccDNwFxgE2Hc83lAU0LL+EupOPVOUczsSqA7oSvzqdH0O3sBo4Hr3P21HW2f7KLxzU8DfWNdvKPlTQj1BU6Iel98CmyIHm9KTLQiIiKpQVWdpcwws5bAC8CAaJwlhCSlatT6hLvfRxjn2zx6Pnd3x5loZtbEzG6MW9QImOnuX7v7s8Ao4BBCEavYPKrfAi3NrPzujrc0iLqk3kSYY/Y/hDG8mwnFrH4iFGeql7AAS4H4qsTu/gDwOlAZOMrMarr7D4TzVSkxEZYqHYGHomJe5eKWLwcWAL3MrB/hc3e+kl4REZGSp67OUiaYWQ7wHPAY8G93XxU99RVh7NzpZvYFkEdo1dwCqde9MrIFuDhq7b6FcHFd3sxOcPe33P1jM/ueMG/vlOjCvAD4q7tvSWDcu1WhrspbgAeAHoRW3sPdvcDMmhGqOjdy98WJiTTxzCwj6ur9f4TPVwHhfFUETgAOMLPPCAXBzk9YoAkW955qBqyJFufFrZJH+Dz2AA4ATnf3ebs3ShERkdSkxFdKvah780PAY+7+dNzyfsAi4GJCF9UeQH3gWnefk4hYE83MYtMUdQXeiR7fZGbvAQdamOf4Q+Aw4AkAd98KPJm4qBMjGtN7EFAV+B64DVgLHOzuG83sYOAGoJ+7z09YoAkUteSuipLeY4DbCePpHwLqu/s1UTGwiwhJ8Nmx8fSpKO5GyuvAjWbW0d0nRsMJzN23mJkDDxO6hK9MWLAiIiIpRomvlAWbCN0Dt40bNLOzgUGEbpV/dfdLzSwTqOPuC1Kx8FD0mvPNLNPdF0atc6PMbCPhQrsb0I9Q+GtgdEGecuepkNj0Tp0Jydz1QOdovOrVwA3uvjSB8SWMmVUhTLPzhbsPI8xlfAbQBlhNeE/h7k9Eid2n7v5touItZb4APib0RMHdJwKY2RnAmcDLSnpFRER2LyW+UqpF4wqrAPsRium8HS2rHD2uAAw3s/ejVrkFkJpdnKMWzMOBU81sGvAOoWX3AyDN3f9CaAWu7O4blPRCNI/qvsAR7v4vM6sAnERoBR4YTTWTyudpE9CeUIHYCD0rGgHneJgjuzdQ4O6PJTDGUif6fD1J6DZ/v5l9RRgzfiqhGNiChAYoIiKSglTVWcoEM7uIMLXMw+7+ddSFN9/M9gf+RLgQX57YKBPLzA4gTOf0CtAaKAe8BHxDmKf3dXcflLAAE8jMGhKS22fNrAdwMqHq7iygD6E785Fx6/9qHtpUYWYNgMruPsfM9iTMZXw3MAH4ErjI3YdGU4kNBi5093GJi7j0iqYP6wgcDiwGxrj77MRGJSIikpqU+EqZYGZ1CPNf1iIkduMIxWH+Cdzs7u8kLrrEi7rmvgg85e5PmdkewMHAQe5+iZk1Apql6vhLM+sAbAXmEwoz/YPQAlcFuBR4FXjD3Z+I1k/JVt6oe/NQwhRO50U3mdoTxoBfAtQFHgXeBboAf3L3kQkKV0RERKTYlPhKmWFm9YDTgAHAZELl1Lvc/Y1ExlUaRInvPwlTFB3i7qui8/UKcLG7z4jWS8mEDsDMKgEvAx+4+z/NrAbwV8I4372BHwlVdlOmsnVRzOwmws2A1wgViH8GsgjFrP5qZq0JVbDLu/uMVH5PiYiISNmhxFfKnCihywdiRZxS7sI79pqj+YyrR/OF1gD+AtQGrgHKA28Bvd19ZuKiTYyolXs/QrXhn939P2Z2CKEK+Nfufne0XidCcasF7j4iYQEnUNSjoq27j4ke3wlUB0YCxwKtCHPQPuTunyQsUBEREZHfSYmvSBkVTS/zL0L33TxCglKL0I23O6Gq7EPu/nHCgkyQ6IbAq8BnQA3gIMJ0WH82swOBK4CJ7n5noe1S8SZKOeAywvvnI3f/SzTt1WGEAmkLCBWvTwOWEpLgvFQ7TyIiIlK2KfEVKUPiWnrLAf0JLZdfm9lwQpX2PoRxq1cCe7r7WfHbJSru3cnMcoDHgGfc/ZloWXNCdesh7n6LmXUnzNH7mbvfkbhoS4eoxXdPws2CEcB/gAOBr9z9VTMrD/QitIqn5DhxERERKduU+IqUAfGJq5kdCwwE0gmJ3OBo+cuEbs4nAPUIc9LmAZe5e35CAt/NogRtBjDF3U+KlmW6e26U/H5OqOD8tpkdBKxz90mJi7h0ibrL3wZsBPYBmhDeP2Pi1kmZmygiIiKSPNISHYCI7Fxc0tsC+AMwBPgEOMDMjovWOR1YB7R09x+AO4E/p0rSCxAVpjoD6GZmF0fLcs2svLt/R2jR3Cta/WMlvf9lZhnuvhq4jlC1+SsgB7jKzKpG82en5BzZIiIiUvZlJDoAEdm+qFpzD8J8vM0JxYaGuvtzZtYUOAY4Lkpa3oi1cgK4+48JCDnh3P2raPzzaDPD3R8jFEMDWENozQRQAhfH3fOi+Ys3A2OBsWa2Bpjk7usSHJ6IiIjI/0QtviKllJm1BP4NbHT3rdGURG8Bp5hZXXefS0iEZwPHm1mdWKtcqnP3CcARwJ1mdom750fjek8EpkXrpGTiG3uPmFl3M7vUzHpE8z7j7gXRc2nR43+4+0d6X4mIiEhZpzG+IqVQVKDpEULr7tPR2NU27j7JzB4F2gEnu/tyM2sC4O7zEhhyqRRNVfQ2oYtze+DuVJ2yKJ6ZHQ3cR6gKfhnwIKHqdUFCAxMREREpIWrxFSlloorNbxEKLz1tZumEaWUOBnD3AcBkQlfeOu4+T0lv0aKW32OBfsC97j4i1VsvzawqoeX7GOBrYDPwb3cviG6wiIiIiCQdtfiKlEJm1hkYRaiw2w1Y4u5XF1rnH8Cr7v5pAkIsU8ysiruvV0XiwMxuJrSANwZ6u/t8MzsRWOzuXyY2OhEREZFdT8WtREqh+AJNwEx37xt7zswOANq7+1UJC7Ds2ZDoABIlbu7n+kD5qHfAHEKr7x1R0tsZ+DtwQSJjFRERESkp6uosUkpF3XQPBlqZ2QUAZtYNeBL4IYGhlTmxVt5UbO2Nkt7jgQ+BIWZ2l7u/DLwHnGFmbwCDgWvcfVwCQxUREREpMWrxFSnF3H2ymR0BvG1m+xKKWl3v7qMTG5mUZtG0RLEKzS2AswnzP88DvjKzre5+s5ntCWQTujhPV1dwERERSVYa4ytSBkRdUT8EznL3NxIcjpRiZlYPOBV4AqgJPApUBvq7+1IzywK+AP7j7hcnLlIRERGR3UeJr0gZoQJNUhzR/M8GrARWA4cBA4AXgQ/dfZmZ1QImAUcDMzSNkYiIiCQ7dXUWKTtStkCT7JyZ7QFc4O5/iR4/DGwEbgbKA70BN7OPopbfvdw9L3ERi4iIiOw+Km4lUkakcoEmKZY6QHszuyt6PBQoB9wEvA28DJwOHBrNFa1WXhEREUkZ6uosIpIEzCwdaAtcRShWdYOZ7Qf0J3R7vpPQtXmeu3+TsEBFREREEkCJr4hIkjCzNGAf4Er+m/x2AC4GlgN/Uo8BERERSUVKfEVEkkw09dXlhOT3JjPrCGxy9+mJjUxEREQkMZT4ioiUcVFLr7l7vplVBWoD1YEbgLnufl1CAxQRERFJMBW3EhEpY8zMop+1zSzD3QuipLcR8BWwVzSO9y7ghQSGKiIiIlIqqMVXRKQMMrPjgEFAHqFldzphLO8Wd/9nImMTERERKW2U+IqIlDFRtea7CInvUUBn4HFghrv/FK2T5u6askhEREQEdXUWESlTzKw+oWrzZnf/xt3vAsYAFxDm8a0AoKRXRERE5L+U+IqIlGJmtpeZ/dHM+pnZse6+GPgIqGZm5wK4+8PAp8BFQJXERSsiIiJSOqmrs4hIKWVmOcBbwChgC3AmoUvz80B34EDgE3d/Llq/ibvPS1C4IiIiIqVWRqIDEBGRXzOz6sBjwB3u/ky07J/AM4ADdwAFwNFmlu7ug4H5iYpXREREpDRT4isiUjrlAvOAVwDMrIK7L4i6N38OTAFeJ3yPTwRwdeERERERKZLG+IqIlE4VgY7AwQDuvtnMykdVmx8Cst19I/CSu09NXJgiIiIipZ8SXxGRUsjdVwH/BHqZ2b7R4vzY04TEGMI8viIiIiKyA0p8RURKr38Di4GLzOwwd883s27AxcA40LRFIiIiIsWhqs4iIqWYmdUDTgf+CHwFtAZud/c3ExqYiIiISBmixFdEpAwwsz2iXyu4+1wzMxWzEhERESkeJb4iIiIiIiKS1DTGV0RERERERJKaEl8RERERERFJakp8RUREREREJKkp8RUREREREZGkpsRXREREREREkpoSXxGRIphZvpl9Y2ZTzWyEmdUo4eNdbGb9ot/PNrMGJXm8nR3HzA4wsy+iczDDzP5c0vGIiIiIlBRNZyQiUgQzW+/uVaLfnwNmu/sd/8P+jPCdW1CMdT8CrnH3Cb/3eMWMabvHMbNZwGnuPtnM0oGW7j79fzxesc+BiIiIyK6kFl8RkZ37DGgIYGZ7m9m7ZjbRzMabWatoeT0ze93MJkf/uplZ06i19BHga2BPM1sf26mZnWpmz0a//9nMrjGzU4FOwAtRa2tFM5trZn8zs8/MbIKZ7Wdm75nZ92Z2cdz+rjWzr8zsWzO7LVoWi+FJM5tmZu9H+/zVcQq95rrAYgB3z48lvWaWZWZvRMf43Mz2iY8/Lpap0bGLOgeDzGxKdJ7u2tF5FREREdkVlPiKiOxA1Np5GPBWtOgJ4DJ37whcAzwSLX8QGOvu7YH9gGnR8pbAEHfv4O7zdnY8d38NmAD0dfd93X1T9NRP7t4VGA88C5wKHADcHsV5JNAC6ALsC3Q0s4OibVsA/3L3NsBqoNcOjhPzD2BWlMxfZGYVouW3AZPcfR/gRmDIzl5T/DkAcoCTgP2jc/X3aJ3tnVcRERGR/1lGogMQESmlKprZN0BTYCIw2syqAN2AV0OvXQAyo5+HAv0gtJACa8ysJjDP3T/fBfHEEu8pQBV3XwesM7PN0fjjI6N/k6L1qhAS3vnAj+7+TbR8YvSadsjdbzezF6J9ngn0AQ4GegC9onU+NLNaZlZ9J7uLPweHA8+4+8ZoHyt3cl5FRERE/mdKfEVEirbJ3feNkrqRwB8JLa2r3X3f37CfDYUexxdWqEDx5UY/C+J+jz3OAAy4090fj9/IzJoWWj8fKNytuUju/j3wqJk9CSw3s1rRcX61KpDHL3sRxb+2+HNg/PIcEG33W8+riIiISLGpq7OIyA64+xrgckL3203Aj2bWG0KxJjNrH636H2BAtDzdzKptZ5dLzay1maUBJ29nnXVA1d8Y6nvAuVHrKWbW0Mzq7mSb7R7HzI61/za/tiAkzKuBcUDfaJ2DgZ/dfS0wl9DFGzPbD2i2nWO+H8VZKVo3K9p+e+dVRERE5H+mxFdEZCfcfRIwGTiDkPSdZ2aTCeN4T4xWuwI4xMymELoTt9nO7q4ntCB/SFQ8qgjPAo9tp+jU9mJ8H3gR+CyK4TV2njzv6DhnEcb4fgMMJYwFzgf+DHQys2+Bu4D+0frDgaxo/QHA7O3E+S6h2/aEaN1YQaztnVcRERGR/5mmMxIREREREZGkphZfERERERERSWpKfEVERERERCSpKfEVERERERGRpKbEV0RERERERJKaEl8RERERERFJakp8RURERERE5P/brwMZAAAAgEH+1vf4yqI18QUAAGAttKR9lr/SBOIAAAAASUVORK5CYII=\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "# Plot the distribution of Gender by Recruitment Source\n", - "plt.figure(figsize=(12, 6))\n", - "sns.countplot(x='RecruitmentSource', hue='GenderID', data=df)\n", - "plt.xticks(rotation=45, ha='right')\n", - "plt.title('Distribution of Gender by Recruitment Source')\n", - "plt.xlabel('Recruitment Source')\n", - "plt.ylabel('Count')\n", - "plt.legend(title='Gender', bbox_to_anchor=(1.05, 1), loc='upper left')\n", - "plt.show()\n", - "\n", - "# Plot the distribution of Race by Recruitment Source\n", - "plt.figure(figsize=(12, 6))\n", - "sns.countplot(x='RecruitmentSource', hue='RaceDesc', data=df)\n", - "plt.xticks(rotation=45, ha='right')\n", - "plt.title('Distribution of Race by Recruitment Source')\n", - "plt.xlabel('Recruitment Source')\n", - "plt.ylabel('Count')\n", - "plt.legend(title='Race', bbox_to_anchor=(1.05, 1), loc='upper left')\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "f120c42d", - "metadata": {}, - "source": [ - "From the two graphs we can already see that certain Recruitment Sources have contributed to more diverse organization, notably `LinkedIn`, `Indeed`, and `Google Search`. And based on `GenderID`, we know that `LinkedIn` and `Indeed` is the highest sources of gaining new people." - ] - }, - { - "cell_type": "markdown", - "id": "4680ecdf", - "metadata": {}, - "source": [ - "Thank you for taking the time to view this notebook! Hope this inspires you." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "61d25079", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.12" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -}